diff --git a/.assets/libra.png b/.assets/diem.png similarity index 100% rename from .assets/libra.png rename to .assets/diem.png diff --git a/.circleci/config.yml b/.circleci/config.yml index 1287a46dfe..976ad9588d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -377,9 +377,9 @@ jobs: - run: command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p language-benchmarks - run: - command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p libra-fuzzer + command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p diem-fuzzer - run: - command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p libra-swarm + command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p diem-swarm - run: command: RUST_BACKTRACE=1 cargo xbuild -j 16 -p test-generation - run: diff --git a/.circleci/get_pr_info.sh b/.circleci/get_pr_info.sh index df20072279..56492507a8 100755 --- a/.circleci/get_pr_info.sh +++ b/.circleci/get_pr_info.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 #Check prerequists. diff --git a/.circleci/should_run_lbt.sh b/.circleci/should_run_lbt.sh index 5a905ce106..b981cb4223 100755 --- a/.circleci/should_run_lbt.sh +++ b/.circleci/should_run_lbt.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -eo pipefail diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e1638c2b48..73ee304490 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: "\U0001F41B Bug report" -about: Create a bug report to help improve Libra Core +about: Create a bug report to help improve Diem Core title: "[Bug]" labels: bug assignees: '' @@ -32,7 +32,7 @@ To report a security issue, please email security@libra.org. --> ## System information **Please complete the following information:** -- +- - - diff --git a/.github/ISSUE_TEMPLATE/documentation_bug_report.md b/.github/ISSUE_TEMPLATE/documentation_bug_report.md index 4f9d004fef..0505ec87bc 100644 --- a/.github/ISSUE_TEMPLATE/documentation_bug_report.md +++ b/.github/ISSUE_TEMPLATE/documentation_bug_report.md @@ -1,6 +1,6 @@ --- name: "\U0001F41B Documentation/developers.libra.org Bug report" -about: Create a bug report to help improve the Libra Developers' Website +about: Create a bug report to help improve the Diem Developers' Website title: "[Bug]" labels: bug assignees: '' @@ -9,7 +9,7 @@ assignees: '' # 🐛 Bug -If you're looking to report an issue with the Libra Core project go to https://github.com/libra/libra +If you're looking to report an issue with the Diem Core project go to https://github.com/libra/libra diff --git a/.github/actions/README.md b/.github/actions/README.md index cf728f6dfd..29a25da3d7 100644 --- a/.github/actions/README.md +++ b/.github/actions/README.md @@ -1,3 +1,3 @@ # github actions -These actions are custom for Libra Core workflows. +These actions are custom for Diem Core workflows. diff --git a/.github/actions/land-blocking/cti-codebuild.sh b/.github/actions/land-blocking/cti-codebuild.sh index 52a7bb9237..bebd52e9fb 100755 --- a/.github/actions/land-blocking/cti-codebuild.sh +++ b/.github/actions/land-blocking/cti-codebuild.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # Expects these environment variables diff --git a/.github/actions/land-blocking/find-lbt-images.sh b/.github/actions/land-blocking/find-lbt-images.sh index f45c309212..0bf2f77bf2 100755 --- a/.github/actions/land-blocking/find-lbt-images.sh +++ b/.github/actions/land-blocking/find-lbt-images.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # adapted from --build-all-cti option from libra/docker/build-aws.sh, which is how diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2295f67ae3..eecfa9642a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,3 @@ # Code of Conduct -The Libra Core project has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://developers.libra.org/docs/policies/code-of-conduct) so that you can understand what actions will and will not be tolerated. +The Diem Core project has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://developers.diem.com/docs/policies/code-of-conduct) so that you can understand what actions will and will not be tolerated. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 22948cee66..4363b976c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,20 +1,20 @@ --- id: contributing -title: Contributing to Libra +title: Contributing to Diem --- -Our goal is to make contributing to the Libra project easy and transparent. +Our goal is to make contributing to the Diem project easy and transparent. -> **Note**: As the Libra Core project is currently an early-stage prototype, it +> **Note**: As the Diem Core project is currently an early-stage prototype, it > is undergoing rapid development. While we welcome contributions, before > making substantial contributions be sure to discuss them in the Discourse > forum to ensure that they fit into the project roadmap. ## On Contributing -### Libra Core +### Diem Core -To contribute to the Libra Core implementation, first start with the proper +To contribute to the Diem Core implementation, first start with the proper development copy. To get the development installation with all the necessary dependencies for @@ -32,17 +32,17 @@ cargo xtest #### Code Style, Hints, and Testing Refer to our [Coding -Guidelines](https://developers.libra.org/docs/community/coding-guidelines) for +Guidelines](https://developers.diem.com/docs/community/coding-guidelines) for detailed guidance about how to contribute to the project. #### Documentation -Libra's developer website is also open source (the code can be found in this -[repository](https://github.com/libra/libra/developers.libra.org/website/)). It is built using +Diem's developer website is also open source (the code can be found in this +[repository](https://github.com/libra/libra/developers.diem.com/website/)). It is built using [Docusaurus](https://docusaurus.io/): If you know Markdown, you can already contribute! How to contribute can be found in the [website -repo](https://github.com/libra/developers.libra.org/website/CONTRIBUTING.md). +repo](https://github.com/diem/developers.diem.com/website/CONTRIBUTING.md). ## Developer Workflow @@ -167,8 +167,8 @@ able to be built and passes all checks performed by CI. ## Contributor License Agreement -For pull request to be accepted by any Libra projects, a CLA must be signed. -You will only need to do this once to work on any of Libra's open source +For pull request to be accepted by any Diem projects, a CLA must be signed. +You will only need to do this once to work on any of Diem's open source projects. Individuals contributing on their own behalf can sign the [Individual CLA](https://github.com/libra/libra/blob/master/documentation/contributing/individual-cla.pdf). If you are contributing on behalf of your employer, please ask them to sign the @@ -177,6 +177,6 @@ CLA](https://github.com/libra/libra/blob/master/documentation/contributing/corpo ## Issues -Libra uses [GitHub issues](https://github.com/libra/libra/issues) to track +Diem uses [GitHub issues](https://github.com/libra/libra/issues) to track bugs. Please include necessary information and instructions to reproduce your issue. diff --git a/Cargo.lock b/Cargo.lock index b7f8d1e81e..fac8089b75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,11 +17,11 @@ dependencies = [ "anyhow", "codespan-reporting", "datatest-stable", + "diem-temppath", + "diem-types", + "diem-workspace-hack", "heck", "libra-canonical-serialization", - "libra-temppath", - "libra-types", - "libra-workspace-hack", "log", "move-core-types", "move-prover", @@ -35,9 +35,9 @@ name = "accumulator" version = "0.1.0" dependencies = [ "anyhow", - "libra-crypto", - "libra-types", - "libra-workspace-hack", + "diem-crypto", + "diem-types", + "diem-workspace-hack", "mirai-annotations", "proptest", "rand 0.7.3", @@ -242,6 +242,18 @@ dependencies = [ "backup-service", "byteorder", "bytes", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-jellyfish-merkle", + "diem-logger", + "diem-proptest-helpers", + "diem-secure-push-metrics", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", "executor", "executor-test-helpers", "executor-types", @@ -249,18 +261,6 @@ dependencies = [ "hex", "itertools 0.9.0", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-jellyfish-merkle", - "libra-logger", - "libra-proptest-helpers", - "libra-secure-push-metrics", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", "num_cpus", "once_cell", "pin-project 1.0.2", @@ -283,17 +283,17 @@ version = "0.1.0" dependencies = [ "anyhow", "bytes", + "diem-config", + "diem-crypto", + "diem-logger", + "diem-metrics", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "diemdb", "futures 0.3.8", "hyper", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-metrics", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "libradb", "once_cell", "reqwest", "serde", @@ -439,7 +439,7 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" name = "borrow-graph" version = "0.0.1" dependencies = [ - "libra-workspace-hack", + "diem-workspace-hack", "mirai-annotations", ] @@ -447,8 +447,8 @@ dependencies = [ name = "bounded-executor" version = "0.1.0" dependencies = [ + "diem-workspace-hack", "futures 0.3.8", - "libra-workspace-hack", "tokio", ] @@ -496,11 +496,11 @@ dependencies = [ "codespan", "codespan-reporting", "datatest-stable", + "diem-temppath", + "diem-types", + "diem-workspace-hack", "ir-to-bytecode", "itertools 0.9.0", - "libra-temppath", - "libra-types", - "libra-workspace-hack", "log", "move-core-types", "num 0.3.1", @@ -516,9 +516,9 @@ dependencies = [ "anyhow", "codespan", "codespan-reporting", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", "move-core-types", "move-ir-types", "serde", @@ -531,9 +531,9 @@ version = "0.1.0" dependencies = [ "anyhow", "borrow-graph", + "diem-types", + "diem-workspace-hack", "invalid-mutations", - "libra-types", - "libra-workspace-hack", "mirai-annotations", "move-core-types", "petgraph", @@ -546,9 +546,9 @@ version = "0.1.0" dependencies = [ "bytecode-verifier", "compiled-stdlib", + "diem-types", + "diem-workspace-hack", "invalid-mutations", - "libra-types", - "libra-workspace-hack", "move-core-types", "petgraph", "proptest", @@ -640,11 +640,11 @@ name = "channel" version = "0.1.0" dependencies = [ "anyhow", + "diem-infallible", + "diem-metrics", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", - "libra-infallible", - "libra-metrics", - "libra-types", - "libra-workspace-hack", "tokio", ] @@ -712,20 +712,20 @@ dependencies = [ "compiled-stdlib", "compiler", "crash-handler", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-json-rpc-client", + "diem-logger", + "diem-metrics", + "diem-network-address", + "diem-temppath", + "diem-types", + "diem-wallet", + "diem-workspace-hack", "generate-key", "hex", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-json-rpc-client", - "libra-logger", - "libra-metrics", - "libra-network-address", - "libra-temppath", - "libra-types", - "libra-wallet", - "libra-workspace-hack", "num-traits", "once_cell", "proptest", @@ -758,6 +758,25 @@ dependencies = [ "chrono", "consensus-types", "debug-interface", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-global-constants", + "diem-infallible", + "diem-json-rpc-client", + "diem-logger", + "diem-management", + "diem-mempool", + "diem-network-address", + "diem-network-address-encryption", + "diem-node", + "diem-operational-tool", + "diem-retrier", + "diem-secure-storage", + "diem-swarm", + "diem-trace", + "diem-types", + "diem-workspace-hack", "flate2", "futures 0.3.8", "generate-key", @@ -766,25 +785,6 @@ dependencies = [ "k8s-openapi", "kube", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-global-constants", - "libra-infallible", - "libra-json-rpc-client", - "libra-logger", - "libra-management", - "libra-mempool", - "libra-network-address", - "libra-network-address-encryption", - "libra-node", - "libra-operational-tool", - "libra-retrier", - "libra-secure-storage", - "libra-swarm", - "libra-trace", - "libra-types", - "libra-workspace-hack", "network", "network-builder", "num_cpus", @@ -857,11 +857,11 @@ version = "0.1.0" dependencies = [ "anyhow", "bytecode-verifier", + "diem-crypto", + "diem-types", + "diem-workspace-hack", "include_dir", "libra-canonical-serialization", - "libra-crypto", - "libra-types", - "libra-workspace-hack", "once_cell", "sha2", "stdlib", @@ -876,10 +876,10 @@ dependencies = [ "bytecode-source-map", "bytecode-verifier", "compiled-stdlib", + "diem-types", + "diem-workspace-hack", "ir-to-bytecode", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", "move-ir-types", "serde_json", "structopt 0.3.21", @@ -896,6 +896,18 @@ dependencies = [ "bytes", "channel", "consensus-types", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-logger", + "diem-mempool", + "diem-metrics", + "diem-secure-storage", + "diem-temppath", + "diem-trace", + "diem-types", + "diem-vm", + "diem-workspace-hack", "execution-correctness", "executor", "executor-test-helpers", @@ -904,18 +916,6 @@ dependencies = [ "futures 0.3.8", "itertools 0.9.0", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-logger", - "libra-mempool", - "libra-metrics", - "libra-secure-storage", - "libra-temppath", - "libra-trace", - "libra-types", - "libra-vm", - "libra-workspace-hack", "mirai-annotations", "network", "num-derive", @@ -943,13 +943,13 @@ name = "consensus-types" version = "0.1.0" dependencies = [ "anyhow", + "diem-crypto", + "diem-crypto-derive", + "diem-infallible", + "diem-types", + "diem-workspace-hack", "executor-types", "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-infallible", - "libra-types", - "libra-workspace-hack", "mirai-annotations", "proptest", "serde", @@ -1004,8 +1004,8 @@ name = "crash-handler" version = "0.1.0" dependencies = [ "backtrace", - "libra-logger", - "libra-workspace-hack", + "diem-logger", + "diem-workspace-hack", "serde", "toml", ] @@ -1234,7 +1234,7 @@ dependencies = [ name = "datatest-stable" version = "0.1.0" dependencies = [ - "libra-workspace-hack", + "diem-workspace-hack", "regex", "structopt 0.3.21", "termcolor", @@ -1246,15 +1246,15 @@ name = "db-bootstrapper" version = "0.1.0" dependencies = [ "anyhow", + "diem-config", + "diem-crypto", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", "executor", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", "storage-interface", "structopt 0.3.21", ] @@ -1265,9 +1265,9 @@ version = "0.1.0" dependencies = [ "anyhow", "bytes", - "libra-logger", - "libra-metrics", - "libra-workspace-hack", + "diem-logger", + "diem-metrics", + "diem-workspace-hack", "reqwest", "tokio", "warp", @@ -1294,2475 +1294,2475 @@ name = "diagen" version = "0.1.0" dependencies = [ "anyhow", - "libra-workspace-hack", + "diem-workspace-hack", "regex", ] [[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - -[[package]] -name = "diffus" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3b0f382a0651ab91518390f16df755c6e2ca11f52a8e06b301fd3f7dfb576c" +name = "diem-bitvec" +version = "0.1.0" dependencies = [ - "itertools 0.8.2", + "diem-proptest-helpers", + "diem-workspace-hack", + "libra-canonical-serialization", + "proptest", + "proptest-derive", + "serde", + "serde_bytes", ] [[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +name = "diem-config" +version = "0.1.0" dependencies = [ - "generic-array 0.12.3", + "diem-crypto", + "diem-crypto-derive", + "diem-global-constants", + "diem-logger", + "diem-network-address", + "diem-network-address-encryption", + "diem-secure-storage", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "get_if_addrs", + "libra-canonical-serialization", + "log", + "mirai-annotations", + "rand 0.7.3", + "serde", + "serde_yaml", + "thiserror", ] [[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +name = "diem-crypto" +version = "0.1.0" dependencies = [ - "generic-array 0.14.4", + "aes-gcm", + "anyhow", + "bitvec", + "byteorder", + "bytes", + "criterion", + "curve25519-dalek 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 3.0.0 (git+https://github.com/novifinancial/curve25519-dalek.git?branch=fiat3)", + "diem-crypto-derive", + "diem-nibble", + "diem-workspace-hack", + "digest 0.9.0", + "ed25519-dalek 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.1 (git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5)", + "hex", + "hkdf", + "libra-canonical-serialization", + "mirai-annotations", + "once_cell", + "proptest", + "proptest-derive", + "rand 0.7.3", + "rand_core 0.5.1", + "ripemd160", + "serde", + "serde-name", + "serde_bytes", + "serde_json", + "sha2", + "sha3", + "short-hex-str", + "static_assertions", + "thiserror", + "tiny-keccak", + "trybuild", + "x25519-dalek 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "x25519-dalek 1.1.0 (git+https://github.com/novifinancial/x25519-dalek.git?branch=fiat4)", ] [[package]] -name = "dirs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +name = "diem-crypto-derive" +version = "0.1.0" dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", + "anyhow", + "diem-workspace-hack", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.53", ] [[package]] -name = "dirs" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +name = "diem-dev" +version = "0.1.0" dependencies = [ - "cfg-if 0.1.10", - "dirs-sys", + "bindgen", + "diem-crypto", + "diem-types", + "diem-workspace-hack", + "libc", + "libra-canonical-serialization", + "move-core-types", + "rand 0.7.3", + "static_assertions", + "transaction-builder", ] [[package]] -name = "dirs" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" +name = "diem-documentation-tool" +version = "0.1.0" dependencies = [ - "dirs-sys", + "anyhow", + "diem-workspace-hack", + "once_cell", + "regex", + "serde", + "serde-generate", + "serde-reflection", + "serde_yaml", + "structopt 0.3.21", + "tempfile", ] [[package]] -name = "dirs-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +name = "diem-events-fetcher" +version = "0.1.0" dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", + "anyhow", + "diem-json-rpc-client", + "diem-types", + "diem-workspace-hack", + "futures 0.3.8", + "hex", + "libra-canonical-serialization", + "reqwest", + "structopt 0.3.21", + "tokio", ] [[package]] -name = "disassembler" +name = "diem-faucet" version = "0.1.0" dependencies = [ "anyhow", - "bytecode-source-map", - "bytecode-verifier", - "colored", - "libra-types", - "libra-workspace-hack", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-json-rpc-client", + "diem-logger", + "diem-types", + "diem-workspace-hack", + "generate-key", + "hex", + "libra-canonical-serialization", "move-core-types", - "move-coverage", - "move-ir-types", + "reqwest", + "serde", + "serde_derive", + "serde_json", "structopt 0.3.21", - "vm", + "tempfile", + "tokio", + "transaction-builder-generated", + "warp", ] [[package]] -name = "discard" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" +name = "diem-fuzz" +version = "0.1.0" +dependencies = [ + "diem-fuzzer", + "diem-workspace-hack", + "libfuzzer-sys", + "once_cell", +] [[package]] -name = "docgen" +name = "diem-fuzzer" version = "0.1.0" dependencies = [ + "accumulator", "anyhow", - "bytecode", - "codespan", - "codespan-reporting", + "byteorder", + "consensus", + "consensus-types", "datatest-stable", - "itertools 0.9.0", - "libra-temppath", - "libra-workspace-hack", - "log", - "move-prover", - "num 0.3.1", + "diem-crypto", + "diem-jellyfish-merkle", + "diem-json-rpc", + "diem-mempool", + "diem-proptest-helpers", + "diem-secure-json-rpc", + "diem-types", + "diem-vault-client", + "diem-workspace-hack", + "diemdb", + "executor", + "executor-types", + "hex", + "language-e2e-tests", + "libra-canonical-serialization", + "move-core-types", + "move-vm-types", + "network", "once_cell", - "regex", - "serde", - "spec-lang", - "test-utils", + "proptest", + "proptest-derive", + "rand 0.7.3", + "rusty-fork", + "safety-rules", + "serde_json", + "sha-1 0.9.2", + "state-synchronizer", + "stats_alloc", + "storage-interface", + "structopt 0.3.21", + "ureq", + "vm", ] [[package]] -name = "dtoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" +name = "diem-genesis-tool" +version = "0.1.0" +dependencies = [ + "anyhow", + "consensus-types", + "diem-config", + "diem-crypto", + "diem-global-constants", + "diem-management", + "diem-network-address", + "diem-network-address-encryption", + "diem-secure-storage", + "diem-secure-time", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", + "executor", + "generate-key", + "libra-canonical-serialization", + "rand 0.7.3", + "serde", + "storage-interface", + "structopt 0.3.21", + "thiserror", + "toml", + "transaction-builder", + "vm-genesis", +] [[package]] -name = "ed25519" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6ef" +name = "diem-github-client" +version = "0.1.0" dependencies = [ + "base64 0.13.0", + "diem-workspace-hack", "serde", - "signature", + "serde_json", + "thiserror", + "ureq", ] [[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +name = "diem-global-constants" +version = "0.1.0" + +[[package]] +name = "diem-infallible" +version = "0.1.0" dependencies = [ - "curve25519-dalek 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519", - "rand 0.7.3", - "serde", - "sha2", - "zeroize", + "diem-workspace-hack", ] [[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5#88603ebf0196015e9b4106844f9f47ed6c01e951" +name = "diem-jellyfish-merkle" +version = "0.1.0" dependencies = [ - "curve25519-dalek 3.0.0 (git+https://github.com/novifinancial/curve25519-dalek.git?branch=fiat3)", - "ed25519", + "anyhow", + "byteorder", + "diem-crypto", + "diem-crypto-derive", + "diem-infallible", + "diem-nibble", + "diem-types", + "diem-workspace-hack", + "libra-canonical-serialization", + "mirai-annotations", + "num-derive", + "num-traits", + "proptest", + "proptest-derive", "rand 0.7.3", "serde", - "serde_bytes", - "sha2", - "zeroize", + "thiserror", ] [[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +name = "diem-json-rpc" +version = "0.1.0" +dependencies = [ + "anyhow", + "compiled-stdlib", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-json-rpc-client", + "diem-json-rpc-types", + "diem-logger", + "diem-mempool", + "diem-metrics", + "diem-node", + "diem-proptest-helpers", + "diem-temppath", + "diem-trace", + "diem-types", + "diem-workspace-hack", + "diemdb", + "executor", + "executor-types", + "fail", + "futures 0.3.8", + "generate-key", + "hex", + "hyper", + "libra-canonical-serialization", + "move-core-types", + "move-vm-types", + "network", + "once_cell", + "proptest", + "rand 0.7.3", + "reqwest", + "scratchpad", + "serde", + "serde_json", + "storage-interface", + "tokio", + "transaction-builder-generated", + "vm-genesis", + "vm-validator", + "warp", +] [[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +name = "diem-json-rpc-client" +version = "0.1.0" +dependencies = [ + "anyhow", + "diem-config", + "diem-crypto", + "diem-json-rpc-types", + "diem-types", + "diem-workspace-hack", + "hex", + "libra-canonical-serialization", + "reqwest", + "serde", + "serde_json", + "tokio", + "warp", +] [[package]] -name = "encoding_rs" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" +name = "diem-json-rpc-types" +version = "0.1.0" dependencies = [ - "cfg-if 1.0.0", + "anyhow", + "compiled-stdlib", + "diem-crypto", + "diem-types", + "diem-workspace-hack", + "hex", + "libra-canonical-serialization", + "move-core-types", + "move-explain", + "prost", + "prost-build", + "serde", + "serde_json", ] [[package]] -name = "enum_dispatch" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b748aeb1b8c58d317739aa3171a2752ca3e76b8077c13dc748f327aebc0a72" +name = "diem-key-manager" +version = "0.1.0" dependencies = [ + "anyhow", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-global-constants", + "diem-json-rpc", + "diem-logger", + "diem-network-address", + "diem-secure-json-rpc", + "diem-secure-push-metrics", + "diem-secure-storage", + "diem-secure-time", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", + "executor", + "executor-test-helpers", + "executor-types", + "futures 0.3.8", "once_cell", + "rand 0.7.3", + "serde", + "storage-interface", + "thiserror", + "tokio", + "transaction-builder-generated", + "vm-validator", +] + +[[package]] +name = "diem-log-derive" +version = "0.1.0" +dependencies = [ + "diem-workspace-hack", "proc-macro2 1.0.24", "quote 1.0.7", "syn 1.0.53", ] [[package]] -name = "env_logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +name = "diem-logger" +version = "0.1.0" dependencies = [ - "atty", - "humantime 1.3.0", - "log", - "regex", - "termcolor", + "chrono", + "diem-infallible", + "diem-log-derive", + "diem-workspace-hack", + "erased-serde", + "hostname", + "once_cell", + "prometheus", + "serde", + "serde_json", ] [[package]] -name = "env_logger" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26ecb66b4bdca6c1409b40fb255eefc2bd4f6d135dab3c3124f80ffa2a9661e" +name = "diem-management" +version = "0.1.0" dependencies = [ - "atty", - "humantime 2.0.1", - "log", - "regex", - "termcolor", + "anyhow", + "diem-config", + "diem-crypto", + "diem-global-constants", + "diem-network-address", + "diem-network-address-encryption", + "diem-secure-storage", + "diem-secure-time", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "hex", + "libra-canonical-serialization", + "serde", + "serde_yaml", + "structopt 0.3.21", + "thiserror", + "toml", + "transaction-builder", ] [[package]] -name = "erased-serde" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" +name = "diem-mempool" +version = "0.1.0" dependencies = [ + "anyhow", + "bounded-executor", + "channel", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-logger", + "diem-metrics", + "diem-network-address", + "diem-proptest-helpers", + "diem-trace", + "diem-types", + "diem-workspace-hack", + "fail", + "futures 0.3.8", + "itertools 0.9.0", + "libra-canonical-serialization", + "mirai-annotations", + "netcore", + "network", + "once_cell", + "proptest", + "rand 0.7.3", + "rayon", "serde", + "serde_json", + "storage-interface", + "storage-service", + "subscription-service", + "tokio", + "vm-validator", ] [[package]] -name = "errmapgen" +name = "diem-metrics" version = "0.1.0" dependencies = [ "anyhow", - "codespan-reporting", - "datatest-stable", + "assert_approx_eq", + "diem-logger", + "diem-metrics-core", + "diem-workspace-hack", + "futures 0.3.8", + "hyper", + "once_cell", + "prometheus", + "rusty-fork", + "serde_json", + "tokio", +] + +[[package]] +name = "diem-metrics-core" +version = "0.1.0" +dependencies = [ + "diem-workspace-hack", + "prometheus", +] + +[[package]] +name = "diem-network-address" +version = "0.1.0" +dependencies = [ + "aes-gcm", + "anyhow", + "diem-crypto", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", - "log", "move-core-types", - "move-prover", + "proptest", + "proptest-derive", "serde", - "spec-lang", - "test-utils", + "serde_bytes", + "static_assertions", + "thiserror", ] [[package]] -name = "execution-correctness" +name = "diem-network-address-encryption" version = "0.1.0" dependencies = [ - "anyhow", - "consensus-types", - "executor", - "executor-test-helpers", - "executor-types", + "base64 0.13.0", + "diem-global-constants", + "diem-infallible", + "diem-logger", + "diem-network-address", + "diem-secure-storage", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-global-constants", - "libra-infallible", - "libra-logger", - "libra-secure-net", - "libra-secure-storage", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", + "move-core-types", "rand 0.7.3", "serde", - "storage-client", "thiserror", - "transaction-builder", ] [[package]] -name = "executor" +name = "diem-nibble" version = "0.1.0" dependencies = [ - "anyhow", - "compiled-stdlib", - "compiler", - "consensus-types", - "executor-test-helpers", - "executor-types", - "fail", - "itertools 0.9.0", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-infallible", - "libra-logger", - "libra-metrics", - "libra-secure-net", - "libra-state-view", - "libra-temppath", - "libra-trace", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "move-core-types", - "once_cell", + "diem-workspace-hack", "proptest", - "rand 0.7.3", - "scratchpad", "serde", - "serde_json", - "storage-interface", - "transaction-builder", - "vm-genesis", ] [[package]] -name = "executor-benchmark" +name = "diem-node" version = "0.1.0" dependencies = [ + "backup-service", + "consensus", + "crash-handler", + "debug-interface", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-json-rpc", + "diem-logger", + "diem-mempool", + "diem-metrics", + "diem-secure-storage", + "diem-temppath", + "diem-trace", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", "executor", "executor-types", - "itertools 0.9.0", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-infallible", - "libra-logger", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "rand 0.7.3", - "rayon", + "fail", + "futures 0.3.8", + "jemallocator", + "network-builder", + "state-synchronizer", "storage-client", "storage-interface", "storage-service", "structopt 0.3.21", - "transaction-builder", + "subscription-service", + "tokio", ] [[package]] -name = "executor-test-helpers" +name = "diem-operational-tool" version = "0.1.0" dependencies = [ "anyhow", - "executor", - "executor-types", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "rand 0.7.3", - "storage-interface", - "storage-service", - "tempfile", + "diem-config", + "diem-crypto", + "diem-global-constants", + "diem-management", + "diem-network-address", + "diem-network-address-encryption", + "diem-secure-json-rpc", + "diem-secure-storage", + "diem-secure-time", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "hex", + "libra-canonical-serialization", + "serde", + "serde_json", + "structopt 0.3.21", + "thiserror", + "toml", "transaction-builder", - "vm-genesis", ] [[package]] -name = "executor-types" +name = "diem-proptest-helpers" version = "0.1.0" dependencies = [ - "anyhow", - "libra-canonical-serialization", - "libra-crypto", - "libra-secure-net", - "libra-types", - "libra-workspace-hack", - "scratchpad", - "serde", - "storage-interface", - "thiserror", + "crossbeam", + "diem-workspace-hack", + "proptest", + "proptest-derive", ] [[package]] -name = "fail" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be3c61c59fdc91f5dbc3ea31ee8623122ce80057058be560654c5d410d181a6" +name = "diem-retrier" +version = "0.1.0" dependencies = [ - "lazy_static", - "log", - "rand 0.7.3", + "diem-logger", + "diem-workspace-hack", + "tokio", ] [[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fiat-crypto" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6ab97095615857b6ad00a8330fff0e443f1def9fd357cef82d0ca0677b616b" - -[[package]] -name = "fixedbitset" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +name = "diem-secure-json-rpc" +version = "0.1.0" +dependencies = [ + "anyhow", + "diem-config", + "diem-crypto", + "diem-json-rpc", + "diem-proptest-helpers", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "diemdb", + "futures 0.3.8", + "hex", + "libra-canonical-serialization", + "proptest", + "serde", + "serde_json", + "storage-interface", + "thiserror", + "tokio", + "ureq", + "vm-validator", +] [[package]] -name = "flate2" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129" +name = "diem-secure-net" +version = "0.1.0" dependencies = [ - "cfg-if 1.0.0", - "crc32fast", - "libc", - "miniz_oxide", + "diem-config", + "diem-logger", + "diem-secure-push-metrics", + "diem-workspace-hack", + "once_cell", + "serde", + "thiserror", ] [[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +name = "diem-secure-push-metrics" +version = "0.1.0" +dependencies = [ + "diem-logger", + "diem-metrics-core", + "diem-workspace-hack", + "ureq", +] [[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +name = "diem-secure-storage" +version = "0.1.0" dependencies = [ - "foreign-types-shared", + "base64 0.13.0", + "chrono", + "diem-crypto", + "diem-crypto-derive", + "diem-github-client", + "diem-infallible", + "diem-logger", + "diem-secure-time", + "diem-temppath", + "diem-vault-client", + "diem-workspace-hack", + "enum_dispatch", + "libra-canonical-serialization", + "rand 0.7.3", + "serde", + "serde_json", + "thiserror", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +name = "diem-secure-time" +version = "0.1.0" +dependencies = [ + "diem-infallible", + "diem-workspace-hack", +] [[package]] -name = "form_urlencoded" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +name = "diem-smoke-test-attribute" +version = "0.1.0" dependencies = [ - "matches", - "percent-encoding", + "diem-workspace-hack", + "proc-macro2 1.0.24", + "quote 1.0.7", ] [[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +name = "diem-state-view" +version = "0.1.0" dependencies = [ - "libc", - "winapi 0.3.9", + "anyhow", + "diem-crypto", + "diem-types", + "diem-workspace-hack", ] [[package]] -name = "fs_extra" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" +name = "diem-storage-inspector" +version = "0.1.0" +dependencies = [ + "anyhow", + "diem-config", + "diem-crypto", + "diem-logger", + "diem-types", + "diem-workspace-hack", + "diemdb", + "storage-interface", + "structopt 0.3.21", + "tempfile", + "transaction-builder", +] [[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +name = "diem-swarm" +version = "0.1.0" +dependencies = [ + "anyhow", + "ctrlc", + "debug-interface", + "diem-config", + "diem-genesis-tool", + "diem-logger", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "reqwest", + "structopt 0.3.21", + "thiserror", +] [[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +name = "diem-temppath" +version = "0.1.0" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "diem-workspace-hack", + "hex", + "rand 0.7.3", ] [[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +name = "diem-trace" +version = "0.1.0" +dependencies = [ + "anyhow", + "chrono", + "diem-logger", + "diem-metrics", + "diem-workspace-hack", + "once_cell", + "reqwest", + "serde", + "serde_json", + "structopt 0.3.21", + "tokio", +] [[package]] -name = "functional-tests" +name = "diem-transaction-replay" version = "0.1.0" dependencies = [ - "aho-corasick", "anyhow", - "bytecode-verifier", "compiled-stdlib", - "datatest-stable", + "diem-state-view", + "diem-types", + "diem-validator-interface", + "diem-vm", + "diem-workspace-hack", + "diemdb", "difference", + "libra-canonical-serialization", + "move-core-types", + "move-lang", + "move-vm-runtime", + "move-vm-test-utils", + "move-vm-types", + "resource-viewer", + "stdlib", + "structopt 0.3.21", + "vm", + "vm-genesis", +] + +[[package]] +name = "diem-types" +version = "0.1.0" +dependencies = [ + "anyhow", + "bytes", + "chrono", + "diem-crypto", + "diem-crypto-derive", + "diem-infallible", + "diem-network-address", + "diem-proptest-helpers", + "diem-workspace-hack", "hex", "itertools 0.9.0", - "language-e2e-tests", - "libra-config", - "libra-crypto", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", + "libra-canonical-serialization", "mirai-annotations", "move-core-types", "once_cell", + "proptest", + "proptest-derive", + "rand 0.7.3", "regex", - "term_size", - "termcolor", + "serde", + "serde_bytes", + "serde_json", "thiserror", - "vm", - "vm-genesis", + "tiny-keccak", ] [[package]] -name = "funty" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ba62103ce691c2fd80fbae2213dfdda9ce60804973ac6b6e97de818ea7f52c8" - -[[package]] -name = "futures" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" - -[[package]] -name = "futures" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" +name = "diem-validator-interface" +version = "0.1.0" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "anyhow", + "diem-config", + "diem-json-rpc-client", + "diem-state-view", + "diem-types", + "diem-workspace-hack", + "diemdb", + "libra-canonical-serialization", + "reqwest", + "scratchpad", + "storage-interface", ] [[package]] -name = "futures-channel" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" +name = "diem-vault-client" +version = "0.1.0" dependencies = [ - "futures-core", - "futures-sink", + "base64 0.13.0", + "chrono", + "diem-crypto", + "diem-proptest-helpers", + "diem-types", + "diem-workspace-hack", + "native-tls", + "once_cell", + "proptest", + "serde", + "serde_json", + "thiserror", + "ureq", ] [[package]] -name = "futures-core" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" - -[[package]] -name = "futures-executor" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +name = "diem-vm" +version = "0.1.0" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "anyhow", + "diem-crypto", + "diem-logger", + "diem-metrics", + "diem-state-view", + "diem-trace", + "diem-types", + "diem-workspace-hack", + "fail", + "libra-canonical-serialization", + "mirai-annotations", + "move-core-types", + "move-vm-runtime", + "move-vm-types", + "once_cell", + "proptest", + "rayon", + "serde", + "serde_json", + "vm", ] [[package]] -name = "futures-io" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" - -[[package]] -name = "futures-macro" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" +name = "diem-wallet" +version = "0.1.0" dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.53", -] - -[[package]] -name = "futures-sink" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" - -[[package]] -name = "futures-task" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" -dependencies = [ - "once_cell", + "anyhow", + "byteorder", + "diem-crypto", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "ed25519-dalek 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.1 (git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5)", + "hex", + "hmac 0.10.1", + "mirai-annotations", + "pbkdf2", + "rand 0.7.3", + "serde", + "sha2", + "thiserror", ] [[package]] -name = "futures-util" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" +name = "diem-workspace-hack" +version = "0.1.0" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", + "bytes", + "cc", + "log", "memchr", - "pin-project 1.0.2", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", + "num-traits", + "petgraph", + "serde", + "sha-1 0.9.2", + "subtle", + "syn 1.0.53", ] [[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" - -[[package]] -name = "generate-format" +name = "diem-writeset-generator" version = "0.1.0" dependencies = [ - "consensus", - "consensus-types", + "anyhow", + "diem-types", + "diem-workspace-hack", + "handlebars", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-crypto-derive", - "libra-network-address", - "libra-types", - "libra-workspace-hack", - "move-core-types", - "network", - "rand 0.7.3", + "move-lang", "serde", - "serde-reflection", - "serde_yaml", + "serde_json", + "stdlib", "structopt 0.3.21", + "tempfile", ] [[package]] -name = "generate-key" +name = "diemdb" version = "0.1.0" dependencies = [ + "accumulator", + "anyhow", + "arc-swap", + "byteorder", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-jellyfish-merkle", + "diem-logger", + "diem-metrics", + "diem-proptest-helpers", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "itertools 0.9.0", "libra-canonical-serialization", - "libra-crypto", - "libra-temppath", - "libra-workspace-hack", + "num-derive", + "num-traits", + "num-variants", + "once_cell", + "proptest", + "proptest-derive", "rand 0.7.3", + "schemadb", + "serde", + "storage-interface", + "thiserror", ] [[package]] -name = "generic-array" -version = "0.12.3" +name = "difference" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] -name = "generic-array" -version = "0.14.4" +name = "diffus" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "8d3b0f382a0651ab91518390f16df755c6e2ca11f52a8e06b301fd3f7dfb576c" dependencies = [ - "typenum", - "version_check", + "itertools 0.8.2", ] [[package]] -name = "genesis-viewer" -version = "0.1.0" +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "compiled-stdlib", - "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", - "resource-viewer", - "structopt 0.3.21", - "vm", - "vm-genesis", + "generic-array 0.12.3", ] [[package]] -name = "get_if_addrs" -version = "0.5.3" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "c_linked_list", - "get_if_addrs-sys", - "libc", - "winapi 0.2.8", + "generic-array 0.14.4", ] [[package]] -name = "get_if_addrs-sys" -version = "0.1.1" +name = "dirs" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ - "gcc", "libc", + "redox_users", + "winapi 0.3.9", ] [[package]] -name = "getrandom" -version = "0.1.15" +name = "dirs" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" dependencies = [ "cfg-if 0.1.10", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "dirs-sys", ] [[package]] -name = "getrandom" -version = "0.2.0" +name = "dirs" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" dependencies = [ - "cfg-if 0.1.10", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "dirs-sys", ] [[package]] -name = "ghash" -version = "0.3.0" +name = "dirs-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" +checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" dependencies = [ - "polyval", + "libc", + "redox_users", + "winapi 0.3.9", ] [[package]] -name = "gimli" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +name = "disassembler" +version = "0.1.0" +dependencies = [ + "anyhow", + "bytecode-source-map", + "bytecode-verifier", + "colored", + "diem-types", + "diem-workspace-hack", + "move-core-types", + "move-coverage", + "move-ir-types", + "structopt 0.3.21", + "vm", +] [[package]] -name = "glob" -version = "0.3.0" +name = "discard" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] -name = "globset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a" +name = "docgen" +version = "0.1.0" dependencies = [ - "aho-corasick", - "bstr", - "fnv", + "anyhow", + "bytecode", + "codespan", + "codespan-reporting", + "datatest-stable", + "diem-temppath", + "diem-workspace-hack", + "itertools 0.9.0", "log", + "move-prover", + "num 0.3.1", + "once_cell", "regex", + "serde", + "spec-lang", + "test-utils", ] [[package]] -name = "goldenfile" -version = "1.1.0" +name = "dtoa" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f46e6a4d70c06f0b9a70d36dd8eef4fdeaa1ab657e4f1eaff290f69e48145f2" -dependencies = [ - "difference", - "tempfile", -] +checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" [[package]] -name = "guppy" -version = "0.6.1" +name = "ed25519" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0658e39db7498a195f3f68c3ecf0ed2bce7f35c580c2ee9dd2c2dc4bbe1e7c4" +checksum = "37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6ef" dependencies = [ - "cargo_metadata", - "fixedbitset", - "guppy-summaries", - "indexmap", - "itertools 0.9.0", - "nested", - "once_cell", - "pathdiff", - "petgraph", - "rayon", - "semver 0.11.0", "serde", - "serde_json", - "supercow", - "target-spec", + "signature", ] [[package]] -name = "guppy-summaries" -version = "0.3.0" +name = "ed25519-dalek" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4db8242f1f19bfdbb0226cc425bca27cc5f1e029cde7d3145924fe71184dff9f" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "diffus", - "semver 0.11.0", - "serde", - "toml", + "curve25519-dalek 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519", + "rand 0.7.3", + "serde", + "sha2", + "zeroize", ] [[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +name = "ed25519-dalek" +version = "1.0.1" +source = "git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5#88603ebf0196015e9b4106844f9f47ed6c01e951" dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", - "tracing-futures", + "curve25519-dalek 3.0.0 (git+https://github.com/novifinancial/curve25519-dalek.git?branch=fiat3)", + "ed25519", + "rand 0.7.3", + "serde", + "serde_bytes", + "sha2", + "zeroize", ] [[package]] -name = "half" -version = "1.6.0" +name = "either" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] -name = "handlebars" -version = "3.5.1" +name = "encode_unicode" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2764f9796c0ddca4b82c07f25dd2cb3db30b9a8f47940e78e1c883d9e95c3db9" -dependencies = [ - "log", - "pest", - "pest_derive", - "quick-error 2.0.0", - "serde", - "serde_json", -] +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] -name = "hashbrown" -version = "0.9.1" +name = "encoding_rs" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] -name = "headers" -version = "0.3.2" +name = "enum_dispatch" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed18eb2459bf1a09ad2d6b1547840c3e5e62882fa09b9a6a20b1de8e3228848f" +checksum = "15b748aeb1b8c58d317739aa3171a2752ca3e76b8077c13dc748f327aebc0a72" dependencies = [ - "base64 0.12.3", - "bitflags", - "bytes", - "headers-core", - "http", - "mime", - "sha-1 0.8.2", - "time 0.1.44", + "once_cell", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.53", ] [[package]] -name = "headers-core" -version = "0.2.0" +name = "env_logger" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ - "http", + "atty", + "humantime 1.3.0", + "log", + "regex", + "termcolor", ] [[package]] -name = "heck" -version = "0.3.1" +name = "env_logger" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +checksum = "f26ecb66b4bdca6c1409b40fb255eefc2bd4f6d135dab3c3124f80ffa2a9661e" dependencies = [ - "unicode-segmentation", + "atty", + "humantime 2.0.1", + "log", + "regex", + "termcolor", ] [[package]] -name = "hermit-abi" -version = "0.1.17" +name = "erased-serde" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" dependencies = [ - "libc", + "serde", ] [[package]] -name = "hex" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" +name = "errmapgen" +version = "0.1.0" +dependencies = [ + "anyhow", + "codespan-reporting", + "datatest-stable", + "diem-types", + "diem-workspace-hack", + "libra-canonical-serialization", + "log", + "move-core-types", + "move-prover", + "serde", + "spec-lang", + "test-utils", +] [[package]] -name = "hkdf" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +name = "execution-correctness" +version = "0.1.0" dependencies = [ - "digest 0.9.0", - "hmac 0.10.1", + "anyhow", + "consensus-types", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-global-constants", + "diem-infallible", + "diem-logger", + "diem-secure-net", + "diem-secure-storage", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "executor", + "executor-test-helpers", + "executor-types", + "libra-canonical-serialization", + "rand 0.7.3", + "serde", + "storage-client", + "thiserror", + "transaction-builder", ] [[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +name = "executor" +version = "0.1.0" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", + "anyhow", + "compiled-stdlib", + "compiler", + "consensus-types", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-infallible", + "diem-logger", + "diem-metrics", + "diem-secure-net", + "diem-state-view", + "diem-temppath", + "diem-trace", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", + "executor-test-helpers", + "executor-types", + "fail", + "itertools 0.9.0", + "libra-canonical-serialization", + "move-core-types", + "once_cell", + "proptest", + "rand 0.7.3", + "scratchpad", + "serde", + "serde_json", + "storage-interface", + "transaction-builder", + "vm-genesis", ] [[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +name = "executor-benchmark" +version = "0.1.0" dependencies = [ - "crypto-mac 0.10.0", - "digest 0.9.0", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-infallible", + "diem-logger", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", + "executor", + "executor-types", + "itertools 0.9.0", + "rand 0.7.3", + "rayon", + "storage-client", + "storage-interface", + "storage-service", + "structopt 0.3.21", + "transaction-builder", ] [[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +name = "executor-test-helpers" +version = "0.1.0" dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", + "anyhow", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", + "executor", + "executor-types", + "rand 0.7.3", + "storage-interface", + "storage-service", + "tempfile", + "transaction-builder", + "vm-genesis", ] [[package]] -name = "http" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +name = "executor-types" +version = "0.1.0" dependencies = [ - "bytes", - "fnv", - "itoa", + "anyhow", + "diem-crypto", + "diem-secure-net", + "diem-types", + "diem-workspace-hack", + "libra-canonical-serialization", + "scratchpad", + "serde", + "storage-interface", + "thiserror", ] [[package]] -name = "http-body" -version = "0.3.1" +name = "fail" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "3be3c61c59fdc91f5dbc3ea31ee8623122ce80057058be560654c5d410d181a6" dependencies = [ - "bytes", - "http", + "lazy_static", + "log", + "rand 0.7.3", ] [[package]] -name = "httparse" -version = "1.3.4" +name = "fake-simd" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] -name = "httpdate" -version = "0.3.2" +name = "fiat-crypto" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "0f6ab97095615857b6ad00a8330fff0e443f1def9fd357cef82d0ca0677b616b" [[package]] -name = "humantime" -version = "1.3.0" +name = "fixedbitset" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error 1.2.3", -] - -[[package]] -name = "humantime" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a" - -[[package]] -name = "hyper" -version = "0.13.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project 1.0.2", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] -name = "hyper-tls" -version = "0.4.3" +name = "flate2" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" +checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129" dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-tls", + "cfg-if 1.0.0", + "crc32fast", + "libc", + "miniz_oxide", ] [[package]] -name = "idna" -version = "0.2.0" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "include_dir" -version = "0.6.0" +name = "foreign-types" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d58bdeb22b1c4691106c084b1063781904c35d0f22eda2a283598968eac61a" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "glob", - "include_dir_impl", - "proc-macro-hack", + "foreign-types-shared", ] [[package]] -name = "include_dir_impl" -version = "0.6.0" +name = "foreign-types-shared" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327869970574819d24d1dca25c891856144d29159ab797fa9dc725c5c3f57215" -dependencies = [ - "anyhow", - "proc-macro-hack", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.53", -] +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "indexmap" -version = "1.6.0" +name = "form_urlencoded" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" dependencies = [ - "autocfg 1.0.1", - "hashbrown", + "matches", + "percent-encoding", ] [[package]] -name = "indoc" -version = "1.0.3" +name = "fs2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a75aeaaef0ce18b58056d306c27b07436fbb34b8816c53094b76dd81803136" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ - "unindent", + "libc", + "winapi 0.3.9", ] [[package]] -name = "input_buffer" -version = "0.3.1" +name = "fs_extra" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" -dependencies = [ - "bytes", -] +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" [[package]] -name = "instant" -version = "0.1.8" +name = "fuchsia-cprng" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "invalid-mutations" -version = "0.1.0" -dependencies = [ - "libra-proptest-helpers", - "libra-types", - "libra-workspace-hack", - "proptest", - "vm", -] +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] -name = "iovec" -version = "0.1.4" +name = "fuchsia-zircon" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "libc", + "bitflags", + "fuchsia-zircon-sys", ] [[package]] -name = "ipnet" -version = "2.3.0" +name = "fuchsia-zircon-sys" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] -name = "ir-testsuite" +name = "functional-tests" version = "0.1.0" dependencies = [ + "aho-corasick", "anyhow", "bytecode-verifier", "compiled-stdlib", "datatest-stable", - "functional-tests", - "ir-to-bytecode", - "libra-types", - "libra-workspace-hack", - "move-ir-types", - "vm", -] - -[[package]] -name = "ir-to-bytecode" -version = "0.1.0" -dependencies = [ - "anyhow", - "bytecode-source-map", - "codespan", - "codespan-reporting", - "ir-to-bytecode-syntax", - "libra-types", - "libra-workspace-hack", - "log", + "diem-config", + "diem-crypto", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "difference", + "hex", + "itertools 0.9.0", + "language-e2e-tests", + "mirai-annotations", "move-core-types", - "move-ir-types", + "once_cell", + "regex", + "term_size", + "termcolor", "thiserror", "vm", + "vm-genesis", ] [[package]] -name = "ir-to-bytecode-syntax" -version = "0.1.0" -dependencies = [ - "anyhow", - "codespan", - "hex", - "libra-types", - "libra-workspace-hack", - "move-core-types", - "move-ir-types", -] +name = "funty" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba62103ce691c2fd80fbae2213dfdda9ce60804973ac6b6e97de818ea7f52c8" [[package]] -name = "itertools" -version = "0.7.11" +name = "futures" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" -dependencies = [ - "either", -] +checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" [[package]] -name = "itertools" -version = "0.8.2" +name = "futures" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ - "either", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "itertools" -version = "0.9.0" +name = "futures-channel" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" dependencies = [ - "either", + "futures-core", + "futures-sink", ] [[package]] -name = "itoa" -version = "0.4.6" +name = "futures-core" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" [[package]] -name = "jemalloc-sys" -version = "0.3.2" +name = "futures-executor" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" dependencies = [ - "cc", - "fs_extra", - "libc", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "jemallocator" -version = "0.3.2" +name = "futures-io" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" -dependencies = [ - "jemalloc-sys", - "libc", -] +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" [[package]] -name = "jobserver" -version = "0.1.21" +name = "futures-macro" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" dependencies = [ - "libc", + "proc-macro-hack", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.53", ] [[package]] -name = "js-sys" -version = "0.3.46" +name = "futures-sink" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" -dependencies = [ - "wasm-bindgen", -] +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" [[package]] -name = "k8s-openapi" -version = "0.9.0" +name = "futures-task" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f95fd36c08ce592e67400a0f1a66f432196997d5a7e9a97e8743c33d8a9312" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" dependencies = [ - "base64 0.12.3", - "bytes", - "chrono", - "serde", - "serde-value", - "serde_json", + "once_cell", ] [[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "futures-util" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project 1.0.2", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", ] [[package]] -name = "kube" -version = "0.42.0" +name = "gcc" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f52dbe2c0e7ca54e43f1bc7b77b916750e63d7694e5a18c09b11307acc6b9d" -dependencies = [ - "Inflector", - "base64 0.12.3", - "bytes", - "chrono", - "dirs 3.0.1", - "either", - "futures 0.3.8", - "futures-util", - "http", - "k8s-openapi", - "log", - "openssl", - "pem", - "reqwest", - "serde", - "serde_json", - "serde_yaml", - "static_assertions", - "thiserror", - "time 0.2.22", - "tokio", - "url", -] +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] -name = "language-benchmarks" +name = "generate-format" version = "0.1.0" dependencies = [ - "anyhow", - "bytecode-verifier", - "criterion", - "language-e2e-tests", - "libra-proptest-helpers", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", + "consensus", + "consensus-types", + "diem-config", + "diem-crypto", + "diem-crypto-derive", + "diem-network-address", + "diem-types", + "diem-workspace-hack", + "libra-canonical-serialization", "move-core-types", - "move-lang", - "move-vm-runtime", - "move-vm-types", - "proptest", - "vm", + "network", + "rand 0.7.3", + "serde", + "serde-reflection", + "serde_yaml", + "structopt 0.3.21", ] [[package]] -name = "language-e2e-tests" +name = "generate-key" version = "0.1.0" dependencies = [ - "anyhow", - "compiled-stdlib", - "compiler", - "goldenfile", - "hex", + "diem-crypto", + "diem-temppath", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-proptest-helpers", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "move-core-types", - "move-vm-runtime", - "move-vm-types", - "once_cell", - "proptest", - "proptest-derive", "rand 0.7.3", - "vm", - "vm-genesis", ] [[package]] -name = "language-e2e-testsuite" +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "genesis-viewer" version = "0.1.0" dependencies = [ - "bytecode-verifier", "compiled-stdlib", - "compiler", - "language-e2e-tests", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-crypto", - "libra-logger", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libra-writeset-generator", - "move-core-types", - "move-vm-runtime", - "move-vm-types", - "proptest", - "serde_json", - "transaction-builder", - "transaction-builder-generated", + "resource-viewer", + "structopt 0.3.21", "vm", + "vm-genesis", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "get_if_addrs" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" +dependencies = [ + "c_linked_list", + "get_if_addrs-sys", + "libc", + "winapi 0.2.8", +] [[package]] -name = "lazycell" -version = "1.3.0" +name = "get_if_addrs-sys" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" +dependencies = [ + "gcc", + "libc", +] [[package]] -name = "libc" -version = "0.2.80" +name = "getrandom" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] [[package]] -name = "libfuzzer-sys" -version = "0.3.2" +name = "getrandom" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d718794b8e23533b9069bd2c4597d69e41cc7ab1c02700a502971aca0cdcf24" +checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" dependencies = [ - "arbitrary", - "cc", + "cfg-if 0.1.10", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] -name = "libloading" -version = "0.5.2" +name = "ghash" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" dependencies = [ - "cc", - "winapi 0.3.9", + "polyval", ] [[package]] -name = "libra-bitvec" -version = "0.1.0" -dependencies = [ - "libra-canonical-serialization", - "libra-proptest-helpers", - "libra-workspace-hack", - "proptest", - "proptest-derive", - "serde", - "serde_bytes", -] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" [[package]] -name = "libra-canonical-serialization" -version = "0.1.0" +name = "glob" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8dddda30939e963210412740c920779b3b57d0b8ab58d94d562cc433d621f1" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a" dependencies = [ - "serde", - "thiserror", + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", ] [[package]] -name = "libra-config" -version = "0.1.0" +name = "goldenfile" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f46e6a4d70c06f0b9a70d36dd8eef4fdeaa1ab657e4f1eaff290f69e48145f2" dependencies = [ - "get_if_addrs", - "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-global-constants", - "libra-logger", - "libra-network-address", - "libra-network-address-encryption", - "libra-secure-storage", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "log", - "mirai-annotations", - "rand 0.7.3", - "serde", - "serde_yaml", - "thiserror", + "difference", + "tempfile", ] [[package]] -name = "libra-crypto" -version = "0.1.0" +name = "guppy" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0658e39db7498a195f3f68c3ecf0ed2bce7f35c580c2ee9dd2c2dc4bbe1e7c4" dependencies = [ - "aes-gcm", - "anyhow", - "bitvec", - "byteorder", - "bytes", - "criterion", - "curve25519-dalek 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 3.0.0 (git+https://github.com/novifinancial/curve25519-dalek.git?branch=fiat3)", - "digest 0.9.0", - "ed25519-dalek 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 1.0.1 (git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5)", - "hex", - "hkdf", - "libra-canonical-serialization", - "libra-crypto-derive", - "libra-nibble", - "libra-workspace-hack", - "mirai-annotations", + "cargo_metadata", + "fixedbitset", + "guppy-summaries", + "indexmap", + "itertools 0.9.0", + "nested", "once_cell", - "proptest", - "proptest-derive", - "rand 0.7.3", - "rand_core 0.5.1", - "ripemd160", + "pathdiff", + "petgraph", + "rayon", + "semver 0.11.0", "serde", - "serde-name", - "serde_bytes", "serde_json", - "sha2", - "sha3", - "short-hex-str", - "static_assertions", - "thiserror", - "tiny-keccak", - "trybuild", - "x25519-dalek 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "x25519-dalek 1.1.0 (git+https://github.com/novifinancial/x25519-dalek.git?branch=fiat4)", + "supercow", + "target-spec", ] [[package]] -name = "libra-crypto-derive" -version = "0.1.0" +name = "guppy-summaries" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db8242f1f19bfdbb0226cc425bca27cc5f1e029cde7d3145924fe71184dff9f" dependencies = [ - "anyhow", - "libra-workspace-hack", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.53", + "diffus", + "semver 0.11.0", + "serde", + "toml", ] [[package]] -name = "libra-dev" -version = "0.1.0" +name = "h2" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" dependencies = [ - "bindgen", - "libc", - "libra-canonical-serialization", - "libra-crypto", - "libra-types", - "libra-workspace-hack", - "move-core-types", - "rand 0.7.3", - "static_assertions", - "transaction-builder", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", + "tracing-futures", ] [[package]] -name = "libra-documentation-tool" -version = "0.1.0" +name = "half" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177" + +[[package]] +name = "handlebars" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2764f9796c0ddca4b82c07f25dd2cb3db30b9a8f47940e78e1c883d9e95c3db9" dependencies = [ - "anyhow", - "libra-workspace-hack", - "once_cell", - "regex", + "log", + "pest", + "pest_derive", + "quick-error 2.0.0", "serde", - "serde-generate", - "serde-reflection", - "serde_yaml", - "structopt 0.3.21", - "tempfile", + "serde_json", ] [[package]] -name = "libra-events-fetcher" -version = "0.1.0" +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" + +[[package]] +name = "headers" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed18eb2459bf1a09ad2d6b1547840c3e5e62882fa09b9a6a20b1de8e3228848f" dependencies = [ - "anyhow", - "futures 0.3.8", - "hex", - "libra-canonical-serialization", - "libra-json-rpc-client", - "libra-types", - "libra-workspace-hack", - "reqwest", - "structopt 0.3.21", - "tokio", + "base64 0.12.3", + "bitflags", + "bytes", + "headers-core", + "http", + "mime", + "sha-1 0.8.2", + "time 0.1.44", ] [[package]] -name = "libra-faucet" -version = "0.1.0" +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "anyhow", - "generate-key", - "hex", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-json-rpc-client", - "libra-logger", - "libra-types", - "libra-workspace-hack", - "move-core-types", - "reqwest", - "serde", - "serde_derive", - "serde_json", - "structopt 0.3.21", - "tempfile", - "tokio", - "transaction-builder-generated", - "warp", + "http", ] [[package]] -name = "libra-fuzz" -version = "0.1.0" +name = "heck" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "libfuzzer-sys", - "libra-fuzzer", - "libra-workspace-hack", - "once_cell", + "unicode-segmentation", ] [[package]] -name = "libra-fuzzer" -version = "0.1.0" +name = "hermit-abi" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ - "accumulator", - "anyhow", - "byteorder", - "consensus", - "consensus-types", - "datatest-stable", - "executor", - "executor-types", - "hex", - "language-e2e-tests", - "libra-canonical-serialization", - "libra-crypto", - "libra-jellyfish-merkle", - "libra-json-rpc", - "libra-mempool", - "libra-proptest-helpers", - "libra-secure-json-rpc", - "libra-types", - "libra-vault-client", - "libra-workspace-hack", - "libradb", - "move-core-types", - "move-vm-types", - "network", - "once_cell", - "proptest", - "proptest-derive", - "rand 0.7.3", - "rusty-fork", - "safety-rules", - "serde_json", - "sha-1 0.9.2", - "state-synchronizer", - "stats_alloc", - "storage-interface", - "structopt 0.3.21", - "ureq", - "vm", + "libc", ] [[package]] -name = "libra-genesis-tool" -version = "0.1.0" +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" dependencies = [ - "anyhow", - "consensus-types", - "executor", - "generate-key", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-global-constants", - "libra-management", - "libra-network-address", - "libra-network-address-encryption", - "libra-secure-storage", - "libra-secure-time", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "rand 0.7.3", - "serde", - "storage-interface", - "structopt 0.3.21", - "thiserror", - "toml", - "transaction-builder", - "vm-genesis", + "digest 0.9.0", + "hmac 0.10.1", ] [[package]] -name = "libra-github-client" -version = "0.1.0" +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "base64 0.13.0", - "libra-workspace-hack", - "serde", - "serde_json", - "thiserror", - "ureq", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] -name = "libra-global-constants" -version = "0.1.0" +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.0", + "digest 0.9.0", +] [[package]] -name = "libra-infallible" -version = "0.1.0" +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ - "libra-workspace-hack", + "libc", + "match_cfg", + "winapi 0.3.9", ] [[package]] -name = "libra-jellyfish-merkle" -version = "0.1.0" +name = "http" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" dependencies = [ - "anyhow", - "byteorder", - "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-infallible", - "libra-nibble", - "libra-types", - "libra-workspace-hack", - "mirai-annotations", - "num-derive", - "num-traits", - "proptest", - "proptest-derive", - "rand 0.7.3", - "serde", - "thiserror", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "libra-json-rpc" -version = "0.1.0" +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" dependencies = [ - "anyhow", - "compiled-stdlib", - "executor", - "executor-types", - "fail", - "futures 0.3.8", - "generate-key", - "hex", - "hyper", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-json-rpc-client", - "libra-json-rpc-types", - "libra-logger", - "libra-mempool", - "libra-metrics", - "libra-node", - "libra-proptest-helpers", - "libra-temppath", - "libra-trace", - "libra-types", - "libra-workspace-hack", - "libradb", - "move-core-types", - "move-vm-types", - "network", - "once_cell", - "proptest", - "rand 0.7.3", - "reqwest", - "scratchpad", - "serde", - "serde_json", - "storage-interface", + "bytes", + "http", +] + +[[package]] +name = "httparse" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" + +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error 1.2.3", +] + +[[package]] +name = "humantime" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a" + +[[package]] +name = "hyper" +version = "0.13.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project 1.0.2", + "socket2", "tokio", - "transaction-builder-generated", - "vm-genesis", - "vm-validator", - "warp", + "tower-service", + "tracing", + "want", ] [[package]] -name = "libra-json-rpc-client" -version = "0.1.0" +name = "hyper-tls" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" dependencies = [ - "anyhow", - "hex", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-json-rpc-types", - "libra-types", - "libra-workspace-hack", - "reqwest", - "serde", - "serde_json", + "bytes", + "hyper", + "native-tls", "tokio", - "warp", + "tokio-tls", ] [[package]] -name = "libra-json-rpc-types" -version = "0.1.0" +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ - "anyhow", - "compiled-stdlib", - "hex", - "libra-canonical-serialization", - "libra-crypto", - "libra-types", - "libra-workspace-hack", - "move-core-types", - "move-explain", - "prost", - "prost-build", - "serde", - "serde_json", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "libra-key-manager" -version = "0.1.0" +name = "include_dir" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d58bdeb22b1c4691106c084b1063781904c35d0f22eda2a283598968eac61a" dependencies = [ - "anyhow", - "executor", - "executor-test-helpers", - "executor-types", - "futures 0.3.8", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-global-constants", - "libra-json-rpc", - "libra-logger", - "libra-network-address", - "libra-secure-json-rpc", - "libra-secure-push-metrics", - "libra-secure-storage", - "libra-secure-time", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "once_cell", - "rand 0.7.3", - "serde", - "storage-interface", - "thiserror", - "tokio", - "transaction-builder-generated", - "vm-validator", + "glob", + "include_dir_impl", + "proc-macro-hack", ] [[package]] -name = "libra-log-derive" -version = "0.1.0" +name = "include_dir_impl" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327869970574819d24d1dca25c891856144d29159ab797fa9dc725c5c3f57215" dependencies = [ - "libra-workspace-hack", + "anyhow", + "proc-macro-hack", "proc-macro2 1.0.24", "quote 1.0.7", "syn 1.0.53", ] [[package]] -name = "libra-logger" -version = "0.1.0" -dependencies = [ - "chrono", - "erased-serde", - "hostname", - "libra-infallible", - "libra-log-derive", - "libra-workspace-hack", - "once_cell", - "prometheus", - "serde", - "serde_json", -] - -[[package]] -name = "libra-management" -version = "0.1.0" +name = "indexmap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ - "anyhow", - "hex", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-global-constants", - "libra-network-address", - "libra-network-address-encryption", - "libra-secure-storage", - "libra-secure-time", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "serde", - "serde_yaml", - "structopt 0.3.21", - "thiserror", - "toml", - "transaction-builder", + "autocfg 1.0.1", + "hashbrown", ] [[package]] -name = "libra-mempool" -version = "0.1.0" +name = "indoc" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a75aeaaef0ce18b58056d306c27b07436fbb34b8816c53094b76dd81803136" dependencies = [ - "anyhow", - "bounded-executor", - "channel", - "fail", - "futures 0.3.8", - "itertools 0.9.0", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-logger", - "libra-metrics", - "libra-network-address", - "libra-proptest-helpers", - "libra-trace", - "libra-types", - "libra-workspace-hack", - "mirai-annotations", - "netcore", - "network", - "once_cell", - "proptest", - "rand 0.7.3", - "rayon", - "serde", - "serde_json", - "storage-interface", - "storage-service", - "subscription-service", - "tokio", - "vm-validator", + "unindent", ] [[package]] -name = "libra-metrics" -version = "0.1.0" +name = "input_buffer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" dependencies = [ - "anyhow", - "assert_approx_eq", - "futures 0.3.8", - "hyper", - "libra-logger", - "libra-metrics-core", - "libra-workspace-hack", - "once_cell", - "prometheus", - "rusty-fork", - "serde_json", - "tokio", + "bytes", ] [[package]] -name = "libra-metrics-core" -version = "0.1.0" +name = "instant" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" dependencies = [ - "libra-workspace-hack", - "prometheus", + "cfg-if 1.0.0", ] [[package]] -name = "libra-network-address" +name = "invalid-mutations" version = "0.1.0" dependencies = [ - "aes-gcm", - "anyhow", - "libra-canonical-serialization", - "libra-crypto", - "libra-workspace-hack", - "move-core-types", + "diem-proptest-helpers", + "diem-types", + "diem-workspace-hack", "proptest", - "proptest-derive", - "serde", - "serde_bytes", - "static_assertions", - "thiserror", + "vm", ] [[package]] -name = "libra-network-address-encryption" -version = "0.1.0" +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "base64 0.13.0", - "libra-canonical-serialization", - "libra-global-constants", - "libra-infallible", - "libra-logger", - "libra-network-address", - "libra-secure-storage", - "libra-workspace-hack", - "move-core-types", - "rand 0.7.3", - "serde", - "thiserror", + "libc", ] [[package]] -name = "libra-nibble" -version = "0.1.0" -dependencies = [ - "libra-workspace-hack", - "proptest", - "serde", -] +name = "ipnet" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] -name = "libra-node" +name = "ir-testsuite" version = "0.1.0" dependencies = [ - "backup-service", - "consensus", - "crash-handler", - "debug-interface", - "executor", - "executor-types", - "fail", - "futures 0.3.8", - "jemallocator", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-json-rpc", - "libra-logger", - "libra-mempool", - "libra-metrics", - "libra-secure-storage", - "libra-temppath", - "libra-trace", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", - "network-builder", - "state-synchronizer", - "storage-client", - "storage-interface", - "storage-service", - "structopt 0.3.21", - "subscription-service", - "tokio", + "anyhow", + "bytecode-verifier", + "compiled-stdlib", + "datatest-stable", + "diem-types", + "diem-workspace-hack", + "functional-tests", + "ir-to-bytecode", + "move-ir-types", + "vm", ] [[package]] -name = "libra-operational-tool" +name = "ir-to-bytecode" version = "0.1.0" dependencies = [ "anyhow", - "hex", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-global-constants", - "libra-management", - "libra-network-address", - "libra-network-address-encryption", - "libra-secure-json-rpc", - "libra-secure-storage", - "libra-secure-time", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "serde", - "serde_json", - "structopt 0.3.21", + "bytecode-source-map", + "codespan", + "codespan-reporting", + "diem-types", + "diem-workspace-hack", + "ir-to-bytecode-syntax", + "log", + "move-core-types", + "move-ir-types", "thiserror", - "toml", - "transaction-builder", + "vm", ] [[package]] -name = "libra-proptest-helpers" +name = "ir-to-bytecode-syntax" version = "0.1.0" dependencies = [ - "crossbeam", - "libra-workspace-hack", - "proptest", - "proptest-derive", + "anyhow", + "codespan", + "diem-types", + "diem-workspace-hack", + "hex", + "move-core-types", + "move-ir-types", ] [[package]] -name = "libra-retrier" -version = "0.1.0" +name = "itertools" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" dependencies = [ - "libra-logger", - "libra-workspace-hack", - "tokio", + "either", ] [[package]] -name = "libra-secure-json-rpc" -version = "0.1.0" +name = "itertools" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" dependencies = [ - "anyhow", - "futures 0.3.8", - "hex", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-json-rpc", - "libra-proptest-helpers", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "libradb", - "proptest", - "serde", - "serde_json", - "storage-interface", - "thiserror", - "tokio", - "ureq", - "vm-validator", + "either", ] [[package]] -name = "libra-secure-net" -version = "0.1.0" -dependencies = [ - "libra-config", - "libra-logger", - "libra-secure-push-metrics", - "libra-workspace-hack", - "once_cell", - "serde", - "thiserror", +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", ] [[package]] -name = "libra-secure-push-metrics" -version = "0.1.0" -dependencies = [ - "libra-logger", - "libra-metrics-core", - "libra-workspace-hack", - "ureq", -] +name = "itoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" [[package]] -name = "libra-secure-storage" -version = "0.1.0" +name = "jemalloc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" dependencies = [ - "base64 0.13.0", - "chrono", - "enum_dispatch", - "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-github-client", - "libra-infallible", - "libra-logger", - "libra-secure-time", - "libra-temppath", - "libra-vault-client", - "libra-workspace-hack", - "rand 0.7.3", - "serde", - "serde_json", - "thiserror", + "cc", + "fs_extra", + "libc", ] [[package]] -name = "libra-secure-time" -version = "0.1.0" +name = "jemallocator" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" dependencies = [ - "libra-infallible", - "libra-workspace-hack", + "jemalloc-sys", + "libc", ] [[package]] -name = "libra-smoke-test-attribute" -version = "0.1.0" +name = "jobserver" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" dependencies = [ - "libra-workspace-hack", - "proc-macro2 1.0.24", - "quote 1.0.7", + "libc", ] [[package]] -name = "libra-state-view" -version = "0.1.0" +name = "js-sys" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" dependencies = [ - "anyhow", - "libra-crypto", - "libra-types", - "libra-workspace-hack", + "wasm-bindgen", ] [[package]] -name = "libra-storage-inspector" -version = "0.1.0" +name = "k8s-openapi" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f95fd36c08ce592e67400a0f1a66f432196997d5a7e9a97e8743c33d8a9312" dependencies = [ - "anyhow", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-types", - "libra-workspace-hack", - "libradb", - "storage-interface", - "structopt 0.3.21", - "tempfile", - "transaction-builder", + "base64 0.12.3", + "bytes", + "chrono", + "serde", + "serde-value", + "serde_json", ] [[package]] -name = "libra-swarm" +name = "keccak" version = "0.1.0" -dependencies = [ - "anyhow", - "ctrlc", - "debug-interface", - "libra-config", - "libra-genesis-tool", - "libra-logger", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "reqwest", - "structopt 0.3.21", - "thiserror", -] +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] -name = "libra-temppath" -version = "0.1.0" +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" dependencies = [ - "hex", - "libra-workspace-hack", - "rand 0.7.3", + "winapi 0.2.8", + "winapi-build", ] [[package]] -name = "libra-trace" -version = "0.1.0" +name = "kube" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f52dbe2c0e7ca54e43f1bc7b77b916750e63d7694e5a18c09b11307acc6b9d" dependencies = [ - "anyhow", + "Inflector", + "base64 0.12.3", + "bytes", "chrono", - "libra-logger", - "libra-metrics", - "libra-workspace-hack", - "once_cell", + "dirs 3.0.1", + "either", + "futures 0.3.8", + "futures-util", + "http", + "k8s-openapi", + "log", + "openssl", + "pem", "reqwest", "serde", "serde_json", - "structopt 0.3.21", + "serde_yaml", + "static_assertions", + "thiserror", + "time 0.2.22", "tokio", + "url", ] [[package]] -name = "libra-transaction-replay" +name = "language-benchmarks" version = "0.1.0" dependencies = [ "anyhow", - "compiled-stdlib", - "difference", - "libra-canonical-serialization", - "libra-state-view", - "libra-types", - "libra-validator-interface", - "libra-vm", - "libra-workspace-hack", - "libradb", + "bytecode-verifier", + "criterion", + "diem-proptest-helpers", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "language-e2e-tests", "move-core-types", "move-lang", "move-vm-runtime", - "move-vm-test-utils", "move-vm-types", - "resource-viewer", - "stdlib", - "structopt 0.3.21", + "proptest", "vm", - "vm-genesis", ] [[package]] -name = "libra-types" +name = "language-e2e-tests" version = "0.1.0" dependencies = [ "anyhow", - "bytes", - "chrono", + "compiled-stdlib", + "compiler", + "diem-config", + "diem-crypto", + "diem-proptest-helpers", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "goldenfile", "hex", - "itertools 0.9.0", "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-infallible", - "libra-network-address", - "libra-proptest-helpers", - "libra-workspace-hack", - "mirai-annotations", "move-core-types", + "move-vm-runtime", + "move-vm-types", "once_cell", "proptest", "proptest-derive", "rand 0.7.3", - "regex", - "serde", - "serde_bytes", - "serde_json", - "thiserror", - "tiny-keccak", -] - -[[package]] -name = "libra-validator-interface" -version = "0.1.0" -dependencies = [ - "anyhow", - "libra-canonical-serialization", - "libra-config", - "libra-json-rpc-client", - "libra-state-view", - "libra-types", - "libra-workspace-hack", - "libradb", - "reqwest", - "scratchpad", - "storage-interface", -] - -[[package]] -name = "libra-vault-client" -version = "0.1.0" -dependencies = [ - "base64 0.13.0", - "chrono", - "libra-crypto", - "libra-proptest-helpers", - "libra-types", - "libra-workspace-hack", - "native-tls", - "once_cell", - "proptest", - "serde", - "serde_json", - "thiserror", - "ureq", + "vm", + "vm-genesis", ] [[package]] -name = "libra-vm" +name = "language-e2e-testsuite" version = "0.1.0" dependencies = [ - "anyhow", - "fail", + "bytecode-verifier", + "compiled-stdlib", + "compiler", + "diem-crypto", + "diem-logger", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diem-writeset-generator", + "language-e2e-tests", "libra-canonical-serialization", - "libra-crypto", - "libra-logger", - "libra-metrics", - "libra-state-view", - "libra-trace", - "libra-types", - "libra-workspace-hack", - "mirai-annotations", "move-core-types", "move-vm-runtime", "move-vm-types", - "once_cell", "proptest", - "rayon", - "serde", "serde_json", + "transaction-builder", + "transaction-builder-generated", "vm", ] [[package]] -name = "libra-wallet" -version = "0.1.0" -dependencies = [ - "anyhow", - "byteorder", - "ed25519-dalek 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519-dalek 1.0.1 (git+https://github.com/novifinancial/ed25519-dalek.git?branch=fiat5)", - "hex", - "hmac 0.10.1", - "libra-crypto", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "mirai-annotations", - "pbkdf2", - "rand 0.7.3", - "serde", - "sha2", - "thiserror", -] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "libra-workspace-hack" -version = "0.1.0" +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" + +[[package]] +name = "libfuzzer-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d718794b8e23533b9069bd2c4597d69e41cc7ab1c02700a502971aca0cdcf24" dependencies = [ - "bytes", + "arbitrary", "cc", - "log", - "memchr", - "num-traits", - "petgraph", - "serde", - "sha-1 0.9.2", - "subtle", - "syn 1.0.53", ] [[package]] -name = "libra-writeset-generator" -version = "0.1.0" +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ - "anyhow", - "handlebars", - "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", - "move-lang", - "serde", - "serde_json", - "stdlib", - "structopt 0.3.21", - "tempfile", + "cc", + "winapi 0.3.9", ] [[package]] -name = "libradb" +name = "libra-canonical-serialization" version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8dddda30939e963210412740c920779b3b57d0b8ab58d94d562cc433d621f1" dependencies = [ - "accumulator", - "anyhow", - "arc-swap", - "byteorder", - "itertools 0.9.0", - "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-jellyfish-merkle", - "libra-logger", - "libra-metrics", - "libra-proptest-helpers", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "num-derive", - "num-traits", - "num-variants", - "once_cell", - "proptest", - "proptest-derive", - "rand 0.7.3", - "schemadb", "serde", - "storage-interface", "thiserror", ] @@ -3771,10 +3771,10 @@ name = "librarian" version = "0.1.0" dependencies = [ "anyhow", - "libra-crypto", - "libra-types", - "libra-workspace-hack", - "libradb", + "diem-crypto", + "diem-types", + "diem-workspace-hack", + "diemdb", "serde", "serde_json", "storage-interface", @@ -3823,8 +3823,8 @@ name = "many-keys-stress-test" version = "0.1.0" dependencies = [ "channel", + "diem-workspace-hack", "futures 0.3.8", - "libra-workspace-hack", "structopt 0.3.21", ] @@ -3872,9 +3872,9 @@ name = "memsocket" version = "0.1.0" dependencies = [ "bytes", + "diem-infallible", + "diem-workspace-hack", "futures 0.3.8", - "libra-infallible", - "libra-workspace-hack", "once_cell", ] @@ -3979,9 +3979,9 @@ name = "module-generation" version = "0.1.0" dependencies = [ "bytecode-verifier", + "diem-types", + "diem-workspace-hack", "ir-to-bytecode", - "libra-types", - "libra-workspace-hack", "move-core-types", "move-ir-types", "rand 0.7.3", @@ -3995,15 +3995,15 @@ dependencies = [ "anyhow", "compiled-stdlib", "datatest-stable", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", "difference", "disassembler", "errmapgen", "include_dir", "libra-canonical-serialization", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", "move-core-types", "move-coverage", "move-lang", @@ -4022,11 +4022,11 @@ name = "move-core-types" version = "0.1.0" dependencies = [ "anyhow", + "diem-crypto", + "diem-crypto-derive", + "diem-workspace-hack", "hex", "libra-canonical-serialization", - "libra-crypto", - "libra-crypto-derive", - "libra-workspace-hack", "mirai-annotations", "once_cell", "proptest", @@ -4051,9 +4051,9 @@ dependencies = [ "bytecode-verifier", "codespan", "colored", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", "move-core-types", "move-ir-types", "once_cell", @@ -4068,9 +4068,9 @@ name = "move-explain" version = "0.1.0" dependencies = [ "compiled-stdlib", + "diem-workspace-hack", "errmapgen", "libra-canonical-serialization", - "libra-workspace-hack", "move-core-types", "structopt 0.3.21", ] @@ -4081,9 +4081,9 @@ version = "0.1.0" dependencies = [ "anyhow", "codespan", + "diem-types", + "diem-workspace-hack", "hex", - "libra-types", - "libra-workspace-hack", "move-core-types", "once_cell", "serde", @@ -4100,12 +4100,12 @@ dependencies = [ "codespan", "codespan-reporting", "datatest-stable", + "diem-types", + "diem-workspace-hack", "difference", "hex", "ir-to-bytecode", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", "move-core-types", "move-ir-types", "petgraph", @@ -4122,9 +4122,9 @@ version = "0.1.0" dependencies = [ "anyhow", "datatest-stable", + "diem-types", + "diem-workspace-hack", "functional-tests", - "libra-types", - "libra-workspace-hack", "move-lang", "tempfile", ] @@ -4142,15 +4142,15 @@ dependencies = [ "codespan", "codespan-reporting", "datatest-stable", + "diem-temppath", + "diem-types", + "diem-workspace-hack", "docgen", "errmapgen", "futures 0.3.8", "handlebars", "hex", "itertools 0.9.0", - "libra-temppath", - "libra-types", - "libra-workspace-hack", "log", "move-ir-types", "move-lang", @@ -4175,7 +4175,7 @@ name = "move-vm-integration-tests" version = "0.1.0" dependencies = [ "anyhow", - "libra-workspace-hack", + "diem-workspace-hack", "move-core-types", "move-lang", "move-vm-runtime", @@ -4189,8 +4189,8 @@ dependencies = [ name = "move-vm-natives" version = "0.1.0" dependencies = [ - "libra-crypto", - "libra-workspace-hack", + "diem-crypto", + "diem-workspace-hack", "mirai-annotations", "move-core-types", "move-vm-types", @@ -4206,13 +4206,13 @@ dependencies = [ "anyhow", "bytecode-verifier", "compiler", + "diem-crypto", + "diem-infallible", + "diem-logger", + "diem-state-view", + "diem-workspace-hack", "fail", "hex", - "libra-crypto", - "libra-infallible", - "libra-logger", - "libra-state-view", - "libra-workspace-hack", "mirai-annotations", "move-core-types", "move-lang", @@ -4228,7 +4228,7 @@ name = "move-vm-test-utils" version = "0.1.0" dependencies = [ "anyhow", - "libra-workspace-hack", + "diem-workspace-hack", "move-core-types", "move-vm-runtime", "vm", @@ -4238,9 +4238,9 @@ dependencies = [ name = "move-vm-types" version = "0.1.0" dependencies = [ + "diem-crypto", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-crypto", - "libra-workspace-hack", "mirai-annotations", "move-core-types", "once_cell", @@ -4314,11 +4314,11 @@ name = "netcore" version = "0.1.0" dependencies = [ "bytes", + "diem-logger", + "diem-network-address", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", - "libra-logger", - "libra-network-address", - "libra-types", - "libra-workspace-hack", "memsocket", "pin-project 1.0.2", "serde", @@ -4334,21 +4334,21 @@ dependencies = [ "bytes", "channel", "criterion", + "diem-bitvec", + "diem-config", + "diem-crypto", + "diem-crypto-derive", + "diem-infallible", + "diem-logger", + "diem-metrics", + "diem-network-address", + "diem-proptest-helpers", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", "futures-util", "hex", - "libra-bitvec", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-crypto-derive", - "libra-infallible", - "libra-logger", - "libra-metrics", - "libra-network-address", - "libra-proptest-helpers", - "libra-types", - "libra-workspace-hack", "memsocket", "netcore", "network-builder", @@ -4375,18 +4375,18 @@ name = "network-builder" version = "0.1.0" dependencies = [ "channel", + "diem-config", + "diem-crypto", + "diem-infallible", + "diem-logger", + "diem-metrics", + "diem-network-address", + "diem-network-address-encryption", + "diem-secure-storage", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-infallible", - "libra-logger", - "libra-metrics", - "libra-network-address", - "libra-network-address-encryption", - "libra-secure-storage", - "libra-types", - "libra-workspace-hack", "netcore", "network", "network-simple-onchain-discovery", @@ -4403,16 +4403,16 @@ version = "0.1.0" dependencies = [ "anyhow", "channel", + "diem-config", + "diem-crypto", + "diem-logger", + "diem-metrics", + "diem-network-address", + "diem-network-address-encryption", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-metrics", - "libra-network-address", - "libra-network-address-encryption", - "libra-types", - "libra-workspace-hack", "move-core-types", "network", "once_cell", @@ -4592,7 +4592,7 @@ dependencies = [ name = "num-variants" version = "0.1.0" dependencies = [ - "libra-workspace-hack", + "diem-workspace-hack", "proc-macro2 1.0.24", "quote 1.0.7", "syn 1.0.53", @@ -5490,11 +5490,11 @@ version = "0.1.0" dependencies = [ "anyhow", "compiled-stdlib", + "diem-state-view", + "diem-types", + "diem-workspace-hack", "hex", "libra-canonical-serialization", - "libra-state-view", - "libra-types", - "libra-workspace-hack", "move-core-types", "move-vm-runtime", "move-vm-types", @@ -5736,20 +5736,20 @@ dependencies = [ "consensus-types", "crash-handler", "criterion", + "diem-config", + "diem-crypto", + "diem-global-constants", + "diem-infallible", + "diem-logger", + "diem-proptest-helpers", + "diem-secure-net", + "diem-secure-push-metrics", + "diem-secure-storage", + "diem-temppath", + "diem-types", + "diem-vault-client", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-global-constants", - "libra-infallible", - "libra-logger", - "libra-proptest-helpers", - "libra-secure-net", - "libra-secure-push-metrics", - "libra-secure-storage", - "libra-temppath", - "libra-types", - "libra-vault-client", - "libra-workspace-hack", "once_cell", "proptest", "rand 0.7.3", @@ -5784,10 +5784,10 @@ version = "0.1.0" dependencies = [ "anyhow", "byteorder", - "libra-config", - "libra-metrics", - "libra-temppath", - "libra-workspace-hack", + "diem-config", + "diem-metrics", + "diem-temppath", + "diem-workspace-hack", "once_cell", "proptest", "rocksdb", @@ -5810,11 +5810,11 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" name = "scratchpad" version = "0.1.0" dependencies = [ + "diem-crypto", + "diem-infallible", + "diem-types", + "diem-workspace-hack", "itertools 0.9.0", - "libra-crypto", - "libra-infallible", - "libra-types", - "libra-workspace-hack", "proptest", ] @@ -5846,16 +5846,16 @@ name = "seed-peer-generator" version = "0.1.0" dependencies = [ "anyhow", + "diem-config", + "diem-crypto", + "diem-logger", + "diem-network-address", + "diem-secure-json-rpc", + "diem-temppath", + "diem-types", + "diem-workspace-hack", "hex", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-network-address", - "libra-secure-json-rpc", - "libra-temppath", - "libra-types", - "libra-workspace-hack", "rand 0.7.3", "serde_yaml", "structopt 0.3.21", @@ -6057,7 +6057,7 @@ dependencies = [ name = "serializer-tests" version = "0.1.0" dependencies = [ - "libra-workspace-hack", + "diem-workspace-hack", "proptest", "proptest-derive", "vm", @@ -6135,8 +6135,8 @@ checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" name = "short-hex-str" version = "0.1.0" dependencies = [ + "diem-workspace-hack", "hex", - "libra-workspace-hack", "mirai-annotations", "proptest", "serde", @@ -6189,32 +6189,32 @@ dependencies = [ "backup-cli", "cli", "debug-interface", + "diem-config", + "diem-crypto", + "diem-events-fetcher", + "diem-genesis-tool", + "diem-global-constants", + "diem-infallible", + "diem-json-rpc", + "diem-key-manager", + "diem-logger", + "diem-management", + "diem-network-address", + "diem-operational-tool", + "diem-secure-json-rpc", + "diem-secure-storage", + "diem-secure-time", + "diem-smoke-test-attribute", + "diem-swarm", + "diem-temppath", + "diem-trace", + "diem-transaction-replay", + "diem-types", + "diem-vault-client", + "diem-workspace-hack", "generate-key", "hex", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-events-fetcher", - "libra-genesis-tool", - "libra-global-constants", - "libra-infallible", - "libra-json-rpc", - "libra-key-manager", - "libra-logger", - "libra-management", - "libra-network-address", - "libra-operational-tool", - "libra-secure-json-rpc", - "libra-secure-storage", - "libra-secure-time", - "libra-smoke-test-attribute", - "libra-swarm", - "libra-temppath", - "libra-trace", - "libra-transaction-replay", - "libra-types", - "libra-vault-client", - "libra-workspace-hack", "num 0.3.1", "num-traits", "once_cell", @@ -6231,13 +6231,13 @@ dependencies = [ name = "socket-bench-server" version = "0.1.0" dependencies = [ + "diem-config", + "diem-crypto", + "diem-logger", + "diem-network-address", + "diem-types", + "diem-workspace-hack", "futures 0.3.8", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-network-address", - "libra-types", - "libra-workspace-hack", "memsocket", "netcore", "network", @@ -6269,9 +6269,9 @@ dependencies = [ "codespan", "codespan-reporting", "datatest-stable", + "diem-types", + "diem-workspace-hack", "itertools 0.9.0", - "libra-types", - "libra-workspace-hack", "log", "move-core-types", "move-ir-types", @@ -6307,6 +6307,20 @@ dependencies = [ "bytes", "channel", "compiled-stdlib", + "diem-config", + "diem-crypto", + "diem-genesis-tool", + "diem-infallible", + "diem-logger", + "diem-mempool", + "diem-metrics", + "diem-network-address", + "diem-proptest-helpers", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", "executor", "executor-test-helpers", "executor-types", @@ -6314,20 +6328,6 @@ dependencies = [ "futures 0.3.8", "itertools 0.9.0", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-genesis-tool", - "libra-infallible", - "libra-logger", - "libra-mempool", - "libra-metrics", - "libra-network-address", - "libra-proptest-helpers", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", "memsocket", "netcore", "network", @@ -6374,10 +6374,10 @@ dependencies = [ "bytecode-verifier", "clap", "datatest-stable", + "diem-crypto", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-crypto", - "libra-types", - "libra-workspace-hack", "log", "move-lang", "move-prover", @@ -6441,13 +6441,13 @@ name = "storage-client" version = "0.1.0" dependencies = [ "anyhow", + "diem-crypto", + "diem-infallible", + "diem-logger", + "diem-secure-net", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-crypto", - "libra-infallible", - "libra-logger", - "libra-secure-net", - "libra-types", - "libra-workspace-hack", "serde", "storage-interface", ] @@ -6457,13 +6457,13 @@ name = "storage-interface" version = "0.1.0" dependencies = [ "anyhow", + "diem-crypto", + "diem-secure-net", + "diem-state-view", + "diem-types", + "diem-workspace-hack", "itertools 0.9.0", "libra-canonical-serialization", - "libra-crypto", - "libra-secure-net", - "libra-state-view", - "libra-types", - "libra-workspace-hack", "move-core-types", "scratchpad", "serde", @@ -6475,18 +6475,18 @@ name = "storage-service" version = "0.1.0" dependencies = [ "anyhow", + "diem-config", + "diem-crypto", + "diem-logger", + "diem-metrics", + "diem-secure-net", + "diem-temppath", + "diem-types", + "diem-workspace-hack", + "diemdb", "futures 0.3.8", "itertools 0.9.0", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-logger", - "libra-metrics", - "libra-secure-net", - "libra-temppath", - "libra-types", - "libra-workspace-hack", - "libradb", "proptest", "rand 0.7.3", "storage-client", @@ -6552,8 +6552,8 @@ version = "0.1.0" dependencies = [ "anyhow", "channel", - "libra-types", - "libra-workspace-hack", + "diem-types", + "diem-workspace-hack", ] [[package]] @@ -6572,11 +6572,11 @@ checksum = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" name = "swiss-knife" version = "0.1.0" dependencies = [ + "diem-crypto", + "diem-types", + "diem-workspace-hack", "hex", "libra-canonical-serialization", - "libra-crypto", - "libra-types", - "libra-workspace-hack", "move-core-types", "rand 0.7.3", "serde", @@ -6697,16 +6697,16 @@ version = "0.1.0" dependencies = [ "bytecode-verifier", "crossbeam-channel", + "diem-config", + "diem-logger", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", "getrandom 0.2.0", "hex", "itertools 0.9.0", "language-e2e-tests", - "libra-config", - "libra-logger", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", "mirai-annotations", "module-generation", "move-core-types", @@ -6723,7 +6723,7 @@ name = "test-utils" version = "0.1.0" dependencies = [ "anyhow", - "libra-workspace-hack", + "diem-workspace-hack", "prettydiff", "regex", ] @@ -7005,7 +7005,7 @@ dependencies = [ name = "transaction-builder" version = "0.1.0" dependencies = [ - "libra-workspace-hack", + "diem-workspace-hack", "mirai-annotations", "transaction-builder-generated", ] @@ -7015,10 +7015,10 @@ name = "transaction-builder-generated" version = "0.1.0" dependencies = [ "compiled-stdlib", + "diem-proptest-helpers", + "diem-types", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-proptest-helpers", - "libra-types", - "libra-workspace-hack", "move-core-types", "once_cell", "proptest", @@ -7031,10 +7031,10 @@ name = "transaction-builder-generator" version = "0.1.0" dependencies = [ "anyhow", + "diem-types", + "diem-workspace-hack", "heck", "libra-canonical-serialization", - "libra-types", - "libra-workspace-hack", "move-core-types", "regex", "serde-generate", @@ -7249,9 +7249,9 @@ name = "vm" version = "0.1.0" dependencies = [ "anyhow", - "libra-crypto", - "libra-proptest-helpers", - "libra-workspace-hack", + "diem-crypto", + "diem-proptest-helpers", + "diem-workspace-hack", "mirai-annotations", "move-core-types", "num-variants", @@ -7269,15 +7269,15 @@ dependencies = [ "anyhow", "bytecode-verifier", "compiled-stdlib", + "diem-config", + "diem-crypto", + "diem-network-address", + "diem-proptest-helpers", + "diem-state-view", + "diem-types", + "diem-vm", + "diem-workspace-hack", "libra-canonical-serialization", - "libra-config", - "libra-crypto", - "libra-network-address", - "libra-proptest-helpers", - "libra-state-view", - "libra-types", - "libra-vm", - "libra-workspace-hack", "move-core-types", "move-vm-runtime", "move-vm-types", @@ -7294,16 +7294,16 @@ name = "vm-validator" version = "0.1.0" dependencies = [ "anyhow", + "diem-crypto", + "diem-state-view", + "diem-temppath", + "diem-types", + "diem-vm", + "diem-workspace-hack", + "diemdb", "executor", "executor-test-helpers", "fail", - "libra-crypto", - "libra-state-view", - "libra-temppath", - "libra-types", - "libra-vm", - "libra-workspace-hack", - "libradb", "move-core-types", "rand 0.7.3", "scratchpad", @@ -7580,12 +7580,12 @@ dependencies = [ "chrono", "colored-diff", "determinator", + "diem-workspace-hack", "env_logger 0.8.2", "globset", "guppy", "indexmap", "indoc", - "libra-workspace-hack", "log", "rayon", "regex", @@ -7602,10 +7602,10 @@ name = "x-core" version = "0.1.0" dependencies = [ "determinator", + "diem-workspace-hack", "guppy", "hex", "indoc", - "libra-workspace-hack", "log", "once_cell", "rental", @@ -7617,8 +7617,8 @@ dependencies = [ name = "x-lint" version = "0.1.0" dependencies = [ + "diem-workspace-hack", "guppy", - "libra-workspace-hack", "once_cell", "serde", "toml", diff --git a/Cargo.toml b/Cargo.toml index 0e2a5fd1c3..4d16ef99bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,9 @@ [workspace] members = [ + "client/diem-dev", "client/faucet", "client/json-rpc", - "client/libra-dev", "client/swiss-knife", "client/transaction-builder", "common/bitvec", @@ -13,8 +13,8 @@ members = [ "common/crash-handler", "common/datatest-stable", "common/debug-interface", + "common/diemdoc", "common/infallible", - "common/libradoc", "common/logger", "common/logger/derive", "common/metrics", @@ -44,6 +44,7 @@ members = [ "devtools/x", "devtools/x-core", "devtools/x-lint", + "diem-node", "execution/db-bootstrapper", "execution/execution-correctness", "execution/executor", @@ -61,13 +62,13 @@ members = [ "language/compiler/bytecode-source-map", "language/compiler/ir-to-bytecode", "language/compiler/ir-to-bytecode/syntax", + "language/diem-tools/diem-events-fetcher", + "language/diem-tools/diem-validator-interface", + "language/diem-tools/transaction-replay", + "language/diem-tools/writeset-transaction-generator", + "language/diem-vm", "language/e2e-testsuite", "language/ir-testsuite", - "language/libra-tools/libra-events-fetcher", - "language/libra-tools/libra-validator-interface", - "language/libra-tools/transaction-replay", - "language/libra-tools/writeset-transaction-generator", - "language/libra-vm", "language/move-core/types", "language/move-ir/types", "language/move-lang", @@ -102,7 +103,6 @@ members = [ "language/transaction-builder/generator", "language/vm", "language/vm/serializer-tests", - "libra-node", "mempool", "network", "network/builder", @@ -123,9 +123,9 @@ members = [ "storage/accumulator", "storage/backup/backup-cli", "storage/backup/backup-service", + "storage/diemdb", "storage/inspector", "storage/jellyfish-merkle", - "storage/libradb", "storage/librarian", "storage/schemadb", "storage/scratchpad", @@ -134,19 +134,19 @@ members = [ "storage/storage-interface", "storage/storage-service", "testsuite/cli", - "testsuite/cli/libra-wallet", + "testsuite/cli/diem-wallet", "testsuite/cluster-test", + "testsuite/diem-fuzzer", + "testsuite/diem-fuzzer/fuzz", + "testsuite/diem-swarm", "testsuite/generate-format", - "testsuite/libra-fuzzer", - "testsuite/libra-fuzzer/fuzz", - "testsuite/libra-swarm", "testsuite/smoke-test", "testsuite/smoke-test/attribute", "types", "vm-validator", ] -# NOTE: default-members is the complete list of binaries that form the "production Libra codebase". These members should +# NOTE: default-members is the complete list of binaries that form the "production Diem codebase". These members should # never include crates that require fuzzing features or test features. These are the crates we want built with no extra # test-only code included. # @@ -159,7 +159,7 @@ default-members = [ "config/seed-peer-generator", "consensus/safety-rules", "client/faucet", - "client/libra-dev", + "client/diem-dev", "client/swiss-knife", "execution/db-bootstrapper", "execution/execution-correctness", @@ -172,12 +172,12 @@ default-members = [ "language/tools/genesis-viewer", "language/tools/move-cli", "language/tools/move-coverage", - "language/libra-tools/libra-events-fetcher", - "language/libra-tools/transaction-replay", - "language/libra-tools/writeset-transaction-generator", + "language/diem-tools/diem-events-fetcher", + "language/diem-tools/transaction-replay", + "language/diem-tools/writeset-transaction-generator", "language/tools/move-explain", "language/transaction-builder/generator", - "libra-node", + "diem-node", "secure/key-manager", "storage/backup/backup-cli", "storage/inspector", diff --git a/README.md b/README.md index 0010b5d223..4e3c1b5e77 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,69 @@ -> **Note to readers:** On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. All projects will remain available for use here until the migration to a new GitHub Organization is complete. +> **Note to readers:** On December 1, 2020, the Diem Association was renamed to Diem Association. The project repos are in the process of being migrated. All projects will remain available for use here until the migration to a new GitHub Organization is complete. - - Libra Logo + + Diem Logo --- -[![Libra Rust Crate Documentation (master)](https://img.shields.io/badge/docs-master-59f)](https://developers.libra.org/docs/rustdocs/) +[![Diem Rust Crate Documentation (master)](https://img.shields.io/badge/docs-master-59f)](https://developers.diem.com/docs/rustdocs/) [![CircleCI](https://circleci.com/gh/libra/libra.svg?style=shield)](https://circleci.com/gh/libra/libra) [![License](https://img.shields.io/badge/license-Apache-green.svg)](LICENSE) -[![grcov](https://img.shields.io/badge/Coverage-grcov-green)](https://ci-artifacts.libra.org/coverage/unit-coverage/latest/index.html) [![codecov](https://codecov.io/gh/libra/libra/branch/master/graph/badge.svg)](https://codecov.io/gh/libra/libra) -Libra Core implements a decentralized, programmable database which provides a financial infrastructure that can empower billions of people. +Diem Core implements a decentralized, programmable database which provides a financial infrastructure that can empower billions of people. ## Note to Developers -* Libra Core is a prototype. +* Diem Core is a prototype. * The APIs are constantly evolving and designed to demonstrate types of functionality. Expect substantial changes before the release. -* We’ve launched a testnet that is a live demonstration of an early prototype of the Libra Blockchain software. +* We’ve launched a testnet that is a live demonstration of an early prototype of the Diem Blockchain software. ## Contributing -To begin contributing, [sign the CLA](https://libra.org/en-US/cla-sign/). You can learn more about contributing to the Libra project by reading our [Contribution Guide](https://developers.libra.org/docs/community/contributing) and by viewing our [Code of Conduct](https://developers.libra.org/docs/policies/code-of-conduct). +To begin contributing, [sign the CLA](https://diem.com/en-US/cla-sign/). You can learn more about contributing to the Diem project by reading our [Contribution Guide](https://developers.diem.com/docs/community/contributing) and by viewing our [Code of Conduct](https://developers.diem.com/docs/policies/code-of-conduct). ## Getting Started -### Learn About Libra -* [Welcome](https://developers.libra.org/docs/welcome-to-libra) -* [Libra Protocol: Key Concepts](https://developers.libra.org/docs/libra-protocol) -* [Life of a Transaction](https://developers.libra.org/docs/life-of-a-transaction) +### Learn About Diem +* [Welcome](https://developers.diem.com/docs/welcome-to-diem) +* [Diem Protocol: Key Concepts](https://developers.diem.com/docs/diem-protocol) +* [Life of a Transaction](https://developers.diem.com/docs/life-of-a-transaction) * [JSON-RPC SPEC](json-rpc/json-rpc-spec.md) -### Try Libra Core -* [My First Transaction](https://developers.libra.org/docs/my-first-transaction) -* [Getting Started With Move](https://developers.libra.org/docs/move-overview) +### Try Diem Core +* [My First Transaction](https://developers.diem.com/docs/my-first-transaction) +* [Getting Started With Move](https://developers.diem.com/docs/move-overview) ### Technical Papers -* [The Libra Blockchain](https://developers.libra.org/docs/the-libra-blockchain-paper) -* [Move: A Language With Programmable Resources](https://developers.libra.org/docs/move-paper) -* [State Machine Replication in the Libra Blockchain](https://developers.libra.org/docs/state-machine-replication-paper) +* [The Diem Blockchain](https://developers.diem.com/docs/the-diem-blockchain-paper) +* [Move: A Language With Programmable Resources](https://developers.diem.com/docs/move-paper) +* [State Machine Replication in the Diem Blockchain](https://developers.diem.com/docs/state-machine-replication-paper) ### Blog -* [Libra: The Path Forward](https://developers.libra.org/blog/2019/06/18/the-path-forward/) +* [Diem: The Path Forward](https://developers.diem.com/blog/2019/06/18/the-path-forward/) -### Libra Codebase +### Diem Codebase -* [Libra Core Overview](https://developers.libra.org/docs/libra-core-overview) -* [Admission Control](https://developers.libra.org/docs/crates/admission-control) -* [Bytecode Verifier](https://developers.libra.org/docs/crates/bytecode-verifier) -* [Consensus](https://developers.libra.org/docs/crates/consensus) -* [Crypto](https://developers.libra.org/docs/crates/crypto) -* [Execution](https://developers.libra.org/docs/crates/executor) -* [Mempool](https://developers.libra.org/docs/crates/mempool) -* [Move IR Compiler](https://developers.libra.org/docs/crates/ir-to-bytecode) -* [Move Language](https://developers.libra.org/docs/crates/move-language) -* [Network](https://developers.libra.org/docs/crates/network) -* [Storage](https://developers.libra.org/docs/crates/storage) -* [Virtual Machine](https://developers.libra.org/docs/crates/vm) +* [Diem Core Overview](https://developers.diem.com/docs/diem-core-overview) +* [Admission Control](https://developers.diem.com/docs/crates/admission-control) +* [Bytecode Verifier](https://developers.diem.com/docs/crates/bytecode-verifier) +* [Consensus](https://developers.diem.com/docs/crates/consensus) +* [Crypto](https://developers.diem.com/docs/crates/crypto) +* [Execution](https://developers.diem.com/docs/crates/executor) +* [Mempool](https://developers.diem.com/docs/crates/mempool) +* [Move IR Compiler](https://developers.diem.com/docs/crates/ir-to-bytecode) +* [Move Language](https://developers.diem.com/docs/crates/move-language) +* [Network](https://developers.diem.com/docs/crates/network) +* [Storage](https://developers.diem.com/docs/crates/storage) +* [Virtual Machine](https://developers.diem.com/docs/crates/vm) ## Community -* Join us on the [Libra Discourse](https://community.libra.org). -* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/libra). -* Get the latest updates to our project by signing up for our [newsletter](https://developers.libra.org/newsletter_form). +* Join us on the [Diem Discourse](https://community.diem.com). +* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/diem). +* Get the latest updates to our project by signing up for our [newsletter](https://developers.diem.com/newsletter_form). ## License -Libra Core is licensed as [Apache 2.0](https://github.com/libra/libra/blob/master/LICENSE). +Diem Core is licensed as [Apache 2.0](https://github.com/libra/libra/blob/master/LICENSE). diff --git a/SECURITY.md b/SECURITY.md index 98febf1805..fa4f5c7b4c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,5 +1,5 @@ # Security Policies and Procedures -Please see Libra's -[security policies](https://developers.libra.org/docs/policies/security) and +Please see Diem's +[security policies](https://developers.diem.com/docs/policies/security) and procedures for reporting vulnerabilities. diff --git a/client/libra-dev/Cargo.toml b/client/diem-dev/Cargo.toml similarity index 61% rename from client/libra-dev/Cargo.toml rename to client/diem-dev/Cargo.toml index 26ba58df4d..46adaa3625 100644 --- a/client/libra-dev/Cargo.toml +++ b/client/diem-dev/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-dev" +name = "diem-dev" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra client" +authors = ["Diem Association "] +description = "Diem client" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,9 +14,9 @@ libc = "0.2.80" static_assertions = "1.1.0" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } diff --git a/client/libra-dev/README.md b/client/diem-dev/README.md similarity index 72% rename from client/libra-dev/README.md rename to client/diem-dev/README.md index 52dea90c73..3440eade39 100644 --- a/client/libra-dev/README.md +++ b/client/diem-dev/README.md @@ -1,27 +1,27 @@ -# Exercising New Libra Functionality in Testnet +# Exercising New Diem Functionality in Testnet -Libra has changed a lot since 6/18 and the new whitepaper, but I don't think we've written anything comprehensive about how to exercise all of this new functionality. The linked document attempts to explain the state of the world in Libra master at a level of abstraction appropriate for any client that wants to hit testnet, not a specific client (that is, there will be no Libra CLI or json-rpc snippets here). +Diem has changed a lot since 6/18 and the new whitepaper, but I don't think we've written anything comprehensive about how to exercise all of this new functionality. The linked document attempts to explain the state of the world in Diem master at a level of abstraction appropriate for any client that wants to hit testnet, not a specific client (that is, there will be no Diem CLI or json-rpc snippets here). ## Overview of New Functionality ### VASP Account Roles -In the original Libra design, all accounts were the same. Now, every account has exactly one *role*. There are seven roles in all (`ParentVASP`, `ChildVASP`, `DesignatedDealer`, `Validator`, `ValidatorOperator`, `TreasuryCompliance`, and `AssocRoot`), but we will focus on the client-relevant `ParentVASP` and `ChildVASP` roles here. A VASP (virtual asset service provider) is a regulated wallet. +In the original Diem design, all accounts were the same. Now, every account has exactly one *role*. There are seven roles in all (`ParentVASP`, `ChildVASP`, `DesignatedDealer`, `Validator`, `ValidatorOperator`, `TreasuryCompliance`, and `AssocRoot`), but we will focus on the client-relevant `ParentVASP` and `ChildVASP` roles here. A VASP (virtual asset service provider) is a regulated wallet. * A [ParentVASP](https://github.com/libra/libra/blob/master/language/stdlib/modules/vasp.move#L20;L34) is the unique root account for a particular VASP (i.e., there will be one account of this type per company). A `ParentVASP` carries three key pieces of data: its `human_name`, `base_url` (a URL containing an endpoint to hit for off-chain APIs like exchanging KYC information and the travel rule protocol), and a `compliance_public_key` (ed5519 public key for authenticating signatures on KYC and travel rule payloads). * A [ChildVASP](https://github.com/libra/libra/blob/master/language/stdlib/modules/vasp.move#L40) is a child account of a particular parent VASP. A VASP need not have any child accounts, but child accounts allow more sophisticated a VASP to maintain a structured on-chain presence (e.g., separate cold/warm/hot accounts). A parent VASP can currently have an unbounded number of children (though we'll need to pick a reasonable [limit](https://github.com/libra/libra/issues/3949)). A child knows the account address of its parent VASP. When transacting with a child account, clients should use this to look up its parent, then use the `base_url` and `compliance_public_key` of the parent for off-chain communication. ### Off-Chain Protocols -As mentioned above, some transactions between VASPs must use off-chain protocols for exchanging information. These APIs are implemented by VASPs themselves, not by Libra testnet (though there is an in-progress effort to provide a reference endpoint for testing). However, it's easy enough to mimic the relevant aspects of these protocols for testnet purposes (more on this later). +As mentioned above, some transactions between VASPs must use off-chain protocols for exchanging information. These APIs are implemented by VASPs themselves, not by Diem testnet (though there is an in-progress effort to provide a reference endpoint for testing). However, it's easy enough to mimic the relevant aspects of these protocols for testnet purposes (more on this later). ### Currencies -There are two currencies in testnet: `Coin1` (stablecoin), and `LBR` (synthetic currency that is currently a stub and will be updated once the final composition is determined). At the Move level, these are different generic instantiation of the same `Libra` type (i.e.`Libra`, `Libra`). +There are two currencies in testnet: `XUS` (stablecoin), and `XDX` (synthetic currency that is currently a stub and will be updated once the final composition is determined). At the Move level, these are different generic instantiation of the same `Diem` type (i.e.`Diem`, `Diem`). ### Addresses, Authentication Keys, and Cryptographic Keys -Two major changes in new Libra design are the [shrinking](https://github.com/libra/libra/issues/2764) of account addresses from 32 bytes to 16 bytes and the addition of multisignature authentication keys. A quick primer on how these concepts fit together, since they are very important for clients: +Two major changes in new Diem design are the [shrinking](https://github.com/libra/libra/issues/2764) of account addresses from 32 bytes to 16 bytes and the addition of multisignature authentication keys. A quick primer on how these concepts fit together, since they are very important for clients: * To create a fresh account address, generate an ed25519 keypair `(K_pub, K_priv)`. * Derive a 32 byte authentication key `auth_key = sha3-256(K_pub | 0)`. The `0` is a signature scheme identifier where `0` means single-signature and `1` means multisig. @@ -29,13 +29,13 @@ Two major changes in new Libra design are the [shrinking](https://github.com/lib * The account address is the last 16 bytes of `auth_key` * The first 16 bytes of `auth_key` is the “auth key prefix”. Any transaction that creates an account needs both an account address and an auth key prefix, but a transaction that is sending funds to an existing account needs only the address. * Creating a `K`-of-`N` [multisig](https://github.com/libra/libra/blob/master/crypto/crypto/src/multi_ed25519.rs) authentication key is similar: generate `N` ed25519 public keys, then compute `auth_key = ( | K | 1)`. Derive an address and an auth key prefix as described above. -* Libra supports key rotation via changing the `auth_key` stored under an account. The address associated with an account never changes. +* Diem supports key rotation via changing the `auth_key` stored under an account. The address associated with an account never changes. ## Exercising New Functionality in Testnet ### Creating accounts and minting with the faucet -As in the original Libra, testnet has a faucet service for creating accounts and giving money to existing accounts. There are three important changes from the original faucet: +As in the original Diem, testnet has a faucet service for creating accounts and giving money to existing accounts. There are three important changes from the original faucet: * The faucet now [needs](https://github.com/libra/libra/pull/3972) one of the currency codes above * The faucet can accept either a 16 byte address (for an existing account), a 32 byte account authentication key (for an account that does not yet exist and should be created by the faucet). Previously, account addresses and authentication keys were both 32 byte values, but account addresses have [shrunk](https://github.com/libra/libra/issues/2764). @@ -52,7 +52,7 @@ Transactions are mostly unchanged from the original design. Two notable differen Payments can be sent using [this](https://github.com/libra/libra/blob/master/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move) transaction script. There are a few changes: -* The script requires a generic type parameter `Token` specifying the currency to be transferred. The sending and receiving account must both have a balance in this currency. A transaction that attempts to send (e.g.) `LBR` to an account that doesn’t have an `LBR` balance will abort. +* The script requires a generic type parameter `Token` specifying the currency to be transferred. The sending and receiving account must both have a balance in this currency. A transaction that attempts to send (e.g.) `XDX` to an account that doesn’t have an `XDX` balance will abort. * The script has a `metadata` parameter that accepts arbitrary binary data. For most transactions, the metadata should be the subaddress of the VASP customer receiving the payment. The contents of `metadata` are emitted in payment events, but are not otherwise inspected on-chain (so using empty or dummy `metadata` is just fine for testing). * The script has a `metadata_signature` parameter used for dual attestation in the travel rule protocol (see below). * Sending a payment to an address that does not exist will abort (*not* create a new account at that address). @@ -67,7 +67,7 @@ Each newly created account accepts at least one currency, which as specified as ### Dual Attestation/Travel Rule Protocol -In Libra mainnet every payment transaction between two **distinct **VASP accounts (parent <-> child and child <-> child within the same VASP are exempt) over a certain threshold (1000 LBR, for now) must perform dual attestation in order to comply with the travel rule. "Dual attestation" is a fancy way of saying: +In Diem mainnet every payment transaction between two **distinct **VASP accounts (parent <-> child and child <-> child within the same VASP are exempt) over a certain threshold (1000 XDX, for now) must perform dual attestation in order to comply with the travel rule. "Dual attestation" is a fancy way of saying: * The payer must send the payee some data * The payee must sign the data with its `compliance_public_key` @@ -82,6 +82,6 @@ Every parent VASP created by the faucet has a dummy `base_url` and `compliance_ * `amount`: number of coins to send. Encoding: LCS `u64` * `reference_id`: an identifier for the payment in the off-chain protocol. This is not inspected on-chain, so dummy value suffices for testing. Encoding: LCS `[u8;12]` -The payee VASP should sign the [LCS](https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/index.html)-encoded (see types above) message `reference_id | payer_vasp_address | amount | @@$$LIBRA_ATTEST$$@@`. to produce a `payee_signature`. The `@@$$LIBRA_ATTEST$$@@` part is a domain separator intended to prevent misusing a different signature from the same key (e.g., interpreting a KYC signature as a travel rule signature). +The payee VASP should sign the [LCS](https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/index.html)-encoded (see types above) message `reference_id | payer_vasp_address | amount | @@$$DIEM_ATTEST$$@@`. to produce a `payee_signature`. The `@@$$DIEM_ATTEST$$@@` part is a domain separator intended to prevent misusing a different signature from the same key (e.g., interpreting a KYC signature as a travel rule signature). Finally, send a transaction from payer_vasp_address using the payment [script](https://github.com/libra/libra/blob/master/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move) mentioned above with `payee = payee_vasp_address, amount = amount, metadata = reference_id, metadata_signature = payee_signature`. diff --git a/client/libra-dev/build.rs b/client/diem-dev/build.rs similarity index 65% rename from client/libra-dev/build.rs rename to client/diem-dev/build.rs index b80f05d781..aa2d500523 100644 --- a/client/libra-dev/build.rs +++ b/client/diem-dev/build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bindgen::EnumVariation; @@ -20,18 +20,18 @@ fn main() { .default_enum_style(EnumVariation::Rust { non_exhaustive: false, }) - .whitelist_type("LibraStatus") - .whitelist_type("LibraP2PTransferTransactionArgument") - .whitelist_type("LibraTransactionPayload") - .whitelist_type("LibraRawTransaction") - .whitelist_type("LibraSignedTransaction") + .whitelist_type("DiemStatus") + .whitelist_type("DiemP2PTransferTransactionArgument") + .whitelist_type("DiemTransactionPayload") + .whitelist_type("DiemRawTransaction") + .whitelist_type("DiemSignedTransaction") .whitelist_type("TransactionType") - .whitelist_type("LibraAccountKey") - .whitelist_var("LIBRA_PUBKEY_SIZE") - .whitelist_var("LIBRA_PRIVKEY_SIZE") - .whitelist_var("LIBRA_AUTHKEY_SIZE") - .whitelist_var("LIBRA_ADDRESS_SIZE") - .whitelist_var("LIBRA_SIGNATURE_SIZE") + .whitelist_type("DiemAccountKey") + .whitelist_var("DIEM_PUBKEY_SIZE") + .whitelist_var("DIEM_PRIVKEY_SIZE") + .whitelist_var("DIEM_AUTHKEY_SIZE") + .whitelist_var("DIEM_ADDRESS_SIZE") + .whitelist_var("DIEM_SIGNATURE_SIZE") .generate() // Unwrap the Result and panic on failure. .expect("Unable to generate bindings."); diff --git a/client/libra-dev/include/data.h b/client/diem-dev/include/data.h similarity index 64% rename from client/libra-dev/include/data.h rename to client/diem-dev/include/data.h index 01b86b91a4..02aaab224c 100644 --- a/client/libra-dev/include/data.h +++ b/client/diem-dev/include/data.h @@ -1,5 +1,5 @@ -#ifndef LIBRA_DEV_H -#define LIBRA_DEV_H +#ifndef DIEM_DEV_H +#define DIEM_DEV_H #ifdef __cplusplus extern "C" { @@ -10,21 +10,21 @@ extern "C" { #include #include -#define LIBRA_PUBKEY_SIZE 32 -#define LIBRA_PRIVKEY_SIZE 32 -#define LIBRA_AUTHKEY_SIZE 32 -#define LIBRA_SIGNATURE_SIZE 64 -#define LIBRA_ADDRESS_SIZE 16 +#define DIEM_PUBKEY_SIZE 32 +#define DIEM_PRIVKEY_SIZE 32 +#define DIEM_AUTHKEY_SIZE 32 +#define DIEM_SIGNATURE_SIZE 64 +#define DIEM_ADDRESS_SIZE 16 -enum LibraStatus { +enum DiemStatus { Ok = 0, InvalidArgument = -1, InternalError = -255, }; -struct LibraP2PTransferTransactionArgument { +struct DiemP2PTransferTransactionArgument { uint64_t value; - uint8_t address[LIBRA_ADDRESS_SIZE]; + uint8_t address[DIEM_ADDRESS_SIZE]; const uint8_t* metadata_bytes; size_t metadata_len; const uint8_t* metadata_signature_bytes; @@ -37,38 +37,38 @@ enum TransactionType { Unknown = -1, }; -struct LibraTransactionPayload { +struct DiemTransactionPayload { enum TransactionType txn_type; - struct LibraP2PTransferTransactionArgument args; + struct DiemP2PTransferTransactionArgument args; }; -struct LibraRawTransaction { - uint8_t sender[LIBRA_ADDRESS_SIZE]; +struct DiemRawTransaction { + uint8_t sender[DIEM_ADDRESS_SIZE]; uint64_t sequence_number; - struct LibraTransactionPayload payload; + struct DiemTransactionPayload payload; uint64_t max_gas_amount; uint64_t gas_unit_price; uint64_t expiration_timestamp_secs; uint8_t chain_id; }; -struct LibraSignedTransaction { - struct LibraRawTransaction raw_txn; - uint8_t public_key[LIBRA_PUBKEY_SIZE]; - uint8_t signature[LIBRA_SIGNATURE_SIZE]; +struct DiemSignedTransaction { + struct DiemRawTransaction raw_txn; + uint8_t public_key[DIEM_PUBKEY_SIZE]; + uint8_t signature[DIEM_SIGNATURE_SIZE]; }; -struct LibraAccountKey { - uint8_t address[LIBRA_ADDRESS_SIZE]; - uint8_t private_key[LIBRA_PRIVKEY_SIZE]; - uint8_t public_key[LIBRA_PUBKEY_SIZE]; +struct DiemAccountKey { + uint8_t address[DIEM_ADDRESS_SIZE]; + uint8_t private_key[DIEM_PRIVKEY_SIZE]; + uint8_t public_key[DIEM_PUBKEY_SIZE]; }; /*! * Get serialized signed transaction from a list of transaction parameters * * To get the serialized transaction in a memory safe manner, the client needs to pass in a pointer to a pointer to the allocated memory in rust - * and call free on the memory address with `libra_free_bytes_buffer`. + * and call free on the memory address with `diem_free_bytes_buffer`. * @param[in] sender_private_key is sender's private key * @param[in] sequence is the sequence number of this transaction corresponding to sender's account. * @param[in] max_gas_amount is the maximal total gas specified by wallet to spend for this transaction. @@ -78,16 +78,16 @@ struct LibraAccountKey { * @param[in] chain_id is the chain id for this Transaction. * @param[in] script_bytes is the script bytes for given transaction. * @param[in] script_len is the length of script_bytes array. - * @param[out] ptr_buf is the pointer that will be filled with the memory address of the transaction allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using libra_free_bytes_buffer + * @param[out] ptr_buf is the pointer that will be filled with the memory address of the transaction allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using diem_free_bytes_buffer * @param[out] ptr_len is the length of the signed transaction memory buffer. */ -enum LibraStatus libra_SignedTransactionBytes_from(const uint8_t sender_private_key[LIBRA_PRIVKEY_SIZE], uint64_t sequence, uint64_t max_gas_amount, uint64_t gas_unit_price, const char* gas_identifier, uint64_t expiration_time_secs, uint8_t chain_id, const uint8_t *script_bytes, size_t script_len, uint8_t **ptr_buf, size_t *ptr_len); +enum DiemStatus diem_SignedTransactionBytes_from(const uint8_t sender_private_key[DIEM_PRIVKEY_SIZE], uint64_t sequence, uint64_t max_gas_amount, uint64_t gas_unit_price, const char* gas_identifier, uint64_t expiration_time_secs, uint8_t chain_id, const uint8_t *script_bytes, size_t script_len, uint8_t **ptr_buf, size_t *ptr_len); /*! * Get script bytes for a P2P transaction * * To get the serialized script in a memory safe manner, the client needs to pass in a pointer to a pointer to the allocated memory in rust - * and call free on the memory address with `libra_free_bytes_buffer`. + * and call free on the memory address with `diem_free_bytes_buffer`. * @param[in] receiver is the receiver's address. * @param[in] identifier is the identifier of the coin to be sent. * @param[in] num_coins is the amount of money to be sent. @@ -95,58 +95,58 @@ enum LibraStatus libra_SignedTransactionBytes_from(const uint8_t sender_private_ * @param[in] metadata_len is the length of metadata_bytes array. * @param[in] metadata_signature_bytes is the metadata signature bytes for given transaction. * @param[in] metadata_signature_len is the length of metadata_signature_bytes array. - * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using libra_free_bytes_buffer + * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using diem_free_bytes_buffer * @param[out] ptr_len is the length of the script memory buffer. */ -enum LibraStatus libra_TransactionP2PScript_from(const uint8_t receiver[LIBRA_ADDRESS_SIZE], const char* identifier, uint64_t num_coins, const uint8_t* metadata_bytes, size_t metadata_len, const uint8_t* metadata_signature_bytes, size_t metadata_signature_len, uint8_t **ptr_buf, size_t *ptr_len); +enum DiemStatus diem_TransactionP2PScript_from(const uint8_t receiver[DIEM_ADDRESS_SIZE], const char* identifier, uint64_t num_coins, const uint8_t* metadata_bytes, size_t metadata_len, const uint8_t* metadata_signature_bytes, size_t metadata_signature_len, uint8_t **ptr_buf, size_t *ptr_len); /*! * Get script bytes for add currency to account transaction * * To get the serialized script in a memory safe manner, the client needs to pass in a pointer to a pointer to the allocated memory in rust - * and call free on the memory address with `libra_free_bytes_buffer`. + * and call free on the memory address with `diem_free_bytes_buffer`. * @param[in] identifier is the identifier of the coin to be sent. - * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using libra_free_bytes_buffer + * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using diem_free_bytes_buffer * @param[out] ptr_len is the length of the script memory buffer. */ -enum LibraStatus libra_TransactionAddCurrencyScript_from(const char* identifier, uint8_t **ptr_buf, size_t *ptr_len); +enum DiemStatus diem_TransactionAddCurrencyScript_from(const char* identifier, uint8_t **ptr_buf, size_t *ptr_len); /*! * Get script bytes for rotating base url of VASP * Encode a program that rotates `vasp_root_addr`'s base URL to `new_url` and compliance public key to `new_key`. * * To get the serialized script in a memory safe manner, the client needs to pass in a pointer to a pointer to the allocated memory in rust - * and call free on the memory address with `libra_free_bytes_buffer`. + * and call free on the memory address with `diem_free_bytes_buffer`. * @param[in] new_url_bytes is the bytes of new base URL for the VASP. * @param[in] new_url_len is the length of new_key_bytes array. * @param[in] new_key_bytes is the array that contains new key for the VASP. - * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using libra_free_bytes_buffer + * @param[out] ptr_buf is the pointer that will be filled with the memory address of the script allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using diem_free_bytes_buffer * @param[out] ptr_len is the length of the script memory buffer. */ -enum LibraStatus libra_TransactionRotateDualAttestationInfoScript_from(const uint8_t* new_url_bytes, size_t new_url_len, const uint8_t new_key_bytes[LIBRA_PUBKEY_SIZE], uint8_t **ptr_buf, size_t *ptr_len); +enum DiemStatus diem_TransactionRotateDualAttestationInfoScript_from(const uint8_t* new_url_bytes, size_t new_url_len, const uint8_t new_key_bytes[DIEM_PUBKEY_SIZE], uint8_t **ptr_buf, size_t *ptr_len); /*! * Function to free the allocation memory in rust for bytes * @param buf is the pointer to the bytes allocated in rust, and needs to be freed from client side */ -void libra_free_bytes_buffer(const uint8_t* buf); +void diem_free_bytes_buffer(const uint8_t* buf); /*! - * Decode LibraSignedTransaction from bytes in SignedTransaction proto. + * Decode DiemSignedTransaction from bytes in SignedTransaction proto. * * @param[in] buf contains encoded bytes of txn_bytes * @param[in] len is the length of the signed transaction memory buffer. - * @param[out] caller allocated LibraSignedTransaction to write into. + * @param[out] caller allocated DiemSignedTransaction to write into. * - * @returns status code, one of LibraAPIStatus + * @returns status code, one of DiemAPIStatus */ -enum LibraStatus libra_LibraSignedTransaction_from(const uint8_t *buf, size_t len, struct LibraSignedTransaction *out); +enum DiemStatus diem_DiemSignedTransaction_from(const uint8_t *buf, size_t len, struct DiemSignedTransaction *out); /*! * Get serialized raw transaction from a list of transaction parameters * * To get the serialized raw transaction in a memory safe manner, the client needs to pass in a pointer to a pointer to the allocated memory in rust - * and call free on the memory address with `libra_free_bytes_buffer`. + * and call free on the memory address with `diem_free_bytes_buffer`. * @param[in] sender is the sender's address * @param[in] receiver is the receiver's address * @param[in] sequence is the sequence number of this transaction corresponding to sender's account. @@ -157,27 +157,27 @@ enum LibraStatus libra_LibraSignedTransaction_from(const uint8_t *buf, size_t le * @param[in] chain_id is the chain id for this Transaction. * @param[in] metadata_bytes is the metadata bytes for given transaction. * @param[in] metadata_len is the length of metadata_bytes array. - * @param[out] buf is the pointer that will be filled with the memory address of the transaction allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using libra_free_bytes_buffer + * @param[out] buf is the pointer that will be filled with the memory address of the transaction allocated in rust. User takes ownership of pointer returned by *buf, which needs to be freed using diem_free_bytes_buffer * @param[out] len is the length of the raw transaction memory buffer. */ -enum LibraStatus libra_RawTransactionBytes_from(const uint8_t sender[LIBRA_ADDRESS_SIZE], const uint8_t receiver[LIBRA_ADDRESS_SIZE], uint64_t sequence, uint64_t num_coins, uint64_t max_gas_amount, uint64_t gas_unit_price, uint64_t expiration_time_secs, uint8_t chain_id, const uint8_t* metadata_bytes, size_t metadata_len, const uint8_t* metadata_signature_bytes, size_t metadata_signature_len, uint8_t **buf, size_t *len); +enum DiemStatus diem_RawTransactionBytes_from(const uint8_t sender[DIEM_ADDRESS_SIZE], const uint8_t receiver[DIEM_ADDRESS_SIZE], uint64_t sequence, uint64_t num_coins, uint64_t max_gas_amount, uint64_t gas_unit_price, uint64_t expiration_time_secs, uint8_t chain_id, const uint8_t* metadata_bytes, size_t metadata_len, const uint8_t* metadata_signature_bytes, size_t metadata_signature_len, uint8_t **buf, size_t *len); /*! * This function takes in private key in bytes and return the associated public key and address * @param[in] private_key_bytes is private key in bytes - * @param[out] out is a pointer to LibraAccountKey struct client passed in by initializing an empty LibraAccountKey struct + * @param[out] out is a pointer to DiemAccountKey struct client passed in by initializing an empty DiemAccountKey struct */ -enum LibraStatus libra_LibraAccountKey_from(const uint8_t private_key_bytes[LIBRA_PRIVKEY_SIZE], struct LibraAccountKey *out); +enum DiemStatus diem_DiemAccountKey_from(const uint8_t private_key_bytes[DIEM_PRIVKEY_SIZE], struct DiemAccountKey *out); /*! * This function returns the string message of the most recent error in Rust. * Error will be in UTF8 string encoding and client does not need to free the string from their side. * @returns error message string */ -const char *libra_strerror(); +const char *diem_strerror(); #ifdef __cplusplus }; #endif -#endif // LIBRA_DEV_H +#endif // DIEM_DEV_H diff --git a/client/libra-dev/src/crypto.rs b/client/diem-dev/src/crypto.rs similarity index 56% rename from client/libra-dev/src/crypto.rs rename to client/diem-dev/src/crypto.rs index 34aa432236..487937749c 100644 --- a/client/libra-dev/src/crypto.rs +++ b/client/diem-dev/src/crypto.rs @@ -1,27 +1,27 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ error::*, - interface::{LibraAccountKey, LibraStatus}, + interface::{DiemAccountKey, DiemStatus}, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, ED25519_PRIVATE_KEY_LENGTH}, PrivateKey, }; -use libra_types::account_address; +use diem_types::account_address; use std::{convert::TryFrom, slice}; /// Takes in private key in bytes and return the associated public key and address #[no_mangle] -pub unsafe extern "C" fn libra_LibraAccountKey_from( +pub unsafe extern "C" fn diem_DiemAccountKey_from( private_key_bytes: *const u8, - out: *mut LibraAccountKey, -) -> LibraStatus { + out: *mut DiemAccountKey, +) -> DiemStatus { clear_error(); if private_key_bytes.is_null() { update_last_error("private_key_bytes parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let private_key_buf: &[u8] = @@ -31,37 +31,37 @@ pub unsafe extern "C" fn libra_LibraAccountKey_from( Ok(result) => result, Err(e) => { update_last_error(format!("Invalid private key bytes: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; let public_key = private_key.public_key(); let address = account_address::from_public_key(&public_key); - *out = LibraAccountKey { + *out = DiemAccountKey { address: address.into(), private_key: private_key.to_bytes(), public_key: public_key.to_bytes(), }; - LibraStatus::Ok + DiemStatus::Ok } -/// Generate a private key, then get LibraAccount +/// Generate a private key, then get DiemAccount #[test] -fn test_libra_account_from() { - use libra_crypto::Uniform; - use libra_types::account_address::{self, AccountAddress}; +fn test_diem_account_from() { + use diem_crypto::Uniform; + use diem_types::account_address::{self, AccountAddress}; let private_key = Ed25519PrivateKey::generate_for_testing(); - let mut libra_account = LibraAccountKey::default(); + let mut diem_account = DiemAccountKey::default(); let result = - unsafe { libra_LibraAccountKey_from(private_key.to_bytes().as_ptr(), &mut libra_account) }; - assert_eq!(result, LibraStatus::Ok); + unsafe { diem_DiemAccountKey_from(private_key.to_bytes().as_ptr(), &mut diem_account) }; + assert_eq!(result, DiemStatus::Ok); let public_key = private_key.public_key(); let address = account_address::from_public_key(&public_key); - assert_eq!(libra_account.public_key, public_key.to_bytes()); - assert_eq!(libra_account.private_key, private_key.to_bytes()); - assert_eq!(AccountAddress::new(libra_account.address), address); + assert_eq!(diem_account.public_key, public_key.to_bytes()); + assert_eq!(diem_account.private_key, private_key.to_bytes()); + assert_eq!(AccountAddress::new(diem_account.address), address); } diff --git a/client/libra-dev/src/error.rs b/client/diem-dev/src/error.rs similarity index 92% rename from client/libra-dev/src/error.rs rename to client/diem-dev/src/error.rs index 3379af8bae..00d2aba0e7 100644 --- a/client/libra-dev/src/error.rs +++ b/client/diem-dev/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{cell::RefCell, cmp::min, os::raw::c_char}; @@ -36,6 +36,6 @@ pub fn clear_error() { /// thread that called the API function which got an error. The returned /// string pointer is only valid until the next API call. Callers should not /// store it or use it past then. -pub unsafe extern "C" fn libra_strerror() -> *const c_char { +pub unsafe extern "C" fn diem_strerror() -> *const c_char { LAST_ERROR.with(|prev| prev.borrow().as_ptr().cast()) } diff --git a/client/libra-dev/src/interface.rs b/client/diem-dev/src/interface.rs similarity index 81% rename from client/libra-dev/src/interface.rs rename to client/diem-dev/src/interface.rs index 16634793fc..650b441ae9 100644 --- a/client/libra-dev/src/interface.rs +++ b/client/diem-dev/src/interface.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(non_upper_case_globals)] diff --git a/client/diem-dev/src/lib.rs b/client/diem-dev/src/lib.rs new file mode 100644 index 0000000000..faf019725a --- /dev/null +++ b/client/diem-dev/src/lib.rs @@ -0,0 +1,21 @@ +// Copyright (c) The Diem Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(clippy::missing_safety_doc)] + +pub mod crypto; +pub mod error; +mod interface; +pub mod transaction; + +use crate::interface::{DIEM_ADDRESS_SIZE, DIEM_AUTHKEY_SIZE, DIEM_PRIVKEY_SIZE, DIEM_PUBKEY_SIZE}; +use diem_crypto::ed25519::{ED25519_PRIVATE_KEY_LENGTH, ED25519_PUBLIC_KEY_LENGTH}; +use diem_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; + +static_assertions::const_assert_eq!(DIEM_PUBKEY_SIZE, ED25519_PUBLIC_KEY_LENGTH as u32); +static_assertions::const_assert_eq!(DIEM_PRIVKEY_SIZE, ED25519_PRIVATE_KEY_LENGTH as u32); +static_assertions::const_assert_eq!(DIEM_AUTHKEY_SIZE, AuthenticationKey::LENGTH as u32); +static_assertions::const_assert_eq!(DIEM_ADDRESS_SIZE, AccountAddress::LENGTH as u32); diff --git a/client/libra-dev/src/transaction.rs b/client/diem-dev/src/transaction.rs similarity index 83% rename from client/libra-dev/src/transaction.rs rename to client/diem-dev/src/transaction.rs index 08dc634eb0..51335c3eb7 100644 --- a/client/libra-dev/src/transaction.rs +++ b/client/diem-dev/src/transaction.rs @@ -1,31 +1,28 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ error::*, interface::{ - LibraP2PTransferTransactionArgument, LibraRawTransaction, LibraSignedTransaction, - LibraStatus, LibraTransactionPayload, TransactionType, LIBRA_PUBKEY_SIZE, - LIBRA_SIGNATURE_SIZE, + DiemP2PTransferTransactionArgument, DiemRawTransaction, DiemSignedTransaction, DiemStatus, + DiemTransactionPayload, TransactionType, DIEM_PUBKEY_SIZE, DIEM_SIGNATURE_SIZE, }, }; -use lcs::{from_bytes, to_bytes}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature, ED25519_PUBLIC_KEY_LENGTH}, test_utils::KeyPair, PrivateKey, }; -use libra_types::{ +use diem_types::{ account_address::{self, AccountAddress}, - account_config::{ - coin1_tmp_tag, from_currency_code_string, type_tag_for_currency_code, COIN1_NAME, - }, + account_config::{from_currency_code_string, type_tag_for_currency_code, xus_tag, XUS_NAME}, chain_id::ChainId, transaction::{ authenticator::AuthenticationKey, helpers::TransactionSigner, RawTransaction, Script, SignedTransaction, TransactionArgument, TransactionPayload, }, }; +use lcs::{from_bytes, to_bytes}; use std::{convert::TryFrom, ffi::CStr, slice}; use transaction_builder::{ encode_add_currency_to_account_script, encode_peer_to_peer_with_metadata_script, @@ -33,7 +30,7 @@ use transaction_builder::{ }; #[no_mangle] -pub unsafe extern "C" fn libra_SignedTransactionBytes_from( +pub unsafe extern "C" fn diem_SignedTransactionBytes_from( sender_private_key_bytes: *const u8, sequence: u64, max_gas_amount: u64, @@ -45,12 +42,12 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( script_len: usize, ptr_buf: *mut *mut u8, ptr_len: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); if sender_private_key_bytes.is_null() { update_last_error("sender_private_key_bytes parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let private_key_buf: &[u8] = slice::from_raw_parts(sender_private_key_bytes, Ed25519PrivateKey::LENGTH); @@ -58,13 +55,13 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( Ok(result) => result, Err(e) => { update_last_error(format!("Invalid private key bytes: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; if script_bytes.is_null() { update_last_error("script_bytes parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let script_buf: &[u8] = slice::from_raw_parts(script_bytes, script_len); @@ -72,7 +69,7 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( Ok(result) => result, Err(e) => { update_last_error(format!("Invalid script bytes: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -99,7 +96,7 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( Ok(result) => result, Err(e) => { update_last_error(format!("Error signing transaction: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -110,7 +107,7 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( "Error serializing signed transaction: {}", e.to_string() )); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; let txn_buf: *mut u8 = libc::malloc(signed_txn_bytes.len()).cast(); @@ -119,11 +116,11 @@ pub unsafe extern "C" fn libra_SignedTransactionBytes_from( *ptr_buf = txn_buf; *ptr_len = signed_txn_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_TransactionP2PScript_from( +pub unsafe extern "C" fn diem_TransactionP2PScript_from( receiver: *const u8, identifier: *const i8, num_coins: u64, @@ -133,12 +130,12 @@ pub unsafe extern "C" fn libra_TransactionP2PScript_from( metadata_signature_len: usize, ptr_buf: *mut *mut u8, ptr_len: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); if receiver.is_null() { update_last_error("receiver parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let receiver_buf = slice::from_raw_parts(receiver, AccountAddress::LENGTH); let receiver_address = match AccountAddress::try_from(receiver_buf) { @@ -148,7 +145,7 @@ pub unsafe extern "C" fn libra_TransactionP2PScript_from( "Invalid receiver account address: {}", e.to_string() )); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -172,7 +169,7 @@ pub unsafe extern "C" fn libra_TransactionP2PScript_from( Ok(coin_ident) => type_tag_for_currency_code(coin_ident), Err(e) => { update_last_error(format!("Invalid coin identifier: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -188,7 +185,7 @@ pub unsafe extern "C" fn libra_TransactionP2PScript_from( Ok(result) => result, Err(e) => { update_last_error(format!("Error serializing P2P Script: {}", e.to_string())); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; @@ -198,15 +195,15 @@ pub unsafe extern "C" fn libra_TransactionP2PScript_from( *ptr_buf = script_buf; *ptr_len = script_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_TransactionAddCurrencyScript_from( +pub unsafe extern "C" fn diem_TransactionAddCurrencyScript_from( identifier: *const i8, ptr_buf: *mut *mut u8, ptr_len: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); let coin_type_tag = match from_currency_code_string( @@ -218,7 +215,7 @@ pub unsafe extern "C" fn libra_TransactionAddCurrencyScript_from( Ok(coin_ident) => type_tag_for_currency_code(coin_ident), Err(e) => { update_last_error(format!("Invalid coin identifier: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -231,7 +228,7 @@ pub unsafe extern "C" fn libra_TransactionAddCurrencyScript_from( "Error serializing add currency to account Script: {}", e.to_string() )); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; @@ -241,17 +238,17 @@ pub unsafe extern "C" fn libra_TransactionAddCurrencyScript_from( *ptr_buf = script_buf; *ptr_len = script_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_TransactionRotateDualAttestationInfoScript_from( +pub unsafe extern "C" fn diem_TransactionRotateDualAttestationInfoScript_from( new_url_bytes: *const u8, new_url_len: usize, new_key_bytes: *const u8, ptr_buf: *mut *mut u8, ptr_len: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); let new_url = if new_url_bytes.is_null() { @@ -262,7 +259,7 @@ pub unsafe extern "C" fn libra_TransactionRotateDualAttestationInfoScript_from( if new_key_bytes.is_null() { update_last_error("new_key_bytes parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let new_key_buf: &[u8] = slice::from_raw_parts(new_key_bytes, ED25519_PUBLIC_KEY_LENGTH); let new_compliance_public_key = match Ed25519PublicKey::try_from(new_key_buf) { @@ -272,7 +269,7 @@ pub unsafe extern "C" fn libra_TransactionRotateDualAttestationInfoScript_from( "Invalid compliance public key bytes: {}", e.to_string() )); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -288,7 +285,7 @@ pub unsafe extern "C" fn libra_TransactionRotateDualAttestationInfoScript_from( "Error serializing rotate compliance public key Script: {}", e.to_string() )); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; @@ -298,17 +295,17 @@ pub unsafe extern "C" fn libra_TransactionRotateDualAttestationInfoScript_from( *ptr_buf = script_buf; *ptr_len = script_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_free_bytes_buffer(buf: *const u8) { +pub unsafe extern "C" fn diem_free_bytes_buffer(buf: *const u8) { assert!(!buf.is_null()); libc::free(buf as *mut libc::c_void); } #[no_mangle] -pub unsafe extern "C" fn libra_RawTransactionBytes_from( +pub unsafe extern "C" fn diem_RawTransactionBytes_from( sender: *const u8, receiver: *const u8, sequence: u64, @@ -323,32 +320,32 @@ pub unsafe extern "C" fn libra_RawTransactionBytes_from( metadata_signature_len: usize, buf: *mut *mut u8, len: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); if sender.is_null() { update_last_error("sender parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let sender_buf = slice::from_raw_parts(sender, AccountAddress::LENGTH); let sender_address = match AccountAddress::try_from(sender_buf) { Ok(result) => result, Err(e) => { update_last_error(format!("Invalid sender address: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; if receiver.is_null() { update_last_error("receiver parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let receiver_buf = slice::from_raw_parts(receiver, AccountAddress::LENGTH); let receiver_address = match AccountAddress::try_from(receiver_buf) { Ok(result) => result, Err(e) => { update_last_error(format!("Invalid receiver address: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -364,7 +361,7 @@ pub unsafe extern "C" fn libra_RawTransactionBytes_from( }; let program = encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), receiver_address, num_coins, metadata, @@ -377,7 +374,7 @@ pub unsafe extern "C" fn libra_RawTransactionBytes_from( payload, max_gas_amount, gas_unit_price, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), expiration_timestamp_secs, ChainId::new(chain_id), ); @@ -389,7 +386,7 @@ pub unsafe extern "C" fn libra_RawTransactionBytes_from( "Error serializing raw transaction: {}", e.to_string() )); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; @@ -399,11 +396,11 @@ pub unsafe extern "C" fn libra_RawTransactionBytes_from( *buf = txn_buf; *len = raw_txn_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_RawTransaction_sign( +pub unsafe extern "C" fn diem_RawTransaction_sign( buf_raw_txn: *const u8, len_raw_txn: usize, buf_public_key: *const u8, @@ -412,11 +409,11 @@ pub unsafe extern "C" fn libra_RawTransaction_sign( len_signature: usize, buf_result: *mut *mut u8, len_result: *mut usize, -) -> LibraStatus { +) -> DiemStatus { clear_error(); if buf_raw_txn.is_null() { update_last_error("buf_raw_txn parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let raw_txn_bytes: &[u8] = slice::from_raw_parts(buf_raw_txn, len_raw_txn); let raw_txn: RawTransaction = match lcs::from_bytes(&raw_txn_bytes) { @@ -426,33 +423,33 @@ pub unsafe extern "C" fn libra_RawTransaction_sign( "Error deserializing raw transaction, invalid raw_txn bytes or length: {}", e.to_string() )); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; if buf_public_key.is_null() { update_last_error("buf_public_key parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let public_key_bytes: &[u8] = slice::from_raw_parts(buf_public_key, len_public_key); let public_key = match Ed25519PublicKey::try_from(public_key_bytes) { Ok(result) => result, Err(e) => { update_last_error(format!("Invalid public key bytes: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; if buf_signature.is_null() { update_last_error("buf_signature parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let signature_bytes: &[u8] = slice::from_raw_parts(buf_signature, len_signature); let signature = match Ed25519Signature::try_from(signature_bytes) { Ok(result) => result, Err(e) => { update_last_error(format!("Invalid signature bytes: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -464,7 +461,7 @@ pub unsafe extern "C" fn libra_RawTransaction_sign( "Error serializing signed transaction: {}", e.to_string() )); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } }; @@ -474,26 +471,26 @@ pub unsafe extern "C" fn libra_RawTransaction_sign( *buf_result = txn_buf; *len_result = signed_txn_bytes.len(); - LibraStatus::Ok + DiemStatus::Ok } #[no_mangle] -pub unsafe extern "C" fn libra_LibraSignedTransaction_from( +pub unsafe extern "C" fn diem_DiemSignedTransaction_from( buf: *const u8, len: usize, - out: *mut LibraSignedTransaction, -) -> LibraStatus { + out: *mut DiemSignedTransaction, +) -> DiemStatus { clear_error(); if buf.is_null() { update_last_error("buf parameter must not be null.".to_string()); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } let buffer = slice::from_raw_parts(buf, len); let signed_txn: SignedTransaction = match lcs::from_bytes(buffer) { Ok(result) => result, Err(e) => { update_last_error(format!("Error deserializing signed transaction, invalid signed transaction bytes or length: {}", e.to_string())); - return LibraStatus::InvalidArgument; + return DiemStatus::InvalidArgument; } }; @@ -505,13 +502,13 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( let expiration_timestamp_secs = signed_txn.expiration_timestamp_secs(); let chain_id = signed_txn.chain_id().id(); // TODO: this will not work with multisig transactions, where both the pubkey and signature - // have different sizes than the ones expected here. We will either need LibraSignedTransaction + // have different sizes than the ones expected here. We will either need DiemSignedTransaction // types for single and multisig authenticators or adapt the type to work with both // authenticators let public_key_bytes = signed_txn.authenticator().public_key_bytes(); let signature_bytes = signed_txn.authenticator().signature_bytes(); - let mut public_key = [0; LIBRA_PUBKEY_SIZE as usize]; - let mut signature = [0; LIBRA_SIGNATURE_SIZE as usize]; + let mut public_key = [0; DIEM_PUBKEY_SIZE as usize]; + let mut signature = [0; DIEM_SIGNATURE_SIZE as usize]; let public_key_bytes = &public_key_bytes[..public_key.len()]; public_key.copy_from_slice(public_key_bytes); @@ -531,9 +528,9 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( [0u8; AuthenticationKey::LENGTH - AccountAddress::LENGTH]; auth_key_prefix_buffer.copy_from_slice(auth_key_prefix.as_slice()); - txn_payload = Some(LibraTransactionPayload { + txn_payload = Some(DiemTransactionPayload { txn_type: TransactionType::PeerToPeer, - args: LibraP2PTransferTransactionArgument { + args: DiemP2PTransferTransactionArgument { value: *amount, address: addr.into(), metadata_bytes: vec![].as_ptr(), @@ -544,7 +541,7 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( }); } else { update_last_error("Fail to decode transaction payload".to_string()); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } } "peer_to_peer_with_metadata_transaction" => { @@ -552,9 +549,9 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( if let [TransactionArgument::Address(addr), TransactionArgument::U64(amount), TransactionArgument::U8Vector(metadata), TransactionArgument::U8Vector(metadata_signature)] = &args[..] { - txn_payload = Some(LibraTransactionPayload { + txn_payload = Some(DiemTransactionPayload { txn_type: TransactionType::PeerToPeer, - args: LibraP2PTransferTransactionArgument { + args: DiemP2PTransferTransactionArgument { value: *amount, address: addr.into(), metadata_bytes: (*Box::into_raw(metadata.clone().into_boxed_slice())) @@ -569,18 +566,18 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( }); } else { update_last_error("Fail to decode transaction payload".to_string()); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } } _ => { update_last_error("Transaction type not supported".to_string()); - return LibraStatus::InternalError; + return DiemStatus::InternalError; } } } let raw_txn = match txn_payload { - Some(payload) => LibraRawTransaction { + Some(payload) => DiemRawTransaction { sender, sequence_number, payload, @@ -590,45 +587,45 @@ pub unsafe extern "C" fn libra_LibraSignedTransaction_from( chain_id, }, None => { - let raw_txn_other = LibraRawTransaction { + let raw_txn_other = DiemRawTransaction { sender, sequence_number, - payload: LibraTransactionPayload { + payload: DiemTransactionPayload { txn_type: TransactionType::Unknown, - args: LibraP2PTransferTransactionArgument::default(), + args: DiemP2PTransferTransactionArgument::default(), }, max_gas_amount, gas_unit_price, expiration_timestamp_secs, chain_id, }; - *out = LibraSignedTransaction { + *out = DiemSignedTransaction { raw_txn: raw_txn_other, public_key, signature, }; - return LibraStatus::Ok; + return DiemStatus::Ok; } }; - *out = LibraSignedTransaction { + *out = DiemSignedTransaction { raw_txn, public_key, signature, }; - LibraStatus::Ok + DiemStatus::Ok } #[cfg(test)] mod test { use super::*; - use lcs::from_bytes; - use libra_crypto::{PrivateKey, SigningKey, Uniform}; - use libra_types::{ - account_config::COIN1_NAME, + use diem_crypto::{PrivateKey, SigningKey, Uniform}; + use diem_types::{ + account_config::XUS_NAME, transaction::{SignedTransaction, TransactionArgument}, }; + use lcs::from_bytes; use move_core_types::language_storage::TypeTag; use std::ffi::CStr; @@ -650,14 +647,14 @@ mod test { let expiration_timestamp_secs = 0; let metadata = vec![1, 2, 3]; let metadata_signature = [0x1; 64].to_vec(); - let coin_ident = std::ffi::CString::new(COIN1_NAME).expect("Invalid ident"); + let coin_ident = std::ffi::CString::new(XUS_NAME).expect("Invalid ident"); let mut script_buf: *mut u8 = std::ptr::null_mut(); let script_buf_ptr = &mut script_buf; let mut script_len: usize = 0; let script_result = unsafe { - libra_TransactionP2PScript_from( + diem_TransactionP2PScript_from( receiver_address.as_ref().as_ptr(), coin_ident.as_ptr(), amount, @@ -669,7 +666,7 @@ mod test { &mut script_len, ) }; - assert_eq!(script_result, LibraStatus::Ok); + assert_eq!(script_result, DiemStatus::Ok); let script_bytes: &[u8] = unsafe { slice::from_raw_parts(script_buf, script_len) }; let _deserialized_script: Script = @@ -680,7 +677,7 @@ mod test { let mut len: usize = 0; let result = unsafe { - libra_SignedTransactionBytes_from( + diem_SignedTransactionBytes_from( private_key_bytes.as_ptr(), sequence, max_gas_amount, @@ -695,7 +692,7 @@ mod test { ) }; - assert_eq!(result, LibraStatus::Ok); + assert_eq!(result, DiemStatus::Ok); let signed_txn_bytes_buf: &[u8] = unsafe { slice::from_raw_parts(buf, len) }; let deserialized_signed_txn: SignedTransaction = @@ -728,9 +725,9 @@ mod test { let mut buf2: *mut u8 = std::ptr::null_mut(); let buf_ptr2 = &mut buf2; let mut len2: usize = 0; - let coin_idnet = std::ffi::CString::new(COIN1_NAME).expect("Invalid ident"); + let coin_idnet = std::ffi::CString::new(XUS_NAME).expect("Invalid ident"); let result2 = unsafe { - libra_SignedTransactionBytes_from( + diem_SignedTransactionBytes_from( private_key_bytes.as_ptr(), sequence, max_gas_amount, @@ -745,7 +742,7 @@ mod test { ) }; - assert_eq!(result2, LibraStatus::Ok); + assert_eq!(result2, DiemStatus::Ok); assert_ne!(buf, buf2); assert_eq!(len, len2); @@ -755,20 +752,20 @@ mod test { } // Test creating add currency to account transaction - let coin_ident_2 = std::ffi::CString::new(COIN1_NAME).expect("Invalid ident"); + let coin_ident_2 = std::ffi::CString::new(XUS_NAME).expect("Invalid ident"); let mut script_buf: *mut u8 = std::ptr::null_mut(); let script_buf_ptr = &mut script_buf; let mut script_len: usize = 0; let script_result = unsafe { - libra_TransactionAddCurrencyScript_from( + diem_TransactionAddCurrencyScript_from( coin_ident_2.as_ptr(), script_buf_ptr, &mut script_len, ) }; - assert_eq!(script_result, LibraStatus::Ok); + assert_eq!(script_result, DiemStatus::Ok); let script_bytes: &[u8] = unsafe { slice::from_raw_parts(script_buf, script_len) }; let _deserialized_script: Script = @@ -779,7 +776,7 @@ mod test { let mut len: usize = 0; let result = unsafe { - libra_SignedTransactionBytes_from( + diem_SignedTransactionBytes_from( private_key_bytes.as_ptr(), sequence, max_gas_amount, @@ -794,7 +791,7 @@ mod test { ) }; - assert_eq!(result, LibraStatus::Ok); + assert_eq!(result, DiemStatus::Ok); let signed_txn_bytes_buf: &[u8] = unsafe { slice::from_raw_parts(buf, len) }; let deserialized_signed_txn: SignedTransaction = @@ -825,9 +822,9 @@ mod test { assert!(deserialized_signed_txn.check_signature().is_ok()); unsafe { - libra_free_bytes_buffer(script_buf); - libra_free_bytes_buffer(buf); - libra_free_bytes_buffer(buf2); + diem_free_bytes_buffer(script_buf); + diem_free_bytes_buffer(buf); + diem_free_bytes_buffer(buf2); }; } @@ -839,14 +836,14 @@ mod test { let amount = 100_000_000; let metadata = vec![1, 2, 3]; let metadata_signature = [0x1; 64].to_vec(); - let coin_ident = std::ffi::CString::new(COIN1_NAME).expect("Invalid ident"); + let coin_ident = std::ffi::CString::new(XUS_NAME).expect("Invalid ident"); let mut script_buf: *mut u8 = std::ptr::null_mut(); let script_buf_ptr = &mut script_buf; let mut script_len: usize = 0; let script_result = unsafe { - libra_TransactionP2PScript_from( + diem_TransactionP2PScript_from( receiver_address.as_ref().as_ptr(), coin_ident.as_ptr(), amount, @@ -859,7 +856,7 @@ mod test { ) }; - assert_eq!(script_result, LibraStatus::Ok); + assert_eq!(script_result, DiemStatus::Ok); let script_bytes: &[u8] = unsafe { slice::from_raw_parts(script_buf, script_len) }; let deserialized_script: Script = @@ -887,28 +884,28 @@ mod test { } unsafe { - libra_free_bytes_buffer(script_buf); + diem_free_bytes_buffer(script_buf); }; } /// Generate a add currency to account script and deserialize #[test] fn test_lcs_add_currency_to_account_transaction_script() { - let coin_ident = std::ffi::CString::new(COIN1_NAME).expect("Invalid ident"); + let coin_ident = std::ffi::CString::new(XUS_NAME).expect("Invalid ident"); let mut script_buf: *mut u8 = std::ptr::null_mut(); let script_buf_ptr = &mut script_buf; let mut script_len: usize = 0; let script_result = unsafe { - libra_TransactionAddCurrencyScript_from( + diem_TransactionAddCurrencyScript_from( coin_ident.as_ptr(), script_buf_ptr, &mut script_len, ) }; - assert_eq!(script_result, LibraStatus::Ok); + assert_eq!(script_result, DiemStatus::Ok); let script_bytes: &[u8] = unsafe { slice::from_raw_parts(script_buf, script_len) }; let deserialized_script: Script = @@ -929,7 +926,7 @@ mod test { } unsafe { - libra_free_bytes_buffer(script_buf); + diem_free_bytes_buffer(script_buf); }; } @@ -945,7 +942,7 @@ mod test { let mut script_len: usize = 0; let script_result = unsafe { - libra_TransactionRotateDualAttestationInfoScript_from( + diem_TransactionRotateDualAttestationInfoScript_from( new_url.as_ptr(), new_url.len(), new_compliance_public_key.to_bytes().as_ptr(), @@ -954,7 +951,7 @@ mod test { ) }; - assert_eq!(script_result, LibraStatus::Ok); + assert_eq!(script_result, DiemStatus::Ok); let script_bytes: &[u8] = unsafe { slice::from_raw_parts(script_buf, script_len) }; let deserialized_script: Script = from_bytes(script_bytes) @@ -972,13 +969,13 @@ mod test { } unsafe { - libra_free_bytes_buffer(script_buf); + diem_free_bytes_buffer(script_buf); }; } /// Generate a Raw Transaction, sign it, then deserialize #[test] - fn test_libra_raw_transaction_bytes_from() { + fn test_diem_raw_transaction_bytes_from() { let private_key = Ed25519PrivateKey::generate_for_testing(); let public_key = private_key.public_key(); @@ -996,7 +993,7 @@ mod test { let mut buf_ptr: *mut u8 = &mut buf; let mut len: usize = 0; unsafe { - libra_RawTransactionBytes_from( + diem_RawTransactionBytes_from( sender_address.as_ref().as_ptr(), receiver_address.as_ref().as_ptr(), sequence, @@ -1025,7 +1022,7 @@ mod test { let mut signed_txn_buf_ptr: *mut u8 = &mut signed_txn_buf; let mut signed_txn_len: usize = 0; unsafe { - libra_RawTransaction_sign( + diem_RawTransaction_sign( raw_txn_bytes.as_ptr(), raw_txn_bytes.len(), public_key.to_bytes().as_ptr(), @@ -1059,14 +1056,14 @@ mod test { // free memory unsafe { - libra_free_bytes_buffer(buf_ptr); - libra_free_bytes_buffer(signed_txn_buf_ptr); + diem_free_bytes_buffer(buf_ptr); + diem_free_bytes_buffer(signed_txn_buf_ptr); }; } /// Generate a Signed Transaction and deserialize #[test] - fn test_libra_signed_transaction_deserialize() { + fn test_diem_signed_transaction_deserialize() { let public_key = Ed25519PrivateKey::generate_for_testing().public_key(); let sender = AccountAddress::random(); let receiver = AccountAddress::random(); @@ -1080,7 +1077,7 @@ mod test { let signature = Ed25519Signature::try_from(&[1u8; Ed25519Signature::LENGTH][..]).unwrap(); let program = encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), receiver, amount, metadata.clone(), @@ -1093,7 +1090,7 @@ mod test { program, max_gas_amount, gas_unit_price, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), expiration_timestamp_secs, ChainId::test(), ), @@ -1102,34 +1099,34 @@ mod test { ); let txn_bytes = lcs::to_bytes(&signed_txn).expect("Unable to serialize SignedTransaction"); - let mut libra_signed_txn = LibraSignedTransaction::default(); + let mut diem_signed_txn = DiemSignedTransaction::default(); let result = unsafe { - libra_LibraSignedTransaction_from( + diem_DiemSignedTransaction_from( txn_bytes.as_ptr(), txn_bytes.len() - 1, // pass in wrong length so that SignedTransaction cannot deserialize - &mut libra_signed_txn, + &mut diem_signed_txn, ) }; - assert_eq!(result, LibraStatus::InvalidArgument); + assert_eq!(result, DiemStatus::InvalidArgument); unsafe { - let error_msg = libra_strerror(); + let error_msg = diem_strerror(); let error_string: &CStr = CStr::from_ptr(error_msg); assert_eq!(error_string.to_str().unwrap(), "Error deserializing signed transaction, invalid signed transaction bytes or length: unexpected end of input"); }; let result = unsafe { - libra_LibraSignedTransaction_from( + diem_DiemSignedTransaction_from( txn_bytes.as_ptr(), txn_bytes.len(), - &mut libra_signed_txn, + &mut diem_signed_txn, ) }; - assert_eq!(result, LibraStatus::Ok); + assert_eq!(result, DiemStatus::Ok); unsafe { - let error_msg = libra_strerror(); + let error_msg = diem_strerror(); let error_string: &CStr = CStr::from_ptr(error_msg); assert_eq!(error_string.to_str().unwrap(), ""); }; @@ -1138,40 +1135,40 @@ mod test { if let TransactionPayload::Script(_script) = payload { assert_eq!( TransactionType::PeerToPeer, - libra_signed_txn.raw_txn.payload.txn_type + diem_signed_txn.raw_txn.payload.txn_type ); - assert_eq!(amount, libra_signed_txn.raw_txn.payload.args.value); + assert_eq!(amount, diem_signed_txn.raw_txn.payload.args.value); let txn_metadata = unsafe { slice::from_raw_parts( - libra_signed_txn.raw_txn.payload.args.metadata_bytes, - libra_signed_txn.raw_txn.payload.args.metadata_len, + diem_signed_txn.raw_txn.payload.args.metadata_bytes, + diem_signed_txn.raw_txn.payload.args.metadata_len, ) }; assert_eq!(metadata, txn_metadata); let txn_metadata_signature = unsafe { slice::from_raw_parts( - libra_signed_txn + diem_signed_txn .raw_txn .payload .args .metadata_signature_bytes, - libra_signed_txn.raw_txn.payload.args.metadata_signature_len, + diem_signed_txn.raw_txn.payload.args.metadata_signature_len, ) }; assert_eq!(metadata_signature, txn_metadata_signature); } - assert_eq!(sender, AccountAddress::new(libra_signed_txn.raw_txn.sender)); - assert_eq!(sequence_number, libra_signed_txn.raw_txn.sequence_number); - assert_eq!(max_gas_amount, libra_signed_txn.raw_txn.max_gas_amount); - assert_eq!(gas_unit_price, libra_signed_txn.raw_txn.gas_unit_price); - assert_eq!(public_key.to_bytes(), libra_signed_txn.public_key); + assert_eq!(sender, AccountAddress::new(diem_signed_txn.raw_txn.sender)); + assert_eq!(sequence_number, diem_signed_txn.raw_txn.sequence_number); + assert_eq!(max_gas_amount, diem_signed_txn.raw_txn.max_gas_amount); + assert_eq!(gas_unit_price, diem_signed_txn.raw_txn.gas_unit_price); + assert_eq!(public_key.to_bytes(), diem_signed_txn.public_key); assert_eq!( signature, - Ed25519Signature::try_from(libra_signed_txn.signature.as_ref()).unwrap() + Ed25519Signature::try_from(diem_signed_txn.signature.as_ref()).unwrap() ); assert_eq!( expiration_timestamp_secs, - libra_signed_txn.raw_txn.expiration_timestamp_secs + diem_signed_txn.raw_txn.expiration_timestamp_secs ); } } diff --git a/client/faucet/Cargo.toml b/client/faucet/Cargo.toml index fc95e4e884..a2633ae83b 100644 --- a/client/faucet/Cargo.toml +++ b/client/faucet/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-faucet" +name = "diem-faucet" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Testnet utility services" +authors = ["Diem Association "] +description = "Diem Testnet utility services" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -21,12 +21,12 @@ warp = "0.2.5" generate-key = { path = "../../config/generate-key", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto/", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-json-rpc-client = { path = "../json-rpc", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto/", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-json-rpc-client = { path = "../json-rpc", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } transaction-builder-generated = { path = "../transaction-builder", version = "0.1.0" } @@ -34,4 +34,4 @@ transaction-builder-generated = { path = "../transaction-builder", version = "0. serde_json = "1.0.60" tempfile = "3.1.0" -libra-config = { path = "../../config", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } diff --git a/client/faucet/src/lib.rs b/client/faucet/src/lib.rs index 66b88e549b..2facc201db 100644 --- a/client/faucet/src/lib.rs +++ b/client/faucet/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This crates provides Faucet service for creating Testnet with simplified on-chain account creation @@ -11,22 +11,22 @@ //! Launch faucet service local and connect to Testnet: //! //! ```bash -//! cargo run -p libra-faucet -- -a 127.0.0.1 -p 8080 -c TESTNET \ -//! -m -s https://testnet.libra.org/v1 +//! cargo run -p diem-faucet -- -a 127.0.0.1 -p 8080 -c TESTNET \ +//! -m -s https://testnet.diem.com/v1 //! ``` //! //! Check help doc for options details: //! //! ```bash -//! cargo run -p libra-faucet -- -h +//! cargo run -p diem-faucet -- -h //! ``` //! //! ## Development //! -//! Test with libra-swarm by add -m option: +//! Test with diem-swarm by add -m option: //! //! ```bash -//! cargo run -p libra-swarm -- -s -l -n 1 -m +//! cargo run -p diem-swarm -- -s -l -n 1 -m //! ``` //! diff --git a/client/faucet/src/main.rs b/client/faucet/src/main.rs index 6979df0c29..532cf0d130 100644 --- a/client/faucet/src/main.rs +++ b/client/faucet/src/main.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_faucet::mint; -use libra_logger::prelude::info; +use diem_faucet::mint; +use diem_logger::prelude::info; use std::fmt; use structopt::StructOpt; use warp::Filter; #[derive(Debug, StructOpt)] #[structopt( - name = "Libra Faucet", - author = "The Libra Association", - about = "Libra Testnet utitlty service for creating test account and minting test coins" + name = "Diem Faucet", + author = "The Diem Association", + about = "Diem Testnet utitlty service for creating test account and minting test coins" )] struct Args { /// Faucet service listen address @@ -20,28 +20,28 @@ struct Args { /// Faucet service listen port #[structopt(short = "p", long, default_value = "80")] pub port: u16, - /// Libra fullnode/validator server URL - #[structopt(short = "s", long, default_value = "https://testnet.libra.org/v1")] + /// Diem fullnode/validator server URL + #[structopt(short = "s", long, default_value = "https://testnet.diem.com/v1")] pub server_url: String, /// Path to the private key for creating test account and minting coins. /// To keep Testnet simple, we used one private key for both treasury compliance account and testnet /// designated dealer account, hence here we only accept one private key. /// To manually generate a keypair, use generate-key: /// `cargo run -p generate-keypair -- -o ` - #[structopt(short = "m", long, default_value = "/opt/libra/etc/mint.key")] + #[structopt(short = "m", long, default_value = "/opt/diem/etc/mint.key")] pub mint_key_file_path: String, /// Chain ID of the network this client is connecting to. /// For mainnet: \"MAINNET\" or 1, testnet: \"TESTNET\" or 2, devnet: \"DEVNET\" or 3, \ /// local swarm: \"TESTING\" or 4 /// Note: Chain ID of 0 is not allowed; Use number if chain id is not predefined. #[structopt(short = "c", long, default_value = "2")] - pub chain_id: libra_types::chain_id::ChainId, + pub chain_id: diem_types::chain_id::ChainId, } #[tokio::main] async fn main() { let args = Args::from_args(); - libra_logger::Logger::new().init(); + diem_logger::Logger::new().init(); let address: std::net::SocketAddr = format!("{}:{}", args.address, args.port) .parse() @@ -90,7 +90,7 @@ fn routes( // POST /mint?amount=25&auth_key=xxx¤cy_code=XXX let route_mint = warp::path::path("mint").and(warp::path::end()).and(mint); - let health = warp::path!("-" / "healthy").map(|| "libra-faucet:ok"); + let health = warp::path!("-" / "healthy").map(|| "diem-faucet:ok"); health.or(route_mint.or(route_root)).boxed() } @@ -124,9 +124,9 @@ impl warp::reject::Reject for ServerInternalError {} #[cfg(test)] mod tests { use crate::routes; - use libra_faucet::mint; - use libra_infallible::RwLock; - use libra_types::{account_address::AccountAddress, transaction::TransactionPayload::Script}; + use diem_faucet::mint; + use diem_infallible::RwLock; + use diem_types::{account_address::AccountAddress, transaction::TransactionPayload::Script}; use std::{collections::HashMap, convert::TryFrom, sync::Arc}; use transaction_builder_generated::stdlib::ScriptCall; use warp::Filter; @@ -140,7 +140,7 @@ mod tests { .to_path_buf(); generate_key::generate_and_save_key(&f); - let chain_id = libra_types::chain_id::ChainId::test(); + let chain_id = diem_types::chain_id::ChainId::test(); let stub = warp::any() .and(warp::body::json()) @@ -148,7 +148,7 @@ mod tests { let resp = handle_request(req, chain_id, Arc::clone(&accounts)); Ok(warp::reply::json(&resp)) }); - let port = libra_config::utils::get_available_port(); + let port = diem_config::utils::get_available_port(); let future = warp::serve(stub).bind(([127, 0, 0, 1], port)); tokio::task::spawn(async move { future.await }); @@ -171,7 +171,7 @@ mod tests { .reply(&filter) .await; assert_eq!(resp.status(), 200); - assert_eq!(resp.body(), "libra-faucet:ok"); + assert_eq!(resp.body(), "diem-faucet:ok"); } #[tokio::test] @@ -190,7 +190,7 @@ mod tests { .method("POST") .path( format!( - "{}?auth_key={}&amount={}¤cy_code=LBR", + "{}?auth_key={}&amount={}¤cy_code=XDX", path, auth_key, amount ) .as_str(), @@ -218,7 +218,7 @@ mod tests { .method("POST") .path( format!( - "/mint?auth_key={}&amount={}¤cy_code=LBR&return_txns=true", + "/mint?auth_key={}&amount={}¤cy_code=XDX&return_txns=true", auth_key, amount ) .as_str(), @@ -226,7 +226,7 @@ mod tests { .reply(&filter) .await; let body = resp.body(); - let txns: Vec = + let txns: Vec = lcs::from_bytes(&hex::decode(body).expect("hex encoded response body")) .expect("valid lcs vec"); assert_eq!(txns.len(), 2); @@ -249,7 +249,7 @@ mod tests { .method("POST") .path( format!( - "/mint?auth_key={}&amount={}¤cy_code=LBR&return_txns=true&is_designated_dealer=true", + "/mint?auth_key={}&amount={}¤cy_code=XDX&return_txns=true&is_designated_dealer=true", auth_key, amount ) .as_str(), @@ -257,7 +257,7 @@ mod tests { .reply(&filter) .await; let body = resp.body(); - let txns: Vec = + let txns: Vec = lcs::from_bytes(&hex::decode(body).expect("hex encoded response body")) .expect("valid lcs vec"); assert_eq!(txns.len(), 2); @@ -279,7 +279,7 @@ mod tests { .method("POST") .path( format!( - "/mint?auth_key={}&amount=1000000¤cy_code=LBR", + "/mint?auth_key={}&amount=1000000¤cy_code=XDX", auth_key ) .as_str(), @@ -300,7 +300,7 @@ mod tests { .method("POST") .path( format!( - "/mint?auth_key={}&amount=1000000¤cy_code=LBR", + "/mint?auth_key={}&amount=1000000¤cy_code=XDX", auth_key ) .as_str(), @@ -315,7 +315,7 @@ mod tests { fn handle_request( req: serde_json::Value, - chain_id: libra_types::chain_id::ChainId, + chain_id: diem_types::chain_id::ChainId, accounts: Arc>>, ) -> serde_json::Value { if let serde_json::Value::Array(reqs) = req { @@ -327,7 +327,7 @@ mod tests { match req["method"].as_str() { Some("submit") => { let raw: &str = req["params"][0].as_str().unwrap(); - let txn: libra_types::transaction::SignedTransaction = + let txn: diem_types::transaction::SignedTransaction = lcs::from_bytes(&hex::decode(raw).unwrap()).unwrap(); assert_eq!(txn.chain_id(), chain_id); if let Script(script) = txn.payload() { @@ -378,9 +378,9 @@ mod tests { serde_json::json!({ "id": id, "jsonrpc": "2.0", - "libra_chain_id": chain_id, - "libra_ledger_timestampusec": 1599670083580598u64, - "libra_ledger_version": 2052770, + "diem_chain_id": chain_id, + "diem_ledger_timestampusec": 1599670083580598u64, + "diem_ledger_version": 2052770, "result": result }) } @@ -411,7 +411,7 @@ mod tests { address, serde_json::json!([{ "amount": amount, - "currency": "LBR" + "currency": "XDX" }]), serde_json::json!({ "type": "parent_vasp", @@ -431,7 +431,7 @@ mod tests { address, serde_json::json!([{ "amount": amount, - "currency": "LBR", + "currency": "XDX", }]), serde_json::json!({ "base_url": "", @@ -440,7 +440,7 @@ mod tests { "human_name": "moneybags", "preburn_balances": [{ "amount": 0, - "currency": "LBR" + "currency": "XDX" }], "type": "designated_dealer", "compliance_key_rotation_events_key": format!("0200000000000000{}", address), diff --git a/client/faucet/src/mint.rs b/client/faucet/src/mint.rs index 182ce8a50d..57916fb24b 100644 --- a/client/faucet/src/mint.rs +++ b/client/faucet/src/mint.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_crypto::traits::SigningKey; -use libra_types::account_config::{ +use diem_crypto::traits::SigningKey; +use diem_types::account_config::{ testnet_dd_account_address, treasury_compliance_account_address, type_tag_for_currency_code, - COIN1_NAME, + XUS_NAME, }; use std::{convert::From, fmt}; #[derive(Debug)] pub enum Response { DDAccountNextSeqNum(u64), - SubmittedTxns(Vec), + SubmittedTxns(Vec), } impl std::fmt::Display for Response { @@ -30,7 +30,7 @@ impl std::fmt::Display for Response { pub struct MintParams { pub amount: u64, pub currency_code: move_core_types::identifier::Identifier, - pub auth_key: libra_types::transaction::authenticator::AuthenticationKey, + pub auth_key: diem_types::transaction::authenticator::AuthenticationKey, pub return_txns: Option, pub is_designated_dealer: Option, } @@ -43,8 +43,8 @@ impl MintParams { fn create_parent_vasp_account_script( &self, seq: u64, - ) -> libra_types::transaction::TransactionPayload { - libra_types::transaction::TransactionPayload::Script( + ) -> diem_types::transaction::TransactionPayload { + diem_types::transaction::TransactionPayload::Script( transaction_builder_generated::stdlib::encode_create_parent_vasp_account_script( self.currency_code(), 0, // sliding nonce @@ -59,8 +59,8 @@ impl MintParams { fn create_designated_dealer_account_script( &self, seq: u64, - ) -> libra_types::transaction::TransactionPayload { - libra_types::transaction::TransactionPayload::Script( + ) -> diem_types::transaction::TransactionPayload { + diem_types::transaction::TransactionPayload::Script( transaction_builder_generated::stdlib::encode_create_designated_dealer_script( self.currency_code(), 0, // sliding nonce @@ -72,8 +72,8 @@ impl MintParams { ) } - fn p2p_script(&self) -> libra_types::transaction::TransactionPayload { - libra_types::transaction::TransactionPayload::Script( + fn p2p_script(&self) -> diem_types::transaction::TransactionPayload { + diem_types::transaction::TransactionPayload::Script( transaction_builder_generated::stdlib::encode_peer_to_peer_with_metadata_script( self.currency_code(), self.receiver(), @@ -84,26 +84,26 @@ impl MintParams { ) } - fn receiver(&self) -> libra_types::account_address::AccountAddress { + fn receiver(&self) -> diem_types::account_address::AccountAddress { self.auth_key.derived_address() } } pub struct Service { - chain_id: libra_types::chain_id::ChainId, - private_key: libra_crypto::ed25519::Ed25519PrivateKey, - client: libra_json_rpc_client::JsonRpcAsyncClient, + chain_id: diem_types::chain_id::ChainId, + private_key: diem_crypto::ed25519::Ed25519PrivateKey, + client: diem_json_rpc_client::JsonRpcAsyncClient, } impl Service { pub fn new( server_url: String, - chain_id: libra_types::chain_id::ChainId, + chain_id: diem_types::chain_id::ChainId, private_key_file: String, ) -> Self { let url = reqwest::Url::parse(server_url.as_str()).expect("invalid server url"); let private_key = generate_key::load_key(private_key_file); - let client = libra_json_rpc_client::JsonRpcAsyncClient::new(url); + let client = diem_json_rpc_client::JsonRpcAsyncClient::new(url); Service { chain_id, private_key, @@ -125,7 +125,7 @@ impl Service { } txns.push(self.create_txn(params.p2p_script(), testnet_dd_account_address(), dd_seq)?); - let mut batch = libra_json_rpc_client::JsonRpcBatch::new(); + let mut batch = diem_json_rpc_client::JsonRpcBatch::new(); for txn in &txns { batch.add_submit_request(txn.clone())?; } @@ -141,18 +141,18 @@ impl Service { fn create_txn( &self, - payload: libra_types::transaction::TransactionPayload, - sender: libra_types::account_address::AccountAddress, + payload: diem_types::transaction::TransactionPayload, + sender: diem_types::account_address::AccountAddress, seq: u64, - ) -> Result { - libra_types::transaction::helpers::create_user_txn( + ) -> Result { + diem_types::transaction::helpers::create_user_txn( self, payload, sender, seq, 1_000_000, 0, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), 30, self.chain_id, ) @@ -160,7 +160,7 @@ impl Service { async fn sequences( &self, - receiver: libra_types::account_address::AccountAddress, + receiver: diem_types::account_address::AccountAddress, ) -> Result<(u64, u64, Option)> { let accounts = vec![ treasury_compliance_account_address(), @@ -199,15 +199,15 @@ impl Service { } } -impl libra_types::transaction::helpers::TransactionSigner for Service { +impl diem_types::transaction::helpers::TransactionSigner for Service { fn sign_txn( &self, - raw_txn: libra_types::transaction::RawTransaction, - ) -> Result { + raw_txn: diem_types::transaction::RawTransaction, + ) -> Result { let signature = self.private_key.sign(&raw_txn); - Ok(libra_types::transaction::SignedTransaction::new( + Ok(diem_types::transaction::SignedTransaction::new( raw_txn, - libra_crypto::ed25519::Ed25519PublicKey::from(&self.private_key), + diem_crypto::ed25519::Ed25519PublicKey::from(&self.private_key), signature, )) } diff --git a/client/json-rpc/Cargo.toml b/client/json-rpc/Cargo.toml index b7616e61c8..5f5fabe9ef 100644 --- a/client/json-rpc/Cargo.toml +++ b/client/json-rpc/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-json-rpc-client" +name = "diem-json-rpc-client" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra JSONRPC client" +authors = ["Diem Association "] +description = "Diem JSONRPC client" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,16 +17,16 @@ serde = { version = "1.0.117", default-features = false } serde_json = "1.0.60" tokio = { version = "0.2.22", features = ["full"] } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-json-rpc-types = { path = "../../json-rpc/types" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-json-rpc-types = { path = "../../json-rpc/types" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] warp = "0.2.5" -libra-config = { path = "../../config", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } [features] diff --git a/client/json-rpc/src/async_client/client.rs b/client/json-rpc/src/async_client/client.rs index 42f3b4c809..a5ed2038e5 100644 --- a/client/json-rpc/src/async_client/client.rs +++ b/client/json-rpc/src/async_client/client.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::async_client::{ defaults, types as jsonrpc, Error, JsonRpcResponse, RetryStrategy, State, WaitForTransactionError, }; -use libra_crypto::hash::CryptoHash; -use libra_types::{ +use diem_crypto::hash::CryptoHash; +use diem_types::{ account_address::AccountAddress, transaction::{SignedTransaction, Transaction}, }; @@ -376,13 +376,13 @@ impl Client { /// in order of given requests: /// /// ```rust - /// use libra_json_rpc_client::async_client::{ + /// use diem_json_rpc_client::async_client::{ /// types as jsonrpc, Client, Error, Request, Response, Retry, /// }; /// use std::convert::{TryInto}; /// /// # async fn doc() -> Result<(), Error> { - /// let client = Client::from_url("http://testnet.libra.org/v1", Retry::default()).unwrap(); + /// let client = Client::from_url("http://testnet.diem.com/v1", Retry::default()).unwrap(); /// let mut res = client /// .batch_send(vec![Request::get_metadata(), Request::get_currencies()]) /// .await?; @@ -499,7 +499,7 @@ impl Client { }; if let Some(state) = self.last_known_state() { - if resp.libra_chain_id != state.chain_id { + if resp.diem_chain_id != state.chain_id { return Err(Error::ChainIdMismatch(resp.clone())); } } diff --git a/client/json-rpc/src/async_client/defaults.rs b/client/json-rpc/src/async_client/defaults.rs index 95b3006da1..368adc737b 100644 --- a/client/json-rpc/src/async_client/defaults.rs +++ b/client/json-rpc/src/async_client/defaults.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::time::Duration; diff --git a/client/json-rpc/src/async_client/error.rs b/client/json-rpc/src/async_client/error.rs index 841371b9ab..6060865816 100644 --- a/client/json-rpc/src/async_client/error.rs +++ b/client/json-rpc/src/async_client/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::async_client::{types as jsonrpc, JsonRpcError, JsonRpcResponse}; diff --git a/client/json-rpc/src/async_client/mod.rs b/client/json-rpc/src/async_client/mod.rs index dd8f03076d..f8282d63bc 100644 --- a/client/json-rpc/src/async_client/mod.rs +++ b/client/json-rpc/src/async_client/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod client; @@ -8,8 +8,8 @@ mod state; pub mod defaults; pub use client::{Client, Request, Response}; +pub use diem_json_rpc_types::{errors::JsonRpcError, proto::types, response::JsonRpcResponse}; pub use error::{Error, UnexpectedError, WaitForTransactionError}; -pub use libra_json_rpc_types::{errors::JsonRpcError, proto::types, response::JsonRpcResponse}; pub use retry::{Retry, RetryStrategy}; pub use state::State; diff --git a/client/json-rpc/src/async_client/retry.rs b/client/json-rpc/src/async_client/retry.rs index 6b2f57c85a..ed75463391 100644 --- a/client/json-rpc/src/async_client/retry.rs +++ b/client/json-rpc/src/async_client/retry.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::async_client::{defaults, Error}; diff --git a/client/json-rpc/src/async_client/state.rs b/client/json-rpc/src/async_client/state.rs index 9c179e5b0b..3a698ecb53 100644 --- a/client/json-rpc/src/async_client/state.rs +++ b/client/json-rpc/src/async_client/state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::async_client::JsonRpcResponse; @@ -13,9 +13,9 @@ pub struct State { impl State { pub fn from_response(resp: &JsonRpcResponse) -> Self { Self { - chain_id: resp.libra_chain_id, - version: resp.libra_ledger_version, - timestamp_usecs: resp.libra_ledger_timestampusec, + chain_id: resp.diem_chain_id, + version: resp.diem_ledger_version, + timestamp_usecs: resp.diem_ledger_timestampusec, } } } diff --git a/client/json-rpc/src/async_client/tests.rs b/client/json-rpc/src/async_client/tests.rs index a67b0d8a78..388d22afd9 100644 --- a/client/json-rpc/src/async_client/tests.rs +++ b/client/json-rpc/src/async_client/tests.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::async_client::{ types as jsonrpc, Client, Error, JsonRpcResponse, Request, Response, Retry, State, WaitForTransactionError, }; -use libra_types::{account_address::AccountAddress, transaction::SignedTransaction}; +use diem_types::{account_address::AccountAddress, transaction::SignedTransaction}; use serde_json::{json, to_value, Value}; use std::{ convert::TryInto, @@ -65,7 +65,7 @@ fn setup_with_server(inouts: Vec<(Value, Value)>) -> Client { assert_eq!(request, req); Ok(warp::reply::json(&response)) }); - let port = libra_config::utils::get_available_port(); + let port = diem_config::utils::get_available_port(); let future = warp::serve(stub).bind(([127, 0, 0, 1], port)); tokio::task::spawn(async move { future.await }); let server_url = format!("http://localhost:{}", port); @@ -98,7 +98,7 @@ async fn test_network_error() { #[tokio::test] async fn test_invalid_http_status() { - let client = Client::from_url("https://testnet.libra.org/unknown", Retry::default()).unwrap(); + let client = Client::from_url("https://testnet.diem.com/unknown", Retry::default()).unwrap(); assert_err!(client.get_metadata().await, Error::InvalidHTTPStatus{..}, false); } @@ -116,9 +116,9 @@ async fn test_invalid_rpc_response() { json!({ "id": 1, "jsonrpc": "1.0", - "libra_chain_id": 4, - "libra_ledger_timestampusec": 12112, - "libra_ledger_version": 1 + "diem_chain_id": 4, + "diem_ledger_timestampusec": 12112, + "diem_ledger_version": 1 }), ); @@ -135,9 +135,9 @@ async fn test_deserialize_result_error() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 4, - "libra_ledger_timestampusec": 12112, - "libra_ledger_version": 1 + "diem_chain_id": 4, + "diem_ledger_timestampusec": 12112, + "diem_ledger_version": 1 }), ); @@ -154,9 +154,9 @@ async fn test_jsonrpc_error() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 4, - "libra_ledger_timestampusec": 12112, - "libra_ledger_version": 1 + "diem_chain_id": 4, + "diem_ledger_timestampusec": 12112, + "diem_ledger_version": 1 }), ); @@ -170,9 +170,9 @@ async fn test_result_not_found() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 4, - "libra_ledger_timestampusec": 12112, - "libra_ledger_version": 1 + "diem_chain_id": 4, + "diem_ledger_timestampusec": 12112, + "diem_ledger_version": 1 }), ); @@ -490,7 +490,7 @@ async fn test_wait_for_transaction() { ]); let expiration_time_secs = (version_timestamp(10) / 1_000_000) as u64; - let txn_hash = "0895ced78e9f10c1351f248b9bda40cc9c8e6d4dbba823e08fe1cfacd582f171"; + let txn_hash = "f55c91fdc36b9246c423258b74eb579a0972a86b3394e2cfdab528a37f18d1f9"; client .wait_for_transaction(&address, seq, expiration_time_secs, txn_hash, None, None) .await @@ -560,7 +560,7 @@ async fn test_wait_for_transaction_error_execution_failed() { ); let expiration_time_secs = (version_timestamp(10) / 1_000_000) as u64; - let txn_hash = "0895ced78e9f10c1351f248b9bda40cc9c8e6d4dbba823e08fe1cfacd582f171"; + let txn_hash = "f55c91fdc36b9246c423258b74eb579a0972a86b3394e2cfdab528a37f18d1f9"; let err = client .wait_for_transaction(&address, seq, expiration_time_secs, txn_hash, None, None) .await; @@ -583,7 +583,7 @@ async fn test_wait_for_transaction_error_txn_expired() { // expiration timestamp is from version 1, older than respond timestamp for version 2 let expiration_time_secs = (version_timestamp(1) / 1_000_000) as u64; - let txn_hash = "0895ced78e9f10c1351f248b9bda40cc9c8e6d4dbba823e08fe1cfacd582f171"; + let txn_hash = "f55c91fdc36b9246c423258b74eb579a0972a86b3394e2cfdab528a37f18d1f9"; let err = client .wait_for_transaction(&address, seq, expiration_time_secs, txn_hash, None, None) .await; @@ -605,7 +605,7 @@ async fn test_wait_for_transaction_error_timeout() { // expiration timestamp is from version 1, older than respond timestamp for version 2 let expiration_time_secs = (version_timestamp(3) / 1_000_000) as u64; - let txn_hash = "0895ced78e9f10c1351f248b9bda40cc9c8e6d4dbba823e08fe1cfacd582f171"; + let txn_hash = "f55c91fdc36b9246c423258b74eb579a0972a86b3394e2cfdab528a37f18d1f9"; let err = client .wait_for_transaction( &address, @@ -635,9 +635,9 @@ async fn test_chain_id_mismatch_error() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 9, - "libra_ledger_timestampusec": 12112, - "libra_ledger_version": 1 + "diem_chain_id": 9, + "diem_ledger_timestampusec": 12112, + "diem_ledger_version": 1 }), ), ]); @@ -694,7 +694,7 @@ async fn test_batch_send_requests_and_response_id_not_matched_error() { .batch_send(vec![Request::get_metadata(), Request::get_currencies()]) .await; - assert_eq!("Err(UnexpectedError(InvalidResponseId(JsonRpcResponse { libra_chain_id: 4, libra_ledger_version: 1, libra_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(Number(2)), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); + assert_eq!("Err(UnexpectedError(InvalidResponseId(JsonRpcResponse { diem_chain_id: 4, diem_ledger_version: 1, diem_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(Number(2)), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); assert_err!(err, Error::UnexpectedError { .. }, true); } @@ -715,7 +715,7 @@ async fn test_batch_send_requests_and_response_id_type_not_matched_error() { .batch_send(vec![Request::get_metadata(), Request::get_currencies()]) .await; - assert_eq!("Err(UnexpectedError(InvalidResponseIdType(JsonRpcResponse { libra_chain_id: 4, libra_ledger_version: 1, libra_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(String(\"1\")), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); + assert_eq!("Err(UnexpectedError(InvalidResponseIdType(JsonRpcResponse { diem_chain_id: 4, diem_ledger_version: 1, diem_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(String(\"1\")), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); assert_err!(err, Error::UnexpectedError { .. }, true); } @@ -736,7 +736,7 @@ async fn test_batch_send_requests_and_response_id_duplicated_error() { .batch_send(vec![Request::get_metadata(), Request::get_currencies()]) .await; - assert_eq!("Err(UnexpectedError(DuplicatedResponseId(JsonRpcResponse { libra_chain_id: 4, libra_ledger_version: 1, libra_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(Number(0)), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); + assert_eq!("Err(UnexpectedError(DuplicatedResponseId(JsonRpcResponse { diem_chain_id: 4, diem_ledger_version: 1, diem_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: Some(Number(0)), result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); assert_err!(err, Error::UnexpectedError { .. }, true); } @@ -757,7 +757,7 @@ async fn test_batch_send_requests_and_response_id_not_found_error() { .batch_send(vec![Request::get_metadata(), Request::get_currencies()]) .await; - assert_eq!("Err(UnexpectedError(ResponseIdNotFound(JsonRpcResponse { libra_chain_id: 4, libra_ledger_version: 1, libra_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: None, result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); + assert_eq!("Err(UnexpectedError(ResponseIdNotFound(JsonRpcResponse { diem_chain_id: 4, diem_ledger_version: 1, diem_ledger_timestampusec: 1602888396000000, jsonrpc: \"2.0\", id: None, result: Some(Object({\"chain_id\": Number(4), \"timestamp\": Number(234234), \"version\": Number(1)})), error: None })))", format!("{:?}", &err)); assert_err!(err, Error::UnexpectedError { .. }, true); } @@ -894,24 +894,24 @@ fn currencies_sample() -> Value { { "burn_events_key": "06000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "08000000000000000000000000000000000000000a550c18", - "code": "Coin1", + "code": "XUS", "exchange_rate_update_events_key": "09000000000000000000000000000000000000000a550c18", "fractional_part": 100, "mint_events_key": "05000000000000000000000000000000000000000a550c18", "preburn_events_key": "07000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1.0, + "to_xdx_exchange_rate": 1.0, }, { "burn_events_key": "0b000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "0d000000000000000000000000000000000000000a550c18", - "code": "LBR", + "code": "XDX", "exchange_rate_update_events_key": "0e000000000000000000000000000000000000000a550c18", "fractional_part": 1000, "mint_events_key": "0a000000000000000000000000000000000000000a550c18", "preburn_events_key": "0c000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1.0 + "to_xdx_exchange_rate": 1.0 } ]) } @@ -922,7 +922,7 @@ fn events_sample() -> Value { "data": { "amount": { "amount": 3000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "metadata", "receiver": "762cbea8b99911d49707d2b901e13425", @@ -937,7 +937,7 @@ fn events_sample() -> Value { "data": { "amount": { "amount": 3000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "metadata", "receiver": "762cbea8b99911d49707d2b901e13425", @@ -960,17 +960,17 @@ fn custom_transaction_sample(vm_status_type: &str, events: Value) -> Value { "bytes": format!("00{}", signed_txn_hex_sample()), "events": events, "gas_used": 476, - "hash": "0895ced78e9f10c1351f248b9bda40cc9c8e6d4dbba823e08fe1cfacd582f171", + "hash": "f55c91fdc36b9246c423258b74eb579a0972a86b3394e2cfdab528a37f18d1f9", "transaction": { "chain_id": 4, "expiration_timestamp_secs": 1600152999, - "gas_currency": "LBR", + "gas_currency": "XDX", "gas_unit_price": 10, "max_gas_amount": 1000000, "public_key": "f4d854d7719c8ca6b454df278aa513c3e1f17ad6a38579ff0baa2bd50f5dd0e5", "script": { "amount": 3000000, - "currency": "LBR", + "currency": "XDX", "metadata": "metadata", "metadata_signature": "metadata_signature", "receiver": "762cbea8b99911d49707d2b901e13425", @@ -1001,7 +1001,7 @@ fn signed_txn_sample() -> SignedTransaction { } fn signed_txn_hex_sample() -> String { - "876ff1d441cb0b352f438fcfbce8608f010000000000000001e101a11ceb0b010000000701000202020403061004160205181d0735610896011000000001010000020001000003020301010004010300010501060c0108000506080005030a020a020005060c05030a020a020109000c4c696272614163636f756e741257697468647261774361706162696c6974791b657874726163745f77697468647261775f6361706162696c697479087061795f66726f6d1b726573746f72655f77697468647261775f6361706162696c69747900000000000000000000000000000001010104010c0b0011000c050e050a010a020b030b0438000b05110202010700000000000000000000000000000001034c4252034c4252000403762cbea8b99911d49707d2b901e1342501c0c62d00000000000400040040420f00000000000000000000000000034c4252a765605f00000000040020f4d854d7719c8ca6b454df278aa513c3e1f17ad6a38579ff0baa2bd50f5dd0e54079358f2a818adcbfb7e9db3e9a560007881acfe6b62c29f1eedcc76b534024a574fcb95bf4c438da33eba8052b565c8d7e3f507225d2998849d6613f64fa6005".to_string() + "d360103577cf88c6a0e98235f7b65fd5000000000000000001e001a11ceb0b010000000701000202020403061004160205181d0735600895011000000001010000020001000003020301010004010300010501060c0108000506080005030a020a020005060c05030a020a020109000b4469656d4163636f756e741257697468647261774361706162696c6974791b657874726163745f77697468647261775f6361706162696c697479087061795f66726f6d1b726573746f72655f77697468647261775f6361706162696c69747900000000000000000000000000000001010104010c0b0011000c050e050a010a020b030b0438000b0511020201070000000000000000000000000000000105436f696e3105436f696e31000403bd51533250d3427ef3d1b1028c7b6efe01400d0300000000000400040040420f0000000000000000000000000005436f696e317371ca5f000000000400200b8ba5181a1838016877e636788f2e83b4177bfa59018548abe19131cc4f0e4a4020d6785e98e4a5994caa8fba6a2cd58188784bea242ea51ffe21849d87c5425a61efbb07922ee4ff5833f9554cf8f514a1d02e98ef0f2bef281ae2a4709c5400".to_string() } fn invalid_request_response() -> Value { @@ -1016,9 +1016,9 @@ fn invalid_request_response_with_id(id: u64) -> Value { }, "id": id, "jsonrpc": "2.0", - "libra_chain_id": 4, - "libra_ledger_timestampusec": version_timestamp(version), - "libra_ledger_version": version + "diem_chain_id": 4, + "diem_ledger_timestampusec": version_timestamp(version), + "diem_ledger_version": version }) } @@ -1036,9 +1036,9 @@ fn new_response_with_version_and_id(result: Value, version: u64, id: i32) -> Val fn new_response_with_version_and_json_id(result: Value, version: u64, id: Value) -> Value { to_value(JsonRpcResponse { - libra_chain_id: 4, - libra_ledger_version: version, - libra_ledger_timestampusec: version_timestamp(version), + diem_chain_id: 4, + diem_ledger_version: version, + diem_ledger_timestampusec: version_timestamp(version), jsonrpc: "2.0".to_string(), id: Some(id), result: Some(result), diff --git a/client/json-rpc/src/blocking.rs b/client/json-rpc/src/blocking.rs index 3177ecdc95..0573f1d80e 100644 --- a/client/json-rpc/src/blocking.rs +++ b/client/json-rpc/src/blocking.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{process_batch_response, JsonRpcBatch, JsonRpcResponse}; diff --git a/client/json-rpc/src/client.rs b/client/json-rpc/src/client.rs index 810f2c3632..083e43478a 100644 --- a/client/json-rpc/src/client.rs +++ b/client/json-rpc/src/client.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{errors::JsonRpcError, views::AccountView, JsonRpcResponse}; use anyhow::{ensure, format_err, Error, Result}; -use libra_types::{account_address::AccountAddress, transaction::SignedTransaction}; +use diem_types::{account_address::AccountAddress, transaction::SignedTransaction}; use reqwest::{Client, ClientBuilder, StatusCode, Url}; use serde_json::{json, Value}; use std::{collections::HashSet, convert::TryFrom, fmt, time::Duration}; diff --git a/client/json-rpc/src/lib.rs b/client/json-rpc/src/lib.rs index c15086449f..a8af9b66a9 100644 --- a/client/json-rpc/src/lib.rs +++ b/client/json-rpc/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod blocking; @@ -10,8 +10,8 @@ pub use client::{ get_response_from_batch, process_batch_response, JsonRpcAsyncClient, JsonRpcAsyncClientError, JsonRpcBatch, }; -pub use libra_json_rpc_types::{errors, views}; -pub use libra_types::{account_address::AccountAddress, transaction::SignedTransaction}; +pub use diem_json_rpc_types::{errors, views}; +pub use diem_types::{account_address::AccountAddress, transaction::SignedTransaction}; pub use response::{JsonRpcResponse, ResponseAsView}; // new implementation module diff --git a/client/json-rpc/src/response.rs b/client/json-rpc/src/response.rs index 49803f0a65..86c41bc8c8 100644 --- a/client/json-rpc/src/response.rs +++ b/client/json-rpc/src/response.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::views::{ diff --git a/client/libra-dev/src/lib.rs b/client/libra-dev/src/lib.rs deleted file mode 100644 index 3227d9f4d2..0000000000 --- a/client/libra-dev/src/lib.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) The Libra Core Contributors -// SPDX-License-Identifier: Apache-2.0 - -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] -#![allow(clippy::missing_safety_doc)] - -pub mod crypto; -pub mod error; -mod interface; -pub mod transaction; - -use crate::interface::{ - LIBRA_ADDRESS_SIZE, LIBRA_AUTHKEY_SIZE, LIBRA_PRIVKEY_SIZE, LIBRA_PUBKEY_SIZE, -}; -use libra_crypto::ed25519::{ED25519_PRIVATE_KEY_LENGTH, ED25519_PUBLIC_KEY_LENGTH}; -use libra_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; - -static_assertions::const_assert_eq!(LIBRA_PUBKEY_SIZE, ED25519_PUBLIC_KEY_LENGTH as u32); -static_assertions::const_assert_eq!(LIBRA_PRIVKEY_SIZE, ED25519_PRIVATE_KEY_LENGTH as u32); -static_assertions::const_assert_eq!(LIBRA_AUTHKEY_SIZE, AuthenticationKey::LENGTH as u32); -static_assertions::const_assert_eq!(LIBRA_ADDRESS_SIZE, AccountAddress::LENGTH as u32); diff --git a/client/swiss-knife/Cargo.toml b/client/swiss-knife/Cargo.toml index df36440cdd..38ae624feb 100644 --- a/client/swiss-knife/Cargo.toml +++ b/client/swiss-knife/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "swiss-knife" version = "0.1.0" -authors = ["Libra Association "] -description = "Tool for generating, serializing (LCS), hashing and signing Libra transactions. Additionally, contains tools for testing" +authors = ["Diem Association "] +description = "Tool for generating, serializing (LCS), hashing and signing Diem transactions. Additionally, contains tools for testing" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,8 +17,8 @@ serde_json = "1.0.60" serde = { version = "1.0.117", features = ["derive"] } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } diff --git a/client/swiss-knife/README.md b/client/swiss-knife/README.md index c37ecebcb8..3b263e76ee 100644 --- a/client/swiss-knife/README.md +++ b/client/swiss-knife/README.md @@ -1,6 +1,6 @@ -# Libra Swiss Knife +# Diem Swiss Knife -`swiss-knife` can be used to generate and serialize (LCS) raw and signed Libra transactions for a supported set of move scripts (See the `MoveScriptParams` enum for a list of supported MoveScripts). This binary is intended for use both by humans (interactive use) and to be called by automation (programs in any language which support json). +`swiss-knife` can be used to generate and serialize (LCS) raw and signed Diem transactions for a supported set of move scripts (See the `MoveScriptParams` enum for a list of supported MoveScripts). This binary is intended for use both by humans (interactive use) and to be called by automation (programs in any language which support json). `swiss-knife` expects json input from stdin (wherever applicable) and writes json output to stdout. The output json object will always have two fields: `error_message` and `data`. If the operation succeeds, then `data` is set, otherwise `error_message` is set. Only one of them will be set and the other one will be an empty string. @@ -68,7 +68,7 @@ $ cargo run -p swiss-knife -- generate-raw-txn < sample_inputs/generate_raw_txn_ ## Generate a Ed25519 Keypair -Generate a Ed25519 Keypair and corresponding libra account address and auth key associated with this keypair. +Generate a Ed25519 Keypair and corresponding diem account address and auth key associated with this keypair. Optionally provide a seed to deterministically generate a Ed25519 Keypair @@ -79,8 +79,8 @@ $ cargo run -p swiss-knife -- generate-test-ed25519-keypair { "error_message": "", "data": { - "libra_account_address": "e1b3d22871989e9fd9dc6814b2f4fc41", - "libra_auth_key": "5a06116a9801533249b06eeef54db2f1e1b3d22871989e9fd9dc6814b2f4fc41", + "diem_account_address": "e1b3d22871989e9fd9dc6814b2f4fc41", + "diem_auth_key": "5a06116a9801533249b06eeef54db2f1e1b3d22871989e9fd9dc6814b2f4fc41", "private_key": "b2f7f581d6de3c06a822fd6e7e8265fbc00f8401696a5bdc34f5a6d2ff3f922f", "public_key": "edd0f6de342a1e6a7236d6244f23d83eedfcecd059a386c85055701498e77033" } @@ -92,8 +92,8 @@ $ cargo run -p swiss-knife -- generate-test-ed25519-keypair --seed 0 { "error_message": "", "data": { - "libra_account_address": "e1b3d22871989e9fd9dc6814b2f4fc41", - "libra_auth_key": "5a06116a9801533249b06eeef54db2f1e1b3d22871989e9fd9dc6814b2f4fc41", + "diem_account_address": "e1b3d22871989e9fd9dc6814b2f4fc41", + "diem_auth_key": "5a06116a9801533249b06eeef54db2f1e1b3d22871989e9fd9dc6814b2f4fc41", "private_key": "b2f7f581d6de3c06a822fd6e7e8265fbc00f8401696a5bdc34f5a6d2ff3f922f", "public_key": "edd0f6de342a1e6a7236d6244f23d83eedfcecd059a386c85055701498e77033" } @@ -141,6 +141,6 @@ $ cargo run -p swiss-knife -- verify-ed25519-signature < sample_inputs/verify_si ``` (Note that this is not a test of a transaction signature. This only tests the -"raw" internal Ed255519 library used in Libra, and will only allow you to +"raw" internal Ed255519 library used in Diem, and will only allow you to e.g. get certainty that we use Ed25519 variant 'pure' as opposed to 'pre-hashed'. For testing a transaction signature, see the previous example) diff --git a/client/swiss-knife/sample_inputs/generate_raw_txn_peer_to_peer_transfer.json b/client/swiss-knife/sample_inputs/generate_raw_txn_peer_to_peer_transfer.json index 2e80b7e5ef..4ab558e0a2 100644 --- a/client/swiss-knife/sample_inputs/generate_raw_txn_peer_to_peer_transfer.json +++ b/client/swiss-knife/sample_inputs/generate_raw_txn_peer_to_peer_transfer.json @@ -4,13 +4,13 @@ "sequence_number": 42, "max_gas_amount": 1000000, "gas_unit_price": 0, - "gas_currency_code": "LBR", + "gas_currency_code": "XDX", "chain_id": "TESTING", "expiration_timestamp_secs": 1593189628 }, "script_params": { "peer_to_peer_transfer": { - "coin_tag": "LBR", + "coin_tag": "XDX", "recipient_address": "0x71e931795d23e9634fd24a5992065f6b", "amount": 100, "metadata_hex_encoded": "", diff --git a/client/swiss-knife/sample_inputs/generate_raw_txn_preburn.json b/client/swiss-knife/sample_inputs/generate_raw_txn_preburn.json index b4155190c1..06b4f37de1 100644 --- a/client/swiss-knife/sample_inputs/generate_raw_txn_preburn.json +++ b/client/swiss-knife/sample_inputs/generate_raw_txn_preburn.json @@ -4,13 +4,13 @@ "sequence_number": 42, "max_gas_amount": 1000000, "gas_unit_price": 0, - "gas_currency_code": "LBR", + "gas_currency_code": "XDX", "chain_id": "TESTING", "expiration_timestamp_secs": 1593189628 }, "script_params": { "preburn": { - "coin_tag": "LBR", + "coin_tag": "XDX", "amount": 100 } } diff --git a/client/swiss-knife/sample_inputs/generate_raw_txn_rotate_dual_attestation_info.json b/client/swiss-knife/sample_inputs/generate_raw_txn_rotate_dual_attestation_info.json index b763a90c88..d250ce641a 100644 --- a/client/swiss-knife/sample_inputs/generate_raw_txn_rotate_dual_attestation_info.json +++ b/client/swiss-knife/sample_inputs/generate_raw_txn_rotate_dual_attestation_info.json @@ -4,7 +4,7 @@ "sequence_number": 42, "max_gas_amount": 1000000, "gas_unit_price": 0, - "gas_currency_code": "LBR", + "gas_currency_code": "XDX", "chain_id": "TESTING", "expiration_timestamp_secs": 1593189628 }, diff --git a/client/swiss-knife/src/helpers.rs b/client/swiss-knife/src/helpers.rs index 245b07edbe..d0ef14a102 100644 --- a/client/swiss-knife/src/helpers.rs +++ b/client/swiss-knife/src/helpers.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_config::{from_currency_code_string, type_tag_for_currency_code}, }; diff --git a/client/swiss-knife/src/lib.rs b/client/swiss-knife/src/lib.rs index db9e3052a1..1edf37c6ed 100644 --- a/client/swiss-knife/src/lib.rs +++ b/client/swiss-knife/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod helpers; diff --git a/client/swiss-knife/src/main.rs b/client/swiss-knife/src/main.rs index f9d476e721..b3cb5a70c4 100644 --- a/client/swiss-knife/src/main.rs +++ b/client/swiss-knife/src/main.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, test_utils::KeyPair, Signature, SigningKey, Uniform, ValidCryptoMaterialStringExt, }; -use libra_types::{ +use diem_types::{ chain_id::ChainId, transaction::{ authenticator::AuthenticationKey, RawTransaction, SignedTransaction, Transaction, @@ -53,7 +53,7 @@ enum Command { #[derive(Debug, StructOpt)] #[structopt( name = "swiss-knife", - about = "Tool for generating, serializing (LCS), hashing and signing Libra transactions. Additionally, contains tools for testing. Please refer to README.md for examples." + about = "Tool for generating, serializing (LCS), hashing and signing Diem transactions. Additionally, contains tools for testing. Please refer to README.md for examples." )] struct Opt { #[structopt(subcommand)] @@ -121,7 +121,7 @@ struct TxnParams { pub sender_address: String, // Sequence number of this transaction corresponding to sender's account. pub sequence_number: u64, - // Chain ID of the Libra network this transaction is intended for + // Chain ID of the Diem network this transaction is intended for pub chain_id: String, // Maximal total gas specified by wallet to spend for this transaction. pub max_gas_amount: u64, @@ -300,17 +300,17 @@ fn generate_signed_txn(request: GenerateSignedTxnRequest) -> GenerateSignedTxnRe struct GenerateKeypairResponse { pub private_key: String, pub public_key: String, - pub libra_auth_key: String, - pub libra_account_address: String, + pub diem_auth_key: String, + pub diem_account_address: String, } fn generate_key_pair(seed: Option) -> GenerateKeypairResponse { let mut rng = StdRng::seed_from_u64(seed.unwrap_or_else(rand::random)); let keypair: KeyPair = Ed25519PrivateKey::generate(&mut rng).into(); - let libra_auth_key = AuthenticationKey::ed25519(&keypair.public_key); - let libra_account_address: String = libra_auth_key.derived_address().to_string(); - let libra_auth_key: String = libra_auth_key.to_string(); + let diem_auth_key = AuthenticationKey::ed25519(&keypair.public_key); + let diem_account_address: String = diem_auth_key.derived_address().to_string(); + let diem_auth_key: String = diem_auth_key.to_string(); GenerateKeypairResponse { private_key: keypair .private_key @@ -326,8 +326,8 @@ fn generate_key_pair(seed: Option) -> GenerateKeypairResponse { helpers::exit_with_error(format!("Failed to encode public key : {}", err)) }) .unwrap(), - libra_auth_key, - libra_account_address, + diem_auth_key, + diem_account_address, } } diff --git a/client/transaction-builder/Cargo.toml b/client/transaction-builder/Cargo.toml index 5485cefe68..b3e7929807 100644 --- a/client/transaction-builder/Cargo.toml +++ b/client/transaction-builder/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transaction-builder-generated" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Generated transaction builders" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -15,13 +15,13 @@ serde = { version = "1.0.117", features = ["derive"] } compiled-stdlib = { path = "../../language/stdlib/compiled", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } proptest = { version = "0.10.1", optional = true } proptest-derive = { version = "0.2.0", optional = true } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } [features] default = [] -fuzzing = ["proptest", "proptest-derive", "libra-proptest-helpers", "move-core-types/fuzzing"] +fuzzing = ["proptest", "proptest-derive", "diem-proptest-helpers", "move-core-types/fuzzing"] diff --git a/client/transaction-builder/src/lib.rs b/client/transaction-builder/src/lib.rs index cac4f1118d..4c299e04a6 100644 --- a/client/transaction-builder/src/lib.rs +++ b/client/transaction-builder/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/client/transaction-builder/src/misc.rs b/client/transaction-builder/src/misc.rs index 4c039a3e9b..5d0e0365f0 100644 --- a/client/transaction-builder/src/misc.rs +++ b/client/transaction-builder/src/misc.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use compiled_stdlib::{transaction_scripts::StdlibScript, StdLibOptions}; -use libra_types::{ +use diem_types::{ access_path::AccessPath, block_metadata::BlockMetadata, transaction::{ChangeSet, Transaction}, diff --git a/client/transaction-builder/src/stdlib.rs b/client/transaction-builder/src/stdlib.rs index 6a5c4fd635..347e86d57c 100644 --- a/client/transaction-builder/src/stdlib.rs +++ b/client/transaction-builder/src/stdlib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // This file was generated. Do not modify! @@ -6,12 +6,12 @@ // To re-generate this code, run: `cargo run --release -p stdlib` //! Conversion library between a structured representation of a Move script call (`ScriptCall`) and the -//! standard LCS-compatible representation used in Libra transactions (`Script`). +//! standard LCS-compatible representation used in Diem transactions (`Script`). //! //! This code was generated by compiling known Script interfaces ("ABIs") with the tool `transaction-builder-generator`. #![allow(unused_imports)] -use libra_types::{ +use diem_types::{ account_address::AccountAddress, transaction::{Script, TransactionArgument}, }; @@ -33,15 +33,15 @@ type Bytes = Vec; pub enum ScriptCall { /// # Summary /// Adds a zero `Currency` balance to the sending `account`. This will enable `account` to - /// send, receive, and hold `Libra::Libra` coins. This transaction can be + /// send, receive, and hold `Diem::Diem` coins. This transaction can be /// successfully sent by any account that is allowed to hold balances /// (e.g., VASP, Designated Dealer). /// /// # Technical Description /// After the successful execution of this transaction the sending account will have a - /// `LibraAccount::Balance` resource with zero balance published under it. Only + /// `DiemAccount::Balance` resource with zero balance published under it. Only /// accounts that can hold balances can send this transaction, the sending account cannot - /// already have a `LibraAccount::Balance` published under it. + /// already have a `DiemAccount::Balance` published under it. /// /// # Parameters /// | Name | Type | Description | @@ -52,9 +52,9 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | - /// | `Errors::ALREADY_PUBLISHED` | `LibraAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | + /// | `Errors::ALREADY_PUBLISHED` | `DiemAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -69,7 +69,7 @@ pub enum ScriptCall { /// specified recovery account can rotate the sender account's authentication key. /// /// # Technical Description - /// Adds the `LibraAccount::KeyRotationCapability` for the sending account + /// Adds the `DiemAccount::KeyRotationCapability` for the sending account /// (`to_recover_account`) to the `RecoveryAddress::RecoveryAddress` resource under /// `recovery_address`. After this transaction has been executed successfully the account at /// `recovery_address` and the `to_recover_account` may rotate the authentication key of @@ -89,12 +89,12 @@ pub enum ScriptCall { /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `to_recover_account` | `&signer` | The signer reference of the sending account of this transaction. | - /// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `LibraAccount::KeyRotationCapability` will be stored. | + /// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `DiemAccount::KeyRotationCapability` will be stored. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EINVALID_KEY_ROTATION_DELEGATION` | `to_recover_account` and `recovery_address` do not belong to the same VASP. | /// @@ -105,47 +105,47 @@ pub enum ScriptCall { /// # Summary /// Adds a script hash to the transaction allowlist. This transaction - /// can only be sent by the Libra Root account. Scripts with this hash can be + /// can only be sent by the Diem Root account. Scripts with this hash can be /// sent afterward the successful execution of this script. /// /// # Technical Description /// - /// The sending account (`lr_account`) must be the Libra Root account. The script allow + /// The sending account (`dr_account`) must be the Diem Root account. The script allow /// list must not already hold the script `hash` being added. The `sliding_nonce` must be - /// a valid nonce for the Libra Root account. After this transaction has executed + /// a valid nonce for the Diem Root account. After this transaction has executed /// successfully a reconfiguration will be initiated, and the on-chain config - /// `LibraTransactionPublishingOption::LibraTransactionPublishingOption`'s + /// `DiemTransactionPublishingOption::DiemTransactionPublishingOption`'s /// `script_allow_list` field will contain the new script `hash` and transactions /// with this `hash` can be successfully sent to the network. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `hash` | `vector` | The hash of the script to be added to the script allowlist. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | - /// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | + /// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | AddToScriptAllowList { hash: Bytes, sliding_nonce: u64 }, /// # Summary /// Adds a validator account to the validator set, and triggers a /// reconfiguration of the system to admit the account to the validator set for the system. This - /// transaction can only be successfully called by the Libra Root account. + /// transaction can only be successfully called by the Diem Root account. /// /// # Technical Description /// This script adds the account at `validator_address` to the validator set. - /// This transaction emits a `LibraConfig::NewEpochEvent` event and triggers a + /// This transaction emits a `DiemConfig::NewEpochEvent` event and triggers a /// reconfiguration. Once the reconfiguration triggered by this script's /// execution has been performed, the account at the `validator_address` is /// considered to be a validator in the network. @@ -156,7 +156,7 @@ pub enum ScriptCall { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be added to the validator set. | @@ -164,16 +164,16 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | - /// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | - /// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | - /// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | + /// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | + /// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | + /// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -198,21 +198,21 @@ pub enum ScriptCall { /// /// # Technical Description /// This transaction permanently destroys all the coins of `Token` type - /// stored in the `Libra::Preburn` resource published under the + /// stored in the `Diem::Preburn` resource published under the /// `preburn_address` account address. /// /// This transaction will only succeed if the sending `account` has a - /// `Libra::BurnCapability`, and a `Libra::Preburn` resource + /// `Diem::BurnCapability`, and a `Diem::Preburn` resource /// exists under `preburn_address`, with a non-zero `to_burn` field. After the successful execution /// of this transaction the `total_value` field in the - /// `Libra::CurrencyInfo` resource published under `0xA550C18` will be + /// `Diem::CurrencyInfo` resource published under `0xA550C18` will be /// decremented by the value of the `to_burn` field of the preburn resource /// under `preburn_address` immediately before this transaction, and the /// `to_burn` field of the preburn resource will have a zero value. /// /// ## Events - /// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle - /// held in the `Libra::CurrencyInfo` resource's `burn_events` published under + /// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle + /// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -230,10 +230,10 @@ pub enum ScriptCall { /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | - /// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | - /// | `Errors::INVALID_STATE` | `Libra::EPREBURN_EMPTY` | The `Libra::Preburn` resource is empty (has a value of 0). | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | + /// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | + /// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | + /// | `Errors::INVALID_STATE` | `Diem::EPREBURN_EMPTY` | The `Diem::Preburn` resource is empty (has a value of 0). | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::burn_txn_fees` @@ -247,7 +247,7 @@ pub enum ScriptCall { /// # Summary /// Burns the transaction fees collected in the `CoinType` currency so that the - /// Libra association may reclaim the backing coins off-chain. May only be sent + /// Diem association may reclaim the backing coins off-chain. May only be sent /// by the Treasury Compliance account. /// /// # Technical Description @@ -260,8 +260,8 @@ pub enum ScriptCall { /// account address will have a value of 0 after the successful execution of this script. /// /// ## Events - /// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle - /// held in the `Libra::CurrencyInfo` resource's `burn_events` published under + /// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle + /// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -275,7 +275,7 @@ pub enum ScriptCall { /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::NOT_PUBLISHED` | `TransactionFee::ETRANSACTION_FEE` | `CoinType` is not an accepted transaction fee currency. | - /// | `Errors::INVALID_ARGUMENT` | `Libra::ECOIN` | The collected fees in `CoinType` are zero. | + /// | `Errors::INVALID_ARGUMENT` | `Diem::ECOIN` | The collected fees in `CoinType` are zero. | /// /// # Related Scripts /// * `Script::burn` @@ -288,22 +288,22 @@ pub enum ScriptCall { /// Can only be successfully sent by an account with Treasury Compliance role. /// /// # Technical Description - /// Cancels and returns all coins held in the `Libra::Preburn` resource under the `preburn_address` and - /// return the funds to the `preburn_address` account's `LibraAccount::Balance`. - /// The transaction must be sent by an `account` with a `Libra::BurnCapability` + /// Cancels and returns all coins held in the `Diem::Preburn` resource under the `preburn_address` and + /// return the funds to the `preburn_address` account's `DiemAccount::Balance`. + /// The transaction must be sent by an `account` with a `Diem::BurnCapability` /// resource published under it. The account at `preburn_address` must have a - /// `Libra::Preburn` resource published under it, and its value must be nonzero. The transaction removes - /// the entire balance held in the `Libra::Preburn` resource, and returns it back to the account's - /// `LibraAccount::Balance` under `preburn_address`. Due to this, the account at + /// `Diem::Preburn` resource published under it, and its value must be nonzero. The transaction removes + /// the entire balance held in the `Diem::Preburn` resource, and returns it back to the account's + /// `DiemAccount::Balance` under `preburn_address`. Due to this, the account at /// `preburn_address` must already have a balance in the `Token` currency published /// before this script is called otherwise the transaction will fail. /// /// ## Events /// The successful execution of this transaction will emit: - /// * A `Libra::CancelBurnEvent` on the event handle held in the `Libra::CurrencyInfo` + /// * A `Diem::CancelBurnEvent` on the event handle held in the `Diem::CurrencyInfo` /// resource's `burn_events` published under `0xA550C18`. - /// * A `LibraAccount::ReceivedPaymentEvent` on the `preburn_address`'s - /// `LibraAccount::LibraAccount` `received_events` event handle with both the `payer` and `payee` + /// * A `DiemAccount::ReceivedPaymentEvent` on the `preburn_address`'s + /// `DiemAccount::DiemAccount` `received_events` event handle with both the `payer` and `payee` /// being `preburn_address`. /// /// # Parameters @@ -316,12 +316,12 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | - /// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | + /// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | + /// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | /// | `Errors::INVALID_STATE` | `DualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SET` | The `account` does not have a compliance key set on it but dual attestion checking was performed. | /// /// # Related Scripts @@ -351,12 +351,12 @@ pub enum ScriptCall { /// /// ## Events /// Successful execution with a `child_initial_balance` greater than zero will emit: - /// * A `LibraAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, + /// * A `DiemAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the Parent VASP's - /// `LibraAccount::LibraAccount` `sent_events` handle. - /// * A `LibraAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, + /// `DiemAccount::DiemAccount` `sent_events` handle. + /// * A `DiemAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the new Child VASPS's - /// `LibraAccount::LibraAccount` `received_events` handle. + /// `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -371,15 +371,15 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | /// | `Errors::REQUIRES_ROLE` | `Roles::EPARENT_VASP` | The sending account wasn't a Parent VASP account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `child_address` address is already taken. | /// | `Errors::LIMIT_EXCEEDED` | `VASP::ETOO_MANY_CHILDREN` | The sending account has reached the maximum number of allowed child accounts. | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | - /// | `Errors::INVALID_STATE` | `LibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | - /// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | + /// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | /// /// # Related Scripts /// * `Script::create_parent_vasp_account` @@ -430,7 +430,7 @@ pub enum ScriptCall { /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `addr` address is already taken. | /// /// # Related Scripts @@ -476,7 +476,7 @@ pub enum ScriptCall { /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -503,7 +503,7 @@ pub enum ScriptCall { /// /// # Technical Description /// Publishes a `RecoveryAddress::RecoveryAddress` resource under `account`. It then - /// extracts the `LibraAccount::KeyRotationCapability` for `account` and adds + /// extracts the `DiemAccount::KeyRotationCapability` for `account` and adds /// it to the resource. After the successful execution of this transaction /// other accounts may add their key rotation to this resource so that `account` /// may be used as a recovery account for those accounts. @@ -516,7 +516,7 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ENOT_A_VASP` | `account` is not a VASP account. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EKEY_ROTATION_DEPENDENCY_CYCLE` | A key rotation recovery cycle would be created by adding `account`'s key rotation capability. | /// | `Errors::ALREADY_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | A `RecoveryAddress::RecoveryAddress` resource has already been published under `account`. | @@ -527,7 +527,7 @@ pub enum ScriptCall { CreateRecoveryAddress {}, /// # Summary - /// Creates a Validator account. This transaction can only be sent by the Libra + /// Creates a Validator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -542,7 +542,7 @@ pub enum ScriptCall { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -551,12 +551,12 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -575,7 +575,7 @@ pub enum ScriptCall { }, /// # Summary - /// Creates a Validator Operator account. This transaction can only be sent by the Libra + /// Creates a Validator Operator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -587,7 +587,7 @@ pub enum ScriptCall { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -596,12 +596,12 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -622,7 +622,7 @@ pub enum ScriptCall { /// # Summary /// Freezes the account at `address`. The sending account of this transaction /// must be the Treasury Compliance account. The account being frozen cannot be - /// the Libra Root or Treasury Compliance account. After the successful + /// the Diem Root or Treasury Compliance account. After the successful /// execution of this transaction no transactions may be sent from the frozen /// account, and the frozen account may not send or receive coins. /// @@ -630,7 +630,7 @@ pub enum ScriptCall { /// Sets the `AccountFreezing::FreezingBit` to `true` and emits a /// `AccountFreezing::FreezeAccountEvent`. The transaction sender must be the /// Treasury Compliance account, but the account at `to_freeze_account` must - /// not be either `0xA550C18` (the Libra Root address), or `0xB1E55ED` (the + /// not be either `0xA550C18` (the Diem Root address), or `0xB1E55ED` (the /// Treasury Compliance address). Note that this is a per-account property /// e.g., freezing a Parent VASP will not effect the status any of its child /// accounts and vice versa. @@ -658,7 +658,7 @@ pub enum ScriptCall { /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_TC` | `to_freeze_account` was the Treasury Compliance account (`0xB1E55ED`). | - /// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_LIBRA_ROOT` | `to_freeze_account` was the Libra Root account (`0xA550C18`). | + /// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_DIEM_ROOT` | `to_freeze_account` was the Diem Root account (`0xA550C18`). | /// /// # Related Scripts /// * `Script::unfreeze_account` @@ -681,15 +681,15 @@ pub enum ScriptCall { /// `metadata` and an (optional) `metadata_signature` on the message /// `metadata` | `Signer::address_of(payer)` | `amount` | `DualAttestation::DOMAIN_SEPARATOR`. /// The `metadata` and `metadata_signature` parameters are only required if `amount` >= - /// `DualAttestation::get_cur_microlibra_limit` LBR and `payer` and `payee` are distinct VASPs. + /// `DualAttestation::get_cur_microdiem_limit` XDX and `payer` and `payee` are distinct VASPs. /// However, a transaction sender can opt in to dual attestation even when it is not required /// (e.g., a DesignatedDealer -> VASP payment) by providing a non-empty `metadata_signature`. - /// Standardized `metadata` LCS format can be found in `libra_types::transaction::metadata::Metadata`. + /// Standardized `metadata` LCS format can be found in `diem_types::transaction::metadata::Metadata`. /// /// ## Events /// Successful execution of this script emits two events: - /// * A `LibraAccount::SentPaymentEvent` on `payer`'s `LibraAccount::LibraAccount` `sent_events` handle; and - /// * A `LibraAccount::ReceivedPaymentEvent` on `payee`'s `LibraAccount::LibraAccount` `received_events` handle. + /// * A `DiemAccount::SentPaymentEvent` on `payer`'s `DiemAccount::DiemAccount` `sent_events` handle; and + /// * A `DiemAccount::ReceivedPaymentEvent` on `payee`'s `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -703,16 +703,16 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | - /// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | + /// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | + /// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | /// | `Errors::INVALID_STATE` | `AccountFreezing::EACCOUNT_FROZEN` | The `payee` account is frozen. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EMALFORMED_METADATA_SIGNATURE` | `metadata_signature` is not 64 bytes. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EINVALID_METADATA_SIGNATURE` | `metadata_signature` does not verify on the against the `payee'`s `DualAttestation::Credential` `compliance_public_key` public key. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of LBR. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for LBR. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of XDX. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for XDX. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -734,16 +734,16 @@ pub enum ScriptCall { /// /// # Technical Description /// Moves the specified `amount` of coins in `Token` currency from the sending `account`'s - /// `LibraAccount::Balance` to the `Libra::Preburn` published under the same + /// `DiemAccount::Balance` to the `Diem::Preburn` published under the same /// `account`. `account` must have both of these resources published under it at the start of this /// transaction in order for it to execute successfully. /// /// ## Events /// Successful execution of this script emits two events: - /// * `LibraAccount::SentPaymentEvent ` on `account`'s `LibraAccount::LibraAccount` `sent_events` + /// * `DiemAccount::SentPaymentEvent ` on `account`'s `DiemAccount::DiemAccount` `sent_events` /// handle with the `payee` and `payer` fields being `account`'s address; and - /// * A `Libra::PreburnEvent` with `Token`'s currency code on the - /// `Libra::CurrencyInfo` resource published under it. | - /// | `Errors::INVALID_STATE` | `Libra::EPREBURN_OCCUPIED` | The `value` field in the `Libra::Preburn` resource under the sender is non-zero. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Token` is not a registered currency on-chain. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for `account` has already been extracted. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Token`. | + /// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `account` doesn't hold a balance in `Token`. | + /// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | `account` doesn't have a `Diem::Preburn` resource published under it. | + /// | `Errors::INVALID_STATE` | `Diem::EPREBURN_OCCUPIED` | The `value` field in the `Diem::Preburn` resource under the sender is non-zero. | /// | `Errors::NOT_PUBLISHED` | `Roles::EROLE_ID` | The `account` did not have a role assigned to it. | /// | `Errors::REQUIRES_ROLE` | `Roles::EDESIGNATED_DEALER` | The `account` did not have the role of DesignatedDealer. | /// @@ -779,7 +779,7 @@ pub enum ScriptCall { /// # Technical Description /// Rotates the authentication key of the sending account to `public_key`, /// and publishes a `SharedEd25519PublicKey::SharedEd25519PublicKey` resource - /// containing the 32-byte ed25519 `public_key` and the `LibraAccount::KeyRotationCapability` for + /// containing the 32-byte ed25519 `public_key` and the `DiemAccount::KeyRotationCapability` for /// `account` under `account`. /// /// # Parameters @@ -791,7 +791,7 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability` resource. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability` resource. | /// | `Errors::ALREADY_PUBLISHED` | `SharedEd25519PublicKey::ESHARED_KEY` | The `SharedEd25519PublicKey::SharedEd25519PublicKey` resource is already published under `account`. | /// | `Errors::INVALID_ARGUMENT` | `SharedEd25519PublicKey::EMALFORMED_PUBLIC_KEY` | `public_key` is an invalid ed25519 public key. | /// @@ -807,7 +807,7 @@ pub enum ScriptCall { /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` - /// config resource held under `validator_account`. It does not emit a `LibraConfig::NewEpochEvent` + /// config resource held under `validator_account`. It does not emit a `DiemConfig::NewEpochEvent` /// so the copy of this config held in the validator set will not be updated, and the changes are /// only "locally" under the `validator_account` account address. /// @@ -845,11 +845,11 @@ pub enum ScriptCall { /// # Summary /// This script removes a validator account from the validator set, and triggers a reconfiguration /// of the system to remove the validator from the system. This transaction can only be - /// successfully called by the Libra Root account. + /// successfully called by the Diem Root account. /// /// # Technical Description /// This script removes the account at `validator_address` from the validator set. This transaction - /// emits a `LibraConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event + /// emits a `DiemConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event /// has been performed, the account at `validator_address` is no longer considered to be a /// validator in the network. This transaction will fail if the validator at `validator_address` /// is not in the validator set. @@ -857,7 +857,7 @@ pub enum ScriptCall { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be removed from the validator set. | @@ -865,16 +865,16 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | - /// | `Errors::INVALID_ARGUMENT` | `LibraSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | - /// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | + /// | `Errors::INVALID_ARGUMENT` | `DiemSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | + /// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -895,9 +895,9 @@ pub enum ScriptCall { /// be sent by any account. /// /// # Technical Description - /// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. + /// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated - /// its `LibraAccount::KeyRotationCapability`. + /// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -908,8 +908,8 @@ pub enum ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key_with_nonce` @@ -920,12 +920,12 @@ pub enum ScriptCall { /// # Summary /// Rotates the sender's authentication key to the supplied new authentication key. May be sent by /// any account that has a sliding nonce resource published under it (usually this is Treasury - /// Compliance or Libra Root accounts). + /// Compliance or Diem Root accounts). /// /// # Technical Description - /// Rotates the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. + /// Rotates the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated - /// its `LibraAccount::KeyRotationCapability`. + /// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -941,8 +941,8 @@ pub enum ScriptCall { /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -952,30 +952,30 @@ pub enum ScriptCall { /// # Summary /// Rotates the specified account's authentication key to the supplied new authentication key. May - /// only be sent by the Libra Root account as a write set transaction. + /// only be sent by the Diem Root account as a write set transaction. /// /// # Technical Description - /// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. + /// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated - /// its `LibraAccount::KeyRotationCapability`. + /// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | - /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | + /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `new_key` | `vector` | New ed25519 public key to be used for `account`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | - /// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | + /// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -990,16 +990,16 @@ pub enum ScriptCall { /// /// # Technical Description /// Rotates the authentication key of the `to_recover` account to `new_key` using the - /// `LibraAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource + /// `DiemAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource /// published under `recovery_address`. This transaction can be sent either by the `to_recover` /// account, or by the account where the `RecoveryAddress::RecoveryAddress` resource is published - /// that contains `to_recover`'s `LibraAccount::KeyRotationCapability`. + /// that contains `to_recover`'s `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `account` | `&signer` | Signer reference of the sending account of the transaction. | - /// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `LibraAccount::KeyRotationCapability` is published. | + /// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `DiemAccount::KeyRotationCapability` is published. | /// | `to_recover` | `address` | The address of the account whose authentication key will be updated. | /// | `new_key` | `vector` | New ed25519 public key to be used for the account at the `to_recover` address. | /// @@ -1008,8 +1008,8 @@ pub enum ScriptCall { /// | ---------------- | -------------- | ------------- | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress::RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ECANNOT_ROTATE_KEY` | The address of `account` is not `recovery_address` or `to_recover`. | - /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `LibraAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | - /// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | + /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `DiemAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | + /// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -1093,7 +1093,7 @@ pub enum ScriptCall { /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` - /// config resource held under `validator_account`. It then emits a `LibraConfig::NewEpochEvent` to + /// config resource held under `validator_account`. It then emits a `DiemConfig::NewEpochEvent` to /// trigger a reconfiguration of the system. This reconfiguration will update the validator set /// on-chain with the updated `ValidatorConfig::ValidatorConfig`. /// @@ -1113,7 +1113,7 @@ pub enum ScriptCall { /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR_OPERATOR` | `validator_operator_account` does not have a Validator Operator role. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_TRANSACTION_SENDER` | `validator_operator_account` is not the registered operator for the validator at `validator_address`. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_CONSENSUS_KEY` | `consensus_pubkey` is not a valid ed25519 public key. | - /// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | + /// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -1142,7 +1142,7 @@ pub enum ScriptCall { /// a Validator Operator role and have a `ValidatorOperatorConfig::ValidatorOperatorConfig` /// resource published under it. The sending `account` must be a Validator and have a /// `ValidatorConfig::ValidatorConfig` resource published under it. This script does not emit a - /// `LibraConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. + /// `DiemConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. /// /// # Parameters /// | Name | Type | Description | @@ -1176,7 +1176,7 @@ pub enum ScriptCall { /// # Summary /// Sets the validator operator for a validator in the validator's configuration resource "locally" /// and does not reconfigure the system. Changes from this transaction will not picked up by the - /// system until a reconfiguration of the system is triggered. May only be sent by the Libra Root + /// system until a reconfiguration of the system is triggered. May only be sent by the Diem Root /// account as a write set transaction. /// /// # Technical Description @@ -1190,20 +1190,20 @@ pub enum ScriptCall { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | - /// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | + /// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | - /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | + /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `operator_name` | `vector` | Validator operator's human name. | /// | `operator_account` | `address` | Address of the validator operator account to be added as the `account` validator's operator. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | `Errors::NOT_PUBLISHED` | `ValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIG` | The `ValidatorOperatorConfig::ValidatorOperatorConfig` resource is not published under `operator_account`. | /// | 0 | 0 | The `human_name` field of the `ValidatorOperatorConfig::ValidatorOperatorConfig` resource under `operator_account` does not match the provided `human_name`. | /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR` | `account` does not have a Validator account role. | @@ -1240,8 +1240,8 @@ pub enum ScriptCall { /// /// ## Events /// Successful execution of the transaction will emit two events: - /// * A `Libra::MintEvent` with the amount and currency code minted is emitted on the - /// `mint_event_handle` in the stored `Libra::CurrencyInfo` resource stored under + /// * A `Diem::MintEvent` with the amount and currency code minted is emitted on the + /// `mint_event_handle` in the stored `Diem::CurrencyInfo` resource stored under /// `0xA550C18`; and /// * A `DesignatedDealer::ReceivedMintEvent` with the amount, currency code, and Designated /// Dealer's address is emitted on the `mint_event_handle` in the stored `DesignatedDealer::Dealer` @@ -1270,9 +1270,9 @@ pub enum ScriptCall { /// | `Errors::NOT_PUBLISHED` | `DesignatedDealer::EDEALER` | `DesignatedDealer::Dealer` or `DesignatedDealer::TierInfo` resource does not exist at `designated_dealer_address`. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_TIER_INDEX` | The `tier_index` is out of bounds. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_AMOUNT_FOR_TIER` | `mint_amount` exceeds the maximum allowed amount for `tier_index`. | - /// | `Errors::REQUIRES_CAPABILITY` | `Libra::EMINT_CAPABILITY` | `tc_account` does not have a `Libra::MintCapability` resource published under it. | - /// | `Errors::INVALID_STATE` | `Libra::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | - /// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | + /// | `Errors::REQUIRES_CAPABILITY` | `Diem::EMINT_CAPABILITY` | `tc_account` does not have a `Diem::MintCapability` resource published under it. | + /// | `Errors::INVALID_STATE` | `Diem::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | + /// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | /// /// # Related Scripts /// * `Script::create_designated_dealer` @@ -1325,20 +1325,48 @@ pub enum ScriptCall { }, /// # Summary - /// Update the dual attestation limit on-chain. Defined in terms of micro-LBR. The transaction can + /// Updates the Diem major version that is stored on-chain and is used by the VM. This + /// transaction can only be sent from the Diem Root account. + /// + /// # Technical Description + /// Updates the `DiemVersion` on-chain config and emits a `DiemConfig::NewEpochEvent` to trigger + /// a reconfiguration of the system. The `major` version that is passed in must be strictly greater + /// than the current major version held on-chain. The VM reads this information and can use it to + /// preserve backwards compatibility with previous major versions of the VM. + /// + /// # Parameters + /// | Name | Type | Description | + /// | ------ | ------ | ------------- | + /// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | + /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | + /// | `major` | `u64` | The `major` version of the VM to be used from this transaction on. | + /// + /// # Common Abort Conditions + /// | Error Category | Error Reason | Description | + /// | ---------------- | -------------- | ------------- | + /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `account`. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | + /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | + /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | `account` is not the Diem Root account. | + /// | `Errors::INVALID_ARGUMENT` | `DiemVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | + UpdateDiemVersion { sliding_nonce: u64, major: u64 }, + + /// # Summary + /// Update the dual attestation limit on-chain. Defined in terms of micro-XDX. The transaction can /// only be sent by the Treasury Compliance account. After this transaction all inter-VASP /// payments over this limit must be checked for dual attestation. /// /// # Technical Description - /// Updates the `micro_lbr_limit` field of the `DualAttestation::Limit` resource published under - /// `0xA550C18`. The amount is set in micro-LBR. + /// Updates the `micro_xdx_limit` field of the `DualAttestation::Limit` resource published under + /// `0xA550C18`. The amount is set in micro-XDX. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | - /// | `new_micro_lbr_limit` | `u64` | The new dual attestation limit to be used on-chain. | + /// | `new_micro_xdx_limit` | `u64` | The new dual attestation limit to be used on-chain. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -1354,17 +1382,17 @@ pub enum ScriptCall { /// * `Script::update_minting_ability` UpdateDualAttestationLimit { sliding_nonce: u64, - new_micro_lbr_limit: u64, + new_micro_xdx_limit: u64, }, /// # Summary - /// Update the rough on-chain exchange rate between a specified currency and LBR (as a conversion - /// to micro-LBR). The transaction can only be sent by the Treasury Compliance account. After this + /// Update the rough on-chain exchange rate between a specified currency and XDX (as a conversion + /// to micro-XDX). The transaction can only be sent by the Treasury Compliance account. After this /// transaction the updated exchange rate will be used for normalization of gas prices, and for /// dual attestation checking. /// /// # Technical Description - /// Updates the on-chain exchange rate from the given `Currency` to micro-LBR. The exchange rate + /// Updates the on-chain exchange rate from the given `Currency` to micro-XDX. The exchange rate /// is given by `new_exchange_rate_numerator/new_exchange_rate_denominator`. /// /// # Parameters @@ -1373,8 +1401,8 @@ pub enum ScriptCall { /// | `Currency` | Type | The Move type for the `Currency` whose exchange rate is being updated. `Currency` must be an already-registered currency on-chain. | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for the transaction. | - /// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-LBR exchange rate for `Currency`. | - /// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-LBR exchange rate for `Currency`. | + /// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-XDX exchange rate for `Currency`. | + /// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-XDX exchange rate for `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -1399,41 +1427,13 @@ pub enum ScriptCall { new_exchange_rate_denominator: u64, }, - /// # Summary - /// Updates the Libra major version that is stored on-chain and is used by the VM. This - /// transaction can only be sent from the Libra Root account. - /// - /// # Technical Description - /// Updates the `LibraVersion` on-chain config and emits a `LibraConfig::NewEpochEvent` to trigger - /// a reconfiguration of the system. The `major` version that is passed in must be strictly greater - /// than the current major version held on-chain. The VM reads this information and can use it to - /// preserve backwards compatibility with previous major versions of the VM. - /// - /// # Parameters - /// | Name | Type | Description | - /// | ------ | ------ | ------------- | - /// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | - /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | - /// | `major` | `u64` | The `major` version of the VM to be used from this transaction on. | - /// - /// # Common Abort Conditions - /// | Error Category | Error Reason | Description | - /// | ---------------- | -------------- | ------------- | - /// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `account`. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | - /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | - /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | `account` is not the Libra Root account. | - /// | `Errors::INVALID_ARGUMENT` | `LibraVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | - UpdateLibraVersion { sliding_nonce: u64, major: u64 }, - /// # Summary /// Script to allow or disallow minting of new coins in a specified currency. This transaction can /// only be sent by the Treasury Compliance account. Turning minting off for a currency will have /// no effect on coins already in circulation, and coins may still be removed from the system. /// /// # Technical Description - /// This transaction sets the `can_mint` field of the `Libra::CurrencyInfo` resource + /// This transaction sets the `can_mint` field of the `Diem::CurrencyInfo` resource /// published under `0xA550C18` to the value of `allow_minting`. Minting of coins if allowed if /// this field is set to `true` and minting of new coins in `Currency` is disallowed otherwise. /// This transaction needs to be sent by the Treasury Compliance account. @@ -1442,14 +1442,14 @@ pub enum ScriptCall { /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `Currency` | Type | The Move type for the `Currency` whose minting ability is being updated. `Currency` must be an already-registered currency on-chain. | - /// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | + /// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | /// | `allow_minting` | `bool` | Whether to allow minting of new coins in `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | `tc_account` is not the Treasury Compliance account. | - /// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | + /// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::update_dual_attestation_limit` @@ -1461,7 +1461,7 @@ pub enum ScriptCall { } impl ScriptCall { - /// Build a Libra `Script` from a structured object `ScriptCall`. + /// Build a Diem `Script` from a structured object `ScriptCall`. pub fn encode(self) -> Script { use ScriptCall::*; match self { @@ -1664,10 +1664,14 @@ impl ScriptCall { sliding_nonce, to_unfreeze_account, } => encode_unfreeze_account_script(sliding_nonce, to_unfreeze_account), + UpdateDiemVersion { + sliding_nonce, + major, + } => encode_update_diem_version_script(sliding_nonce, major), UpdateDualAttestationLimit { sliding_nonce, - new_micro_lbr_limit, - } => encode_update_dual_attestation_limit_script(sliding_nonce, new_micro_lbr_limit), + new_micro_xdx_limit, + } => encode_update_dual_attestation_limit_script(sliding_nonce, new_micro_xdx_limit), UpdateExchangeRate { currency, sliding_nonce, @@ -1679,10 +1683,6 @@ impl ScriptCall { new_exchange_rate_numerator, new_exchange_rate_denominator, ), - UpdateLibraVersion { - sliding_nonce, - major, - } => encode_update_libra_version_script(sliding_nonce, major), UpdateMintingAbility { currency, allow_minting, @@ -1690,7 +1690,7 @@ impl ScriptCall { } } - /// Try to recognize a Libra `Script` and convert it into a structured object `ScriptCall`. + /// Try to recognize a Diem `Script` and convert it into a structured object `ScriptCall`. pub fn decode(script: &Script) -> Option { match SCRIPT_DECODER_MAP.get(script.code()) { Some(decoder) => decoder(script), @@ -1701,15 +1701,15 @@ impl ScriptCall { /// # Summary /// Adds a zero `Currency` balance to the sending `account`. This will enable `account` to -/// send, receive, and hold `Libra::Libra` coins. This transaction can be +/// send, receive, and hold `Diem::Diem` coins. This transaction can be /// successfully sent by any account that is allowed to hold balances /// (e.g., VASP, Designated Dealer). /// /// # Technical Description /// After the successful execution of this transaction the sending account will have a -/// `LibraAccount::Balance` resource with zero balance published under it. Only +/// `DiemAccount::Balance` resource with zero balance published under it. Only /// accounts that can hold balances can send this transaction, the sending account cannot -/// already have a `LibraAccount::Balance` published under it. +/// already have a `DiemAccount::Balance` published under it. /// /// # Parameters /// | Name | Type | Description | @@ -1720,9 +1720,9 @@ impl ScriptCall { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | -/// | `Errors::ALREADY_PUBLISHED` | `LibraAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | +/// | `Errors::ALREADY_PUBLISHED` | `DiemAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -1743,7 +1743,7 @@ pub fn encode_add_currency_to_account_script(currency: TypeTag) -> Script { /// specified recovery account can rotate the sender account's authentication key. /// /// # Technical Description -/// Adds the `LibraAccount::KeyRotationCapability` for the sending account +/// Adds the `DiemAccount::KeyRotationCapability` for the sending account /// (`to_recover_account`) to the `RecoveryAddress::RecoveryAddress` resource under /// `recovery_address`. After this transaction has been executed successfully the account at /// `recovery_address` and the `to_recover_account` may rotate the authentication key of @@ -1763,12 +1763,12 @@ pub fn encode_add_currency_to_account_script(currency: TypeTag) -> Script { /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `to_recover_account` | `&signer` | The signer reference of the sending account of this transaction. | -/// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `LibraAccount::KeyRotationCapability` will be stored. | +/// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `DiemAccount::KeyRotationCapability` will be stored. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EINVALID_KEY_ROTATION_DELEGATION` | `to_recover_account` and `recovery_address` do not belong to the same VASP. | /// @@ -1785,37 +1785,37 @@ pub fn encode_add_recovery_rotation_capability_script(recovery_address: AccountA /// # Summary /// Adds a script hash to the transaction allowlist. This transaction -/// can only be sent by the Libra Root account. Scripts with this hash can be +/// can only be sent by the Diem Root account. Scripts with this hash can be /// sent afterward the successful execution of this script. /// /// # Technical Description /// -/// The sending account (`lr_account`) must be the Libra Root account. The script allow +/// The sending account (`dr_account`) must be the Diem Root account. The script allow /// list must not already hold the script `hash` being added. The `sliding_nonce` must be -/// a valid nonce for the Libra Root account. After this transaction has executed +/// a valid nonce for the Diem Root account. After this transaction has executed /// successfully a reconfiguration will be initiated, and the on-chain config -/// `LibraTransactionPublishingOption::LibraTransactionPublishingOption`'s +/// `DiemTransactionPublishingOption::DiemTransactionPublishingOption`'s /// `script_allow_list` field will contain the new script `hash` and transactions /// with this `hash` can be successfully sent to the network. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `hash` | `vector` | The hash of the script to be added to the script allowlist. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | -/// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | +/// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | pub fn encode_add_to_script_allow_list_script(hash: Vec, sliding_nonce: u64) -> Script { Script::new( ADD_TO_SCRIPT_ALLOW_LIST_CODE.to_vec(), @@ -1830,11 +1830,11 @@ pub fn encode_add_to_script_allow_list_script(hash: Vec, sliding_nonce: u64) /// # Summary /// Adds a validator account to the validator set, and triggers a /// reconfiguration of the system to admit the account to the validator set for the system. This -/// transaction can only be successfully called by the Libra Root account. +/// transaction can only be successfully called by the Diem Root account. /// /// # Technical Description /// This script adds the account at `validator_address` to the validator set. -/// This transaction emits a `LibraConfig::NewEpochEvent` event and triggers a +/// This transaction emits a `DiemConfig::NewEpochEvent` event and triggers a /// reconfiguration. Once the reconfiguration triggered by this script's /// execution has been performed, the account at the `validator_address` is /// considered to be a validator in the network. @@ -1845,7 +1845,7 @@ pub fn encode_add_to_script_allow_list_script(hash: Vec, sliding_nonce: u64) /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be added to the validator set. | @@ -1853,16 +1853,16 @@ pub fn encode_add_to_script_allow_list_script(hash: Vec, sliding_nonce: u64) /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -1897,21 +1897,21 @@ pub fn encode_add_validator_and_reconfigure_script( /// /// # Technical Description /// This transaction permanently destroys all the coins of `Token` type -/// stored in the `Libra::Preburn` resource published under the +/// stored in the `Diem::Preburn` resource published under the /// `preburn_address` account address. /// /// This transaction will only succeed if the sending `account` has a -/// `Libra::BurnCapability`, and a `Libra::Preburn` resource +/// `Diem::BurnCapability`, and a `Diem::Preburn` resource /// exists under `preburn_address`, with a non-zero `to_burn` field. After the successful execution /// of this transaction the `total_value` field in the -/// `Libra::CurrencyInfo` resource published under `0xA550C18` will be +/// `Diem::CurrencyInfo` resource published under `0xA550C18` will be /// decremented by the value of the `to_burn` field of the preburn resource /// under `preburn_address` immediately before this transaction, and the /// `to_burn` field of the preburn resource will have a zero value. /// /// ## Events -/// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle -/// held in the `Libra::CurrencyInfo` resource's `burn_events` published under +/// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle +/// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -1929,10 +1929,10 @@ pub fn encode_add_validator_and_reconfigure_script( /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EPREBURN_EMPTY` | The `Libra::Preburn` resource is empty (has a value of 0). | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EPREBURN_EMPTY` | The `Diem::Preburn` resource is empty (has a value of 0). | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::burn_txn_fees` @@ -1955,7 +1955,7 @@ pub fn encode_burn_script( /// # Summary /// Burns the transaction fees collected in the `CoinType` currency so that the -/// Libra association may reclaim the backing coins off-chain. May only be sent +/// Diem association may reclaim the backing coins off-chain. May only be sent /// by the Treasury Compliance account. /// /// # Technical Description @@ -1968,8 +1968,8 @@ pub fn encode_burn_script( /// account address will have a value of 0 after the successful execution of this script. /// /// ## Events -/// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle -/// held in the `Libra::CurrencyInfo` resource's `burn_events` published under +/// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle +/// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -1983,7 +1983,7 @@ pub fn encode_burn_script( /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::NOT_PUBLISHED` | `TransactionFee::ETRANSACTION_FEE` | `CoinType` is not an accepted transaction fee currency. | -/// | `Errors::INVALID_ARGUMENT` | `Libra::ECOIN` | The collected fees in `CoinType` are zero. | +/// | `Errors::INVALID_ARGUMENT` | `Diem::ECOIN` | The collected fees in `CoinType` are zero. | /// /// # Related Scripts /// * `Script::burn` @@ -1998,22 +1998,22 @@ pub fn encode_burn_txn_fees_script(coin_type: TypeTag) -> Script { /// Can only be successfully sent by an account with Treasury Compliance role. /// /// # Technical Description -/// Cancels and returns all coins held in the `Libra::Preburn` resource under the `preburn_address` and -/// return the funds to the `preburn_address` account's `LibraAccount::Balance`. -/// The transaction must be sent by an `account` with a `Libra::BurnCapability` +/// Cancels and returns all coins held in the `Diem::Preburn` resource under the `preburn_address` and +/// return the funds to the `preburn_address` account's `DiemAccount::Balance`. +/// The transaction must be sent by an `account` with a `Diem::BurnCapability` /// resource published under it. The account at `preburn_address` must have a -/// `Libra::Preburn` resource published under it, and its value must be nonzero. The transaction removes -/// the entire balance held in the `Libra::Preburn` resource, and returns it back to the account's -/// `LibraAccount::Balance` under `preburn_address`. Due to this, the account at +/// `Diem::Preburn` resource published under it, and its value must be nonzero. The transaction removes +/// the entire balance held in the `Diem::Preburn` resource, and returns it back to the account's +/// `DiemAccount::Balance` under `preburn_address`. Due to this, the account at /// `preburn_address` must already have a balance in the `Token` currency published /// before this script is called otherwise the transaction will fail. /// /// ## Events /// The successful execution of this transaction will emit: -/// * A `Libra::CancelBurnEvent` on the event handle held in the `Libra::CurrencyInfo` +/// * A `Diem::CancelBurnEvent` on the event handle held in the `Diem::CurrencyInfo` /// resource's `burn_events` published under `0xA550C18`. -/// * A `LibraAccount::ReceivedPaymentEvent` on the `preburn_address`'s -/// `LibraAccount::LibraAccount` `received_events` event handle with both the `payer` and `payee` +/// * A `DiemAccount::ReceivedPaymentEvent` on the `preburn_address`'s +/// `DiemAccount::DiemAccount` `received_events` event handle with both the `payer` and `payee` /// being `preburn_address`. /// /// # Parameters @@ -2026,12 +2026,12 @@ pub fn encode_burn_txn_fees_script(coin_type: TypeTag) -> Script { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | /// | `Errors::INVALID_STATE` | `DualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SET` | The `account` does not have a compliance key set on it but dual attestion checking was performed. | /// /// # Related Scripts @@ -2064,12 +2064,12 @@ pub fn encode_cancel_burn_script(token: TypeTag, preburn_address: AccountAddress /// /// ## Events /// Successful execution with a `child_initial_balance` greater than zero will emit: -/// * A `LibraAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, +/// * A `DiemAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the Parent VASP's -/// `LibraAccount::LibraAccount` `sent_events` handle. -/// * A `LibraAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, +/// `DiemAccount::DiemAccount` `sent_events` handle. +/// * A `DiemAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the new Child VASPS's -/// `LibraAccount::LibraAccount` `received_events` handle. +/// `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -2084,15 +2084,15 @@ pub fn encode_cancel_burn_script(token: TypeTag, preburn_address: AccountAddress /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | /// | `Errors::REQUIRES_ROLE` | `Roles::EPARENT_VASP` | The sending account wasn't a Parent VASP account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `child_address` address is already taken. | /// | `Errors::LIMIT_EXCEEDED` | `VASP::ETOO_MANY_CHILDREN` | The sending account has reached the maximum number of allowed child accounts. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | /// /// # Related Scripts /// * `Script::create_parent_vasp_account` @@ -2154,7 +2154,7 @@ pub fn encode_create_child_vasp_account_script( /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `addr` address is already taken. | /// /// # Related Scripts @@ -2212,7 +2212,7 @@ pub fn encode_create_designated_dealer_script( /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -2251,7 +2251,7 @@ pub fn encode_create_parent_vasp_account_script( /// /// # Technical Description /// Publishes a `RecoveryAddress::RecoveryAddress` resource under `account`. It then -/// extracts the `LibraAccount::KeyRotationCapability` for `account` and adds +/// extracts the `DiemAccount::KeyRotationCapability` for `account` and adds /// it to the resource. After the successful execution of this transaction /// other accounts may add their key rotation to this resource so that `account` /// may be used as a recovery account for those accounts. @@ -2264,7 +2264,7 @@ pub fn encode_create_parent_vasp_account_script( /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ENOT_A_VASP` | `account` is not a VASP account. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EKEY_ROTATION_DEPENDENCY_CYCLE` | A key rotation recovery cycle would be created by adding `account`'s key rotation capability. | /// | `Errors::ALREADY_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | A `RecoveryAddress::RecoveryAddress` resource has already been published under `account`. | @@ -2277,7 +2277,7 @@ pub fn encode_create_recovery_address_script() -> Script { } /// # Summary -/// Creates a Validator account. This transaction can only be sent by the Libra +/// Creates a Validator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -2292,7 +2292,7 @@ pub fn encode_create_recovery_address_script() -> Script { /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -2301,12 +2301,12 @@ pub fn encode_create_recovery_address_script() -> Script { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -2336,7 +2336,7 @@ pub fn encode_create_validator_account_script( } /// # Summary -/// Creates a Validator Operator account. This transaction can only be sent by the Libra +/// Creates a Validator Operator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -2348,7 +2348,7 @@ pub fn encode_create_validator_account_script( /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -2357,12 +2357,12 @@ pub fn encode_create_validator_account_script( /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -2394,7 +2394,7 @@ pub fn encode_create_validator_operator_account_script( /// # Summary /// Freezes the account at `address`. The sending account of this transaction /// must be the Treasury Compliance account. The account being frozen cannot be -/// the Libra Root or Treasury Compliance account. After the successful +/// the Diem Root or Treasury Compliance account. After the successful /// execution of this transaction no transactions may be sent from the frozen /// account, and the frozen account may not send or receive coins. /// @@ -2402,7 +2402,7 @@ pub fn encode_create_validator_operator_account_script( /// Sets the `AccountFreezing::FreezingBit` to `true` and emits a /// `AccountFreezing::FreezeAccountEvent`. The transaction sender must be the /// Treasury Compliance account, but the account at `to_freeze_account` must -/// not be either `0xA550C18` (the Libra Root address), or `0xB1E55ED` (the +/// not be either `0xA550C18` (the Diem Root address), or `0xB1E55ED` (the /// Treasury Compliance address). Note that this is a per-account property /// e.g., freezing a Parent VASP will not effect the status any of its child /// accounts and vice versa. @@ -2430,7 +2430,7 @@ pub fn encode_create_validator_operator_account_script( /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_TC` | `to_freeze_account` was the Treasury Compliance account (`0xB1E55ED`). | -/// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_LIBRA_ROOT` | `to_freeze_account` was the Libra Root account (`0xA550C18`). | +/// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_DIEM_ROOT` | `to_freeze_account` was the Diem Root account (`0xA550C18`). | /// /// # Related Scripts /// * `Script::unfreeze_account` @@ -2462,15 +2462,15 @@ pub fn encode_freeze_account_script( /// `metadata` and an (optional) `metadata_signature` on the message /// `metadata` | `Signer::address_of(payer)` | `amount` | `DualAttestation::DOMAIN_SEPARATOR`. /// The `metadata` and `metadata_signature` parameters are only required if `amount` >= -/// `DualAttestation::get_cur_microlibra_limit` LBR and `payer` and `payee` are distinct VASPs. +/// `DualAttestation::get_cur_microdiem_limit` XDX and `payer` and `payee` are distinct VASPs. /// However, a transaction sender can opt in to dual attestation even when it is not required /// (e.g., a DesignatedDealer -> VASP payment) by providing a non-empty `metadata_signature`. -/// Standardized `metadata` LCS format can be found in `libra_types::transaction::metadata::Metadata`. +/// Standardized `metadata` LCS format can be found in `diem_types::transaction::metadata::Metadata`. /// /// ## Events /// Successful execution of this script emits two events: -/// * A `LibraAccount::SentPaymentEvent` on `payer`'s `LibraAccount::LibraAccount` `sent_events` handle; and -/// * A `LibraAccount::ReceivedPaymentEvent` on `payee`'s `LibraAccount::LibraAccount` `received_events` handle. +/// * A `DiemAccount::SentPaymentEvent` on `payer`'s `DiemAccount::DiemAccount` `sent_events` handle; and +/// * A `DiemAccount::ReceivedPaymentEvent` on `payee`'s `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -2484,16 +2484,16 @@ pub fn encode_freeze_account_script( /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | /// | `Errors::INVALID_STATE` | `AccountFreezing::EACCOUNT_FROZEN` | The `payee` account is frozen. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EMALFORMED_METADATA_SIGNATURE` | `metadata_signature` is not 64 bytes. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EINVALID_METADATA_SIGNATURE` | `metadata_signature` does not verify on the against the `payee'`s `DualAttestation::Credential` `compliance_public_key` public key. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of LBR. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for LBR. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of XDX. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for XDX. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -2526,16 +2526,16 @@ pub fn encode_peer_to_peer_with_metadata_script( /// /// # Technical Description /// Moves the specified `amount` of coins in `Token` currency from the sending `account`'s -/// `LibraAccount::Balance` to the `Libra::Preburn` published under the same +/// `DiemAccount::Balance` to the `Diem::Preburn` published under the same /// `account`. `account` must have both of these resources published under it at the start of this /// transaction in order for it to execute successfully. /// /// ## Events /// Successful execution of this script emits two events: -/// * `LibraAccount::SentPaymentEvent ` on `account`'s `LibraAccount::LibraAccount` `sent_events` +/// * `DiemAccount::SentPaymentEvent ` on `account`'s `DiemAccount::DiemAccount` `sent_events` /// handle with the `payee` and `payer` fields being `account`'s address; and -/// * A `Libra::PreburnEvent` with `Token`'s currency code on the -/// `Libra::CurrencyInfo` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EPREBURN_OCCUPIED` | The `value` field in the `Libra::Preburn` resource under the sender is non-zero. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Token` is not a registered currency on-chain. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for `account` has already been extracted. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Token`. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `account` doesn't hold a balance in `Token`. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | `account` doesn't have a `Diem::Preburn` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EPREBURN_OCCUPIED` | The `value` field in the `Diem::Preburn` resource under the sender is non-zero. | /// | `Errors::NOT_PUBLISHED` | `Roles::EROLE_ID` | The `account` did not have a role assigned to it. | /// | `Errors::REQUIRES_ROLE` | `Roles::EDESIGNATED_DEALER` | The `account` did not have the role of DesignatedDealer. | /// @@ -2577,7 +2577,7 @@ pub fn encode_preburn_script(token: TypeTag, amount: u64) -> Script { /// # Technical Description /// Rotates the authentication key of the sending account to `public_key`, /// and publishes a `SharedEd25519PublicKey::SharedEd25519PublicKey` resource -/// containing the 32-byte ed25519 `public_key` and the `LibraAccount::KeyRotationCapability` for +/// containing the 32-byte ed25519 `public_key` and the `DiemAccount::KeyRotationCapability` for /// `account` under `account`. /// /// # Parameters @@ -2589,7 +2589,7 @@ pub fn encode_preburn_script(token: TypeTag, amount: u64) -> Script { /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability` resource. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability` resource. | /// | `Errors::ALREADY_PUBLISHED` | `SharedEd25519PublicKey::ESHARED_KEY` | The `SharedEd25519PublicKey::SharedEd25519PublicKey` resource is already published under `account`. | /// | `Errors::INVALID_ARGUMENT` | `SharedEd25519PublicKey::EMALFORMED_PUBLIC_KEY` | `public_key` is an invalid ed25519 public key. | /// @@ -2611,7 +2611,7 @@ pub fn encode_publish_shared_ed25519_public_key_script(public_key: Vec) -> S /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` -/// config resource held under `validator_account`. It does not emit a `LibraConfig::NewEpochEvent` +/// config resource held under `validator_account`. It does not emit a `DiemConfig::NewEpochEvent` /// so the copy of this config held in the validator set will not be updated, and the changes are /// only "locally" under the `validator_account` account address. /// @@ -2660,11 +2660,11 @@ pub fn encode_register_validator_config_script( /// # Summary /// This script removes a validator account from the validator set, and triggers a reconfiguration /// of the system to remove the validator from the system. This transaction can only be -/// successfully called by the Libra Root account. +/// successfully called by the Diem Root account. /// /// # Technical Description /// This script removes the account at `validator_address` from the validator set. This transaction -/// emits a `LibraConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event +/// emits a `DiemConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event /// has been performed, the account at `validator_address` is no longer considered to be a /// validator in the network. This transaction will fail if the validator at `validator_address` /// is not in the validator set. @@ -2672,7 +2672,7 @@ pub fn encode_register_validator_config_script( /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be removed from the validator set. | @@ -2680,16 +2680,16 @@ pub fn encode_register_validator_config_script( /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -2720,9 +2720,9 @@ pub fn encode_remove_validator_and_reconfigure_script( /// be sent by any account. /// /// # Technical Description -/// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -2733,8 +2733,8 @@ pub fn encode_remove_validator_and_reconfigure_script( /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key_with_nonce` @@ -2751,12 +2751,12 @@ pub fn encode_rotate_authentication_key_script(new_key: Vec) -> Script { /// # Summary /// Rotates the sender's authentication key to the supplied new authentication key. May be sent by /// any account that has a sliding nonce resource published under it (usually this is Treasury -/// Compliance or Libra Root accounts). +/// Compliance or Diem Root accounts). /// /// # Technical Description -/// Rotates the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotates the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -2772,8 +2772,8 @@ pub fn encode_rotate_authentication_key_script(new_key: Vec) -> Script { /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -2795,30 +2795,30 @@ pub fn encode_rotate_authentication_key_with_nonce_script( /// # Summary /// Rotates the specified account's authentication key to the supplied new authentication key. May -/// only be sent by the Libra Root account as a write set transaction. +/// only be sent by the Diem Root account as a write set transaction. /// /// # Technical Description -/// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | -/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | +/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `new_key` | `vector` | New ed25519 public key to be used for `account`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -2845,16 +2845,16 @@ pub fn encode_rotate_authentication_key_with_nonce_admin_script( /// /// # Technical Description /// Rotates the authentication key of the `to_recover` account to `new_key` using the -/// `LibraAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource +/// `DiemAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource /// published under `recovery_address`. This transaction can be sent either by the `to_recover` /// account, or by the account where the `RecoveryAddress::RecoveryAddress` resource is published -/// that contains `to_recover`'s `LibraAccount::KeyRotationCapability`. +/// that contains `to_recover`'s `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `account` | `&signer` | Signer reference of the sending account of the transaction. | -/// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `LibraAccount::KeyRotationCapability` is published. | +/// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `DiemAccount::KeyRotationCapability` is published. | /// | `to_recover` | `address` | The address of the account whose authentication key will be updated. | /// | `new_key` | `vector` | New ed25519 public key to be used for the account at the `to_recover` address. | /// @@ -2863,8 +2863,8 @@ pub fn encode_rotate_authentication_key_with_nonce_admin_script( /// | ---------------- | -------------- | ------------- | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress::RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ECANNOT_ROTATE_KEY` | The address of `account` is not `recovery_address` or `to_recover`. | -/// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `LibraAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `DiemAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -2973,7 +2973,7 @@ pub fn encode_rotate_shared_ed25519_public_key_script(public_key: Vec) -> Sc /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` -/// config resource held under `validator_account`. It then emits a `LibraConfig::NewEpochEvent` to +/// config resource held under `validator_account`. It then emits a `DiemConfig::NewEpochEvent` to /// trigger a reconfiguration of the system. This reconfiguration will update the validator set /// on-chain with the updated `ValidatorConfig::ValidatorConfig`. /// @@ -2993,7 +2993,7 @@ pub fn encode_rotate_shared_ed25519_public_key_script(public_key: Vec) -> Sc /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR_OPERATOR` | `validator_operator_account` does not have a Validator Operator role. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_TRANSACTION_SENDER` | `validator_operator_account` is not the registered operator for the validator at `validator_address`. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_CONSENSUS_KEY` | `consensus_pubkey` is not a valid ed25519 public key. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -3033,7 +3033,7 @@ pub fn encode_set_validator_config_and_reconfigure_script( /// a Validator Operator role and have a `ValidatorOperatorConfig::ValidatorOperatorConfig` /// resource published under it. The sending `account` must be a Validator and have a /// `ValidatorConfig::ValidatorConfig` resource published under it. This script does not emit a -/// `LibraConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. +/// `DiemConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. /// /// # Parameters /// | Name | Type | Description | @@ -3076,7 +3076,7 @@ pub fn encode_set_validator_operator_script( /// # Summary /// Sets the validator operator for a validator in the validator's configuration resource "locally" /// and does not reconfigure the system. Changes from this transaction will not picked up by the -/// system until a reconfiguration of the system is triggered. May only be sent by the Libra Root +/// system until a reconfiguration of the system is triggered. May only be sent by the Diem Root /// account as a write set transaction. /// /// # Technical Description @@ -3090,20 +3090,20 @@ pub fn encode_set_validator_operator_script( /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | -/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | +/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `operator_name` | `vector` | Validator operator's human name. | /// | `operator_account` | `address` | Address of the validator operator account to be added as the `account` validator's operator. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | `Errors::NOT_PUBLISHED` | `ValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIG` | The `ValidatorOperatorConfig::ValidatorOperatorConfig` resource is not published under `operator_account`. | /// | 0 | 0 | The `human_name` field of the `ValidatorOperatorConfig::ValidatorOperatorConfig` resource under `operator_account` does not match the provided `human_name`. | /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR` | `account` does not have a Validator account role. | @@ -3150,8 +3150,8 @@ pub fn encode_set_validator_operator_with_nonce_admin_script( /// /// ## Events /// Successful execution of the transaction will emit two events: -/// * A `Libra::MintEvent` with the amount and currency code minted is emitted on the -/// `mint_event_handle` in the stored `Libra::CurrencyInfo` resource stored under +/// * A `Diem::MintEvent` with the amount and currency code minted is emitted on the +/// `mint_event_handle` in the stored `Diem::CurrencyInfo` resource stored under /// `0xA550C18`; and /// * A `DesignatedDealer::ReceivedMintEvent` with the amount, currency code, and Designated /// Dealer's address is emitted on the `mint_event_handle` in the stored `DesignatedDealer::Dealer` @@ -3180,9 +3180,9 @@ pub fn encode_set_validator_operator_with_nonce_admin_script( /// | `Errors::NOT_PUBLISHED` | `DesignatedDealer::EDEALER` | `DesignatedDealer::Dealer` or `DesignatedDealer::TierInfo` resource does not exist at `designated_dealer_address`. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_TIER_INDEX` | The `tier_index` is out of bounds. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_AMOUNT_FOR_TIER` | `mint_amount` exceeds the maximum allowed amount for `tier_index`. | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EMINT_CAPABILITY` | `tc_account` does not have a `Libra::MintCapability` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EMINT_CAPABILITY` | `tc_account` does not have a `Diem::MintCapability` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | /// /// # Related Scripts /// * `Script::create_designated_dealer` @@ -3255,20 +3255,57 @@ pub fn encode_unfreeze_account_script( } /// # Summary -/// Update the dual attestation limit on-chain. Defined in terms of micro-LBR. The transaction can +/// Updates the Diem major version that is stored on-chain and is used by the VM. This +/// transaction can only be sent from the Diem Root account. +/// +/// # Technical Description +/// Updates the `DiemVersion` on-chain config and emits a `DiemConfig::NewEpochEvent` to trigger +/// a reconfiguration of the system. The `major` version that is passed in must be strictly greater +/// than the current major version held on-chain. The VM reads this information and can use it to +/// preserve backwards compatibility with previous major versions of the VM. +/// +/// # Parameters +/// | Name | Type | Description | +/// | ------ | ------ | ------------- | +/// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | +/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | +/// | `major` | `u64` | The `major` version of the VM to be used from this transaction on. | +/// +/// # Common Abort Conditions +/// | Error Category | Error Reason | Description | +/// | ---------------- | -------------- | ------------- | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `account`. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | `account` is not the Diem Root account. | +/// | `Errors::INVALID_ARGUMENT` | `DiemVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | +pub fn encode_update_diem_version_script(sliding_nonce: u64, major: u64) -> Script { + Script::new( + UPDATE_DIEM_VERSION_CODE.to_vec(), + vec![], + vec![ + TransactionArgument::U64(sliding_nonce), + TransactionArgument::U64(major), + ], + ) +} + +/// # Summary +/// Update the dual attestation limit on-chain. Defined in terms of micro-XDX. The transaction can /// only be sent by the Treasury Compliance account. After this transaction all inter-VASP /// payments over this limit must be checked for dual attestation. /// /// # Technical Description -/// Updates the `micro_lbr_limit` field of the `DualAttestation::Limit` resource published under -/// `0xA550C18`. The amount is set in micro-LBR. +/// Updates the `micro_xdx_limit` field of the `DualAttestation::Limit` resource published under +/// `0xA550C18`. The amount is set in micro-XDX. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | -/// | `new_micro_lbr_limit` | `u64` | The new dual attestation limit to be used on-chain. | +/// | `new_micro_xdx_limit` | `u64` | The new dual attestation limit to be used on-chain. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -3284,26 +3321,26 @@ pub fn encode_unfreeze_account_script( /// * `Script::update_minting_ability` pub fn encode_update_dual_attestation_limit_script( sliding_nonce: u64, - new_micro_lbr_limit: u64, + new_micro_xdx_limit: u64, ) -> Script { Script::new( UPDATE_DUAL_ATTESTATION_LIMIT_CODE.to_vec(), vec![], vec![ TransactionArgument::U64(sliding_nonce), - TransactionArgument::U64(new_micro_lbr_limit), + TransactionArgument::U64(new_micro_xdx_limit), ], ) } /// # Summary -/// Update the rough on-chain exchange rate between a specified currency and LBR (as a conversion -/// to micro-LBR). The transaction can only be sent by the Treasury Compliance account. After this +/// Update the rough on-chain exchange rate between a specified currency and XDX (as a conversion +/// to micro-XDX). The transaction can only be sent by the Treasury Compliance account. After this /// transaction the updated exchange rate will be used for normalization of gas prices, and for /// dual attestation checking. /// /// # Technical Description -/// Updates the on-chain exchange rate from the given `Currency` to micro-LBR. The exchange rate +/// Updates the on-chain exchange rate from the given `Currency` to micro-XDX. The exchange rate /// is given by `new_exchange_rate_numerator/new_exchange_rate_denominator`. /// /// # Parameters @@ -3312,8 +3349,8 @@ pub fn encode_update_dual_attestation_limit_script( /// | `Currency` | Type | The Move type for the `Currency` whose exchange rate is being updated. `Currency` must be an already-registered currency on-chain. | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for the transaction. | -/// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-LBR exchange rate for `Currency`. | -/// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-LBR exchange rate for `Currency`. | +/// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-XDX exchange rate for `Currency`. | +/// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-XDX exchange rate for `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -3348,50 +3385,13 @@ pub fn encode_update_exchange_rate_script( ) } -/// # Summary -/// Updates the Libra major version that is stored on-chain and is used by the VM. This -/// transaction can only be sent from the Libra Root account. -/// -/// # Technical Description -/// Updates the `LibraVersion` on-chain config and emits a `LibraConfig::NewEpochEvent` to trigger -/// a reconfiguration of the system. The `major` version that is passed in must be strictly greater -/// than the current major version held on-chain. The VM reads this information and can use it to -/// preserve backwards compatibility with previous major versions of the VM. -/// -/// # Parameters -/// | Name | Type | Description | -/// | ------ | ------ | ------------- | -/// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | -/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | -/// | `major` | `u64` | The `major` version of the VM to be used from this transaction on. | -/// -/// # Common Abort Conditions -/// | Error Category | Error Reason | Description | -/// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `account`. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | `account` is not the Libra Root account. | -/// | `Errors::INVALID_ARGUMENT` | `LibraVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | -pub fn encode_update_libra_version_script(sliding_nonce: u64, major: u64) -> Script { - Script::new( - UPDATE_LIBRA_VERSION_CODE.to_vec(), - vec![], - vec![ - TransactionArgument::U64(sliding_nonce), - TransactionArgument::U64(major), - ], - ) -} - /// # Summary /// Script to allow or disallow minting of new coins in a specified currency. This transaction can /// only be sent by the Treasury Compliance account. Turning minting off for a currency will have /// no effect on coins already in circulation, and coins may still be removed from the system. /// /// # Technical Description -/// This transaction sets the `can_mint` field of the `Libra::CurrencyInfo` resource +/// This transaction sets the `can_mint` field of the `Diem::CurrencyInfo` resource /// published under `0xA550C18` to the value of `allow_minting`. Minting of coins if allowed if /// this field is set to `true` and minting of new coins in `Currency` is disallowed otherwise. /// This transaction needs to be sent by the Treasury Compliance account. @@ -3400,14 +3400,14 @@ pub fn encode_update_libra_version_script(sliding_nonce: u64, major: u64) -> Scr /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `Currency` | Type | The Move type for the `Currency` whose minting ability is being updated. `Currency` must be an already-registered currency on-chain. | -/// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | +/// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | /// | `allow_minting` | `bool` | Whether to allow minting of new coins in `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | `tc_account` is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::update_dual_attestation_limit` @@ -3653,10 +3653,17 @@ fn decode_unfreeze_account_script(script: &Script) -> Option { }) } +fn decode_update_diem_version_script(script: &Script) -> Option { + Some(ScriptCall::UpdateDiemVersion { + sliding_nonce: decode_u64_argument(script.args().get(0)?.clone())?, + major: decode_u64_argument(script.args().get(1)?.clone())?, + }) +} + fn decode_update_dual_attestation_limit_script(script: &Script) -> Option { Some(ScriptCall::UpdateDualAttestationLimit { sliding_nonce: decode_u64_argument(script.args().get(0)?.clone())?, - new_micro_lbr_limit: decode_u64_argument(script.args().get(1)?.clone())?, + new_micro_xdx_limit: decode_u64_argument(script.args().get(1)?.clone())?, }) } @@ -3669,13 +3676,6 @@ fn decode_update_exchange_rate_script(script: &Script) -> Option { }) } -fn decode_update_libra_version_script(script: &Script) -> Option { - Some(ScriptCall::UpdateLibraVersion { - sliding_nonce: decode_u64_argument(script.args().get(0)?.clone())?, - major: decode_u64_argument(script.args().get(1)?.clone())?, - }) -} - fn decode_update_minting_ability_script(script: &Script) -> Option { Some(ScriptCall::UpdateMintingAbility { currency: script.ty_args().get(0)?.clone(), @@ -3804,6 +3804,10 @@ static SCRIPT_DECODER_MAP: once_cell::sync::Lazy = once_cell::sync:: UNFREEZE_ACCOUNT_CODE.to_vec(), Box::new(decode_unfreeze_account_script), ); + map.insert( + UPDATE_DIEM_VERSION_CODE.to_vec(), + Box::new(decode_update_diem_version_script), + ); map.insert( UPDATE_DUAL_ATTESTATION_LIMIT_CODE.to_vec(), Box::new(decode_update_dual_attestation_limit_script), @@ -3812,10 +3816,6 @@ static SCRIPT_DECODER_MAP: once_cell::sync::Lazy = once_cell::sync:: UPDATE_EXCHANGE_RATE_CODE.to_vec(), Box::new(decode_update_exchange_rate_script), ); - map.insert( - UPDATE_LIBRA_VERSION_CODE.to_vec(), - Box::new(decode_update_libra_version_script), - ); map.insert( UPDATE_MINTING_ABILITY_CODE.to_vec(), Box::new(decode_update_minting_ability_script), @@ -3852,16 +3852,16 @@ fn decode_u8vector_argument(arg: TransactionArgument) -> Option> { } const ADD_CURRENCY_TO_ACCOUNT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 7, 7, 17, 26, 8, 43, 16, 0, - 0, 0, 1, 0, 1, 1, 1, 0, 2, 1, 6, 12, 0, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, - 117, 110, 116, 12, 97, 100, 100, 95, 99, 117, 114, 114, 101, 110, 99, 121, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 3, 11, 0, 56, 0, 2, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 7, 7, 17, 25, 8, 42, 16, 0, + 0, 0, 1, 0, 1, 1, 1, 0, 2, 1, 6, 12, 0, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, + 110, 116, 12, 97, 100, 100, 95, 99, 117, 114, 114, 101, 110, 99, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 3, 11, 0, 56, 0, 2, ]; const ADD_RECOVERY_ROTATION_CAPABILITY_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 10, 5, 18, 15, 7, 33, 107, 8, 140, 1, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 10, 5, 18, 15, 7, 33, 106, 8, 139, 1, 16, 0, 0, 0, 1, 0, 2, 1, 0, 0, 3, 0, 1, 0, 1, 4, 2, 3, 0, 1, 6, 12, 1, 8, 0, 2, 8, 0, 5, 0, 2, - 6, 12, 5, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 15, 82, 101, 99, 111, 118, + 6, 12, 5, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 15, 82, 101, 99, 111, 118, 101, 114, 121, 65, 100, 100, 114, 101, 115, 115, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, @@ -3871,36 +3871,35 @@ const ADD_RECOVERY_ROTATION_CAPABILITY_CODE: &[u8] = &[ ]; const ADD_TO_SCRIPT_ALLOW_LIST_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 16, 7, 30, 93, 8, 123, 16, 0, 0, 0, - 1, 0, 2, 0, 1, 0, 1, 3, 2, 1, 0, 2, 6, 12, 10, 2, 0, 2, 6, 12, 3, 3, 6, 12, 10, 2, 3, 32, 76, - 105, 98, 114, 97, 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, 12, 83, 108, 105, 100, 105, 110, 103, 78, - 111, 110, 99, 101, 24, 97, 100, 100, 95, 116, 111, 95, 115, 99, 114, 105, 112, 116, 95, 97, - 108, 108, 111, 119, 95, 108, 105, 115, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, - 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 3, 1, 7, 10, 0, 10, 2, 17, 1, 11, 0, 11, 1, 17, 0, 2, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 16, 7, 30, 92, 8, 122, 16, 0, 0, 0, + 1, 0, 2, 0, 1, 0, 1, 3, 2, 1, 0, 2, 6, 12, 10, 2, 0, 2, 6, 12, 3, 3, 6, 12, 10, 2, 3, 31, 68, + 105, 101, 109, 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, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, + 110, 99, 101, 24, 97, 100, 100, 95, 116, 111, 95, 115, 99, 114, 105, 112, 116, 95, 97, 108, + 108, 111, 119, 95, 108, 105, 115, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, + 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 3, 1, 7, 10, 0, 10, 2, 17, 1, 11, 0, 11, 1, 17, 0, 2, ]; const ADD_VALIDATOR_AND_RECONFIGURE_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 6, 3, 6, 15, 5, 21, 24, 7, 45, 92, 8, 137, 1, 16, 0, 0, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 6, 3, 6, 15, 5, 21, 24, 7, 45, 91, 8, 136, 1, 16, 0, 0, 0, 1, 0, 2, 1, 3, 0, 1, 0, 2, 4, 2, 3, 0, 0, 5, 4, 1, 0, 2, 6, 12, 3, 0, 1, 5, 1, 10, 2, 2, 6, - 12, 5, 4, 6, 12, 3, 10, 2, 5, 2, 1, 3, 11, 76, 105, 98, 114, 97, 83, 121, 115, 116, 101, 109, - 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 15, 86, 97, 108, 105, 100, 97, - 116, 111, 114, 67, 111, 110, 102, 105, 103, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, - 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 14, 103, 101, 116, 95, 104, 117, 109, 97, - 110, 95, 110, 97, 109, 101, 13, 97, 100, 100, 95, 118, 97, 108, 105, 100, 97, 116, 111, 114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 6, 18, 10, 0, 10, 1, 17, 0, 10, 3, 17, 1, - 11, 2, 33, 12, 4, 11, 4, 3, 14, 11, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, 0, 10, 3, 17, 2, - 2, + 12, 5, 4, 6, 12, 3, 10, 2, 5, 2, 1, 3, 10, 68, 105, 101, 109, 83, 121, 115, 116, 101, 109, 12, + 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 15, 86, 97, 108, 105, 100, 97, 116, + 111, 114, 67, 111, 110, 102, 105, 103, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, + 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 14, 103, 101, 116, 95, 104, 117, 109, 97, 110, + 95, 110, 97, 109, 101, 13, 97, 100, 100, 95, 118, 97, 108, 105, 100, 97, 116, 111, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 6, 18, 10, 0, 10, 1, 17, 0, 10, 3, 17, 1, 11, + 2, 33, 12, 4, 11, 4, 3, 14, 11, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, 0, 10, 3, 17, 2, 2, ]; const BURN_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 17, 7, 34, 46, 8, 80, 16, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 17, 7, 34, 45, 8, 79, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 1, 1, 1, 4, 2, 6, 12, 3, 0, 2, 6, 12, 5, 3, 6, 12, 3, 5, - 1, 9, 0, 5, 76, 105, 98, 114, 97, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, - 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, - 114, 116, 4, 98, 117, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 7, - 10, 0, 10, 1, 17, 0, 11, 0, 10, 2, 56, 0, 2, + 1, 9, 0, 4, 68, 105, 101, 109, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, + 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, + 116, 4, 98, 117, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 7, 10, + 0, 10, 1, 17, 0, 11, 0, 10, 2, 56, 0, 2, ]; const BURN_TXN_FEES_CODE: &[u8] = &[ @@ -3911,54 +3910,54 @@ const BURN_TXN_FEES_CODE: &[u8] = &[ ]; const CANCEL_BURN_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 8, 7, 18, 25, 8, 43, 16, 0, - 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 6, 12, 5, 0, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 8, 7, 18, 24, 8, 42, 16, 0, + 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 6, 12, 5, 0, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 11, 99, 97, 110, 99, 101, 108, 95, 98, 117, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 4, 11, 0, 10, 1, 56, 0, 2, ]; const CREATE_CHILD_VASP_ACCOUNT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 8, 1, 0, 2, 2, 2, 4, 3, 6, 22, 4, 28, 4, 5, 32, 35, 7, 67, 123, - 8, 190, 1, 16, 6, 206, 1, 4, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 1, 0, 3, 2, 3, 0, 0, 4, 4, 1, 1, + 161, 28, 235, 11, 1, 0, 0, 0, 8, 1, 0, 2, 2, 2, 4, 3, 6, 22, 4, 28, 4, 5, 32, 35, 7, 67, 122, + 8, 189, 1, 16, 6, 205, 1, 4, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 1, 0, 3, 2, 3, 0, 0, 4, 4, 1, 1, 1, 0, 5, 3, 1, 0, 0, 6, 2, 6, 4, 6, 12, 5, 10, 2, 1, 0, 1, 6, 12, 1, 8, 0, 5, 6, 8, 0, 5, 3, - 10, 2, 10, 2, 5, 6, 12, 5, 10, 2, 1, 3, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, - 117, 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, 112, 97, 98, 105, 108, 105, - 116, 121, 25, 99, 114, 101, 97, 116, 101, 95, 99, 104, 105, 108, 100, 95, 118, 97, 115, 112, - 95, 97, 99, 99, 111, 117, 110, 116, 27, 101, 120, 116, 114, 97, 99, 116, 95, 119, 105, 116, - 104, 100, 114, 97, 119, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 8, 112, 97, 121, 95, - 102, 114, 111, 109, 27, 114, 101, 115, 116, 111, 114, 101, 95, 119, 105, 116, 104, 100, 114, - 97, 119, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 10, 2, 1, 0, 1, 1, 5, 3, 25, 10, 0, 10, 1, 11, 2, 10, 3, 56, 0, 10, 4, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 3, 10, 5, 22, 11, 0, 17, 1, 12, 5, 14, 5, 10, 1, 10, 4, 7, 0, 7, 0, 56, 1, - 11, 5, 17, 3, 5, 24, 11, 0, 1, 2, + 10, 2, 10, 2, 5, 6, 12, 5, 10, 2, 1, 3, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, + 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, 112, 97, 98, 105, 108, 105, 116, + 121, 25, 99, 114, 101, 97, 116, 101, 95, 99, 104, 105, 108, 100, 95, 118, 97, 115, 112, 95, 97, + 99, 99, 111, 117, 110, 116, 27, 101, 120, 116, 114, 97, 99, 116, 95, 119, 105, 116, 104, 100, + 114, 97, 119, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 8, 112, 97, 121, 95, 102, 114, + 111, 109, 27, 114, 101, 115, 116, 111, 114, 101, 95, 119, 105, 116, 104, 100, 114, 97, 119, 95, + 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 10, 2, 1, 0, 1, 1, 5, 3, 25, 10, 0, 10, 1, 11, 2, 10, 3, 56, 0, 10, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 3, 10, 5, 22, 11, 0, 17, 1, 12, 5, 14, 5, 10, 1, 10, 4, 7, 0, 7, 0, 56, 1, 11, 5, 17, 3, + 5, 24, 11, 0, 1, 2, ]; const CREATE_DESIGNATED_DEALER_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 27, 7, 44, 73, 8, 117, 16, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 27, 7, 44, 72, 8, 116, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 1, 1, 1, 4, 2, 6, 12, 3, 0, 5, 6, 12, 5, 10, 2, 10, 2, - 1, 6, 6, 12, 3, 5, 10, 2, 10, 2, 1, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, - 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, - 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 24, 99, 114, - 101, 97, 116, 101, 95, 100, 101, 115, 105, 103, 110, 97, 116, 101, 100, 95, 100, 101, 97, 108, - 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 10, 10, 0, 10, 1, 17, 0, - 11, 0, 10, 2, 11, 3, 11, 4, 10, 5, 56, 0, 2, + 1, 6, 6, 12, 3, 5, 10, 2, 10, 2, 1, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, + 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, + 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 24, 99, 114, 101, 97, + 116, 101, 95, 100, 101, 115, 105, 103, 110, 97, 116, 101, 100, 95, 100, 101, 97, 108, 101, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 10, 10, 0, 10, 1, 17, 0, 11, 0, 10, + 2, 11, 3, 11, 4, 10, 5, 56, 0, 2, ]; const CREATE_PARENT_VASP_ACCOUNT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 27, 7, 44, 75, 8, 119, 16, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 27, 7, 44, 74, 8, 118, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 1, 1, 1, 4, 2, 6, 12, 3, 0, 5, 6, 12, 5, 10, 2, 10, 2, - 1, 6, 6, 12, 3, 5, 10, 2, 10, 2, 1, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, - 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, - 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 26, 99, 114, - 101, 97, 116, 101, 95, 112, 97, 114, 101, 110, 116, 95, 118, 97, 115, 112, 95, 97, 99, 99, 111, - 117, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 10, 10, 0, 10, 1, - 17, 0, 11, 0, 10, 2, 11, 3, 11, 4, 10, 5, 56, 0, 2, + 1, 6, 6, 12, 3, 5, 10, 2, 10, 2, 1, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, + 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, + 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 26, 99, 114, 101, 97, + 116, 101, 95, 112, 97, 114, 101, 110, 116, 95, 118, 97, 115, 112, 95, 97, 99, 99, 111, 117, + 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 10, 10, 0, 10, 1, 17, 0, + 11, 0, 10, 2, 11, 3, 11, 4, 10, 5, 56, 0, 2, ]; const CREATE_RECOVERY_ADDRESS_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 10, 5, 18, 12, 7, 30, 91, 8, 121, 16, - 0, 0, 0, 1, 0, 2, 1, 0, 0, 3, 0, 1, 0, 1, 4, 2, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 12, 8, 0, 0, 12, - 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 15, 82, 101, 99, 111, 118, 101, 114, 121, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 10, 5, 18, 12, 7, 30, 90, 8, 120, 16, + 0, 0, 0, 1, 0, 2, 1, 0, 0, 3, 0, 1, 0, 1, 4, 2, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 12, 8, 0, 0, 11, + 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 15, 82, 101, 99, 111, 118, 101, 114, 121, 65, 100, 100, 114, 101, 115, 115, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, @@ -3967,9 +3966,9 @@ const CREATE_RECOVERY_ADDRESS_CODE: &[u8] = &[ ]; const CREATE_VALIDATOR_ACCOUNT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 22, 7, 36, 73, 8, 109, 16, 0, 0, 0, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 22, 7, 36, 72, 8, 108, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 0, 2, 6, 12, 3, 0, 4, 6, 12, 5, 10, 2, 10, 2, 5, 6, 12, 3, 5, 10, - 2, 10, 2, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, + 2, 10, 2, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 24, 99, 114, 101, 97, 116, 101, 95, 118, 97, 108, 105, 100, 97, 116, 111, 114, 95, 97, 99, 99, 111, 117, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3977,9 +3976,9 @@ const CREATE_VALIDATOR_ACCOUNT_CODE: &[u8] = &[ ]; const CREATE_VALIDATOR_OPERATOR_ACCOUNT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 22, 7, 36, 82, 8, 118, 16, 0, 0, 0, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 22, 7, 36, 81, 8, 117, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 0, 2, 6, 12, 3, 0, 4, 6, 12, 5, 10, 2, 10, 2, 5, 6, 12, 3, 5, 10, - 2, 10, 2, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, + 2, 10, 2, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 33, 99, 114, 101, 97, 116, 101, 95, 118, 97, 108, 105, 100, 97, 116, 111, 114, 95, 111, 112, 101, 114, 97, 116, 111, 114, 95, 97, 99, 99, 111, 117, @@ -3998,10 +3997,10 @@ const FREEZE_ACCOUNT_CODE: &[u8] = &[ ]; const PEER_TO_PEER_WITH_METADATA_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 2, 2, 2, 4, 3, 6, 16, 4, 22, 2, 5, 24, 29, 7, 53, 97, 8, - 150, 1, 16, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 0, 0, 3, 2, 3, 1, 1, 0, 4, 1, 3, 0, 1, 5, 1, 6, 12, - 1, 8, 0, 5, 6, 8, 0, 5, 3, 10, 2, 10, 2, 0, 5, 6, 12, 5, 3, 10, 2, 10, 2, 1, 9, 0, 12, 76, 105, - 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, + 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 2, 2, 2, 4, 3, 6, 16, 4, 22, 2, 5, 24, 29, 7, 53, 96, 8, + 149, 1, 16, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 0, 0, 3, 2, 3, 1, 1, 0, 4, 1, 3, 0, 1, 5, 1, 6, 12, + 1, 8, 0, 5, 6, 8, 0, 5, 3, 10, 2, 10, 2, 0, 5, 6, 12, 5, 3, 10, 2, 10, 2, 1, 9, 0, 11, 68, 105, + 101, 109, 65, 99, 99, 111, 117, 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 27, 101, 120, 116, 114, 97, 99, 116, 95, 119, 105, 116, 104, 100, 114, 97, 119, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 8, 112, 97, 121, 95, 102, 114, 111, 109, 27, 114, 101, 115, 116, 111, 114, 101, 95, 119, 105, 116, 104, 100, 114, @@ -4011,12 +4010,12 @@ const PEER_TO_PEER_WITH_METADATA_CODE: &[u8] = &[ ]; const PREBURN_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 2, 2, 2, 4, 3, 6, 16, 4, 22, 2, 5, 24, 21, 7, 45, 96, 8, - 141, 1, 16, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 0, 0, 3, 2, 3, 1, 1, 0, 4, 1, 3, 0, 1, 5, 1, 6, 12, - 1, 8, 0, 3, 6, 12, 6, 8, 0, 3, 0, 2, 6, 12, 3, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, - 111, 117, 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, 112, 97, 98, 105, 108, - 105, 116, 121, 27, 101, 120, 116, 114, 97, 99, 116, 95, 119, 105, 116, 104, 100, 114, 97, 119, - 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 7, 112, 114, 101, 98, 117, 114, 110, 27, 114, + 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 2, 2, 2, 4, 3, 6, 16, 4, 22, 2, 5, 24, 21, 7, 45, 95, 8, + 140, 1, 16, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 0, 0, 3, 2, 3, 1, 1, 0, 4, 1, 3, 0, 1, 5, 1, 6, 12, + 1, 8, 0, 3, 6, 12, 6, 8, 0, 3, 0, 2, 6, 12, 3, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, + 117, 110, 116, 18, 87, 105, 116, 104, 100, 114, 97, 119, 67, 97, 112, 97, 98, 105, 108, 105, + 116, 121, 27, 101, 120, 116, 114, 97, 99, 116, 95, 119, 105, 116, 104, 100, 114, 97, 119, 95, + 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 7, 112, 114, 101, 98, 117, 114, 110, 27, 114, 101, 115, 116, 111, 114, 101, 95, 119, 105, 116, 104, 100, 114, 97, 119, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 1, 10, 10, 0, 17, 0, 12, 2, 11, 0, 14, 2, 10, 1, 56, 0, 11, 2, 17, 2, 2, @@ -4037,22 +4036,22 @@ const REGISTER_VALIDATOR_CONFIG_CODE: &[u8] = &[ ]; const REMOVE_VALIDATOR_AND_RECONFIGURE_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 6, 3, 6, 15, 5, 21, 24, 7, 45, 95, 8, 140, 1, 16, 0, 0, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 6, 3, 6, 15, 5, 21, 24, 7, 45, 94, 8, 139, 1, 16, 0, 0, 0, 1, 0, 2, 1, 3, 0, 1, 0, 2, 4, 2, 3, 0, 0, 5, 4, 1, 0, 2, 6, 12, 3, 0, 1, 5, 1, 10, 2, 2, 6, - 12, 5, 4, 6, 12, 3, 10, 2, 5, 2, 1, 3, 11, 76, 105, 98, 114, 97, 83, 121, 115, 116, 101, 109, - 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 15, 86, 97, 108, 105, 100, 97, - 116, 111, 114, 67, 111, 110, 102, 105, 103, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, - 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 14, 103, 101, 116, 95, 104, 117, 109, 97, - 110, 95, 110, 97, 109, 101, 16, 114, 101, 109, 111, 118, 101, 95, 118, 97, 108, 105, 100, 97, - 116, 111, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 6, 18, 10, 0, 10, 1, 17, - 0, 10, 3, 17, 1, 11, 2, 33, 12, 4, 11, 4, 3, 14, 11, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, - 0, 10, 3, 17, 2, 2, + 12, 5, 4, 6, 12, 3, 10, 2, 5, 2, 1, 3, 10, 68, 105, 101, 109, 83, 121, 115, 116, 101, 109, 12, + 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 15, 86, 97, 108, 105, 100, 97, 116, + 111, 114, 67, 111, 110, 102, 105, 103, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, + 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 14, 103, 101, 116, 95, 104, 117, 109, 97, 110, + 95, 110, 97, 109, 101, 16, 114, 101, 109, 111, 118, 101, 95, 118, 97, 108, 105, 100, 97, 116, + 111, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 6, 18, 10, 0, 10, 1, 17, 0, 10, + 3, 17, 1, 11, 2, 33, 12, 4, 11, 4, 3, 14, 11, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, 0, 10, + 3, 17, 2, 2, ]; const ROTATE_AUTHENTICATION_KEY_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 2, 2, 4, 3, 6, 15, 5, 21, 18, 7, 39, 125, 8, 164, 1, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 2, 2, 4, 3, 6, 15, 5, 21, 18, 7, 39, 124, 8, 163, 1, 16, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 0, 0, 3, 1, 2, 0, 0, 4, 3, 2, 0, 1, 6, 12, 1, 8, 0, 0, 2, 6, - 8, 0, 10, 2, 2, 6, 12, 10, 2, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 21, 75, + 8, 0, 10, 2, 2, 6, 12, 10, 2, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 114, 101, 115, 116, 111, 114, 101, @@ -4063,27 +4062,27 @@ const ROTATE_AUTHENTICATION_KEY_CODE: &[u8] = &[ ]; const ROTATE_AUTHENTICATION_KEY_WITH_NONCE_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 20, 5, 28, 23, 7, 51, 160, 1, 8, 211, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 20, 5, 28, 23, 7, 51, 159, 1, 8, 210, 1, 16, 0, 0, 0, 1, 0, 3, 1, 0, 1, 2, 0, 1, 0, 0, 4, 2, 3, 0, 0, 5, 3, 1, 0, 0, 6, 4, 1, 0, 2, - 6, 12, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 8, 0, 10, 2, 3, 6, 12, 3, 10, 2, 12, 76, 105, 98, 114, - 97, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, - 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, - 111, 114, 116, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, - 105, 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, - 116, 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 114, 101, - 115, 116, 111, 114, 101, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, - 97, 112, 97, 98, 105, 108, 105, 116, 121, 25, 114, 111, 116, 97, 116, 101, 95, 97, 117, 116, - 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 95, 107, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 3, 12, 10, 0, 10, 1, 17, 0, 11, 0, 17, 1, 12, 3, 14, 3, 11, 2, - 17, 3, 11, 3, 17, 2, 2, + 6, 12, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 8, 0, 10, 2, 3, 6, 12, 3, 10, 2, 11, 68, 105, 101, 109, + 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, + 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, + 114, 116, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, 105, + 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, 116, + 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 114, 101, 115, + 116, 111, 114, 101, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, 97, + 112, 97, 98, 105, 108, 105, 116, 121, 25, 114, 111, 116, 97, 116, 101, 95, 97, 117, 116, 104, + 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 95, 107, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 5, 3, 12, 10, 0, 10, 1, 17, 0, 11, 0, 17, 1, 12, 3, 14, 3, 11, 2, 17, + 3, 11, 3, 17, 2, 2, ]; const ROTATE_AUTHENTICATION_KEY_WITH_NONCE_ADMIN_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 20, 5, 28, 25, 7, 53, 160, 1, 8, 213, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 2, 4, 4, 3, 8, 20, 5, 28, 25, 7, 53, 159, 1, 8, 212, 1, 16, 0, 0, 0, 1, 0, 3, 1, 0, 1, 2, 0, 1, 0, 0, 4, 2, 3, 0, 0, 5, 3, 1, 0, 0, 6, 4, 1, 0, 2, - 6, 12, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 8, 0, 10, 2, 4, 6, 12, 6, 12, 3, 10, 2, 12, 76, 105, 98, - 114, 97, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, - 99, 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, + 6, 12, 3, 0, 1, 6, 12, 1, 8, 0, 2, 6, 8, 0, 10, 2, 4, 6, 12, 6, 12, 3, 10, 2, 11, 68, 105, 101, + 109, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, + 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 21, 75, 101, 121, 82, 111, 116, 97, 116, 105, 111, 110, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 101, 120, 116, 114, 97, 99, 116, 95, 107, 101, 121, 95, 114, 111, 116, 97, 116, 105, 111, 110, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 31, 114, 101, @@ -4119,13 +4118,13 @@ const ROTATE_SHARED_ED25519_PUBLIC_KEY_CODE: &[u8] = &[ ]; const SET_VALIDATOR_CONFIG_AND_RECONFIGURE_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 15, 7, 29, 69, 8, 98, 16, 0, 0, 0, - 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 0, 5, 6, 12, 5, 10, 2, 10, 2, 10, 2, 0, 2, 6, 12, 5, 11, 76, 105, - 98, 114, 97, 83, 121, 115, 116, 101, 109, 15, 86, 97, 108, 105, 100, 97, 116, 111, 114, 67, - 111, 110, 102, 105, 103, 10, 115, 101, 116, 95, 99, 111, 110, 102, 105, 103, 29, 117, 112, 100, - 97, 116, 101, 95, 99, 111, 110, 102, 105, 103, 95, 97, 110, 100, 95, 114, 101, 99, 111, 110, - 102, 105, 103, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 10, 10, - 0, 10, 1, 11, 2, 11, 3, 11, 4, 17, 0, 11, 0, 10, 1, 17, 1, 2, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 15, 7, 29, 68, 8, 97, 16, 0, 0, 0, + 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 0, 5, 6, 12, 5, 10, 2, 10, 2, 10, 2, 0, 2, 6, 12, 5, 10, 68, 105, + 101, 109, 83, 121, 115, 116, 101, 109, 15, 86, 97, 108, 105, 100, 97, 116, 111, 114, 67, 111, + 110, 102, 105, 103, 10, 115, 101, 116, 95, 99, 111, 110, 102, 105, 103, 29, 117, 112, 100, 97, + 116, 101, 95, 99, 111, 110, 102, 105, 103, 95, 97, 110, 100, 95, 114, 101, 99, 111, 110, 102, + 105, 103, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 10, 10, 0, + 10, 1, 11, 2, 11, 3, 11, 4, 17, 0, 11, 0, 10, 1, 17, 1, 2, ]; const SET_VALIDATOR_OPERATOR_CODE: &[u8] = &[ @@ -4153,13 +4152,13 @@ const SET_VALIDATOR_OPERATOR_WITH_NONCE_ADMIN_CODE: &[u8] = &[ ]; const TIERED_MINT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 21, 7, 38, 60, 8, 98, 16, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 4, 3, 4, 11, 4, 15, 2, 5, 17, 21, 7, 38, 59, 8, 97, 16, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 3, 2, 1, 1, 1, 1, 4, 2, 6, 12, 3, 0, 4, 6, 12, 5, 3, 3, 5, 6, 12, - 3, 5, 3, 3, 1, 9, 0, 12, 76, 105, 98, 114, 97, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, - 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, - 110, 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 11, 116, 105, 101, 114, 101, 100, 95, - 109, 105, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 9, 10, 0, 10, - 1, 17, 0, 11, 0, 10, 2, 10, 3, 10, 4, 56, 0, 2, + 3, 5, 3, 3, 1, 9, 0, 11, 68, 105, 101, 109, 65, 99, 99, 111, 117, 110, 116, 12, 83, 108, 105, + 100, 105, 110, 103, 78, 111, 110, 99, 101, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, + 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 11, 116, 105, 101, 114, 101, 100, 95, 109, + 105, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 1, 9, 10, 0, 10, 1, 17, + 0, 11, 0, 10, 2, 10, 3, 10, 4, 56, 0, 2, ]; const UNFREEZE_ACCOUNT_CODE: &[u8] = &[ @@ -4172,41 +4171,41 @@ const UNFREEZE_ACCOUNT_CODE: &[u8] = &[ 1, 17, 1, 11, 0, 10, 2, 17, 0, 2, ]; +const UPDATE_DIEM_VERSION_CODE: &[u8] = &[ + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 10, 7, 24, 51, 8, 75, 16, 0, 0, 0, + 1, 0, 2, 0, 1, 0, 1, 3, 0, 1, 0, 2, 6, 12, 3, 0, 3, 6, 12, 3, 3, 11, 68, 105, 101, 109, 86, + 101, 114, 115, 105, 111, 110, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 3, + 115, 101, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, + 97, 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 7, 10, 0, 10, + 1, 17, 1, 11, 0, 10, 2, 17, 0, 2, +]; + const UPDATE_DUAL_ATTESTATION_LIMIT_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 10, 7, 24, 72, 8, 96, 16, 0, 0, 0, + 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 10, 7, 24, 71, 8, 95, 16, 0, 0, 0, 1, 0, 2, 0, 1, 0, 1, 3, 0, 1, 0, 2, 6, 12, 3, 0, 3, 6, 12, 3, 3, 15, 68, 117, 97, 108, 65, 116, 116, 101, 115, 116, 97, 116, 105, 111, 110, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, - 99, 101, 20, 115, 101, 116, 95, 109, 105, 99, 114, 111, 108, 105, 98, 114, 97, 95, 108, 105, - 109, 105, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, - 97, 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 7, 10, 0, 10, - 1, 17, 1, 11, 0, 10, 2, 17, 0, 2, + 99, 101, 19, 115, 101, 116, 95, 109, 105, 99, 114, 111, 100, 105, 101, 109, 95, 108, 105, 109, + 105, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, 97, + 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 7, 10, 0, 10, 1, + 17, 1, 11, 0, 10, 2, 17, 0, 2, ]; const UPDATE_EXCHANGE_RATE_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 6, 2, 6, 4, 3, 10, 16, 4, 26, 2, 5, 28, 25, 7, 53, 100, - 8, 153, 1, 16, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 3, 0, 1, 0, 2, 4, 2, 3, 0, 1, 5, 4, 3, 1, 1, 2, - 6, 2, 3, 3, 1, 8, 0, 2, 6, 12, 3, 0, 2, 6, 12, 8, 0, 4, 6, 12, 3, 3, 3, 1, 9, 0, 12, 70, 105, - 120, 101, 100, 80, 111, 105, 110, 116, 51, 50, 5, 76, 105, 98, 114, 97, 12, 83, 108, 105, 100, + 161, 28, 235, 11, 1, 0, 0, 0, 7, 1, 0, 6, 2, 6, 4, 3, 10, 16, 4, 26, 2, 5, 28, 25, 7, 53, 99, + 8, 152, 1, 16, 0, 0, 0, 1, 0, 2, 1, 1, 2, 0, 1, 3, 0, 1, 0, 2, 4, 2, 3, 0, 0, 5, 4, 3, 1, 1, 2, + 6, 2, 3, 3, 1, 8, 0, 2, 6, 12, 3, 0, 2, 6, 12, 8, 0, 4, 6, 12, 3, 3, 3, 1, 9, 0, 4, 68, 105, + 101, 109, 12, 70, 105, 120, 101, 100, 80, 111, 105, 110, 116, 51, 50, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 20, 99, 114, 101, 97, 116, 101, 95, 102, 114, 111, 109, 95, 114, 97, 116, 105, 111, 110, 97, 108, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, - 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 24, 117, 112, 100, 97, 116, 101, 95, 108, 98, - 114, 95, 101, 120, 99, 104, 97, 110, 103, 101, 95, 114, 97, 116, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 5, 1, 11, 10, 0, 10, 1, 17, 1, 10, 2, 10, 3, 17, 0, 12, 4, 11, 0, - 11, 4, 56, 0, 2, -]; - -const UPDATE_LIBRA_VERSION_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 5, 1, 0, 4, 3, 4, 10, 5, 14, 10, 7, 24, 52, 8, 76, 16, 0, 0, 0, - 1, 0, 2, 0, 1, 0, 1, 3, 0, 1, 0, 2, 6, 12, 3, 0, 3, 6, 12, 3, 3, 12, 76, 105, 98, 114, 97, 86, - 101, 114, 115, 105, 111, 110, 12, 83, 108, 105, 100, 105, 110, 103, 78, 111, 110, 99, 101, 3, - 115, 101, 116, 21, 114, 101, 99, 111, 114, 100, 95, 110, 111, 110, 99, 101, 95, 111, 114, 95, - 97, 98, 111, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 7, 10, 0, 10, - 1, 17, 1, 11, 0, 10, 2, 17, 0, 2, + 99, 101, 95, 111, 114, 95, 97, 98, 111, 114, 116, 24, 117, 112, 100, 97, 116, 101, 95, 120, + 100, 120, 95, 101, 120, 99, 104, 97, 110, 103, 101, 95, 114, 97, 116, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 5, 1, 11, 10, 0, 10, 1, 17, 1, 10, 2, 10, 3, 17, 0, 12, 4, 11, + 0, 11, 4, 56, 0, 2, ]; const UPDATE_MINTING_ABILITY_CODE: &[u8] = &[ - 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 8, 7, 18, 29, 8, 47, 16, 0, - 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 6, 12, 1, 0, 1, 9, 0, 5, 76, 105, 98, 114, 97, 22, 117, 112, 100, + 161, 28, 235, 11, 1, 0, 0, 0, 6, 1, 0, 2, 3, 2, 6, 4, 8, 2, 5, 10, 8, 7, 18, 28, 8, 46, 16, 0, + 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 6, 12, 1, 0, 1, 9, 0, 4, 68, 105, 101, 109, 22, 117, 112, 100, 97, 116, 101, 95, 109, 105, 110, 116, 105, 110, 103, 95, 97, 98, 105, 108, 105, 116, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 4, 11, 0, 10, 1, 56, 0, 2, ]; diff --git a/common/bitvec/Cargo.toml b/common/bitvec/Cargo.toml index b91dc33443..7b70ff375f 100644 --- a/common/bitvec/Cargo.toml +++ b/common/bitvec/Cargo.toml @@ -1,16 +1,16 @@ [package] -name = "libra-bitvec" +name = "diem-bitvec" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra safe bitvec implementation" +authors = ["Diem Association "] +description = "Diem safe bitvec implementation" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } proptest = { version = "0.10.1", default-features = true, optional = true } proptest-derive = { version = "0.2.0", optional = true } serde = { version = "1.0.117", features = ["derive"] } @@ -18,7 +18,7 @@ serde_bytes = "0.11.5" [dev-dependencies] lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-proptest-helpers = { path = "../proptest-helpers", version = "0.1.0"} +diem-proptest-helpers = { path = "../proptest-helpers", version = "0.1.0"} proptest = { version = "0.10.1", default-features = true } proptest-derive = { version = "0.2.0" } diff --git a/common/bitvec/src/lib.rs b/common/bitvec/src/lib.rs index 86dad8a386..7818dfb4ec 100644 --- a/common/bitvec/src/lib.rs +++ b/common/bitvec/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This library defines a BitVec struct that represents a bit vector. diff --git a/common/bounded-executor/Cargo.toml b/common/bounded-executor/Cargo.toml index e66bbbb714..61aef57744 100644 --- a/common/bounded-executor/Cargo.toml +++ b/common/bounded-executor/Cargo.toml @@ -1,17 +1,17 @@ [package] name = "bounded-executor" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra bounded executor" +authors = ["Diem Association "] +description = "Diem bounded executor" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] futures = "0.3.8" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } tokio = { version = "0.2.22", features = ["sync"] } [dev-dependencies] diff --git a/common/bounded-executor/src/lib.rs b/common/bounded-executor/src/lib.rs index 01357cd9ad..7814d8a7e6 100644 --- a/common/bounded-executor/src/lib.rs +++ b/common/bounded-executor/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/common/channel/Cargo.toml b/common/channel/Cargo.toml index 27917ea2f8..36f7d7b368 100644 --- a/common/channel/Cargo.toml +++ b/common/channel/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "channel" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra channel" +authors = ["Diem Association "] +description = "Diem channel" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,10 +12,10 @@ edition = "2018" [dependencies] anyhow = "1.0.34" futures = "0.3.8" -libra-metrics = { path = "../metrics", version = "0.1.0" } -libra-infallible = { path = "../infallible", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-metrics = { path = "../metrics", version = "0.1.0" } +diem-infallible = { path = "../infallible", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } [dev-dependencies] -libra-types = { path = "../../types", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } tokio = { version = "0.2.22", features = ["full"] } diff --git a/common/channel/many-keys-stress-test/Cargo.toml b/common/channel/many-keys-stress-test/Cargo.toml index e7baa323e4..86f6e777ae 100644 --- a/common/channel/many-keys-stress-test/Cargo.toml +++ b/common/channel/many-keys-stress-test/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "many-keys-stress-test" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra channel" +authors = ["Diem Association "] +description = "Diem channel" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,5 +12,5 @@ edition = "2018" [dependencies] futures = "0.3.8" channel = { path = "../", version = "0.1.0" } -libra-workspace-hack = { path = "../../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../workspace-hack", version = "0.1.0" } structopt = "0.3.21" diff --git a/common/channel/many-keys-stress-test/src/main.rs b/common/channel/many-keys-stress-test/src/main.rs index 90ac001bb2..8a193ccace 100644 --- a/common/channel/many-keys-stress-test/src/main.rs +++ b/common/channel/many-keys-stress-test/src/main.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use channel::{libra_channel, message_queues::QueueStyle}; +use channel::{diem_channel, message_queues::QueueStyle}; use futures::{executor::block_on, stream::StreamExt}; use std::{ io::{Cursor, Write}, @@ -44,7 +44,7 @@ pub fn run(args: Args) { static NUM_POP: AtomicUsize = AtomicUsize::new(0); static IS_DONE: AtomicBool = AtomicBool::new(false); - let (mut sender, mut receiver) = libra_channel::new::<[u8; KEY_SIZE_BYTES], [u8; MSG_SIZE_BYTES]>( + let (mut sender, mut receiver) = diem_channel::new::<[u8; KEY_SIZE_BYTES], [u8; MSG_SIZE_BYTES]>( QueueStyle::FIFO, NonZeroUsize::new(args.max_queue_size).unwrap(), None, diff --git a/common/channel/src/libra_channel.rs b/common/channel/src/diem_channel.rs similarity index 93% rename from common/channel/src/libra_channel.rs rename to common/channel/src/diem_channel.rs index bdf6af0934..c64ebbff8b 100644 --- a/common/channel/src/libra_channel.rs +++ b/common/channel/src/diem_channel.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! libra_channel provides an mpsc channel which has two ends `libra_channel::Receiver` -//! and `libra_channel::Sender` similar to existing mpsc data structures. +//! diem_channel provides an mpsc channel which has two ends `diem_channel::Receiver` +//! and `diem_channel::Sender` similar to existing mpsc data structures. //! What makes it different from existing mpsc channels is that we have full control //! over how the internal queueing in the channel happens and how we schedule messages //! to be sent out from this channel. //! Internally, it uses the `PerKeyQueue` to store messages use crate::message_queues::{PerKeyQueue, QueueStyle}; use anyhow::{ensure, Result}; +use diem_infallible::Mutex; +use diem_metrics::IntCounterVec; use futures::{ channel::oneshot, stream::{FusedStream, Stream}, }; -use libra_infallible::Mutex; -use libra_metrics::IntCounterVec; use std::{ fmt::{Debug, Formatter}, hash::Hash, @@ -47,13 +47,13 @@ struct SharedState { stream_terminated: bool, } -/// The sending end of the libra_channel. +/// The sending end of the diem_channel. #[derive(Debug)] pub struct Sender { shared_state: Arc>>, } -/// The status of an element inserted into a libra_channel. If the element is successfully +/// The status of an element inserted into a diem_channel. If the element is successfully /// dequeued, ElementStatus::Dequeued is sent to the sender. If it is dropped /// ElementStatus::Dropped is sent to the sender along with the dropped element. pub enum ElementStatus { @@ -140,7 +140,7 @@ impl Drop for Sender { } } -/// The receiving end of the libra_channel. +/// The receiving end of the diem_channel. pub struct Receiver { shared_state: Arc>>, } @@ -191,7 +191,7 @@ impl FusedStream for Receiver { } } -/// Create a new Libra Channel and returns the two ends of the channel. +/// Create a new Diem Channel and returns the two ends of the channel. pub fn new( queue_style: QueueStyle, max_queue_size_per_key: NonZeroUsize, diff --git a/common/channel/src/libra_channel_test.rs b/common/channel/src/diem_channel_test.rs similarity index 88% rename from common/channel/src/libra_channel_test.rs rename to common/channel/src/diem_channel_test.rs index ae69ba64a1..5a0bed179c 100644 --- a/common/channel/src/libra_channel_test.rs +++ b/common/channel/src/diem_channel_test.rs @@ -1,21 +1,21 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{libra_channel, libra_channel::ElementStatus, message_queues::QueueStyle}; +use crate::{diem_channel, diem_channel::ElementStatus, message_queues::QueueStyle}; +use diem_types::account_address::AccountAddress; use futures::{ channel::oneshot, executor::block_on, future::{join, FutureExt}, stream::{FusedStream, StreamExt}, }; -use libra_types::account_address::AccountAddress; use std::{num::NonZeroUsize, time::Duration}; use tokio::{runtime::Runtime, time::delay_for}; #[test] fn test_send_recv_order() { let (mut sender, mut receiver) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); sender.push(0, 0).unwrap(); sender.push(0, 1).unwrap(); sender.push(0, 2).unwrap(); @@ -35,7 +35,7 @@ fn test_send_recv_order() { #[test] fn test_empty() { let (_, mut receiver) = - libra_channel::new::(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); + diem_channel::new::(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); // Ensures that there is no other value which is ready assert_eq!(receiver.select_next_some().now_or_never(), None); } @@ -43,7 +43,7 @@ fn test_empty() { #[test] fn test_waker() { let (mut sender, mut receiver) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(10).unwrap(), None); // Ensures that there is no other value which is ready assert_eq!(receiver.select_next_some().now_or_never(), None); let f1 = async move { @@ -66,7 +66,7 @@ fn test_waker() { #[test] fn test_sender_clone() { let (mut sender, mut receiver) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(5).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(5).unwrap(), None); // Ensures that there is no other value which is ready assert_eq!(receiver.select_next_some().now_or_never(), None); @@ -97,7 +97,7 @@ fn test_multiple_validators_helper( expected_last_message: usize, ) { let (mut sender, mut receiver) = - libra_channel::new(queue_style, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(queue_style, NonZeroUsize::new(1).unwrap(), None); let num_validators = 128; for message in 0..num_messages_per_validator { for validator in 0..num_validators { @@ -133,7 +133,7 @@ fn test_multiple_validators_lifo() { #[test] fn test_feedback_on_drop() { let (mut sender, mut receiver) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(3).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(3).unwrap(), None); sender.push(0, 'a').unwrap(); sender.push(0, 'b').unwrap(); let (c_status_tx, c_status_rx) = oneshot::channel(); diff --git a/common/channel/src/lib.rs b/common/channel/src/lib.rs index 65aa449454..c7872cd4a8 100644 --- a/common/channel/src/lib.rs +++ b/common/channel/src/lib.rs @@ -1,33 +1,33 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] //! Provides an mpsc (multi-producer single-consumer) channel wrapped in an -//! [`IntGauge`](libra_metrics::IntGauge) that counts the number of currently +//! [`IntGauge`](diem_metrics::IntGauge) that counts the number of currently //! queued items. While there is only one [`channel::Receiver`], there can be //! many [`channel::Sender`]s, which are also cheap to clone. //! -//! This channel differs from our other channel implementation, [`channel::libra_channel`], +//! This channel differs from our other channel implementation, [`channel::diem_channel`], //! in that it is just a single queue (vs. different queues for different keys) //! with backpressure (senders will block if the queue is full instead of evicting //! another item in the queue) that only implements FIFO (vs. LIFO or KLAST). +use diem_metrics::IntGauge; use futures::{ channel::mpsc, sink::Sink, stream::{FusedStream, Stream}, task::{Context, Poll}, }; -use libra_metrics::IntGauge; use std::pin::Pin; #[cfg(test)] mod test; -pub mod libra_channel; +pub mod diem_channel; #[cfg(test)] -mod libra_channel_test; +mod diem_channel_test; pub mod message_queues; #[cfg(test)] diff --git a/common/channel/src/message_queues.rs b/common/channel/src/message_queues.rs index 848730fc47..cd21b617c0 100644 --- a/common/channel/src/message_queues.rs +++ b/common/channel/src/message_queues.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::IntCounterVec; +use diem_metrics::IntCounterVec; use std::{ collections::{HashMap, VecDeque}, fmt::{Debug, Formatter, Result}, @@ -168,7 +168,7 @@ impl PerKeyQueue { // Remove empty per-key-queues every `POPS_PER_GC` successful dequeue // operations. // - // libra-channel never removes keys from its PerKeyQueue (without + // diem-channel never removes keys from its PerKeyQueue (without // this logic). This works fine for the validator network, where we // have a bounded set of peers that almost never changes; however, // this does not work for servicing public clients, where we can have diff --git a/common/channel/src/message_queues_test.rs b/common/channel/src/message_queues_test.rs index fd395be83f..723c6de155 100644 --- a/common/channel/src/message_queues_test.rs +++ b/common/channel/src/message_queues_test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::message_queues::{PerKeyQueue, QueueStyle}; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use std::num::NonZeroUsize; /// This represents a proposal message from a validator diff --git a/common/channel/src/test.rs b/common/channel/src/test.rs index 2fab743b55..b2df4494e0 100644 --- a/common/channel/src/test.rs +++ b/common/channel/src/test.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate as channel; +use diem_metrics::IntGauge; use futures::{ executor::block_on, task::{noop_waker, Context, Poll}, FutureExt, SinkExt, StreamExt, }; -use libra_metrics::IntGauge; #[test] fn test_send() { diff --git a/common/crash-handler/Cargo.toml b/common/crash-handler/Cargo.toml index f5cded284f..27adee71bc 100644 --- a/common/crash-handler/Cargo.toml +++ b/common/crash-handler/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "crash-handler" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra crash handler" +authors = ["Diem Association "] +description = "Diem crash handler" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -13,6 +13,6 @@ edition = "2018" backtrace = "0.3.55" toml = "0.5.7" -libra-logger = { path = "../logger", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-logger = { path = "../logger", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } serde = { version = "1.0.117", features = ["derive"] } diff --git a/common/crash-handler/src/lib.rs b/common/crash-handler/src/lib.rs index 0f4286cb31..c7afff0993 100644 --- a/common/crash-handler/src/lib.rs +++ b/common/crash-handler/src/lib.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use backtrace::Backtrace; -use libra_logger::prelude::*; +use diem_logger::prelude::*; use serde::Serialize; use std::{ panic::{self, PanicInfo}, diff --git a/common/datatest-stable/Cargo.toml b/common/datatest-stable/Cargo.toml index 11126d8bc6..bc15a02d22 100644 --- a/common/datatest-stable/Cargo.toml +++ b/common/datatest-stable/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "datatest-stable" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra datatest stable" +authors = ["Diem Association "] +description = "Diem datatest stable" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,7 +16,7 @@ regex = "1.4.2" walkdir = "2.3.1" structopt = "0.3.21" termcolor = "1.1.2" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } [[test]] name = "example" diff --git a/common/datatest-stable/src/lib.rs b/common/datatest-stable/src/lib.rs index cf7615ff57..608458a771 100644 --- a/common/datatest-stable/src/lib.rs +++ b/common/datatest-stable/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/common/datatest-stable/src/macros.rs b/common/datatest-stable/src/macros.rs index be9b9c5c8c..1b0d580fd3 100644 --- a/common/datatest-stable/src/macros.rs +++ b/common/datatest-stable/src/macros.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// `datatest-stable` test harness entry point. Should be declared in the test module. diff --git a/common/datatest-stable/src/runner.rs b/common/datatest-stable/src/runner.rs index f74f544268..73ba1d9840 100644 --- a/common/datatest-stable/src/runner.rs +++ b/common/datatest-stable/src/runner.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::integer_arithmetic)] diff --git a/common/datatest-stable/src/utils.rs b/common/datatest-stable/src/utils.rs index a76932c341..5b2405b422 100644 --- a/common/datatest-stable/src/utils.rs +++ b/common/datatest-stable/src/utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::{Path, PathBuf}; diff --git a/common/datatest-stable/tests/example.rs b/common/datatest-stable/tests/example.rs index 1d3c11ed0e..19b2c2ef7e 100644 --- a/common/datatest-stable/tests/example.rs +++ b/common/datatest-stable/tests/example.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use datatest_stable::Result; diff --git a/common/debug-interface/Cargo.toml b/common/debug-interface/Cargo.toml index 50ae1959ca..d47a42638b 100644 --- a/common/debug-interface/Cargo.toml +++ b/common/debug-interface/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "debug-interface" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra debug interface" +authors = ["Diem Association "] +description = "Diem debug interface" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,6 +16,6 @@ tokio = { version = "0.2.22", features = ["full"] } reqwest = { version = "0.10.9", features = ["blocking", "json"], default_features = false } warp = "0.2.5" -libra-logger = { path = "../logger", version = "0.1.0" } -libra-metrics = { path = "../metrics", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-logger = { path = "../logger", version = "0.1.0" } +diem-metrics = { path = "../metrics", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } diff --git a/common/debug-interface/src/lib.rs b/common/debug-interface/src/lib.rs index 2fd3c91ef7..e7e8871811 100644 --- a/common/debug-interface/src/lib.rs +++ b/common/debug-interface/src/lib.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_logger::json_log::JsonLogEntry; +use diem_logger::json_log::JsonLogEntry; use reqwest::blocking; use std::collections::HashMap; diff --git a/common/debug-interface/src/node_debug_service.rs b/common/debug-interface/src/node_debug_service.rs index b53c8a7187..e324f1139f 100644 --- a/common/debug-interface/src/node_debug_service.rs +++ b/common/debug-interface/src/node_debug_service.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Debug interface to access information in a specific node. -use libra_logger::{info, json_log, Filter, Logger}; +use diem_logger::{info, json_log, Filter, Logger}; use std::{net::SocketAddr, sync::Arc}; use tokio::runtime::{Builder, Runtime}; use warp::Filter as _; @@ -24,7 +24,7 @@ impl NodeDebugService { // GET /metrics let metrics = - warp::path("metrics").map(|| warp::reply::json(&libra_metrics::get_all_metrics())); + warp::path("metrics").map(|| warp::reply::json(&diem_metrics::get_all_metrics())); // GET /events let events = warp::path("events").map(|| warp::reply::json(&json_log::pop_last_entries())); diff --git a/common/libradoc/Cargo.toml b/common/diemdoc/Cargo.toml similarity index 62% rename from common/libradoc/Cargo.toml rename to common/diemdoc/Cargo.toml index ac6a598eda..35cc65cacd 100644 --- a/common/libradoc/Cargo.toml +++ b/common/diemdoc/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-documentation-tool" +name = "diem-documentation-tool" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra transaction-builder" +authors = ["Diem Association "] +description = "Diem transaction-builder" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -17,7 +17,7 @@ regex = "1.4.2" structopt = "0.3.21" once_cell = "1.4.1" -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] serde = { version = "1.0.117", features = ["derive"] } @@ -27,6 +27,6 @@ tempfile = "3.1.0" default = [] [[bin]] -name = "libradoc" +name = "diemdoc" path = "src/main.rs" test = false diff --git a/common/libradoc/src/lib.rs b/common/diemdoc/src/lib.rs similarity index 93% rename from common/libradoc/src/lib.rs rename to common/diemdoc/src/lib.rs index 9310809c1f..6abd60ef13 100644 --- a/common/libradoc/src/lib.rs +++ b/common/diemdoc/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use once_cell::sync::Lazy; @@ -68,7 +68,7 @@ where } static BEGIN_RE: Lazy = - Lazy::new(|| Regex::new(r"").unwrap()); + Lazy::new(|| Regex::new(r"").unwrap()); fn match_begin_command(line: &str) -> Option { match BEGIN_RE.captures(line) { @@ -78,5 +78,5 @@ fn match_begin_command(line: &str) -> Option { } fn match_end_command(line: &str) -> bool { - line.contains("") + line.contains("") } diff --git a/common/libradoc/src/main.rs b/common/diemdoc/src/main.rs similarity index 72% rename from common/libradoc/src/main.rs rename to common/diemdoc/src/main.rs index 0e2fab705f..d041fe1d17 100644 --- a/common/libradoc/src/main.rs +++ b/common/diemdoc/src/main.rs @@ -1,21 +1,21 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! # Tool to help maintaining libra specifications. +//! # Tool to help maintaining diem specifications. //! //! '''bash -//! cargo run -p libra-documentation-tool -- --help +//! cargo run -p diem-documentation-tool -- --help //! ''' -use libra_documentation_tool as libra_doc; +use diem_documentation_tool as diem_doc; use serde_reflection::Registry; use std::{collections::BTreeMap, path::PathBuf}; use structopt::StructOpt; #[derive(Debug, StructOpt)] #[structopt( - name = "libra documentation tool", - about = "Tool to help maintaining libra specifications" + name = "diem documentation tool", + about = "Tool to help maintaining diem specifications" )] struct Options { /// Path to the YAML-encoded Serde formats. @@ -24,7 +24,7 @@ struct Options { /// Directory where to update markdown files in place (otherwise print sample code on stdout). #[structopt(long)] - update_libra_specs_dir: Option, + update_diem_specs_dir: Option, } fn process_specs(dir: PathBuf, definitions: &BTreeMap) -> std::io::Result<()> { @@ -35,7 +35,7 @@ fn process_specs(dir: PathBuf, definitions: &BTreeMap) -> std::i continue; } let file = std::io::BufReader::new(std::fs::File::open(path.clone())?); - let output = libra_doc::update_rust_quotes(file, definitions)?; + let output = diem_doc::update_rust_quotes(file, definitions)?; std::fs::write(path, &output)?; } Ok(()) @@ -47,10 +47,10 @@ fn main() { let registry = serde_yaml::from_str::(content.as_str()) .expect("input file should be correct YAML for a Serde registry"); - let definitions = libra_doc::quote_container_definitions(®istry) + let definitions = diem_doc::quote_container_definitions(®istry) .expect("generating definitions should not fail"); - match options.update_libra_specs_dir { + match options.update_diem_specs_dir { None => println!("{:#?}", definitions), Some(dir) => process_specs(dir, &definitions).expect("failed to process specifications"), } diff --git a/common/libradoc/tests/update.rs b/common/diemdoc/tests/update.rs similarity index 62% rename from common/libradoc/tests/update.rs rename to common/diemdoc/tests/update.rs index 075bc6122b..7d4d14fede 100644 --- a/common/libradoc/tests/update.rs +++ b/common/diemdoc/tests/update.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_documentation_tool as libra_doc; +use diem_documentation_tool as diem_doc; use serde::Deserialize; use serde_reflection::{Samples, Tracer, TracerConfig}; @@ -24,31 +24,31 @@ fn test_doctool() { let samples = Samples::new(); tracer.trace_type::(&samples).unwrap(); let registry = tracer.registry().unwrap(); - let definitions = libra_doc::quote_container_definitions(®istry).unwrap(); + let definitions = diem_doc::quote_container_definitions(®istry).unwrap(); let input = r#" - - + + 111111 - + 222222 - - - + + + 33333333 "# .to_string(); let expected_output = r#" - - + + 111111 - + ```rust struct MyStruct(u64); ``` - - + + ```rust enum MyEnum { Unit, @@ -60,14 +60,14 @@ enum MyEnum { NewTupleArray([u16; 3]), } ``` - + 33333333 "# .to_string(); let reader = std::io::BufReader::new(input.as_bytes()); assert_eq!( - libra_doc::update_rust_quotes(reader, &definitions).unwrap(), + diem_doc::update_rust_quotes(reader, &definitions).unwrap(), expected_output ); } diff --git a/common/infallible/Cargo.toml b/common/infallible/Cargo.toml index 6286d85ff0..c484ba1e66 100644 --- a/common/infallible/Cargo.toml +++ b/common/infallible/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "libra-infallible" +name = "diem-infallible" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-infallible" +authors = ["Diem Association "] +description = "Diem diem-infallible" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } diff --git a/common/infallible/src/lib.rs b/common/infallible/src/lib.rs index 73293e8870..8368fcd11b 100644 --- a/common/infallible/src/lib.rs +++ b/common/infallible/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod mutex; diff --git a/common/infallible/src/mutex.rs b/common/infallible/src/mutex.rs index 511674bd3d..381e91fc40 100644 --- a/common/infallible/src/mutex.rs +++ b/common/infallible/src/mutex.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::sync::{Mutex as StdMutex, MutexGuard}; @@ -18,7 +18,7 @@ impl Mutex { pub fn lock(&self) -> MutexGuard<'_, T> { self.0 .lock() - .expect("libra cannot currently handle a poisoned lock") + .expect("diem cannot currently handle a poisoned lock") } } @@ -29,7 +29,7 @@ mod tests { use std::{sync::Arc, thread}; #[test] - fn test_libra_mutex() { + fn test_diem_mutex() { let a = 7u8; let mutex = Arc::new(Mutex::new(a)); let mutex2 = mutex.clone(); diff --git a/common/infallible/src/rwlock.rs b/common/infallible/src/rwlock.rs index ecbfa9b76a..fef8b63581 100644 --- a/common/infallible/src/rwlock.rs +++ b/common/infallible/src/rwlock.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::sync::{RwLock as RwLockImpl, RwLockReadGuard, RwLockWriteGuard}; @@ -18,21 +18,21 @@ impl RwLock { pub fn read(&self) -> RwLockReadGuard<'_, T> { self.0 .read() - .expect("libra cannot currently handle a poisoned lock") + .expect("diem cannot currently handle a poisoned lock") } /// lock the rwlock in write mode pub fn write(&self) -> RwLockWriteGuard<'_, T> { self.0 .write() - .expect("libra cannot currently handle a poisoned lock") + .expect("diem cannot currently handle a poisoned lock") } /// return the owned type consuming the lock pub fn into_inner(self) -> T { self.0 .into_inner() - .expect("libra cannot currently handle a poisoned lock") + .expect("diem cannot currently handle a poisoned lock") } } @@ -43,7 +43,7 @@ mod tests { use std::{sync::Arc, thread}; #[test] - fn test_libra_rwlock() { + fn test_diem_rwlock() { let a = 7u8; let rwlock = Arc::new(RwLock::new(a)); let rwlock2 = rwlock.clone(); diff --git a/common/infallible/src/time.rs b/common/infallible/src/time.rs index b8c18aee27..727273c442 100644 --- a/common/infallible/src/time.rs +++ b/common/infallible/src/time.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/common/logger/Cargo.toml b/common/logger/Cargo.toml index d408aa411c..ee84ac272e 100644 --- a/common/logger/Cargo.toml +++ b/common/logger/Cargo.toml @@ -1,23 +1,23 @@ [package] -name = "libra-logger" +name = "diem-logger" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-logger" +authors = ["Diem Association "] +description = "Diem diem-logger" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" # Do NOT add any inter-project dependencies. -# This is to avoid ever having a circular dependency with the libra-logger crate. +# This is to avoid ever having a circular dependency with the diem-logger crate. [dependencies] chrono = "0.4.19" erased-serde = "0.3.12" hostname = "0.3.1" -libra-log-derive = { path = "derive", version = "0.1.0" } -libra-infallible = { path = "../infallible", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-log-derive = { path = "derive", version = "0.1.0" } +diem-infallible = { path = "../infallible", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } once_cell = "1.4.1" serde = { version = "1.0.117", features = ["derive"] } serde_json = "1.0.60" diff --git a/common/logger/derive/Cargo.toml b/common/logger/derive/Cargo.toml index 347e8584d4..a837f3c7ce 100644 --- a/common/logger/derive/Cargo.toml +++ b/common/logger/derive/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "libra-log-derive" +name = "diem-log-derive" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,7 +12,7 @@ edition = "2018" proc-macro = true [dependencies] -libra-workspace-hack = { path = "../../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../workspace-hack", version = "0.1.0" } syn = { version = "1.0.53", features = ["extra-traits"] } quote = "1.0.7" proc-macro2 = "1.0.24" diff --git a/common/logger/derive/src/lib.rs b/common/logger/derive/src/lib.rs index ca8b5b6118..4568cf2d20 100644 --- a/common/logger/derive/src/lib.rs +++ b/common/logger/derive/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proc_macro::TokenStream; @@ -63,10 +63,10 @@ pub fn derive(input: TokenStream) -> TokenStream { // Calls to visit_pair let visitor = format_ident!("visitor"); - let from_serde = quote! { ::libra_logger::Value::from_serde }; - let from_display = quote! { ::libra_logger::Value::from_display }; - let from_debug = quote! { ::libra_logger::Value::from_debug }; - let key_new = quote! { ::libra_logger::Key::new }; + let from_serde = quote! { ::diem_logger::Value::from_serde }; + let from_display = quote! { ::diem_logger::Value::from_display }; + let from_debug = quote! { ::diem_logger::Value::from_debug }; + let key_new = quote! { ::diem_logger::Key::new }; let visits = fields.iter().map(|f| { let ident = f.ident.as_ref().unwrap(); let ident_str = ident.to_string(); @@ -95,8 +95,8 @@ pub fn derive(input: TokenStream) -> TokenStream { #(#setters)* } - impl #impl_generics ::libra_logger::Schema for #name #ty_generics #where_clause { - fn visit(&self, visitor: &mut dyn ::libra_logger::Visitor) { + impl #impl_generics ::diem_logger::Schema for #name #ty_generics #where_clause { + fn visit(&self, visitor: &mut dyn ::diem_logger::Visitor) { #(#visits)* } } diff --git a/common/logger/src/counters.rs b/common/logger/src/counters.rs index d03117521d..8a936206f4 100644 --- a/common/logger/src/counters.rs +++ b/common/logger/src/counters.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use once_cell::sync::Lazy; @@ -6,13 +6,13 @@ use prometheus::{register_int_counter, IntCounter}; /// Count of the struct logs submitted by macro pub static STRUCT_LOG_COUNT: Lazy = Lazy::new(|| { - register_int_counter!("libra_struct_log_count", "Count of the struct logs.").unwrap() + register_int_counter!("diem_struct_log_count", "Count of the struct logs.").unwrap() }); /// Count of struct logs processed, but not necessarily sent pub static PROCESSED_STRUCT_LOG_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_processed_count", + "diem_struct_log_processed_count", "Count of the struct logs received by the sender." ) .unwrap() @@ -21,7 +21,7 @@ pub static PROCESSED_STRUCT_LOG_COUNT: Lazy = Lazy::new(|| { /// Count of struct logs submitted through TCP pub static SENT_STRUCT_LOG_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_tcp_submit_count", + "diem_struct_log_tcp_submit_count", "Count of the struct logs submitted by TCP." ) .unwrap() @@ -30,7 +30,7 @@ pub static SENT_STRUCT_LOG_COUNT: Lazy = Lazy::new(|| { /// Number of bytes of struct logs submitted through TCP pub static SENT_STRUCT_LOG_BYTES: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_tcp_submit_bytes", + "diem_struct_log_tcp_submit_bytes", "Number of bytes of the struct logs submitted by TCP." ) .unwrap() @@ -39,7 +39,7 @@ pub static SENT_STRUCT_LOG_BYTES: Lazy = Lazy::new(|| { /// Metric for when we connect the outbound TCP pub static STRUCT_LOG_TCP_CONNECT_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_tcp_connect_count", + "diem_struct_log_tcp_connect_count", "Count of the tcp connections made for struct logs." ) .unwrap() @@ -48,7 +48,7 @@ pub static STRUCT_LOG_TCP_CONNECT_COUNT: Lazy = Lazy::new(|| { /// Metric for when we fail to log during sending to the queue pub static STRUCT_LOG_QUEUE_ERROR_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_queue_error_count", + "diem_struct_log_queue_error_count", "Count of all errors during queuing struct logs." ) .unwrap() @@ -57,7 +57,7 @@ pub static STRUCT_LOG_QUEUE_ERROR_COUNT: Lazy = Lazy::new(|| { /// Metric for when we fail to log during sending pub static STRUCT_LOG_SEND_ERROR_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_send_error_count", + "diem_struct_log_send_error_count", "Count of all errors during sending struct logs." ) .unwrap() @@ -65,7 +65,7 @@ pub static STRUCT_LOG_SEND_ERROR_COUNT: Lazy = Lazy::new(|| { pub static STRUCT_LOG_CONNECT_ERROR_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_connect_error_count", + "diem_struct_log_connect_error_count", "Count of all errors during connecting for struct logs." ) .unwrap() @@ -73,7 +73,7 @@ pub static STRUCT_LOG_CONNECT_ERROR_COUNT: Lazy = Lazy::new(|| { pub static STRUCT_LOG_PARSE_ERROR_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_struct_log_parse_error_count", + "diem_struct_log_parse_error_count", "Count of all parse errors during struct logs." ) .unwrap() diff --git a/common/logger/src/libra_logger.rs b/common/logger/src/diem_logger.rs similarity index 96% rename from common/logger/src/libra_logger.rs rename to common/logger/src/diem_logger.rs index 89c0ddad37..c551e0719d 100644 --- a/common/logger/src/libra_logger.rs +++ b/common/logger/src/diem_logger.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,7 +11,7 @@ use crate::{ Event, Filter, Level, LevelFilter, Metadata, }; use chrono::{SecondsFormat, Utc}; -use libra_infallible::RwLock; +use diem_infallible::RwLock; use once_cell::sync::Lazy; use serde::Serialize; use std::{ @@ -96,7 +96,7 @@ impl LogEntry { } } -pub struct LibraLoggerBuilder { +pub struct DiemLoggerBuilder { channel_size: usize, level: Level, remote_level: Level, @@ -105,7 +105,7 @@ pub struct LibraLoggerBuilder { is_async: bool, } -impl LibraLoggerBuilder { +impl DiemLoggerBuilder { #[allow(clippy::new_without_default)] pub fn new() -> Self { Self { @@ -159,7 +159,7 @@ impl LibraLoggerBuilder { self.build(); } - pub fn build(&mut self) -> Arc { + pub fn build(&mut self) -> Arc { let filter = { let local_filter = { let mut filter_builder = Filter::builder(); @@ -184,7 +184,7 @@ impl LibraLoggerBuilder { filter_builder.build() }; - LibraFilter { + DiemFilter { local_filter, remote_filter, } @@ -192,7 +192,7 @@ impl LibraLoggerBuilder { let logger = if self.is_async { let (sender, receiver) = mpsc::sync_channel(self.channel_size); - let logger = Arc::new(LibraLogger { + let logger = Arc::new(DiemLogger { sender: Some(sender), printer: None, filter: RwLock::new(filter), @@ -207,7 +207,7 @@ impl LibraLoggerBuilder { thread::spawn(move || service.run()); logger } else { - Arc::new(LibraLogger { + Arc::new(DiemLogger { sender: None, printer: self.printer.take(), filter: RwLock::new(filter), @@ -219,30 +219,30 @@ impl LibraLoggerBuilder { } } -struct LibraFilter { +struct DiemFilter { local_filter: Filter, remote_filter: Filter, } -impl LibraFilter { +impl DiemFilter { fn enabled(&self, metadata: &Metadata) -> bool { self.local_filter.enabled(metadata) || self.remote_filter.enabled(metadata) } } -pub struct LibraLogger { +pub struct DiemLogger { sender: Option>, printer: Option>, - filter: RwLock, + filter: RwLock, } -impl LibraLogger { - pub fn builder() -> LibraLoggerBuilder { - LibraLoggerBuilder::new() +impl DiemLogger { + pub fn builder() -> DiemLoggerBuilder { + DiemLoggerBuilder::new() } #[allow(clippy::new_ret_no_self)] - pub fn new() -> LibraLoggerBuilder { + pub fn new() -> DiemLoggerBuilder { Self::builder() } @@ -280,7 +280,7 @@ impl LibraLogger { } } -impl Logger for LibraLogger { +impl Logger for DiemLogger { fn enabled(&self, metadata: &Metadata) -> bool { self.filter.read().enabled(metadata) } @@ -296,7 +296,7 @@ struct LoggerService { receiver: Receiver, address: Option, printer: Option>, - facade: Arc, + facade: Arc, } impl LoggerService { @@ -423,7 +423,7 @@ impl Writer for FileWriter { /// Converts a record into a string representation: /// UNIX_TIMESTAMP LOG_LEVEL [thread_name] FILE:LINE MESSAGE JSON_DATA /// Example: -/// 2020-03-07 05:03:03 INFO [thread_name] common/libra-logger/src/lib.rs:261 Hello { "world": true } +/// 2020-03-07 05:03:03 INFO [thread_name] common/diem-logger/src/lib.rs:261 Hello { "world": true } fn format(entry: &LogEntry) -> Result { use std::fmt::Write; diff --git a/common/logger/src/event.rs b/common/logger/src/event.rs index 479464d1d8..244187e1a7 100644 --- a/common/logger/src/event.rs +++ b/common/logger/src/event.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{Metadata, Schema}; diff --git a/common/logger/src/filter.rs b/common/logger/src/filter.rs index 9b22ec967e..0f2f894ba1 100644 --- a/common/logger/src/filter.rs +++ b/common/logger/src/filter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{Level, Metadata}; diff --git a/common/logger/src/json_log.rs b/common/logger/src/json_log.rs index afdc371b39..ff67666306 100644 --- a/common/logger/src/json_log.rs +++ b/common/logger/src/json_log.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_infallible::{duration_since_epoch, Mutex}; +use diem_infallible::{duration_since_epoch, Mutex}; use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; use serde_json::{self, value as json}; diff --git a/common/logger/src/kv.rs b/common/logger/src/kv.rs index 9f7e007956..8645f21fe0 100644 --- a/common/logger/src/kv.rs +++ b/common/logger/src/kv.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Key-Value definitions diff --git a/common/logger/src/lib.rs b/common/logger/src/lib.rs index 20b714b4fd..7d51dd9c06 100644 --- a/common/logger/src/lib.rs +++ b/common/logger/src/lib.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This crates provides an API for logging in libra. +//! This crates provides an API for logging in diem. //! # Instrumenting with Logs //! ## Basic instrumenting with Logs //! //! A set of logging macros (`info!`, `error!`, `warn!`, `debug!`, and `trace!`) is provided for //! emitting logs at different levels. All of these macros support the addition of providing //! structured data along with a formatted text message. For guidelines on which level to use, -//! see the [coding guidelines](https://developers.libra.org/docs/community/coding-guidelines#logging). +//! see the [coding guidelines](https://developers.diem.com/docs/community/coding-guidelines#logging). //! //! The below examples do no type checking for structured log fields, and instead just serialize //! whatever is given. //! ``` -//! use libra_logger::info; +//! use diem_logger::info; //! //! let world = "world!"; //! @@ -51,7 +51,7 @@ //! trait for the struct as well as providing setters for all fields. //! //! ``` -//! use libra_logger::{info, Schema}; +//! use diem_logger::{info, Schema}; //! //! #[derive(Schema)] //! struct LogSchema<'a> { @@ -111,7 +111,7 @@ //! `SampleRate` determines how often the sampled statement will occur. //! //! ``` -//! use libra_logger::{info, sample, sample::{SampleRate, Sampling}}; +//! use diem_logger::{info, sample, sample::{SampleRate, Sampling}}; //! use std::time::Duration; //! //! // Sampled based on frequency of events, log only every 2 logs @@ -126,7 +126,7 @@ //! done by using the `Logger` type: //! //! ``` -//! use libra_logger::{Level, Logger}; +//! use diem_logger::{Level, Logger}; //! //! Logger::builder().level(Level::Info).build(); //! ``` @@ -135,9 +135,9 @@ pub mod prelude { pub use crate::{ - debug, error, event, info, - libra_logger::FileWriter, - sample, + debug, + diem_logger::FileWriter, + error, event, info, sample, sample::{SampleRate, Sampling}, security::SecurityEvent, trace, warn, @@ -145,10 +145,10 @@ pub mod prelude { } pub mod json_log; +mod diem_logger; mod event; mod filter; mod kv; -mod libra_logger; mod logger; mod macros; mod metadata; @@ -157,15 +157,15 @@ pub mod sample; mod security; mod struct_log; -pub use crate::libra_logger::{ - LibraLogger, LibraLogger as Logger, LibraLoggerBuilder, Writer, CHANNEL_SIZE, +pub use crate::diem_logger::{ + DiemLogger, DiemLogger as Logger, DiemLoggerBuilder, Writer, CHANNEL_SIZE, }; pub use event::Event; pub use filter::{Filter, LevelFilter}; pub use metadata::{Level, Metadata}; +pub use diem_log_derive::Schema; pub use kv::{Key, KeyValue, Schema, Value, Visitor}; -pub use libra_log_derive::Schema; pub use security::SecurityEvent; mod counters; diff --git a/common/logger/src/logger.rs b/common/logger/src/logger.rs index a1c28edcb0..6e9f3e9b00 100644 --- a/common/logger/src/logger.rs +++ b/common/logger/src/logger.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{counters::STRUCT_LOG_COUNT, Event, Metadata}; diff --git a/common/logger/src/macros.rs b/common/logger/src/macros.rs index 0f58975e2c..8bf8868059 100644 --- a/common/logger/src/macros.rs +++ b/common/logger/src/macros.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[macro_export] diff --git a/common/logger/src/metadata.rs b/common/logger/src/metadata.rs index 75b7bd92c0..01c7aefc45 100644 --- a/common/logger/src/metadata.rs +++ b/common/logger/src/metadata.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; diff --git a/common/logger/src/sample.rs b/common/logger/src/sample.rs index 5ada5b5856..bf2f8efb57 100644 --- a/common/logger/src/sample.rs +++ b/common/logger/src/sample.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Implement periodic sampling for logs diff --git a/common/logger/src/security.rs b/common/logger/src/security.rs index a15fa1b4b1..ae6759b156 100644 --- a/common/logger/src/security.rs +++ b/common/logger/src/security.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! @@ -6,7 +6,7 @@ //! logs to detect malicious behavior from other validators. //! //! ``` -//! use libra_logger::{error, SecurityEvent}; +//! use diem_logger::{error, SecurityEvent}; //! //! error!( //! SecurityEvent::InvalidRetrievedBlock, diff --git a/common/logger/src/struct_log.rs b/common/logger/src/struct_log.rs index 0d20cbec6a..89cb72fe98 100644 --- a/common/logger/src/struct_log.rs +++ b/common/logger/src/struct_log.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::counters::{STRUCT_LOG_CONNECT_ERROR_COUNT, STRUCT_LOG_TCP_CONNECT_COUNT}; use std::{ diff --git a/common/logger/tests/derive.rs b/common/logger/tests/derive.rs index 40ee8ab610..409134b5fb 100644 --- a/common/logger/tests/derive.rs +++ b/common/logger/tests/derive.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_log_derive::Schema; +use diem_log_derive::Schema; #[test] fn simple() { @@ -87,5 +87,5 @@ fn error_trait_object() { .debug_error(&debug_error) .display_error(&display_error); - ::libra_logger::info!(t); + ::diem_logger::info!(t); } diff --git a/common/logger/tests/logger.rs b/common/logger/tests/logger.rs index eb6e7c4f9d..6c97313f99 100644 --- a/common/logger/tests/logger.rs +++ b/common/logger/tests/logger.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_infallible::RwLock; -use libra_logger::{info, LibraLogger, Writer}; +use diem_infallible::RwLock; +use diem_logger::{info, DiemLogger, Writer}; use std::sync::Arc; #[derive(Default)] @@ -20,7 +20,7 @@ impl Writer for VecWriter { fn verify_end_to_end() { let writer = VecWriter::default(); let logs = writer.logs.clone(); - LibraLogger::builder() + DiemLogger::builder() .is_async(false) .printer(Box::new(writer)) .build(); diff --git a/common/metrics-core/Cargo.toml b/common/metrics-core/Cargo.toml index b1b903af82..a3e7edd2e5 100644 --- a/common/metrics-core/Cargo.toml +++ b/common/metrics-core/Cargo.toml @@ -1,14 +1,14 @@ [package] -name = "libra-metrics-core" +name = "diem-metrics-core" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-metrics-core" +authors = ["Diem Association "] +description = "Diem diem-metrics-core" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } prometheus = { version = "0.11.0", default-features = false } diff --git a/common/metrics-core/src/lib.rs b/common/metrics-core/src/lib.rs index a7f7d310b5..7673d2bb9e 100644 --- a/common/metrics-core/src/lib.rs +++ b/common/metrics-core/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Re-export counter types from prometheus crate diff --git a/common/metrics/Cargo.toml b/common/metrics/Cargo.toml index 1e12a15133..97c07fefd0 100644 --- a/common/metrics/Cargo.toml +++ b/common/metrics/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-metrics" +name = "diem-metrics" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-metrics" +authors = ["Diem Association "] +description = "Diem diem-metrics" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -18,9 +18,9 @@ prometheus = { version = "0.11.0", default-features = false } serde_json = "1.0.60" tokio = "0.2.22" -libra-logger = { path = "../logger", version = "0.1.0" } -libra-metrics-core = { path = "../metrics-core", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-logger = { path = "../logger", version = "0.1.0" } +diem-metrics-core = { path = "../metrics-core", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } [dev-dependencies] rusty-fork = "0.3.0" diff --git a/common/metrics/build.rs b/common/metrics/build.rs index ef911741aa..d15bb81650 100644 --- a/common/metrics/build.rs +++ b/common/metrics/build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{env, process::Command}; diff --git a/common/metrics/src/json_encoder.rs b/common/metrics/src/json_encoder.rs index 3ead0a749f..0b9ab9b2ac 100644 --- a/common/metrics/src/json_encoder.rs +++ b/common/metrics/src/json_encoder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use prometheus::{ diff --git a/common/metrics/src/json_metrics.rs b/common/metrics/src/json_metrics.rs index dc1f3417a9..05d42bd064 100644 --- a/common/metrics/src/json_metrics.rs +++ b/common/metrics/src/json_metrics.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::collections::HashMap; diff --git a/common/metrics/src/lib.rs b/common/metrics/src/lib.rs index e9c3185c29..72ead71332 100644 --- a/common/metrics/src/lib.rs +++ b/common/metrics/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! # Metrics @@ -59,14 +59,14 @@ pub use op_counters::{DurationHistogram, OpMetrics}; mod unit_tests; // Re-export counter types from prometheus crate -pub use libra_metrics_core::{ +pub use diem_metrics_core::{ register_histogram, register_histogram_vec, register_int_counter, register_int_counter_vec, register_int_gauge, register_int_gauge_vec, Histogram, HistogramTimer, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, }; use anyhow::Result; -use libra_logger::prelude::*; +use diem_logger::prelude::*; use once_cell::sync::Lazy; use prometheus::{proto::MetricType, Encoder, TextEncoder}; use std::{ @@ -79,7 +79,7 @@ use std::{ pub static NUM_METRICS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_metrics", + "diem_metrics", "Number of metrics in certain states", &["type"] ) @@ -101,7 +101,7 @@ fn get_metrics_file>(dir_path: &P, file_name: &str) -> File { } pub fn gather_metrics() -> Vec { - let metric_families = libra_metrics_core::gather(); + let metric_families = diem_metrics_core::gather(); let mut total: u64 = 0; let mut families_over_1000: u64 = 0; diff --git a/common/metrics/src/metric_server.rs b/common/metrics/src/metric_server.rs index 433fa90576..420b65286a 100644 --- a/common/metrics/src/metric_server.rs +++ b/common/metrics/src/metric_server.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -67,7 +67,7 @@ async fn serve_metrics(req: Request) -> Result, hyper::Erro let mut resp = Response::new(Body::empty()); match (req.method(), req.uri().path()) { (&Method::GET, "/-/healthy") => { - *resp.body_mut() = Body::from("libra-node:ok"); + *resp.body_mut() = Body::from("diem-node:ok"); } (&Method::GET, "/metrics") => { //Prometheus server expects metrics to be on host:port/metrics @@ -82,7 +82,7 @@ async fn serve_metrics(req: Request) -> Result, hyper::Erro *resp.body_mut() = Body::from(encoded_metrics); } (&Method::GET, "/counters") => { - // Json encoded libra_metrics; + // Json encoded diem_metrics; let encoder = JsonEncoder; let buffer = encode_metrics(encoder, &[]); *resp.body_mut() = Body::from(buffer); diff --git a/common/metrics/src/op_counters.rs b/common/metrics/src/op_counters.rs index 622821bf3c..ca0113a53b 100644 --- a/common/metrics/src/op_counters.rs +++ b/common/metrics/src/op_counters.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! `OpCounters` is a collection of convenience methods to add arbitrary counters to modules. diff --git a/common/metrics/src/public_metrics.rs b/common/metrics/src/public_metrics.rs index b6d81df2b3..9cf930e277 100644 --- a/common/metrics/src/public_metrics.rs +++ b/common/metrics/src/public_metrics.rs @@ -1,5 +1,5 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // A list of metrics which will be made public to all the partners -pub const PUBLIC_METRICS: &[&str] = &["libra_network_peers", "revision"]; +pub const PUBLIC_METRICS: &[&str] = &["diem_network_peers", "revision"]; diff --git a/common/metrics/src/unit_tests/lib_test.rs b/common/metrics/src/unit_tests/lib_test.rs index ca026d70ba..cedb54748e 100644 --- a/common/metrics/src/unit_tests/lib_test.rs +++ b/common/metrics/src/unit_tests/lib_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::super::*; @@ -30,7 +30,7 @@ fn gather_metrics_test() { // has been successfully published to prometheus and the result gathered reflect the value change. #[test] fn publish_metrics_test() { - let counter_opts = Opts::new("libra_test_counter", "libra test counter help"); + let counter_opts = Opts::new("diem_test_counter", "diem test counter help"); let counter = Counter::with_opts(counter_opts).unwrap(); let r = Registry::new(); @@ -41,8 +41,8 @@ fn publish_metrics_test() { assert_eq!(metric_families.len(), 1); let m: &MetricFamily = metric_families.get(0).unwrap(); - assert_eq!("libra test counter help", m.get_help()); - assert_eq!("libra_test_counter", m.get_name()); + assert_eq!("diem test counter help", m.get_help()); + assert_eq!("diem_test_counter", m.get_name()); let metrics = m.get_metric(); assert_eq!(metrics.len(), 1); diff --git a/common/metrics/src/unit_tests/mod.rs b/common/metrics/src/unit_tests/mod.rs index 7f398ebc7a..cdbf5c171f 100644 --- a/common/metrics/src/unit_tests/mod.rs +++ b/common/metrics/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod lib_test; diff --git a/common/nibble/Cargo.toml b/common/nibble/Cargo.toml index 91d0d198ad..79db2a93df 100644 --- a/common/nibble/Cargo.toml +++ b/common/nibble/Cargo.toml @@ -1,16 +1,16 @@ [package] -name = "libra-nibble" +name = "diem-nibble" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-nibble" +authors = ["Diem Association "] +description = "Diem diem-nibble" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } proptest = { version = "0.10.1", optional = true } serde = { version = "1.0.117", features = ["derive"] } diff --git a/common/nibble/src/lib.rs b/common/nibble/src/lib.rs index 90182f1e5b..9e98708564 100644 --- a/common/nibble/src/lib.rs +++ b/common/nibble/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/common/num-variants/Cargo.toml b/common/num-variants/Cargo.toml index b05ae5a97e..e56f87a3bb 100644 --- a/common/num-variants/Cargo.toml +++ b/common/num-variants/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "num-variants" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] edition = "2018" publish = false license = "Apache-2.0" @@ -13,4 +13,4 @@ proc-macro = true syn = "1.0.53" quote = "1.0.7" proc-macro2 = "1.0.24" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } diff --git a/common/num-variants/src/lib.rs b/common/num-variants/src/lib.rs index e66d2682c6..81a04a934d 100644 --- a/common/num-variants/src/lib.rs +++ b/common/num-variants/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Add an associated constant to an enum describing the number of variants it has. diff --git a/common/num-variants/tests/basic.rs b/common/num-variants/tests/basic.rs index 83da112b21..f730cbe27e 100644 --- a/common/num-variants/tests/basic.rs +++ b/common/num-variants/tests/basic.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(dead_code)] diff --git a/common/proptest-helpers/Cargo.toml b/common/proptest-helpers/Cargo.toml index 2d9854d3a2..1d624eb757 100644 --- a/common/proptest-helpers/Cargo.toml +++ b/common/proptest-helpers/Cargo.toml @@ -1,16 +1,16 @@ [package] -name = "libra-proptest-helpers" +name = "diem-proptest-helpers" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra proptest helpers" +authors = ["Diem Association "] +description = "Diem proptest helpers" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] crossbeam = "0.8.0" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } proptest = "0.10.1" proptest-derive = "0.2.0" diff --git a/common/proptest-helpers/src/growing_subset.rs b/common/proptest-helpers/src/growing_subset.rs index ac5425428f..f1a05f1885 100644 --- a/common/proptest-helpers/src/growing_subset.rs +++ b/common/proptest-helpers/src/growing_subset.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proptest::sample::Index; @@ -15,7 +15,7 @@ use std::iter::FromIterator; /// # Examples /// /// ``` -/// use libra_proptest_helpers::GrowingSubset; +/// use diem_proptest_helpers::GrowingSubset; /// let items = vec![(1, "a"), (3, "c"), (2, "b"), (2, "d")]; /// let mut subset: GrowingSubset<_, _> = items.into_iter().collect(); /// diff --git a/common/proptest-helpers/src/lib.rs b/common/proptest-helpers/src/lib.rs index 24abe128e9..4402f0da44 100644 --- a/common/proptest-helpers/src/lib.rs +++ b/common/proptest-helpers/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -32,7 +32,7 @@ use std::{ /// /// ``` /// use proptest::prelude::*; -/// use libra_proptest_helpers::with_stack_size; +/// use diem_proptest_helpers::with_stack_size; /// /// with_stack_size(4 * 1024 * 1024, || proptest!(|(x in 0usize..128)| { /// // assertions go here diff --git a/common/proptest-helpers/src/repeat_vec.rs b/common/proptest-helpers/src/repeat_vec.rs index ddd3127912..5c60b1fa87 100644 --- a/common/proptest-helpers/src/repeat_vec.rs +++ b/common/proptest-helpers/src/repeat_vec.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::pick_slice_idxs; @@ -18,7 +18,7 @@ use std::iter; /// # Examples /// /// ``` -/// use libra_proptest_helpers::RepeatVec; +/// use diem_proptest_helpers::RepeatVec; /// /// let mut repeat_vec = RepeatVec::new(); /// repeat_vec.extend("a", 10); // logically, insert "a" 10 times @@ -33,7 +33,7 @@ use std::iter; /// The data structure doesn't care about whether the inserted items are equal or not. /// /// ``` -/// use libra_proptest_helpers::RepeatVec; +/// use diem_proptest_helpers::RepeatVec; /// /// let mut repeat_vec = RepeatVec::new(); /// repeat_vec.extend("a", 10); // logically, insert "a" 10 times @@ -78,7 +78,7 @@ impl RepeatVec { /// # Examples /// /// ``` - /// use libra_proptest_helpers::RepeatVec; + /// use diem_proptest_helpers::RepeatVec; /// /// let mut repeat_vec = RepeatVec::new(); /// diff --git a/common/proptest-helpers/src/unit_tests.rs b/common/proptest-helpers/src/unit_tests.rs index ac25947054..7676a6a13b 100644 --- a/common/proptest-helpers/src/unit_tests.rs +++ b/common/proptest-helpers/src/unit_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod growing_subset_tests; diff --git a/common/proptest-helpers/src/unit_tests/growing_subset_tests.rs b/common/proptest-helpers/src/unit_tests/growing_subset_tests.rs index 227bcce004..8ab0cc6a0f 100644 --- a/common/proptest-helpers/src/unit_tests/growing_subset_tests.rs +++ b/common/proptest-helpers/src/unit_tests/growing_subset_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::GrowingSubset; diff --git a/common/proptest-helpers/src/unit_tests/pick_idx_tests.rs b/common/proptest-helpers/src/unit_tests/pick_idx_tests.rs index 1cd227b72a..d8cba0c790 100644 --- a/common/proptest-helpers/src/unit_tests/pick_idx_tests.rs +++ b/common/proptest-helpers/src/unit_tests/pick_idx_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{pick_slice_idxs, Index}; diff --git a/common/proptest-helpers/src/unit_tests/repeat_vec_tests.rs b/common/proptest-helpers/src/unit_tests/repeat_vec_tests.rs index a3d4487a9c..1953d7a271 100644 --- a/common/proptest-helpers/src/unit_tests/repeat_vec_tests.rs +++ b/common/proptest-helpers/src/unit_tests/repeat_vec_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::RepeatVec; diff --git a/common/proptest-helpers/src/value_generator.rs b/common/proptest-helpers/src/value_generator.rs index a645ca36d2..6b002640e5 100644 --- a/common/proptest-helpers/src/value_generator.rs +++ b/common/proptest-helpers/src/value_generator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proptest::{ diff --git a/common/retrier/Cargo.toml b/common/retrier/Cargo.toml index cfa9c917ad..db974b80a4 100644 --- a/common/retrier/Cargo.toml +++ b/common/retrier/Cargo.toml @@ -1,15 +1,15 @@ [package] -name = "libra-retrier" +name = "diem-retrier" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra implementation for retries of operations" +authors = ["Diem Association "] +description = "Diem implementation for retries of operations" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-workspace-hack = { path = "..//workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "..//workspace-hack", version = "0.1.0" } tokio = { version = "0.2.22", features = ["time"] } -libra-logger = { path = "../../common/logger", version = "0.1.0"} +diem-logger = { path = "../../common/logger", version = "0.1.0"} diff --git a/common/retrier/src/lib.rs b/common/retrier/src/lib.rs index a373e6f82c..61971cac17 100644 --- a/common/retrier/src/lib.rs +++ b/common/retrier/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_logger::debug; +use diem_logger::debug; use std::{cmp::min, future::Future, pin::Pin, thread, time::Duration}; /// Given an operation retries it successfully sleeping everytime it fails diff --git a/common/short-hex-str/Cargo.toml b/common/short-hex-str/Cargo.toml index a9048b1532..067ae561e6 100644 --- a/common/short-hex-str/Cargo.toml +++ b/common/short-hex-str/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "short-hex-str" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra implementation for retries of operations" +authors = ["Diem Association "] +description = "Diem implementation for retries of operations" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,7 +14,7 @@ mirai-annotations = "1.10.1" serde = { version = "1.0.117", default-features = false } thiserror = "1.0.22" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } [dev-dependencies] hex = "0.4.2" diff --git a/common/short-hex-str/src/lib.rs b/common/short-hex-str/src/lib.rs index 8bc792058b..644a34e6d1 100644 --- a/common/short-hex-str/src/lib.rs +++ b/common/short-hex-str/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use mirai_annotations::debug_checked_precondition; diff --git a/common/subscription-service/Cargo.toml b/common/subscription-service/Cargo.toml index 010a33d622..00f8e51832 100644 --- a/common/subscription-service/Cargo.toml +++ b/common/subscription-service/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "subscription-service" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra subscription service" +authors = ["Diem Association "] +description = "Diem subscription service" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,6 +12,6 @@ edition = "2018" [dependencies] anyhow = "1.0.34" -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } channel = { path = "..//channel", version = "0.1.0" } diff --git a/common/subscription-service/src/lib.rs b/common/subscription-service/src/lib.rs index 0abe75f49a..32c42cf8d1 100644 --- a/common/subscription-service/src/lib.rs +++ b/common/subscription-service/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -7,10 +7,10 @@ use anyhow::Result; use channel::{ - libra_channel::{self, Receiver, Sender}, + diem_channel::{self, Receiver, Sender}, message_queues::QueueStyle, }; -use libra_types::{ +use diem_types::{ event::EventKey, on_chain_config::{ConfigID, OnChainConfigPayload}, }; @@ -27,7 +27,7 @@ impl SubscriptionService { /// Returns the subscription object, and the receiving end of a channel that subscription will be sent to pub fn subscribe(name: &str, items: T) -> (Self, Receiver<(), U>) { let (sender, receiver) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); ( Self { name: name.to_string(), diff --git a/common/temppath/Cargo.toml b/common/temppath/Cargo.toml index f3378dd9f1..3dfdef3582 100644 --- a/common/temppath/Cargo.toml +++ b/common/temppath/Cargo.toml @@ -1,15 +1,15 @@ [package] -name = "libra-temppath" +name = "diem-temppath" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-temppath" +authors = ["Diem Association "] +description = "Diem diem-temppath" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] hex = "0.4.2" -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } rand = "0.7.3" diff --git a/common/temppath/src/lib.rs b/common/temppath/src/lib.rs index 413c23b83b..421e591037 100644 --- a/common/temppath/src/lib.rs +++ b/common/temppath/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/common/trace/Cargo.toml b/common/trace/Cargo.toml index a17a290e12..5470df6a25 100644 --- a/common/trace/Cargo.toml +++ b/common/trace/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-trace" +name = "diem-trace" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-trace" +authors = ["Diem Association "] +description = "Diem diem-trace" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,6 +19,6 @@ anyhow = "1.0.34" reqwest = { version = "0.10.9", features = ["blocking", "json"], default_features = false } once_cell = "1.4.1" -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../metrics", version = "0.1.0" } -libra-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../metrics", version = "0.1.0" } +diem-workspace-hack = { path = "../workspace-hack", version = "0.1.0" } diff --git a/common/trace/src/counters.rs b/common/trace/src/counters.rs index 8d07bb788d..6470f7a870 100644 --- a/common/trace/src/counters.rs +++ b/common/trace/src/counters.rs @@ -1,14 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{register_int_counter, IntCounter}; +use diem_metrics::{register_int_counter, IntCounter}; use once_cell::sync::Lazy; /// Count of the trace_event logged. pub static TRACE_EVENT_COUNT: Lazy = Lazy::new(|| { - register_int_counter!( - "libra_trace_event_count", - "Count of the trace_event logged." - ) - .unwrap() + register_int_counter!("diem_trace_event_count", "Count of the trace_event logged.").unwrap() }); diff --git a/common/trace/src/lib.rs b/common/trace/src/lib.rs index 65d26c4c66..e2cb717687 100644 --- a/common/trace/src/lib.rs +++ b/common/trace/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use chrono::{DateTime, Duration, Utc}; -use libra_logger::json_log::JsonLogEntry; +use diem_logger::json_log::JsonLogEntry; use reqwest::Client; use serde::Deserialize; use serde_json::json; @@ -17,7 +17,7 @@ pub mod prelude { }; } -pub use trace::{is_selected, libra_trace_set, set_libra_trace}; +pub use trace::{diem_trace_set, is_selected, set_diem_trace}; const TRACE_EVENT: &str = "trace_event"; const TRACE_EDGE: &str = "trace_edge"; @@ -48,13 +48,13 @@ struct Source { pod_name: String, } -pub struct LibraTraceClient { +pub struct DiemTraceClient { client: Client, addr: String, } -impl LibraTraceClient { - /// Create LibraTraceClient from a valid socket address. +impl DiemTraceClient { + /// Create DiemTraceClient from a valid socket address. pub fn new>(address: A, port: u16) -> Self { let client = Client::new(); let addr = format!("http://{}:{}", address.as_ref(), port); @@ -62,7 +62,7 @@ impl LibraTraceClient { Self { client, addr } } - pub async fn get_libra_trace( + pub async fn get_diem_trace( &self, start_time: DateTime, duration: Duration, @@ -78,7 +78,7 @@ impl LibraTraceClient { "query": { "bool": { "must": [ - { "term": { "name": "libra_trace"}} + { "term": { "name": "diem_trace"}} ], "filter": [ { "range": { "@timestamp": { "gte": start, "lte": end }}} diff --git a/common/trace/src/main.rs b/common/trace/src/main.rs index 82a9ff81a4..a5f2ee6e23 100644 --- a/common/trace/src/main.rs +++ b/common/trace/src/main.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use chrono::{DateTime, NaiveDateTime, Utc}; -use libra_logger::{info, LibraLogger}; -use libra_trace::{ +use diem_logger::{info, DiemLogger}; +use diem_trace::{ trace::{random_node, trace_node}, - LibraTraceClient, + DiemTraceClient, }; use serde_json::Value; use std::env; use structopt::StructOpt; #[derive(StructOpt, Debug)] -#[structopt(about = "Libra Trace")] +#[structopt(about = "Diem Trace")] struct Args { #[structopt(long, help = "Hostname of elastic search backend")] host: String, @@ -22,13 +22,13 @@ struct Args { #[structopt( long, - help = "Start time to retrieve libra traces, format as yyyy-MM-ddTHH:mm:ss in UTC" + help = "Start time to retrieve diem traces, format as yyyy-MM-ddTHH:mm:ss in UTC" )] start: String, #[structopt( long, - help = "Time to retrieve libra traces for in seconds", + help = "Time to retrieve diem traces for in seconds", default_value = "5" )] duration: i64, @@ -39,7 +39,7 @@ pub async fn main() { if env::var("RUST_LOG").is_err() { env::set_var("RUST_LOG", "info"); } - LibraLogger::builder().is_async(true).build(); + DiemLogger::builder().is_async(true).build(); let args = Args::from_args(); @@ -48,8 +48,8 @@ pub async fn main() { Utc, ); let duration = chrono::Duration::seconds(args.duration); - let libra_trace_client = LibraTraceClient::new(args.host, args.port); - let trace = match libra_trace_client.get_libra_trace(start, duration).await { + let diem_trace_client = DiemTraceClient::new(args.host, args.port); + let trace = match diem_trace_client.get_diem_trace(start, duration).await { Ok(trace) => Some(trace), Err(err) => { info!("Failed to capture traces from elastic search {}", err); diff --git a/common/trace/src/trace.rs b/common/trace/src/trace.rs index 4a7b0d59d5..aedd0e6a96 100644 --- a/common/trace/src/trace.rs +++ b/common/trace/src/trace.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, ensure, Result}; -use libra_logger::json_log::JsonLogEntry; +use diem_logger::json_log::JsonLogEntry; use std::time::Instant; pub const TRACE_EVENT: &str = "trace_event"; pub const TRACE_EDGE: &str = "trace_edge"; -pub const LIBRA_TRACE: &str = "libra_trace"; +pub const DIEM_TRACE: &str = "diem_trace"; use std::{ collections::HashMap, @@ -18,7 +18,7 @@ use std::{ // It have few unsafe lines, but does not require extra dependency // Sampling rate is the form of (nominator, denominator) static mut SAMPLING_CONFIG: Option = None; -static LIBRA_TRACE_STATE: AtomicUsize = AtomicUsize::new(UNINITIALIZED); +static DIEM_TRACE_STATE: AtomicUsize = AtomicUsize::new(UNINITIALIZED); const UNINITIALIZED: usize = 0; const INITIALIZING: usize = 1; const INITIALIZED: usize = 2; @@ -68,10 +68,10 @@ macro_rules! node_sampling_data { #[macro_export] macro_rules! send_logs { ($name:expr, $json:expr) => { - let log_entry = libra_logger::json_log::JsonLogEntry::new($name, $json); - libra_logger::json_log::send_json_log(log_entry.clone()); + let log_entry = diem_logger::json_log::JsonLogEntry::new($name, $json); + diem_logger::json_log::send_json_log(log_entry.clone()); // TODO: we should determine what level we want to use for these traces so they show up - libra_logger::trace!(trace_type = $name, trace_entry = log_entry); + diem_logger::trace!(trace_type = $name, trace_entry = log_entry); $crate::counters::TRACE_EVENT_COUNT.inc(); }; } @@ -383,7 +383,7 @@ fn crate_name(path: &str) -> &str { Some(pos) => &path[0..pos], None => path, }; - let name = if let Some(stripped) = name.strip_prefix("libra_") { + let name = if let Some(stripped) = name.strip_prefix("diem_") { stripped } else { name @@ -399,22 +399,21 @@ fn abbreviate_crate(name: &str) -> &str { } // This is exact copy of similar function in log crate -/// Sets libra trace config -pub fn set_libra_trace(config: &HashMap) -> Result<()> { +/// Sets diem trace config +pub fn set_diem_trace(config: &HashMap) -> Result<()> { match parse_sampling_config(config) { Ok(sampling) => unsafe { - match LIBRA_TRACE_STATE.compare_and_swap(UNINITIALIZED, INITIALIZING, Ordering::SeqCst) - { + match DIEM_TRACE_STATE.compare_and_swap(UNINITIALIZED, INITIALIZING, Ordering::SeqCst) { UNINITIALIZED => { SAMPLING_CONFIG = Some(sampling); - LIBRA_TRACE_STATE.store(INITIALIZED, Ordering::SeqCst); + DIEM_TRACE_STATE.store(INITIALIZED, Ordering::SeqCst); Ok(()) } INITIALIZING => { - while LIBRA_TRACE_STATE.load(Ordering::SeqCst) == INITIALIZING {} - bail!("Failed to initialize LIBRA_TRACE_STATE"); + while DIEM_TRACE_STATE.load(Ordering::SeqCst) == INITIALIZING {} + bail!("Failed to initialize DIEM_TRACE_STATE"); } - _ => bail!("Failed to initialize LIBRA_TRACE_STATE"), + _ => bail!("Failed to initialize DIEM_TRACE_STATE"), } }, Err(s) => bail!("Failed to parse sampling config: {}", s), @@ -440,13 +439,13 @@ fn parse_sampling_config(config: &HashMap) -> Result { Ok(Sampling(map)) } -/// Checks if libra trace is enabled -pub fn libra_trace_set() -> bool { - LIBRA_TRACE_STATE.load(Ordering::SeqCst) == INITIALIZED +/// Checks if diem trace is enabled +pub fn diem_trace_set() -> bool { + DIEM_TRACE_STATE.load(Ordering::SeqCst) == INITIALIZED } pub fn is_selected(node: (&'static str, u64)) -> bool { - if !libra_trace_set() { + if !diem_trace_set() { return false; } unsafe { diff --git a/common/workspace-hack/Cargo.toml b/common/workspace-hack/Cargo.toml index e6ba96eeb7..2bafbc004d 100644 --- a/common/workspace-hack/Cargo.toml +++ b/common/workspace-hack/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-workspace-hack" +name = "diem-workspace-hack" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra workspace hack" +authors = ["Diem Association "] +description = "Diem workspace hack" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" diff --git a/common/workspace-hack/README.md b/common/workspace-hack/README.md index 69fb6c0688..1b6587cf55 100644 --- a/common/workspace-hack/README.md +++ b/common/workspace-hack/README.md @@ -1,4 +1,4 @@ -# libra-workspace-hack +# diem-workspace-hack This crate is hack to unify 3rd party dependency crate features in order to have better compilation caching. Each time cargo is invoked, it computes diff --git a/common/workspace-hack/src/lib.rs b/common/workspace-hack/src/lib.rs index cd2eda117f..e2f6627b91 100644 --- a/common/workspace-hack/src/lib.rs +++ b/common/workspace-hack/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // intentionally left blank diff --git a/config/Cargo.toml b/config/Cargo.toml index 0d3809fc90..a30cd71643 100644 --- a/config/Cargo.toml +++ b/config/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-config" +name = "diem-config" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-config" +authors = ["Diem Association "] +description = "Diem diem-config" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -20,21 +20,21 @@ thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } -libra-global-constants = { path = "../config/global-constants", version = "0.1.0"} -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-network-address = { path = "../network/network-address", version = "0.1.0" } -libra-network-address-encryption = { path = "management/network-address-encryption", version = "0.1.0" } -libra-secure-storage = { path = "../secure/storage", version = "0.1.0" } -libra-temppath = { path = "../common/temppath", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } +diem-global-constants = { path = "../config/global-constants", version = "0.1.0"} +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-network-address = { path = "../network/network-address", version = "0.1.0" } +diem-network-address-encryption = { path = "management/network-address-encryption", version = "0.1.0" } +diem-secure-storage = { path = "../secure/storage", version = "0.1.0" } +diem-temppath = { path = "../common/temppath", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } [dev-dependencies] -libra-crypto = { path = "../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["libra-crypto/fuzzing", "libra-types/fuzzing"] +fuzzing = ["diem-crypto/fuzzing", "diem-types/fuzzing"] testing = [] diff --git a/config/README.md b/config/README.md index 2e648eda94..4f3192c06c 100644 --- a/config/README.md +++ b/config/README.md @@ -1,14 +1,14 @@ -# Libra Configuration +# Diem Configuration -The Libra Configuration describes the operational details for a Libra Node -(Validator or Full node) and provides the Libra Clients information on how to +The Diem Configuration describes the operational details for a Diem Node +(Validator or Full node) and provides the Diem Clients information on how to connect to the blockchain and derive trust. Validators perform the BFT protocol and host the source of truth for the blockchain. -Fullnodes offer replication services for the Libra blockchain as the primary -entry point for Libra Clients to submit read requests (i.e., queries about the +Fullnodes offer replication services for the Diem blockchain as the primary +entry point for Diem Clients to submit read requests (i.e., queries about the state of the blockchain). In turn, Validators focus on optimizing transaction throughput. @@ -17,19 +17,19 @@ blockchain or performing transactions. For a more detailed summary of the differences between a Validator and a Fullnode, see this [blog -post](https://developers.libra.org/blog/2020/01/23/full-node-basics). +post](https://developers.diem.com/blog/2020/01/23/full-node-basics). ## Organization -Libra Configuration is broken up into many utilities: +Diem Configuration is broken up into many utilities: - `src/config` hosts the core configuration file structure - `src/generator.rs` assists in building sets of configurations for a Validator or Fullnode set - `src/keys.rs` wraps keys within the configuration files for testing purposes - `config-builder` extends `src/generator.rs` with a command-line utility and also provides support for generating genesis -- `generate-key` generates an Ed25519 private key in Libra Canonical - Serialization (LCS) format. This is used by the mint. +- `generate-key` generates an Ed25519 private key in Diem Canonical + Serialization (DCS) format. This is used by the mint. The separation of the `config-builder` into its own crate was dictated by the need for `config-builder` to be able to generate genesis. Genesis requires the @@ -40,7 +40,7 @@ configuration from many of the services. `config-builder` builds an entire configuration for a Validator or FullNode, including the genesis blob. It takes as one of its input parameters an index that -specifies the specific node config to return. This can be used to create a Libra +specifies the specific node config to return. This can be used to create a Diem TestNet by constructing compatible configurations for the full set of Validators. Similarly the tool can be used to add Fullnodes to an existing network. Finally, it enables generation of a mint/faucet client capable of performing mint @@ -58,11 +58,11 @@ The configuration for validator `I`, can be produced by: config-builder validator \ -a $PUBLIC_MULTIADDR_FOR_VALIDATOR_I \ -b $PUBLIC_MULTIADDR_FOR_VALIDATOR_0 \ - -d /opt/libra/data \ + -d /opt/diem/data \ -i $I \ -l $ANY_MULTIADDR_FOR_VALIDATOR_I \ -n $TOTAL_NUMBER_OF_VALIDATORS \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s $SHARED_SECRET As an example, this is the 2nd Validator (offset 1) in a 4 Validator TestNet: @@ -70,17 +70,17 @@ As an example, this is the 2nd Validator (offset 1) in a 4 Validator TestNet: config-builder validator \ -a "/ip4/1.1.1.2/tcp/7000" \ -b "/ip4/1.1.1.1/tcp/7000" \ - -d /opt/libra/data \ + -d /opt/diem/data \ -i 1 \ -l "/ip4/0.0.0.0/tcp/7000" \ -n 4 \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 To create a mint service's key: config-builder faucet \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 Instantiating a FullNode config is similar to instantiating a Validator config. @@ -97,10 +97,10 @@ networks. config-builder full-node (create | extend) \ -a $PUBLIC_MULTIADDR_FOR_FULL_NODE_I \ -b $PUBLIC_MULTIADDR_FOR_FULL_NODE_0 \ - -d /opt/libra/data \ + -d /opt/diem/data \ -l $ANY_MULTIADDR_FOR_FULL_NODE_I \ -n $TOTAL_NUMBER_OF_VALIDATORS \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s $VALIDATOR_SHARED_SECRET \ [ -i $I -f $TOTAL_NUMBER_OF_FULL_NODES -c $FULL_NODE_SHARED_SECRET | -p ] @@ -110,10 +110,10 @@ configuration. config-builder full-node extend \ -a "/ip4/1.1.1.2/tcp/7100" \ -b "/ip4/1.1.1.2/tcp/7100" \ - -d /opt/libra/data \ + -d /opt/diem/data \ -l "/ip4/0.0.0.0/tcp/7100" \ -n 4 \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \ -i 0 \ -f 4 \ @@ -125,10 +125,10 @@ Validator/FullNode hybrid configured above. config-builder full-node create \ -a "/ip4/1.1.1.3/tcp/7100" \ -b "/ip4/1.1.1.2/tcp/7100" \ - -d /opt/libra/fn/data \ + -d /opt/diem/fn/data \ -l "/ip4/0.0.0.0/tcp/7100" \ -n 4 \ - -o /opt/libra/fn/etc \ + -o /opt/diem/fn/etc \ -s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \ -i 1 \ -f 4 \ @@ -139,21 +139,21 @@ Similarly a public network could be added via: config-builder full-node create \ -a "/ip4/1.1.1.2/tcp/7100" \ -b "/ip4/1.1.1.2/tcp/7100" \ - -d /opt/libra/fn/data \ + -d /opt/diem/fn/data \ -l "/ip4/0.0.0.0/tcp/7100" \ -n 4 \ - -o /opt/libra/etc \ + -o /opt/diem/etc \ -s 0123456789abcdef101112131415161718191a1b1c1d1e1f2021222324252627 \ -p ## Internals -There are several different configurations contained within Libra Configuration. +There are several different configurations contained within Diem Configuration. -### Libra Node Configuration -The Libra Node configuration contains several modules: +### Diem Node Configuration +The Diem Node configuration contains several modules: -- AdmissionControlConfig - Where a Libra Node hosts their AC +- AdmissionControlConfig - Where a Diem Node hosts their AC - BaseConfig - Specifies the Node's role and base directories - ConsensusConfig - The behaviors of Consensus including the SafetyRules TCB - DebugInterface - A special gRPC service for identifying internals of the @@ -162,22 +162,22 @@ The Libra Node configuration contains several modules: that defines the Move standard library and the initial Validator set. - MempoolConfig - Parameters for configuring uncommitted transaction storage - MetricsConfig - Local storage for metrics -- NetworkConfig - LibraNet configuration file that specifies peers with keys, +- NetworkConfig - DiemNet configuration file that specifies peers with keys, seed addresses to connect to upstream peers, the local peers network keys, and other network configuration parameters -- NodeConfig - Hosts all configuration files for a Libra Node -- SafetyRulesConfig - Specifies the persistency strategy for Libra Safety +- NodeConfig - Hosts all configuration files for a Diem Node +- SafetyRulesConfig - Specifies the persistency strategy for Diem Safety Rules - StateSyncConfig - Specifies parameters around state sycnhronization and the set of peers that provide the data -- StorageConfig - Where the LibraDB is stored and its gRPC service endpoints +- StorageConfig - Where the DiemDB is stored and its gRPC service endpoints ### External Component Configurations -Outside of each Libra Node, external components can also be configured: +Outside of each Diem Node, external components can also be configured: - KeyManagerConfig - This contains configurations details for starting and operating the Key Manager: the component service responsible for rotating -cryptographic keys for Libra Nodes. +cryptographic keys for Diem Nodes. ### Shared Configuration @@ -194,7 +194,7 @@ Configuration tests serve several purposes: - Verifying that default filename assumptions are maintained Several of the defaults in the configurations, in particular paths and -addresses, have dependencies outside the Libra code base. These tests serve as +addresses, have dependencies outside the Diem code base. These tests serve as a reminder that there may be rammifications from breaking these tests, which may impact production deployments. diff --git a/config/data/metrics/prometheus.yml b/config/data/metrics/prometheus.yml index fe663d4013..bf4e53d2ab 100644 --- a/config/data/metrics/prometheus.yml +++ b/config/data/metrics/prometheus.yml @@ -19,7 +19,7 @@ rule_files: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=` to any timeseries scraped from this config. - - job_name: 'libra-node' + - job_name: 'diem-node' honor_labels: true # metrics_path defaults to '/metrics' diff --git a/config/generate-key/Cargo.toml b/config/generate-key/Cargo.toml index 8c3396cfbc..8ec110a1cb 100644 --- a/config/generate-key/Cargo.toml +++ b/config/generate-key/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "generate-key" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra generate key" +authors = ["Diem Association "] +description = "Diem generate key" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -13,6 +13,6 @@ edition = "2018" rand = "0.7.3" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto/", version = "0.1.0"} -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto/", version = "0.1.0"} +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/config/generate-key/src/lib.rs b/config/generate-key/src/lib.rs index 9fbcbc4fe3..86dd7c2a87 100644 --- a/config/generate-key/src/lib.rs +++ b/config/generate-key/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; use rand::{rngs::OsRng, Rng, SeedableRng}; use std::{ fs::{self, File}, @@ -45,7 +45,7 @@ pub fn load_key>(input_file: P) -> Ed25519PrivateKey { #[cfg(test)] mod test { use super::*; - use libra_temppath::TempPath; + use diem_temppath::TempPath; #[test] fn verify_test_create_and_load_key() { diff --git a/config/generate-key/src/main.rs b/config/generate-key/src/main.rs index fe960d6f9f..e8c967f8f2 100644 --- a/config/generate-key/src/main.rs +++ b/config/generate-key/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/config/global-constants/Cargo.toml b/config/global-constants/Cargo.toml index 0653f81410..06abf39a81 100644 --- a/config/global-constants/Cargo.toml +++ b/config/global-constants/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-global-constants" +name = "diem-global-constants" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra's global constant crate: the source of truth for constant definitions that span multiple crates" +authors = ["Diem Association "] +description = "Diem's global constant crate: the source of truth for constant definitions that span multiple crates" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" diff --git a/config/global-constants/src/lib.rs b/config/global-constants/src/lib.rs index 236cf2006c..4728b0c18e 100644 --- a/config/global-constants/src/lib.rs +++ b/config/global-constants/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The purpose of this crate is to offer a single source of truth for the definitions of shared -//! constants within the Libra codebase. This is useful because many different components within -//! Libra often require access to global constant definitions (e.g., Libra Safety Rules, +//! constants within the Diem codebase. This is useful because many different components within +//! Diem often require access to global constant definitions (e.g., Diem Safety Rules, //! the Key Manager, and Secure Storage). To avoid duplicating these definitions across crates //! (and better allow these constants to be updated in a single location), we define them here. #![forbid(unsafe_code)] @@ -12,7 +12,7 @@ pub const CONSENSUS_KEY: &str = "consensus"; pub const EXECUTION_KEY: &str = "execution"; pub const FULLNODE_NETWORK_KEY: &str = "fullnode_network"; -pub const LIBRA_ROOT_KEY: &str = "libra_root"; +pub const DIEM_ROOT_KEY: &str = "diem_root"; pub const TREASURY_COMPLIANCE_KEY: &str = "treasury_compliance"; pub const OPERATOR_ACCOUNT: &str = "operator_account"; pub const OPERATOR_KEY: &str = "operator"; diff --git a/config/management/Cargo.toml b/config/management/Cargo.toml index 6e32ce6ce7..7b50951840 100644 --- a/config/management/Cargo.toml +++ b/config/management/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-management" +name = "diem-management" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Management is a tool used to manage the configuration of a Libra Node" +authors = ["Diem Association "] +description = "Diem Management is a tool used to manage the configuration of a Diem Node" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,21 +19,21 @@ thiserror = "1.0.22" toml = { version = "0.5.7", default-features = false } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "..", version = "0.1.0"} -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0"} -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-network-address-encryption = {path = "network-address-encryption", version = "0.1.0"} -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0" } -libra-secure-time = { path = "../../secure/time", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-config = { path = "..", version = "0.1.0"} +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0"} +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-network-address-encryption = {path = "network-address-encryption", version = "0.1.0"} +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0" } +diem-secure-time = { path = "../../secure/time", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } [dev-dependencies] -libra-config = { path = "..", version = "0.1.0", features = ["fuzzing"] } +diem-config = { path = "..", version = "0.1.0", features = ["fuzzing"] } [features] testing = [] -fuzzing = ["libra-config/fuzzing"] +fuzzing = ["diem-config/fuzzing"] diff --git a/config/management/README.md b/config/management/README.md index 8ce0d94f64..ed276ea65b 100644 --- a/config/management/README.md +++ b/config/management/README.md @@ -1,14 +1,14 @@ -# Libra Management tools +# Diem Management tools -The `libra-management` crate provides a framework for building CLI tools for various +The `diem-management` crate provides a framework for building CLI tools for various purposes. The purpose of breaking these into multiple tools is to simplify the user experience, and prevent confusion between the different use cases. ### The Tools ``` -libra-management -|-> libra-genesis-tool = A tool for performing the genesis ceremony for the Libra blockchain. -|-> libra-operational-tool = A tool for performing management operations on the Libra blockchain. +diem-management +|-> diem-genesis-tool = A tool for performing the genesis ceremony for the Diem blockchain. +|-> diem-operational-tool = A tool for performing management operations on the Diem blockchain. ``` There are README's for each tool individually. diff --git a/config/management/genesis/Cargo.toml b/config/management/genesis/Cargo.toml index f2f28d9006..f3511557ab 100644 --- a/config/management/genesis/Cargo.toml +++ b/config/management/genesis/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-genesis-tool" +name = "diem-genesis-tool" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "A tool to manage genesis" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -21,26 +21,26 @@ consensus-types = { path = "../../../consensus/consensus-types", version = "0.1. executor = { path = "../../../execution/executor", version = "0.1.0" } generate-key = { path = "../../../config/generate-key", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../..", version = "0.1.0"} -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../../config/global-constants", version = "0.1.0" } -libra-management = { path = "..", version = "0.1.0" } -libra-network-address = { path = "../../../network/network-address", version = "0.1.0" } -libra-network-address-encryption = {path = "../network-address-encryption", version = "0.1.0"} -libra-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } -libra-secure-time = { path = "../../../secure/time", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } -libra-vm = { path = "../../../language/libra-vm", version = "0.1.0" } -libradb = { path = "../../../storage/libradb", version = "0.1.0" } +diem-config = { path = "../..", version = "0.1.0"} +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../../config/global-constants", version = "0.1.0" } +diem-management = { path = "..", version = "0.1.0" } +diem-network-address = { path = "../../../network/network-address", version = "0.1.0" } +diem-network-address-encryption = {path = "../network-address-encryption", version = "0.1.0"} +diem-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } +diem-secure-time = { path = "../../../secure/time", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diem-vm = { path = "../../../language/diem-vm", version = "0.1.0" } +diemdb = { path = "../../../storage/diemdb", version = "0.1.0" } storage-interface = { path = "../../../storage/storage-interface", version = "0.1.0" } transaction-builder = { path = "../../../language/transaction-builder", version = "0.1.0" } vm-genesis = { path = "../../../language/tools/vm-genesis", version = "0.1.0" } [dev-dependencies] -libra-config = { path = "../..", version = "0.1.0", features = ["fuzzing"]} +diem-config = { path = "../..", version = "0.1.0", features = ["fuzzing"]} [features] testing = [] -fuzzing = ["libra-config/fuzzing"] +fuzzing = ["diem-config/fuzzing"] diff --git a/config/management/genesis/README.md b/config/management/genesis/README.md index d9cfebcae7..085b3301db 100644 --- a/config/management/genesis/README.md +++ b/config/management/genesis/README.md @@ -1,8 +1,8 @@ -# Libra Config Manager +# Diem Config Manager -The `libra-genesis-tool` provides a tool for the genesis ceremony of the Libra blockchain. The functionality of the tool is dictated by the organization of nodes within the system: +The `diem-genesis-tool` provides a tool for the genesis ceremony of the Diem blockchain. The functionality of the tool is dictated by the organization of nodes within the system: -* A libra root account that maintains the set of validator owners, validator operators, and the active validator set. +* A diem root account that maintains the set of validator owners, validator operators, and the active validator set. * A treasury compliance account that maintains VASPs, DDs, and other related topics. * Validator owners (OW) that have accounts on the blockchain. These accounts contain a validator configuration and specify a validator operator. * Validator operators (OP) that have accounts on the blockchain. These accounts have the ability to manipulate validator configuration. @@ -13,7 +13,7 @@ The process for starting organization of the planned and current functionality i * Initialization ceremony * The association sets up a secure-backend for data uploads, `shared storage`, e.g., GitHub. The association then distributes credentials for each OW and OP. - * The association generates its `libra root key` and shares the public key to the `shared storage`. + * The association generates its `diem root key` and shares the public key to the `shared storage`. * Each OW will generate a private `owner key` and share the public key to the `shared storage`. * Each OP will generate a private `operator key` and share the public key to the `shared storage`. * Validator initialization @@ -24,23 +24,23 @@ The process for starting organization of the planned and current functionality i * The association will download the accumulated data to produce both a genesis.blob and genesis waypoint. * Starting * The association publishes the data associated with genesis, the genesis.blob, and the genesis waypoint. - * Each OP downloads the genesis waypoint provided by the association and inserts it into their Libra instance(s). + * Each OP downloads the genesis waypoint provided by the association and inserts it into their Diem instance(s). * Each OP verifies that the genesis.blob, waypoint, and local configuration are correct and broadcast their results to other OPs and the association. * Upon a quorum of validators having correct status, the association instructs the OPs to begin their validators. * Upon a quorum of validators coming online, the blockchain will begin processing transactions. Notes: -* This describes a process for instantiating organization that has yet to be specified but extends from the current state of the Libra Testnet. +* This describes a process for instantiating organization that has yet to be specified but extends from the current state of the Diem Testnet. * The implementation as described has yet to be fully implemented in Move, hence, this tool maps to the current state. * A new OP / OW onboarding to an existing blockchain follow the same process and delegate the initial creation of accounts and setting of configuration to the association. ## Requirements -Each individual instance, OW or OP, should have access to a secure storage solution. Those leveraging Libra Secure Storage can directly use this tool, those that do not will need to provide their own tooling. +Each individual instance, OW or OP, should have access to a secure storage solution. Those leveraging Diem Secure Storage can directly use this tool, those that do not will need to provide their own tooling. ## The Tools -`libra-genesis-tool` offers several facilities: +`diem-genesis-tool` offers several facilities: * Simplified configuration management via a config file that can store frequently reused paramters including validator and shared storage. * Retrieving and submitting OW, OP, and validator configuration -- this is from a local secure storage to a remote secure storage -- leveraging the identity tool. @@ -54,13 +54,13 @@ In addition, the association will provide an entry point into a `shared storage` Each participant must retrieve an appropriate GitHub [token](https://github.com/settings/tokens) for their account that allows access to the `repo` scope. This token must be stored locally on their disk in a file accessible to the management tool. -Finally, each participant should initialize their respective key: `libra_root`, `treasury_compliance`, `owner`, or `operator` in a secure storage solution. How this is done is outside the scope of this document. +Finally, each participant should initialize their respective key: `diem_root`, `treasury_compliance`, `owner`, or `operator` in a secure storage solution. How this is done is outside the scope of this document. The remainder of this section specifies distinct behaviors for each role. ### Build a Configuration File -While `libra-genesis-tool` supports setting the backends on each command, doing so is cumbersome and fraught with error. Instead, all participants, should first construct a configuration file for use in genesis and later use via the operational tool. Below is an example configuration file in yaml format: +While `diem-genesis-tool` supports setting the backends on each command, doing so is cumbersome and fraught with error. Instead, all participants, should first construct a configuration file for use in genesis and later use via the operational tool. Below is an example configuration file in yaml format: ``` # config.yaml @@ -85,7 +85,7 @@ validator_backend: Overview of fields: * `chain_id` specifies a distinct chain and is written into genesis, checked during network connections, and part of each transaction. It is provided by the association. -* `json_server` specifies a Libra JSON Server. This can be any that connect to your network including your own of one run by the association. It is not used in genesis, so a dummy value is acceptable during initial configuration. +* `json_server` specifies a Diem JSON Server. This can be any that connect to your network including your own of one run by the association. It is not used in genesis, so a dummy value is acceptable during initial configuration. * `shared_backend` is a pointer to the associaton's `shared storage`. * `validator_backend` is a pointer to the local validator node's secure storage. @@ -93,26 +93,26 @@ Overview of fields: * The association will publish a layout containing the distinct names and roles of the participants to `shared storage`: ``` -cargo run -p libra-genesis-tool -- \ +cargo run -p diem-genesis-tool -- \ set-layout \ --config config_file.yaml \ --path $PATH_TO_LAYOUT ``` -* The association will publish the the `libra root` public key to the `shared storage`: +* The association will publish the the `diem root` public key to the `shared storage`: ``` -cargo run -p libra-genesis-tool -- \ - libra-root-key \ +cargo run -p diem-genesis-tool -- \ + diem-root-key \ --config config_file.yaml ``` -* The association will publish the the `libra root` public key to the `shared storage`: +* The association will publish the the `diem root` public key to the `shared storage`: ``` -cargo run -p libra-genesis-tool -- \ - libra-treasury-compliance-key \ +cargo run -p diem-genesis-tool -- \ + diem-treasury-compliance-key \ --config config_file.yaml ``` * Upon both OW and OP completing their portion of this process, the association will build a genesis waypoint: ``` -cargo run -p libra-genesis-tool -- \ +cargo run -p diem-genesis-tool -- \ create-waypoint \ --config config_file.yaml ``` @@ -121,7 +121,7 @@ The layout is a toml configuration file of the following format: ``` [operator] = ["alice", "bob"] [owner] = ["carol", "dave"] -libra_root = "erin" +diem_root = "erin" treasury_compliance = "fred" ``` where each field maps to a role as described in this document. @@ -130,13 +130,13 @@ where each field maps to a role as described in this document. * Each Validator Owner member will upload their key to GitHub: ``` -cargo run -p libra-genesis-tool -- \ +cargo run -p diem-genesis-tool -- \ owner-key \ --config config_file.yaml ``` * Each OW will select the OP responsible for operating the validator node. This selection is done by specifying the name of the OP (as registered in the shared Github): ``` -cargo run -p libra-genesis-tool -- +cargo run -p diem-genesis-tool -- set-operator \ --config config_file.yaml \ --operator-name $OPERATOR_NAME @@ -146,13 +146,13 @@ cargo run -p libra-genesis-tool -- * Each Validator Operator member will upload their key to GitHub: ``` -cargo run -p libra-genesis-tool -- +cargo run -p diem-genesis-tool -- operator-key \ --config config_file.yaml ``` * For each validator managed by an operator, the operator will upload a signed validator-config. The owner corresponds to the name of the OW (as registered in the shared Github). The namespace in GitHub correlates to the operator namespace: ``` -cargo run -p libra-genesis-tool -- +cargo run -p diem-genesis-tool -- validator-config \ --config config_file.yaml \ --owner-name $OWNER_NAME \ @@ -161,14 +161,14 @@ cargo run -p libra-genesis-tool -- ``` * Upon receiving signal from the association, OPs can now build genesis: ``` -cargo run -p libra-genesis-tool -- \ +cargo run -p diem-genesis-tool -- \ genesis \ --config config_file.yaml \ --path $PATH_TO_GENESIS \ ``` * Similarly, the association should publish a genesis waypoint, and the OP should insert it into their storage (using the management tool): ``` -cargo run -p libra-genesist-tool -- \ +cargo run -p diem-genesist-tool -- \ insert-waypoint \ --config config_file.yaml \ --waypoint $WAYPOINT @@ -176,7 +176,7 @@ cargo run -p libra-genesist-tool -- \ * Perform a verify that ensures the local store maps to Genesis and Genesis maps to the waypoint: ``` -cargo run -p libra-genesis-tool -- \ +cargo run -p diem-genesis-tool -- \ verify \ --config config_file.yaml \ --genesis_path $PATH_TO_GENESIS diff --git a/config/management/genesis/src/command.rs b/config/management/genesis/src/command.rs index c8afbc9a16..9504bde4d7 100644 --- a/config/management/genesis/src/command.rs +++ b/config/management/genesis/src/command.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_management::{error::Error, execute_command}; -use libra_types::{transaction::Transaction, waypoint::Waypoint}; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_management::{error::Error, execute_command}; +use diem_types::{transaction::Transaction, waypoint::Waypoint}; use structopt::StructOpt; #[derive(Debug, StructOpt)] @@ -13,9 +13,9 @@ pub enum Command { #[structopt(about = "Retrieves data from a store to produce genesis")] Genesis(crate::genesis::Genesis), #[structopt(about = "Set the waypoint in the validator storage")] - InsertWaypoint(libra_management::waypoint::InsertWaypoint), - #[structopt(about = "Submits an Ed25519PublicKey for the libra root")] - LibraRootKey(crate::key::LibraRootKey), + InsertWaypoint(diem_management::waypoint::InsertWaypoint), + #[structopt(about = "Submits an Ed25519PublicKey for the diem root")] + DiemRootKey(crate::key::DiemRootKey), #[structopt(about = "Submits an Ed25519PublicKey for the operator")] OperatorKey(crate::key::OperatorKey), #[structopt(about = "Submits an Ed25519PublicKey for the owner")] @@ -37,7 +37,7 @@ pub enum CommandName { CreateWaypoint, Genesis, InsertWaypoint, - LibraRootKey, + DiemRootKey, OperatorKey, OwnerKey, SetLayout, @@ -53,7 +53,7 @@ impl From<&Command> for CommandName { Command::CreateWaypoint(_) => CommandName::CreateWaypoint, Command::Genesis(_) => CommandName::Genesis, Command::InsertWaypoint(_) => CommandName::InsertWaypoint, - Command::LibraRootKey(_) => CommandName::LibraRootKey, + Command::DiemRootKey(_) => CommandName::DiemRootKey, Command::OperatorKey(_) => CommandName::OperatorKey, Command::OwnerKey(_) => CommandName::OwnerKey, Command::SetLayout(_) => CommandName::SetLayout, @@ -71,7 +71,7 @@ impl std::fmt::Display for CommandName { CommandName::CreateWaypoint => "create-waypoint", CommandName::Genesis => "genesis", CommandName::InsertWaypoint => "insert-waypoint", - CommandName::LibraRootKey => "libra-root-key", + CommandName::DiemRootKey => "diem-root-key", CommandName::OperatorKey => "operator-key", CommandName::OwnerKey => "owner-key", CommandName::SetLayout => "set-layout", @@ -92,7 +92,7 @@ impl Command { } Command::Genesis(_) => self.genesis().map(|_| "Success!".to_string()), Command::InsertWaypoint(_) => self.insert_waypoint().map(|_| "Success!".to_string()), - Command::LibraRootKey(_) => self.libra_root_key().map(|_| "Success!".to_string()), + Command::DiemRootKey(_) => self.diem_root_key().map(|_| "Success!".to_string()), Command::OperatorKey(_) => self.operator_key().map(|_| "Success!".to_string()), Command::OwnerKey(_) => self.owner_key().map(|_| "Success!".to_string()), Command::SetLayout(_) => self.set_layout().map(|_| "Success!".to_string()), @@ -117,8 +117,8 @@ impl Command { execute_command!(self, Command::InsertWaypoint, CommandName::InsertWaypoint) } - pub fn libra_root_key(self) -> Result { - execute_command!(self, Command::LibraRootKey, CommandName::LibraRootKey) + pub fn diem_root_key(self) -> Result { + execute_command!(self, Command::DiemRootKey, CommandName::DiemRootKey) } pub fn operator_key(self) -> Result { @@ -163,11 +163,11 @@ impl Command { pub mod tests { use super::*; use crate::storage_helper::StorageHelper; - use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; - use libra_global_constants::{OPERATOR_KEY, OWNER_KEY}; - use libra_management::constants; - use libra_secure_storage::KVStorage; - use libra_types::{ + use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; + use diem_global_constants::{OPERATOR_KEY, OWNER_KEY}; + use diem_management::constants; + use diem_secure_storage::KVStorage; + use diem_types::{ account_address, chain_id::ChainId, transaction::{TransactionArgument, TransactionPayload}, @@ -184,7 +184,7 @@ pub mod tests { // Each identity works in their own namespace // Alice, Bob, and Carol are owners. // Operator_Alice, Operator_Bob and Operator_Carol are operators. - // Dave is the libra root. + // Dave is the diem root. // Each user will upload their contents to *_ns + "shared" // Common is used by the technical staff for coordination. let alice_ns = "alice"; @@ -202,11 +202,11 @@ pub mod tests { let layout_text = "\ operators = [\"operator_alice_shared\", \"operator_bob_shared\", \"operator_carol_shared\"]\n\ owners = [\"alice_shared\", \"bob_shared\", \"carol_shared\"]\n\ - libra_root = \"dave_shared\"\n\ + diem_root = \"dave_shared\"\n\ treasury_compliance = \"dave_shared\"\n\ "; - let temppath = libra_temppath::TempPath::new(); + let temppath = diem_temppath::TempPath::new(); temppath.create_as_file().unwrap(); let mut file = File::create(temppath.path()).unwrap(); file.write_all(&layout_text.to_string().into_bytes()) @@ -220,7 +220,7 @@ pub mod tests { // Step 2) Upload the root keys: helper.initialize_by_idx(dave_ns.into(), storage_idx); helper - .libra_root_key(dave_ns, &(dave_ns.to_string() + shared)) + .diem_root_key(dave_ns, &(dave_ns.to_string() + shared)) .unwrap(); helper .treasury_compliance_key(dave_ns, &(dave_ns.to_string() + shared)) @@ -276,7 +276,7 @@ pub mod tests { } // Step 7) Produce genesis - let genesis_path = libra_temppath::TempPath::new(); + let genesis_path = diem_temppath::TempPath::new(); genesis_path.create_as_file().unwrap(); helper .genesis(ChainId::test(), genesis_path.path()) @@ -299,7 +299,7 @@ pub mod tests { fn test_set_layout() { let helper = StorageHelper::new(); - let temppath = libra_temppath::TempPath::new(); + let temppath = diem_temppath::TempPath::new(); helper .set_layout(temppath.path().to_str().unwrap()) .unwrap_err(); @@ -309,7 +309,7 @@ pub mod tests { let layout_text = "\ operators = [\"alice\", \"bob\"]\n\ owners = [\"carol\"]\n\ - libra_root = \"dave\"\n\ + diem_root = \"dave\"\n\ treasury_compliance = \"other_dave\"\n\ "; file.write_all(&layout_text.to_string().into_bytes()) @@ -340,7 +340,7 @@ pub mod tests { let owner_name = "owner"; let owner_key = Ed25519PrivateKey::generate_for_testing().public_key(); let owner_account = - libra_config::utils::validator_owner_account_from_name(owner_name.as_bytes()); + diem_config::utils::validator_owner_account_from_name(owner_name.as_bytes()); let mut shared_storage = storage_helper.storage(owner_name.into()); shared_storage .set(OWNER_KEY, owner_key) diff --git a/config/management/genesis/src/config_builder.rs b/config/management/genesis/src/config_builder.rs index 6b41bd5842..ea68c36207 100644 --- a/config/management/genesis/src/config_builder.rs +++ b/config/management/genesis/src/config_builder.rs @@ -1,23 +1,23 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{layout::Layout, storage_helper::StorageHelper, swarm_config::BuildSwarm}; -use libra_config::{ +use diem_config::{ config::{ DiscoveryMethod, Identity, NodeConfig, OnDiskStorageConfig, SafetyRulesService, SecureBackend, SeedAddresses, WaypointConfig, HANDSHAKE_VERSION, }, network_id::NetworkId, }; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_management::constants::{COMMON_NS, LAYOUT}; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage}; -use libra_temppath::TempPath; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_management::constants::{COMMON_NS, LAYOUT}; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage}; +use diem_temppath::TempPath; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use std::path::{Path, PathBuf}; -const LIBRA_ROOT_NS: &str = "libra_root"; -const LIBRA_ROOT_SHARED_NS: &str = "libra_root_shared"; +const DIEM_ROOT_NS: &str = "diem_root"; +const DIEM_ROOT_SHARED_NS: &str = "diem_root_shared"; const OPERATOR_NS: &str = "_operator"; const OPERATOR_SHARED_NS: &str = "_operator_shared"; const OWNER_NS: &str = "_owner"; @@ -64,8 +64,8 @@ impl> ValidatorBuilder { /// Association uploads the validator layout to shared storage. fn create_layout(&self) { let mut layout = Layout::default(); - layout.libra_root = LIBRA_ROOT_SHARED_NS.into(); - layout.treasury_compliance = LIBRA_ROOT_SHARED_NS.into(); + layout.diem_root = DIEM_ROOT_SHARED_NS.into(); + layout.treasury_compliance = DIEM_ROOT_SHARED_NS.into(); layout.owners = (0..self.num_validators) .map(|i| (i.to_string() + OWNER_SHARED_NS)) .collect(); @@ -78,15 +78,15 @@ impl> ValidatorBuilder { common_storage.set(LAYOUT, layout_value).unwrap(); } - /// Root initializes libra root and treasury root keys. + /// Root initializes diem root and treasury root keys. fn create_root(&self) { self.storage_helper - .initialize_by_idx(LIBRA_ROOT_NS.into(), 0); + .initialize_by_idx(DIEM_ROOT_NS.into(), 0); self.storage_helper - .libra_root_key(LIBRA_ROOT_NS, LIBRA_ROOT_SHARED_NS) + .diem_root_key(DIEM_ROOT_NS, DIEM_ROOT_SHARED_NS) .unwrap(); self.storage_helper - .treasury_compliance_key(LIBRA_ROOT_NS, LIBRA_ROOT_SHARED_NS) + .treasury_compliance_key(DIEM_ROOT_NS, DIEM_ROOT_SHARED_NS) .unwrap(); } @@ -207,10 +207,10 @@ impl> BuildSwarm for ValidatorBuilder { fn build_swarm(&self) -> anyhow::Result<(Vec, Ed25519PrivateKey)> { self.create_layout(); self.create_root(); - let libra_root_key = self + let diem_root_key = self .storage_helper - .storage(LIBRA_ROOT_NS.into()) - .export_private_key(libra_global_constants::LIBRA_ROOT_KEY) + .storage(DIEM_ROOT_NS.into()) + .export_private_key(diem_global_constants::DIEM_ROOT_KEY) .unwrap(); // Upload both owner and operator keys to shared storage @@ -236,7 +236,7 @@ impl> BuildSwarm for ValidatorBuilder { self.finish_validator_config(i, config, waypoint); } - Ok((configs, libra_root_key)) + Ok((configs, diem_root_key)) } } @@ -248,7 +248,7 @@ pub enum FullnodeType { pub struct FullnodeBuilder { validator_config_path: Vec, - libra_root_key_path: PathBuf, + diem_root_key_path: PathBuf, template: NodeConfig, build_type: FullnodeType, } @@ -256,13 +256,13 @@ pub struct FullnodeBuilder { impl FullnodeBuilder { pub fn new( validator_config_path: Vec, - libra_root_key_path: PathBuf, + diem_root_key_path: PathBuf, template: NodeConfig, build_type: FullnodeType, ) -> Self { Self { validator_config_path, - libra_root_key_path, + diem_root_key_path, template, build_type, } @@ -350,8 +350,8 @@ impl BuildSwarm for FullnodeBuilder { FullnodeType::ValidatorFullnode => self.build_vfn(), FullnodeType::PublicFullnode(num_nodes) => self.build_public_fn(num_nodes), }?; - let libra_root_key_path = generate_key::load_key(&self.libra_root_key_path); - Ok((configs, libra_root_key_path)) + let diem_root_key_path = generate_key::load_key(&self.diem_root_key_path); + Ok((configs, diem_root_key_path)) } } @@ -370,37 +370,37 @@ pub fn test_config() -> (NodeConfig, Ed25519PrivateKey) { .identity_from_storage() .backend; let storage: Storage = std::convert::TryFrom::try_from(backend).unwrap(); - let mut test = libra_config::config::TestConfig::new_with_temp_dir(Some(path)); + let mut test = diem_config::config::TestConfig::new_with_temp_dir(Some(path)); test.execution_key( storage - .export_private_key(libra_global_constants::EXECUTION_KEY) + .export_private_key(diem_global_constants::EXECUTION_KEY) .unwrap(), ); test.operator_key( storage - .export_private_key(libra_global_constants::OPERATOR_KEY) + .export_private_key(diem_global_constants::OPERATOR_KEY) .unwrap(), ); test.owner_key( storage - .export_private_key(libra_global_constants::OWNER_KEY) + .export_private_key(diem_global_constants::OWNER_KEY) .unwrap(), ); config.test = Some(test); let owner_account = storage - .get(libra_global_constants::OWNER_ACCOUNT) + .get(diem_global_constants::OWNER_ACCOUNT) .unwrap() .value; - let mut sr_test = libra_config::config::SafetyRulesTestConfig::new(owner_account); + let mut sr_test = diem_config::config::SafetyRulesTestConfig::new(owner_account); sr_test.consensus_key( storage - .export_private_key(libra_global_constants::CONSENSUS_KEY) + .export_private_key(diem_global_constants::CONSENSUS_KEY) .unwrap(), ); sr_test.execution_key( storage - .export_private_key(libra_global_constants::EXECUTION_KEY) + .export_private_key(diem_global_constants::EXECUTION_KEY) .unwrap(), ); config.consensus.safety_rules.test = Some(sr_test); diff --git a/config/management/genesis/src/genesis.rs b/config/management/genesis/src/genesis.rs index f3cf187c1a..bca589b2bd 100644 --- a/config/management/genesis/src/genesis.rs +++ b/config/management/genesis/src/genesis.rs @@ -1,13 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::layout::Layout; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_global_constants::{LIBRA_ROOT_KEY, OPERATOR_KEY, OWNER_KEY}; -use libra_management::{ - config::ConfigPath, constants, error::Error, secure_backend::SharedBackend, -}; -use libra_types::{ +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_global_constants::{DIEM_ROOT_KEY, OPERATOR_KEY, OWNER_KEY}; +use diem_management::{config::ConfigPath, constants, error::Error, secure_backend::SharedBackend}; +use diem_types::{ account_address, chain_id::ChainId, transaction::{Transaction, TransactionPayload}, @@ -31,7 +29,7 @@ pub struct Genesis { } impl Genesis { - fn config(&self) -> Result { + fn config(&self) -> Result { self.config .load()? .override_chain_id(self.chain_id) @@ -40,20 +38,20 @@ impl Genesis { pub fn execute(self) -> Result { let layout = self.layout()?; - let libra_root_key = self.libra_root_key(&layout)?; + let diem_root_key = self.diem_root_key(&layout)?; let treasury_compliance_key = self.treasury_compliance_key(&layout)?; let operator_assignments = self.operator_assignments(&layout)?; let operator_registrations = self.operator_registrations(&layout)?; let chain_id = self.config()?.chain_id; let script_policy = if chain_id == ChainId::test() { - Some(libra_types::on_chain_config::VMPublishingOption::open()) + Some(diem_types::on_chain_config::VMPublishingOption::open()) } else { None // allowlist containing only stdlib scripts }; let genesis = vm_genesis::encode_genesis_transaction( - libra_root_key, + diem_root_key, treasury_compliance_key, &operator_assignments, &operator_registrations, @@ -76,12 +74,12 @@ impl Genesis { Ok(genesis) } - /// Retrieves the libra root key from the remote storage. Note, at this point in time, genesis - /// only supports a single libra root key. - pub fn libra_root_key(&self, layout: &Layout) -> Result { + /// Retrieves the diem root key from the remote storage. Note, at this point in time, genesis + /// only supports a single diem root key. + pub fn diem_root_key(&self, layout: &Layout) -> Result { let config = self.config()?; - let storage = config.shared_backend_with_namespace(layout.libra_root.clone()); - storage.ed25519_key(LIBRA_ROOT_KEY) + let storage = config.shared_backend_with_namespace(layout.diem_root.clone()); + storage.ed25519_key(DIEM_ROOT_KEY) } /// Retrieves a layout from the remote storage. @@ -152,7 +150,7 @@ impl Genesis { /// Retrieves the treasury root key from the remote storage. pub fn treasury_compliance_key(&self, layout: &Layout) -> Result { let config = self.config()?; - let storage = config.shared_backend_with_namespace(layout.libra_root.clone()); - storage.ed25519_key(libra_global_constants::TREASURY_COMPLIANCE_KEY) + let storage = config.shared_backend_with_namespace(layout.diem_root.clone()); + storage.ed25519_key(diem_global_constants::TREASURY_COMPLIANCE_KEY) } } diff --git a/config/management/genesis/src/key.rs b/config/management/genesis/src/key.rs index 2becfdb38c..dd210d73ae 100644 --- a/config/management/genesis/src/key.rs +++ b/config/management/genesis/src/key.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_management::{ +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_management::{ config::ConfigPath, error::Error, secure_backend::{SecureBackend, SharedBackend}, @@ -10,7 +10,7 @@ use libra_management::{ use std::path::PathBuf; use structopt::StructOpt; -libra_management::secure_backend!( +diem_management::secure_backend!( ValidatorBackend, validator_backend, "validator configuration", @@ -42,14 +42,14 @@ impl Key { .override_validator_backend(&self.validator_backend.validator_backend)?; let key = if let Some(path_to_key) = &self.path_to_key { - libra_management::read_key_from_file(path_to_key) + diem_management::read_key_from_file(path_to_key) .map_err(|e| Error::UnableToReadFile(format!("{:?}", path_to_key), e))? } else { let mut validator_storage = config.validator_backend(); let key = validator_storage.ed25519_public_from_private(key_name)?; if let Some(account_name) = account_name { - let peer_id = libra_types::account_address::from_public_key(&key); + let peer_id = diem_types::account_address::from_public_key(&key); validator_storage.set(account_name, peer_id)?; } key @@ -63,15 +63,15 @@ impl Key { } #[derive(Debug, StructOpt)] -pub struct LibraRootKey { +pub struct DiemRootKey { #[structopt(flatten)] key: Key, } -impl LibraRootKey { +impl DiemRootKey { pub fn execute(self) -> Result { self.key - .submit_key(libra_global_constants::LIBRA_ROOT_KEY, None) + .submit_key(diem_global_constants::DIEM_ROOT_KEY, None) } } @@ -84,8 +84,8 @@ pub struct OperatorKey { impl OperatorKey { pub fn execute(self) -> Result { self.key.submit_key( - libra_global_constants::OPERATOR_KEY, - Some(libra_global_constants::OPERATOR_ACCOUNT), + diem_global_constants::OPERATOR_KEY, + Some(diem_global_constants::OPERATOR_ACCOUNT), ) } } @@ -98,7 +98,7 @@ pub struct OwnerKey { impl OwnerKey { pub fn execute(self) -> Result { - self.key.submit_key(libra_global_constants::OWNER_KEY, None) + self.key.submit_key(diem_global_constants::OWNER_KEY, None) } } @@ -111,7 +111,7 @@ pub struct TreasuryComplianceKey { impl TreasuryComplianceKey { pub fn execute(self) -> Result { self.key - .submit_key(libra_global_constants::TREASURY_COMPLIANCE_KEY, None) + .submit_key(diem_global_constants::TREASURY_COMPLIANCE_KEY, None) } } @@ -119,17 +119,17 @@ impl TreasuryComplianceKey { mod tests { use super::*; use crate::storage_helper::StorageHelper; - use libra_secure_storage::{CryptoStorage, KVStorage}; + use diem_secure_storage::{CryptoStorage, KVStorage}; #[test] fn test_owner_key() { - test_key(libra_global_constants::OWNER_KEY, StorageHelper::owner_key); + test_key(diem_global_constants::OWNER_KEY, StorageHelper::owner_key); } #[test] fn test_operator_key() { test_key( - libra_global_constants::OPERATOR_KEY, + diem_global_constants::OPERATOR_KEY, StorageHelper::operator_key, ); } diff --git a/config/management/genesis/src/layout.rs b/config/management/genesis/src/layout.rs index 1d9b7ccf00..5f520c6d60 100644 --- a/config/management/genesis/src/layout.rs +++ b/config/management/genesis/src/layout.rs @@ -1,9 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_management::{ - config::ConfigPath, constants, error::Error, secure_backend::SharedBackend, -}; +use diem_management::{config::ConfigPath, constants, error::Error, secure_backend::SharedBackend}; use serde::{Deserialize, Serialize}; use std::{ fs::File, @@ -19,7 +17,7 @@ use structopt::StructOpt; pub struct Layout { pub operators: Vec, pub owners: Vec, - pub libra_root: String, + pub diem_root: String, pub treasury_compliance: String, } @@ -82,7 +80,7 @@ mod tests { let contents = "\ operators = [\"alice\", \"bob\"]\n\ owners = [\"carol\"]\n\ - libra_root = \"dave\"\n\ + diem_root = \"dave\"\n\ treasury_compliance = \"other_dave\"\n\ "; @@ -92,7 +90,7 @@ mod tests { vec!["alice".to_string(), "bob".to_string()] ); assert_eq!(layout.owners, vec!["carol".to_string()]); - assert_eq!(layout.libra_root, "dave"); + assert_eq!(layout.diem_root, "dave"); assert_eq!(layout.treasury_compliance, "other_dave"); } } diff --git a/config/management/genesis/src/lib.rs b/config/management/genesis/src/lib.rs index 98c893d40e..eafeb7a07a 100644 --- a/config/management/genesis/src/lib.rs +++ b/config/management/genesis/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/config/management/genesis/src/main.rs b/config/management/genesis/src/main.rs index 20f773f5a7..aaa983e11f 100644 --- a/config/management/genesis/src/main.rs +++ b/config/management/genesis/src/main.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_genesis_tool::command::Command; +use diem_genesis_tool::command::Command; use structopt::StructOpt; fn main() { diff --git a/config/management/genesis/src/storage_helper.rs b/config/management/genesis/src/storage_helper.rs index 9f0f7d74f2..2c3897d6be 100644 --- a/config/management/genesis/src/storage_helper.rs +++ b/config/management/genesis/src/storage_helper.rs @@ -1,32 +1,32 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // FIXME: (gnazario) storage helper doesn't belong in the genesis tool, but it's attached to it right now use crate::command::Command; use consensus_types::safety_data::SafetyData; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, Uniform, }; -use libra_global_constants::{ - CONSENSUS_KEY, EXECUTION_KEY, FULLNODE_NETWORK_KEY, LIBRA_ROOT_KEY, OPERATOR_KEY, OWNER_KEY, +use diem_global_constants::{ + CONSENSUS_KEY, DIEM_ROOT_KEY, EXECUTION_KEY, FULLNODE_NETWORK_KEY, OPERATOR_KEY, OWNER_KEY, SAFETY_DATA, TREASURY_COMPLIANCE_KEY, VALIDATOR_NETWORK_KEY, WAYPOINT, }; -use libra_management::{error::Error, secure_backend::DISK}; -use libra_network_address::NetworkAddress; -use libra_secure_storage::{CryptoStorage, KVStorage, NamespacedStorage, OnDiskStorage, Storage}; -use libra_types::{chain_id::ChainId, transaction::Transaction, waypoint::Waypoint}; +use diem_management::{error::Error, secure_backend::DISK}; +use diem_network_address::NetworkAddress; +use diem_secure_storage::{CryptoStorage, KVStorage, NamespacedStorage, OnDiskStorage, Storage}; +use diem_types::{chain_id::ChainId, transaction::Transaction, waypoint::Waypoint}; use std::{fs::File, path::Path}; use structopt::StructOpt; pub struct StorageHelper { - temppath: libra_temppath::TempPath, + temppath: diem_temppath::TempPath, } impl StorageHelper { pub fn new() -> Self { - let temppath = libra_temppath::TempPath::new(); + let temppath = diem_temppath::TempPath::new(); temppath.create_as_file().unwrap(); File::create(temppath.path()).unwrap(); Self { temppath } @@ -59,12 +59,12 @@ impl StorageHelper { // Initialize all keys in storage storage - .import_private_key(LIBRA_ROOT_KEY, Ed25519PrivateKey::generate(&mut rng)) + .import_private_key(DIEM_ROOT_KEY, Ed25519PrivateKey::generate(&mut rng)) .unwrap(); - // TODO(davidiw) use distinct keys in tests for treasury and libra root keys - let libra_root_key = storage.export_private_key(LIBRA_ROOT_KEY).unwrap(); + // TODO(davidiw) use distinct keys in tests for treasury and diem root keys + let diem_root_key = storage.export_private_key(DIEM_ROOT_KEY).unwrap(); storage - .import_private_key(TREASURY_COMPLIANCE_KEY, libra_root_key) + .import_private_key(TREASURY_COMPLIANCE_KEY, diem_root_key) .unwrap(); storage .import_private_key(CONSENSUS_KEY, Ed25519PrivateKey::generate(&mut rng)) @@ -90,12 +90,12 @@ impl StorageHelper { .set(SAFETY_DATA, SafetyData::new(0, 0, 0, None)) .unwrap(); storage.set(WAYPOINT, Waypoint::default()).unwrap(); - let mut encryptor = libra_network_address_encryption::Encryptor::new(storage); + let mut encryptor = diem_network_address_encryption::Encryptor::new(storage); encryptor.initialize().unwrap(); encryptor .add_key( - libra_network_address::encrypted::TEST_SHARED_VAL_NETADDR_KEY_VERSION, - libra_network_address::encrypted::TEST_SHARED_VAL_NETADDR_KEY, + diem_network_address::encrypted::TEST_SHARED_VAL_NETADDR_KEY_VERSION, + diem_network_address::encrypted::TEST_SHARED_VAL_NETADDR_KEY, ) .unwrap(); } @@ -103,7 +103,7 @@ impl StorageHelper { pub fn create_waypoint(&self, chain_id: ChainId) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool create-waypoint --chain-id {chain_id} --shared-backend backend={backend};\ @@ -121,7 +121,7 @@ impl StorageHelper { pub fn insert_waypoint(&self, validator_ns: &str, waypoint: Waypoint) -> Result<(), Error> { let args = format!( " - libra-genesis-tool + diem-genesis-tool insert-waypoint --validator-backend backend={backend};\ path={path};\ @@ -142,7 +142,7 @@ impl StorageHelper { pub fn genesis(&self, chain_id: ChainId, genesis_path: &Path) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool genesis --chain-id {chain_id} --shared-backend backend={backend};\ @@ -159,15 +159,15 @@ impl StorageHelper { command.genesis() } - pub fn libra_root_key( + pub fn diem_root_key( &self, validator_ns: &str, shared_ns: &str, ) -> Result { let args = format!( " - libra-genesis-tool - libra-root-key + diem-genesis-tool + diem-root-key --validator-backend backend={backend};\ path={path};\ namespace={validator_ns} @@ -182,7 +182,7 @@ impl StorageHelper { ); let command = Command::from_iter(args.split_whitespace()); - command.libra_root_key() + command.diem_root_key() } pub fn operator_key( @@ -192,7 +192,7 @@ impl StorageHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool operator-key --validator-backend backend={backend};\ path={path};\ @@ -218,7 +218,7 @@ impl StorageHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool owner-key --validator-backend backend={backend};\ path={path};\ @@ -241,7 +241,7 @@ impl StorageHelper { pub fn set_layout(&self, path: &str) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool set-layout --path {path} --shared-backend backend={backend};\ @@ -259,7 +259,7 @@ impl StorageHelper { pub fn set_operator(&self, operator_name: &str, shared_ns: &str) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool set-operator --operator-name {operator_name} --shared-backend backend={backend};\ @@ -283,7 +283,7 @@ impl StorageHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool treasury-compliance-key --validator-backend backend={backend};\ path={path};\ @@ -313,7 +313,7 @@ impl StorageHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool validator-config --owner-name {owner_name} --validator-address {validator_address} @@ -344,7 +344,7 @@ impl StorageHelper { pub fn verify(&self, namespace: &str) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool verify --validator-backend backend={backend};\ path={path};\ @@ -362,7 +362,7 @@ impl StorageHelper { pub fn verify_genesis(&self, namespace: &str, genesis_path: &Path) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool verify --validator-backend backend={backend};\ path={path};\ diff --git a/config/management/genesis/src/swarm_config.rs b/config/management/genesis/src/swarm_config.rs index c73c485fb0..47ae562821 100644 --- a/config/management/genesis/src/swarm_config.rs +++ b/config/management/genesis/src/swarm_config.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_config::config::NodeConfig; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_types::waypoint::Waypoint; +use diem_config::config::NodeConfig; +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_types::waypoint::Waypoint; use std::{fs::File, io::Write, path::PathBuf}; pub trait BuildSwarm { @@ -14,13 +14,13 @@ pub trait BuildSwarm { pub struct SwarmConfig { pub config_files: Vec, - pub libra_root_key_path: PathBuf, + pub diem_root_key_path: PathBuf, pub waypoint: Waypoint, } impl SwarmConfig { pub fn build(config_builder: &T, output_dir: &PathBuf) -> Result { - let (mut configs, libra_root_key) = config_builder.build_swarm()?; + let (mut configs, diem_root_key) = config_builder.build_swarm()?; let mut config_files = vec![]; for (index, config) in configs.iter_mut().enumerate() { @@ -33,14 +33,14 @@ impl SwarmConfig { config_files.push(node_path); } - let libra_root_key_path = output_dir.join("mint.key"); - let serialized_keys = lcs::to_bytes(&libra_root_key)?; - let mut key_file = File::create(&libra_root_key_path)?; + let diem_root_key_path = output_dir.join("mint.key"); + let serialized_keys = lcs::to_bytes(&diem_root_key)?; + let mut key_file = File::create(&diem_root_key_path)?; key_file.write_all(&serialized_keys)?; Ok(SwarmConfig { config_files, - libra_root_key_path, + diem_root_key_path, waypoint: configs[0].base.waypoint.waypoint(), }) } diff --git a/config/management/genesis/src/validator_config.rs b/config/management/genesis/src/validator_config.rs index ffea548f21..83ff504da2 100644 --- a/config/management/genesis/src/validator_config.rs +++ b/config/management/genesis/src/validator_config.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_global_constants::OWNER_ACCOUNT; -use libra_management::{constants, error::Error, secure_backend::SharedBackend}; -use libra_network_address::NetworkAddress; -use libra_types::transaction::Transaction; +use diem_global_constants::OWNER_ACCOUNT; +use diem_management::{constants, error::Error, secure_backend::SharedBackend}; +use diem_network_address::NetworkAddress; +use diem_types::transaction::Transaction; use structopt::StructOpt; #[derive(Debug, StructOpt)] @@ -12,7 +12,7 @@ pub struct ValidatorConfig { #[structopt(long)] owner_name: String, #[structopt(flatten)] - validator_config: libra_management::validator_config::ValidatorConfig, + validator_config: diem_management::validator_config::ValidatorConfig, #[structopt(long)] validator_address: NetworkAddress, #[structopt(long)] @@ -32,7 +32,7 @@ impl ValidatorConfig { // Retrieve and set owner account let owner_account = - libra_config::utils::validator_owner_account_from_name(self.owner_name.as_bytes()); + diem_config::utils::validator_owner_account_from_name(self.owner_name.as_bytes()); let mut validator_storage = config.validator_backend(); validator_storage.set(OWNER_ACCOUNT, owner_account)?; diff --git a/config/management/genesis/src/validator_operator.rs b/config/management/genesis/src/validator_operator.rs index 792637dfa2..f8f8283033 100644 --- a/config/management/genesis/src/validator_operator.rs +++ b/config/management/genesis/src/validator_operator.rs @@ -1,10 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_global_constants::OPERATOR_KEY; -use libra_management::{ - config::ConfigPath, constants, error::Error, secure_backend::SharedBackend, -}; +use diem_global_constants::OPERATOR_KEY; +use diem_management::{config::ConfigPath, constants, error::Error, secure_backend::SharedBackend}; use structopt::StructOpt; #[derive(Debug, StructOpt)] diff --git a/config/management/genesis/src/verify.rs b/config/management/genesis/src/verify.rs index 89ab9a81db..316249c80c 100644 --- a/config/management/genesis/src/verify.rs +++ b/config/management/genesis/src/verify.rs @@ -1,24 +1,24 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use executor::db_bootstrapper; -use libra_config::config::RocksdbConfig; -use libra_global_constants::{ +use diem_config::config::RocksdbConfig; +use diem_global_constants::{ CONSENSUS_KEY, FULLNODE_NETWORK_KEY, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT, OWNER_KEY, SAFETY_DATA, VALIDATOR_NETWORK_KEY, WAYPOINT, }; -use libra_management::{ +use diem_management::{ config::ConfigPath, error::Error, secure_backend::ValidatorBackend, storage::StorageWrapper as Storage, }; -use libra_network_address::NetworkAddress; -use libra_temppath::TempPath; -use libra_types::{ +use diem_network_address::NetworkAddress; +use diem_temppath::TempPath; +use diem_types::{ account_address::AccountAddress, account_config, account_state::AccountState, on_chain_config::ValidatorSet, validator_config::ValidatorConfig, waypoint::Waypoint, }; -use libra_vm::LibraVM; -use libradb::LibraDB; +use diem_vm::DiemVM; +use diemdb::DiemDB; +use executor::db_bootstrapper; use std::{ convert::TryFrom, fmt::Write, @@ -206,9 +206,9 @@ fn compute_genesis( genesis_path: &PathBuf, db_path: &Path, ) -> Result<(DbReaderWriter, Waypoint), Error> { - let libradb = LibraDB::open(db_path, false, None, RocksdbConfig::default()) + let diemdb = DiemDB::open(db_path, false, None, RocksdbConfig::default()) .map_err(|e| Error::UnexpectedError(e.to_string()))?; - let db_rw = DbReaderWriter::new(libradb); + let db_rw = DbReaderWriter::new(diemdb); let mut file = File::open(genesis_path) .map_err(|e| Error::UnexpectedError(format!("Unable to open genesis file: {}", e)))?; @@ -218,9 +218,9 @@ fn compute_genesis( let genesis = lcs::from_bytes(&buffer) .map_err(|e| Error::UnexpectedError(format!("Unable to parse genesis: {}", e)))?; - let waypoint = db_bootstrapper::generate_waypoint::(&db_rw, &genesis) + let waypoint = db_bootstrapper::generate_waypoint::(&db_rw, &genesis) .map_err(|e| Error::UnexpectedError(e.to_string()))?; - db_bootstrapper::maybe_bootstrap::(&db_rw, &genesis, waypoint) + db_bootstrapper::maybe_bootstrap::(&db_rw, &genesis, waypoint) .map_err(|e| Error::UnexpectedError(format!("Unable to commit genesis: {}", e)))?; Ok((db_rw, waypoint)) diff --git a/config/management/genesis/src/waypoint.rs b/config/management/genesis/src/waypoint.rs index afb44374a8..8b1821503b 100644 --- a/config/management/genesis/src/waypoint.rs +++ b/config/management/genesis/src/waypoint.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_config::config::RocksdbConfig; +use diem_management::{config::ConfigPath, error::Error, secure_backend::SharedBackend}; +use diem_temppath::TempPath; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_vm::DiemVM; +use diemdb::DiemDB; use executor::db_bootstrapper; -use libra_config::config::RocksdbConfig; -use libra_management::{config::ConfigPath, error::Error, secure_backend::SharedBackend}; -use libra_temppath::TempPath; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; -use libra_vm::LibraVM; -use libradb::LibraDB; use storage_interface::DbReaderWriter; use structopt::StructOpt; @@ -35,11 +35,11 @@ impl CreateWaypoint { let genesis = genesis_helper.execute()?; let path = TempPath::new(); - let libradb = LibraDB::open(&path, false, None, RocksdbConfig::default()) + let diemdb = DiemDB::open(&path, false, None, RocksdbConfig::default()) .map_err(|e| Error::UnexpectedError(e.to_string()))?; - let db_rw = DbReaderWriter::new(libradb); + let db_rw = DbReaderWriter::new(diemdb); - db_bootstrapper::generate_waypoint::(&db_rw, &genesis) + db_bootstrapper::generate_waypoint::(&db_rw, &genesis) .map_err(|e| Error::UnexpectedError(e.to_string())) } } diff --git a/config/management/network-address-encryption/Cargo.toml b/config/management/network-address-encryption/Cargo.toml index 6e58869b89..54e10d8b38 100644 --- a/config/management/network-address-encryption/Cargo.toml +++ b/config/management/network-address-encryption/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-network-address-encryption" +name = "diem-network-address-encryption" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Encryption library for network addresses" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,12 +15,12 @@ serde = { version = "1.0.117", features = ["rc"], default-features = false } thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-global-constants = { path = "../../../config/global-constants", version = "0.1.0"} -libra-infallible = { path = "../../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../../common/logger", version = "0.1.0" } -libra-network-address = { path = "../../../network/network-address", version = "0.1.0" } -libra-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-global-constants = { path = "../../../config/global-constants", version = "0.1.0"} +diem-infallible = { path = "../../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../../common/logger", version = "0.1.0" } +diem-network-address = { path = "../../../network/network-address", version = "0.1.0" } +diem-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../../language/move-core/types", version = "0.1.0" } [dev-dependencies] diff --git a/config/management/network-address-encryption/src/lib.rs b/config/management/network-address-encryption/src/lib.rs index aa95f267cf..44a243dc21 100644 --- a/config/management/network-address-encryption/src/lib.rs +++ b/config/management/network-address-encryption/src/lib.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_global_constants::VALIDATOR_NETWORK_ADDRESS_KEYS; -use libra_infallible::RwLock; -use libra_network_address::{ +use diem_global_constants::VALIDATOR_NETWORK_ADDRESS_KEYS; +use diem_infallible::RwLock; +use diem_network_address::{ encrypted::{ EncNetworkAddress, Key, KeyVersion, TEST_SHARED_VAL_NETADDR_KEY, TEST_SHARED_VAL_NETADDR_KEY_VERSION, }, NetworkAddress, }; -use libra_secure_storage::{Error as StorageError, KVStorage, Storage}; +use diem_secure_storage::{Error as StorageError, KVStorage, Storage}; use move_core_types::account_address::AccountAddress; use serde::{Deserialize, Serialize}; use std::collections::HashMap; @@ -27,7 +27,7 @@ pub enum Error { #[error("Failed (de)serializing validator_network_address_keys")] LCSError(#[from] lcs::Error), #[error("NetworkAddress parse error {0}")] - ParseError(#[from] libra_network_address::ParseError), + ParseError(#[from] diem_network_address::ParseError), #[error("Failed reading validator_network_address_keys from storage")] StorageError(#[from] StorageError), #[error("The specified version does not exist in validator_network_address_keys: {0}")] @@ -50,7 +50,7 @@ impl Encryptor { /// This generates an Encryptor for use in default / testing scenarios where (proper) /// encryption is not necessary. pub fn for_testing() -> Self { - let storage = Storage::InMemoryStorage(libra_secure_storage::InMemoryStorage::new()); + let storage = Storage::InMemoryStorage(diem_secure_storage::InMemoryStorage::new()); let mut encryptor = Encryptor::new(storage); encryptor.initialize_for_testing().unwrap(); encryptor @@ -141,7 +141,7 @@ impl Encryptor { Ok(keys) => { *self.cached_keys.write() = Some(keys.clone()); } - Err(err) => libra_logger::error!( + Err(err) => diem_logger::error!( "Unable to read {} from storage: {}", VALIDATOR_NETWORK_ADDRESS_KEYS, err @@ -162,7 +162,7 @@ impl Encryptor { #[derive(Clone, Debug, Deserialize, Serialize)] struct StorageKey( #[serde( - serialize_with = "libra_secure_storage::to_base64", + serialize_with = "diem_secure_storage::to_base64", deserialize_with = "from_base64" )] Key, @@ -205,7 +205,7 @@ impl Default for ValidatorKeys { #[cfg(test)] mod tests { use super::*; - use libra_secure_storage::InMemoryStorage; + use diem_secure_storage::InMemoryStorage; use rand::{rngs::OsRng, Rng, RngCore, SeedableRng}; #[test] @@ -215,7 +215,7 @@ mod tests { encryptor.initialize().unwrap(); let mut rng = rand::rngs::StdRng::from_seed(OsRng.gen()); - let mut key = [0; libra_network_address::encrypted::KEY_LEN]; + let mut key = [0; diem_network_address::encrypted::KEY_LEN]; rng.fill_bytes(&mut key); encryptor.add_key(0, key).unwrap(); encryptor.set_current_version(0).unwrap(); @@ -268,7 +268,7 @@ mod tests { #[ignore] #[test] fn initializer() { - let storage = Storage::VaultStorage(libra_secure_storage::VaultStorage::new( + let storage = Storage::VaultStorage(diem_secure_storage::VaultStorage::new( "http://127.0.0.1:8200".to_string(), "root_token".to_string(), Some("network_address_encryption_keys".to_string()), @@ -279,7 +279,7 @@ mod tests { let mut encryptor = Encryptor::new(storage); encryptor.initialize().unwrap(); let mut rng = rand::rngs::StdRng::from_seed(OsRng.gen()); - let mut key = [0; libra_network_address::encrypted::KEY_LEN]; + let mut key = [0; diem_network_address::encrypted::KEY_LEN]; rng.fill_bytes(&mut key); encryptor.add_key(0, key).unwrap(); encryptor.set_current_version(0).unwrap(); diff --git a/config/management/operational/Cargo.toml b/config/management/operational/Cargo.toml index e4b379fd54..584d20eb10 100644 --- a/config/management/operational/Cargo.toml +++ b/config/management/operational/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-operational-tool" +name = "diem-operational-tool" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Management is a tool for operators to manage nodes" +authors = ["Diem Association "] +description = "Diem Management is a tool for operators to manage nodes" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,20 +19,20 @@ thiserror = "1.0.22" toml = { version = "0.5.7", default-features = false } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../..", version = "0.1.0"} -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../../config/global-constants", version = "0.1.0" } -libra-management = { path = "..", version = "0.1.0" } -libra-network-address = { path = "../../../network/network-address", version = "0.1.0" } -libra-network-address-encryption = {path = "../network-address-encryption", version = "0.1.0"} -libra-secure-json-rpc = { path = "../../../secure/json-rpc", version = "0.1.0" } -libra-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } -libra-secure-time = { path = "../../../secure/time", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diem-config = { path = "../..", version = "0.1.0"} +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../../config/global-constants", version = "0.1.0" } +diem-management = { path = "..", version = "0.1.0" } +diem-network-address = { path = "../../../network/network-address", version = "0.1.0" } +diem-network-address-encryption = {path = "../network-address-encryption", version = "0.1.0"} +diem-secure-json-rpc = { path = "../../../secure/json-rpc", version = "0.1.0" } +diem-secure-storage = { path = "../../../secure/storage", version = "0.1.0" } +diem-secure-time = { path = "../../../secure/time", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } transaction-builder = { path = "../../../language/transaction-builder", version = "0.1.0" } [features] testing = [] -fuzzing = ["libra-config/fuzzing"] +fuzzing = ["diem-config/fuzzing"] diff --git a/config/management/operational/README.md b/config/management/operational/README.md index d5fc7bbefc..def474cc38 100644 --- a/config/management/operational/README.md +++ b/config/management/operational/README.md @@ -1,7 +1,7 @@ -# Libra Operational Tool +# Diem Operational Tool -The `libra-operational-tool` provides a tool for operators to perform maintenance functions -on the Libra blockchain post-genesis. The functionality of the tool is +The `diem-operational-tool` provides a tool for operators to perform maintenance functions +on the Diem blockchain post-genesis. The functionality of the tool is dictated by the organization of nodes within the system: * Validator owners (OW) that have accounts on the blockchain. These accounts contain diff --git a/config/management/operational/src/account_resource.rs b/config/management/operational/src/account_resource.rs index c63dec1615..806076dadc 100644 --- a/config/management/operational/src/account_resource.rs +++ b/config/management/operational/src/account_resource.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{auto_validate::AutoValidate, json_rpc::JsonRpcClientWrapper, TransactionContext}; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_global_constants::{OPERATOR_ACCOUNT, OPERATOR_KEY}; -use libra_management::{error::Error, transaction::build_raw_transaction}; -use libra_types::{ +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_global_constants::{OPERATOR_ACCOUNT, OPERATOR_KEY}; +use diem_management::{error::Error, transaction::build_raw_transaction}; +use diem_types::{ account_address::AccountAddress, transaction::{authenticator::AuthenticationKey, Transaction}, }; @@ -18,7 +18,7 @@ pub struct AccountResource { #[structopt(long, help = "Account address to display the account resource")] account_address: AccountAddress, #[structopt(flatten)] - config: libra_management::config::ConfigPath, + config: diem_management::config::ConfigPath, /// JSON-RPC Endpoint (e.g. http://localhost:8080) #[structopt(long, required_unless = "config")] json_server: Option, @@ -56,7 +56,7 @@ pub struct RotateOperatorKey { #[structopt(long, required_unless = "config")] json_server: Option, #[structopt(flatten)] - validator_config: libra_management::validator_config::ValidatorConfig, + validator_config: diem_management::validator_config::ValidatorConfig, #[structopt(flatten)] auto_validate: AutoValidate, } diff --git a/config/management/operational/src/auto_validate.rs b/config/management/operational/src/auto_validate.rs index 7939d3192d..f34abde15b 100644 --- a/config/management/operational/src/auto_validate.rs +++ b/config/management/operational/src/auto_validate.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{validate_transaction::ValidateTransaction, TransactionContext}; -use libra_management::error::Error; +use diem_management::error::Error; use std::{thread::sleep, time}; use structopt::StructOpt; diff --git a/config/management/operational/src/command.rs b/config/management/operational/src/command.rs index 107276236b..25decee53b 100644 --- a/config/management/operational/src/command.rs +++ b/config/management/operational/src/command.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ account_resource::SimplifiedAccountResource, validator_config::DecryptedValidatorConfig, validator_set::DecryptedValidatorInfo, TransactionContext, }; -use libra_crypto::{ed25519::Ed25519PublicKey, x25519}; -use libra_management::{error::Error, execute_command}; -use libra_types::{account_address::AccountAddress, waypoint::Waypoint}; +use diem_crypto::{ed25519::Ed25519PublicKey, x25519}; +use diem_management::{error::Error, execute_command}; +use diem_types::{account_address::AccountAddress, waypoint::Waypoint}; use serde::Serialize; use structopt::StructOpt; @@ -29,7 +29,7 @@ pub enum Command { #[structopt(about = "Extract a public key from the validator storage")] ExtractPublicKey(crate::keys::ExtractPublicKey), #[structopt(about = "Set the waypoint in the validator storage")] - InsertWaypoint(libra_management::waypoint::InsertWaypoint), + InsertWaypoint(diem_management::waypoint::InsertWaypoint), #[structopt(about = "Prints an account from the validator storage")] PrintAccount(crate::print::PrintAccount), #[structopt(about = "Prints a public key from the validator storage")] diff --git a/config/management/operational/src/governance.rs b/config/management/operational/src/governance.rs index ff63a6bf98..6a4bff228a 100644 --- a/config/management/operational/src/governance.rs +++ b/config/management/operational/src/governance.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{auto_validate::AutoValidate, json_rpc::JsonRpcClientWrapper, TransactionContext}; -use libra_global_constants::LIBRA_ROOT_KEY; -use libra_management::{ +use diem_global_constants::DIEM_ROOT_KEY; +use diem_management::{ config::{Config, ConfigPath}, error::Error, secure_backend::ValidatorBackend, transaction::build_raw_transaction, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, - account_config::libra_root_address, + account_config::diem_root_address, chain_id::ChainId, transaction::{authenticator::AuthenticationKey, Script}, }; @@ -54,11 +54,11 @@ impl CreateAccount { .override_json_server(&self.json_server) .override_validator_backend(&self.validator_backend.validator_backend)?; - let key = libra_management::read_key_from_file(&self.path_to_key) + let key = diem_management::read_key_from_file(&self.path_to_key) .map_err(|e| Error::UnableToReadFile(format!("{:?}", self.path_to_key), e))?; let client = JsonRpcClientWrapper::new(config.json_server.clone()); - let seq_num = client.sequence_number(libra_root_address())?; + let seq_num = client.sequence_number(diem_root_address())?; let auth_key = AuthenticationKey::ed25519(&key); let account_address = auth_key.derived_address(); let script = script_callback( @@ -68,7 +68,7 @@ impl CreateAccount { self.name.as_bytes().to_vec(), ); let mut transaction_context = - build_and_submit_libra_root_transaction(&config, seq_num, script, action)?; + build_and_submit_diem_root_transaction(&config, seq_num, script, action)?; // Perform auto validation if required transaction_context = self @@ -117,7 +117,7 @@ struct RootValidatorOperation { #[structopt(long, required_unless = "config")] json_server: Option, #[structopt(flatten)] - validator_config: libra_management::validator_config::ValidatorConfig, + validator_config: diem_management::validator_config::ValidatorConfig, #[structopt(flatten)] auto_validate: AutoValidate, } @@ -148,14 +148,14 @@ impl AddValidator { .validator_config(self.input.account_address)? .human_name; - let seq_num = client.sequence_number(libra_root_address())?; + let seq_num = client.sequence_number(diem_root_address())?; let script = transaction_builder::encode_add_validator_and_reconfigure_script( seq_num, name, self.input.account_address, ); let mut transaction_context = - build_and_submit_libra_root_transaction(&config, seq_num, script, "add-validator")?; + build_and_submit_diem_root_transaction(&config, seq_num, script, "add-validator")?; // Perform auto validation if required transaction_context = self @@ -184,7 +184,7 @@ impl RemoveValidator { .validator_config(self.input.account_address)? .human_name; - let seq_num = client.sequence_number(libra_root_address())?; + let seq_num = client.sequence_number(diem_root_address())?; let script = transaction_builder::encode_remove_validator_and_reconfigure_script( seq_num, name, @@ -192,7 +192,7 @@ impl RemoveValidator { ); let mut transaction_context = - build_and_submit_libra_root_transaction(&config, seq_num, script, "remove-validator")?; + build_and_submit_diem_root_transaction(&config, seq_num, script, "remove-validator")?; // Perform auto validation if required transaction_context = self @@ -204,16 +204,16 @@ impl RemoveValidator { } } -fn build_and_submit_libra_root_transaction( +fn build_and_submit_diem_root_transaction( config: &Config, seq_num: u64, script: Script, action: &'static str, ) -> Result { - let txn = build_raw_transaction(config.chain_id, libra_root_address(), seq_num, script); + let txn = build_raw_transaction(config.chain_id, diem_root_address(), seq_num, script); let mut storage = config.validator_backend(); - let signed_txn = storage.sign(LIBRA_ROOT_KEY, action, txn)?; + let signed_txn = storage.sign(DIEM_ROOT_KEY, action, txn)?; let client = JsonRpcClientWrapper::new(config.json_server.clone()); client.submit_transaction(signed_txn) diff --git a/config/management/operational/src/json_rpc.rs b/config/management/operational/src/json_rpc.rs index c3919ab351..c8a2a615c4 100644 --- a/config/management/operational/src/json_rpc.rs +++ b/config/management/operational/src/json_rpc.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::TransactionContext; -use libra_management::error::Error; -use libra_secure_json_rpc::{JsonRpcClient, VMStatusView}; -use libra_types::{ +use diem_management::error::Error; +use diem_secure_json_rpc::{JsonRpcClient, VMStatusView}; +use diem_types::{ account_address::AccountAddress, account_config, account_config::AccountResource, account_state::AccountState, transaction::SignedTransaction, validator_config::ValidatorConfigResource, validator_info::ValidatorInfo, @@ -52,7 +52,7 @@ impl JsonRpcClientWrapper { } /// This method returns all validator infos currently registered in the validator set of the - /// Libra blockchain. If account is specified, only a single validator info is returned: the + /// Diem blockchain. If account is specified, only a single validator info is returned: the /// one that matches the given account. pub fn validator_set( &self, diff --git a/config/management/operational/src/keys.rs b/config/management/operational/src/keys.rs index d49973b773..f4d9f1fd6c 100644 --- a/config/management/operational/src/keys.rs +++ b/config/management/operational/src/keys.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; +use diem_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; use serde::Serialize; use std::{fs::File, io::Write, path::PathBuf}; use structopt::StructOpt; diff --git a/config/management/operational/src/lib.rs b/config/management/operational/src/lib.rs index 22f7944cdc..65d9a33482 100644 --- a/config/management/operational/src/lib.rs +++ b/config/management/operational/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -19,8 +19,8 @@ mod network_checker; #[cfg(any(test, feature = "testing"))] pub mod test_helper; -use libra_secure_json_rpc::VMStatusView; -use libra_types::account_address::AccountAddress; +use diem_secure_json_rpc::VMStatusView; +use diem_types::account_address::AccountAddress; use serde::Serialize; /// Information for validating a transaction after it's been submitted, or diff --git a/config/management/operational/src/main.rs b/config/management/operational/src/main.rs index 63f03522ad..de36516b5b 100644 --- a/config/management/operational/src/main.rs +++ b/config/management/operational/src/main.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_operational_tool::command::{Command, ResultWrapper}; +use diem_operational_tool::command::{Command, ResultWrapper}; use std::process::exit; use structopt::StructOpt; diff --git a/config/management/operational/src/network_checker.rs b/config/management/operational/src/network_checker.rs index a67182acd1..465f190b18 100644 --- a/config/management/operational/src/network_checker.rs +++ b/config/management/operational/src/network_checker.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_management::error::Error; -use libra_network_address::NetworkAddress; +use diem_management::error::Error; +use diem_network_address::NetworkAddress; use std::{ io::{Read, Write}, net::{TcpStream, ToSocketAddrs}, @@ -83,8 +83,8 @@ impl CheckEndpoint { #[cfg(test)] pub mod tests { use crate::test_helper::OperationalTool; - use libra_network_address::NetworkAddress; - use libra_types::chain_id::ChainId; + use diem_network_address::NetworkAddress; + use diem_types::chain_id::ChainId; use std::str::FromStr; #[test] diff --git a/config/management/operational/src/owner.rs b/config/management/operational/src/owner.rs index 82b37980a2..929b29d724 100644 --- a/config/management/operational/src/owner.rs +++ b/config/management/operational/src/owner.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{auto_validate::AutoValidate, json_rpc::JsonRpcClientWrapper, TransactionContext}; -use libra_management::{ +use diem_management::{ config::ConfigPath, error::Error, secure_backend::ValidatorBackend, transaction::build_raw_transaction, }; -use libra_types::{account_address::AccountAddress, chain_id::ChainId}; +use diem_types::{account_address::AccountAddress, chain_id::ChainId}; use structopt::StructOpt; #[derive(Debug, StructOpt)] @@ -36,7 +36,7 @@ impl SetValidatorOperator { .override_json_server(&self.json_server) .override_validator_backend(&self.validator_backend.validator_backend)?; let mut storage = config.validator_backend(); - let owner_address = storage.account_address(libra_global_constants::OWNER_ACCOUNT)?; + let owner_address = storage.account_address(diem_global_constants::OWNER_ACCOUNT)?; let client = JsonRpcClientWrapper::new(config.json_server.clone()); let txn = build_raw_transaction( @@ -49,7 +49,7 @@ impl SetValidatorOperator { ), ); - let signed_txn = storage.sign(libra_global_constants::OWNER_KEY, "set-operator", txn)?; + let signed_txn = storage.sign(diem_global_constants::OWNER_KEY, "set-operator", txn)?; let mut transaction_context = client.submit_transaction(signed_txn)?; // Perform auto validation if required diff --git a/config/management/operational/src/print.rs b/config/management/operational/src/print.rs index 3abfca25bf..622c7c3271 100644 --- a/config/management/operational/src/print.rs +++ b/config/management/operational/src/print.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; -use libra_types::{account_address::AccountAddress, waypoint::Waypoint}; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; +use diem_types::{account_address::AccountAddress, waypoint::Waypoint}; use structopt::StructOpt; #[derive(Debug, StructOpt)] diff --git a/config/management/operational/src/test_helper.rs b/config/management/operational/src/test_helper.rs index 29f863a8f6..cd58fffcdc 100644 --- a/config/management/operational/src/test_helper.rs +++ b/config/management/operational/src/test_helper.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,14 +8,14 @@ use crate::{ validator_set::DecryptedValidatorInfo, TransactionContext, }; -use libra_config::config; -use libra_crypto::{ed25519::Ed25519PublicKey, x25519}; -use libra_management::{error::Error, secure_backend::DISK}; -use libra_network_address::NetworkAddress; -use libra_types::{account_address::AccountAddress, chain_id::ChainId, waypoint::Waypoint}; +use diem_config::config; +use diem_crypto::{ed25519::Ed25519PublicKey, x25519}; +use diem_management::{error::Error, secure_backend::DISK}; +use diem_network_address::NetworkAddress; +use diem_types::{account_address::AccountAddress, chain_id::ChainId, waypoint::Waypoint}; use structopt::StructOpt; -const TOOL_NAME: &str = "libra-operational-tool"; +const TOOL_NAME: &str = "diem-operational-tool"; /// A helper to test the operational tool in tests pub struct OperationalTool { diff --git a/config/management/operational/src/validate_transaction.rs b/config/management/operational/src/validate_transaction.rs index d83879da10..f8ad3340b0 100644 --- a/config/management/operational/src/validate_transaction.rs +++ b/config/management/operational/src/validate_transaction.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{json_rpc::JsonRpcClientWrapper, TransactionContext}; -use libra_management::{config::ConfigPath, error::Error}; -use libra_types::account_address::AccountAddress; +use diem_management::{config::ConfigPath, error::Error}; +use diem_types::account_address::AccountAddress; use structopt::StructOpt; #[derive(Debug, StructOpt)] diff --git a/config/management/operational/src/validator_config.rs b/config/management/operational/src/validator_config.rs index 9f28a4bd35..a888600672 100644 --- a/config/management/operational/src/validator_config.rs +++ b/config/management/operational/src/validator_config.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{auto_validate::AutoValidate, json_rpc::JsonRpcClientWrapper, TransactionContext}; -use libra_crypto::{ed25519::Ed25519PublicKey, x25519}; -use libra_global_constants::{ +use diem_crypto::{ed25519::Ed25519PublicKey, x25519}; +use diem_global_constants::{ CONSENSUS_KEY, FULLNODE_NETWORK_KEY, OPERATOR_ACCOUNT, OWNER_ACCOUNT, VALIDATOR_NETWORK_KEY, }; -use libra_management::{error::Error, secure_backend::ValidatorBackend, storage::to_x25519}; -use libra_network_address::{NetworkAddress, Protocol}; -use libra_network_address_encryption::Encryptor; -use libra_types::account_address::AccountAddress; +use diem_management::{error::Error, secure_backend::ValidatorBackend, storage::to_x25519}; +use diem_network_address::{NetworkAddress, Protocol}; +use diem_network_address_encryption::Encryptor; +use diem_types::account_address::AccountAddress; use serde::Serialize; use std::{convert::TryFrom, str::FromStr}; use structopt::StructOpt; @@ -21,7 +21,7 @@ pub struct SetValidatorConfig { #[structopt(long, required_unless = "config")] json_server: Option, #[structopt(flatten)] - validator_config: libra_management::validator_config::ValidatorConfig, + validator_config: diem_management::validator_config::ValidatorConfig, #[structopt( long, required_unless = "fullnode-address", @@ -122,7 +122,7 @@ pub struct RotateKey { #[structopt(long, required_unless = "config")] json_server: Option, #[structopt(flatten)] - validator_config: libra_management::validator_config::ValidatorConfig, + validator_config: diem_management::validator_config::ValidatorConfig, #[structopt(flatten)] auto_validate: AutoValidate, } @@ -257,7 +257,7 @@ pub struct ValidatorConfig { #[structopt(long, help = "Validator account address to display the config")] account_address: AccountAddress, #[structopt(flatten)] - config: libra_management::config::ConfigPath, + config: diem_management::config::ConfigPath, /// JSON-RPC Endpoint (e.g. http://localhost:8080) #[structopt(long, required_unless = "config")] json_server: Option, @@ -296,7 +296,7 @@ pub struct DecryptedValidatorConfig { impl DecryptedValidatorConfig { pub fn from_validator_config_resource( - config_resource: &libra_types::validator_config::ValidatorConfigResource, + config_resource: &diem_types::validator_config::ValidatorConfigResource, account_address: AccountAddress, encryptor: &Encryptor, ) -> Result { @@ -310,7 +310,7 @@ impl DecryptedValidatorConfig { } pub fn from_validator_config( - config: &libra_types::validator_config::ValidatorConfig, + config: &diem_types::validator_config::ValidatorConfig, account_address: AccountAddress, encryptor: &Encryptor, ) -> Result { diff --git a/config/management/operational/src/validator_set.rs b/config/management/operational/src/validator_set.rs index f928b1f6e9..2aa66f7237 100644 --- a/config/management/operational/src/validator_set.rs +++ b/config/management/operational/src/validator_set.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{json_rpc::JsonRpcClientWrapper, validator_config::DecryptedValidatorConfig}; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; -use libra_network_address::NetworkAddress; -use libra_types::account_address::AccountAddress; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_management::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; +use diem_network_address::NetworkAddress; +use diem_types::account_address::AccountAddress; use serde::Serialize; use structopt::StructOpt; diff --git a/config/management/src/config.rs b/config/management/src/config.rs index eae2c6af31..8b7f97d19d 100644 --- a/config/management/src/config.rs +++ b/config/management/src/config.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{error::Error, storage::StorageWrapper}; -use libra_config::config; -use libra_types::chain_id::{self, ChainId}; +use diem_config::config; +use diem_types::chain_id::{self, ChainId}; use serde::{Deserialize, Serialize}; use std::path::PathBuf; use structopt::StructOpt; @@ -13,7 +13,7 @@ use structopt::StructOpt; /// # Example: /// /// ``` -/// use libra_management::config::ConfigPath; +/// use diem_management::config::ConfigPath; /// use structopt::StructOpt; /// /// #[derive(Clone, Debug, StructOpt)] @@ -38,7 +38,7 @@ use structopt::StructOpt; /// // Output: /// // ... /// // OPTIONS: -/// // --config Path to a libra-management configuration file +/// // --config Path to a diem-management configuration file /// // --test /// /// // let none = "cmd"; @@ -52,7 +52,7 @@ use structopt::StructOpt; /// // cmd [OPTIONS] --test ///``` -/// Config for libra management tools +/// Config for diem management tools #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[serde(deny_unknown_fields)] pub struct Config { @@ -145,7 +145,7 @@ impl Config { #[derive(Clone, Debug, Default, StructOpt)] pub struct ConfigPath { - /// Path to a libra-management configuration file + /// Path to a diem-management configuration file #[structopt(long)] config: Option, } @@ -163,8 +163,8 @@ impl ConfigPath { #[cfg(test)] mod tests { use super::*; - use libra_config::config::{SecureBackend, Token, VaultConfig}; - use libra_types::chain_id::NamedChain; + use diem_config::config::{SecureBackend, Token, VaultConfig}; + use diem_types::chain_id::NamedChain; #[test] fn example() { diff --git a/config/management/src/error.rs b/config/management/src/error.rs index 4bc5b2ba0a..c1e689d00a 100644 --- a/config/management/src/error.rs +++ b/config/management/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use thiserror::Error; diff --git a/config/management/src/lib.rs b/config/management/src/lib.rs index aeedb8296c..f0325dad3c 100644 --- a/config/management/src/lib.rs +++ b/config/management/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -12,7 +12,7 @@ pub mod validator_config; pub mod waypoint; pub mod constants { - use libra_types::account_config::COIN1_NAME; + use diem_types::account_config::XUS_NAME; pub const COMMON_NS: &str = "common"; pub const LAYOUT: &str = "layout"; pub const VALIDATOR_CONFIG: &str = "validator_config"; @@ -20,7 +20,7 @@ pub mod constants { pub const GAS_UNIT_PRICE: u64 = 0; pub const MAX_GAS_AMOUNT: u64 = 1_000_000; - pub const GAS_CURRENCY_CODE: &str = COIN1_NAME; + pub const GAS_CURRENCY_CODE: &str = XUS_NAME; pub const TXN_EXPIRATION_SECS: u64 = 3600; } @@ -38,7 +38,7 @@ macro_rules! execute_command { }; } -use libra_crypto::ed25519::Ed25519PublicKey; +use diem_crypto::ed25519::Ed25519PublicKey; use std::{convert::TryInto, fs, path::PathBuf}; /// Reads a given ed25519 public key from file. Attempts to read the key using @@ -54,6 +54,6 @@ pub fn read_key_from_file(path: &PathBuf) -> Result { key_data .as_slice() .try_into() - .map_err(|e: libra_crypto::CryptoMaterialError| e.to_string()) + .map_err(|e: diem_crypto::CryptoMaterialError| e.to_string()) } } diff --git a/config/management/src/secure_backend.rs b/config/management/src/secure_backend.rs index 935acb3c79..1c30bc0b33 100644 --- a/config/management/src/secure_backend.rs +++ b/config/management/src/secure_backend.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::error::Error; -use libra_config::config::{self, GitHubConfig, OnDiskStorageConfig, Token, VaultConfig}; +use diem_config::config::{self, GitHubConfig, OnDiskStorageConfig, Token, VaultConfig}; use std::{ collections::HashMap, convert::{TryFrom, TryInto}, @@ -182,7 +182,7 @@ mod tests { #[test] fn test_disk() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_file().unwrap(); let disk = format!("backend=disk;path={}", path.path().to_str().unwrap()); storage(&disk).unwrap(); @@ -193,20 +193,20 @@ mod tests { #[test] fn test_github() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_file().unwrap(); let mut file = File::create(path.path()).unwrap(); file.write_all(b"disk_token").unwrap(); let path_str = path.path().to_str().unwrap(); let github = format!( - "backend=github;repository_owner=libra;repository=libra;token={}", + "backend=github;repository_owner=diem;repository=diem;token={}", path_str ); storage(&github).unwrap(); let github = format!( - "backend=github;repository_owner=libra;repository=libra;token={};namespace=test", + "backend=github;repository_owner=diem;repository=diem;token={};namespace=test", path_str ); storage(&github).unwrap(); @@ -217,7 +217,7 @@ mod tests { #[test] fn test_vault() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_file().unwrap(); let mut file = File::create(path.path()).unwrap(); file.write_all(b"disk_token").unwrap(); diff --git a/config/management/src/storage.rs b/config/management/src/storage.rs index f4f9e7bc1c..76f2cca512 100644 --- a/config/management/src/storage.rs +++ b/config/management/src/storage.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::error::Error; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, x25519, }; -use libra_network_address_encryption::Encryptor; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage}; -use libra_types::{ +use diem_network_address_encryption::Encryptor; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage}; +use diem_types::{ account_address::AccountAddress, transaction::{RawTransaction, SignedTransaction, Transaction}, waypoint::Waypoint, diff --git a/config/management/src/transaction.rs b/config/management/src/transaction.rs index de12a01bef..6bcbf93768 100644 --- a/config/management/src/transaction.rs +++ b/config/management/src/transaction.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::constants; -use libra_secure_time::{RealTimeService, TimeService}; -use libra_types::{ +use diem_secure_time::{RealTimeService, TimeService}; +use diem_types::{ account_address::AccountAddress, chain_id::ChainId, transaction::{RawTransaction, Script}, diff --git a/config/management/src/validator_config.rs b/config/management/src/validator_config.rs index 3605372471..5e460ced4b 100644 --- a/config/management/src/validator_config.rs +++ b/config/management/src/validator_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,13 +8,13 @@ use crate::{ transaction::build_raw_transaction, }; use core::str::FromStr; -use libra_config::config::HANDSHAKE_VERSION; -use libra_global_constants::{ +use diem_config::config::HANDSHAKE_VERSION; +use diem_global_constants::{ CONSENSUS_KEY, FULLNODE_NETWORK_KEY, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT, VALIDATOR_NETWORK_KEY, }; -use libra_network_address::{NetworkAddress, Protocol}; -use libra_types::{chain_id::ChainId, transaction::Transaction}; +use diem_network_address::{NetworkAddress, Protocol}; +use diem_types::{chain_id::ChainId, transaction::Transaction}; use std::net::{Ipv4Addr, ToSocketAddrs}; use structopt::StructOpt; diff --git a/config/management/src/waypoint.rs b/config/management/src/waypoint.rs index f1a1d32dc2..d251a2cf49 100644 --- a/config/management/src/waypoint.rs +++ b/config/management/src/waypoint.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{config::ConfigPath, error::Error, secure_backend::ValidatorBackend}; -use libra_global_constants::{GENESIS_WAYPOINT, WAYPOINT}; -use libra_types::waypoint::Waypoint; +use diem_global_constants::{GENESIS_WAYPOINT, WAYPOINT}; +use diem_types::waypoint::Waypoint; use structopt::StructOpt; #[derive(Debug, StructOpt)] diff --git a/config/seed-peer-generator/Cargo.toml b/config/seed-peer-generator/Cargo.toml index 574677da06..65e3c8f560 100644 --- a/config/seed-peer-generator/Cargo.toml +++ b/config/seed-peer-generator/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "seed-peer-generator" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra seed peer generator" +authors = ["Diem Association "] +description = "Diem seed peer generator" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -18,14 +18,14 @@ structopt = "0.3.21" thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "..", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "..", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [features] default = [] diff --git a/config/seed-peer-generator/src/lib.rs b/config/seed-peer-generator/src/lib.rs index c8247a15c9..0dea666e55 100644 --- a/config/seed-peer-generator/src/lib.rs +++ b/config/seed-peer-generator/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod utils; diff --git a/config/seed-peer-generator/src/main.rs b/config/seed-peer-generator/src/main.rs index a6b1b67fb3..ad05b490d4 100644 --- a/config/seed-peer-generator/src/main.rs +++ b/config/seed-peer-generator/src/main.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_config::config::PersistableConfig; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; +use diem_config::config::PersistableConfig; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use std::{collections::HashMap, path::PathBuf}; use structopt::StructOpt; diff --git a/config/seed-peer-generator/src/utils.rs b/config/seed-peer-generator/src/utils.rs index f544d79b43..94597bfcb3 100644 --- a/config/seed-peer-generator/src/utils.rs +++ b/config/seed-peer-generator/src/utils.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_secure_json_rpc::JsonRpcClient; -use libra_types::{ - account_config::libra_root_address, on_chain_config::ValidatorSet, +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_secure_json_rpc::JsonRpcClient; +use diem_types::{ + account_config::diem_root_address, on_chain_config::ValidatorSet, validator_info::ValidatorInfo, PeerId, }; use std::collections::HashMap; @@ -16,7 +16,7 @@ use std::collections::HashMap; pub type SeedPeersConfig = HashMap>; pub fn gen_seed_peer_config(client_endpoint: String) -> SeedPeersConfig { - let validator_set = get_validator_set(client_endpoint, libra_root_address()) + let validator_set = get_validator_set(client_endpoint, diem_root_address()) .unwrap() .expect("No validator set found."); diff --git a/config/src/config/consensus_config.rs b/config/src/config/consensus_config.rs index b48179bfdf..3267de7bad 100644 --- a/config/src/config/consensus_config.rs +++ b/config/src/config/consensus_config.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::SafetyRulesConfig; -use libra_types::{account_address::AccountAddress, block_info::Round}; +use diem_types::{account_address::AccountAddress, block_info::Round}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, path::PathBuf}; diff --git a/config/src/config/debug_interface_config.rs b/config/src/config/debug_interface_config.rs index 551fe16c5d..09e7032143 100644 --- a/config/src/config/debug_interface_config.rs +++ b/config/src/config/debug_interface_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::utils; @@ -10,7 +10,7 @@ use std::collections::HashMap; pub struct DebugInterfaceConfig { pub admission_control_node_debug_port: u16, pub address: String, - pub libra_trace: LibraTraceConfig, + pub diem_trace: DiemTraceConfig, pub metrics_server_port: u16, pub public_metrics_server_port: u16, } @@ -22,7 +22,7 @@ impl Default for DebugInterfaceConfig { address: "0.0.0.0".to_string(), metrics_server_port: 9101, public_metrics_server_port: 9102, - libra_trace: LibraTraceConfig::default(), + diem_trace: DiemTraceConfig::default(), } } } @@ -37,15 +37,15 @@ impl DebugInterfaceConfig { #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[serde(default, deny_unknown_fields)] -pub struct LibraTraceConfig { +pub struct DiemTraceConfig { pub sampling: HashMap, } -impl Default for LibraTraceConfig { - fn default() -> LibraTraceConfig { +impl Default for DiemTraceConfig { + fn default() -> DiemTraceConfig { let mut map = HashMap::new(); map.insert(String::from("txn"), String::from("1/100")); map.insert(String::from("block"), String::from("1/1")); - LibraTraceConfig { sampling: map } + DiemTraceConfig { sampling: map } } } diff --git a/config/src/config/error.rs b/config/src/config/error.rs index d14892f3c2..20185bfe3f 100644 --- a/config/src/config/error.rs +++ b/config/src/config/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use thiserror::Error; diff --git a/config/src/config/execution_config.rs b/config/src/config/execution_config.rs index ced791b59b..cab9726318 100644 --- a/config/src/config/execution_config.rs +++ b/config/src/config/execution_config.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::{Error, RootPath, SecureBackend}; -use libra_types::transaction::Transaction; +use diem_types::transaction::Transaction; use serde::{Deserialize, Serialize}; use std::{ fs::File, @@ -121,8 +121,8 @@ pub struct RemoteExecutionService { #[cfg(test)] mod test { use super::*; - use libra_temppath::TempPath; - use libra_types::{ + use diem_temppath::TempPath; + use diem_types::{ transaction::{ChangeSet, Transaction, WriteSetPayload}, write_set::WriteSetMut, }; diff --git a/config/src/config/json_rpc_config.rs b/config/src/config/json_rpc_config.rs index fbd3ffdda7..005aa504d8 100644 --- a/config/src/config/json_rpc_config.rs +++ b/config/src/config/json_rpc_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::utils; diff --git a/config/src/config/key_manager_config.rs b/config/src/config/key_manager_config.rs index 2efdba50e4..ef3296c7c1 100644 --- a/config/src/config/key_manager_config.rs +++ b/config/src/config/key_manager_config.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::{Error, LoggerConfig, PersistableConfig, SecureBackend}; -use libra_types::chain_id::{self, ChainId}; +use diem_types::chain_id::{self, ChainId}; use serde::{Deserialize, Serialize}; use std::path::{Path, PathBuf}; diff --git a/config/src/config/logger_config.rs b/config/src/config/logger_config.rs index e4244b67d0..e7dba3ab49 100644 --- a/config/src/config/logger_config.rs +++ b/config/src/config/logger_config.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_logger::{Level, CHANNEL_SIZE}; +use diem_logger::{Level, CHANNEL_SIZE}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] diff --git a/config/src/config/mempool_config.rs b/config/src/config/mempool_config.rs index 599fcb19ec..65aa30a29d 100644 --- a/config/src/config/mempool_config.rs +++ b/config/src/config/mempool_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; diff --git a/config/src/config/metrics_config.rs b/config/src/config/metrics_config.rs index cd577b5a93..6d9dece1e1 100644 --- a/config/src/config/metrics_config.rs +++ b/config/src/config/metrics_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; @@ -18,7 +18,7 @@ impl Default for MetricsConfig { fn default() -> MetricsConfig { MetricsConfig { collection_interval_ms: 1000, - data_dir: PathBuf::from("/opt/libra/data"), + data_dir: PathBuf::from("/opt/diem/data"), enabled: false, dir: PathBuf::from("metrics"), } diff --git a/config/src/config/mod.rs b/config/src/config/mod.rs index 4a4a44fa3d..f47341de0f 100644 --- a/config/src/config/mod.rs +++ b/config/src/config/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use rand::{rngs::StdRng, SeedableRng}; @@ -45,8 +45,8 @@ mod upstream_config; pub use upstream_config::*; mod test_config; use crate::network_id::NetworkId; -use libra_secure_storage::{KVStorage, Storage}; -use libra_types::waypoint::Waypoint; +use diem_secure_storage::{KVStorage, Storage}; +use diem_types::waypoint::Waypoint; pub use test_config::*; /// Config pulls in configuration information from the config file. @@ -99,7 +99,7 @@ pub struct BaseConfig { impl Default for BaseConfig { fn default() -> BaseConfig { BaseConfig { - data_dir: PathBuf::from("/opt/libra/data"), + data_dir: PathBuf::from("/opt/diem/data"), role: RoleType::Validator, waypoint: WaypointConfig::None, } @@ -138,7 +138,7 @@ impl WaypointConfig { WaypointConfig::FromStorage(backend) => { let storage: Storage = backend.into(); let waypoint = storage - .get::(libra_global_constants::WAYPOINT) + .get::(diem_global_constants::WAYPOINT) .expect("Unable to read waypoint") .value; Some(waypoint) @@ -153,7 +153,7 @@ impl WaypointConfig { WaypointConfig::FromStorage(backend) => { let storage: Storage = backend.into(); storage - .get::(libra_global_constants::GENESIS_WAYPOINT) + .get::(diem_global_constants::GENESIS_WAYPOINT) .expect("Unable to read waypoint") .value } diff --git a/config/src/config/network_config.rs b/config/src/config/network_config.rs index fbf2e60757..fbf7d3c85a 100644 --- a/config/src/config/network_config.rs +++ b/config/src/config/network_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,11 +7,11 @@ use crate::{ network_id::NetworkId, utils, }; -use libra_crypto::{x25519, Uniform}; -use libra_network_address::NetworkAddress; -use libra_network_address_encryption::Encryptor; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage}; -use libra_types::{transaction::authenticator::AuthenticationKey, PeerId}; +use diem_crypto::{x25519, Uniform}; +use diem_network_address::NetworkAddress; +use diem_network_address_encryption::Encryptor; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage}; +use diem_types::{transaction::authenticator::AuthenticationKey, PeerId}; use rand::{ rngs::{OsRng, StdRng}, Rng, SeedableRng, @@ -237,12 +237,12 @@ impl NetworkConfig { self.identity = Identity::from_config(identity_key, peer_id); } - /// Check that all seed peer addresses look like canonical LibraNet addresses + /// Check that all seed peer addresses look like canonical DiemNet addresses pub fn verify_seed_addrs(&self) -> Result<(), Error> { for (peer_id, addrs) in self.seed_addrs.iter() { for addr in addrs { crate::config::invariant( - addr.is_libranet_addr(), + addr.is_diemnet_addr(), format!( "Unexpected seed peer address format: peer_id: {}, addr: '{}'", peer_id.short_str(), diff --git a/config/src/config/safety_rules_config.rs b/config/src/config/safety_rules_config.rs index c0800a2960..30bb3f1b69 100644 --- a/config/src/config/safety_rules_config.rs +++ b/config/src/config/safety_rules_config.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ config::{LoggerConfig, SecureBackend}, keys::ConfigKey, }; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_network_address::NetworkAddress; -use libra_types::{waypoint::Waypoint, PeerId}; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_network_address::NetworkAddress; +use diem_types::{waypoint::Waypoint, PeerId}; use rand::rngs::StdRng; use serde::{Deserialize, Serialize}; use std::{ diff --git a/config/src/config/secure_backend_config.rs b/config/src/config/secure_backend_config.rs index a543bcd5fe..3a2367784d 100644 --- a/config/src/config/secure_backend_config.rs +++ b/config/src/config/secure_backend_config.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::Error; -use libra_secure_storage::{ +use diem_secure_storage::{ GitHubStorage, InMemoryStorage, NamespacedStorage, OnDiskStorage, Storage, VaultStorage, }; use serde::{Deserialize, Serialize}; @@ -111,7 +111,7 @@ impl Default for OnDiskStorageConfig { Self { namespace: None, path: PathBuf::from("secure_storage.json"), - data_dir: PathBuf::from("/opt/libra/data"), + data_dir: PathBuf::from("/opt/diem/data"), } } } @@ -245,7 +245,7 @@ vault: #[test] fn test_token_reading() { - let temppath = libra_temppath::TempPath::new(); + let temppath = diem_temppath::TempPath::new(); temppath.create_as_file().unwrap(); let mut file = File::create(temppath.path()).unwrap(); file.write_all(b"disk_token").unwrap(); diff --git a/config/src/config/state_sync_config.rs b/config/src/config/state_sync_config.rs index c4a3e2ecfe..680e73ccc2 100644 --- a/config/src/config/state_sync_config.rs +++ b/config/src/config/state_sync_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; diff --git a/config/src/config/storage_config.rs b/config/src/config/storage_config.rs index c357007028..fa6647af20 100644 --- a/config/src/config/storage_config.rs +++ b/config/src/config/storage_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::utils; @@ -8,7 +8,7 @@ use std::{ path::PathBuf, }; -/// Port selected RocksDB options for tuning underlying rocksdb instance of LibraDB. +/// Port selected RocksDB options for tuning underlying rocksdb instance of DiemDB. /// see https://github.com/facebook/rocksdb/blob/master/include/rocksdb/options.h /// for detailed explanations. #[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)] @@ -58,7 +58,7 @@ impl Default for StorageConfig { grpc_max_receive_len: Some(100_000_000), // ~50GB state tree history (about 1 day at 100 tps) prune_window: Some(10_000_000), - data_dir: PathBuf::from("/opt/libra/data"), + data_dir: PathBuf::from("/opt/diem/data"), // Default read/write/connection timeout, in milliseconds timeout_ms: 30_000, rocksdb_config: RocksdbConfig::default(), diff --git a/config/src/config/test_config.rs b/config/src/config/test_config.rs index 4db0f05dd4..d45e49e83e 100644 --- a/config/src/config/test_config.rs +++ b/config/src/config/test_config.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::keys::ConfigKey; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_temppath::TempPath; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_temppath::TempPath; +use diem_types::{ on_chain_config::VMPublishingOption, transaction::authenticator::AuthenticationKey, }; use rand::rngs::StdRng; diff --git a/config/src/config/test_data/public_full_node.yaml b/config/src/config/test_data/public_full_node.yaml index a55ed791d9..082a8e5eed 100644 --- a/config/src/config/test_data/public_full_node.yaml +++ b/config/src/config/test_data/public_full_node.yaml @@ -1,9 +1,9 @@ base: - # Update this value to the location you want Libra to store its database - data_dir: "/opt/libra/data" + # Update this value to the location you want Diem to store its database + data_dir: "/opt/diem/data" role: "full_node" waypoint: - # Update this value to that which Libra publicly provides. Please regard the directions + # Update this value to that which Diem publicly provides. Please regard the directions # below on how to safely manage your genesis_file_location with respect to the waypoint. from_config: "0:01234567890ABCDEFFEDCA098765421001234567890ABCDEFFEDCA0987654210" diff --git a/config/src/config/test_data/validator.yaml b/config/src/config/test_data/validator.yaml index 11b9e1002b..039e667232 100644 --- a/config/src/config/test_data/validator.yaml +++ b/config/src/config/test_data/validator.yaml @@ -1,5 +1,5 @@ base: - data_dir: "/opt/libra/data" + data_dir: "/opt/diem/data" role: "validator" waypoint: from_storage: diff --git a/config/src/config/test_data/validator_full_node.yaml b/config/src/config/test_data/validator_full_node.yaml index 0fe6bb13b1..2f00ab0cdb 100644 --- a/config/src/config/test_data/validator_full_node.yaml +++ b/config/src/config/test_data/validator_full_node.yaml @@ -1,5 +1,5 @@ base: - data_dir: "/opt/libra/data" + data_dir: "/opt/diem/data" role: "full_node" waypoint: from_storage: diff --git a/config/src/config/upstream_config.rs b/config/src/config/upstream_config.rs index 48e7127da7..97a8a12df5 100644 --- a/config/src/config/upstream_config.rs +++ b/config/src/config/upstream_config.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::network_id::{NetworkId, NodeNetworkId}; -use libra_types::PeerId; +use diem_types::PeerId; use serde::{Deserialize, Serialize}; use std::fmt; diff --git a/config/src/generator.rs b/config/src/generator.rs index 4a860ace41..31ec0d527c 100644 --- a/config/src/generator.rs +++ b/config/src/generator.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Convenience structs and functions for generating a random set of Libra ndoes without the +//! Convenience structs and functions for generating a random set of Diem ndoes without the //! genesis.blob. use crate::{ @@ -10,7 +10,7 @@ use crate::{ }, network_id::NetworkId, }; -use libra_network_address::NetworkAddress; +use diem_network_address::NetworkAddress; use rand::{rngs::StdRng, SeedableRng}; pub struct ValidatorSwarm { @@ -65,7 +65,7 @@ pub fn build_seed_addrs( seed_config: &NetworkConfig, seed_base_addr: NetworkAddress, ) -> SeedAddresses { - let seed_pubkey = libra_crypto::PrivateKey::public_key(&seed_config.identity_key()); + let seed_pubkey = diem_crypto::PrivateKey::public_key(&seed_config.identity_key()); let seed_addr = seed_base_addr.append_prod_protos(seed_pubkey, HANDSHAKE_VERSION); let mut seed_addrs = SeedAddresses::default(); diff --git a/config/src/keys.rs b/config/src/keys.rs index 770299bbed..d1e65892e3 100644 --- a/config/src/keys.rs +++ b/config/src/keys.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file implements a KeyPair data structure. @@ -12,11 +12,11 @@ //! while ignored during serialization. //! -use libra_crypto::PrivateKey; +use diem_crypto::PrivateKey; use serde::{de::DeserializeOwned, Deserialize, Serialize}; /// ConfigKey places a clonable wrapper around PrivateKeys for config purposes only. The only time -/// configs have keys is either for testing or for low security requirements. Libra recommends that +/// configs have keys is either for testing or for low security requirements. Diem recommends that /// keys be stored in key managers. If we make keys unclonable, then the configs must be mutable /// and that becomes a requirement strictly as a result of supporting test environments, which is /// undesirable. Hence this internal wrapper allows for keys to be clonable but only from configs. @@ -36,7 +36,7 @@ impl ConfigKey { } pub fn public_key(&self) -> T::PublicKeyMaterial { - libra_crypto::PrivateKey::public_key(&self.key) + diem_crypto::PrivateKey::public_key(&self.key) } } @@ -47,10 +47,10 @@ impl Clone for ConfigKey { } #[cfg(test)] -impl Default for ConfigKey { +impl Default for ConfigKey { fn default() -> Self { Self { - key: libra_crypto::Uniform::generate_for_testing(), + key: diem_crypto::Uniform::generate_for_testing(), } } } diff --git a/config/src/lib.rs b/config/src/lib.rs index 5140953953..8eee85f45b 100644 --- a/config/src/lib.rs +++ b/config/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/config/src/network_id.rs b/config/src/network_id.rs index 845548a0e1..5d56b7ce8d 100644 --- a/config/src/network_id.rs +++ b/config/src/network_id.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::RoleType; -use libra_types::PeerId; +use diem_types::PeerId; use serde::{Deserialize, Serialize, Serializer}; use std::fmt; diff --git a/config/src/utils.rs b/config/src/utils.rs index 8579d9ff2e..3359153fb5 100644 --- a/config/src/utils.rs +++ b/config/src/utils.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::NodeConfig; -use get_if_addrs::get_if_addrs; -use libra_network_address::{NetworkAddress, Protocol}; -use libra_types::{ +use diem_network_address::{NetworkAddress, Protocol}; +use diem_types::{ account_address::AccountAddress, transaction::{authenticator::AuthenticationKey, Transaction}, }; +use get_if_addrs::get_if_addrs; use std::net::{TcpListener, TcpStream}; pub fn default_validator_owner_auth_key_from_name(name: &[u8]) -> AuthenticationKey { let salt = "validator_owner::"; let mut name_in_bytes = salt.as_bytes().to_vec(); name_in_bytes.extend_from_slice(name); - let hash = libra_crypto::HashValue::sha3_256_of(&name_in_bytes); + let hash = diem_crypto::HashValue::sha3_256_of(&name_in_bytes); AuthenticationKey::new(*hash.as_ref()) } diff --git a/consensus/Cargo.toml b/consensus/Cargo.toml index bf1f8de01e..5e97608dce 100644 --- a/consensus/Cargo.toml +++ b/consensus/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "consensus" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra consensus" +authors = ["Diem Association "] +description = "Diem consensus" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -35,18 +35,18 @@ execution-correctness = { path = "../execution/execution-correctness", version = executor = { path = "../execution/executor", version = "0.1.0" } executor-types = { path = "../execution/executor-types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-mempool = { path = "../mempool", version = "0.1.0" } -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-infallible = { path = "../common/infallible", version = "0.1.0" } -libra-secure-storage = { path = "../secure/storage", version = "0.1.0" } -libra-temppath = { path = "../common/temppath", version = "0.1.0" } -libra-trace = { path = "../common/trace", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0" } -libra-vm = { path = "../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-mempool = { path = "../mempool", version = "0.1.0" } +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-infallible = { path = "../common/infallible", version = "0.1.0" } +diem-secure-storage = { path = "../secure/storage", version = "0.1.0" } +diem-temppath = { path = "../common/temppath", version = "0.1.0" } +diem-trace = { path = "../common/trace", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0" } +diem-vm = { path = "../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } network = { path = "../network", version = "0.1.0" } safety-rules = { path = "safety-rules", version = "0.1.0" } state-synchronizer = { path = "../state-synchronizer", version = "0.1.0" } @@ -60,13 +60,13 @@ tempfile = "3.1.0" consensus-types = { path = "consensus-types", version = "0.1.0", default-features = false, features = ["fuzzing"] } executor-test-helpers = { path = "../execution/executor-test-helpers", version = "0.1.0" } -libra-config = { path = "../config", version = "0.1.0", features = ["fuzzing"] } -libra-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } +diem-config = { path = "../config", version = "0.1.0", features = ["fuzzing"] } +diem-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } safety-rules = { path = "safety-rules", version = "0.1.0", features = ["testing"] } vm-genesis = { path = "../language/tools/vm-genesis", version = "0.1.0" } vm-validator = { path = "../vm-validator", version = "0.1.0" } [features] default = [] -fuzzing = ["proptest", "consensus-types/fuzzing", "libra-config/fuzzing", "libra-crypto/fuzzing", "libra-mempool/fuzzing", "libra-types/fuzzing", "safety-rules/testing"] +fuzzing = ["proptest", "consensus-types/fuzzing", "diem-config/fuzzing", "diem-crypto/fuzzing", "diem-mempool/fuzzing", "diem-types/fuzzing", "safety-rules/testing"] failpoints = ["fail/failpoints"] diff --git a/consensus/README.md b/consensus/README.md index 5cdb17c20f..7f56c4bed6 100644 --- a/consensus/README.md +++ b/consensus/README.md @@ -5,35 +5,35 @@ custom_edit_url: https://github.com/libra/libra/edit/master/consensus/README.md --- -The consensus component supports state machine replication using the LibraBFT consensus protocol. +The consensus component supports state machine replication using the DiemBFT consensus protocol. ## Overview -A consensus protocol allows a set of validators to create the logical appearance of a single database. The consensus protocol replicates submitted transactions among the validators, executes potential transactions against the current database, and then agrees on a binding commitment to the ordering of transactions and resulting execution. As a result, all validators can maintain an identical database for a given version number following the [state machine replication paradigm](https://dl.acm.org/citation.cfm?id=98167). The Libra protocol uses a variant of the [HotStuff consensus protocol](https://arxiv.org/pdf/1803.05069.pdf), a recent Byzantine fault-tolerant ([BFT](https://en.wikipedia.org/wiki/Byzantine_fault)) consensus protocol, called LibraBFT. It provides safety (all honest validators agree on commits and execution) and liveness (commits are continually produced) in the partial synchrony model defined in the paper "Consensus in the Presence of Partial Synchrony" by Dwork, Lynch, and Stockmeyer ([DLS](https://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf)) and mentioned in the paper ["Practical Byzantine Fault Tolerance" (PBFT)](http://pmg.csail.mit.edu/papers/osdi99.pdf) by Castro and Liskov, as well as newer protocols such as [Tendermint](https://arxiv.org/abs/1807.04938). In this document, we present a high-level description of the LibraBFT protocol and discuss how the code is organized. Refer to the [Libra Blockchain Paper](https://developers.libra.org/docs/the-libra-blockchain-paper) to learn more about how LibraBFT fits into the Libra protocol. For details on the specifications and proofs of LibraBFT, read the full [technical report](https://developers.libra.org/docs/state-machine-replication-paper). +A consensus protocol allows a set of validators to create the logical appearance of a single database. The consensus protocol replicates submitted transactions among the validators, executes potential transactions against the current database, and then agrees on a binding commitment to the ordering of transactions and resulting execution. As a result, all validators can maintain an identical database for a given version number following the [state machine replication paradigm](https://dl.acm.org/citation.cfm?id=98167). The Diem protocol uses a variant of the [HotStuff consensus protocol](https://arxiv.org/pdf/1803.05069.pdf), a recent Byzantine fault-tolerant ([BFT](https://en.wikipedia.org/wiki/Byzantine_fault)) consensus protocol, called DiemBFT. It provides safety (all honest validators agree on commits and execution) and liveness (commits are continually produced) in the partial synchrony model defined in the paper "Consensus in the Presence of Partial Synchrony" by Dwork, Lynch, and Stockmeyer ([DLS](https://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf)) and mentioned in the paper ["Practical Byzantine Fault Tolerance" (PBFT)](http://pmg.csail.mit.edu/papers/osdi99.pdf) by Castro and Liskov, as well as newer protocols such as [Tendermint](https://arxiv.org/abs/1807.04938). In this document, we present a high-level description of the DiemBFT protocol and discuss how the code is organized. Refer to the [Diem Blockchain Paper](https://developers.diem.com/docs/the-diem-blockchain-paper) to learn more about how DiemBFT fits into the Diem protocol. For details on the specifications and proofs of DiemBFT, read the full [technical report](https://developers.diem.com/docs/state-machine-replication-paper). Agreement on the database state must be reached between validators, even if there are Byzantine faults. The Byzantine failures model allows some validators to arbitrarily deviate from the protocol without constraint, with the exception of being computationally bound (and thus not able to break cryptographic assumptions). Byzantine faults are worst-case errors where validators collude and behave maliciously to try to sabotage system behavior. A consensus protocol that tolerates Byzantine faults caused by malicious or hacked validators can also mitigate arbitrary hardware and software failures. -LibraBFT assumes that a set of 3f + 1 votes is distributed among a set of validators that may be honest or Byzantine. LibraBFT remains safe, preventing attacks such as double spends and forks when at most f votes are controlled by Byzantine validators — also implying that at least 2f+1 votes are honest. LibraBFT remains live, committing transactions from clients, as long as there exists a global stabilization time (GST), after which all messages between honest validators are delivered to other honest validators within a maximal network delay $\Delta$ (this is the partial synchrony model introduced in [DLS](https://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf)). In addition to traditional guarantees, LibraBFT maintains safety when validators crash and restart — even if all validators restart at the same time. +DiemBFT assumes that a set of 3f + 1 votes is distributed among a set of validators that may be honest or Byzantine. DiemBFT remains safe, preventing attacks such as double spends and forks when at most f votes are controlled by Byzantine validators — also implying that at least 2f+1 votes are honest. DiemBFT remains live, committing transactions from clients, as long as there exists a global stabilization time (GST), after which all messages between honest validators are delivered to other honest validators within a maximal network delay $\Delta$ (this is the partial synchrony model introduced in [DLS](https://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf)). In addition to traditional guarantees, DiemBFT maintains safety when validators crash and restart — even if all validators restart at the same time. -### LibraBFT Overview +### DiemBFT Overview -In LibraBFT, validators receive transactions from clients and share them with each other through a shared mempool protocol. The LibraBFT protocol then proceeds in a sequence of rounds. In each round, a validator takes the role of leader and proposes a block of transactions to extend a certified sequence of blocks (see quorum certificates below) that contain the full previous transaction history. A validator receives the proposed block and checks their voting rules to determine if it should vote for certifying this block. These simple rules ensure the safety of LibraBFT — and their implementation can be cleanly separated and audited. If the validator intends to vote for this block, it executes the block’s transactions speculatively and without external effect. This results in the computation of an authenticator for the database that results from the execution of the block. The validator then sends a signed vote for the block and the database authenticator to the leader. The leader gathers these votes to form a quorum certificate that provides evidence of $\ge$ 2f + 1 votes for this block and broadcasts the quorum certificate to all validators. +In DiemBFT, validators receive transactions from clients and share them with each other through a shared mempool protocol. The DiemBFT protocol then proceeds in a sequence of rounds. In each round, a validator takes the role of leader and proposes a block of transactions to extend a certified sequence of blocks (see quorum certificates below) that contain the full previous transaction history. A validator receives the proposed block and checks their voting rules to determine if it should vote for certifying this block. These simple rules ensure the safety of DiemBFT — and their implementation can be cleanly separated and audited. If the validator intends to vote for this block, it executes the block’s transactions speculatively and without external effect. This results in the computation of an authenticator for the database that results from the execution of the block. The validator then sends a signed vote for the block and the database authenticator to the leader. The leader gathers these votes to form a quorum certificate that provides evidence of $\ge$ 2f + 1 votes for this block and broadcasts the quorum certificate to all validators. -A block is committed when a contiguous 3-chain commit rule is met. A block at round k is committed if it has a quorum certificate and is confirmed by two more blocks and quorum certificates at rounds k + 1 and k + 2. The commit rule eventually allows honest validators to commit a block. LibraBFT guarantees that all honest validators will eventually commit the block (and proceeding sequence of blocks linked from it). Once a sequence of blocks has committed, the state resulting from executing their transactions can be persisted and forms a replicated database. +A block is committed when a contiguous 3-chain commit rule is met. A block at round k is committed if it has a quorum certificate and is confirmed by two more blocks and quorum certificates at rounds k + 1 and k + 2. The commit rule eventually allows honest validators to commit a block. DiemBFT guarantees that all honest validators will eventually commit the block (and proceeding sequence of blocks linked from it). Once a sequence of blocks has committed, the state resulting from executing their transactions can be persisted and forms a replicated database. ### Advantages of the HotStuff Paradigm -We evaluated several BFT-based protocols against the dimensions of performance, reliability, security, ease of robust implementation, and operational overhead for validators. Our goal was to choose a protocol that would initially support at least 100 validators and would be able to evolve over time to support 500–1,000 validators. We had three reasons for selecting the HotStuff protocol as the basis for LibraBFT: (i) simplicity and modularity; (ii) ability to easily integrate consensus with execution; and (iii) promising performance in early experiments. +We evaluated several BFT-based protocols against the dimensions of performance, reliability, security, ease of robust implementation, and operational overhead for validators. Our goal was to choose a protocol that would initially support at least 100 validators and would be able to evolve over time to support 500–1,000 validators. We had three reasons for selecting the HotStuff protocol as the basis for DiemBFT: (i) simplicity and modularity; (ii) ability to easily integrate consensus with execution; and (iii) promising performance in early experiments. The HotStuff protocol decomposes into modules for safety (voting and commit rules) and liveness (round_state). This decoupling provides the ability to develop and experiment independently and on different modules in parallel. Due to the simple voting and commit rules, protocol safety is easy to implement and verify. It is straightforward to integrate execution as a part of consensus to avoid forking issues that arise from non-deterministic execution in a leader-based protocol. Finally, our early prototypes confirmed high throughput and low transaction latency as independently measured in [HotStuff]((https://arxiv.org/pdf/1803.05069.pdf)). We did not consider proof-of-work based protocols, such as [Bitcoin](https://bitcoin.org/bitcoin.pdf), due to their poor performance and high energy (and environmental) costs. ### HotStuff Extensions and Modifications -In LibraBFT, to better support the goals of the Libra ecosystem, we extend and adapt the core HotStuff protocol and implementation in several ways. Importantly, we reformulate the safety conditions and provide extended proofs of safety, liveness, and optimistic responsiveness. We also implement a number of additional features. First, we make the protocol more resistant to non-determinism bugs, by having validators collectively sign the resulting state of a block rather than just the sequence of transactions. This also allows clients to use quorum certificates to authenticate reads from the database. Second, we design a round_state that emits explicit timeouts, and validators rely on a quorum of those to move to the next round — without requiring synchronized clocks. Third, we intend to design an unpredictable leader election mechanism in which the leader of a round is determined by the proposer of the latest committed block using a verifiable random function [VRF](https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Pseudo%20Randomness/Verifiable_Random_Functions.pdf). This mechanism limits the window of time in which an adversary can launch an effective denial-of-service attack against a leader. Fourth, we use aggregate signatures that preserve the identity of validators who sign quorum certificates. This allows us to provide incentives to validators that contribute to quorum certificates. Aggregate signatures also do not require a complex [threshold key setup](https://www.cypherpunks.ca/~iang/pubs/DKG.pdf). +In DiemBFT, to better support the goals of the Diem ecosystem, we extend and adapt the core HotStuff protocol and implementation in several ways. Importantly, we reformulate the safety conditions and provide extended proofs of safety, liveness, and optimistic responsiveness. We also implement a number of additional features. First, we make the protocol more resistant to non-determinism bugs, by having validators collectively sign the resulting state of a block rather than just the sequence of transactions. This also allows clients to use quorum certificates to authenticate reads from the database. Second, we design a round_state that emits explicit timeouts, and validators rely on a quorum of those to move to the next round — without requiring synchronized clocks. Third, we intend to design an unpredictable leader election mechanism in which the leader of a round is determined by the proposer of the latest committed block using a verifiable random function [VRF](https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Pseudo%20Randomness/Verifiable_Random_Functions.pdf). This mechanism limits the window of time in which an adversary can launch an effective denial-of-service attack against a leader. Fourth, we use aggregate signatures that preserve the identity of validators who sign quorum certificates. This allows us to provide incentives to validators that contribute to quorum certificates. Aggregate signatures also do not require a complex [threshold key setup](https://www.cypherpunks.ca/~iang/pubs/DKG.pdf). ## Implementation Details diff --git a/consensus/consensus-types/Cargo.toml b/consensus/consensus-types/Cargo.toml index 63f911e946..3da3703fb8 100644 --- a/consensus/consensus-types/Cargo.toml +++ b/consensus/consensus-types/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "consensus-types" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] license = "Apache-2.0" publish = false edition = "2018" @@ -14,18 +14,18 @@ serde = { version = "1.0.117", default-features = false } executor-types = { path = "../../execution/executor-types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "libra-types/fuzzing", "libra-crypto/fuzzing"] +fuzzing = ["proptest", "diem-types/fuzzing", "diem-crypto/fuzzing"] diff --git a/consensus/consensus-types/src/block.rs b/consensus/consensus-types/src/block.rs index f190fa702a..89caa13e61 100644 --- a/consensus/consensus-types/src/block.rs +++ b/consensus/consensus-types/src/block.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,9 +7,9 @@ use crate::{ quorum_cert::QuorumCert, }; use anyhow::{bail, ensure, format_err}; -use libra_crypto::{ed25519::Ed25519Signature, hash::CryptoHash, HashValue}; -use libra_infallible::duration_since_epoch; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519Signature, hash::CryptoHash, HashValue}; +use diem_infallible::duration_since_epoch; +use diem_types::{ account_address::AccountAddress, block_info::BlockInfo, block_metadata::BlockMetadata, epoch_state::EpochState, ledger_info::LedgerInfo, transaction::Version, validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier, diff --git a/consensus/consensus-types/src/block_data.rs b/consensus/consensus-types/src/block_data.rs index 945de2a543..14d0825b2b 100644 --- a/consensus/consensus-types/src/block_data.rs +++ b/consensus/consensus-types/src/block_data.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,9 +6,9 @@ use crate::{ quorum_cert::QuorumCert, vote_data::VoteData, }; -use libra_crypto::hash::HashValue; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::{ +use diem_crypto::hash::HashValue; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::{ block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, }; diff --git a/consensus/consensus-types/src/block_retrieval.rs b/consensus/consensus-types/src/block_retrieval.rs index 4ffd7ba8d2..bac10d2e14 100644 --- a/consensus/consensus-types/src/block_retrieval.rs +++ b/consensus/consensus-types/src/block_retrieval.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::block::Block; use anyhow::ensure; -use libra_crypto::hash::HashValue; -use libra_types::validator_verifier::ValidatorVerifier; +use diem_crypto::hash::HashValue; +use diem_types::validator_verifier::ValidatorVerifier; use serde::{Deserialize, Serialize}; use std::fmt; diff --git a/consensus/consensus-types/src/block_test.rs b/consensus/consensus-types/src/block_test.rs index 80afd3f3b4..313554003b 100644 --- a/consensus/consensus-types/src/block_test.rs +++ b/consensus/consensus-types/src/block_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,8 +8,8 @@ use crate::{ }, quorum_cert::QuorumCert, }; -use libra_crypto::hash::HashValue; -use libra_types::{validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier}; +use diem_crypto::hash::HashValue; +use diem_types::{validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier}; use std::{collections::BTreeMap, panic, sync::Arc}; #[test] @@ -63,7 +63,7 @@ fn test_nil_block() { let nil_block_child = Block::new_proposal( payload, 2, - libra_infallible::duration_since_epoch().as_micros() as u64, + diem_infallible::duration_since_epoch().as_micros() as u64, nil_block_qc, &signer, ); @@ -82,7 +82,7 @@ fn test_block_relation() { let next_block = Block::new_proposal( payload.clone(), 1, - libra_infallible::duration_since_epoch().as_micros() as u64, + diem_infallible::duration_since_epoch().as_micros() as u64, quorum_cert, &signer, ); @@ -106,7 +106,7 @@ fn test_same_qc_different_authors() { let genesis_qc = certificate_for_genesis(); let round = 1; let payload = vec![]; - let current_timestamp = libra_infallible::duration_since_epoch().as_micros() as u64; + let current_timestamp = diem_infallible::duration_since_epoch().as_micros() as u64; let block_round_1 = Block::new_proposal( payload.clone(), round, diff --git a/consensus/consensus-types/src/block_test_utils.rs b/consensus/consensus-types/src/block_test_utils.rs index dfa8355f9d..b57da57584 100644 --- a/consensus/consensus-types/src/block_test_utils.rs +++ b/consensus/consensus-types/src/block_test_utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,11 +8,11 @@ use crate::{ quorum_cert::QuorumCert, vote_data::VoteData, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519PrivateKey, hash::{CryptoHash, HashValue}, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, @@ -42,7 +42,7 @@ prop_compose! { Block::new_proposal( vec![], round, - libra_infallible::duration_since_epoch().as_micros() as u64, + diem_infallible::duration_since_epoch().as_micros() as u64, parent_qc, &signer, ) @@ -87,7 +87,7 @@ prop_compose! { block.payload().unwrap().clone(), block.author().unwrap(), block.round(), - libra_infallible::duration_since_epoch().as_micros() as u64, + diem_infallible::duration_since_epoch().as_micros() as u64, block.quorum_cert().clone(), ), signature: Some(block.signature().unwrap().clone()), diff --git a/consensus/consensus-types/src/common.rs b/consensus/consensus-types/src/common.rs index 6953dcf250..12404ab336 100644 --- a/consensus/consensus-types/src/common.rs +++ b/consensus/consensus-types/src/common.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::{account_address::AccountAddress, transaction::SignedTransaction}; +use diem_types::{account_address::AccountAddress, transaction::SignedTransaction}; /// The round of a block is a consensus-internal counter, which starts with 0 and increases /// monotonically. It is used for the protocol safety and liveness (please see the detailed diff --git a/consensus/consensus-types/src/epoch_retrieval.rs b/consensus/consensus-types/src/epoch_retrieval.rs index b76f6f5134..f78e9fb5a9 100644 --- a/consensus/consensus-types/src/epoch_retrieval.rs +++ b/consensus/consensus-types/src/epoch_retrieval.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; diff --git a/consensus/consensus-types/src/executed_block.rs b/consensus/consensus-types/src/executed_block.rs index 39f2c127e7..840790cb63 100644 --- a/consensus/consensus-types/src/executed_block.rs +++ b/consensus/consensus-types/src/executed_block.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,9 +7,9 @@ use crate::{ quorum_cert::QuorumCert, vote_proposal::{MaybeSignedVoteProposal, VoteProposal}, }; +use diem_crypto::hash::HashValue; +use diem_types::block_info::BlockInfo; use executor_types::StateComputeResult; -use libra_crypto::hash::HashValue; -use libra_types::block_info::BlockInfo; use std::fmt::{Debug, Display, Formatter}; /// ExecutedBlocks are managed in a speculative tree, the committed blocks form a chain. Besides diff --git a/consensus/consensus-types/src/lib.rs b/consensus/consensus-types/src/lib.rs index b34450a13c..093508abbf 100644 --- a/consensus/consensus-types/src/lib.rs +++ b/consensus/consensus-types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/consensus/consensus-types/src/proposal_msg.rs b/consensus/consensus-types/src/proposal_msg.rs index 28e0f273b8..25ad31b5c5 100644 --- a/consensus/consensus-types/src/proposal_msg.rs +++ b/consensus/consensus-types/src/proposal_msg.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{block::Block, common::Author, sync_info::SyncInfo}; use anyhow::{ensure, format_err, Context, Result}; -use libra_types::validator_verifier::ValidatorVerifier; +use diem_types::validator_verifier::ValidatorVerifier; use serde::{Deserialize, Serialize}; use std::fmt; diff --git a/consensus/consensus-types/src/quorum_cert.rs b/consensus/consensus-types/src/quorum_cert.rs index 77332a2262..abd1a33af9 100644 --- a/consensus/consensus-types/src/quorum_cert.rs +++ b/consensus/consensus-types/src/quorum_cert.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::vote_data::VoteData; use anyhow::{ensure, Context}; -use libra_crypto::{hash::CryptoHash, HashValue}; -use libra_types::{ +use diem_crypto::{hash::CryptoHash, HashValue}; +use diem_types::{ block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, validator_verifier::ValidatorVerifier, diff --git a/consensus/consensus-types/src/safety_data.rs b/consensus/consensus-types/src/safety_data.rs index 67036f95c0..0ef3c73170 100644 --- a/consensus/consensus-types/src/safety_data.rs +++ b/consensus/consensus-types/src/safety_data.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::vote::Vote; diff --git a/consensus/consensus-types/src/sync_info.rs b/consensus/consensus-types/src/sync_info.rs index cdbdf158eb..e7e3408dc5 100644 --- a/consensus/consensus-types/src/sync_info.rs +++ b/consensus/consensus-types/src/sync_info.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{common::Round, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate}; use anyhow::{ensure, Context}; -use libra_types::{block_info::BlockInfo, validator_verifier::ValidatorVerifier}; +use diem_types::{block_info::BlockInfo, validator_verifier::ValidatorVerifier}; use serde::{Deserialize, Serialize}; use std::fmt::{Debug, Display, Formatter}; diff --git a/consensus/consensus-types/src/timeout.rs b/consensus/consensus-types/src/timeout.rs index 3b3b0aa93e..49203fba5a 100644 --- a/consensus/consensus-types/src/timeout.rs +++ b/consensus/consensus-types/src/timeout.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common::Round; -use libra_crypto::ed25519::Ed25519Signature; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::ed25519::Ed25519Signature; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::validator_signer::ValidatorSigner; use serde::{Deserialize, Serialize}; use std::fmt::{Display, Formatter}; diff --git a/consensus/consensus-types/src/timeout_certificate.rs b/consensus/consensus-types/src/timeout_certificate.rs index e62de72fe4..152a1253ab 100644 --- a/consensus/consensus-types/src/timeout_certificate.rs +++ b/consensus/consensus-types/src/timeout_certificate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,8 +6,8 @@ use crate::{ timeout::Timeout, }; use anyhow::Context; -use libra_crypto::ed25519::Ed25519Signature; -use libra_types::validator_verifier::ValidatorVerifier; +use diem_crypto::ed25519::Ed25519Signature; +use diem_types::validator_verifier::ValidatorVerifier; use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fmt}; diff --git a/consensus/consensus-types/src/vote.rs b/consensus/consensus-types/src/vote.rs index 9536e52fd5..ba41c9162b 100644 --- a/consensus/consensus-types/src/vote.rs +++ b/consensus/consensus-types/src/vote.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{common::Author, timeout::Timeout, vote_data::VoteData}; use anyhow::{ensure, Context}; -use libra_crypto::{ed25519::Ed25519Signature, hash::CryptoHash}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519Signature, hash::CryptoHash}; +use diem_types::{ ledger_info::LedgerInfo, validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier, }; diff --git a/consensus/consensus-types/src/vote_data.rs b/consensus/consensus-types/src/vote_data.rs index 6178b87f37..b6e400918b 100644 --- a/consensus/consensus-types/src/vote_data.rs +++ b/consensus/consensus-types/src/vote_data.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::block_info::BlockInfo; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::block_info::BlockInfo; use serde::{Deserialize, Serialize}; use std::fmt::{Display, Formatter}; diff --git a/consensus/consensus-types/src/vote_msg.rs b/consensus/consensus-types/src/vote_msg.rs index f9e063871e..10c3772fda 100644 --- a/consensus/consensus-types/src/vote_msg.rs +++ b/consensus/consensus-types/src/vote_msg.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{sync_info::SyncInfo, vote::Vote}; use anyhow::ensure; -use libra_crypto::HashValue; -use libra_types::validator_verifier::ValidatorVerifier; +use diem_crypto::HashValue; +use diem_types::validator_verifier::ValidatorVerifier; use serde::{Deserialize, Serialize}; use std::fmt::{Display, Formatter}; diff --git a/consensus/consensus-types/src/vote_proposal.rs b/consensus/consensus-types/src/vote_proposal.rs index 486c4db561..ccbeda798c 100644 --- a/consensus/consensus-types/src/vote_proposal.rs +++ b/consensus/consensus-types/src/vote_proposal.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::block::Block; -use libra_crypto::{ed25519::Ed25519Signature, hash::TransactionAccumulatorHasher}; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::{epoch_state::EpochState, proof::AccumulatorExtensionProof}; +use diem_crypto::{ed25519::Ed25519Signature, hash::TransactionAccumulatorHasher}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::{epoch_state::EpochState, proof::AccumulatorExtensionProof}; use serde::{Deserialize, Serialize}; use std::{ fmt::{Display, Formatter}, @@ -65,7 +65,7 @@ pub struct MaybeSignedVoteProposal { /// The vote proposal to be signed. pub vote_proposal: VoteProposal, - /// The signature of this proposal's hash from Libra Execution Correctness service. It is + /// The signature of this proposal's hash from Diem Execution Correctness service. It is /// an `Option` because the LEC can be configured to not sign the vote hash. pub signature: Option, } diff --git a/consensus/safety-rules/Cargo.toml b/consensus/safety-rules/Cargo.toml index feae586701..d442fb60fc 100644 --- a/consensus/safety-rules/Cargo.toml +++ b/consensus/safety-rules/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "safety-rules" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] license = "Apache-2.0" publish = false edition = "2018" @@ -15,19 +15,19 @@ rand_core = "0.5.1" crash-handler = { path = "../../common/crash-handler", version = "0.1.0" } consensus-types = { path = "../consensus-types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0"} -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-vault-client = { path = "../../secure/storage/vault", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0"} +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-vault-client = { path = "../../secure/storage/vault", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } serde = { version = "1.0.117", default-features = false } thiserror = "1.0.22" @@ -37,9 +37,9 @@ tempfile = "3.1.0" proptest = "0.10.1" consensus-types = { path = "../consensus-types", version = "0.1.0", features = ["fuzzing"] } -libra-config = { path = "../../config", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } +diem-config = { path = "../../config", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } [[bench]] name = "safety_rules" @@ -52,5 +52,5 @@ required-features = ["testing"] [features] default = [] -fuzzing = ["consensus-types/fuzzing", "libra-config/fuzzing", "proptest", "libra-proptest-helpers"] -testing = ["libra-secure-storage/testing"] +fuzzing = ["consensus-types/fuzzing", "diem-config/fuzzing", "proptest", "diem-proptest-helpers"] +testing = ["diem-secure-storage/testing"] diff --git a/consensus/safety-rules/benches/safety_rules.rs b/consensus/safety-rules/benches/safety_rules.rs index 2416113d34..bab276272c 100644 --- a/consensus/safety-rules/benches/safety_rules.rs +++ b/consensus/safety-rules/benches/safety_rules.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::block::block_test_utils; use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_secure_storage::{InMemoryStorage, KVStorage, OnDiskStorage, Storage, VaultStorage}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_secure_storage::{InMemoryStorage, KVStorage, OnDiskStorage, Storage, VaultStorage}; +use diem_types::validator_signer::ValidatorSigner; use safety_rules::{test_utils, PersistentSafetyStorage, SafetyRulesManager, TSafetyRules}; use tempfile::NamedTempFile; diff --git a/consensus/safety-rules/src/configurable_validator_signer.rs b/consensus/safety-rules/src/configurable_validator_signer.rs index 617820aeb0..f7ee1a7415 100644 --- a/consensus/safety-rules/src/configurable_validator_signer.rs +++ b/consensus/safety-rules/src/configurable_validator_signer.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{Error, PersistentSafetyStorage}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, }; -use libra_global_constants::CONSENSUS_KEY; -use libra_types::{account_address::AccountAddress, validator_signer::ValidatorSigner}; +use diem_global_constants::CONSENSUS_KEY; +use diem_types::{account_address::AccountAddress, validator_signer::ValidatorSigner}; use serde::Serialize; /// A ConfigurableValidatorSigner is a ValidatorSigner wrapper that offers either diff --git a/consensus/safety-rules/src/consensus_state.rs b/consensus/safety-rules/src/consensus_state.rs index 8a03f5778d..5c6b514106 100644 --- a/consensus/safety-rules/src/consensus_state.rs +++ b/consensus/safety-rules/src/consensus_state.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::{common::Round, safety_data::SafetyData}; -use libra_types::waypoint::Waypoint; +use diem_types::waypoint::Waypoint; use serde::{Deserialize, Serialize}; use std::fmt::{Display, Formatter}; diff --git a/consensus/safety-rules/src/counters.rs b/consensus/safety-rules/src/counters.rs index c5006dc20a..86547b9bc2 100644 --- a/consensus/safety-rules/src/counters.rs +++ b/consensus/safety-rules/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_secure_push_metrics::{ +use diem_secure_push_metrics::{ register_histogram_vec, register_int_counter_vec, register_int_gauge_vec, HistogramTimer, HistogramVec, IntCounterVec, IntGaugeVec, }; @@ -9,7 +9,7 @@ use once_cell::sync::Lazy; pub static LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_safety_rules_latency", + "diem_safety_rules_latency", "Time to perform an operation", &["source", "field"] ) @@ -18,7 +18,7 @@ pub static LATENCY: Lazy = Lazy::new(|| { static QUERY_COUNTER: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_safety_rules_queries", + "diem_safety_rules_queries", "Outcome of calling into LSR", &["method", "result"] ) @@ -27,7 +27,7 @@ static QUERY_COUNTER: Lazy = Lazy::new(|| { static STATE_GAUGE: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_safety_rules_state", + "diem_safety_rules_state", "Current internal state of LSR", &["field"] ) diff --git a/consensus/safety-rules/src/error.rs b/consensus/safety-rules/src/error.rs index 7896d56d00..0ce4de315b 100644 --- a/consensus/safety-rules/src/error.rs +++ b/consensus/safety-rules/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; @@ -49,16 +49,16 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_secure_net::Error) -> Self { +impl From for Error { + fn from(error: diem_secure_net::Error) -> Self { Self::InternalError(error.to_string()) } } -impl From for Error { - fn from(error: libra_secure_storage::Error) -> Self { +impl From for Error { + fn from(error: diem_secure_storage::Error) -> Self { match error { - libra_secure_storage::Error::PermissionDenied => { + diem_secure_storage::Error::PermissionDenied => { // If a storage error is thrown that indicates a permission failure, we // want to panic immediately to alert an operator that something has gone // wrong. For example, this error is thrown when a storage (e.g., vault) @@ -69,8 +69,8 @@ impl From for Error { error ); } - libra_secure_storage::Error::KeyVersionNotFound(_, _) - | libra_secure_storage::Error::KeyNotSet(_) => { + diem_secure_storage::Error::KeyVersionNotFound(_, _) + | diem_secure_storage::Error::KeyNotSet(_) => { Self::SecureStorageMissingDataError(error.to_string()) } _ => Self::SecureStorageUnexpectedError(error.to_string()), diff --git a/consensus/safety-rules/src/fuzzing_utils.rs b/consensus/safety-rules/src/fuzzing_utils.rs index 9fa913103e..0439e574f1 100644 --- a/consensus/safety-rules/src/fuzzing_utils.rs +++ b/consensus/safety-rules/src/fuzzing_utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::serializer::SafetyRulesInput; @@ -10,13 +10,13 @@ use consensus_types::{ vote_data::VoteData, vote_proposal::{MaybeSignedVoteProposal, VoteProposal}, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, hash::{HashValue, TransactionAccumulatorHasher}, test_utils::TEST_SEED, traits::{SigningKey, Uniform}, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, epoch_change::EpochChangeProof, epoch_state::EpochState, @@ -251,8 +251,8 @@ pub mod fuzzing { block::Block, block_data::BlockData, timeout::Timeout, vote::Vote, vote_proposal::MaybeSignedVoteProposal, }; - use libra_crypto::ed25519::Ed25519Signature; - use libra_types::epoch_change::EpochChangeProof; + use diem_crypto::ed25519::Ed25519Signature; + use diem_types::epoch_change::EpochChangeProof; pub fn fuzz_initialize(proof: EpochChangeProof) -> Result<(), Error> { let mut safety_rules = test_utils::test_safety_rules_uninitialized(); diff --git a/consensus/safety-rules/src/lib.rs b/consensus/safety-rules/src/lib.rs index 35924d29a6..2d6fea1a1a 100644 --- a/consensus/safety-rules/src/lib.rs +++ b/consensus/safety-rules/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/consensus/safety-rules/src/local_client.rs b/consensus/safety-rules/src/local_client.rs index d3ba4a28be..9b8cebed37 100644 --- a/consensus/safety-rules/src/local_client.rs +++ b/consensus/safety-rules/src/local_client.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ConsensusState, Error, SafetyRules, TSafetyRules}; @@ -6,9 +6,9 @@ use consensus_types::{ block::Block, block_data::BlockData, timeout::Timeout, vote::Vote, vote_proposal::MaybeSignedVoteProposal, }; -use libra_crypto::ed25519::Ed25519Signature; -use libra_infallible::RwLock; -use libra_types::epoch_change::EpochChangeProof; +use diem_crypto::ed25519::Ed25519Signature; +use diem_infallible::RwLock; +use diem_types::epoch_change::EpochChangeProof; use std::sync::Arc; /// A local interface into SafetyRules. Constructed in such a way that the container / caller diff --git a/consensus/safety-rules/src/logging.rs b/consensus/safety-rules/src/logging.rs index f00975b635..0879c90c04 100644 --- a/consensus/safety-rules/src/logging.rs +++ b/consensus/safety-rules/src/logging.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Error; use consensus_types::common::{Author, Round}; -use libra_logger::Schema; -use libra_types::waypoint::Waypoint; +use diem_logger::Schema; +use diem_types::waypoint::Waypoint; use serde::Serialize; #[derive(Schema)] diff --git a/consensus/safety-rules/src/main.rs b/consensus/safety-rules/src/main.rs index cda727a6a2..a13f289bba 100644 --- a/consensus/safety-rules/src/main.rs +++ b/consensus/safety-rules/src/main.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Usage: ./safety-rules node.config #![forbid(unsafe_code)] -use libra_config::config::{PersistableConfig, SafetyRulesConfig}; -use libra_secure_push_metrics::MetricsPusher; +use diem_config::config::{PersistableConfig, SafetyRulesConfig}; +use diem_secure_push_metrics::MetricsPusher; use safety_rules::Process; use std::{env, process}; @@ -23,14 +23,14 @@ fn main() { process::exit(1); }); - libra_logger::Logger::new() + diem_logger::Logger::new() .channel_size(config.logger.chan_size) .is_async(config.logger.is_async) .level(config.logger.level) .read_env() .init(); - libra_logger::info!(config = config, "Loaded SafetyRules config"); + diem_logger::info!(config = config, "Loaded SafetyRules config"); crash_handler::setup_panic_handler(); let _mp = MetricsPusher::start(); diff --git a/consensus/safety-rules/src/persistent_safety_storage.rs b/consensus/safety-rules/src/persistent_safety_storage.rs index 0a7e436f80..91c9931338 100644 --- a/consensus/safety-rules/src/persistent_safety_storage.rs +++ b/consensus/safety-rules/src/persistent_safety_storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,14 +7,14 @@ use crate::{ Error, }; use consensus_types::{common::Author, safety_data::SafetyData}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, }; -use libra_global_constants::{CONSENSUS_KEY, EXECUTION_KEY, OWNER_ACCOUNT, SAFETY_DATA, WAYPOINT}; -use libra_logger::prelude::*; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage}; -use libra_types::waypoint::Waypoint; +use diem_global_constants::{CONSENSUS_KEY, EXECUTION_KEY, OWNER_ACCOUNT, SAFETY_DATA, WAYPOINT}; +use diem_logger::prelude::*; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage}; +use diem_types::waypoint::Waypoint; use serde::Serialize; /// SafetyRules needs an abstract storage interface to act as a common utility for storing @@ -73,7 +73,7 @@ impl PersistentSafetyStorage { // inconsistencies or why they did not reset storage between rounds. Do not repeat the // checks again below, because it is just too strange to have a partially configured // storage. - if let Err(libra_secure_storage::Error::KeyAlreadyExists(_)) = result { + if let Err(diem_secure_storage::Error::KeyAlreadyExists(_)) = result { warn!("Attempted to re-initialize existing storage"); return Ok(()); } @@ -186,9 +186,9 @@ impl PersistentSafetyStorage { #[cfg(test)] mod tests { use super::*; - use libra_crypto::Uniform; - use libra_secure_storage::InMemoryStorage; - use libra_types::validator_signer::ValidatorSigner; + use diem_crypto::Uniform; + use diem_secure_storage::InMemoryStorage; + use diem_types::validator_signer::ValidatorSigner; #[test] fn test() { diff --git a/consensus/safety-rules/src/process.rs b/consensus/safety-rules/src/process.rs index 88480f46d3..4f015aa768 100644 --- a/consensus/safety-rules/src/process.rs +++ b/consensus/safety-rules/src/process.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ remote_service::{self, RemoteService}, safety_rules_manager, }; -use libra_config::config::{SafetyRulesConfig, SafetyRulesService}; +use diem_config::config::{SafetyRulesConfig, SafetyRulesService}; use std::net::SocketAddr; diff --git a/consensus/safety-rules/src/remote_service.rs b/consensus/safety-rules/src/remote_service.rs index 59138ae056..461774d6bd 100644 --- a/consensus/safety-rules/src/remote_service.rs +++ b/consensus/safety-rules/src/remote_service.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,8 +6,8 @@ use crate::{ serializer::{SafetyRulesInput, SerializerClient, SerializerService, TSerializerClient}, Error, SafetyRules, TSafetyRules, }; -use libra_logger::warn; -use libra_secure_net::{NetworkClient, NetworkServer}; +use diem_logger::warn; +use diem_secure_net::{NetworkClient, NetworkServer}; use std::net::SocketAddr; pub trait RemoteService { diff --git a/consensus/safety-rules/src/safety_rules.rs b/consensus/safety-rules/src/safety_rules.rs index 9f63cc8161..fca6190895 100644 --- a/consensus/safety-rules/src/safety_rules.rs +++ b/consensus/safety-rules/src/safety_rules.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -21,13 +21,13 @@ use consensus_types::{ vote_data::VoteData, vote_proposal::{MaybeSignedVoteProposal, VoteProposal}, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PublicKey, Ed25519Signature}, hash::{CryptoHash, HashValue}, traits::Signature, }; -use libra_logger::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_types::{ block_info::BlockInfo, epoch_change::EpochChangeProof, epoch_state::EpochState, ledger_info::LedgerInfo, waypoint::Waypoint, }; diff --git a/consensus/safety-rules/src/safety_rules_manager.rs b/consensus/safety-rules/src/safety_rules_manager.rs index 1d7f172bcc..b437990ca2 100644 --- a/consensus/safety-rules/src/safety_rules_manager.rs +++ b/consensus/safety-rules/src/safety_rules_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,9 +10,9 @@ use crate::{ thread::ThreadService, SafetyRules, TSafetyRules, }; -use libra_config::config::{SafetyRulesConfig, SafetyRulesService}; -use libra_infallible::RwLock; -use libra_secure_storage::{KVStorage, Storage}; +use diem_config::config::{SafetyRulesConfig, SafetyRulesService}; +use diem_infallible::RwLock; +use diem_secure_storage::{KVStorage, Storage}; use std::{convert::TryInto, net::SocketAddr, sync::Arc}; pub fn storage(config: &SafetyRulesConfig) -> PersistentSafetyStorage { diff --git a/consensus/safety-rules/src/serializer.rs b/consensus/safety-rules/src/serializer.rs index 2502a94d6b..c713d18e26 100644 --- a/consensus/safety-rules/src/serializer.rs +++ b/consensus/safety-rules/src/serializer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{counters, logging::LogEntry, ConsensusState, Error, SafetyRules, TSafetyRules}; @@ -6,9 +6,9 @@ use consensus_types::{ block::Block, block_data::BlockData, timeout::Timeout, vote::Vote, vote_proposal::MaybeSignedVoteProposal, }; -use libra_crypto::ed25519::Ed25519Signature; -use libra_infallible::RwLock; -use libra_types::epoch_change::EpochChangeProof; +use diem_crypto::ed25519::Ed25519Signature; +use diem_infallible::RwLock; +use diem_types::epoch_change::EpochChangeProof; use serde::{Deserialize, Serialize}; use std::sync::Arc; diff --git a/consensus/safety-rules/src/t_safety_rules.rs b/consensus/safety-rules/src/t_safety_rules.rs index 38e425bd96..9b44e6fa27 100644 --- a/consensus/safety-rules/src/t_safety_rules.rs +++ b/consensus/safety-rules/src/t_safety_rules.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ConsensusState, Error}; @@ -6,8 +6,8 @@ use consensus_types::{ block::Block, block_data::BlockData, timeout::Timeout, vote::Vote, vote_proposal::MaybeSignedVoteProposal, }; -use libra_crypto::ed25519::Ed25519Signature; -use libra_types::epoch_change::EpochChangeProof; +use diem_crypto::ed25519::Ed25519Signature; +use diem_types::epoch_change::EpochChangeProof; /// Interface for SafetyRules pub trait TSafetyRules { diff --git a/consensus/safety-rules/src/test_utils.rs b/consensus/safety-rules/src/test_utils.rs index 6b8b71396d..757b3f9c1d 100644 --- a/consensus/safety-rules/src/test_utils.rs +++ b/consensus/safety-rules/src/test_utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -14,15 +14,15 @@ use consensus_types::{ vote_data::VoteData, vote_proposal::{MaybeSignedVoteProposal, VoteProposal}, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519PrivateKey, hash::{CryptoHash, TransactionAccumulatorHasher}, traits::SigningKey, Uniform, }; -use libra_infallible::duration_since_epoch; -use libra_secure_storage::{InMemoryStorage, Storage}; -use libra_types::{ +use diem_infallible::duration_since_epoch; +use diem_secure_storage::{InMemoryStorage, Storage}; +use diem_types::{ block_info::BlockInfo, epoch_change::EpochChangeProof, epoch_state::EpochState, diff --git a/consensus/safety-rules/src/tests/local.rs b/consensus/safety-rules/src/tests/local.rs index 49f8ff00b4..7f81565ef3 100644 --- a/consensus/safety-rules/src/tests/local.rs +++ b/consensus/safety-rules/src/tests/local.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, tests::suite, SafetyRulesManager}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test() { diff --git a/consensus/safety-rules/src/tests/mod.rs b/consensus/safety-rules/src/tests/mod.rs index 07afe357a8..049118857a 100644 --- a/consensus/safety-rules/src/tests/mod.rs +++ b/consensus/safety-rules/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod local; diff --git a/consensus/safety-rules/src/tests/networking.rs b/consensus/safety-rules/src/tests/networking.rs index c1aaa96971..85606364c7 100644 --- a/consensus/safety-rules/src/tests/networking.rs +++ b/consensus/safety-rules/src/tests/networking.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, SafetyRulesManager}; -use libra_types::validator_signer::ValidatorSigner; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test_reconnect() { diff --git a/consensus/safety-rules/src/tests/safety_rules.rs b/consensus/safety-rules/src/tests/safety_rules.rs index 46defe3e06..9773da8d38 100644 --- a/consensus/safety-rules/src/tests/safety_rules.rs +++ b/consensus/safety-rules/src/tests/safety_rules.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, tests::suite, SafetyRules}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test() { diff --git a/consensus/safety-rules/src/tests/serializer.rs b/consensus/safety-rules/src/tests/serializer.rs index d25a1c8271..1a91cfb4a5 100644 --- a/consensus/safety-rules/src/tests/serializer.rs +++ b/consensus/safety-rules/src/tests/serializer.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, tests::suite, SafetyRulesManager}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test() { diff --git a/consensus/safety-rules/src/tests/suite.rs b/consensus/safety-rules/src/tests/suite.rs index 1f685b654f..da001973d9 100644 --- a/consensus/safety-rules/src/tests/suite.rs +++ b/consensus/safety-rules/src/tests/suite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, Error, SafetyRules, TSafetyRules}; @@ -6,13 +6,13 @@ use consensus_types::{ block::block_test_utils::random_payload, common::Round, quorum_cert::QuorumCert, timeout::Timeout, vote_proposal::MaybeSignedVoteProposal, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519PrivateKey, hash::{CryptoHash, HashValue}, }; -use libra_global_constants::CONSENSUS_KEY; -use libra_secure_storage::CryptoStorage; -use libra_types::{ +use diem_global_constants::CONSENSUS_KEY; +use diem_secure_storage::CryptoStorage; +use diem_types::{ epoch_state::EpochState, validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier, }; diff --git a/consensus/safety-rules/src/tests/thread.rs b/consensus/safety-rules/src/tests/thread.rs index 8530907eeb..417a8d314d 100644 --- a/consensus/safety-rules/src/tests/thread.rs +++ b/consensus/safety-rules/src/tests/thread.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{test_utils, tests::suite, SafetyRulesManager}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_types::validator_signer::ValidatorSigner; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test() { diff --git a/consensus/safety-rules/src/tests/vault.rs b/consensus/safety-rules/src/tests/vault.rs index e3e87c0156..aaed4b9646 100644 --- a/consensus/safety-rules/src/tests/vault.rs +++ b/consensus/safety-rules/src/tests/vault.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{tests::suite, PersistentSafetyStorage, SafetyRulesManager}; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_secure_storage::{KVStorage, Storage, VaultStorage}; -use libra_types::validator_signer::ValidatorSigner; -use libra_vault_client::dev::{self, ROOT_TOKEN}; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_secure_storage::{KVStorage, Storage, VaultStorage}; +use diem_types::validator_signer::ValidatorSigner; +use diem_vault_client::dev::{self, ROOT_TOKEN}; /// A test for verifying VaultStorage properly supports the SafetyRule backend. This test /// depends on running Vault, which can be done by using the provided docker run script in diff --git a/consensus/safety-rules/src/thread.rs b/consensus/safety-rules/src/thread.rs index 2dd6600d22..c0ad5fc0f2 100644 --- a/consensus/safety-rules/src/thread.rs +++ b/consensus/safety-rules/src/thread.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This provides a execution separation between SafetyRules and Consensus without requiring the @@ -11,7 +11,7 @@ use crate::{ persistent_safety_storage::PersistentSafetyStorage, remote_service::{self, RemoteService}, }; -use libra_config::utils; +use diem_config::utils; use std::{ net::{IpAddr, Ipv4Addr, SocketAddr}, thread::{self, JoinHandle}, diff --git a/consensus/safety-rules/tests/binary.rs b/consensus/safety-rules/tests/binary.rs index 4412da0ed0..6a6fd2da85 100644 --- a/consensus/safety-rules/tests/binary.rs +++ b/consensus/safety-rules/tests/binary.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_config::{ +use diem_config::{ config::{NodeConfig, PersistableConfig, RemoteService, SafetyRulesService}, utils, }; -use libra_types::validator_signer::ValidatorSigner; +use diem_types::validator_signer::ValidatorSigner; use safety_rules::{test_utils, SafetyRulesManager}; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; @@ -24,7 +24,7 @@ fn test_consensus_state() { let server_address = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), server_port).into(); config.service = SafetyRulesService::Process(RemoteService { server_address }); - let config_path = libra_temppath::TempPath::new(); + let config_path = diem_temppath::TempPath::new(); config_path.create_as_file().unwrap(); config.save_config(config_path.path()).unwrap(); diff --git a/consensus/src/block_storage/block_store.rs b/consensus/src/block_storage/block_store.rs index d45dec2f91..aaf5cf9d83 100644 --- a/consensus/src/block_storage/block_store.rs +++ b/consensus/src/block_storage/block_store.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -20,12 +20,12 @@ use consensus_types::{ block::Block, executed_block::ExecutedBlock, quorum_cert::QuorumCert, sync_info::SyncInfo, timeout_certificate::TimeoutCertificate, }; +use diem_crypto::HashValue; +use diem_infallible::RwLock; +use diem_logger::prelude::*; +use diem_trace::prelude::*; +use diem_types::{ledger_info::LedgerInfoWithSignatures, transaction::TransactionStatus}; use executor_types::{Error, StateComputeResult}; -use libra_crypto::HashValue; -use libra_infallible::RwLock; -use libra_logger::prelude::*; -use libra_trace::prelude::*; -use libra_types::{ledger_info::LedgerInfoWithSignatures, transaction::TransactionStatus}; use std::{collections::vec_deque::VecDeque, sync::Arc, time::Duration}; #[cfg(test)] diff --git a/consensus/src/block_storage/block_store_and_lec_recovery_test.rs b/consensus/src/block_storage/block_store_and_lec_recovery_test.rs index 2f10b85233..db5b13155a 100644 --- a/consensus/src/block_storage/block_store_and_lec_recovery_test.rs +++ b/consensus/src/block_storage/block_store_and_lec_recovery_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,13 +9,13 @@ use crate::{ util::mock_time_service::SimulatedTimeService, }; use consensus_types::{block::Block, quorum_cert::QuorumCert}; +use diem_config::config::NodeConfig; +use diem_crypto::{ed25519::Ed25519PrivateKey, Uniform}; +use diem_types::validator_signer::ValidatorSigner; use execution_correctness::{ExecutionCorrectness, ExecutionCorrectnessManager}; use executor_test_helpers::start_storage_service; use executor_types::ExecutedTrees; use futures::channel::mpsc; -use libra_config::config::NodeConfig; -use libra_crypto::{ed25519::Ed25519PrivateKey, Uniform}; -use libra_types::validator_signer::ValidatorSigner; use state_synchronizer::StateSyncClient; use std::sync::Arc; use storage_interface::DbReader; diff --git a/consensus/src/block_storage/block_store_test.rs b/consensus/src/block_storage/block_store_test.rs index 6b50887cfc..44032bab42 100644 --- a/consensus/src/block_storage/block_store_test.rs +++ b/consensus/src/block_storage/block_store_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -18,8 +18,8 @@ use consensus_types::{ vote::Vote, vote_data::VoteData, }; -use libra_crypto::{HashValue, PrivateKey}; -use libra_types::{ +use diem_crypto::{HashValue, PrivateKey}; +use diem_types::{ validator_signer::ValidatorSigner, validator_verifier::random_validator_verifier, }; use proptest::prelude::*; @@ -109,7 +109,7 @@ proptest! { // recursion depth 50) ){ - let authors: HashSet = private_keys.iter().map(|private_key| libra_types::account_address::from_public_key(&private_key.public_key())).collect(); + let authors: HashSet = private_keys.iter().map(|private_key| diem_types::account_address::from_public_key(&private_key.public_key())).collect(); let block_store = build_empty_tree(); for block in blocks { if block.round() > 0 && authors.contains(&block.author().unwrap()) { @@ -248,7 +248,7 @@ fn test_path_from_root() { #[test] fn test_insert_vote() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // Set up enough different authors to support different votes for the same block. let (signers, validator_verifier) = random_validator_verifier(11, Some(10), false); let my_signer = signers[10].clone(); diff --git a/consensus/src/block_storage/block_tree.rs b/consensus/src/block_storage/block_tree.rs index 3d0725bbdf..b0d07f9a13 100644 --- a/consensus/src/block_storage/block_tree.rs +++ b/consensus/src/block_storage/block_tree.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::counters; @@ -6,8 +6,8 @@ use anyhow::bail; use consensus_types::{ executed_block::ExecutedBlock, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate, }; -use libra_crypto::HashValue; -use libra_logger::prelude::*; +use diem_crypto::HashValue; +use diem_logger::prelude::*; use mirai_annotations::{checked_verify_eq, precondition}; use std::{ collections::{vec_deque::VecDeque, HashMap, HashSet}, diff --git a/consensus/src/block_storage/mod.rs b/consensus/src/block_storage/mod.rs index 51c775c977..ebd51e8a60 100644 --- a/consensus/src/block_storage/mod.rs +++ b/consensus/src/block_storage/mod.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::{ executed_block::ExecutedBlock, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate, }; -use libra_crypto::HashValue; +use diem_crypto::HashValue; use std::sync::Arc; mod block_store; diff --git a/consensus/src/block_storage/sync_manager.rs b/consensus/src/block_storage/sync_manager.rs index 1bac3dd984..8751479a2e 100644 --- a/consensus/src/block_storage/sync_manager.rs +++ b/consensus/src/block_storage/sync_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -17,8 +17,8 @@ use consensus_types::{ quorum_cert::QuorumCert, sync_info::SyncInfo, }; -use libra_logger::prelude::*; -use libra_types::{account_address::AccountAddress, epoch_change::EpochChangeProof}; +use diem_logger::prelude::*; +use diem_types::{account_address::AccountAddress, epoch_change::EpochChangeProof}; use mirai_annotations::checked_precondition; use rand::{prelude::*, Rng}; use std::{clone::Clone, sync::Arc, time::Duration}; diff --git a/consensus/src/block_storage/tracing.rs b/consensus/src/block_storage/tracing.rs index 0e7a677bb3..842b96dbfd 100644 --- a/consensus/src/block_storage/tracing.rs +++ b/consensus/src/block_storage/tracing.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::counters; -use libra_infallible::duration_since_epoch; +use diem_infallible::duration_since_epoch; use std::time::Duration; pub struct BlockStage; diff --git a/consensus/src/consensus_provider.rs b/consensus/src/consensus_provider.rs index 1b9d44fad5..5c04e51925 100644 --- a/consensus/src/consensus_provider.rs +++ b/consensus/src/consensus_provider.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,13 +11,13 @@ use crate::{ txn_manager::MempoolProxy, util::time_service::ClockTimeService, }; -use channel::libra_channel; +use channel::diem_channel; +use diem_config::config::NodeConfig; +use diem_logger::prelude::*; +use diem_mempool::ConsensusRequest; +use diem_types::on_chain_config::OnChainConfigPayload; use execution_correctness::ExecutionCorrectnessManager; use futures::channel::mpsc; -use libra_config::config::NodeConfig; -use libra_logger::prelude::*; -use libra_mempool::ConsensusRequest; -use libra_types::on_chain_config::OnChainConfigPayload; use state_synchronizer::StateSyncClient; use std::sync::Arc; use storage_interface::DbReader; @@ -30,8 +30,8 @@ pub fn start_consensus( network_events: ConsensusNetworkEvents, state_sync_client: Arc, consensus_to_mempool_sender: mpsc::Sender, - libra_db: Arc, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + diem_db: Arc, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> Runtime { let runtime = runtime::Builder::new() .thread_name("consensus") @@ -39,7 +39,7 @@ pub fn start_consensus( .enable_all() .build() .expect("Failed to create Tokio runtime!"); - let storage = Arc::new(StorageWriteProxy::new(node_config, libra_db)); + let storage = Arc::new(StorageWriteProxy::new(node_config, diem_db)); let txn_manager = Arc::new(MempoolProxy::new( consensus_to_mempool_sender, node_config.consensus.mempool_poll_count, diff --git a/consensus/src/consensusdb/consensusdb_test.rs b/consensus/src/consensusdb/consensusdb_test.rs index be3590b9d1..a0053a9548 100644 --- a/consensus/src/consensusdb/consensusdb_test.rs +++ b/consensus/src/consensusdb/consensusdb_test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; use consensus_types::block::block_test_utils::certificate_for_genesis; -use libra_temppath::TempPath; +use diem_temppath::TempPath; #[test] fn test_put_get() { diff --git a/consensus/src/consensusdb/mod.rs b/consensus/src/consensusdb/mod.rs index ef3684dcc0..316c6b7815 100644 --- a/consensus/src/consensusdb/mod.rs +++ b/consensus/src/consensusdb/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] @@ -15,8 +15,8 @@ use crate::{ }; use anyhow::Result; use consensus_types::{block::Block, quorum_cert::QuorumCert}; -use libra_crypto::HashValue; -use libra_logger::prelude::*; +use diem_crypto::HashValue; +use diem_logger::prelude::*; use schema::{BLOCK_CF_NAME, QC_CF_NAME, SINGLE_ENTRY_CF_NAME}; use schemadb::{Options, ReadOptions, SchemaBatch, DB, DEFAULT_CF_NAME}; use std::{collections::HashMap, iter::Iterator, path::Path, time::Instant}; diff --git a/consensus/src/consensusdb/schema/block/mod.rs b/consensus/src/consensusdb/schema/block/mod.rs index 01258198de..f688f12284 100644 --- a/consensus/src/consensusdb/schema/block/mod.rs +++ b/consensus/src/consensusdb/schema/block/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for consensus block. @@ -12,7 +12,7 @@ use super::BLOCK_CF_NAME; use anyhow::Result; use consensus_types::block::Block; -use libra_crypto::HashValue; +use diem_crypto::HashValue; use schemadb::schema::{KeyCodec, Schema, ValueCodec}; pub struct BlockSchema; diff --git a/consensus/src/consensusdb/schema/block/test.rs b/consensus/src/consensusdb/schema/block/test.rs index e73d31652f..888c1498cc 100644 --- a/consensus/src/consensusdb/schema/block/test.rs +++ b/consensus/src/consensusdb/schema/block/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/consensus/src/consensusdb/schema/mod.rs b/consensus/src/consensusdb/schema/mod.rs index 4d10fa9560..c317b50a24 100644 --- a/consensus/src/consensusdb/schema/mod.rs +++ b/consensus/src/consensusdb/schema/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub(crate) mod block; diff --git a/consensus/src/consensusdb/schema/quorum_certificate/mod.rs b/consensus/src/consensusdb/schema/quorum_certificate/mod.rs index 492843868e..cbd6202b02 100644 --- a/consensus/src/consensusdb/schema/quorum_certificate/mod.rs +++ b/consensus/src/consensusdb/schema/quorum_certificate/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for consensus quorum certificate (of a block). @@ -12,7 +12,7 @@ use super::QC_CF_NAME; use anyhow::Result; use consensus_types::quorum_cert::QuorumCert; -use libra_crypto::HashValue; +use diem_crypto::HashValue; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/consensus/src/consensusdb/schema/quorum_certificate/test.rs b/consensus/src/consensusdb/schema/quorum_certificate/test.rs index 017d2821cf..39ddabaca6 100644 --- a/consensus/src/consensusdb/schema/quorum_certificate/test.rs +++ b/consensus/src/consensusdb/schema/quorum_certificate/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/consensus/src/consensusdb/schema/single_entry/mod.rs b/consensus/src/consensusdb/schema/single_entry/mod.rs index 2fda57a928..3011002124 100644 --- a/consensus/src/consensusdb/schema/single_entry/mod.rs +++ b/consensus/src/consensusdb/schema/single_entry/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for any single-entry data. diff --git a/consensus/src/consensusdb/schema/single_entry/test.rs b/consensus/src/consensusdb/schema/single_entry/test.rs index f6493b7dbd..0b15cef770 100644 --- a/consensus/src/consensusdb/schema/single_entry/test.rs +++ b/consensus/src/consensusdb/schema/single_entry/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/consensus/src/counters.rs b/consensus/src/counters.rs index 4fd7b226b1..7eb71d489f 100644 --- a/consensus/src/counters.rs +++ b/consensus/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ +use diem_metrics::{ register_histogram, register_histogram_vec, register_int_counter, register_int_counter_vec, register_int_gauge, DurationHistogram, Histogram, HistogramVec, IntCounter, IntCounterVec, IntGauge, @@ -13,12 +13,12 @@ use once_cell::sync::Lazy; ////////////////////// /// Monitor counters, used by monitor! macro -pub static OP_COUNTERS: Lazy = - Lazy::new(|| libra_metrics::OpMetrics::new_and_registered("consensus")); +pub static OP_COUNTERS: Lazy = + Lazy::new(|| diem_metrics::OpMetrics::new_and_registered("consensus")); pub static ERROR_COUNT: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_error_count", + "diem_consensus_error_count", "Total number of errors in main loop" ) .unwrap() @@ -27,7 +27,7 @@ pub static ERROR_COUNT: Lazy = Lazy::new(|| { /// This counter is set to the round of the highest committed block. pub static LAST_COMMITTED_ROUND: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_last_committed_round", + "diem_consensus_last_committed_round", "This counter is set to the round of the highest committed block." ) .unwrap() @@ -36,7 +36,7 @@ pub static LAST_COMMITTED_ROUND: Lazy = Lazy::new(|| { /// The counter corresponds to the version of the last committed ledger info. pub static LAST_COMMITTED_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_last_committed_version", + "diem_consensus_last_committed_version", "The counter corresponds to the version of the last committed ledger info." ) .unwrap() @@ -45,7 +45,7 @@ pub static LAST_COMMITTED_VERSION: Lazy = Lazy::new(|| { /// Count of the committed blocks since last restart. pub static COMMITTED_BLOCKS_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_consensus_committed_blocks_count", + "diem_consensus_committed_blocks_count", "Count of the committed blocks since last restart." ) .unwrap() @@ -54,7 +54,7 @@ pub static COMMITTED_BLOCKS_COUNT: Lazy = Lazy::new(|| { /// Count of the committed transactions since last restart. pub static COMMITTED_TXNS_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_consensus_committed_txns_count", + "diem_consensus_committed_txns_count", "Count of the transactions since last restart. state is success or failed", &["state"] ) @@ -68,13 +68,13 @@ pub static COMMITTED_TXNS_COUNT: Lazy = Lazy::new(|| { /// Count of the block proposals sent by this validator since last restart /// (both primary and secondary) pub static PROPOSALS_COUNT: Lazy = Lazy::new(|| { - register_int_counter!("libra_consensus_proposals_count", "Count of the block proposals sent by this validator since last restart (both primary and secondary)").unwrap() + register_int_counter!("diem_consensus_proposals_count", "Count of the block proposals sent by this validator since last restart (both primary and secondary)").unwrap() }); /// Count the number of times a validator voted for a nil block since last restart. pub static VOTE_NIL_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_consensus_vote_nil_count", + "diem_consensus_vote_nil_count", "Count the number of times a validator voted for a nil block since last restart." ) .unwrap() @@ -86,7 +86,7 @@ pub static VOTE_NIL_COUNT: Lazy = Lazy::new(|| { /// This counter is set to the last round reported by the local round_state. pub static CURRENT_ROUND: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_current_round", + "diem_consensus_current_round", "This counter is set to the last round reported by the local round_state." ) .unwrap() @@ -95,7 +95,7 @@ pub static CURRENT_ROUND: Lazy = Lazy::new(|| { /// Count of the rounds that gathered QC since last restart. pub static QC_ROUNDS_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_consensus_qc_rounds_count", + "diem_consensus_qc_rounds_count", "Count of the rounds that gathered QC since last restart." ) .unwrap() @@ -104,7 +104,7 @@ pub static QC_ROUNDS_COUNT: Lazy = Lazy::new(|| { /// Count of the timeout rounds since last restart (close to 0 in happy path). pub static TIMEOUT_ROUNDS_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_consensus_timeout_rounds_count", + "diem_consensus_timeout_rounds_count", "Count of the timeout rounds since last restart (close to 0 in happy path)." ) .unwrap() @@ -115,13 +115,13 @@ pub static TIMEOUT_ROUNDS_COUNT: Lazy = Lazy::new(|| { /// a timeout there is an ultimate decision to move to the next round (it might take multiple /// timeouts to get the timeout certificate). pub static TIMEOUT_COUNT: Lazy = Lazy::new(|| { - register_int_counter!("libra_consensus_timeout_count", "Count the number of timeouts a node experienced since last restart (close to 0 in happy path).").unwrap() + register_int_counter!("diem_consensus_timeout_count", "Count the number of timeouts a node experienced since last restart (close to 0 in happy path).").unwrap() }); /// The timeout of the current round. pub static ROUND_TIMEOUT_MS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_round_timeout_s", + "diem_consensus_round_timeout_s", "The timeout of the current round." ) .unwrap() @@ -133,7 +133,7 @@ pub static ROUND_TIMEOUT_MS: Lazy = Lazy::new(|| { /// Counts the number of times the sync info message has been set since last restart. pub static SYNC_INFO_MSGS_SENT_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_consensus_sync_info_msg_sent_count", + "diem_consensus_sync_info_msg_sent_count", "Counts the number of times the sync info message has been set since last restart." ) .unwrap() @@ -144,12 +144,12 @@ pub static SYNC_INFO_MSGS_SENT_COUNT: Lazy = Lazy::new(|| { ////////////////////// /// Current epoch num pub static EPOCH: Lazy = - Lazy::new(|| register_int_gauge!("libra_consensus_epoch", "Current epoch num").unwrap()); + Lazy::new(|| register_int_gauge!("diem_consensus_epoch", "Current epoch num").unwrap()); /// The number of validators in the current epoch pub static CURRENT_EPOCH_VALIDATORS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_current_epoch_validators", + "diem_consensus_current_epoch_validators", "The number of validators in the current epoch" ) .unwrap() @@ -162,7 +162,7 @@ pub static CURRENT_EPOCH_VALIDATORS: Lazy = Lazy::new(|| { /// In a "happy path" with no collisions and timeouts, should be equal to 3 or 4. pub static NUM_BLOCKS_IN_TREE: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_num_blocks_in_tree", + "diem_consensus_num_blocks_in_tree", "Counter for the number of blocks in the block tree (including the root)." ) .unwrap() @@ -174,8 +174,8 @@ pub static NUM_BLOCKS_IN_TREE: Lazy = Lazy::new(|| { // TODO Consider reintroducing this counter // pub static UNWRAPPED_PROPOSAL_SIZE_BYTES: Lazy = Lazy::new(|| { // register_histogram!( -// "libra_consensus_unwrapped_proposal_size_bytes", -// "Histogram of proposal size after LCS but before wrapping with GRPC and libra net." +// "diem_consensus_unwrapped_proposal_size_bytes", +// "Histogram of proposal size after LCS but before wrapping with GRPC and diem net." // ) // .unwrap() // }); @@ -183,7 +183,7 @@ pub static NUM_BLOCKS_IN_TREE: Lazy = Lazy::new(|| { /// Histogram for the number of txns per (committed) blocks. pub static NUM_TXNS_PER_BLOCK: Lazy = Lazy::new(|| { register_histogram!( - "libra_consensus_num_txns_per_block", + "diem_consensus_num_txns_per_block", "Histogram for the number of txns per (committed) blocks." ) .unwrap() @@ -191,7 +191,7 @@ pub static NUM_TXNS_PER_BLOCK: Lazy = Lazy::new(|| { pub static BLOCK_TRACING: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_consensus_block_tracing", + "diem_consensus_block_tracing", "Histogram for different stages of a block", &["stage"] ) @@ -201,7 +201,7 @@ pub static BLOCK_TRACING: Lazy = Lazy::new(|| { /// Histogram of the time it requires to wait before inserting blocks into block store. /// Measured as the block's timestamp minus local timestamp. pub static WAIT_DURATION_S: Lazy = Lazy::new(|| { - DurationHistogram::new(register_histogram!("libra_consensus_wait_duration_s", "Histogram of the time it requires to wait before inserting blocks into block store. Measured as the block's timestamp minus the local timestamp.").unwrap()) + DurationHistogram::new(register_histogram!("diem_consensus_wait_duration_s", "Histogram of the time it requires to wait before inserting blocks into block store. Measured as the block's timestamp minus the local timestamp.").unwrap()) }); /////////////////// @@ -210,7 +210,7 @@ pub static WAIT_DURATION_S: Lazy = Lazy::new(|| { /// Count of the pending messages sent to itself in the channel pub static PENDING_SELF_MESSAGES: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_pending_self_messages", + "diem_consensus_pending_self_messages", "Count of the pending messages sent to itself in the channel" ) .unwrap() @@ -219,7 +219,7 @@ pub static PENDING_SELF_MESSAGES: Lazy = Lazy::new(|| { /// Count of the pending outbound round timeouts pub static PENDING_ROUND_TIMEOUTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_consensus_pending_round_timeouts", + "diem_consensus_pending_round_timeouts", "Count of the pending outbound round timeouts" ) .unwrap() @@ -228,7 +228,7 @@ pub static PENDING_ROUND_TIMEOUTS: Lazy = Lazy::new(|| { /// Counter of pending network events to Consensus pub static PENDING_CONSENSUS_NETWORK_EVENTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_consensus_pending_network_events", + "diem_consensus_pending_network_events", "Counters(queued,dequeued,dropped) related to pending network notifications to Consensus", &["state"] ) @@ -238,7 +238,7 @@ pub static PENDING_CONSENSUS_NETWORK_EVENTS: Lazy = Lazy::new(|| /// Counters(queued,dequeued,dropped) related to consensus channel pub static CONSENSUS_CHANNEL_MSGS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_consensus_channel_msgs_count", + "diem_consensus_channel_msgs_count", "Counters(queued,dequeued,dropped) related to consensus channel", &["state"] ) @@ -248,7 +248,7 @@ pub static CONSENSUS_CHANNEL_MSGS: Lazy = Lazy::new(|| { /// Counters(queued,dequeued,dropped) related to block retrieval channel pub static BLOCK_RETRIEVAL_CHANNEL_MSGS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_consensus_block_retrieval_channel_msgs_count", + "diem_consensus_block_retrieval_channel_msgs_count", "Counters(queued,dequeued,dropped) related to block retrieval channel", &["state"] ) diff --git a/consensus/src/epoch_manager.rs b/consensus/src/epoch_manager.rs index 85e193a00a..bd60a13d34 100644 --- a/consensus/src/epoch_manager.rs +++ b/consensus/src/epoch_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ counters, error::{error_kind, DbError}, liveness::{ - leader_reputation::{ActiveInactiveHeuristic, LeaderReputation, LibraDBBackend}, + leader_reputation::{ActiveInactiveHeuristic, DiemDBBackend, LeaderReputation}, proposal_generator::ProposalGenerator, proposer_election::ProposerElection, rotating_proposer_election::{choose_leader, RotatingProposer}, @@ -23,22 +23,22 @@ use crate::{ util::time_service::TimeService, }; use anyhow::{bail, ensure, Context}; -use channel::libra_channel; +use channel::diem_channel; use consensus_types::{ common::{Author, Round}, epoch_retrieval::EpochRetrievalRequest, }; -use futures::{select, StreamExt}; -use libra_config::config::{ConsensusConfig, ConsensusProposerType, NodeConfig}; -use libra_infallible::duration_since_epoch; -use libra_logger::prelude::*; -use libra_metrics::monitor; -use libra_types::{ +use diem_config::config::{ConsensusConfig, ConsensusProposerType, NodeConfig}; +use diem_infallible::duration_since_epoch; +use diem_logger::prelude::*; +use diem_metrics::monitor; +use diem_types::{ account_address::AccountAddress, epoch_change::EpochChangeProof, epoch_state::EpochState, on_chain_config::{OnChainConfigPayload, ValidatorSet}, }; +use futures::{select, StreamExt}; use network::protocols::network::Event; use safety_rules::SafetyRulesManager; use std::{cmp::Ordering, sync::Arc, time::Duration}; @@ -81,7 +81,7 @@ pub struct EpochManager { storage: Arc, safety_rules_manager: SafetyRulesManager, processor: Option, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, } impl EpochManager { @@ -94,7 +94,7 @@ impl EpochManager { txn_manager: Arc, state_computer: Arc, storage: Arc, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> Self { let author = node_config.validator_network.as_ref().unwrap().peer_id(); let config = node_config.consensus.clone(); @@ -169,10 +169,7 @@ impl EpochManager { )) } ConsensusProposerType::LeaderReputation(heuristic_config) => { - let backend = Box::new(LibraDBBackend::new( - proposers.len(), - self.storage.libra_db(), - )); + let backend = Box::new(DiemDBBackend::new(proposers.len(), self.storage.diem_db())); let heuristic = Box::new(ActiveInactiveHeuristic::new( heuristic_config.active_weights, heuristic_config.inactive_weights, @@ -203,7 +200,7 @@ impl EpochManager { ); let proof = self .storage - .libra_db() + .diem_db() .get_epoch_ending_ledger_infos(request.start_epoch, request.end_epoch) .map_err(DbError::from) .context("[EpochManager] Failed to get epoch proof")?; diff --git a/consensus/src/error.rs b/consensus/src/error.rs index 31a84a0e84..9b22e4791f 100644 --- a/consensus/src/error.rs +++ b/consensus/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use thiserror::Error; diff --git a/consensus/src/lib.rs b/consensus/src/lib.rs index 171e19a2d0..ab445fdff3 100644 --- a/consensus/src/lib.rs +++ b/consensus/src/lib.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -//! Consensus for the Libra Core blockchain +//! Consensus for the Diem Core blockchain //! -//! The consensus protocol implemented is LibraBFT (based on +//! The consensus protocol implemented is DiemBFT (based on //! [HotStuff](https://arxiv.org/pdf/1803.05069.pdf)). #![cfg_attr(not(feature = "fuzzing"), deny(missing_docs))] @@ -35,9 +35,9 @@ mod twins; mod txn_manager; mod util; -/// LibraBFT implementation +/// DiemBFT implementation pub mod consensus_provider; -/// LibraNet interface. +/// DiemNet interface. pub mod network_interface; #[cfg(feature = "fuzzing")] diff --git a/consensus/src/liveness/leader_reputation.rs b/consensus/src/liveness/leader_reputation.rs index e8aae507e9..059597312a 100644 --- a/consensus/src/liveness/leader_reputation.rs +++ b/consensus/src/liveness/leader_reputation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::proposer_election::{next, ProposerElection}; @@ -6,10 +6,10 @@ use consensus_types::{ block::Block, common::{Author, Round}, }; -use libra_crypto::HashValue; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_types::block_metadata::{new_block_event_key, NewBlockEvent}; +use diem_crypto::HashValue; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_types::block_metadata::{new_block_event_key, NewBlockEvent}; use std::{ cmp::Ordering, collections::{HashMap, HashSet}, @@ -24,17 +24,17 @@ pub trait MetadataBackend: Send + Sync { fn get_block_metadata(&self, target_round: Round) -> Vec; } -pub struct LibraDBBackend { +pub struct DiemDBBackend { window_size: usize, - libra_db: Arc, + diem_db: Arc, window: Mutex>, } -impl LibraDBBackend { - pub fn new(window_size: usize, libra_db: Arc) -> Self { +impl DiemDBBackend { + pub fn new(window_size: usize, diem_db: Arc) -> Self { Self { window_size, - libra_db, + diem_db, window: Mutex::new(vec![]), } } @@ -42,7 +42,7 @@ impl LibraDBBackend { fn refresh_window(&self, target_round: Round) -> anyhow::Result<()> { // assumes target round is not too far from latest commit let buffer = 10; - let events = self.libra_db.get_events( + let events = self.diem_db.get_events( &new_block_event_key(), u64::max_value(), Order::Descending, @@ -60,7 +60,7 @@ impl LibraDBBackend { } } -impl MetadataBackend for LibraDBBackend { +impl MetadataBackend for DiemDBBackend { // assume the target_round only increases fn get_block_metadata(&self, target_round: Round) -> Vec { let (known_version, known_round) = self @@ -70,7 +70,7 @@ impl MetadataBackend for LibraDBBackend { .map(|(v, e)| (*v, e.round())) .unwrap_or((0, 0)); if !(known_round == target_round - || known_version == self.libra_db.get_latest_version().unwrap_or(0)) + || known_version == self.diem_db.get_latest_version().unwrap_or(0)) { if let Err(e) = self.refresh_window(target_round) { error!( diff --git a/consensus/src/liveness/leader_reputation_test.rs b/consensus/src/liveness/leader_reputation_test.rs index 3eb2722c2f..61302c23bc 100644 --- a/consensus/src/liveness/leader_reputation_test.rs +++ b/consensus/src/liveness/leader_reputation_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::{ @@ -11,7 +11,7 @@ use consensus_types::{ block::{block_test_utils::certificate_for_genesis, Block}, common::{Author, Round}, }; -use libra_types::{block_metadata::NewBlockEvent, validator_signer::ValidatorSigner}; +use diem_types::{block_metadata::NewBlockEvent, validator_signer::ValidatorSigner}; struct MockHistory { window_size: usize, diff --git a/consensus/src/liveness/mod.rs b/consensus/src/liveness/mod.rs index d6588aec56..7ad3694ac9 100644 --- a/consensus/src/liveness/mod.rs +++ b/consensus/src/liveness/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub(crate) mod leader_reputation; diff --git a/consensus/src/liveness/proposal_generator.rs b/consensus/src/liveness/proposal_generator.rs index f5b44a6d5b..66d33fab5b 100644 --- a/consensus/src/liveness/proposal_generator.rs +++ b/consensus/src/liveness/proposal_generator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,7 +12,7 @@ use consensus_types::{ quorum_cert::QuorumCert, }; -use libra_infallible::Mutex; +use diem_infallible::Mutex; use std::sync::Arc; #[cfg(test)] diff --git a/consensus/src/liveness/proposal_generator_test.rs b/consensus/src/liveness/proposal_generator_test.rs index ff4185b749..3ccfd9d8b8 100644 --- a/consensus/src/liveness/proposal_generator_test.rs +++ b/consensus/src/liveness/proposal_generator_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,7 +8,7 @@ use crate::{ util::mock_time_service::SimulatedTimeService, }; use consensus_types::block::{block_test_utils::certificate_for_genesis, Block}; -use libra_types::validator_signer::ValidatorSigner; +use diem_types::validator_signer::ValidatorSigner; use std::sync::Arc; #[tokio::test] diff --git a/consensus/src/liveness/proposer_election.rs b/consensus/src/liveness/proposer_election.rs index cc584528f8..cf7ce8109e 100644 --- a/consensus/src/liveness/proposer_election.rs +++ b/consensus/src/liveness/proposer_election.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::{ @@ -32,7 +32,7 @@ pub trait ProposerElection { // next continuously mutates a state and returns a u64-index pub(crate) fn next(state: &mut Vec) -> u64 { // state = SHA-3-256(state) - *state = libra_crypto::HashValue::sha3_256_of(state).to_vec(); + *state = diem_crypto::HashValue::sha3_256_of(state).to_vec(); let mut temp = [0u8; 8]; temp.copy_from_slice(&state[..8]); // return state[0..8] diff --git a/consensus/src/liveness/rotating_proposer_election.rs b/consensus/src/liveness/rotating_proposer_election.rs index 0521f11772..c7bf83778d 100644 --- a/consensus/src/liveness/rotating_proposer_election.rs +++ b/consensus/src/liveness/rotating_proposer_election.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::proposer_election::ProposerElection; diff --git a/consensus/src/liveness/rotating_proposer_test.rs b/consensus/src/liveness/rotating_proposer_test.rs index 14fdf64a61..a2aa0d3c1b 100644 --- a/consensus/src/liveness/rotating_proposer_test.rs +++ b/consensus/src/liveness/rotating_proposer_test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::{ proposer_election::ProposerElection, rotating_proposer_election::RotatingProposer, }; use consensus_types::block::{block_test_utils::certificate_for_genesis, Block}; -use libra_types::validator_signer::ValidatorSigner; +use diem_types::validator_signer::ValidatorSigner; #[test] fn test_rotating_proposer() { diff --git a/consensus/src/liveness/round_proposer_election.rs b/consensus/src/liveness/round_proposer_election.rs index a31049804d..3ce5e8d454 100644 --- a/consensus/src/liveness/round_proposer_election.rs +++ b/consensus/src/liveness/round_proposer_election.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::proposer_election::ProposerElection; diff --git a/consensus/src/liveness/round_proposer_test.rs b/consensus/src/liveness/round_proposer_test.rs index bc5914a75d..19b53325e0 100644 --- a/consensus/src/liveness/round_proposer_test.rs +++ b/consensus/src/liveness/round_proposer_test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::liveness::{ proposer_election::ProposerElection, round_proposer_election::RoundProposer, }; use consensus_types::block::{block_test_utils::certificate_for_genesis, Block}; -use libra_types::validator_signer::ValidatorSigner; +use diem_types::validator_signer::ValidatorSigner; use consensus_types::common::{Author, Round}; use std::collections::HashMap; diff --git a/consensus/src/liveness/round_state.rs b/consensus/src/liveness/round_state.rs index 88819a6f31..57b0cf57fa 100644 --- a/consensus/src/liveness/round_state.rs +++ b/consensus/src/liveness/round_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,8 +7,8 @@ use crate::{ util::time_service::{SendTask, TimeService}, }; use consensus_types::{common::Round, sync_info::SyncInfo, vote::Vote}; -use libra_logger::{prelude::*, Schema}; -use libra_types::validator_verifier::ValidatorVerifier; +use diem_logger::{prelude::*, Schema}; +use diem_types::validator_verifier::ValidatorVerifier; use serde::Serialize; use std::{fmt, sync::Arc, time::Duration}; diff --git a/consensus/src/liveness/round_state_test.rs b/consensus/src/liveness/round_state_test.rs index 0c426ecc16..e2fc2af0fd 100644 --- a/consensus/src/liveness/round_state_test.rs +++ b/consensus/src/liveness/round_state_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,12 +12,12 @@ use consensus_types::{ common::Round, quorum_cert::QuorumCert, sync_info::SyncInfo, timeout::Timeout, timeout_certificate::TimeoutCertificate, vote_data::VoteData, }; -use futures::StreamExt; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, }; +use futures::StreamExt; use std::{collections::BTreeMap, sync::Arc, time::Duration}; #[test] diff --git a/consensus/src/logging.rs b/consensus/src/logging.rs index ef0f292fb3..e53e5909f7 100644 --- a/consensus/src/logging.rs +++ b/consensus/src/logging.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::common::Author; -use libra_logger::Schema; -use libra_types::block_info::Round; +use diem_logger::Schema; +use diem_types::block_info::Round; use serde::Serialize; #[derive(Schema)] diff --git a/consensus/src/metrics_safety_rules.rs b/consensus/src/metrics_safety_rules.rs index a8b78e3f17..bfa7d7ef4e 100644 --- a/consensus/src/metrics_safety_rules.rs +++ b/consensus/src/metrics_safety_rules.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::persistent_liveness_storage::PersistentLivenessStorage; @@ -6,9 +6,9 @@ use consensus_types::{ block::Block, block_data::BlockData, timeout::Timeout, vote::Vote, vote_proposal::MaybeSignedVoteProposal, }; -use libra_crypto::ed25519::Ed25519Signature; -use libra_metrics::monitor; -use libra_types::epoch_change::EpochChangeProof; +use diem_crypto::ed25519::Ed25519Signature; +use diem_metrics::monitor; +use diem_types::epoch_change::EpochChangeProof; use safety_rules::{ConsensusState, Error, TSafetyRules}; use std::sync::Arc; diff --git a/consensus/src/network.rs b/consensus/src/network.rs index 270a0de956..6a0373be22 100644 --- a/consensus/src/network.rs +++ b/consensus/src/network.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,20 +8,20 @@ use crate::{ }; use anyhow::{anyhow, ensure}; use bytes::Bytes; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; use consensus_types::{ block_retrieval::{BlockRetrievalRequest, BlockRetrievalResponse, MAX_BLOCKS_PER_REQUEST}, common::Author, sync_info::SyncInfo, vote_msg::VoteMsg, }; -use futures::{channel::oneshot, stream::select, SinkExt, Stream, StreamExt}; -use libra_logger::prelude::*; -use libra_metrics::monitor; -use libra_types::{ +use diem_logger::prelude::*; +use diem_metrics::monitor; +use diem_types::{ account_address::AccountAddress, epoch_change::EpochChangeProof, validator_verifier::ValidatorVerifier, }; +use futures::{channel::oneshot, stream::select, SinkExt, Stream, StreamExt}; use network::protocols::{network::Event, rpc::error::RpcError}; use std::{ mem::{discriminant, Discriminant}, @@ -41,11 +41,11 @@ pub struct IncomingBlockRetrievalRequest { /// Will be returned by the NetworkTask upon startup. pub struct NetworkReceivers { /// Provide a LIFO buffer for each (Author, MessageType) key - pub consensus_messages: libra_channel::Receiver< + pub consensus_messages: diem_channel::Receiver< (AccountAddress, Discriminant), (AccountAddress, ConsensusMsg), >, - pub block_retrieval: libra_channel::Receiver, + pub block_retrieval: diem_channel::Receiver, } /// Implements the actual networking support for all consensus messaging. @@ -196,11 +196,11 @@ impl NetworkSender { } pub struct NetworkTask { - consensus_messages_tx: libra_channel::Sender< + consensus_messages_tx: diem_channel::Sender< (AccountAddress, Discriminant), (AccountAddress, ConsensusMsg), >, - block_retrieval_tx: libra_channel::Sender, + block_retrieval_tx: diem_channel::Sender, all_events: Box> + Send + Unpin>, } @@ -210,12 +210,12 @@ impl NetworkTask { network_events: ConsensusNetworkEvents, self_receiver: channel::Receiver>, ) -> (NetworkTask, NetworkReceivers) { - let (consensus_messages_tx, consensus_messages) = libra_channel::new( + let (consensus_messages_tx, consensus_messages) = diem_channel::new( QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), Some(&counters::CONSENSUS_CHANNEL_MSGS), ); - let (block_retrieval_tx, block_retrieval) = libra_channel::new( + let (block_retrieval_tx, block_retrieval) = diem_channel::new( QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), Some(&counters::BLOCK_RETRIEVAL_CHANNEL_MSGS), @@ -269,7 +269,7 @@ impl NetworkTask { response_sender: callback, }; if let Err(e) = self.block_retrieval_tx.push(peer_id, req_with_callback) { - warn!(error = ?e, "libra channel closed"); + warn!(error = ?e, "diem channel closed"); } } _ => { diff --git a/consensus/src/network_interface.rs b/consensus/src/network_interface.rs index 2fb89cd72f..2cd187ab14 100644 --- a/consensus/src/network_interface.rs +++ b/consensus/src/network_interface.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Interface between Consensus and Network layers. @@ -12,8 +12,8 @@ use consensus_types::{ sync_info::SyncInfo, vote_msg::VoteMsg, }; -use libra_metrics::IntCounterVec; -use libra_types::{epoch_change::EpochChangeProof, PeerId}; +use diem_metrics::IntCounterVec; +use diem_types::{epoch_change::EpochChangeProof, PeerId}; use network::{ constants::NETWORK_CHANNEL_SIZE, error::NetworkError, diff --git a/consensus/src/network_tests.rs b/consensus/src/network_tests.rs index 06987c2dd2..c61d839be6 100644 --- a/consensus/src/network_tests.rs +++ b/consensus/src/network_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ network_interface::{ConsensusMsg, ConsensusNetworkEvents, ConsensusNetworkSender}, test_utils::{self, consensus_runtime, placeholder_ledger_info, timed_block_on}, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; use consensus_types::{ block::{block_test_utils::certificate_for_genesis, Block}, common::Author, @@ -16,9 +16,9 @@ use consensus_types::{ vote_data::VoteData, vote_msg::VoteMsg, }; +use diem_infallible::{Mutex, RwLock}; +use diem_types::{block_info::BlockInfo, PeerId}; use futures::{channel::mpsc, SinkExt, StreamExt}; -use libra_infallible::{Mutex, RwLock}; -use libra_types::{block_info::BlockInfo, PeerId}; use network::{ peer_manager::{ conn_notifs_channel, ConnectionRequestSender, PeerManagerNotification, PeerManagerRequest, @@ -62,9 +62,7 @@ pub struct NetworkPlayground { /// `ConsensusNetworkImpl`. /// node_consensus_txs: Arc< - Mutex< - HashMap>, - >, + Mutex>>, >, /// Nodes' outbound handlers forward their outbound non-rpc messages to this /// queue. @@ -108,13 +106,13 @@ impl NetworkPlayground { async fn start_node_outbound_handler( drop_config: Arc>, src_twin_id: TwinId, - mut network_reqs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + mut network_reqs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, mut outbound_msgs_tx: mpsc::Sender<(TwinId, PeerManagerRequest)>, node_consensus_txs: Arc< Mutex< HashMap< TwinId, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, >, >, >, @@ -175,11 +173,11 @@ impl NetworkPlayground { twin_id: TwinId, // The `Sender` of inbound network events. The `Receiver` end of this // queue is usually wrapped in a `ConsensusNetworkEvents` adapter. - consensus_tx: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + consensus_tx: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, // The `Receiver` of outbound network events this node sends. The // `Sender` side of this queue is usually wrapped in a // `ConsensusNetworkSender` adapter. - network_reqs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + network_reqs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, conn_mgr_reqs_rx: channel::Receiver, ) { self.node_consensus_txs.lock().insert(twin_id, consensus_tx); @@ -472,9 +470,9 @@ mod tests { use consensus_types::block_retrieval::{ BlockRetrievalRequest, BlockRetrievalResponse, BlockRetrievalStatus, }; + use diem_crypto::HashValue; + use diem_types::validator_verifier::random_validator_verifier; use futures::{channel::oneshot, future}; - use libra_crypto::HashValue; - use libra_types::validator_verifier::random_validator_verifier; use network::protocols::direct_send::Message; #[test] @@ -537,11 +535,11 @@ mod tests { for (peer_id, peer) in peers.iter().enumerate() { let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (consensus_tx, consensus_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(8); let (_, conn_status_rx) = conn_notifs_channel::new(); let network_sender = ConsensusNetworkSender::new( @@ -626,11 +624,11 @@ mod tests { for (peer_id, peer) in peers.iter().enumerate() { let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (consensus_tx, consensus_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(8); let (_, conn_status_rx) = conn_notifs_channel::new(); let network_sender = ConsensusNetworkSender::new( @@ -709,9 +707,9 @@ mod tests { #[test] fn test_bad_message() { let (mut peer_mgr_notifs_tx, peer_mgr_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_notifs_tx, connection_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let consensus_network_events = ConsensusNetworkEvents::new(peer_mgr_notifs_rx, connection_notifs_rx); let (self_sender, self_receiver) = channel::new_test(8); diff --git a/consensus/src/pending_votes.rs b/consensus/src/pending_votes.rs index 7b4d9c08cf..3cdda6b9f3 100644 --- a/consensus/src/pending_votes.rs +++ b/consensus/src/pending_votes.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! PendingVotes store pending votes observed for a fixed epoch and round. @@ -10,9 +10,9 @@ use consensus_types::{ common::Author, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate, vote::Vote, }; -use libra_crypto::{hash::CryptoHash, HashValue}; -use libra_logger::prelude::*; -use libra_types::{ +use diem_crypto::{hash::CryptoHash, HashValue}; +use diem_logger::prelude::*; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, validator_verifier::{ValidatorVerifier, VerifyError}, }; @@ -233,8 +233,8 @@ impl fmt::Display for PendingVotes { mod tests { use super::{PendingVotes, VoteReceptionResult}; use consensus_types::{vote::Vote, vote_data::VoteData}; - use libra_crypto::HashValue; - use libra_types::{ + use diem_crypto::HashValue; + use diem_types::{ block_info::BlockInfo, ledger_info::LedgerInfo, validator_verifier::random_validator_verifier, }; @@ -256,7 +256,7 @@ mod tests { #[test] /// Verify that votes are properly aggregated to QC based on their LedgerInfo digest fn test_qc_aggregation() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // set up 4 validators let (signers, validator) = random_validator_verifier(4, Some(2), false); @@ -322,7 +322,7 @@ mod tests { #[test] /// Verify that votes are properly aggregated to TC based on their rounds fn test_tc_aggregation() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // set up 4 validators let (signers, validator) = random_validator_verifier(4, Some(2), false); diff --git a/consensus/src/persistent_liveness_storage.rs b/consensus/src/persistent_liveness_storage.rs index 2e3fa9ed97..0378c88173 100644 --- a/consensus/src/persistent_liveness_storage.rs +++ b/consensus/src/persistent_liveness_storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{consensusdb::ConsensusDB, epoch_manager::LivenessStorageData, error::DbError}; @@ -6,15 +6,15 @@ use anyhow::{format_err, Context, Result}; use consensus_types::{ block::Block, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate, vote::Vote, }; -use executor_types::ExecutedTrees; -use libra_config::config::NodeConfig; -use libra_crypto::HashValue; -use libra_logger::prelude::*; -use libra_trace::prelude::*; -use libra_types::{ +use diem_config::config::NodeConfig; +use diem_crypto::HashValue; +use diem_logger::prelude::*; +use diem_trace::prelude::*; +use diem_types::{ block_info::Round, epoch_change::EpochChangeProof, ledger_info::LedgerInfo, transaction::Version, }; +use executor_types::ExecutedTrees; use std::{cmp::max, collections::HashSet, sync::Arc}; use storage_interface::DbReader; @@ -47,8 +47,8 @@ pub trait PersistentLivenessStorage: Send + Sync { /// ValidatorVerifier. fn retrieve_epoch_change_proof(&self, version: u64) -> Result; - /// Returns a handle of the libradb. - fn libra_db(&self) -> Arc; + /// Returns a handle of the diemdb. + fn diem_db(&self) -> Arc; } #[derive(Clone)] @@ -145,7 +145,7 @@ impl RootMetadata { #[cfg(any(test, feature = "fuzzing"))] pub fn new_empty() -> Self { - Self::new(0, *libra_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH, vec![]) + Self::new(0, *diem_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH, vec![]) } } @@ -270,16 +270,16 @@ impl RecoveryData { } } -/// The proxy we use to persist data in libra db storage service via grpc. +/// The proxy we use to persist data in diem db storage service via grpc. pub struct StorageWriteProxy { db: Arc, - libra_db: Arc, + diem_db: Arc, } impl StorageWriteProxy { - pub fn new(config: &NodeConfig, libra_db: Arc) -> Self { + pub fn new(config: &NodeConfig, diem_db: Arc) -> Self { let db = Arc::new(ConsensusDB::new(config.storage.dir())); - StorageWriteProxy { db, libra_db } + StorageWriteProxy { db, diem_db } } } @@ -308,7 +308,7 @@ impl PersistentLivenessStorage for StorageWriteProxy { fn recover_from_ledger(&self) -> LedgerRecoveryData { let startup_info = self - .libra_db + .diem_db .get_startup_info() .expect("unable to read ledger info from storage") .expect("startup info is None"); @@ -348,7 +348,7 @@ impl PersistentLivenessStorage for StorageWriteProxy { // find the block corresponding to storage latest ledger info let startup_info = self - .libra_db + .diem_db .get_startup_info() .expect("unable to read ledger info from storage") .expect("startup info is None"); @@ -408,13 +408,13 @@ impl PersistentLivenessStorage for StorageWriteProxy { fn retrieve_epoch_change_proof(&self, version: u64) -> Result { let (_, proofs, _) = self - .libra_db + .diem_db .get_state_proof(version) .map_err(DbError::from)?; Ok(proofs) } - fn libra_db(&self) -> Arc { - self.libra_db.clone() + fn diem_db(&self) -> Arc { + self.diem_db.clone() } } diff --git a/consensus/src/round_manager.rs b/consensus/src/round_manager.rs index 733ea058bb..f38aebafdb 100644 --- a/consensus/src/round_manager.rs +++ b/consensus/src/round_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -33,10 +33,10 @@ use consensus_types::{ vote::Vote, vote_msg::VoteMsg, }; +use diem_logger::prelude::*; +use diem_trace::prelude::*; +use diem_types::{epoch_state::EpochState, validator_verifier::ValidatorVerifier}; use fail::fail_point; -use libra_logger::prelude::*; -use libra_trace::prelude::*; -use libra_types::{epoch_state::EpochState, validator_verifier::ValidatorVerifier}; #[cfg(test)] use safety_rules::ConsensusState; use safety_rules::TSafetyRules; diff --git a/consensus/src/round_manager_fuzzing.rs b/consensus/src/round_manager_fuzzing.rs index 71c5ef5556..0c3083168e 100644 --- a/consensus/src/round_manager_fuzzing.rs +++ b/consensus/src/round_manager_fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,10 +16,9 @@ use crate::{ test_utils::{EmptyStateComputer, MockStorage, MockTransactionManager}, util::{mock_time_service::SimulatedTimeService, time_service::TimeService}, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; use consensus_types::proposal_msg::ProposalMsg; -use futures::{channel::mpsc, executor::block_on}; -use libra_types::{ +use diem_types::{ epoch_change::EpochChangeProof, epoch_state::EpochState, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, @@ -28,6 +27,7 @@ use libra_types::{ validator_signer::ValidatorSigner, validator_verifier::ValidatorVerifier, }; +use futures::{channel::mpsc, executor::block_on}; use network::{ peer_manager::{ConnectionRequestSender, PeerManagerRequestSender}, protocols::network::NewNetworkSender, @@ -111,9 +111,9 @@ fn create_node_for_fuzzing() -> RoundManager { // TODO: mock channels let (network_reqs_tx, _network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let network_sender = ConsensusNetworkSender::new( PeerManagerRequestSender::new(network_reqs_tx), ConnectionRequestSender::new(connection_reqs_tx), diff --git a/consensus/src/round_manager_test.rs b/consensus/src/round_manager_test.rs index 512a90b279..91e6a93c89 100644 --- a/consensus/src/round_manager_test.rs +++ b/consensus/src/round_manager_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -21,7 +21,7 @@ use crate::{ }, util::time_service::{ClockTimeService, TimeService}, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; use consensus_types::{ block::{ block_test_utils::{certificate_for_genesis, gen_test_certificate}, @@ -35,21 +35,21 @@ use consensus_types::{ timeout_certificate::TimeoutCertificate, vote_msg::VoteMsg, }; -use futures::{ - channel::{mpsc, oneshot}, - executor::block_on, - stream::select, - Stream, StreamExt, -}; -use libra_crypto::{ed25519::Ed25519PrivateKey, HashValue, Uniform}; -use libra_secure_storage::Storage; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, HashValue, Uniform}; +use diem_secure_storage::Storage; +use diem_types::{ epoch_state::EpochState, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, validator_signer::ValidatorSigner, validator_verifier::random_validator_verifier, waypoint::Waypoint, }; +use futures::{ + channel::{mpsc, oneshot}, + executor::block_on, + stream::select, + Stream, StreamExt, +}; use network::{ peer_manager::{conn_notifs_channel, ConnectionRequestSender, PeerManagerRequestSender}, protocols::network::{Event, NewNetworkEvents, NewNetworkSender}, @@ -100,7 +100,7 @@ impl NodeSetup { let (initial_data, storage) = MockStorage::start_for_testing((&validators).into()); let safety_storage = PersistentSafetyStorage::initialize( - Storage::from(libra_secure_storage::InMemoryStorage::new()), + Storage::from(diem_secure_storage::InMemoryStorage::new()), signer.author(), signer.private_key().clone(), Ed25519PrivateKey::generate_for_testing(), @@ -139,11 +139,11 @@ impl NodeSetup { }; let validators = epoch_state.verifier.clone(); let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (consensus_tx, consensus_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(8); let (_, conn_status_rx) = conn_notifs_channel::new(); let network_sender = ConsensusNetworkSender::new( @@ -863,7 +863,7 @@ fn safety_rules_crash() { fn reset_safety_rules(node: &mut NodeSetup) { let safety_storage = PersistentSafetyStorage::initialize( - Storage::from(libra_secure_storage::InMemoryStorage::new()), + Storage::from(diem_secure_storage::InMemoryStorage::new()), node.signer.author(), node.signer.private_key().clone(), Ed25519PrivateKey::generate_for_testing(), diff --git a/consensus/src/state_computer.rs b/consensus/src/state_computer.rs index c1d0dd63f8..ec6ce654ec 100644 --- a/consensus/src/state_computer.rs +++ b/consensus/src/state_computer.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{error::StateSyncError, state_replication::StateComputer}; use anyhow::Result; use consensus_types::block::Block; +use diem_crypto::HashValue; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_metrics::monitor; +use diem_types::ledger_info::LedgerInfoWithSignatures; use execution_correctness::ExecutionCorrectness; use executor_types::{Error as ExecutionError, StateComputeResult}; use fail::fail_point; -use libra_crypto::HashValue; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_metrics::monitor; -use libra_types::ledger_info::LedgerInfoWithSignatures; use state_synchronizer::StateSyncClient; use std::{boxed::Box, sync::Arc}; diff --git a/consensus/src/state_replication.rs b/consensus/src/state_replication.rs index 16e4820021..26e10ef339 100644 --- a/consensus/src/state_replication.rs +++ b/consensus/src/state_replication.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::error::{MempoolError, StateSyncError}; use anyhow::Result; use consensus_types::{block::Block, common::Payload}; +use diem_crypto::HashValue; +use diem_types::ledger_info::LedgerInfoWithSignatures; use executor_types::{Error as ExecutionError, StateComputeResult}; -use libra_crypto::HashValue; -use libra_types::ledger_info::LedgerInfoWithSignatures; /// Retrieves and updates the status of transactions on demand (e.g., via talking with Mempool) #[async_trait::async_trait] diff --git a/consensus/src/test_utils/mock_state_computer.rs b/consensus/src/test_utils/mock_state_computer.rs index b383539220..77460caaf3 100644 --- a/consensus/src/test_utils/mock_state_computer.rs +++ b/consensus/src/test_utils/mock_state_computer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,12 +6,12 @@ use crate::{ }; use anyhow::{format_err, Result}; use consensus_types::{block::Block, common::Payload}; +use diem_crypto::{hash::ACCUMULATOR_PLACEHOLDER_HASH, HashValue}; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_types::ledger_info::LedgerInfoWithSignatures; use executor_types::{Error, StateComputeResult}; use futures::channel::mpsc; -use libra_crypto::{hash::ACCUMULATOR_PLACEHOLDER_HASH, HashValue}; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_types::ledger_info::LedgerInfoWithSignatures; use std::{collections::HashMap, sync::Arc}; use termion::color::*; diff --git a/consensus/src/test_utils/mock_storage.rs b/consensus/src/test_utils/mock_storage.rs index c1cee2719f..69860aa592 100644 --- a/consensus/src/test_utils/mock_storage.rs +++ b/consensus/src/test_utils/mock_storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,9 +11,9 @@ use anyhow::Result; use consensus_types::{ block::Block, quorum_cert::QuorumCert, timeout_certificate::TimeoutCertificate, vote::Vote, }; -use libra_crypto::HashValue; -use libra_infallible::Mutex; -use libra_types::{ +use diem_crypto::HashValue; +use diem_infallible::Mutex; +use diem_types::{ epoch_change::EpochChangeProof, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, on_chain_config::ValidatorSet, @@ -223,7 +223,7 @@ impl PersistentLivenessStorage for MockStorage { Ok(EpochChangeProof::new(vec![lis], false)) } - fn libra_db(&self) -> Arc { + fn diem_db(&self) -> Arc { unimplemented!() } } @@ -287,7 +287,7 @@ impl PersistentLivenessStorage for EmptyStorage { unimplemented!() } - fn libra_db(&self) -> Arc { + fn diem_db(&self) -> Arc { unimplemented!() } } diff --git a/consensus/src/test_utils/mock_txn_manager.rs b/consensus/src/test_utils/mock_txn_manager.rs index 1be6e8ab6c..3ef969ac5d 100644 --- a/consensus/src/test_utils/mock_txn_manager.rs +++ b/consensus/src/test_utils/mock_txn_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{error::MempoolError, state_replication::TxnManager, txn_manager::MempoolProxy}; @@ -7,13 +7,13 @@ use consensus_types::{ block::{block_test_utils::random_payload, Block}, common::Payload, }; -use executor_types::StateComputeResult; -use futures::channel::mpsc; -use libra_mempool::ConsensusRequest; -use libra_types::{ +use diem_mempool::ConsensusRequest; +use diem_types::{ transaction::TransactionStatus, vm_status::{KeptVMStatus, StatusCode}, }; +use executor_types::StateComputeResult; +use futures::channel::mpsc; use rand::Rng; #[derive(Clone)] diff --git a/consensus/src/test_utils/mod.rs b/consensus/src/test_utils/mod.rs index 7d403b935d..62c4b59631 100644 --- a/consensus/src/test_utils/mod.rs +++ b/consensus/src/test_utils/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::block_storage::{BlockReader, BlockStore}; @@ -9,9 +9,9 @@ use consensus_types::{ quorum_cert::QuorumCert, sync_info::SyncInfo, }; -use libra_crypto::HashValue; -use libra_logger::Level; -use libra_types::{ledger_info::LedgerInfo, validator_signer::ValidatorSigner}; +use diem_crypto::HashValue; +use diem_logger::Level; +use diem_types::{ledger_info::LedgerInfo, validator_signer::ValidatorSigner}; use std::{future::Future, sync::Arc, time::Duration}; use tokio::{runtime, time::timeout}; @@ -22,7 +22,7 @@ mod mock_txn_manager; use crate::util::mock_time_service::SimulatedTimeService; use consensus_types::{block::block_test_utils::gen_test_certificate, common::Payload}; -use libra_types::block_info::BlockInfo; +use diem_types::block_info::BlockInfo; pub use mock_state_computer::{EmptyStateComputer, MockStateComputer}; pub use mock_storage::{EmptyStorage, MockSharedStorage, MockStorage}; pub use mock_txn_manager::MockTransactionManager; @@ -175,7 +175,7 @@ fn nocapture() -> bool { pub fn consensus_runtime() -> runtime::Runtime { if nocapture() { - ::libra_logger::Logger::new().level(Level::Debug).init(); + ::diem_logger::Logger::new().level(Level::Debug).init(); } runtime::Builder::new() diff --git a/consensus/src/twins/basic_twins_test.rs b/consensus/src/twins/basic_twins_test.rs index d0b51323ca..78554280cb 100644 --- a/consensus/src/twins/basic_twins_test.rs +++ b/consensus/src/twins/basic_twins_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,8 +8,8 @@ use crate::{ twins::twins_node::SMRNode, }; use consensus_types::{block::Block, common::Round}; +use diem_config::config::ConsensusProposerType::{FixedProposer, RotatingProposer, RoundProposer}; use futures::StreamExt; -use libra_config::config::ConsensusProposerType::{FixedProposer, RotatingProposer, RoundProposer}; use std::collections::HashMap; #[test] diff --git a/consensus/src/twins/mod.rs b/consensus/src/twins/mod.rs index ecfa01e222..480434dfa0 100644 --- a/consensus/src/twins/mod.rs +++ b/consensus/src/twins/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod basic_twins_test; diff --git a/consensus/src/twins/twins_node.rs b/consensus/src/twins/twins_node.rs index e8b04dcddd..11b1fff88a 100644 --- a/consensus/src/twins/twins_node.rs +++ b/consensus/src/twins/twins_node.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,23 +10,23 @@ use crate::{ test_utils::{MockStateComputer, MockStorage, MockTransactionManager}, util::time_service::ClockTimeService, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; use consensus_types::common::{Author, Payload, Round}; -use futures::channel::mpsc; -use libra_config::{ +use diem_config::{ config::{ ConsensusProposerType::{self, RoundProposer}, NodeConfig, WaypointConfig, }, generator::{self, ValidatorSwarm}, }; -use libra_mempool::mocks::MockSharedMempool; -use libra_types::{ +use diem_mempool::mocks::MockSharedMempool; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, on_chain_config::{OnChainConfig, OnChainConfigPayload, ValidatorSet}, validator_info::ValidatorInfo, waypoint::Waypoint, }; +use futures::channel::mpsc; use network::{ peer_manager::{conn_notifs_channel, ConnectionRequestSender, PeerManagerRequestSender}, protocols::network::{NewNetworkEvents, NewNetworkSender}, @@ -56,11 +56,11 @@ impl SMRNode { twin_id: TwinId, ) -> Self { let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (consensus_tx, consensus_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(8); let (_, conn_notifs_channel) = conn_notifs_channel::new(); let network_sender = ConsensusNetworkSender::new( @@ -84,7 +84,7 @@ impl SMRNode { consensus_to_mempool_sender, ))); let (mut reconfig_sender, reconfig_events) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let mut configs = HashMap::new(); configs.insert( ValidatorSet::CONFIG_ID, diff --git a/consensus/src/txn_manager.rs b/consensus/src/txn_manager.rs index 2c0e69b470..127b7a918c 100644 --- a/consensus/src/txn_manager.rs +++ b/consensus/src/txn_manager.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{error::MempoolError, state_replication::TxnManager}; use anyhow::{format_err, Result}; use consensus_types::{block::Block, common::Payload}; +use diem_logger::prelude::*; +use diem_mempool::{ + CommittedTransaction, ConsensusRequest, ConsensusResponse, TransactionExclusion, +}; +use diem_metrics::monitor; +use diem_trace::prelude::*; +use diem_types::transaction::TransactionStatus; use executor_types::StateComputeResult; use fail::fail_point; use futures::channel::{mpsc, oneshot}; use itertools::Itertools; -use libra_logger::prelude::*; -use libra_mempool::{ - CommittedTransaction, ConsensusRequest, ConsensusResponse, TransactionExclusion, -}; -use libra_metrics::monitor; -use libra_trace::prelude::*; -use libra_types::transaction::TransactionStatus; use std::time::Duration; use tokio::time::{delay_for, timeout}; diff --git a/consensus/src/util/config_subscription.rs b/consensus/src/util/config_subscription.rs index 90d1e4b68f..1cd8d60ade 100644 --- a/consensus/src/util/config_subscription.rs +++ b/consensus/src/util/config_subscription.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use channel::libra_channel::Receiver; -use libra_types::{ +use channel::diem_channel::Receiver; +use diem_types::{ account_config::NewEpochEvent, on_chain_config::{OnChainConfigPayload, ON_CHAIN_CONFIG_REGISTRY}, }; diff --git a/consensus/src/util/mock_time_service.rs b/consensus/src/util/mock_time_service.rs index af412769f6..fcc482f36c 100644 --- a/consensus/src/util/mock_time_service.rs +++ b/consensus/src/util/mock_time_service.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::util::time_service::{ScheduledTask, TimeService}; -use libra_infallible::Mutex; -use libra_logger::prelude::*; +use diem_infallible::Mutex; +use diem_logger::prelude::*; use std::{sync::Arc, time::Duration}; /// SimulatedTimeService implements TimeService, however it does not depend on actual time diff --git a/consensus/src/util/mod.rs b/consensus/src/util/mod.rs index 441acd49a5..90ff77e4d3 100644 --- a/consensus/src/util/mod.rs +++ b/consensus/src/util/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod config_subscription; diff --git a/consensus/src/util/time_service.rs b/consensus/src/util/time_service.rs index eb24b0dfbc..709f9a3d53 100644 --- a/consensus/src/util/time_service.rs +++ b/consensus/src/util/time_service.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_logger::prelude::*; use futures::{Future, FutureExt, SinkExt}; -use libra_logger::prelude::*; use std::{pin::Pin, thread, time::Duration}; use crate::counters; @@ -115,7 +115,7 @@ impl TimeService for ClockTimeService { } fn get_current_timestamp(&self) -> Duration { - libra_infallible::duration_since_epoch() + diem_infallible::duration_since_epoch() } fn sleep(&self, t: Duration) { diff --git a/crypto/crypto-derive/Cargo.toml b/crypto/crypto-derive/Cargo.toml index 0f566f0ca9..6d4c9aea84 100644 --- a/crypto/crypto-derive/Cargo.toml +++ b/crypto/crypto-derive/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-crypto-derive" +name = "diem-crypto-derive" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra custom derives for `libra-crypto`" +authors = ["Diem Association "] +description = "Diem custom derives for `diem-crypto`" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -12,7 +12,7 @@ edition = "2018" proc-macro = true [dependencies] -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } syn = { version = "1.0.53", features = ["derive"] } quote = "1.0.7" proc-macro2 = "1.0.24" diff --git a/crypto/crypto-derive/src/hasher.rs b/crypto/crypto-derive/src/hasher.rs index e8f88cbc4e..53aa6f4c65 100644 --- a/crypto/crypto-derive/src/hasher.rs +++ b/crypto/crypto-derive/src/hasher.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// Converts a camel-case string to snake-case diff --git a/crypto/crypto-derive/src/lib.rs b/crypto/crypto-derive/src/lib.rs index 09d912d912..3f34dff2f2 100644 --- a/crypto/crypto-derive/src/lib.rs +++ b/crypto/crypto-derive/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -9,11 +9,11 @@ //! - the `SilentDebug` and SilentDisplay macros are meant to be used on private key types, and //! elide their input for confidentiality. //! - the `Deref` macro helps derive the canonical instances on new types. -//! - the derive macros for `libra_crypto::traits`, namely `ValidCryptoMaterial`, `PublicKey`, `PrivateKey`, +//! - the derive macros for `diem_crypto::traits`, namely `ValidCryptoMaterial`, `PublicKey`, `PrivateKey`, //! `VerifyingKey`, `SigningKey` and `Signature` are meant to be derived on simple unions of types //! implementing these traits. -//! - the derive macro for `libra_crypto::hash::CryptoHasher`, which defines -//! the domain-separation hasher structures described in `libra_crypto::hash` +//! - the derive macro for `diem_crypto::hash::CryptoHasher`, which defines +//! the domain-separation hasher structures described in `diem_crypto::hash` //! (look there for details). This derive macro has for sole difference that it //! automatically picks a unique salt for you, using the Serde name. For a container `Foo`, //! this is usually equivalent to: @@ -51,12 +51,12 @@ //! //! ```ignore //! # #[macro_use] extern crate crypto-derive; -//! use libra_crypto::{ +//! use diem_crypto::{ //! hash::HashValue, //! bls12381::{BLS12381PrivateKey, BLS12381PublicKey, BLS12381Signature}, //! ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, //! }; -//! use libra_crypto_derive::{ +//! use diem_crypto_derive::{ //! SilentDebug, PrivateKey, PublicKey, Signature, SigningKey, ValidCryptoMaterial, VerifyingKey, //! }; //! @@ -319,7 +319,7 @@ pub fn derive_enum_signature(input: TokenStream) -> TokenStream { } // There is a unit test for this logic in the crypto crate, at -// libra_crypto::unit_tests::cryptohasher — you may have to modify it if you +// diem_crypto::unit_tests::cryptohasher — you may have to modify it if you // edit the below. #[proc_macro_derive(CryptoHasher)] pub fn hasher_dispatch(input: TokenStream) -> TokenStream { @@ -351,21 +351,21 @@ pub fn hasher_dispatch(input: TokenStream) -> TokenStream { let out = quote!( /// Cryptographic hasher for an LCS-serializable #item #[derive(Clone)] - pub struct #hasher_name(libra_crypto::hash::DefaultHasher); + pub struct #hasher_name(diem_crypto::hash::DefaultHasher); - static #static_seed_name: libra_crypto::_once_cell::sync::OnceCell<[u8; 32]> = libra_crypto::_once_cell::sync::OnceCell::new(); + static #static_seed_name: diem_crypto::_once_cell::sync::OnceCell<[u8; 32]> = diem_crypto::_once_cell::sync::OnceCell::new(); impl #hasher_name { fn new() -> Self { - let name = libra_crypto::_serde_name::trace_name::<#type_name #param>() + let name = diem_crypto::_serde_name::trace_name::<#type_name #param>() .expect("The `CryptoHasher` macro only applies to structs and enums"); #hasher_name( - libra_crypto::hash::DefaultHasher::new(&name.as_bytes())) + diem_crypto::hash::DefaultHasher::new(&name.as_bytes())) } } - static #static_hasher_name: libra_crypto::_once_cell::sync::Lazy<#hasher_name> = - libra_crypto::_once_cell::sync::Lazy::new(|| #hasher_name::new()); + static #static_hasher_name: diem_crypto::_once_cell::sync::Lazy<#hasher_name> = + diem_crypto::_once_cell::sync::Lazy::new(|| #hasher_name::new()); impl std::default::Default for #hasher_name @@ -375,12 +375,12 @@ pub fn hasher_dispatch(input: TokenStream) -> TokenStream { } } - impl libra_crypto::hash::CryptoHasher for #hasher_name { + impl diem_crypto::hash::CryptoHasher for #hasher_name { fn seed() -> &'static [u8; 32] { #static_seed_name.get_or_init(|| { - let name = libra_crypto::_serde_name::trace_name::<#type_name #param>() + let name = diem_crypto::_serde_name::trace_name::<#type_name #param>() .expect("The `CryptoHasher` macro only applies to structs and enums.").as_bytes(); - libra_crypto::hash::DefaultHasher::prefixed_hash(&name) + diem_crypto::hash::DefaultHasher::prefixed_hash(&name) }) } @@ -388,14 +388,14 @@ pub fn hasher_dispatch(input: TokenStream) -> TokenStream { self.0.update(bytes); } - fn finish(self) -> libra_crypto::hash::HashValue { + fn finish(self) -> diem_crypto::hash::HashValue { self.0.finish() } } impl std::io::Write for #hasher_name { fn write(&mut self, bytes: &[u8]) -> std::io::Result { - use libra_crypto::hash::CryptoHasher; + use diem_crypto::hash::CryptoHasher; self.0.update(bytes); Ok(bytes.len()) @@ -421,11 +421,11 @@ pub fn lcs_crypto_hash_dispatch(input: TokenStream) -> TokenStream { let generics = add_trait_bounds(ast.generics); let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); let out = quote!( - impl #impl_generics libra_crypto::hash::CryptoHash for #name #ty_generics #where_clause { + impl #impl_generics diem_crypto::hash::CryptoHash for #name #ty_generics #where_clause { type Hasher = #hasher_name; - fn hash(&self) -> libra_crypto::hash::HashValue { - use libra_crypto::hash::CryptoHasher; + fn hash(&self) -> diem_crypto::hash::HashValue { + use diem_crypto::hash::CryptoHasher; let mut state = Self::Hasher::default(); lcs::serialize_into(&mut state, &self).expect(#error_msg); diff --git a/crypto/crypto-derive/src/unions.rs b/crypto/crypto-derive/src/unions.rs index 66f013c8ae..b2d0017b52 100644 --- a/crypto/crypto-derive/src/unions.rs +++ b/crypto/crypto-derive/src/unions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proc_macro::TokenStream; @@ -60,7 +60,7 @@ pub fn impl_enum_tryfrom(name: &Ident, variants: &DataEnum) -> proc_macro2::Toke quote! { impl core::convert::TryFrom<&[u8]> for #name { - type Error = libra_crypto::CryptoMaterialError; + type Error = diem_crypto::CryptoMaterialError; fn try_from(bytes: &[u8]) -> std::result::Result<#name, Self::Error> { #try_chain } @@ -88,7 +88,7 @@ pub fn impl_enum_valid_crypto_material(name: &Ident, variants: &DataEnum) -> Tok try_from.extend(quote! { - impl libra_crypto::ValidCryptoMaterial for #name { + impl diem_crypto::ValidCryptoMaterial for #name { fn to_bytes(&self) -> Vec { match self { #to_bytes_arms @@ -153,7 +153,7 @@ pub fn impl_enum_publickey( } }; res.extend(quote! { - impl libra_crypto::PublicKey for #name { + impl diem_crypto::PublicKey for #name { type PrivateKeyMaterial = #pkt; } }); @@ -167,7 +167,7 @@ pub fn impl_enum_privatekey( ) -> TokenStream { let pkt: syn::Type = public_key_type.parse().unwrap(); let res = quote! { - impl libra_crypto::PrivateKey for #name { + impl diem_crypto::PrivateKey for #name { type PublicKeyMaterial = #pkt; } }; @@ -183,11 +183,11 @@ pub fn impl_enum_verifyingkey( let pkt: syn::Type = private_key_type.parse().unwrap(); let st: syn::Type = signature_type.parse().unwrap(); let res = quote! { - impl libra_crypto::VerifyingKey for #name { + impl diem_crypto::VerifyingKey for #name { type SigningKeyMaterial = #pkt; type SignatureMaterial = #st; } - impl libra_crypto::private::Sealed for #name {} + impl diem_crypto::private::Sealed for #name {} }; res.into() } @@ -214,11 +214,11 @@ pub fn impl_enum_signingkey( }); } let res = quote! { - impl libra_crypto::SigningKey for #name { + impl diem_crypto::SigningKey for #name { type VerifyingKeyMaterial = #pkt; type SignatureMaterial = #st; - fn sign(&self, message: &T) -> Self::SignatureMaterial { + fn sign(&self, message: &T) -> Self::SignatureMaterial { match self { #match_struct_arms } @@ -231,7 +231,7 @@ pub fn impl_enum_signingkey( } } } - impl libra_crypto::private::Sealed for #name {} + impl diem_crypto::private::Sealed for #name {} }; res.into() } @@ -271,24 +271,24 @@ pub fn impl_enum_signature( res.extend(quote! { - impl libra_crypto::Signature for #name { + impl diem_crypto::Signature for #name { type VerifyingKeyMaterial = #pub_kt; type SigningKeyMaterial = #priv_kt; - fn verify(&self, message: &T, public_key: &Self::VerifyingKeyMaterial) -> std::result::Result<(), libra_crypto::error::Error> { + fn verify(&self, message: &T, public_key: &Self::VerifyingKeyMaterial) -> std::result::Result<(), diem_crypto::error::Error> { match (self, public_key) { #match_struct_arms - _ => libra_crypto::error::bail!( + _ => diem_crypto::error::bail!( "provided the wrong alternative in {:?}!", (self, public_key) ), } } - fn verify_arbitrary_msg(&self, message: &[u8], public_key: &Self::VerifyingKeyMaterial) -> std::result::Result<(), libra_crypto::error::Error> { + fn verify_arbitrary_msg(&self, message: &[u8], public_key: &Self::VerifyingKeyMaterial) -> std::result::Result<(), diem_crypto::error::Error> { match (self, public_key) { #match_arms - _ => libra_crypto::error::bail!( + _ => diem_crypto::error::bail!( "provided the wrong alternative in {:?}!", (self, public_key) ), @@ -302,7 +302,7 @@ pub fn impl_enum_signature( } } - impl libra_crypto::private::Sealed for #name {} + impl diem_crypto::private::Sealed for #name {} }); res.into() } diff --git a/crypto/crypto/Cargo.toml b/crypto/crypto/Cargo.toml index 4d24c68523..034c17ec16 100644 --- a/crypto/crypto/Cargo.toml +++ b/crypto/crypto/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-crypto" +name = "diem-crypto" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-crypto" +authors = ["Diem Association "] +description = "Diem diem-crypto" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -36,10 +36,10 @@ tiny-keccak = { version = "2.0.2", features = ["sha3"] } vanilla-x25519-dalek = { version = "1.1.0", package = 'x25519-dalek', default-features = false, features = ["std"], optional = true } x25519-dalek = { git = "https://github.com/novifinancial/x25519-dalek.git", branch = "fiat4", version = "1.1.0", default-features = false, features = ["std", "fiat_u64_backend"], optional = true} aes-gcm = "0.8.0" -libra-crypto-derive = { path = "../crypto-derive", version = "0.1.0" } +diem-crypto-derive = { path = "../crypto-derive", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-nibble = { path = "../../common/nibble", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-nibble = { path = "../../common/nibble", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] bitvec = "0.19.4" diff --git a/crypto/crypto/README.md b/crypto/crypto/README.md index 8abd17a64a..a81b9c4883 100644 --- a/crypto/crypto/README.md +++ b/crypto/crypto/README.md @@ -4,11 +4,11 @@ title: Crypto custom_edit_url: https://github.com/libra/libra/edit/master/crypto/crypto/README.md --- -The crypto component hosts all the implementations of cryptographic primitives we use in Libra: hashing, signing, and key derivation/generation. The parts of the library using traits.rs contains the crypto API enforcing type safety, verifiable random functions, EdDSA & MultiEdDSA signatures. +The crypto component hosts all the implementations of cryptographic primitives we use in Diem: hashing, signing, and key derivation/generation. The parts of the library using traits.rs contains the crypto API enforcing type safety, verifiable random functions, EdDSA & MultiEdDSA signatures. ## Overview -Libra makes use of several cryptographic algorithms: +Diem makes use of several cryptographic algorithms: * SHA-3 as the main hash function. It is standardized in [FIPS 202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf). It is based on the [tiny_keccak](https://docs.rs/tiny-keccak/1.4.2/tiny_keccak/) library. * HKDF: HMAC-based Extract-and-Expand Key Derivation Function (HKDF) based on [RFC 5869](https://tools.ietf.org/html/rfc5869). It is used to generate keys from a salt (optional), seed, and application-info (optional). diff --git a/crypto/crypto/benches/ed25519.rs b/crypto/crypto/benches/ed25519.rs index 9c6b9e3516..69835d38df 100644 --- a/crypto/crypto/benches/ed25519.rs +++ b/crypto/crypto/benches/ed25519.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[macro_use] @@ -6,14 +6,14 @@ extern crate criterion; use criterion::Criterion; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; use rand::{prelude::ThreadRng, thread_rng}; use serde::{Deserialize, Serialize}; #[derive(Debug, CryptoHasher, LCSCryptoHash, Serialize, Deserialize)] -pub struct TestLibraCrypto(pub String); +pub struct TestDiemCrypto(pub String); -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, traits::{Signature, SigningKey, Uniform}, }; @@ -22,7 +22,7 @@ fn verify(c: &mut Criterion) { let mut csprng: ThreadRng = thread_rng(); let priv_key = Ed25519PrivateKey::generate(&mut csprng); let pub_key: Ed25519PublicKey = (&priv_key).into(); - let msg = TestLibraCrypto("".to_string()); + let msg = TestDiemCrypto("".to_string()); let sig: Ed25519Signature = priv_key.sign(&msg); c.bench_function("Ed25519 signature verification", move |b| { diff --git a/crypto/crypto/benches/noise.rs b/crypto/crypto/benches/noise.rs index b35c9133c0..bdee527dc0 100644 --- a/crypto/crypto/benches/noise.rs +++ b/crypto/crypto/benches/noise.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Don't forget to run this benchmark with AES-NI enable. @@ -13,7 +13,7 @@ use criterion::{Benchmark, Criterion, Throughput}; use rand::SeedableRng; use std::convert::TryFrom as _; -use libra_crypto::{ +use diem_crypto::{ noise::{handshake_init_msg_len, handshake_resp_msg_len, NoiseConfig, AES_GCM_TAGLEN}, test_utils::TEST_SEED, x25519, Uniform as _, ValidCryptoMaterial as _, diff --git a/crypto/crypto/src/compat.rs b/crypto/crypto/src/compat.rs index 3f6c9eba74..70a79432ce 100644 --- a/crypto/crypto/src/compat.rs +++ b/crypto/crypto/src/compat.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Wrapper structs for types that need [RustCrypto](https://github.com/RustCrypto) diff --git a/crypto/crypto/src/ed25519.rs b/crypto/crypto/src/ed25519.rs index b72e0fae43..22a0863b90 100644 --- a/crypto/crypto/src/ed25519.rs +++ b/crypto/crypto/src/ed25519.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides an API for the PureEdDSA signature scheme over the ed25519 twisted @@ -9,8 +9,8 @@ //! # Examples //! //! ``` -//! use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -//! use libra_crypto::{ +//! use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +//! use diem_crypto::{ //! ed25519::*, //! traits::{Signature, SigningKey, Uniform}, //! }; @@ -40,7 +40,7 @@ use crate::{ }; use anyhow::{anyhow, Result}; use core::convert::TryFrom; -use libra_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; +use diem_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; use mirai_annotations::*; use serde::Serialize; use std::{cmp::Ordering, fmt}; diff --git a/crypto/crypto/src/error.rs b/crypto/crypto/src/error.rs index 6e94eb9a7e..324fe87fb5 100644 --- a/crypto/crypto/src/error.rs +++ b/crypto/crypto/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Rexport the error types needed for the various crypto traits diff --git a/crypto/crypto/src/hash.rs b/crypto/crypto/src/hash.rs index 1a03113fb0..a474515779 100644 --- a/crypto/crypto/src/hash.rs +++ b/crypto/crypto/src/hash.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines traits and implementations of //! [cryptographic hash functions](https://en.wikipedia.org/wiki/Cryptographic_hash_function) -//! for the Libra project. +//! for the Diem project. //! //! It is designed to help authors protect against two types of real world attacks: //! @@ -21,9 +21,9 @@ //! same input to the hash function and therefore the same hash. This //! creates a collision. //! -//! Regarding (1), this library makes it easy for Libra developers to create as +//! Regarding (1), this library makes it easy for Diem developers to create as //! many new "hashable" Rust types as needed so that each Rust type hashed and signed -//! in Libra has a unique meaning, that is, unambiguously captures the intent of a signer. +//! in Diem has a unique meaning, that is, unambiguously captures the intent of a signer. //! //! Regarding (2), this library provides the `CryptoHasher` abstraction to easily manage //! cryptographic seeds for hashing. Hashing seeds aim to ensure that @@ -31,16 +31,16 @@ //! from another type. //! //! Finally, to prevent format ambiguity within a same type `MyNewStruct` and facilitate protocol -//! specifications, we use [Libra Canonical Serialization (LCS)](../../libra_canonical_serialization/index.html) +//! specifications, we use [Diem Canonical Serialization (LCS)](../../diem_canonical_serialization/index.html) //! as the recommended solution to write Rust values into a hasher. //! //! # Quick Start //! //! To obtain a `hash()` method for any new type `MyNewStruct`, it is (strongly) recommended to -//! use the derive macros of `serde` and `libra_crypto_derive` as follows: +//! use the derive macros of `serde` and `diem_crypto_derive` as follows: //! ``` -//! use libra_crypto::hash::CryptoHash; -//! use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +//! use diem_crypto::hash::CryptoHash; +//! use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; //! use serde::{Deserialize, Serialize}; //! #[derive(Serialize, Deserialize, CryptoHasher, LCSCryptoHash)] //! struct MyNewStruct { /*...*/ } @@ -63,7 +63,7 @@ //! use the derive macro [`CryptoHasher`](https://doc.rust-lang.org/reference/procedural-macros.html). //! //! ``` -//! use libra_crypto_derive::CryptoHasher; +//! use diem_crypto_derive::CryptoHasher; //! use serde::Deserialize; //! #[derive(Deserialize, CryptoHasher)] //! #[serde(rename = "OptionalCustomSerdeName")] @@ -92,7 +92,7 @@ //! **IMPORTANT:** Do NOT use this for new code unless you know what you are doing. //! //! ``` -//! use libra_crypto::hash::{CryptoHasher, TestOnlyHasher}; +//! use diem_crypto::hash::{CryptoHasher, TestOnlyHasher}; //! //! let mut hasher = TestOnlyHasher::default(); //! hasher.update("Test message".as_bytes()); @@ -101,7 +101,7 @@ use anyhow::{ensure, Error, Result}; use bytes::Bytes; -use libra_nibble::Nibble; +use diem_nibble::Nibble; use mirai_annotations::*; use once_cell::sync::{Lazy, OnceCell}; #[cfg(any(test, feature = "fuzzing"))] @@ -113,10 +113,10 @@ use static_assertions::const_assert; use std::{self, convert::AsRef, fmt, str::FromStr}; use tiny_keccak::{Hasher, Sha3}; -/// A prefix used to begin the salt of every libra hashable structure. The salt +/// A prefix used to begin the salt of every diem hashable structure. The salt /// consists in this global prefix, concatenated with the specified /// serialization name of the struct. -pub(crate) const LIBRA_HASH_PREFIX: &[u8] = b"LIBRA::"; +pub(crate) const DIEM_HASH_PREFIX: &[u8] = b"DIEM::"; /// Output value of our hash function. Intentionally opaque for safety and modularity. #[derive(Clone, Copy, Eq, Hash, PartialEq, PartialOrd, Ord)] @@ -473,7 +473,7 @@ impl DefaultHasher { pub fn prefixed_hash(buffer: &[u8]) -> [u8; HashValue::LENGTH] { // The salt is initial material we prefix to actual value bytes for // domain separation. Its length is variable. - let salt: Vec = [LIBRA_HASH_PREFIX, buffer].concat(); + let salt: Vec = [DIEM_HASH_PREFIX, buffer].concat(); // The seed is a fixed-length hash of the salt, thereby preventing // suffix attacks on the domain separation bytes. HashValue::sha3_256_of(&salt[..]).hash @@ -640,7 +640,7 @@ pub static GENESIS_BLOCK_ID: Lazy = Lazy::new(|| { /// /// # Example /// ``` -/// use libra_crypto::hash::TestOnlyHash; +/// use diem_crypto::hash::TestOnlyHash; /// /// b"hello world".test_only_hash(); /// ``` diff --git a/crypto/crypto/src/hkdf.rs b/crypto/crypto/src/hkdf.rs index d83d4acbc4..87fb520a78 100644 --- a/crypto/crypto/src/hkdf.rs +++ b/crypto/crypto/src/hkdf.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! An implementation of HKDF, the HMAC-based Extract-and-Expand Key Derivation Function for the -//! Libra project based on [RFC 5869](https://tools.ietf.org/html/rfc5869). +//! Diem project based on [RFC 5869](https://tools.ietf.org/html/rfc5869). //! //! The key derivation function (KDF) is intended to support a wide range of applications and //! requirements, and is conservative in its use of cryptographic hash functions. In particular, @@ -21,7 +21,7 @@ //! //! HKDF is intended for use in a wide variety of KDF applications (see [Key derivation function](https://en.wikipedia.org/wiki/Key_derivation_function)), including: //! a) derivation of keys from an origin high-entropy master seed. This is the recommended approach -//! for generating keys in Libra, especially when a True Random Generator is not available. +//! for generating keys in Diem, especially when a True Random Generator is not available. //! b) derivation of session keys from a shared Diffie-Hellman value in a key-agreement protocol. //! c) combining entropy from multiple sources of randomness, such as entropy collected //! from system events, user's keystrokes, /dev/urandom etc. The combined seed can then be used to @@ -58,7 +58,7 @@ //! Run HKDF extract-then-expand so as to return 64 bytes, using 'salt', 'seed' and 'info' as //! inputs. //! ``` -//! use libra_crypto::hkdf::Hkdf; +//! use diem_crypto::hkdf::Hkdf; //! use sha2::Sha256; //! //! // some bytes required for this example. diff --git a/crypto/crypto/src/lib.rs b/crypto/crypto/src/lib.rs index eb24b89118..8589e16b2d 100644 --- a/crypto/crypto/src/lib.rs +++ b/crypto/crypto/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] #![deny(missing_docs)] -//! This feature gets turned on only if libra-crypto is compiled via MIRAI in a nightly build. +//! This feature gets turned on only if diem-crypto is compiled via MIRAI in a nightly build. #![cfg_attr(mirai, allow(incomplete_features), feature(const_generics))] //! A library supplying various cryptographic primitives diff --git a/crypto/crypto/src/multi_ed25519.rs b/crypto/crypto/src/multi_ed25519.rs index 0eaa65539d..9de6bca13b 100644 --- a/crypto/crypto/src/multi_ed25519.rs +++ b/crypto/crypto/src/multi_ed25519.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides an API for the accountable threshold multi-sig PureEdDSA signature scheme @@ -18,7 +18,7 @@ use crate::{ }; use anyhow::{anyhow, Result}; use core::convert::TryFrom; -use libra_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; +use diem_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; use mirai_annotations::*; use rand::Rng; use serde::Serialize; diff --git a/crypto/crypto/src/noise.rs b/crypto/crypto/src/noise.rs index 2aafa8fd5b..627dee1279 100644 --- a/crypto/crypto/src/noise.rs +++ b/crypto/crypto/src/noise.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Noise is a [protocol framework](https://noiseprotocol.org/) which we use in Libra to +//! Noise is a [protocol framework](https://noiseprotocol.org/) which we use in Diem to //! encrypt and authenticate communications between nodes of the network. //! //! This file implements a stripped-down version of Noise_IK_25519_AESGCM_SHA256. @@ -13,10 +13,10 @@ //! Usage example: //! //! ``` -//! use libra_crypto::{noise, x25519, traits::*}; +//! use diem_crypto::{noise, x25519, traits::*}; //! use rand::prelude::*; //! -//! # fn main() -> Result<(), libra_crypto::noise::NoiseError> { +//! # fn main() -> Result<(), diem_crypto::noise::NoiseError> { //! let mut rng = rand::thread_rng(); //! let initiator_static = x25519::PrivateKey::generate(&mut rng); //! let responder_static = x25519::PrivateKey::generate(&mut rng); diff --git a/crypto/crypto/src/tags.rs b/crypto/crypto/src/tags.rs index 5827514caa..a463e3f5a6 100644 --- a/crypto/crypto/src/tags.rs +++ b/crypto/crypto/src/tags.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This module provides definitions of tag types to be used by MIRAI analyzing libra-crypto. -//! This module gets compiled only if the libra-crypto is compiled via MIRAI in a debug build. +//! This module provides definitions of tag types to be used by MIRAI analyzing diem-crypto. +//! This module gets compiled only if the diem-crypto is compiled via MIRAI in a debug build. use mirai_annotations::*; /// A MIRAI tag type that tracks if a public key is checked to protect against invalid point /// attacks, small subgroup attacks, and typos. This tag type is only used at compilation time. -/// This type should only be accessible inside libra-crypto. +/// This type should only be accessible inside diem-crypto. pub type ValidatedPublicKeyTag = ValidatedPublicKeyTagKind; /// A generic tag type intended to only be used by ValidatedPublicKeyTag diff --git a/crypto/crypto/src/test_utils.rs b/crypto/crypto/src/test_utils.rs index 62e7340d9d..9b2d478ecc 100644 --- a/crypto/crypto/src/test_utils.rs +++ b/crypto/crypto/src/test_utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Internal module containing convenience utility functions mainly for testing @@ -102,49 +102,49 @@ where /// LCS serialization and domain separation #[cfg(any(test, feature = "fuzzing"))] #[derive(Debug, Serialize, Deserialize)] -pub struct TestLibraCrypto(pub String); +pub struct TestDiemCrypto(pub String); // the following block is macro expanded from derive(CryptoHasher, LCSCryptoHash) /// Cryptographic hasher for an LCS-serializable #item #[cfg(any(test, feature = "fuzzing"))] -pub struct TestLibraCryptoHasher(crate::hash::DefaultHasher); +pub struct TestDiemCryptoHasher(crate::hash::DefaultHasher); #[cfg(any(test, feature = "fuzzing"))] -impl ::core::clone::Clone for TestLibraCryptoHasher { +impl ::core::clone::Clone for TestDiemCryptoHasher { #[inline] - fn clone(&self) -> TestLibraCryptoHasher { + fn clone(&self) -> TestDiemCryptoHasher { match *self { - TestLibraCryptoHasher(ref __self_0_0) => { - TestLibraCryptoHasher(::core::clone::Clone::clone(&(*__self_0_0))) + TestDiemCryptoHasher(ref __self_0_0) => { + TestDiemCryptoHasher(::core::clone::Clone::clone(&(*__self_0_0))) } } } } #[cfg(any(test, feature = "fuzzing"))] -static TEST_LIBRA_CRYPTO_SEED: crate::_once_cell::sync::OnceCell<[u8; 32]> = +static TEST_DIEM_CRYPTO_SEED: crate::_once_cell::sync::OnceCell<[u8; 32]> = crate::_once_cell::sync::OnceCell::new(); #[cfg(any(test, feature = "fuzzing"))] -impl TestLibraCryptoHasher { +impl TestDiemCryptoHasher { fn new() -> Self { - let name = crate::_serde_name::trace_name::() + let name = crate::_serde_name::trace_name::() .expect("The `CryptoHasher` macro only applies to structs and enums"); - TestLibraCryptoHasher(crate::hash::DefaultHasher::new(&name.as_bytes())) + TestDiemCryptoHasher(crate::hash::DefaultHasher::new(&name.as_bytes())) } } #[cfg(any(test, feature = "fuzzing"))] -static TEST_LIBRA_CRYPTO_HASHER: crate::_once_cell::sync::Lazy = - crate::_once_cell::sync::Lazy::new(TestLibraCryptoHasher::new); +static TEST_DIEM_CRYPTO_HASHER: crate::_once_cell::sync::Lazy = + crate::_once_cell::sync::Lazy::new(TestDiemCryptoHasher::new); #[cfg(any(test, feature = "fuzzing"))] -impl std::default::Default for TestLibraCryptoHasher { +impl std::default::Default for TestDiemCryptoHasher { fn default() -> Self { - TEST_LIBRA_CRYPTO_HASHER.clone() + TEST_DIEM_CRYPTO_HASHER.clone() } } #[cfg(any(test, feature = "fuzzing"))] -impl crate::hash::CryptoHasher for TestLibraCryptoHasher { +impl crate::hash::CryptoHasher for TestDiemCryptoHasher { fn seed() -> &'static [u8; 32] { - TEST_LIBRA_CRYPTO_SEED.get_or_init(|| { - let name = crate::_serde_name::trace_name::() + TEST_DIEM_CRYPTO_SEED.get_or_init(|| { + let name = crate::_serde_name::trace_name::() .expect("The `CryptoHasher` macro only applies to structs and enums.") .as_bytes(); crate::hash::DefaultHasher::prefixed_hash(&name) @@ -158,7 +158,7 @@ impl crate::hash::CryptoHasher for TestLibraCryptoHasher { } } #[cfg(any(test, feature = "fuzzing"))] -impl std::io::Write for TestLibraCryptoHasher { +impl std::io::Write for TestDiemCryptoHasher { fn write(&mut self, bytes: &[u8]) -> std::io::Result { self.0.update(bytes); Ok(bytes.len()) @@ -168,19 +168,19 @@ impl std::io::Write for TestLibraCryptoHasher { } } #[cfg(any(test, feature = "fuzzing"))] -impl crate::hash::CryptoHash for TestLibraCrypto { - type Hasher = TestLibraCryptoHasher; +impl crate::hash::CryptoHash for TestDiemCrypto { + type Hasher = TestDiemCryptoHasher; fn hash(&self) -> crate::hash::HashValue { use crate::hash::CryptoHasher; let mut state = Self::Hasher::default(); lcs::serialize_into(&mut state, &self) - .expect("LCS serialization of TestLibraCrypto should not fail"); + .expect("LCS serialization of TestDiemCrypto should not fail"); state.finish() } } -/// Produces a random TestLibraCrypto signable / verifiable struct. +/// Produces a random TestDiemCrypto signable / verifiable struct. #[cfg(any(test, feature = "fuzzing"))] -pub fn random_serializable_struct() -> impl Strategy { - (String::arbitrary()).prop_map(TestLibraCrypto).no_shrink() +pub fn random_serializable_struct() -> impl Strategy { + (String::arbitrary()).prop_map(TestDiemCrypto).no_shrink() } diff --git a/crypto/crypto/src/traits.rs b/crypto/crypto/src/traits.rs index 3e7a17a35c..f1649f329e 100644 --- a/crypto/crypto/src/traits.rs +++ b/crypto/crypto/src/traits.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides a generic set of traits for dealing with cryptographic primitives. @@ -125,7 +125,7 @@ pub trait SigningKey: /// that we know how to serialize. There is no pre-hashing into a /// `HashValue` to be done by the caller. /// - /// Note: this assumes serialization is unfaillible. See libra_common::lcs::ser + /// Note: this assumes serialization is unfaillible. See diem_common::lcs::ser /// for a discussion of this assumption. fn sign(&self, message: &T) -> Self::SignatureMaterial; diff --git a/crypto/crypto/src/unit_tests/compat_test.rs b/crypto/crypto/src/unit_tests/compat_test.rs index 7a3073a125..eaca56440d 100644 --- a/crypto/crypto/src/unit_tests/compat_test.rs +++ b/crypto/crypto/src/unit_tests/compat_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::compat; diff --git a/crypto/crypto/src/unit_tests/compilation/cross_test.rs b/crypto/crypto/src/unit_tests/compilation/cross_test.rs index ffd9242823..438986ebb7 100644 --- a/crypto/crypto/src/unit_tests/compilation/cross_test.rs +++ b/crypto/crypto/src/unit_tests/compilation/cross_test.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, multi_ed25519::{MultiEd25519PrivateKey, MultiEd25519PublicKey}, test_utils::KeyPair, traits::*, }; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; use rand::{prelude::ThreadRng, thread_rng}; use serde::{Deserialize, Serialize}; diff --git a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj.rs b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj.rs index 7988f808af..a9357cd336 100644 --- a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj.rs +++ b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::traits::*; +use diem_crypto::traits::*; fn main() { let mut l: Vec> = vec![]; diff --git a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_pub.rs b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_pub.rs index 168a10c6b6..423cc95e0d 100644 --- a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_pub.rs +++ b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_pub.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::traits::*; +use diem_crypto::traits::*; fn main() { let mut l: Vec> = vec![]; diff --git a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_sig.rs b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_sig.rs index 7988f808af..a9357cd336 100644 --- a/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_sig.rs +++ b/crypto/crypto/src/unit_tests/compilation/cross_test_trait_obj_sig.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::traits::*; +use diem_crypto::traits::*; fn main() { let mut l: Vec> = vec![]; diff --git a/crypto/crypto/src/unit_tests/compilation/small_kdf.rs b/crypto/crypto/src/unit_tests/compilation/small_kdf.rs index 6ea49b372a..ff0d2c4cf1 100644 --- a/crypto/crypto/src/unit_tests/compilation/small_kdf.rs +++ b/crypto/crypto/src/unit_tests/compilation/small_kdf.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 fn main() { // Test for ripemd160, output_length < 256 - let ripemd = libra_crypto::hkdf::Hkdf::::extract(None, &[]); + let ripemd = diem_crypto::hkdf::Hkdf::::extract(None, &[]); assert!(ripemd.is_ok()); } diff --git a/crypto/crypto/src/unit_tests/cross_test.rs b/crypto/crypto/src/unit_tests/cross_test.rs index f38293452d..8f68bec537 100644 --- a/crypto/crypto/src/unit_tests/cross_test.rs +++ b/crypto/crypto/src/unit_tests/cross_test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // This is necessary for the derive macros which rely on being used in a // context where the crypto crate is external -use crate as libra_crypto; +use crate as diem_crypto; use crate::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, multi_ed25519::{MultiEd25519PrivateKey, MultiEd25519PublicKey, MultiEd25519Signature}, @@ -11,7 +11,7 @@ use crate::{ traits::*, }; -use libra_crypto_derive::{ +use diem_crypto_derive::{ PrivateKey, PublicKey, Signature, SigningKey, SilentDebug, ValidCryptoMaterial, VerifyingKey, }; use proptest::prelude::*; diff --git a/crypto/crypto/src/unit_tests/cryptohasher.rs b/crypto/crypto/src/unit_tests/cryptohasher.rs index 34c6450396..00d25dcb30 100644 --- a/crypto/crypto/src/unit_tests/cryptohasher.rs +++ b/crypto/crypto/src/unit_tests/cryptohasher.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Test file for the procedural macros CryptoHasher and LCSCryptoHash. -use crate as libra_crypto; +use crate as diem_crypto; use crate::{ - hash::{CryptoHash, CryptoHasher, LIBRA_HASH_PREFIX}, + hash::{CryptoHash, CryptoHasher, DIEM_HASH_PREFIX}, HashValue, }; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; use serde::{Deserialize, Serialize}; use tiny_keccak::{Hasher, Sha3}; @@ -41,7 +41,7 @@ impl CryptoHash for Bar { #[test] fn test_cryptohasher_name() { - let mut salt = LIBRA_HASH_PREFIX.to_vec(); + let mut salt = DIEM_HASH_PREFIX.to_vec(); salt.extend_from_slice(b"Foo"); let value = Bar {}; @@ -58,7 +58,7 @@ fn test_cryptohasher_name() { #[test] fn test_lcs_cryptohash() { - let mut salt = LIBRA_HASH_PREFIX.to_vec(); + let mut salt = DIEM_HASH_PREFIX.to_vec(); salt.extend_from_slice(b"Foo"); let value = Foo { a: 5, b: 1025 }; @@ -84,7 +84,7 @@ fn test_lcs_cryptohash_with_generics() { fn prefixed_sha3(input: &[u8]) -> [u8; 32] { let mut sha3 = ::tiny_keccak::Sha3::v256(); - let salt: Vec = [LIBRA_HASH_PREFIX, input].concat(); + let salt: Vec = [DIEM_HASH_PREFIX, input].concat(); sha3.update(&salt); let mut output = [0u8; 32]; sha3.finalize(&mut output); diff --git a/crypto/crypto/src/unit_tests/ed25519_test.rs b/crypto/crypto/src/unit_tests/ed25519_test.rs index 4cd5003dc2..029dca36f5 100644 --- a/crypto/crypto/src/unit_tests/ed25519_test.rs +++ b/crypto/crypto/src/unit_tests/ed25519_test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(any(feature = "vanilla-u64", feature = "vanilla-u32"))] use vanilla_curve25519_dalek as curve25519_dalek; #[cfg(any(feature = "vanilla-u64", feature = "vanilla-u32"))] use vanilla_ed25519_dalek as ed25519_dalek; -use crate as libra_crypto; +use crate as diem_crypto; use crate::{ ed25519::{ Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature, ED25519_PRIVATE_KEY_LENGTH, @@ -22,8 +22,8 @@ use core::{ }; use ed25519_dalek::ed25519::signature::{Signature as _, Verifier as _}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; use digest::Digest; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; use proptest::{collection::vec, prelude::*}; use serde::{Deserialize, Serialize}; use sha2::Sha512; diff --git a/crypto/crypto/src/unit_tests/hash_test.rs b/crypto/crypto/src/unit_tests/hash_test.rs index 28ec62cdad..0055853a33 100644 --- a/crypto/crypto/src/unit_tests/hash_test.rs +++ b/crypto/crypto/src/unit_tests/hash_test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::hash::*; use bitvec::prelude::*; -use libra_nibble::Nibble; +use diem_nibble::Nibble; use proptest::{collection::vec, prelude::*}; use rand::{rngs::StdRng, SeedableRng}; use serde::Serialize; diff --git a/crypto/crypto/src/unit_tests/hkdf_test.rs b/crypto/crypto/src/unit_tests/hkdf_test.rs index 5ec116cf1d..0dca726aaf 100644 --- a/crypto/crypto/src/unit_tests/hkdf_test.rs +++ b/crypto/crypto/src/unit_tests/hkdf_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{compat::Sha3_256, hkdf::*}; diff --git a/crypto/crypto/src/unit_tests/lcs_test.rs b/crypto/crypto/src/unit_tests/lcs_test.rs index 1a054592f0..c54dc7ee8b 100644 --- a/crypto/crypto/src/unit_tests/lcs_test.rs +++ b/crypto/crypto/src/unit_tests/lcs_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use rand::{rngs::StdRng, SeedableRng}; @@ -10,7 +10,7 @@ use crate::{ ED25519_PUBLIC_KEY_LENGTH, ED25519_SIGNATURE_LENGTH, }, multi_ed25519::{MultiEd25519PrivateKey, MultiEd25519PublicKey, MultiEd25519Signature}, - test_utils::{TestLibraCrypto, TEST_SEED}, + test_utils::{TestDiemCrypto, TEST_SEED}, Signature, SigningKey, Uniform, }; @@ -31,7 +31,7 @@ fn ed25519_lcs_material() { lcs::from_bytes(&serialized_public_key).unwrap(); assert_eq!(deserialized_public_key, public_key); - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); let signature: Ed25519Signature = private_key.sign(&message); let serialized_signature = lcs::to_bytes(&Cow::Borrowed(&signature)).unwrap(); @@ -81,7 +81,7 @@ fn multi_ed25519_lcs_material() { lcs::from_bytes(&serialized_multi_public_key).unwrap(); assert_eq!(deserialized_multi_public_key, multi_public_key_7of10); - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); // Verifying a 7-of-10 signature against a public key with the same threshold should pass. let multi_signature_7of10: MultiEd25519Signature = multi_private_key_7of10.sign(&message); diff --git a/crypto/crypto/src/unit_tests/mod.rs b/crypto/crypto/src/unit_tests/mod.rs index 4ee1b213fc..ae25123819 100644 --- a/crypto/crypto/src/unit_tests/mod.rs +++ b/crypto/crypto/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod compat_test; diff --git a/crypto/crypto/src/unit_tests/multi_ed25519_test.rs b/crypto/crypto/src/unit_tests/multi_ed25519_test.rs index 44aa8ce54e..50d8d6160a 100644 --- a/crypto/crypto/src/unit_tests/multi_ed25519_test.rs +++ b/crypto/crypto/src/unit_tests/multi_ed25519_test.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, ED25519_PUBLIC_KEY_LENGTH}, multi_ed25519::{MultiEd25519PrivateKey, MultiEd25519PublicKey}, - test_utils::{TestLibraCrypto, TEST_SEED}, + test_utils::{TestDiemCrypto, TEST_SEED}, traits::*, CryptoMaterialError::{ValidationError, WrongLengthError}, }; @@ -14,8 +14,8 @@ use core::convert::TryFrom; use once_cell::sync::Lazy; use rand::{rngs::StdRng, SeedableRng}; -static MESSAGE: Lazy = Lazy::new(|| TestLibraCrypto("Test Message".to_string())); -fn message() -> &'static TestLibraCrypto { +static MESSAGE: Lazy = Lazy::new(|| TestDiemCrypto("Test Message".to_string())); +fn message() -> &'static TestDiemCrypto { &MESSAGE } diff --git a/crypto/crypto/src/unit_tests/noise_test.rs b/crypto/crypto/src/unit_tests/noise_test.rs index 5c389acf75..ca3611a2a6 100644 --- a/crypto/crypto/src/unit_tests/noise_test.rs +++ b/crypto/crypto/src/unit_tests/noise_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{fs::File, io::BufReader, path::PathBuf}; diff --git a/crypto/crypto/src/x25519.rs b/crypto/crypto/src/x25519.rs index bd34ab43d5..65bffbe0ad 100644 --- a/crypto/crypto/src/x25519.rs +++ b/crypto/crypto/src/x25519.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! An abstraction of x25519 elliptic curve keys required for //! [Diffie-Hellman key exchange](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) -//! in the Libra project. +//! in the Diem project. //! Ideally, only `x25519::PrivateKey` and `x25519::PublicKey` should be used throughout the //! codebase, until the bytes are actually used in cryptographic operations. //! //! # Examples //! //! ``` -//! use libra_crypto::{x25519, Uniform, test_utils::TEST_SEED}; +//! use diem_crypto::{x25519, Uniform, test_utils::TEST_SEED}; //! use rand::{rngs::StdRng, SeedableRng}; //! //! // Derive an X25519 private key for testing. @@ -19,8 +19,8 @@ //! let public_key = private_key.public_key(); //! //! // Deserialize an hexadecimal private or public key -//! use libra_crypto::traits::ValidCryptoMaterialStringExt; -//! # fn main() -> Result<(), libra_crypto::traits::CryptoMaterialError> { +//! use diem_crypto::traits::ValidCryptoMaterialStringExt; +//! # fn main() -> Result<(), diem_crypto::traits::CryptoMaterialError> { //! let private_key = "404acc8ec6a0f18df7359a6ee7823f19dd95616b10fed8bdb0de030e891b945a"; //! let private_key = x25519::PrivateKey::from_encoded_string(&private_key)?; //! let public_key = "080e287879c918794170e258bfaddd75acac5b3e350419044655e4983a487120"; @@ -38,7 +38,7 @@ use crate::{ traits::{self, CryptoMaterialError, ValidCryptoMaterial, ValidCryptoMaterialStringExt}, x25519, }; -use libra_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; +use diem_crypto_derive::{DeserializeKey, SerializeKey, SilentDebug, SilentDisplay}; use rand::{CryptoRng, RngCore}; use std::convert::{TryFrom, TryInto}; @@ -50,7 +50,7 @@ use proptest_derive::Arbitrary; // ========================= // // We re-export the dalek-x25519 library, -// This makes it easier to uniformalize build dalek-x25519 in libra-core. +// This makes it easier to uniformalize build dalek-x25519 in diem-core. // #[cfg(any(feature = "vanilla-u64", feature = "vanilla-u32"))] diff --git a/developers.libra.org/scripts/build_docs.sh b/developers.libra.org/scripts/build_docs.sh index 5a7e23c6be..822ea5e9ad 100755 --- a/developers.libra.org/scripts/build_docs.sh +++ b/developers.libra.org/scripts/build_docs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # run this script from the project root using `./scripts/build_docs.sh` diff --git a/devtools/x-core/Cargo.toml b/devtools/x-core/Cargo.toml index 8cf7b100e2..20511acced 100644 --- a/devtools/x-core/Cargo.toml +++ b/devtools/x-core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "x-core" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Core data structures used by x" edition = "2018" publish = false @@ -12,7 +12,7 @@ determinator = "0.1.0" guppy = "0.6.1" indoc = "1.0.3" hex = "0.4.2" -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } log = "0.4.11" toml = "0.5.7" once_cell = "1.4.1" diff --git a/devtools/x-core/src/debug_ignore.rs b/devtools/x-core/src/debug_ignore.rs index 75e3e81e9d..67e1615c8a 100644 --- a/devtools/x-core/src/debug_ignore.rs +++ b/devtools/x-core/src/debug_ignore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{ diff --git a/devtools/x-core/src/errors.rs b/devtools/x-core/src/errors.rs index 2ebc8208b7..271ab3cdb1 100644 --- a/devtools/x-core/src/errors.rs +++ b/devtools/x-core/src/errors.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use hex::FromHexError; diff --git a/devtools/x-core/src/git.rs b/devtools/x-core/src/git.rs index 12e894b3f8..12a54fb5c6 100644 --- a/devtools/x-core/src/git.rs +++ b/devtools/x-core/src/git.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::errors::*; diff --git a/devtools/x-core/src/graph.rs b/devtools/x-core/src/graph.rs index c46f331a9e..6f63fe0519 100644 --- a/devtools/x-core/src/graph.rs +++ b/devtools/x-core/src/graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{Result, WorkspaceSubset, XCoreContext}; diff --git a/devtools/x-core/src/lib.rs b/devtools/x-core/src/lib.rs index aba87f123e..a4de7c4fe5 100644 --- a/devtools/x-core/src/lib.rs +++ b/devtools/x-core/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[macro_use] diff --git a/devtools/x-core/src/workspace_subset.rs b/devtools/x-core/src/workspace_subset.rs index 2a412cc797..89a63de927 100644 --- a/devtools/x-core/src/workspace_subset.rs +++ b/devtools/x-core/src/workspace_subset.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{Result, SystemError}; diff --git a/devtools/x-lint/Cargo.toml b/devtools/x-lint/Cargo.toml index b0afd6412f..5ba87ec3cf 100644 --- a/devtools/x-lint/Cargo.toml +++ b/devtools/x-lint/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "x-lint" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Lint engine for x" edition = "2018" publish = false @@ -9,7 +9,7 @@ license = "Apache-2.0" [dependencies] guppy = "0.6.1" -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } once_cell = "1.4.1" toml = "0.5.7" serde = { version = "1.0.117", features = ["derive"] } diff --git a/devtools/x-lint/src/content.rs b/devtools/x-lint/src/content.rs index 1e28698a25..1c099f7b71 100644 --- a/devtools/x-lint/src/content.rs +++ b/devtools/x-lint/src/content.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{prelude::*, LintContext}; diff --git a/devtools/x-lint/src/file_path.rs b/devtools/x-lint/src/file_path.rs index 9682f94c04..690b0162e7 100644 --- a/devtools/x-lint/src/file_path.rs +++ b/devtools/x-lint/src/file_path.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{prelude::*, LintContext}; diff --git a/devtools/x-lint/src/lib.rs b/devtools/x-lint/src/lib.rs index f10aaeb48c..cb297f9ca6 100644 --- a/devtools/x-lint/src/lib.rs +++ b/devtools/x-lint/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Lint engine. diff --git a/devtools/x-lint/src/package.rs b/devtools/x-lint/src/package.rs index 3040daf518..530779a7eb 100644 --- a/devtools/x-lint/src/package.rs +++ b/devtools/x-lint/src/package.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{prelude::*, LintContext}; diff --git a/devtools/x-lint/src/project.rs b/devtools/x-lint/src/project.rs index c327a6b016..0513ace020 100644 --- a/devtools/x-lint/src/project.rs +++ b/devtools/x-lint/src/project.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{prelude::*, LintContext}; diff --git a/devtools/x-lint/src/runner.rs b/devtools/x-lint/src/runner.rs index 8e9ca67de5..6149f906c3 100644 --- a/devtools/x-lint/src/runner.rs +++ b/devtools/x-lint/src/runner.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{prelude::*, LintContext}; @@ -243,7 +243,7 @@ impl<'cfg> LintEngine<'cfg> { // TODO: make global exclusions configurable Ok(tracked_files .iter() - .filter(|f| !f.starts_with("testsuite/libra-fuzzer/artifacts/"))) + .filter(|f| !f.starts_with("testsuite/diem-fuzzer/artifacts/"))) } } diff --git a/devtools/x/Cargo.toml b/devtools/x/Cargo.toml index c736ad0e18..6c5264e7ff 100644 --- a/devtools/x/Cargo.toml +++ b/devtools/x/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "x" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra extended cargo tasks" +authors = ["Diem Association "] +description = "Diem extended cargo tasks" edition = "2018" publish = false license = "Apache-2.0" @@ -26,4 +26,4 @@ rayon = "1.5.0" indexmap = "1.6.0" x-core = { version = "0.1.0", path = "../x-core" } x-lint = { version = "0.1.0", path = "../x-lint" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/devtools/x/src/bench.rs b/devtools/x/src/bench.rs index eca88170aa..765bc13c4d 100644 --- a/devtools/x/src/bench.rs +++ b/devtools/x/src/bench.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/devtools/x/src/build.rs b/devtools/x/src/build.rs index ad83d4cfbe..2f21762eee 100644 --- a/devtools/x/src/build.rs +++ b/devtools/x/src/build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ cargo::{CargoArgs, CargoCommand, SelectedPackageArgs}, diff --git a/devtools/x/src/cargo.rs b/devtools/x/src/cargo.rs index 24c8d8755b..0c555769ca 100644 --- a/devtools/x/src/cargo.rs +++ b/devtools/x/src/cargo.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/devtools/x/src/changed_since.rs b/devtools/x/src/changed_since.rs index 629985276f..6e32797cb0 100644 --- a/devtools/x/src/changed_since.rs +++ b/devtools/x/src/changed_since.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{context::XContext, Result}; diff --git a/devtools/x/src/check.rs b/devtools/x/src/check.rs index dec38c3f02..4cc7157bfa 100644 --- a/devtools/x/src/check.rs +++ b/devtools/x/src/check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/devtools/x/src/clippy.rs b/devtools/x/src/clippy.rs index c414115078..e5b8aac8cf 100644 --- a/devtools/x/src/clippy.rs +++ b/devtools/x/src/clippy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{cargo::CargoCommand, check, context::XContext, Result}; diff --git a/devtools/x/src/config.rs b/devtools/x/src/config.rs index 111f59ed8b..7c48358ea0 100644 --- a/devtools/x/src/config.rs +++ b/devtools/x/src/config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{utils::project_root, Result}; diff --git a/devtools/x/src/context.rs b/devtools/x/src/context.rs index b3279adb92..431cfa0e67 100644 --- a/devtools/x/src/context.rs +++ b/devtools/x/src/context.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{config::Config, installer::Installer, utils::project_root, Result}; diff --git a/devtools/x/src/diff_summary.rs b/devtools/x/src/diff_summary.rs index 46d5c2fa60..16536a0861 100644 --- a/devtools/x/src/diff_summary.rs +++ b/devtools/x/src/diff_summary.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::context::XContext; diff --git a/devtools/x/src/fix.rs b/devtools/x/src/fix.rs index b7f83129de..d06ebea665 100644 --- a/devtools/x/src/fix.rs +++ b/devtools/x/src/fix.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{cargo::CargoCommand, check, context::XContext, Result}; diff --git a/devtools/x/src/fmt.rs b/devtools/x/src/fmt.rs index 2f803e30b8..9afcb82b18 100644 --- a/devtools/x/src/fmt.rs +++ b/devtools/x/src/fmt.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{cargo::Cargo, context::XContext, Result}; diff --git a/devtools/x/src/generate_summaries.rs b/devtools/x/src/generate_summaries.rs index 0ca2ef530d..b84cbabc34 100644 --- a/devtools/x/src/generate_summaries.rs +++ b/devtools/x/src/generate_summaries.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::context::XContext; @@ -86,7 +86,7 @@ fn write_summary( let build_set = feature_query.resolve_cargo(cargo_opts)?; let mut out = format!( - "# Summary for Libra subset '{}'. @generated by x.\n\ + "# Summary for Diem subset '{}'. @generated by x.\n\ # To regenerate, run 'cargo x generate-summaries'.\n\n", name ); diff --git a/devtools/x/src/installer.rs b/devtools/x/src/installer.rs index 707685b64c..376d08ef0c 100644 --- a/devtools/x/src/installer.rs +++ b/devtools/x/src/installer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/devtools/x/src/lint/allowed_paths.rs b/devtools/x/src/lint/allowed_paths.rs index 7120d4c439..17361f3a2e 100644 --- a/devtools/x/src/lint/allowed_paths.rs +++ b/devtools/x/src/lint/allowed_paths.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; diff --git a/devtools/x/src/lint/determinator.rs b/devtools/x/src/lint/determinator.rs index 1ed8b91d82..63bfd95d09 100644 --- a/devtools/x/src/lint/determinator.rs +++ b/devtools/x/src/lint/determinator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; diff --git a/devtools/x/src/lint/guppy.rs b/devtools/x/src/lint/guppy.rs index b7777340f1..657d3156cd 100644 --- a/devtools/x/src/lint/guppy.rs +++ b/devtools/x/src/lint/guppy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Project and package linters that run queries on guppy. @@ -188,7 +188,7 @@ impl PackageLinter for CrateNamesPaths { } } -/// Ensure libra-workspace-hack is a dependency +/// Ensure diem-workspace-hack is a dependency #[derive(Debug)] pub struct WorkspaceHack; @@ -208,11 +208,11 @@ impl PackageLinter for WorkspaceHack { let pkg_graph = ctx.package_graph(); let workspace_hack_id = pkg_graph .workspace() - .member_by_name("libra-workspace-hack") - .expect("can't find libra-workspace-hack package") + .member_by_name("diem-workspace-hack") + .expect("can't find diem-workspace-hack package") .id(); - // libra-workspace-hack does not need to depend on itself + // diem-workspace-hack does not need to depend on itself if package.id() == workspace_hack_id { return Ok(RunStatus::Executed); } @@ -222,7 +222,7 @@ impl PackageLinter for WorkspaceHack { .directly_depends_on(package.id(), workspace_hack_id) .expect("valid package ID"); if has_links && !has_hack_dep { - out.write(LintLevel::Error, "missing libra-workspace-hack dependency"); + out.write(LintLevel::Error, "missing diem-workspace-hack dependency"); } Ok(RunStatus::Executed) diff --git a/devtools/x/src/lint/license.rs b/devtools/x/src/lint/license.rs index 5b146b995e..869f7a1fe8 100644 --- a/devtools/x/src/lint/license.rs +++ b/devtools/x/src/lint/license.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use x_lint::prelude::*; -static LICENSE_HEADER: &str = "Copyright (c) The Libra Core Contributors\n\ +static LICENSE_HEADER: &str = "Copyright (c) The Diem Core Contributors\n\ SPDX-License-Identifier: Apache-2.0\n\ "; diff --git a/devtools/x/src/lint/mod.rs b/devtools/x/src/lint/mod.rs index d8a508acc7..553d0cec2b 100644 --- a/devtools/x/src/lint/mod.rs +++ b/devtools/x/src/lint/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::context::XContext; diff --git a/devtools/x/src/lint/toml.rs b/devtools/x/src/lint/toml.rs index aa3cea4d55..a9d7ba27fb 100644 --- a/devtools/x/src/lint/toml.rs +++ b/devtools/x/src/lint/toml.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use colored_diff::PrettyDifference; diff --git a/devtools/x/src/lint/whitespace.rs b/devtools/x/src/lint/whitespace.rs index df18f32258..ec45fb5b9d 100644 --- a/devtools/x/src/lint/whitespace.rs +++ b/devtools/x/src/lint/whitespace.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; diff --git a/devtools/x/src/lint/workspace_classify.rs b/devtools/x/src/lint/workspace_classify.rs index 0758f554d6..359c1e67aa 100644 --- a/devtools/x/src/lint/workspace_classify.rs +++ b/devtools/x/src/lint/workspace_classify.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::config::TestOnlyConfig; diff --git a/devtools/x/src/main.rs b/devtools/x/src/main.rs index b7276d1973..dc51907191 100644 --- a/devtools/x/src/main.rs +++ b/devtools/x/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/devtools/x/src/test.rs b/devtools/x/src/test.rs index 2647924654..5d5346832f 100644 --- a/devtools/x/src/test.rs +++ b/devtools/x/src/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -22,7 +22,7 @@ pub struct Args { #[structopt(flatten)] pub(crate) package_args: SelectedPackageArgs, #[structopt(long, short)] - /// Skip running expensive libra testsuite integration tests + /// Skip running expensive diem testsuite integration tests unit: bool, #[structopt(long)] /// Test only this package's library unit tests, skipping doctests diff --git a/devtools/x/src/tools.rs b/devtools/x/src/tools.rs index ca9c4faf8b..69f0bbcc4f 100644 --- a/devtools/x/src/tools.rs +++ b/devtools/x/src/tools.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{context::XContext, Result}; diff --git a/devtools/x/src/utils.rs b/devtools/x/src/utils.rs index f749a8f874..08a06108c4 100644 --- a/devtools/x/src/utils.rs +++ b/devtools/x/src/utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{config::CargoConfig, installer::install_if_needed, Result}; @@ -46,11 +46,11 @@ pub fn apply_sccache_if_possible<'a>( if !correct_location { warn!("You will not benefit from sccache in this build!!!"); warn!( - "To get the best experience, please move your libra source code to {} and your set your CARGO_HOME to be {}, simply export it in your .profile or .bash_rc", + "To get the best experience, please move your diem source code to {} and your set your CARGO_HOME to be {}, simply export it in your .profile or .bash_rc", &sccache_config.required_git_home, &sccache_config.required_cargo_home ); warn!( - "Current libra root is '{}', and current CARGO_HOME is '{}'", + "Current diem root is '{}', and current CARGO_HOME is '{}'", project_root().to_str().unwrap_or_default(), var_os("CARGO_HOME").unwrap_or_default().to_string_lossy() ); diff --git a/libra-node/Cargo.toml b/diem-node/Cargo.toml similarity index 51% rename from libra-node/Cargo.toml rename to diem-node/Cargo.toml index c28b0c2cfb..4552d9090c 100644 --- a/libra-node/Cargo.toml +++ b/diem-node/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-node" +name = "diem-node" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra node" +authors = ["Diem Association "] +description = "Diem node" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -22,20 +22,20 @@ crash-handler = { path = "../common/crash-handler", version = "0.1.0" } debug-interface = { path = "../common/debug-interface", version = "0.1.0" } executor = { path = "../execution/executor", version = "0.1.0" } executor-types = { path = "../execution/executor-types", version = "0.1.0" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-json-rpc = { path = "../json-rpc", version = "0.1.0" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-mempool = { path = "../mempool", version = "0.1.0" } -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-secure-storage = { path = "../secure/storage", version = "0.1.0" } -libra-temppath = { path = "../common/temppath", version = "0.1.0" } -libra-trace = { path = "../common/trace", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0" } -libra-vm = { path = "../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } -libradb = { path = "../storage/libradb", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-json-rpc = { path = "../json-rpc", version = "0.1.0" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-mempool = { path = "../mempool", version = "0.1.0" } +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-secure-storage = { path = "../secure/storage", version = "0.1.0" } +diem-temppath = { path = "../common/temppath", version = "0.1.0" } +diem-trace = { path = "../common/trace", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0" } +diem-vm = { path = "../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../storage/diemdb", version = "0.1.0" } network-builder = { path = "../network/builder", version = "0.1.0" } state-synchronizer = { path = "../state-synchronizer", version = "0.1.0" } storage-client = { path = "../storage/storage-client", version = "0.1.0" } @@ -45,5 +45,5 @@ subscription-service = { path = "../common/subscription-service", version = "0.1 [features] default = [] -assert-private-keys-not-cloneable = ["libra-crypto/assert-private-keys-not-cloneable"] -failpoints = ["fail/failpoints", "consensus/failpoints", "executor/failpoints", "libra-json-rpc/failpoints", "libra-mempool/failpoints", "state-synchronizer/failpoints"] +assert-private-keys-not-cloneable = ["diem-crypto/assert-private-keys-not-cloneable"] +failpoints = ["fail/failpoints", "consensus/failpoints", "executor/failpoints", "diem-json-rpc/failpoints", "diem-mempool/failpoints", "state-synchronizer/failpoints"] diff --git a/libra-node/src/lib.rs b/diem-node/src/lib.rs similarity index 87% rename from libra-node/src/lib.rs rename to diem-node/src/lib.rs index b4262e5604..e2378b5570 100644 --- a/libra-node/src/lib.rs +++ b/diem-node/src/lib.rs @@ -1,27 +1,27 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use backup_service::start_backup_service; use consensus::{consensus_provider::start_consensus, gen_consensus_reconfig_subscription}; use debug_interface::node_debug_service::NodeDebugService; -use executor::{db_bootstrapper::maybe_bootstrap, Executor}; -use executor_types::ChunkExecutor; -use futures::{channel::mpsc::channel, executor::block_on}; -use libra_config::{ +use diem_config::{ config::{NetworkConfig, NodeConfig, RoleType}, network_id::NodeNetworkId, utils::get_genesis_txn, }; -use libra_json_rpc::bootstrap_from_config as bootstrap_rpc; -use libra_logger::{prelude::*, Logger}; -use libra_mempool::gen_mempool_reconfig_subscription; -use libra_metrics::metric_server; -use libra_types::{ - account_config::libra_root_address, account_state::AccountState, chain_id::ChainId, +use diem_json_rpc::bootstrap_from_config as bootstrap_rpc; +use diem_logger::{prelude::*, Logger}; +use diem_mempool::gen_mempool_reconfig_subscription; +use diem_metrics::metric_server; +use diem_types::{ + account_config::diem_root_address, account_state::AccountState, chain_id::ChainId, move_resource::MoveStorage, PeerId, }; -use libra_vm::LibraVM; -use libradb::LibraDB; +use diem_vm::DiemVM; +use diemdb::DiemDB; +use executor::{db_bootstrapper::maybe_bootstrap, Executor}; +use executor_types::ChunkExecutor; +use futures::{channel::mpsc::channel, executor::block_on}; use network_builder::builder::NetworkBuilder; use state_synchronizer::StateSynchronizer; use std::{ @@ -44,7 +44,7 @@ const AC_SMP_CHANNEL_BUFFER_SIZE: usize = 1_024; const INTRA_NODE_CHANNEL_BUFFER_SIZE: usize = 1; const MEMPOOL_NETWORK_CHANNEL_BUFFER_SIZE: usize = 1_024; -pub struct LibraHandle { +pub struct DiemHandle { _rpc: Runtime, _mempool: Runtime, _state_synchronizer: StateSynchronizer, @@ -54,9 +54,9 @@ pub struct LibraHandle { _backup: Runtime, } -impl LibraHandle { +impl DiemHandle { pub fn shutdown(&mut self) { - // Shutdown network runtimes to avoid panic error log after LibraHandle is dropped: + // Shutdown network runtimes to avoid panic error log after DiemHandle is dropped: // thread ‘network-’ panicked at ‘SelectNextSome polled after terminated’,... // stack backtrace: // ...... @@ -73,7 +73,7 @@ impl LibraHandle { pub fn start(config: &NodeConfig, log_file: Option) { crash_handler::setup_panic_handler(); - let mut logger = libra_logger::Logger::new(); + let mut logger = diem_logger::Logger::new(); logger .channel_size(config.logger.chan_size) .is_async(config.logger.is_async) @@ -85,7 +85,7 @@ pub fn start(config: &NodeConfig, log_file: Option) { let logger = Some(logger.build()); // Let's now log some important information, since the logger is set up - info!(config = config, "Loaded LibraNode config"); + info!(config = config, "Loaded DiemNode config"); if config.metrics.enabled { for network in &config.full_node_networks { @@ -118,7 +118,7 @@ pub fn start(config: &NodeConfig, log_file: Option) { } fn setup_metrics(peer_id: PeerId, config: &NodeConfig) { - libra_metrics::dump_all_metrics_to_file_periodically( + diem_metrics::dump_all_metrics_to_file_periodically( &config.metrics.dir(), &format!("{}.metrics", peer_id), config.metrics.collection_interval_ms, @@ -127,7 +127,7 @@ fn setup_metrics(peer_id: PeerId, config: &NodeConfig) { pub fn load_test_environment(config_path: Option, random_ports: bool) { // Either allocate a temppath or reuse the passed in path and make sure the directory exists - let config_temp_path = libra_temppath::TempPath::new(); + let config_temp_path = diem_temppath::TempPath::new(); let config_path = config_path.unwrap_or_else(|| config_temp_path.as_ref().to_path_buf()); std::fs::DirBuilder::new() .recursive(true) @@ -138,10 +138,10 @@ pub fn load_test_environment(config_path: Option, random_ports: bool) { // Build a single validator network let template = NodeConfig::default_for_validator(); let builder = - libra_genesis_tool::config_builder::ValidatorBuilder::new(1, template, &config_path) + diem_genesis_tool::config_builder::ValidatorBuilder::new(1, template, &config_path) .randomize_first_validator_ports(random_ports); let test_config = - libra_genesis_tool::swarm_config::SwarmConfig::build(&builder, &config_path).unwrap(); + diem_genesis_tool::swarm_config::SwarmConfig::build(&builder, &config_path).unwrap(); // Prepare log file since we cannot automatically route logs to stderr let mut log_file = config_path.clone(); @@ -160,10 +160,7 @@ pub fn load_test_environment(config_path: Option, random_ports: bool) { println!("Completed generating configuration:"); println!("\tLog file: {:?}", log_file); println!("\tConfig path: {:?}", test_config.config_files[0]); - println!( - "\tLibra root key path: {:?}", - test_config.libra_root_key_path - ); + println!("\tDiem root key path: {:?}", test_config.diem_root_key_path); println!("\tWaypoint: {}", test_config.waypoint); let mut config = NodeConfig::load(&test_config.config_files[0]).unwrap(); config.json_rpc.address = format!("0.0.0.0:{}", config.json_rpc.address.port()) @@ -176,7 +173,7 @@ pub fn load_test_environment(config_path: Option, random_ports: bool) { ); println!("\tChainId: {}", ChainId::test()); println!(); - println!("Libra is running, press ctrl-c to exit"); + println!("Diem is running, press ctrl-c to exit"); println!(); start(&config, Some(log_file)) @@ -187,24 +184,24 @@ fn fetch_chain_id(db: &DbReaderWriter) -> ChainId { let blob = db .reader .get_account_state_with_proof_by_version( - libra_root_address(), + diem_root_address(), (&*db.reader) .fetch_synced_version() - .expect("[libra-node] failed fetching synced version."), + .expect("[diem-node] failed fetching synced version."), ) - .expect("[libra-node] failed to get Libra root address account state") + .expect("[diem-node] failed to get Diem root address account state") .0 - .expect("[libra-node] missing Libra root address account state"); + .expect("[diem-node] missing Diem root address account state"); AccountState::try_from(&blob) - .expect("[libra-node] failed to convert blob to account state") + .expect("[diem-node] failed to convert blob to account state") .get_chain_id_resource() - .expect("[libra-node] failed to get chain ID resource") - .expect("[libra-node] missing chain ID resource") + .expect("[diem-node] failed to get chain ID resource") + .expect("[diem-node] missing chain ID resource") .chain_id() } fn setup_chunk_executor(db: DbReaderWriter) -> Box { - Box::new(Executor::::new(db)) + Box::new(Executor::::new(db)) } fn setup_debug_interface(config: &NodeConfig, logger: Option>) -> NodeDebugService { @@ -217,8 +214,8 @@ fn setup_debug_interface(config: &NodeConfig, logger: Option>) -> No .next() .unwrap(); - libra_trace::set_libra_trace(&config.debug_interface.libra_trace.sampling) - .expect("Failed to set libra trace sampling rate."); + diem_trace::set_diem_trace(&config.debug_interface.diem_trace.sampling) + .expect("Failed to set diem trace sampling rate."); NodeDebugService::new(addr, logger) } @@ -263,7 +260,7 @@ async fn periodic_state_dump(node_config: NodeConfig, db: DbReaderWriter) { } } -pub fn setup_environment(node_config: &NodeConfig, logger: Option>) -> LibraHandle { +pub fn setup_environment(node_config: &NodeConfig, logger: Option>) -> DiemHandle { let debug_if = setup_debug_interface(&node_config, logger); let metrics_port = node_config.debug_interface.metrics_server_port; @@ -276,8 +273,8 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) }); let mut instant = Instant::now(); - let (libra_db, db_rw) = DbReaderWriter::wrap( - LibraDB::open( + let (diem_db, db_rw) = DbReaderWriter::wrap( + DiemDB::open( &node_config.storage.dir(), false, /* readonly */ node_config.storage.prune_window, @@ -285,17 +282,16 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) ) .expect("DB should open."), ); - let _simple_storage_service = - start_storage_service_with_db(&node_config, Arc::clone(&libra_db)); + let _simple_storage_service = start_storage_service_with_db(&node_config, Arc::clone(&diem_db)); let backup_service = start_backup_service( node_config.storage.backup_service_address, - Arc::clone(&libra_db), + Arc::clone(&diem_db), ); let genesis_waypoint = node_config.base.waypoint.genesis_waypoint(); // if there's genesis txn and waypoint, commit it if the result matches. if let Some(genesis) = get_genesis_txn(&node_config) { - maybe_bootstrap::(&db_rw, genesis, genesis_waypoint) + maybe_bootstrap::(&db_rw, genesis, genesis_waypoint) .expect("Db-bootstrapper should not fail."); } @@ -357,7 +353,7 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) // Create the endpoints to connect the Network to mempool. let (mempool_sender, mempool_events) = network_builder.add_protocol_handler( - libra_mempool::network::network_endpoint_config(MEMPOOL_NETWORK_CHANNEL_BUFFER_SIZE), + diem_mempool::network::network_endpoint_config(MEMPOOL_NETWORK_CHANNEL_BUFFER_SIZE), ); mempool_network_handles.push(( NodeNetworkId::new(network_id, idx), @@ -433,13 +429,13 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) ); let (mp_client_sender, mp_client_events) = channel(AC_SMP_CHANNEL_BUFFER_SIZE); - let rpc_runtime = bootstrap_rpc(&node_config, chain_id, libra_db.clone(), mp_client_sender); + let rpc_runtime = bootstrap_rpc(&node_config, chain_id, diem_db.clone(), mp_client_sender); let mut consensus_runtime = None; let (consensus_to_mempool_sender, consensus_requests) = channel(INTRA_NODE_CHANNEL_BUFFER_SIZE); instant = Instant::now(); - let mempool = libra_mempool::bootstrap( + let mempool = diem_mempool::bootstrap( node_config, Arc::clone(&db_rw.reader), mempool_network_handles, @@ -471,7 +467,7 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) consensus_network_events, state_synchronizer.create_client(), consensus_to_mempool_sender, - libra_db, + diem_db, consensus_reconfig_events, )); debug!("Consensus started in {} ms", instant.elapsed().as_millis()); @@ -483,7 +479,7 @@ pub fn setup_environment(node_config: &NodeConfig, logger: Option>) .handle() .spawn(periodic_state_dump(node_config.to_owned(), db_rw)); - LibraHandle { + DiemHandle { network_runtimes, _rpc: rpc_runtime, _mempool: mempool, diff --git a/libra-node/src/main.rs b/diem-node/src/main.rs similarity index 79% rename from libra-node/src/main.rs rename to diem-node/src/main.rs index d0c956961a..56d169604f 100644 --- a/libra-node/src/main.rs +++ b/diem-node/src/main.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_config::config::NodeConfig; +use diem_config::config::NodeConfig; use std::path::PathBuf; use structopt::StructOpt; #[derive(Debug, StructOpt)] -#[structopt(about = "Libra Node")] +#[structopt(about = "Diem Node")] struct Args { #[structopt( short = "f", @@ -31,10 +31,10 @@ fn main() { if args.test { println!("Entering test mode, this should never be used in production!"); - libra_node::load_test_environment(args.config, args.random_ports); + diem_node::load_test_environment(args.config, args.random_ports); } else { let config = NodeConfig::load(args.config.unwrap()).expect("Failed to load node config"); println!("Using node config {:?}", &config); - libra_node::start(&config, None); + diem_node::start(&config, None); }; } diff --git a/libra.png b/diem.png similarity index 100% rename from libra.png rename to diem.png diff --git a/docker/build-aws.sh b/docker/build-aws.sh index a015491182..68f8977cd9 100755 --- a/docker/build-aws.sh +++ b/docker/build-aws.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # build-aws-base.sh is a common script shared by mutiple build-aws.sh scripts @@ -23,31 +23,31 @@ BUILD_PROJECTS=() while [[ "$1" =~ ^- ]]; do case $1 in --build-all ) - BUILD_PROJECTS=(libra-validator libra-cluster-test libra-init libra-mint libra-safety-rules libra-tools) + BUILD_PROJECTS=(diem-validator diem-cluster-test diem-init diem-mint diem-safety-rules diem-tools) ;; # NOTE: This is used in land-blocking workflow `.github/workflows/land-blocking.yml` # If you change the list of projects to be built for `--build-all-cti`, please # change the list in `.github/actions/land-blocking/find-lbt-images.sh` as well --build-all-cti ) - BUILD_PROJECTS=(libra-validator libra-cluster-test libra-init libra-safety-rules) + BUILD_PROJECTS=(diem-validator diem-cluster-test diem-init diem-safety-rules) ;; --build-cluster-test ) - BUILD_PROJECTS=(libra-cluster-test) + BUILD_PROJECTS=(diem-cluster-test) ;; --build-validator ) - BUILD_PROJECTS=(libra-validator) + BUILD_PROJECTS=(diem-validator) ;; --build-init ) - BUILD_PROJECTS=(libra-init) + BUILD_PROJECTS=(diem-init) ;; --build-mint ) - BUILD_PROJECTS=(libra-mint) + BUILD_PROJECTS=(diem-mint) ;; --build-safety-rules ) - BUILD_PROJECTS=(libra-safety-rules) + BUILD_PROJECTS=(diem-safety-rules) ;; --build-tools ) - BUILD_PROJECTS=(libra-tools) + BUILD_PROJECTS=(diem-tools) ;; --version ) shift; diff --git a/docker/build-common.sh b/docker/build-common.sh index 05e9cd3858..34da2ab059 100755 --- a/docker/build-common.sh +++ b/docker/build-common.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e @@ -16,29 +16,29 @@ export CARGO_PROFILE_RELEASE_LTO=thin # override lto setting to turn on thin-LTO # Build release binaries ${CARGO} ${CARGOFLAGS} build --release \ - -p libra-genesis-tool \ - -p libra-operational-tool \ - -p libra-node \ - -p libra-key-manager \ + -p diem-genesis-tool \ + -p diem-operational-tool \ + -p diem-node \ + -p diem-key-manager \ -p safety-rules \ -p db-bootstrapper \ -p backup-cli \ "$@" -# Build and overwrite the libra-node binary with feature failpoints if $ENABLE_FAILPOINTS is configured +# Build and overwrite the diem-node binary with feature failpoints if $ENABLE_FAILPOINTS is configured if [ "$ENABLE_FAILPOINTS" = "1" ]; then - echo "Building libra-node with failpoints feature" - (cd libra-node && ${CARGO} ${CARGOFLAGS} build --release --features failpoints "$@") + echo "Building diem-node with failpoints feature" + (cd diem-node && ${CARGO} ${CARGOFLAGS} build --release --features failpoints "$@") fi # These non-release binaries are built separately to avoid feature unification issues ${CARGO} ${CARGOFLAGS} build --release \ -p cluster-test \ -p cli \ - -p libra-faucet \ + -p diem-faucet \ "$@" rm -rf target/release/{build,deps,incremental} -STRIP_DIR=${STRIP_DIR:-/libra/target} -find "$STRIP_DIR/release" -maxdepth 1 -executable -type f | grep -Ev 'libra-node|safety-rules' | xargs strip +STRIP_DIR=${STRIP_DIR:-/diem/target} +find "$STRIP_DIR/release" -maxdepth 1 -executable -type f | grep -Ev 'diem-node|safety-rules' | xargs strip diff --git a/docker/build-push-local.sh b/docker/build-push-local.sh index d47d16b6d9..454fc1fbd3 100755 --- a/docker/build-push-local.sh +++ b/docker/build-push-local.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e REPO=853397791086.dkr.ecr.us-west-2.amazonaws.com @@ -18,12 +18,12 @@ echo "[$(date)] Using tag $TAG" for (( i=0; i < ${#BUILD_PROJECTS[@]}; i++ )); do PROJECT=${BUILD_PROJECTS[$i]} - export LIBRA_BUILD_TAG="$REPO/libra_${PROJECT/-/_}:$TAG" + export DIEM_BUILD_TAG="$REPO/diem_${PROJECT/-/_}:$TAG" DOCKER_BUILDER="$PROJECT" echo "[$(date)] Building $PROJECT via $DOCKER_BUILDER" "./docker/${DOCKER_BUILDER}/build.sh" --incremental echo "[$(date)] Pushing $PROJECT" - time docker push "$LIBRA_BUILD_TAG" + time docker push "$DIEM_BUILD_TAG" done echo "[$(date)] Build complete" diff --git a/docker/build_push.sh b/docker/build_push.sh index 137bc2966f..1268b8e55f 100755 --- a/docker/build_push.sh +++ b/docker/build_push.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 function usage { @@ -10,7 +10,7 @@ function usage { echo "-b the branch we're building on, or the branch we're targeting if a prebuild" echo "-n name, one of init, faucet, validator, validator-tcb, cluster-test" echo "-u 'upload', or 'push' the docker images will be pushed to dockerhub, otherwise only locally tag" - echo "should be called from the root folder of the libra project, and must have it's .git history" + echo "should be called from the root folder of the diem project, and must have it's .git history" } PREBUILD=false; @@ -50,7 +50,7 @@ PULLED="-1" #Compute the tag name generated by the docker files. LOCAL_TAG=${INPUT_NAME//-/_} -LOCAL_TAG=libra/${LOCAL_TAG} +LOCAL_TAG=diem/${LOCAL_TAG} # BEGIN DEALING WITH INCONSISTENT NAMING DIR=$INPUT_NAME diff --git a/docker/ci/alpine/Dockerfile b/docker/ci/alpine/Dockerfile index 13023a677f..3697f4efda 100644 --- a/docker/ci/alpine/Dockerfile +++ b/docker/ci/alpine/Dockerfile @@ -1,10 +1,10 @@ #while using circle we'll use circle's base image. FROM alpine:3.12.1@sha256:d7342993700f8cd7aba8496c2d0e57be0666e80b4c441925fc6f9361fa81d10e AS setup_ci_alpine -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain -COPY cargo-toolchain /libra/cargo-toolchain -COPY scripts/dev_setup.sh /libra/scripts/dev_setup.sh +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain +COPY cargo-toolchain /diem/cargo-toolchain +COPY scripts/dev_setup.sh /diem/scripts/dev_setup.sh RUN apk add bash=5.0.17-r0 --no-cache @@ -29,8 +29,8 @@ RUN [ -x "$(command -v shellcheck)" ] \ && [ -x "$(command -v aws)" ] \ && [ -x "$(command -v z3)" ] \ && [ -x "$(command -v "$HOME/.dotnet/tools/boogie")" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/rust-toolchain )" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/cargo-toolchain)" ] + && [ -x "$(xargs rustup which cargo --toolchain < /diem/rust-toolchain )" ] \ + && [ -x "$(xargs rustup which cargo --toolchain < /diem/cargo-toolchain)" ] #should be a no-op, but since sccache failes to execute, sccache is rebuilt. #RUN scripts/dev_setup.sh -b -p diff --git a/docker/ci/arch/Dockerfile b/docker/ci/arch/Dockerfile index 53c22c51ce..9a51189a93 100644 --- a/docker/ci/arch/Dockerfile +++ b/docker/ci/arch/Dockerfile @@ -1,10 +1,10 @@ #while using circle we'll use circle's base image. FROM archlinux:20200908@sha256:7d1c7dd23c246895a34d6e8aa31eb29be573de2ce39b3e88315068e6d6cb5337 AS setup_ci_arch -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain -COPY cargo-toolchain /libra/cargo-toolchain -COPY scripts/dev_setup.sh /libra/scripts/dev_setup.sh +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain +COPY cargo-toolchain /diem/cargo-toolchain +COPY scripts/dev_setup.sh /diem/scripts/dev_setup.sh #Batch mode and all operations tooling RUN scripts/dev_setup.sh -t -o -y -b -p && pacman -Scc --noconfirm @@ -27,8 +27,8 @@ RUN [ -x "$(command -v shellcheck)" ] \ && [ -x "$(command -v aws)" ] \ && [ -x "$(command -v z3)" ] \ && [ -x "$(command -v "$HOME/.dotnet/tools/boogie")" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/rust-toolchain )" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/cargo-toolchain)" ] + && [ -x "$(xargs rustup which cargo --toolchain < /diem/rust-toolchain )" ] \ + && [ -x "$(xargs rustup which cargo --toolchain < /diem/cargo-toolchain)" ] #should be a no-op RUN scripts/dev_setup.sh -b -p diff --git a/docker/ci/centos/Dockerfile b/docker/ci/centos/Dockerfile index d0a13fd222..a60a2a9d30 100644 --- a/docker/ci/centos/Dockerfile +++ b/docker/ci/centos/Dockerfile @@ -1,10 +1,10 @@ #while using circle we'll use circle's base image. FROM centos:8@sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71 AS setup_ci_centos -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain -COPY cargo-toolchain /libra/cargo-toolchain -COPY scripts/dev_setup.sh /libra/scripts/dev_setup.sh +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain +COPY cargo-toolchain /diem/cargo-toolchain +COPY scripts/dev_setup.sh /diem/scripts/dev_setup.sh #Batch mode and all operations tooling RUN scripts/dev_setup.sh -t -o -y -b -p && yum clean all @@ -27,8 +27,8 @@ RUN [ -x "$(command -v shellcheck)" ] \ && [ -x "$(command -v aws)" ] \ && [ -x "$(command -v z3)" ] \ && [ -x "$(command -v "$HOME/.dotnet/tools/boogie")" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/rust-toolchain )" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/cargo-toolchain)" ] + && [ -x "$(xargs rustup which cargo --toolchain < /diem/rust-toolchain )" ] \ + && [ -x "$(xargs rustup which cargo --toolchain < /diem/cargo-toolchain)" ] #should be a no-op RUN scripts/dev_setup.sh -b -p diff --git a/docker/ci/circleci/Dockerfile b/docker/ci/circleci/Dockerfile index 38376b4c12..d335520066 100644 --- a/docker/ci/circleci/Dockerfile +++ b/docker/ci/circleci/Dockerfile @@ -1,10 +1,10 @@ #while using circle we'll use circle's base image. FROM cimg/base:2020.12@sha256:a9adc0fb9b3d2440961a8042c5b03a387b3a0d6e2ab9e73ce20bff1ae84d64be AS setup_ci -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain -COPY cargo-toolchain /libra/cargo-toolchain -COPY scripts/dev_setup.sh /libra/scripts/dev_setup.sh +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain +COPY cargo-toolchain /diem/cargo-toolchain +COPY scripts/dev_setup.sh /diem/scripts/dev_setup.sh #Batch mode and all operations tooling RUN scripts/dev_setup.sh -t -o -b -p -y @@ -30,8 +30,8 @@ RUN [ -x "$(command -v shellcheck)" ] \ && [ -x "$(command -v aws)" ] \ && [ -x "$(command -v z3)" ] \ && [ -x "$(command -v "$HOME/.dotnet/tools/boogie")" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/rust-toolchain )" ] \ - && [ -x "$(xargs rustup which cargo --toolchain < /libra/cargo-toolchain)" ] + && [ -x "$(xargs rustup which cargo --toolchain < /diem/rust-toolchain )" ] \ + && [ -x "$(xargs rustup which cargo --toolchain < /diem/cargo-toolchain)" ] #should be a no-op # sccache builds fine, but is not executable ??? in alpine, ends up being recompiled. Wierd. diff --git a/docker/client/Dockerfile b/docker/client/Dockerfile index 409f52c443..7754187c2e 100644 --- a/docker/client/Dockerfile +++ b/docker/client/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -27,11 +27,11 @@ FROM debian:buster-20200803-slim@sha256:e0a33348ac8cace6b4294885e6e0bb57ecdfe4b6 RUN apt-get update && apt-get install -y libssl1.1 ca-certificates && apt-get clean && rm -r /var/lib/apt/lists/* -RUN mkdir -p /opt/libra/bin /opt/libra/etc -COPY --from=builder /libra/target/release/cli /opt/libra/bin/libra_client +RUN mkdir -p /opt/diem/bin /opt/diem/etc +COPY --from=builder /diem/target/release/cli /opt/diem/bin/diem_client -ENTRYPOINT ["/opt/libra/bin/libra_client"] -CMD ["--url", "https://testnet.libra.org/v1", "--waypoint_url", "https://testnet.libra.org/waypoint.txt", "--chain-id", "TESTNET"] +ENTRYPOINT ["/opt/diem/bin/diem_client"] +CMD ["--url", "https://testnet.diem.com/v1", "--waypoint_url", "https://testnet.diem.com/waypoint.txt", "--chain-id", "TESTNET"] ARG BUILD_DATE ARG GIT_REV diff --git a/docker/client/build.sh b/docker/client/build.sh index 1f158d1b43..1b207fcbfc 100755 --- a/docker/client/build.sh +++ b/docker/client/build.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/client "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/client "$@" diff --git a/docker/cluster-test-util/build-and-push.sh b/docker/cluster-test-util/build-and-push.sh index 682173975d..1280284f65 100755 --- a/docker/cluster-test-util/build-and-push.sh +++ b/docker/cluster-test-util/build-and-push.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e diff --git a/docker/cluster-test/Dockerfile b/docker/cluster-test/Dockerfile index dab49b44e7..64a99a6c8e 100644 --- a/docker/cluster-test/Dockerfile +++ b/docker/cluster-test/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -28,7 +28,7 @@ RUN apt-get update && apt-get install -y libssl1.1 openssh-client wget && apt-ge RUN cd /usr/local/bin && wget "https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl" -O kubectl && chmod +x kubectl RUN mkdir /etc/cluster-test WORKDIR /etc/cluster-test -COPY --from=builder /libra/target/release/cluster-test /usr/local/bin/cluster-test +COPY --from=builder /diem/target/release/cluster-test /usr/local/bin/cluster-test ENTRYPOINT ["cluster-test"] ARG BUILD_DATE ARG GIT_REV diff --git a/docker/cluster-test/build.sh b/docker/cluster-test/build.sh index 763ce3a0ba..b355f52336 100755 --- a/docker/cluster-test/build.sh +++ b/docker/cluster-test/build.sh @@ -1,8 +1,8 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/cluster_test:latest "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/cluster_test:latest "$@" diff --git a/docker/cluster-test/buildspec.yaml b/docker/cluster-test/buildspec.yaml index 1b2caa7814..9e680971be 100644 --- a/docker/cluster-test/buildspec.yaml +++ b/docker/cluster-test/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/cluster_test:latest TARGET_REPO=$LIBRA_CLUSTER_TEST_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/cluster_test:latest TARGET_REPO=$DIEM_CLUSTER_TEST_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/compose/README.md b/docker/compose/README.md index b4fb032022..040bc9a666 100644 --- a/docker/compose/README.md +++ b/docker/compose/README.md @@ -1,6 +1,6 @@ --- id: docker_compose -title: Libra Docker-Compose Configuration +title: Diem Docker-Compose Configuration custom_edit_url: https://github.com/libra/libra/edit/master/docker/compose/README.md --- @@ -23,7 +23,7 @@ To build your own complete testnet: 2. Start **mint**: 1. Enter the **mint** directory: `cd mint` 2. Copy the testnet waypoint: `cp ../validator-testnet/waypoint.txt .` - 3. Copy the testnet mint.key: `cp ../validator-testnet/libra_root_key mint.key` + 3. Copy the testnet mint.key: `cp ../validator-testnet/diem_root_key mint.key` 4. Start the composition `docker-compose up -d` 5. Return to the compose directory: `cd ..` 3. Enjoy your testnet: diff --git a/docker/compose/mint/docker-compose.yaml b/docker/compose/mint/docker-compose.yaml index 9043bf3659..78ba4384e8 100644 --- a/docker/compose/mint/docker-compose.yaml +++ b/docker/compose/mint/docker-compose.yaml @@ -3,11 +3,11 @@ # The mint / faucet can be accessed at 127.0.0.1:8000 # # Place the following files into the same directory: -# * mint.key (also known as the libra_root_key) +# * mint.key (also known as the diem_root_key) # * waypoint.txt # # Additional notes: -# * Images can be found at https://hub.docker.com/r/libra/mint/tags, obtain the latest tag and +# * Images can be found at https://hub.docker.com/r/diem/mint/tags, obtain the latest tag and # update below. version: "3.8" services: @@ -23,10 +23,10 @@ services: volumes: - type: bind source: ./mint.key - target: /opt/libra/etc/mint.key + target: /opt/diem/etc/mint.key - type: bind source: ./waypoint.txt - target: /opt/libra/etc/waypoint.txt + target: /opt/diem/etc/waypoint.txt command: [ "gunicorn", "--bind", @@ -38,7 +38,7 @@ services: "--log-level", "info", "--pythonpath", - "/opt/libra/bin", + "/opt/diem/bin", "server", ] ports: @@ -46,4 +46,4 @@ services: networks: shared: external: true - name: "libra-docker-compose-shared" + name: "diem-docker-compose-shared" diff --git a/docker/compose/public_full_node/docker-compose.yaml b/docker/compose/public_full_node/docker-compose.yaml index aec3665006..a897c90f83 100644 --- a/docker/compose/public_full_node/docker-compose.yaml +++ b/docker/compose/public_full_node/docker-compose.yaml @@ -1,4 +1,4 @@ -# This compose file defines a Public Fullnode docker compose wrapper around libra-node. +# This compose file defines a Public Fullnode docker compose wrapper around diem-node. # # In order to use, place a copy of the proper genesis.blob and waypoint.txt in this directory. # @@ -7,27 +7,27 @@ # It is intended for use with testnet but can be easily modified for other systems. # # Testnet genesis and waypoint can be acquired at the following URLs: -# * https://testnet.libra.org/genesis.blob -# * https://testnet.libra.org/waypoint.txt +# * https://testnet.diem.com/genesis.blob +# * https://testnet.diem.com/waypoint.txt # Testnet's genesis does not support onchain discovery and also requires a seed_addrs to be added # to the full_node_networks and the discovery method to be set to "none" (this step has been # completed): # discovery_method: "none" # seed_addrs: # 4223dd0eeb0b0d78720a8990700955e1: -# - "/dns4/fn.testnet.libra.org/tcp/6182/ln-noise-ik/b6fd31624af370085cc3f872437bb4d9384b31a11b33b9591ddfaaed5a28b613/ln-handshake/0" +# - "/dns4/fn.testnet.diem.com/tcp/6182/ln-noise-ik/b6fd31624af370085cc3f872437bb4d9384b31a11b33b9591ddfaaed5a28b613/ln-handshake/0" # # TODO: # * Directions on the correct image # * Connecting to the local testnet # # Additional information: -# * If you use this compose for different Libra Networks, you will need remove the db volume first. -# * Libra's testnet produces approximately 3 GB worth of chain data per day, so be patient while +# * If you use this compose for different Diem Networks, you will need remove the db volume first. +# * Diem's testnet produces approximately 3 GB worth of chain data per day, so be patient while # starting for the first time. As a sanity check, enter the container and check the increasing size # of the db: # * `docker exec -it $CONTAINER_ID /bin/bash` -# * `du -csm /opt/libra/data`` +# * `du -csm /opt/diem/data`` version: "3.8" services: fullnode: @@ -35,20 +35,20 @@ services: volumes: - type: volume source: db - target: /opt/libra/data + target: /opt/diem/data - type: bind source: ./genesis.blob - target: /opt/libra/etc/genesis.blob + target: /opt/diem/etc/genesis.blob read_only: true - type: bind source: ./public_full_node.yaml - target: /opt/libra/etc/node.yaml + target: /opt/diem/etc/node.yaml read_only: true - type: bind source: ./waypoint.txt - target: /opt/libra/etc/waypoint.txt + target: /opt/diem/etc/waypoint.txt read_only: true - command: ["/opt/libra/bin/libra-node", "-f", "/opt/libra/etc/node.yaml"] + command: ["/opt/diem/bin/diem-node", "-f", "/opt/diem/etc/node.yaml"] ports: - "8080:8080" volumes: diff --git a/docker/compose/public_full_node/public_full_node.yaml b/docker/compose/public_full_node/public_full_node.yaml index 46e76dedff..24eb630f88 100644 --- a/docker/compose/public_full_node/public_full_node.yaml +++ b/docker/compose/public_full_node/public_full_node.yaml @@ -1,16 +1,16 @@ base: - # This is the location Libra will store its database. It is backed by a dedicated docker volume + # This is the location Diem will store its database. It is backed by a dedicated docker volume # for persistence. - data_dir: "/opt/libra/data" + data_dir: "/opt/diem/data" role: "full_node" waypoint: # This is a checkpoint into the blockchain for added security. - from_file: "/opt/libra/etc/waypoint.txt" + from_file: "/opt/diem/etc/waypoint.txt" execution: # Path to a genesis transaction. Note, this must be paired with a waypoint. If you update your # waypoint without a corresponding genesis, the file location should be an empty path. - genesis_file_location: "/opt/libra/etc/genesis.blob" + genesis_file_location: "/opt/diem/etc/genesis.blob" full_node_networks: # Disabled for testnet @@ -22,7 +22,7 @@ full_node_networks: # Testnet does not have the right discovery entry points on-chain so this is used instead seed_addrs: 4223dd0eeb0b0d78720a8990700955e1: - - "/dns4/fn.testnet.libra.org/tcp/6182/ln-noise-ik/b6fd31624af370085cc3f872437bb4d9384b31a11b33b9591ddfaaed5a28b613/ln-handshake/0" + - "/dns4/fn.testnet.diem.com/tcp/6182/ln-noise-ik/b6fd31624af370085cc3f872437bb4d9384b31a11b33b9591ddfaaed5a28b613/ln-handshake/0" json_rpc: # This specifies your JSON-RPC endpoint. Intentionally on public so that Docker can export it. diff --git a/docker/compose/validator-testnet/libra_root_key b/docker/compose/validator-testnet/diem_root_key similarity index 100% rename from docker/compose/validator-testnet/libra_root_key rename to docker/compose/validator-testnet/diem_root_key diff --git a/docker/compose/validator-testnet/docker-compose.yaml b/docker/compose/validator-testnet/docker-compose.yaml index ac999cb390..f999ded5a9 100644 --- a/docker/compose/validator-testnet/docker-compose.yaml +++ b/docker/compose/validator-testnet/docker-compose.yaml @@ -3,16 +3,16 @@ # * JSON-RPC endpoint at http://127.0.0.1:8080. # * waypoint file at waypoint.txt in the same directory as this compose # * genesis.blob at genesis.blob in the same directory as this compose -# * libra_root_key (mint.key) in the same directory as this compose +# * diem_root_key (mint.key) in the same directory as this compose # * chain_id of 4 / TESTING # # Additional information: -# * If you use this compose for different Libra Networks, you will need remove the db volume first. +# * If you use this compose for different Diem Networks, you will need remove the db volume first. # * If you move this compose, you must recreate the empty waypoint.txt and genesis.blob otherwise # the container will fail to start. -# * If you would like to use the current Libra version within this repository, execute the -# `build.sh` in `docker/validator` and change the image tag below to libra_e2e:latest -# * Images can be found at https://hub.docker.com/r/libra/validator/tags, obtain the latest tag and +# * If you would like to use the current Diem version within this repository, execute the +# `build.sh` in `docker/validator` and change the image tag below to diem_e2e:latest +# * Images can be found at https://hub.docker.com/r/diem/validator/tags, obtain the latest tag and # update below. version: "3.8" services: @@ -26,22 +26,22 @@ services: volumes: - type: volume source: db - target: /opt/libra/var + target: /opt/diem/var - type: bind source: ./genesis.blob - target: /opt/libra/var/0/genesis.blob + target: /opt/diem/var/0/genesis.blob - type: bind - source: ./libra_root_key - target: /opt/libra/var/mint.key + source: ./diem_root_key + target: /opt/diem/var/mint.key - type: bind source: ./waypoint.txt - target: /opt/libra/var/waypoint.txt - command: ["/opt/libra/bin/libra-node", "--test", "--config", "/opt/libra/var"] + target: /opt/diem/var/waypoint.txt + command: ["/opt/diem/bin/diem-node", "--test", "--config", "/opt/diem/var"] ports: - "8080:8080" networks: shared: - name: "libra-docker-compose-shared" + name: "diem-docker-compose-shared" ipam: config: - subnet: 172.16.1.0/24 diff --git a/docker/libra-build.sh b/docker/diem-build.sh similarity index 88% rename from docker/libra-build.sh rename to docker/diem-build.sh index 6ab5daed0b..b55257e69f 100755 --- a/docker/libra-build.sh +++ b/docker/diem-build.sh @@ -1,13 +1,13 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DOCKERFILE=$1 -if [ -z "$LIBRA_BUILD_TAG" ]; then +if [ -z "$DIEM_BUILD_TAG" ]; then TAGS="--tag $2" else - TAGS="--tag $2 --tag $LIBRA_BUILD_TAG" + TAGS="--tag $2 --tag $DIEM_BUILD_TAG" fi RESTORE='\001\033[0m\002' @@ -16,7 +16,7 @@ DOCKERFILE_BUILD_RE='^RUN ./docker/build-common.sh$' if [ -z "$DOCKERFILE" ] || [ -z "$TAGS" ] then - echo "Usage libra-build.sh " + echo "Usage diem-build.sh " fi shift 2 @@ -50,7 +50,7 @@ if [ "$1" = "--incremental" ]; then echo "${BLUE}Build container does not exist, setting up new one${RESTORE}" IMAGE=circleci/rust:${TOOLCHAIN}-buster mkdir -p "$OUT_TARGET" - docker run -u root -d -t -v "$OUT_TARGET:/out-target" -v "$DIR/..:/libra" -w /libra --name "$CONTAINER" "$IMAGE" sh > /dev/null + docker run -u root -d -t -v "$OUT_TARGET:/out-target" -v "$DIR/..:/diem" -w /diem --name "$CONTAINER" "$IMAGE" sh > /dev/null docker exec -i -t "$CONTAINER" apt-get update docker exec -i -t "$CONTAINER" apt-get install -y cmake curl clang git echo "${BLUE}Container is set up, starting build${RESTORE}" @@ -65,7 +65,7 @@ if [ "$1" = "--incremental" ]; then docker exec -i -t "$CONTAINER" sh -c 'find /target/release -maxdepth 1 -executable -type f | xargs -I F cp F /out-target' TMP_DOCKERFILE="$DOCKERFILE.tmp" trap 'rm -f $TMP_DOCKERFILE' EXIT - sed -e "s+$DOCKERFILE_BUILD_RE+RUN mkdir -p /libra/target/release/; cp target-out-docker/* /libra/target/release/+g" \ + sed -e "s+$DOCKERFILE_BUILD_RE+RUN mkdir -p /diem/target/release/; cp target-out-docker/* /diem/target/release/+g" \ "$DOCKERFILE" > "$TMP_DOCKERFILE" DOCKERFILE=$TMP_DOCKERFILE echo "${BLUE}Starting docker build process${RESTORE}" diff --git a/docker/dockerhub_to_novi_ecr.sh b/docker/dockerhub_to_novi_ecr.sh index a41272ec64..7db120ef56 100755 --- a/docker/dockerhub_to_novi_ecr.sh +++ b/docker/dockerhub_to_novi_ecr.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 ############################################################################################# diff --git a/docker/init/Dockerfile b/docker/init/Dockerfile index 8f8c9d2073..f5b79e33fa 100644 --- a/docker/init/Dockerfile +++ b/docker/init/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -29,9 +29,9 @@ RUN apt-get update && apt-get -y install libssl1.1 wget busybox gettext-base && RUN cd /usr/local/bin && wget "https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kubectl" -O kubectl && chmod +x kubectl RUN cd /usr/local/bin && wget "https://releases.hashicorp.com/vault/1.5.0/vault_1.5.0_linux_amd64.zip" -O- | busybox unzip - && chmod +x vault -RUN mkdir -p /opt/libra/bin -COPY --from=builder /libra/target/release/libra-genesis-tool /usr/local/bin -COPY --from=builder /libra/target/release/libra-operational-tool /usr/local/bin +RUN mkdir -p /opt/diem/bin +COPY --from=builder /diem/target/release/diem-genesis-tool /usr/local/bin +COPY --from=builder /diem/target/release/diem-operational-tool /usr/local/bin ARG BUILD_DATE ARG GIT_REV diff --git a/docker/init/build.sh b/docker/init/build.sh index 328199ce7c..1c51e1b956 100755 --- a/docker/init/build.sh +++ b/docker/init/build.sh @@ -1,8 +1,8 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/init "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/init "$@" diff --git a/docker/init/buildspec.yaml b/docker/init/buildspec.yaml index 8e95e3e9ff..e2b106ef24 100644 --- a/docker/init/buildspec.yaml +++ b/docker/init/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/init:latest TARGET_REPO=$LIBRA_INIT_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/init:latest TARGET_REPO=$DIEM_INIT_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/install-tools.sh b/docker/install-tools.sh index 11f46927d2..48ce86e630 100755 --- a/docker/install-tools.sh +++ b/docker/install-tools.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 apt-get update diff --git a/docker/mint/Dockerfile b/docker/mint/Dockerfile index 78cbe39a7e..01d9a29adb 100644 --- a/docker/mint/Dockerfile +++ b/docker/mint/Dockerfile @@ -10,17 +10,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -32,14 +32,14 @@ RUN apt-get update && apt-get install -y libssl1.1 python3-pip nano net-tools tc && apt-get clean && rm -r /var/lib/apt/lists/* # RUN apt-get install python3 -COPY docker/mint/requirements.txt /libra/docker/mint/requirements.txt -RUN pip3 install -r /libra/docker/mint/requirements.txt +COPY docker/mint/requirements.txt /diem/docker/mint/requirements.txt +RUN pip3 install -r /diem/docker/mint/requirements.txt -RUN mkdir -p /opt/libra/bin /libra/client/data/wallet/ +RUN mkdir -p /opt/diem/bin /diem/client/data/wallet/ -COPY --from=builder /libra/target/release/cli /opt/libra/bin -COPY --from=builder /libra/target/release/libra-faucet /opt/libra/bin -COPY docker/mint/server.py /opt/libra/bin +COPY --from=builder /diem/target/release/cli /opt/diem/bin +COPY --from=builder /diem/target/release/diem-faucet /opt/diem/bin +COPY docker/mint/server.py /opt/diem/bin # Test the docker container before shipping. FROM pre-test AS test diff --git a/docker/mint/build.sh b/docker/mint/build.sh index 87ebb7e859..6451e1bf92 100755 --- a/docker/mint/build.sh +++ b/docker/mint/build.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/faucet "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/faucet "$@" diff --git a/docker/mint/buildspec.yaml b/docker/mint/buildspec.yaml index 798f11367c..6df552b11f 100644 --- a/docker/mint/buildspec.yaml +++ b/docker/mint/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/faucet:latest TARGET_REPO=$LIBRA_MINT_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/faucet:latest TARGET_REPO=$DIEM_MINT_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/mint/server.py b/docker/mint/server.py index 1b34eae4ad..a6d9a0a317 100644 --- a/docker/mint/server.py +++ b/docker/mint/server.py @@ -13,7 +13,7 @@ import pexpect -MAX_MINT = 10 ** 19 # 10 trillion libras +MAX_MINT = 10 ** 19 # 10 trillion diems def create_client(): @@ -23,13 +23,13 @@ def create_client(): ac_host = random.choice(ac_hosts) ac_port = os.environ['AC_PORT'] url = "http://{}:{}".format(ac_host, ac_port) - waypoint = open("/opt/libra/etc/waypoint.txt", "r").readline() + waypoint = open("/opt/diem/etc/waypoint.txt", "r").readline() chain_id = os.environ['CFG_CHAIN_ID'] print("Connecting to ac on: {}".format(url)) - cmd = "/opt/libra/bin/cli --url {} -m {} --waypoint {} --chain-id {}".format( + cmd = "/opt/diem/bin/cli --url {} -m {} --waypoint {} --chain-id {}".format( url, - "/opt/libra/etc/mint.key", + "/opt/diem/etc/mint.key", waypoint, chain_id) @@ -84,4 +84,4 @@ def send_transaction(): @application.route("/-/healthy", methods=('GET',)) def health_check(): - return "libra-faucet:ok" + return "diem-faucet:ok" diff --git a/docker/safety-rules/Dockerfile b/docker/safety-rules/Dockerfile index 6c7a180db1..9d53ea23d7 100644 --- a/docker/safety-rules/Dockerfile +++ b/docker/safety-rules/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -27,12 +27,12 @@ FROM debian:buster-20201117@sha256:f520e4a80b736389c3de162b8f60608d11c9fa3b2ec61 RUN apt-get update && apt-get install -y libssl1.1 && apt-get clean && rm -r /var/lib/apt/lists/* -RUN addgroup --system --gid 6180 libra && adduser --system --ingroup libra --no-create-home --uid 6180 libra +RUN addgroup --system --gid 6180 diem && adduser --system --ingroup diem --no-create-home --uid 6180 diem -RUN mkdir -p /opt/libra/bin /opt/libra/etc /opt/libra/data +RUN mkdir -p /opt/diem/bin /opt/diem/etc /opt/diem/data -COPY --from=builder /libra/target/release/libra-key-manager /opt/libra/bin -COPY --from=builder /libra/target/release/safety-rules /opt/libra/bin +COPY --from=builder /diem/target/release/diem-key-manager /opt/diem/bin +COPY --from=builder /diem/target/release/safety-rules /opt/diem/bin ENV RUST_BACKTRACE 1 diff --git a/docker/safety-rules/build.sh b/docker/safety-rules/build.sh index 4549ac7b87..1e0d0e9e39 100755 --- a/docker/safety-rules/build.sh +++ b/docker/safety-rules/build.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/validator_tcb "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/validator_tcb "$@" diff --git a/docker/safety-rules/buildspec.yaml b/docker/safety-rules/buildspec.yaml index 534f1b8382..7ff3dff1db 100644 --- a/docker/safety-rules/buildspec.yaml +++ b/docker/safety-rules/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/validator_tcb:latest TARGET_REPO=$LIBRA_SAFETY_RULES_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/validator_tcb:latest TARGET_REPO=$DIEM_SAFETY_RULES_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/tag-and-push.sh b/docker/tag-and-push.sh index f36307f66e..48ed1ea8ba 100755 --- a/docker/tag-and-push.sh +++ b/docker/tag-and-push.sh @@ -1,10 +1,10 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # tag-and-push.sh is used tag an image with multiple tags and push them to the target repo. Use ":" as the separator # between multiple tags # Example: -# SOURCE=libra_validator:latest TARGET_REPO=1234567890.dkr.ecr.us-west-2.amazonaws.com/libra_cluster_test TARGET_TAGS=master:master_39cnja0 tag-and-push.sh +# SOURCE=diem_validator:latest TARGET_REPO=1234567890.dkr.ecr.us-west-2.amazonaws.com/diem_cluster_test TARGET_TAGS=master:master_39cnja0 tag-and-push.sh set -e diff --git a/docker/tools/Dockerfile b/docker/tools/Dockerfile index a41b0f7afa..37b298a7db 100644 --- a/docker/tools/Dockerfile +++ b/docker/tools/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -39,12 +39,12 @@ COPY docker/tools/boto.cfg /etc RUN cd /usr/local/bin && wget https://aka.ms/downloadazcopy-v10-linux -O- | tar --gzip --wildcards --extract '*/azcopy' --strip-components=1 --no-same-owner && chmod +x azcopy RUN wget https://storage.googleapis.com/pub/gsutil.tar.gz -O- | tar --gzip --directory /opt --extract && ln -s /opt/gsutil/gsutil /usr/local/bin -COPY --from=builder /libra/target/release/libra-genesis-tool /usr/local/bin -COPY --from=builder /libra/target/release/libra-operational-tool /usr/local/bin -COPY --from=builder /libra/target/release/db-bootstrapper /usr/local/bin -COPY --from=builder /libra/target/release/db-backup /usr/local/bin -COPY --from=builder /libra/target/release/db-backup-verify /usr/local/bin -COPY --from=builder /libra/target/release/db-restore /usr/local/bin +COPY --from=builder /diem/target/release/diem-genesis-tool /usr/local/bin +COPY --from=builder /diem/target/release/diem-operational-tool /usr/local/bin +COPY --from=builder /diem/target/release/db-bootstrapper /usr/local/bin +COPY --from=builder /diem/target/release/db-backup /usr/local/bin +COPY --from=builder /diem/target/release/db-backup-verify /usr/local/bin +COPY --from=builder /diem/target/release/db-restore /usr/local/bin ARG BUILD_DATE ARG GIT_REV diff --git a/docker/tools/build.sh b/docker/tools/build.sh index 98626b6891..255af01342 100755 --- a/docker/tools/build.sh +++ b/docker/tools/build.sh @@ -1,8 +1,8 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/Dockerfile libra/tools "$@" +$DIR/../diem-build.sh $DIR/Dockerfile diem/tools "$@" diff --git a/docker/tools/buildspec.yaml b/docker/tools/buildspec.yaml index 0b369642bc..2da1e6396a 100644 --- a/docker/tools/buildspec.yaml +++ b/docker/tools/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/tools:latest TARGET_REPO=$LIBRA_TOOLS_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/tools:latest TARGET_REPO=$DIEM_TOOLS_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/validator/Dockerfile b/docker/validator/Dockerfile index 19f82dc59b..09dd084cc3 100644 --- a/docker/validator/Dockerfile +++ b/docker/validator/Dockerfile @@ -8,17 +8,17 @@ RUN apt-get update && apt-get install -y cmake curl clang git pkg-config libssl- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none ENV PATH "$PATH:/root/.cargo/bin" -WORKDIR /libra -COPY rust-toolchain /libra/rust-toolchain +WORKDIR /diem +COPY rust-toolchain /diem/rust-toolchain RUN rustup install $(cat rust-toolchain) -COPY cargo-toolchain /libra/cargo-toolchain +COPY cargo-toolchain /diem/cargo-toolchain RUN rustup install $(cat cargo-toolchain) FROM toolchain AS builder ARG ENABLE_FAILPOINTS -COPY . /libra +COPY . /diem RUN ./docker/build-common.sh @@ -27,14 +27,14 @@ FROM debian:buster-20201117@sha256:f520e4a80b736389c3de162b8f60608d11c9fa3b2ec61 RUN apt-get update && apt-get install -y libssl1.1 && apt-get clean && rm -r /var/lib/apt/lists/* -RUN addgroup --system --gid 6180 libra && adduser --system --ingroup libra --no-create-home --uid 6180 libra +RUN addgroup --system --gid 6180 diem && adduser --system --ingroup diem --no-create-home --uid 6180 diem -RUN mkdir -p /opt/libra/bin /opt/libra/etc +RUN mkdir -p /opt/diem/bin /opt/diem/etc COPY docker/install-tools.sh /root -COPY --from=builder /libra/target/release/libra-node /opt/libra/bin -COPY --from=builder /libra/target/release/db-backup /opt/libra/bin -COPY --from=builder /libra/target/release/db-bootstrapper /opt/libra/bin -COPY --from=builder /libra/target/release/db-restore /opt/libra/bin +COPY --from=builder /diem/target/release/diem-node /opt/diem/bin +COPY --from=builder /diem/target/release/db-backup /opt/diem/bin +COPY --from=builder /diem/target/release/db-bootstrapper /opt/diem/bin +COPY --from=builder /diem/target/release/db-restore /opt/diem/bin # Admission control EXPOSE 8000 diff --git a/docker/validator/build.sh b/docker/validator/build.sh index f3e954b0a9..45722b7b60 100755 --- a/docker/validator/build.sh +++ b/docker/validator/build.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e DIR="$( cd "$( dirname "$0" )" && pwd )" -$DIR/../libra-build.sh $DIR/../validator/Dockerfile libra/validator "$@" +$DIR/../diem-build.sh $DIR/../validator/Dockerfile diem/validator "$@" diff --git a/docker/validator/buildspec.yaml b/docker/validator/buildspec.yaml index b464884566..e5b705485e 100644 --- a/docker/validator/buildspec.yaml +++ b/docker/validator/buildspec.yaml @@ -25,4 +25,4 @@ phases: # Tag and push the docker images - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region us-west-2) - - SOURCE=libra/validator:latest TARGET_REPO=$LIBRA_VALIDATOR_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh + - SOURCE=diem/validator:latest TARGET_REPO=$DIEM_VALIDATOR_REPO TARGET_TAGS="${TAGS}:dev_$(git rev-parse --short=8 HEAD)" docker/tag-and-push.sh diff --git a/docker/vault/run.sh b/docker/vault/run.sh index ad3b69749c..66f4720758 100755 --- a/docker/vault/run.sh +++ b/docker/vault/run.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -ex diff --git a/documentation/coding_guidelines.md b/documentation/coding_guidelines.md index 4d53a90317..290d270cd2 100644 --- a/documentation/coding_guidelines.md +++ b/documentation/coding_guidelines.md @@ -3,14 +3,14 @@ id: coding-guidelines title: Coding Guidelines --- -This document describes the coding guidelines for the Libra Core Rust codebase. +This document describes the coding guidelines for the Diem Core Rust codebase. ## Code formatting -All code formatting is enforced with [rustfmt](https://github.com/rust-lang/rustfmt) with a project-specific configuration. Below is an example command to adhere to the Libra Core project conventions. +All code formatting is enforced with [rustfmt](https://github.com/rust-lang/rustfmt) with a project-specific configuration. Below is an example command to adhere to the Diem Core project conventions. ``` -libra$ cargo xfmt +diem$ cargo xfmt ``` ## Code analysis @@ -18,7 +18,7 @@ libra$ cargo xfmt [Clippy](https://github.com/rust-lang/rust-clippy) is used to catch common mistakes and is run as a part of continuous integration. Before submitting your code for review, you can run clippy with our configuration: ``` -libra$ cargo xclippy --all-features +diem$ cargo xclippy --all-features ``` In general, we follow the recommendations from [rust-lang-nursery](https://rust-lang-nursery.github.io/api-guidelines/about.html) and [The Rust Programming Language](https://doc.rust-lang.org/book/). The remainder of this guide provides detailed guidelines on specific topics in order to achieve uniformity of the codebase. @@ -53,7 +53,7 @@ struct Point { ### Terminology -The Libra codebase uses inclusive terminology (similar to other projects such as [the Linux kernel](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=49decddd39e5f6132ccd7d9fdc3d7c470b0061bb)). The terms below are recommended when appropriate. +The Diem codebase uses inclusive terminology (similar to other projects such as [the Linux kernel](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=49decddd39e5f6132ccd7d9fdc3d7c470b0061bb)). The terms below are recommended when appropriate. * allowlist - a set of entities allowed access * blocklist - a set of entities that are blocked from access * primary/leader/main - a primary entity @@ -76,8 +76,8 @@ Document the following for each function: ### README.md for top-level directories and other major components -Each major component of Libra Core needs to have a `README.md` file. Major components are: -* top-level directories (e.g. `libra/network`, `libra/language`) +Each major component of Diem Core needs to have a `README.md` file. Major components are: +* top-level directories (e.g. `diem/network`, `diem/language`) * the most important crates in the system (e.g. `vm-runtime`) This file should contain: @@ -118,14 +118,14 @@ For the external API of this crate refer to [Link to rustdoc API]. ## Contributing -Refer to the Libra Project contributing guide [LINK]. +Refer to the Diem Project contributing guide [LINK]. ## License -Refer to the Libra Project License [LINK]. +Refer to the Diem Project License [LINK]. ``` -A good example of README.md is `libra/network/README.md` that describes the networking crate. +A good example of README.md is `diem/network/README.md` that describes the networking crate. ## Binary, Argument, and Crate Naming @@ -181,8 +181,8 @@ Error handling suggestions follow the [Rust book guidance](https://doc.rust-lang *Fallible functions* -* `duration_since_epoch()` - to obtain the unix time, call the function provided by `libra-infallible`. -* `RwLock` and `Mutex` - Instead of calling `unwrap()` on the standard library implementations of these functions, use the infallible equivalent types that we provide in `libra-infallible`. +* `duration_since_epoch()` - to obtain the unix time, call the function provided by `diem-infallible`. +* `RwLock` and `Mutex` - Instead of calling `unwrap()` on the standard library implementations of these functions, use the infallible equivalent types that we provide in `diem-infallible`. *Panic* @@ -276,9 +276,9 @@ mod tests { *Property-based tests* -Libra contains [property-based tests](https://blog.jessitron.com/2013/04/25/property-based-testing-what-is-it/) written in Rust using the [`proptest` framework](https://github.com/AltSysrq/proptest). Property-based tests generate random test cases and assert that invariants, also called *properties*, hold for the code under test. +Diem contains [property-based tests](https://blog.jessitron.com/2013/04/25/property-based-testing-what-is-it/) written in Rust using the [`proptest` framework](https://github.com/AltSysrq/proptest). Property-based tests generate random test cases and assert that invariants, also called *properties*, hold for the code under test. -Some examples of properties tested in Libra: +Some examples of properties tested in Diem: * Every serializer and deserializer pair is tested for correctness with random inputs to the serializer. Any pair of functions that are inverses of each other can be tested this way. * The results of executing common transactions through the VM are tested using randomly generated scenarios and verified with an *Oracle*. @@ -293,11 +293,11 @@ References: *Fuzzing* -Libra contains harnesses for fuzzing crash-prone code like deserializers, using [`libFuzzer`](https://llvm.org/docs/LibFuzzer.html) through [`cargo fuzz`](https://rust-fuzz.github.io/book/cargo-fuzz.html). For more examples, see the `testsuite/libra_fuzzer` directory. +Diem contains harnesses for fuzzing crash-prone code like deserializers, using [`libFuzzer`](https://llvm.org/docs/LibFuzzer.html) through [`cargo fuzz`](https://rust-fuzz.github.io/book/cargo-fuzz.html). For more examples, see the `testsuite/diem_fuzzer` directory. ### Conditional compilation of tests -Libra [conditionally +Diem [conditionally compiles](https://doc.rust-lang.org/stable/reference/conditional-compilation.html) code that is *only relevant for tests, but does not consist of tests* (unitary or otherwise). Examples of this include proptest strategies, implementations @@ -316,7 +316,7 @@ As a consequence, it is recommended that you set up your test-only code in the f **For production crates:** -Production crates are defined as the set of crates that create externally published artifacts, e.g. the Libra validator, +Production crates are defined as the set of crates that create externally published artifacts, e.g. the Diem validator, the Move compiler, and so on. For the sake of example, we'll consider you are defining a test-only helper function `foo` in `foo_crate`: @@ -364,7 +364,7 @@ elements in another crate need to activate the "fuzzing" feature through the `[features]` section in their `Cargo.toml`. [Integration tests](https://doc.rust-lang.org/rust-by-example/testing/integration_testing.html) can neither rely on the `test` flag nor do they have a proper `Cargo.toml` for -feature activation. In the Libra codebase, we therefore recommend that +feature activation. In the Diem codebase, we therefore recommend that *integration tests which depend on test-only code in their tested crate* be extracted to their own test-only crate. See `language/vm/serializer_tests` for an example of such an extracted integration test. diff --git a/documentation/contributing/corporate-cla.pdf b/documentation/contributing/corporate-cla.pdf index 010b03f000..c8279e149e 100644 Binary files a/documentation/contributing/corporate-cla.pdf and b/documentation/contributing/corporate-cla.pdf differ diff --git a/documentation/contributing/individual-cla.pdf b/documentation/contributing/individual-cla.pdf index 99a33204c9..d92806b143 100644 Binary files a/documentation/contributing/individual-cla.pdf and b/documentation/contributing/individual-cla.pdf differ diff --git a/documentation/tech-papers/lbft-reconfig/correctness.tex b/documentation/tech-papers/lbft-reconfig/correctness.tex index cadab5acdd..0dc321450b 100644 --- a/documentation/tech-papers/lbft-reconfig/correctness.tex +++ b/documentation/tech-papers/lbft-reconfig/correctness.tex @@ -15,7 +15,7 @@ \section{Correctness} \label{correctness} \paragraph{Enters pipelining} -As depicted above under “Pipelined reconfiguration”, the LibraBFT consensus algorithm “spreads” the phases of the protocol (for every slot) over +As depicted above under “Pipelined reconfiguration”, the DiemBFT consensus algorithm “spreads” the phases of the protocol (for every slot) over 3 rounds. More specifically, every phase is carried in a single round and contains a new proposal. For example, the leader of round k drives only a single phase of certification of its proposal. In the next round, k+1, a leader again drives a single phase of certification. Interestingly, this phase has multiple purposes: diff --git a/documentation/tech-papers/lbft-reconfig/lbft-reconfig.tex b/documentation/tech-papers/lbft-reconfig/lbft-reconfig.tex index 251100497d..11b498cae7 100644 --- a/documentation/tech-papers/lbft-reconfig/lbft-reconfig.tex +++ b/documentation/tech-papers/lbft-reconfig/lbft-reconfig.tex @@ -36,8 +36,8 @@ \input{setup} \begin{document} -\title{Reconfiguration of the Libra Blockchain by Self-Reflecting Transactions} -\author{The LibraBFT Team} +\title{Reconfiguration of the Diem Blockchain by Self-Reflecting Transactions} +\author{The DiemBFT Team} \date{} \maketitle @@ -46,9 +46,9 @@ \newcommand{\myomit}[1]{} \begin{abstract} -This report describes reconfiguration of LibraBFT - an extension to \LBFT to support reconfigure itself +This report describes reconfiguration of DiemBFT - an extension to \LBFT to support reconfigure itself by embedding configuration-change transactions in the sequence. -\LBFT addresses the fundamental consensus problem of the libra blockchain with fixed configuration setup, +\LBFT addresses the fundamental consensus problem of the diem blockchain with fixed configuration setup, think of validator set, consensus keys, VM features, software version etc. Those are all like configuration of one \LBFT protocol instance. we want to support those configuration changes without human intervention which could be excessive work and error prone. Instead we present diff --git a/documentation/tech-papers/lbft-verification/figures/waypoint-verification.pdf b/documentation/tech-papers/lbft-verification/figures/waypoint-verification.pdf index 6d18183993..58445aa5f2 100644 Binary files a/documentation/tech-papers/lbft-verification/figures/waypoint-verification.pdf and b/documentation/tech-papers/lbft-verification/figures/waypoint-verification.pdf differ diff --git a/documentation/tech-papers/lbft-verification/lbft-verification.pdf b/documentation/tech-papers/lbft-verification/lbft-verification.pdf index b35aca7633..3ecacdb669 100644 Binary files a/documentation/tech-papers/lbft-verification/lbft-verification.pdf and b/documentation/tech-papers/lbft-verification/lbft-verification.pdf differ diff --git a/documentation/tech-papers/lbft-verification/lbft-verification.tex b/documentation/tech-papers/lbft-verification/lbft-verification.tex index 11471e065c..26868566fe 100644 --- a/documentation/tech-papers/lbft-verification/lbft-verification.tex +++ b/documentation/tech-papers/lbft-verification/lbft-verification.tex @@ -116,7 +116,7 @@ \subsection{Motivation} \label{waypoint-motivation} A \emph{cold} node (the one that comes online for the first time, or after a long period of being disconnected), faces a problem of the initial syncup because it might no longer trust the old public keys of the historical validators it is aware of, which could have been compromised since then (the so called “long range attack”). -\emph{Waypoints} can be used as an off-chain mechanism for selecting the initial trusted set of validators and specific points in the accumulator history. Waypoints can be published by anyone. The Libra Association is also expected to publish waypoints on a regular basis (e.g., on \url{https://developers.libra.org}). Any waypoint selected by clients can be embedded within the nodes (clients / full nodes / validators) as a trusted “starting point”. +\emph{Waypoints} can be used as an off-chain mechanism for selecting the initial trusted set of validators and specific points in the accumulator history. Waypoints can be published by anyone. The Diem Association is also expected to publish waypoints on a regular basis (e.g., on \url{https://developers.diem.com}). Any waypoint selected by clients can be embedded within the nodes (clients / full nodes / validators) as a trusted “starting point”. The trusted points in history determined by the waypoints can be used in the following situations: \begin{itemize} diff --git a/execution/README.md b/execution/README.md index c879d1a4e4..e3e5b77f07 100644 --- a/execution/README.md +++ b/execution/README.md @@ -7,7 +7,7 @@ custom_edit_url: https://github.com/libra/libra/edit/master/executor/README.md ## Overview -The Libra Blockchain is a replicated state machine. Each validator is a replica +The Diem Blockchain is a replicated state machine. Each validator is a replica of the system. Starting from genesis state S0, each transaction Ti updates previous state Si-1 to Si. Each Si is a mapping from accounts (represented by 32-byte addresses) to diff --git a/execution/db-bootstrapper/Cargo.toml b/execution/db-bootstrapper/Cargo.toml index 3e16a329e2..d20cd6bc2b 100644 --- a/execution/db-bootstrapper/Cargo.toml +++ b/execution/db-bootstrapper/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "db-bootstrapper" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra DB-Bootstrapper." +authors = ["Diem Association "] +description = "Diem DB-Bootstrapper." repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,11 +15,11 @@ structopt = "0.3.21" executor = { path = "../executor", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libradb = { path = "../../storage/libradb", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-vm = { path = "../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../../storage/diemdb", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-vm = { path = "../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } diff --git a/execution/db-bootstrapper/src/bin/db-bootstrapper.rs b/execution/db-bootstrapper/src/bin/db-bootstrapper.rs index fe7db62b76..a3387c6bdd 100644 --- a/execution/db-bootstrapper/src/bin/db-bootstrapper.rs +++ b/execution/db-bootstrapper/src/bin/db-bootstrapper.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{ensure, format_err, Context, Result}; +use diem_config::config::RocksdbConfig; +use diem_temppath::TempPath; +use diem_types::{transaction::Transaction, waypoint::Waypoint}; +use diem_vm::DiemVM; +use diemdb::DiemDB; use executor::db_bootstrapper::calculate_genesis; -use libra_config::config::RocksdbConfig; -use libra_temppath::TempPath; -use libra_types::{transaction::Transaction, waypoint::Waypoint}; -use libra_vm::LibraVM; -use libradb::LibraDB; use std::{fs::File, io::Read, path::PathBuf}; use storage_interface::DbReaderWriter; use structopt::StructOpt; @@ -44,7 +44,7 @@ fn main() -> Result<()> { let tmpdir; let db = if opt.commit { - LibraDB::open( + DiemDB::open( &opt.db_dir, false, None, /* pruner */ @@ -54,7 +54,7 @@ fn main() -> Result<()> { // When not committing, we open the DB as secondary so the tool is usable along side a // running node on the same DB. Using a TempPath since it won't run for long. tmpdir = TempPath::new(); - LibraDB::open_as_secondary( + DiemDB::open_as_secondary( opt.db_dir.as_path(), tmpdir.path(), RocksdbConfig::default(), @@ -76,7 +76,7 @@ fn main() -> Result<()> { ) } - let committer = calculate_genesis::(&db, tree_state, &genesis_txn) + let committer = calculate_genesis::(&db, tree_state, &genesis_txn) .with_context(|| format_err!("Failed to calculate genesis."))?; println!( "Successfully calculated genesis. Got waypoint: {}", diff --git a/execution/execution-correctness/Cargo.toml b/execution/execution-correctness/Cargo.toml index b7968b33a9..556f9309cd 100644 --- a/execution/execution-correctness/Cargo.toml +++ b/execution/execution-correctness/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "execution-correctness" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] license = "Apache-2.0" publish = false edition = "2018" @@ -14,17 +14,17 @@ consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0", executor = { path = "../executor", version = "0.1.0" } executor-types = { path = "../executor-types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0"} -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-vm = { path = "../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0"} +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-vm = { path = "../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } serde = { version = "1.0.117", default-features = false } storage-client = { path = "../../storage/storage-client", version = "0.1.0" } thiserror = "1.0.22" @@ -34,9 +34,9 @@ executor-test-helpers = { path = "../executor-test-helpers", version = "0.1.0", [dev-dependencies] consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0", default-features = false, features = ["fuzzing"] } executor-test-helpers = { path = "../executor-test-helpers", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" , features = ["fuzzing"] } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-config = { path = "../../config", version = "0.1.0" , features = ["fuzzing"] } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } [features] -fuzzing = ["libra-config/fuzzing", "consensus-types/fuzzing"] +fuzzing = ["diem-config/fuzzing", "consensus-types/fuzzing"] diff --git a/execution/execution-correctness/src/execution_correctness.rs b/execution/execution-correctness/src/execution_correctness.rs index 51193f8f5a..0dd3a833ce 100644 --- a/execution/execution-correctness/src/execution_correctness.rs +++ b/execution/execution-correctness/src/execution_correctness.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use consensus_types::block::Block; -use executor_types::{Error, StateComputeResult}; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, transaction::Transaction, }; +use executor_types::{Error, StateComputeResult}; /// Interface for ExecutionCorrectness. /// It is basically the same as BlockExecutor except some interfaces will return signature with result. diff --git a/execution/execution-correctness/src/execution_correctness_manager.rs b/execution/execution-correctness/src/execution_correctness_manager.rs index b15beabec6..4d7878db40 100644 --- a/execution/execution-correctness/src/execution_correctness_manager.rs +++ b/execution/execution-correctness/src/execution_correctness_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,13 +9,13 @@ use crate::{ serializer::{SerializerClient, SerializerService}, thread::ThreadService, }; +use diem_config::config::{ExecutionCorrectnessService, NodeConfig}; +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_global_constants::EXECUTION_KEY; +use diem_infallible::Mutex; +use diem_secure_storage::{CryptoStorage, Storage}; +use diem_vm::DiemVM; use executor::Executor; -use libra_config::config::{ExecutionCorrectnessService, NodeConfig}; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_global_constants::EXECUTION_KEY; -use libra_infallible::Mutex; -use libra_secure_storage::{CryptoStorage, Storage}; -use libra_vm::LibraVM; use std::{convert::TryInto, net::SocketAddr, sync::Arc}; use storage_client::StorageClient; @@ -89,7 +89,7 @@ impl ExecutionCorrectnessManager { execution_prikey: Option, timeout: u64, ) -> Self { - let block_executor = Box::new(Executor::::new( + let block_executor = Box::new(Executor::::new( StorageClient::new(&storage_address, timeout).into(), )); Self { @@ -111,7 +111,7 @@ impl ExecutionCorrectnessManager { execution_prikey: Option, timeout: u64, ) -> Self { - let block_executor = Box::new(Executor::::new( + let block_executor = Box::new(Executor::::new( StorageClient::new(&storage_address, timeout).into(), )); let serializer_service = SerializerService::new(block_executor, execution_prikey); diff --git a/execution/execution-correctness/src/lib.rs b/execution/execution-correctness/src/lib.rs index 38fcc62045..4e1c41709e 100644 --- a/execution/execution-correctness/src/lib.rs +++ b/execution/execution-correctness/src/lib.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use consensus_types::block::Block; -use libra_crypto::HashValue; -use libra_types::transaction::Transaction; +use diem_crypto::HashValue; +use diem_types::transaction::Transaction; mod execution_correctness; mod execution_correctness_manager; diff --git a/execution/execution-correctness/src/local.rs b/execution/execution-correctness/src/local.rs index 2edb3d53ab..076a21a7d4 100644 --- a/execution/execution-correctness/src/local.rs +++ b/execution/execution-correctness/src/local.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{execution_correctness::ExecutionCorrectness, id_and_transactions_from_block}; use consensus_types::{block::Block, vote_proposal::VoteProposal}; -use executor_types::{BlockExecutor, Error, StateComputeResult}; -use libra_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, HashValue}; -use libra_infallible::Mutex; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, HashValue}; +use diem_infallible::Mutex; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, transaction::Transaction, }; +use executor_types::{BlockExecutor, Error, StateComputeResult}; use std::{boxed::Box, sync::Arc}; pub struct LocalService { diff --git a/execution/execution-correctness/src/main.rs b/execution/execution-correctness/src/main.rs index df995ca1d0..7e2332a886 100644 --- a/execution/execution-correctness/src/main.rs +++ b/execution/execution-correctness/src/main.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Usage: ./executor-service node.config #![forbid(unsafe_code)] +use diem_config::config::NodeConfig; use execution_correctness::Process; -use libra_config::config::NodeConfig; use std::{env, process}; fn main() { @@ -22,7 +22,7 @@ fn main() { process::exit(1); }); - libra_logger::Logger::new() + diem_logger::Logger::new() .channel_size(config.logger.chan_size) .is_async(config.logger.is_async) .level(config.logger.level) diff --git a/execution/execution-correctness/src/process.rs b/execution/execution-correctness/src/process.rs index 3dad18d901..1e10b46514 100644 --- a/execution/execution-correctness/src/process.rs +++ b/execution/execution-correctness/src/process.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ execution_correctness_manager, remote_service::{self, RemoteService}, }; -use libra_config::config::{ExecutionCorrectnessService, NodeConfig}; -use libra_crypto::ed25519::Ed25519PrivateKey; +use diem_config::config::{ExecutionCorrectnessService, NodeConfig}; +use diem_crypto::ed25519::Ed25519PrivateKey; use std::net::SocketAddr; pub struct Process { diff --git a/execution/execution-correctness/src/remote_service.rs b/execution/execution-correctness/src/remote_service.rs index a8aef757b5..03e30b5f59 100644 --- a/execution/execution-correctness/src/remote_service.rs +++ b/execution/execution-correctness/src/remote_service.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::serializer::{ ExecutionCorrectnessInput, SerializerClient, SerializerService, TSerializerClient, }; +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_logger::warn; +use diem_secure_net::{NetworkClient, NetworkServer}; +use diem_vm::DiemVM; use executor::Executor; use executor_types::Error; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_logger::warn; -use libra_secure_net::{NetworkClient, NetworkServer}; -use libra_vm::LibraVM; use std::net::SocketAddr; use storage_client::StorageClient; @@ -31,7 +31,7 @@ pub fn execute( prikey: Option, network_timeout: u64, ) { - let block_executor = Box::new(Executor::::new( + let block_executor = Box::new(Executor::::new( StorageClient::new(&storage_addr, network_timeout).into(), )); let mut serializer_service = SerializerService::new(block_executor, prikey); diff --git a/execution/execution-correctness/src/serializer.rs b/execution/execution-correctness/src/serializer.rs index 6b58e52c8c..30744c0ed9 100644 --- a/execution/execution-correctness/src/serializer.rs +++ b/execution/execution-correctness/src/serializer.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{execution_correctness::ExecutionCorrectness, id_and_transactions_from_block}; use consensus_types::{block::Block, vote_proposal::VoteProposal}; -use executor_types::{BlockExecutor, Error, StateComputeResult}; -use libra_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, HashValue}; -use libra_infallible::Mutex; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, HashValue}; +use diem_infallible::Mutex; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, transaction::Transaction, }; +use executor_types::{BlockExecutor, Error, StateComputeResult}; use serde::{Deserialize, Serialize}; use std::sync::Arc; diff --git a/execution/execution-correctness/src/tests/local.rs b/execution/execution-correctness/src/tests/local.rs index cb867d5d77..ae22931981 100644 --- a/execution/execution-correctness/src/tests/local.rs +++ b/execution/execution-correctness/src/tests/local.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ execution_correctness::ExecutionCorrectness, tests::suite, ExecutionCorrectnessManager, }; -use executor_test_helpers::start_storage_service; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, Uniform, }; +use executor_test_helpers::start_storage_service; #[test] fn test() { diff --git a/execution/execution-correctness/src/tests/mod.rs b/execution/execution-correctness/src/tests/mod.rs index f6863e6103..9dc20247c9 100644 --- a/execution/execution-correctness/src/tests/mod.rs +++ b/execution/execution-correctness/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod local; diff --git a/execution/execution-correctness/src/tests/serializer.rs b/execution/execution-correctness/src/tests/serializer.rs index c36fba9b72..fb56bb0195 100644 --- a/execution/execution-correctness/src/tests/serializer.rs +++ b/execution/execution-correctness/src/tests/serializer.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ execution_correctness::ExecutionCorrectness, tests::suite, ExecutionCorrectnessManager, }; -use executor_test_helpers::start_storage_service; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, Uniform, }; +use executor_test_helpers::start_storage_service; #[test] fn test() { diff --git a/execution/execution-correctness/src/tests/suite.rs b/execution/execution-correctness/src/tests/suite.rs index 7185e3668c..9fd5ef448b 100644 --- a/execution/execution-correctness/src/tests/suite.rs +++ b/execution/execution-correctness/src/tests/suite.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::execution_correctness::ExecutionCorrectness; use consensus_types::{block::Block, vote_proposal::VoteProposal}; +use diem_crypto::{ed25519::*, traits::Signature}; use executor_test_helpers::{extract_signer, gen_ledger_info_with_sigs}; -use libra_crypto::{ed25519::*, traits::Signature}; pub fn run_test_suite(executor_pair: (Box, Option)) { - let (mut config, _genesis_key) = libra_genesis_tool::test_config(); + let (mut config, _genesis_key) = diem_genesis_tool::test_config(); let signer = extract_signer(&mut config); let (mut executor, execution_pubkey) = executor_pair; let parent_block_id = executor.committed_block_id().unwrap(); diff --git a/execution/execution-correctness/src/tests/thread.rs b/execution/execution-correctness/src/tests/thread.rs index 6598b7b43c..7fa5baed36 100644 --- a/execution/execution-correctness/src/tests/thread.rs +++ b/execution/execution-correctness/src/tests/thread.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ execution_correctness::ExecutionCorrectness, tests::suite, ExecutionCorrectnessManager, }; -use executor_test_helpers::start_storage_service; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, Uniform, }; +use executor_test_helpers::start_storage_service; #[test] fn test() { diff --git a/execution/execution-correctness/src/thread.rs b/execution/execution-correctness/src/thread.rs index ca46a6bbfa..60151168c0 100644 --- a/execution/execution-correctness/src/thread.rs +++ b/execution/execution-correctness/src/thread.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This provides a runtime separation between ExecutionCorrectness and the rest without requiring the @@ -8,8 +8,8 @@ //! in testing correctness of the communication layer between ExecutionCorrectness and SafetyRules. use crate::remote_service::{self, RemoteService}; -use libra_config::utils; -use libra_crypto::ed25519::Ed25519PrivateKey; +use diem_config::utils; +use diem_crypto::ed25519::Ed25519PrivateKey; use std::{ net::{IpAddr, Ipv4Addr, SocketAddr}, thread::{self, JoinHandle}, diff --git a/execution/execution-correctness/tests/binary.rs b/execution/execution-correctness/tests/binary.rs index 5ada6863d7..73d1c0f7ce 100644 --- a/execution/execution-correctness/tests/binary.rs +++ b/execution/execution-correctness/tests/binary.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use execution_correctness::ExecutionCorrectnessManager; -use libra_config::{ +use diem_config::{ config::{ExecutionCorrectnessService, PersistableConfig, RemoteExecutionService}, utils, }; +use execution_correctness::ExecutionCorrectnessManager; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; const BINARY: &str = env!("CARGO_BIN_EXE_execution-correctness"); @@ -17,7 +17,7 @@ fn test_rest() { config.execution.service = ExecutionCorrectnessService::Process(RemoteExecutionService { server_address }); - let config_path = libra_temppath::TempPath::new(); + let config_path = diem_temppath::TempPath::new(); config_path.create_as_file().unwrap(); config.save_config(config_path.path()).unwrap(); diff --git a/execution/executor-benchmark/Cargo.toml b/execution/executor-benchmark/Cargo.toml index 70f61bc1c1..0955ba91ad 100644 --- a/execution/executor-benchmark/Cargo.toml +++ b/execution/executor-benchmark/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "executor-benchmark" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra executor benchmark" +authors = ["Diem Association "] +description = "Diem executor benchmark" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,15 +17,15 @@ structopt = "0.3.21" executor = { path = "../executor", version = "0.1.0" } executor-types = { path = "../executor-types", version = "0.1.0" } -libradb = { path = "../../storage/libradb", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-vm= { path = "../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../../storage/diemdb", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-vm= { path = "../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-client = { path = "../../storage/storage-client", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } storage-service = { path = "../../storage/storage-service", version = "0.1.0" } @@ -33,4 +33,4 @@ transaction-builder = { path = "../../language/transaction-builder", version = " [features] default = [] -fuzzing = ["libra-config/fuzzing", "libra-crypto/fuzzing", "libra-types/fuzzing"] +fuzzing = ["diem-config/fuzzing", "diem-crypto/fuzzing", "diem-types/fuzzing"] diff --git a/execution/executor-benchmark/src/lib.rs b/execution/executor-benchmark/src/lib.rs index 70a00ce861..c0eef1c85a 100644 --- a/execution/executor-benchmark/src/lib.rs +++ b/execution/executor-benchmark/src/lib.rs @@ -1,26 +1,21 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use executor::{ - db_bootstrapper::{generate_waypoint, maybe_bootstrap}, - Executor, -}; -use executor_types::BlockExecutor; -use libra_config::{ +use diem_config::{ config::{NodeConfig, RocksdbConfig}, utils::get_genesis_txn, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, hash::HashValue, PrivateKey, SigningKey, Uniform, }; -use libra_logger::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_types::{ account_address::AccountAddress, account_config::{ - coin1_tmp_tag, testnet_dd_account_address, treasury_compliance_account_address, - AccountResource, COIN1_NAME, + testnet_dd_account_address, treasury_compliance_account_address, xus_tag, AccountResource, + XUS_NAME, }, block_info::BlockInfo, chain_id::ChainId, @@ -29,8 +24,13 @@ use libra_types::{ authenticator::AuthenticationKey, RawTransaction, Script, SignedTransaction, Transaction, }, }; -use libra_vm::LibraVM; -use libradb::LibraDB; +use diem_vm::DiemVM; +use diemdb::DiemDB; +use executor::{ + db_bootstrapper::{generate_waypoint, maybe_bootstrap}, + Executor, +}; +use executor_types::BlockExecutor; use rand::{rngs::StdRng, SeedableRng}; use std::{ collections::BTreeMap, @@ -89,7 +89,7 @@ impl TransactionGenerator { for _i in 0..num_accounts { let private_key = Ed25519PrivateKey::generate(&mut rng); let public_key = private_key.public_key(); - let address = libra_types::account_address::from_public_key(&public_key); + let address = diem_types::account_address::from_public_key(&public_key); let account = AccountData { private_key, public_key, @@ -125,7 +125,7 @@ impl TransactionGenerator { &self.genesis_key, self.genesis_key.public_key(), encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, account.address, account.auth_key_prefix(), @@ -157,7 +157,7 @@ impl TransactionGenerator { &self.genesis_key, self.genesis_key.public_key(), encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account.address, init_account_balance, vec![], @@ -192,7 +192,7 @@ impl TransactionGenerator { &sender.private_key, sender.public_key.clone(), encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), receiver.address, 1, /* amount */ vec![], @@ -232,14 +232,14 @@ impl TransactionGenerator { } struct TransactionExecutor { - executor: Executor, + executor: Executor, parent_block_id: HashValue, block_receiver: mpsc::Receiver>, } impl TransactionExecutor { fn new( - executor: Executor, + executor: Executor, parent_block_id: HashValue, block_receiver: mpsc::Receiver>, ) -> Self { @@ -306,9 +306,9 @@ impl TransactionExecutor { fn create_storage_service_and_executor( config: &NodeConfig, -) -> (Arc, Executor) { +) -> (Arc, Executor) { let (db, db_rw) = DbReaderWriter::wrap( - LibraDB::open( + DiemDB::open( &config.storage.dir(), false, /* readonly */ None, /* pruner */ @@ -316,8 +316,8 @@ fn create_storage_service_and_executor( ) .expect("DB should open."), ); - let waypoint = generate_waypoint::(&db_rw, get_genesis_txn(config).unwrap()).unwrap(); - maybe_bootstrap::(&db_rw, get_genesis_txn(config).unwrap(), waypoint).unwrap(); + let waypoint = generate_waypoint::(&db_rw, get_genesis_txn(config).unwrap()).unwrap(); + maybe_bootstrap::(&db_rw, get_genesis_txn(config).unwrap(), waypoint).unwrap(); let _handle = start_storage_service_with_db(config, db.clone()); let executor = Executor::new( @@ -335,7 +335,7 @@ pub fn run_benchmark( num_transfer_blocks: usize, db_dir: Option, ) { - let (mut config, genesis_key) = libra_genesis_tool::test_config(); + let (mut config, genesis_key) = diem_genesis_tool::test_config(); if let Some(path) = db_dir { config.storage.dir = path; } @@ -380,16 +380,16 @@ fn create_transaction( public_key: Ed25519PublicKey, program: Script, ) -> Transaction { - let now = libra_infallible::duration_since_epoch(); + let now = diem_infallible::duration_since_epoch(); let expiration_time = now.as_secs() + 3600; let raw_txn = RawTransaction::new_script( sender, sequence_number, program, - 1_000_000, /* max_gas_amount */ - 0, /* gas_unit_price */ - COIN1_NAME.to_owned(), /* gas_currency_code */ + 1_000_000, /* max_gas_amount */ + 0, /* gas_unit_price */ + XUS_NAME.to_owned(), /* gas_currency_code */ expiration_time, ChainId::test(), ); diff --git a/execution/executor-benchmark/src/main.rs b/execution/executor-benchmark/src/main.rs index f48b186c96..b82e4ad610 100644 --- a/execution/executor-benchmark/src/main.rs +++ b/execution/executor-benchmark/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::PathBuf; @@ -25,7 +25,7 @@ struct Opt { fn main() { let opt = Opt::from_args(); - libra_logger::Logger::new().init(); + diem_logger::Logger::new().init(); rayon::ThreadPoolBuilder::new() .thread_name(|index| format!("rayon-global-{}", index)) diff --git a/execution/executor-test-helpers/Cargo.toml b/execution/executor-test-helpers/Cargo.toml index 4b06aae844..c9dbdbcf3e 100644 --- a/execution/executor-test-helpers/Cargo.toml +++ b/execution/executor-test-helpers/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "executor-test-helpers" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra executor test helpers" +authors = ["Diem Association "] +description = "Diem executor test helpers" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,14 +16,14 @@ tempfile = "3.1.0" executor = { path = "../executor", version = "0.1.0" } executor-types = { path = "../executor-types", version = "0.1.0" } -libradb = { path = "../../storage/libradb", version = "0.1.0", features = ["fuzzing"] } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } -libra-vm = { path = "../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../../storage/diemdb", version = "0.1.0", features = ["fuzzing"] } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-vm = { path = "../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } storage-service = { path = "../../storage/storage-service", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } diff --git a/execution/executor-test-helpers/src/integration_test_impl.rs b/execution/executor-test-helpers/src/integration_test_impl.rs index d58fc9d78b..656314feee 100644 --- a/execution/executor-test-helpers/src/integration_test_impl.rs +++ b/execution/executor-test-helpers/src/integration_test_impl.rs @@ -1,17 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ bootstrap_genesis, gen_block_id, gen_ledger_info_with_sigs, get_test_signed_transaction, }; use anyhow::{anyhow, ensure, Result}; -use executor::Executor; -use executor_types::BlockExecutor; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ account_config::{ - coin1_tmp_tag, from_currency_code_string, testnet_dd_account_address, - treasury_compliance_account_address, COIN1_NAME, + from_currency_code_string, testnet_dd_account_address, treasury_compliance_account_address, + xus_tag, XUS_NAME, }, account_state::AccountState, account_state_blob::AccountStateWithProof, @@ -23,8 +21,10 @@ use libra_types::{ trusted_state::{TrustedState, TrustedStateChange}, waypoint::Waypoint, }; -use libra_vm::LibraVM; -use libradb::LibraDB; +use diem_vm::DiemVM; +use diemdb::DiemDB; +use executor::Executor; +use executor_types::BlockExecutor; use rand::SeedableRng; use std::{convert::TryFrom, sync::Arc}; use storage_interface::{DbReaderWriter, Order}; @@ -32,17 +32,17 @@ use transaction_builder::{ encode_create_parent_vasp_account_script, encode_peer_to_peer_with_metadata_script, }; -pub fn test_execution_with_storage_impl() -> Arc { +pub fn test_execution_with_storage_impl() -> Arc { let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(genesis)); let genesis_key = &vm_genesis::GENESIS_KEYPAIR.0; - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); - let (libra_db, db, mut executor, waypoint) = create_db_and_executor(path.path(), &genesis_txn); + let (diem_db, db, mut executor, waypoint) = create_db_and_executor(path.path(), &genesis_txn); let parent_block_id = executor.committed_block_id(); - let signer = libra_types::validator_signer::ValidatorSigner::new( + let signer = diem_types::validator_signer::ValidatorSigner::new( validators[0].owner_address, validators[0].key.clone(), ); @@ -77,7 +77,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, account1, account1_auth_key.prefix().to_vec(), @@ -92,7 +92,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, account2, account2_auth_key.prefix().to_vec(), @@ -107,7 +107,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, account3, account3_auth_key.prefix().to_vec(), @@ -123,7 +123,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account1, 2_000_000, vec![], @@ -138,7 +138,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account2, 1_200_000, vec![], @@ -153,7 +153,7 @@ pub fn test_execution_with_storage_impl() -> Arc { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account3, 1_000_000, vec![], @@ -169,7 +169,7 @@ pub fn test_execution_with_storage_impl() -> Arc { privkey1.clone(), pubkey1.clone(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account2, 20_000, vec![], @@ -185,7 +185,7 @@ pub fn test_execution_with_storage_impl() -> Arc { privkey2, pubkey2, Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account3, 10_000, vec![], @@ -201,7 +201,7 @@ pub fn test_execution_with_storage_impl() -> Arc { privkey1.clone(), pubkey1.clone(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account3, 70_000, vec![], @@ -223,7 +223,7 @@ pub fn test_execution_with_storage_impl() -> Arc { privkey1.clone(), pubkey1.clone(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account3, 10_000, vec![], @@ -506,16 +506,16 @@ pub fn test_execution_with_storage_impl() -> Arc { assert_eq!(account3_received_events_batch2.len(), 7); assert_eq!(account3_received_events_batch2[0].1.sequence_number(), 6); - libra_db + diem_db } pub fn create_db_and_executor>( path: P, genesis: &Transaction, -) -> (Arc, DbReaderWriter, Executor, Waypoint) { - let (db, dbrw) = DbReaderWriter::wrap(LibraDB::new_for_test(&path)); - let waypoint = bootstrap_genesis::(&dbrw, genesis).unwrap(); - let executor = Executor::::new(dbrw.clone()); +) -> (Arc, DbReaderWriter, Executor, Waypoint) { + let (db, dbrw) = DbReaderWriter::wrap(DiemDB::new_for_test(&path)); + let waypoint = bootstrap_genesis::(&dbrw, genesis).unwrap(); + let executor = Executor::::new(dbrw.clone()); (db, dbrw, executor, waypoint) } @@ -529,8 +529,8 @@ where { let balance = if let Some(blob) = &account_state_with_proof.blob { AccountState::try_from(blob)? - .get_balance_resources(&[from_currency_code_string(COIN1_NAME).unwrap()])? - .get(&from_currency_code_string(COIN1_NAME).unwrap()) + .get_balance_resources(&[from_currency_code_string(XUS_NAME).unwrap()])? + .get(&from_currency_code_string(XUS_NAME).unwrap()) .map(|b| b.coin()) .unwrap_or(0) } else { diff --git a/execution/executor-test-helpers/src/lib.rs b/execution/executor-test-helpers/src/lib.rs index 54ca0b1b49..467530b4a9 100644 --- a/execution/executor-test-helpers/src/lib.rs +++ b/execution/executor-test-helpers/src/lib.rs @@ -1,16 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod integration_test_impl; -use executor::db_bootstrapper::{generate_waypoint, maybe_bootstrap}; -use executor_types::StateComputeResult; -use libra_config::{config::NodeConfig, utils}; -use libra_crypto::{ +use diem_config::{config::NodeConfig, utils}; +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, HashValue, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, block_info::BlockInfo, block_metadata::BlockMetadata, @@ -20,8 +18,10 @@ use libra_types::{ validator_signer::ValidatorSigner, waypoint::Waypoint, }; -use libra_vm::{LibraVM, VMExecutor}; -use libradb::LibraDB; +use diem_vm::{DiemVM, VMExecutor}; +use diemdb::DiemDB; +use executor::db_bootstrapper::{generate_waypoint, maybe_bootstrap}; +use executor_types::StateComputeResult; use std::{ net::{IpAddr, Ipv4Addr, SocketAddr}, sync::Arc, @@ -41,11 +41,11 @@ pub fn bootstrap_genesis( } pub fn start_storage_service() -> (NodeConfig, JoinHandle<()>, Arc) { - let (mut config, _genesis_key) = libra_genesis_tool::test_config(); + let (mut config, _genesis_key) = diem_genesis_tool::test_config(); let server_port = utils::get_available_port(); config.storage.address = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), server_port); - let (db, db_rw) = DbReaderWriter::wrap(LibraDB::new_for_test(&config.storage.dir())); - bootstrap_genesis::(&db_rw, utils::get_genesis_txn(&config).unwrap()).unwrap(); + let (db, db_rw) = DbReaderWriter::wrap(DiemDB::new_for_test(&config.storage.dir())); + bootstrap_genesis::(&db_rw, utils::get_genesis_txn(&config).unwrap()).unwrap(); let handle = start_storage_service_with_db(&config, db.clone()); (config, handle, db as Arc) } diff --git a/execution/executor-types/Cargo.toml b/execution/executor-types/Cargo.toml index 40c2aec207..a2c561e476 100644 --- a/execution/executor-types/Cargo.toml +++ b/execution/executor-types/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "executor-types" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra executor interface types" +authors = ["Diem Association "] +description = "Diem executor interface types" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,13 +15,13 @@ serde = { version = "1.0.117", default-features = false } thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } scratchpad = { path = "../../storage/scratchpad", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-crypto/fuzzing", "libra-types/fuzzing"] +fuzzing = ["diem-crypto/fuzzing", "diem-types/fuzzing"] diff --git a/execution/executor-types/src/error.rs b/execution/executor-types/src/error.rs index 8427c3744f..ca164964de 100644 --- a/execution/executor-types/src/error.rs +++ b/execution/executor-types/src/error.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::HashValue; +use diem_crypto::HashValue; use serde::{Deserialize, Serialize}; use thiserror::Error; @@ -32,8 +32,8 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_secure_net::Error) -> Self { +impl From for Error { + fn from(error: diem_secure_net::Error) -> Self { Self::InternalError { error: format!("{}", error), } diff --git a/execution/executor-types/src/lib.rs b/execution/executor-types/src/lib.rs index 4286cd8394..8a081fc9b0 100644 --- a/execution/executor-types/src/lib.rs +++ b/execution/executor-types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -7,12 +7,12 @@ mod error; pub use error::Error; use anyhow::Result; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519Signature, hash::{TransactionAccumulatorHasher, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_types::{ +use diem_types::{ contract_event::ContractEvent, epoch_state::EpochState, ledger_info::LedgerInfoWithSignatures, diff --git a/execution/executor/Cargo.toml b/execution/executor/Cargo.toml index c26aad39c4..a8ae43eae0 100644 --- a/execution/executor/Cargo.toml +++ b/execution/executor/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "executor" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra executor" +authors = ["Diem Association "] +description = "Diem executor" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -20,17 +20,17 @@ serde = { version = "1.0.117", features = ["derive"] } consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0"} executor-types = { path = "../executor-types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-state-view = { path = "../../storage/state-view", version = "0.1.0" } -libra-trace = { path = "../../common/trace", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-state-view = { path = "../../storage/state-view", version = "0.1.0" } +diem-trace = { path = "../../common/trace", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } -libra-vm = { path = "../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-vm = { path = "../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } scratchpad = { path = "../../storage/scratchpad", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } @@ -43,15 +43,15 @@ rand = "0.7.3" compiled-stdlib = { path = "../../language/stdlib/compiled", version = "0.1.0" } compiler = { path = "../../language/compiler", version = "0.1.0" } executor-test-helpers = { path = "../executor-test-helpers", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libradb = { path = "../../storage/libradb", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diemdb = { path = "../../storage/diemdb", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0", features=["fuzzing"] } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } vm-genesis = { path = "../../language/tools/vm-genesis", version = "0.1.0" } [features] default = [] -fuzzing = ["consensus-types/fuzzing", "libra-crypto/fuzzing", "libra-types/fuzzing", "proptest", "storage-interface/fuzzing"] -failpoints = ["fail/failpoints", "libra-vm/failpoints"] +fuzzing = ["consensus-types/fuzzing", "diem-crypto/fuzzing", "diem-types/fuzzing", "proptest", "storage-interface/fuzzing"] +failpoints = ["fail/failpoints", "diem-vm/failpoints"] diff --git a/execution/executor/src/db_bootstrapper.rs b/execution/executor/src/db_bootstrapper.rs index 61bbe503f4..4be3169053 100644 --- a/execution/executor/src/db_bootstrapper.rs +++ b/execution/executor/src/db_bootstrapper.rs @@ -1,25 +1,25 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use crate::Executor; use anyhow::{ensure, format_err, Result}; -use executor_types::BlockExecutor; -use libra_crypto::{hash::PRE_GENESIS_BLOCK_ID, HashValue}; -use libra_logger::prelude::*; -use libra_state_view::{StateView, StateViewId}; -use libra_types::{ +use diem_crypto::{hash::PRE_GENESIS_BLOCK_ID, HashValue}; +use diem_logger::prelude::*; +use diem_state_view::{StateView, StateViewId}; +use diem_types::{ access_path::AccessPath, - account_config::libra_root_address, + account_config::diem_root_address, block_info::{BlockInfo, GENESIS_EPOCH, GENESIS_ROUND, GENESIS_TIMESTAMP_USECS}, + diem_timestamp::DiemTimestampResource, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, - libra_timestamp::LibraTimestampResource, on_chain_config::{config_address, ConfigurationResource}, transaction::Transaction, waypoint::Waypoint, }; -use libra_vm::VMExecutor; +use diem_vm::VMExecutor; +use executor_types::BlockExecutor; use move_core_types::move_resource::MoveResource; use std::collections::btree_map::BTreeMap; use storage_interface::{state_view::VerifiedStateView, DbReaderWriter, TreeState}; @@ -165,12 +165,12 @@ pub fn calculate_genesis( fn get_state_timestamp(state_view: &VerifiedStateView) -> Result { let rsrc_bytes = &state_view .get(&AccessPath::new( - libra_root_address(), - LibraTimestampResource::resource_path(), + diem_root_address(), + DiemTimestampResource::resource_path(), ))? - .ok_or_else(|| format_err!("LibraTimestampResource missing."))?; - let rsrc = lcs::from_bytes::(&rsrc_bytes)?; - Ok(rsrc.libra_timestamp.microseconds) + .ok_or_else(|| format_err!("DiemTimestampResource missing."))?; + let rsrc = lcs::from_bytes::(&rsrc_bytes)?; + Ok(rsrc.diem_timestamp.microseconds) } fn get_state_epoch(state_view: &VerifiedStateView) -> Result { diff --git a/execution/executor/src/executor_test.rs b/execution/executor/src/executor_test.rs index ecc3feeb48..e251380f07 100644 --- a/execution/executor/src/executor_test.rs +++ b/execution/executor/src/executor_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -10,14 +10,14 @@ use crate::{ }, BlockExecutor, Executor, }; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ account_address::AccountAddress, block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, transaction::{Transaction, TransactionListWithProof, Version}, }; -use libradb::LibraDB; +use diemdb::DiemDB; use proptest::prelude::*; use rand::Rng; use std::collections::BTreeMap; @@ -41,16 +41,16 @@ fn execute_and_commit_block( } struct TestExecutor { - _path: libra_temppath::TempPath, + _path: diem_temppath::TempPath, db: DbReaderWriter, executor: Executor, } impl TestExecutor { fn new() -> TestExecutor { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); - let db = DbReaderWriter::new(LibraDB::new_for_test(path.path())); + let db = DbReaderWriter::new(DiemDB::new_for_test(path.path())); let genesis = vm_genesis::test_genesis_transaction(); let waypoint = generate_waypoint::(&db, &genesis).unwrap(); maybe_bootstrap::(&db, &genesis, waypoint).unwrap(); diff --git a/execution/executor/src/fuzzing.rs b/execution/executor/src/fuzzing.rs index ba98fcca3c..211e54c125 100644 --- a/execution/executor/src/fuzzing.rs +++ b/execution/executor/src/fuzzing.rs @@ -1,12 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Executor; use anyhow::Result; -use executor_types::{BlockExecutor, ChunkExecutor}; -use libra_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; -use libra_state_view::StateView; -use libra_types::{ +use diem_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; +use diem_state_view::StateView; +use diem_types::{ account_address::AccountAddress, account_state_blob::{AccountStateBlob, AccountStateWithProof}, contract_event::ContractEvent, @@ -20,7 +19,8 @@ use libra_types::{ }, vm_status::VMStatus, }; -use libra_vm::VMExecutor; +use diem_vm::VMExecutor; +use executor_types::{BlockExecutor, ChunkExecutor}; use storage_interface::{DbReader, DbReaderWriter, DbWriter, Order, StartupInfo, TreeState}; fn create_test_executor() -> Executor { diff --git a/execution/executor/src/lib.rs b/execution/executor/src/lib.rs index 1bdf5c087c..c145aaf7ae 100644 --- a/execution/executor/src/lib.rs +++ b/execution/executor/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -19,28 +19,23 @@ pub mod db_bootstrapper; use crate::{ logging::{LogEntry, LogSchema}, metrics::{ - LIBRA_EXECUTOR_COMMIT_BLOCKS_SECONDS, LIBRA_EXECUTOR_ERRORS, - LIBRA_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS, LIBRA_EXECUTOR_EXECUTE_BLOCK_SECONDS, - LIBRA_EXECUTOR_SAVE_TRANSACTIONS_SECONDS, LIBRA_EXECUTOR_TRANSACTIONS_SAVED, - LIBRA_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS, + DIEM_EXECUTOR_COMMIT_BLOCKS_SECONDS, DIEM_EXECUTOR_ERRORS, + DIEM_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS, DIEM_EXECUTOR_EXECUTE_BLOCK_SECONDS, + DIEM_EXECUTOR_SAVE_TRANSACTIONS_SECONDS, DIEM_EXECUTOR_TRANSACTIONS_SAVED, + DIEM_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS, }, speculation_cache::SpeculationCache, types::{ProcessedVMOutput, TransactionData}, }; use anyhow::{bail, ensure, format_err, Result}; -use executor_types::{ - BlockExecutor, ChunkExecutor, Error, ExecutedTrees, ProofReader, StateComputeResult, - TransactionReplayer, -}; -use fail::fail_point; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, EventAccumulatorHasher, TransactionAccumulatorHasher}, HashValue, }; -use libra_logger::prelude::*; -use libra_state_view::StateViewId; -use libra_trace::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_state_view::StateViewId; +use diem_trace::prelude::*; +use diem_types::{ account_address::AccountAddress, account_state::AccountState, account_state_blob::AccountStateBlob, @@ -55,7 +50,12 @@ use libra_types::{ }, write_set::{WriteOp, WriteSet}, }; -use libra_vm::VMExecutor; +use diem_vm::VMExecutor; +use executor_types::{ + BlockExecutor, ChunkExecutor, Error, ExecutedTrees, ProofReader, StateComputeResult, + TransactionReplayer, +}; +use fail::fail_point; use scratchpad::SparseMerkleTree; use std::{ collections::{hash_map, HashMap, HashSet}, @@ -326,7 +326,7 @@ where Transaction: {:?}. Status: {:?}.", txn, status, ); - LIBRA_EXECUTOR_ERRORS.inc(); + DIEM_EXECUTOR_ERRORS.inc(); } } TransactionStatus::Retry => (), @@ -561,7 +561,7 @@ impl ChunkExecutor for Executor { // carrying any epoch change LI. epoch_change_li: Option, ) -> Result> { - let _timer = LIBRA_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS.start_timer(); + let _timer = DIEM_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS.start_timer(); // 1. Update the cache in executor to be consistent with latest synced state. self.reset_cache()?; @@ -723,7 +723,7 @@ impl BlockExecutor for Executor { "execute_block" ); - let _timer = LIBRA_EXECUTOR_EXECUTE_BLOCK_SECONDS.start_timer(); + let _timer = DIEM_EXECUTOR_EXECUTE_BLOCK_SECONDS.start_timer(); let parent_block_executed_trees = self.get_executed_trees(parent_block_id)?; @@ -734,7 +734,7 @@ impl BlockExecutor for Executor { let vm_outputs = { trace_code_block!("executor::execute_block", {"block", block_id}); - let _timer = LIBRA_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS.start_timer(); + let _timer = DIEM_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS.start_timer(); fail_point!("executor::vm_execute_block", |_| { Err(Error::from(anyhow::anyhow!( "Injected error in vm_execute_block" @@ -784,7 +784,7 @@ impl BlockExecutor for Executor { block_ids: Vec, ledger_info_with_sigs: LedgerInfoWithSignatures, ) -> Result<(Vec, Vec), Error> { - let _timer = LIBRA_EXECUTOR_COMMIT_BLOCKS_SECONDS.start_timer(); + let _timer = DIEM_EXECUTOR_COMMIT_BLOCKS_SECONDS.start_timer(); let block_id_to_commit = ledger_info_with_sigs.ledger_info().consensus_block_id(); info!( @@ -883,8 +883,8 @@ impl BlockExecutor for Executor { let num_txns_to_commit = txns_to_commit.len() as u64; { - let _timer = LIBRA_EXECUTOR_SAVE_TRANSACTIONS_SECONDS.start_timer(); - LIBRA_EXECUTOR_TRANSACTIONS_SAVED.observe(num_txns_to_commit as f64); + let _timer = DIEM_EXECUTOR_SAVE_TRANSACTIONS_SECONDS.start_timer(); + DIEM_EXECUTOR_TRANSACTIONS_SAVED.observe(num_txns_to_commit as f64); assert_eq!(first_version_to_commit, num_txns_in_li - num_txns_to_commit); fail_point!("executor::commit_blocks", |_| { diff --git a/execution/executor/src/logging.rs b/execution/executor/src/logging.rs index af2c89889a..f839d407eb 100644 --- a/execution/executor/src/logging.rs +++ b/execution/executor/src/logging.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::HashValue; -use libra_logger::Schema; +use diem_crypto::HashValue; +use diem_logger::Schema; use serde::Serialize; #[derive(Schema)] diff --git a/execution/executor/src/metrics.rs b/execution/executor/src/metrics.rs index 092c276078..0a33a5d901 100644 --- a/execution/executor/src/metrics.rs +++ b/execution/executor/src/metrics.rs @@ -1,69 +1,69 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{register_histogram, register_int_counter, Histogram, IntCounter}; +use diem_metrics::{register_histogram, register_int_counter, Histogram, IntCounter}; use once_cell::sync::Lazy; -pub static LIBRA_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_EXECUTE_AND_COMMIT_CHUNK_SECONDS: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_execute_and_commit_chunk_seconds", + "diem_executor_execute_and_commit_chunk_seconds", // metric description - "The time spent in seconds of chunk execution and committing in Libra executor" + "The time spent in seconds of chunk execution and committing in Diem executor" ) .unwrap() }); -pub static LIBRA_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_VM_EXECUTE_BLOCK_SECONDS: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_vm_execute_block_seconds", + "diem_executor_vm_execute_block_seconds", // metric description - "The time spent in seconds of vm block execution in Libra executor" + "The time spent in seconds of vm block execution in Diem executor" ) .unwrap() }); -pub static LIBRA_EXECUTOR_ERRORS: Lazy = Lazy::new(|| { - register_int_counter!("libra_executor_error_total", "Cumulative number of errors").unwrap() +pub static DIEM_EXECUTOR_ERRORS: Lazy = Lazy::new(|| { + register_int_counter!("diem_executor_error_total", "Cumulative number of errors").unwrap() }); -pub static LIBRA_EXECUTOR_EXECUTE_BLOCK_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_EXECUTE_BLOCK_SECONDS: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_execute_block_seconds", + "diem_executor_execute_block_seconds", // metric description - "The total time spent in seconds of block execution in Libra executor " + "The total time spent in seconds of block execution in Diem executor " ) .unwrap() }); -pub static LIBRA_EXECUTOR_COMMIT_BLOCKS_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_COMMIT_BLOCKS_SECONDS: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_commit_blocks_seconds", + "diem_executor_commit_blocks_seconds", // metric description - "The total time spent in seconds of commiting blocks in Libra executor " + "The total time spent in seconds of commiting blocks in Diem executor " ) .unwrap() }); -pub static LIBRA_EXECUTOR_SAVE_TRANSACTIONS_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_SAVE_TRANSACTIONS_SECONDS: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_save_transactions_seconds", + "diem_executor_save_transactions_seconds", // metric description - "The time spent in seconds of calling save_transactions to storage in Libra executor" + "The time spent in seconds of calling save_transactions to storage in Diem executor" ) .unwrap() }); -pub static LIBRA_EXECUTOR_TRANSACTIONS_SAVED: Lazy = Lazy::new(|| { +pub static DIEM_EXECUTOR_TRANSACTIONS_SAVED: Lazy = Lazy::new(|| { register_histogram!( // metric name - "libra_executor_transactions_saved", + "diem_executor_transactions_saved", // metric description - "The number of transactions saved to storage in Libra executor" + "The number of transactions saved to storage in Diem executor" ) .unwrap() }); diff --git a/execution/executor/src/mock_vm/mock_vm_test.rs b/execution/executor/src/mock_vm/mock_vm_test.rs index 8d1d82cf66..202fd8b38c 100644 --- a/execution/executor/src/mock_vm/mock_vm_test.rs +++ b/execution/executor/src/mock_vm/mock_vm_test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{balance_ap, encode_mint_transaction, encode_transfer_transaction, seqnum_ap, MockVM}; use anyhow::Result; -use libra_state_view::StateView; -use libra_types::{access_path::AccessPath, account_address::AccountAddress, write_set::WriteOp}; -use libra_vm::VMExecutor; +use diem_state_view::StateView; +use diem_types::{access_path::AccessPath, account_address::AccountAddress, write_set::WriteOp}; +use diem_vm::VMExecutor; fn gen_address(index: u8) -> AccountAddress { AccountAddress::new([index; AccountAddress::LENGTH]) diff --git a/execution/executor/src/mock_vm/mod.rs b/execution/executor/src/mock_vm/mod.rs index fd4ba9d3c7..9b1ffbe8bd 100644 --- a/execution/executor/src/mock_vm/mod.rs +++ b/execution/executor/src/mock_vm/mod.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] mod mock_vm_test; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_state_view::StateView; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, - account_config::{libra_root_address, validator_set_address, COIN1_NAME}, + account_config::{diem_root_address, validator_set_address, XUS_NAME}, chain_id::ChainId, contract_event::ContractEvent, event::EventKey, @@ -23,7 +23,7 @@ use libra_types::{ vm_status::{KeptVMStatus, StatusCode, VMStatus}, write_set::{WriteOp, WriteSet, WriteSetMut}, }; -use libra_vm::VMExecutor; +use diem_vm::VMExecutor; use move_core_types::{language_storage::TypeTag, move_resource::MoveResource}; use once_cell::sync::Lazy; use std::collections::HashMap; @@ -45,7 +45,7 @@ enum MockVMTransaction { pub static KEEP_STATUS: Lazy = Lazy::new(|| TransactionStatus::Keep(KeptVMStatus::Executed)); -// We use 10 as the assertion error code for insufficient balance within the Libra coin contract. +// We use 10 as the assertion error code for insufficient balance within the Diem coin contract. pub static DISCARD_STATUS: Lazy = Lazy::new(|| TransactionStatus::Discard(StatusCode::INSUFFICIENT_BALANCE_FOR_TRANSACTION_FEE)); @@ -145,7 +145,7 @@ 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(libra_root_address())); + read_balance_from_storage(state_view, &balance_ap(diem_root_address())); outputs.push(TransactionOutput::new( // WriteSet cannot be empty so use genesis writeset only for testing. gen_genesis_writeset(), @@ -313,7 +313,7 @@ fn encode_transaction(sender: AccountAddress, program: Script) -> Transaction { program, 0, 0, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), 0, ChainId::test(), ); diff --git a/execution/executor/src/speculation_cache/mod.rs b/execution/executor/src/speculation_cache/mod.rs index ce46ed6cfe..6f9e72d9f3 100644 --- a/execution/executor/src/speculation_cache/mod.rs +++ b/execution/executor/src/speculation_cache/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! In a leader based consensus algorithm, each participant maintains a block tree that looks like @@ -23,13 +23,13 @@ use crate::{ }; use anyhow::{format_err, Result}; use consensus_types::block::Block; -use executor_types::{Error, ExecutedTrees}; -use libra_crypto::{hash::PRE_GENESIS_BLOCK_ID, HashValue}; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_types::{ +use diem_crypto::{hash::PRE_GENESIS_BLOCK_ID, HashValue}; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfo, transaction::Transaction, }; +use executor_types::{Error, ExecutedTrees}; use std::{ collections::HashMap, sync::{Arc, Weak}, diff --git a/execution/executor/src/speculation_cache/test.rs b/execution/executor/src/speculation_cache/test.rs index 861574d1b3..71859fdf34 100644 --- a/execution/executor/src/speculation_cache/test.rs +++ b/execution/executor/src/speculation_cache/test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use libra_types::{block_info::BlockInfo, epoch_state::EpochState}; +use diem_types::{block_info::BlockInfo, epoch_state::EpochState}; fn id(index: u64) -> HashValue { let bytes = index.to_be_bytes(); diff --git a/execution/executor/src/types.rs b/execution/executor/src/types.rs index 4ab59ec41d..eafa894a85 100644 --- a/execution/executor/src/types.rs +++ b/execution/executor/src/types.rs @@ -1,11 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use executor_types::{ExecutedTrees, StateComputeResult}; -use libra_crypto::{hash::EventAccumulatorHasher, HashValue}; -use libra_types::{ +use diem_crypto::{hash::EventAccumulatorHasher, HashValue}; +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, contract_event::ContractEvent, @@ -13,6 +12,7 @@ use libra_types::{ proof::accumulator::InMemoryAccumulator, transaction::{TransactionStatus, Version}, }; +use executor_types::{ExecutedTrees, StateComputeResult}; use scratchpad::SparseMerkleTree; use std::{collections::HashMap, sync::Arc}; diff --git a/execution/executor/tests/db_bootstrapper_test.rs b/execution/executor/tests/db_bootstrapper_test.rs index e3f55bd75b..2861a61eaa 100644 --- a/execution/executor/tests/db_bootstrapper_test.rs +++ b/execution/executor/tests/db_bootstrapper_test.rs @@ -1,25 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::Result; -use executor::{ - db_bootstrapper::{generate_waypoint, maybe_bootstrap}, - Executor, -}; -use executor_test_helpers::{ - bootstrap_genesis, gen_ledger_info_with_sigs, get_test_signed_transaction, -}; -use executor_types::BlockExecutor; -use libra_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; -use libra_temppath::TempPath; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; +use diem_temppath::TempPath; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::{ - coin1_tmp_tag, from_currency_code_string, testnet_dd_account_address, - treasury_compliance_account_address, BalanceResource, COIN1_NAME, + from_currency_code_string, testnet_dd_account_address, treasury_compliance_account_address, + xus_tag, BalanceResource, XUS_NAME, }, account_state::AccountState, account_state_blob::AccountStateBlob, @@ -36,8 +28,16 @@ use libra_types::{ waypoint::Waypoint, write_set::{WriteOp, WriteSetMut}, }; -use libra_vm::LibraVM; -use libradb::{GetRestoreHandler, LibraDB}; +use diem_vm::DiemVM; +use diemdb::{DiemDB, GetRestoreHandler}; +use executor::{ + db_bootstrapper::{generate_waypoint, maybe_bootstrap}, + Executor, +}; +use executor_test_helpers::{ + bootstrap_genesis, gen_ledger_info_with_sigs, get_test_signed_transaction, +}; +use executor_types::BlockExecutor; use move_core_types::move_resource::MoveResource; use rand::SeedableRng; use std::{convert::TryFrom, sync::Arc}; @@ -51,14 +51,14 @@ fn test_empty_db() { let genesis = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(genesis.0)); let tmp_dir = TempPath::new(); - let db_rw = DbReaderWriter::new(LibraDB::new_for_test(&tmp_dir)); + let db_rw = DbReaderWriter::new(DiemDB::new_for_test(&tmp_dir)); // Executor won't be able to boot on empty db due to lack of StartupInfo. assert!(db_rw.reader.get_startup_info().unwrap().is_none()); // Bootstrap empty DB. - let waypoint = generate_waypoint::(&db_rw, &genesis_txn).expect("Should not fail."); - maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap(); + let waypoint = generate_waypoint::(&db_rw, &genesis_txn).expect("Should not fail."); + maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap(); let startup_info = db_rw .reader .get_startup_info() @@ -75,7 +75,7 @@ fn test_empty_db() { .unwrap(); // `maybe_bootstrap()` does nothing on non-empty DB. - assert!(!maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap()); + assert!(!maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap()); } fn execute_and_commit(txns: Vec, db: &DbReaderWriter, signer: &ValidatorSigner) { @@ -84,7 +84,7 @@ fn execute_and_commit(txns: Vec, db: &DbReaderWriter, signer: &Vali let version = li.ledger_info().version(); let epoch = li.ledger_info().next_block_epoch(); let target_version = version + txns.len() as u64; - let mut executor = Executor::::new(db.clone()); + let mut executor = Executor::::new(db.clone()); let output = executor .execute_block((block_id, txns), executor.committed_block_id()) .unwrap(); @@ -119,18 +119,18 @@ fn get_demo_accounts() -> ( } fn get_mint_transaction( - libra_root_key: &Ed25519PrivateKey, - libra_root_seq_num: u64, + diem_root_key: &Ed25519PrivateKey, + diem_root_seq_num: u64, account: &AccountAddress, amount: u64, ) -> Transaction { get_test_signed_transaction( testnet_dd_account_address(), - /* sequence_number = */ libra_root_seq_num, - libra_root_key.clone(), - libra_root_key.public_key(), + /* sequence_number = */ diem_root_seq_num, + diem_root_key.clone(), + diem_root_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), *account, amount, vec![], @@ -140,19 +140,19 @@ fn get_mint_transaction( } fn get_account_transaction( - libra_root_key: &Ed25519PrivateKey, - libra_root_seq_num: u64, + diem_root_key: &Ed25519PrivateKey, + diem_root_seq_num: u64, account: &AccountAddress, account_key: &Ed25519PrivateKey, ) -> Transaction { let account_auth_key = AuthenticationKey::ed25519(&account_key.public_key()); get_test_signed_transaction( treasury_compliance_account_address(), - /* sequence_number = */ libra_root_seq_num, - libra_root_key.clone(), - libra_root_key.public_key(), + /* sequence_number = */ diem_root_seq_num, + diem_root_key.clone(), + diem_root_key.public_key(), Some(encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, *account, account_auth_key.prefix().to_vec(), @@ -175,7 +175,7 @@ fn get_transfer_transaction( sender_key.clone(), sender_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), recipient, amount, vec![], @@ -192,9 +192,9 @@ fn get_balance(account: &AccountAddress, db: &DbReaderWriter) -> u64 { .unwrap(); let account_state = AccountState::try_from(&account_state_blob).unwrap(); account_state - .get_balance_resources(&[from_currency_code_string(COIN1_NAME).unwrap()]) + .get_balance_resources(&[from_currency_code_string(XUS_NAME).unwrap()]) .unwrap() - .get(&from_currency_code_string(COIN1_NAME).unwrap()) + .get(&from_currency_code_string(XUS_NAME).unwrap()) .unwrap() .coin() } @@ -210,7 +210,7 @@ fn get_configuration(db: &DbReaderWriter) -> ConfigurationResource { } fn get_state_backup( - db: &LibraDB, + db: &DiemDB, ) -> ( Vec<(HashValue, AccountStateBlob)>, SparseMerkleRangeProof, @@ -231,7 +231,7 @@ fn get_state_backup( } fn restore_state_to_db( - db: &Arc, + db: &Arc, accounts: Vec<(HashValue, AccountStateBlob)>, proof: SparseMerkleRangeProof, root_hash: HashValue, @@ -253,9 +253,9 @@ fn test_pre_genesis() { // Create bootstrapped DB. let tmp_dir = TempPath::new(); - let (db, db_rw) = DbReaderWriter::wrap(LibraDB::new_for_test(&tmp_dir)); + let (db, db_rw) = DbReaderWriter::wrap(DiemDB::new_for_test(&tmp_dir)); let signer = ValidatorSigner::new(genesis.1[0].owner_address, genesis.1[0].key.clone()); - let waypoint = bootstrap_genesis::(&db_rw, &genesis_txn).unwrap(); + let waypoint = bootstrap_genesis::(&db_rw, &genesis_txn).unwrap(); // Mint for 2 demo accounts. let (account1, account1_key, account2, account2_key) = get_demo_accounts(); @@ -271,11 +271,11 @@ fn test_pre_genesis() { let (accounts_backup, proof, root_hash) = get_state_backup(&db); // Restore into PRE-GENESIS state of a new empty DB. let tmp_dir = TempPath::new(); - let (db, db_rw) = DbReaderWriter::wrap(LibraDB::new_for_test(&tmp_dir)); + let (db, db_rw) = DbReaderWriter::wrap(DiemDB::new_for_test(&tmp_dir)); restore_state_to_db(&db, accounts_backup, proof, root_hash, PRE_GENESIS_VERSION); // DB is not empty, `maybe_bootstrap()` will try to apply and fail the waypoint check. - assert!(maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).is_err()); + assert!(maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).is_err()); // Nor is it able to boot Executor. assert!(db_rw.reader.get_startup_info().unwrap().is_none()); @@ -287,7 +287,7 @@ fn test_pre_genesis() { WriteOp::Value(lcs::to_bytes(&ValidatorSet::new(vec![])).unwrap()), ), ( - AccessPath::new(account1, BalanceResource::access_path_for(coin1_tmp_tag())), + AccessPath::new(account1, BalanceResource::access_path_for(xus_tag())), WriteOp::Value(lcs::to_bytes(&BalanceResource::new(1000)).unwrap()), ), ]) @@ -296,14 +296,14 @@ fn test_pre_genesis() { vec![ContractEvent::new( on_chain_config::new_epoch_event_key(), 0, - coin1_tmp_tag(), + xus_tag(), vec![], )], ))); // Bootstrap DB on top of pre-genesis state. - let waypoint = generate_waypoint::(&db_rw, &genesis_txn).unwrap(); - assert!(maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap()); + let waypoint = generate_waypoint::(&db_rw, &genesis_txn).unwrap(); + assert!(maybe_bootstrap::(&db_rw, &genesis_txn, waypoint).unwrap()); let (li, epoch_change_proof, _) = db_rw.reader.get_state_proof(waypoint.version()).unwrap(); let trusted_state = TrustedState::from(waypoint); trusted_state @@ -323,8 +323,8 @@ fn test_new_genesis() { let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(genesis.0)); // Create bootstrapped DB. let tmp_dir = TempPath::new(); - let db = DbReaderWriter::new(LibraDB::new_for_test(&tmp_dir)); - let waypoint = bootstrap_genesis::(&db, &genesis_txn).unwrap(); + let db = DbReaderWriter::new(DiemDB::new_for_test(&tmp_dir)); + let waypoint = bootstrap_genesis::(&db, &genesis_txn).unwrap(); let signer = ValidatorSigner::new(genesis.1[0].owner_address, genesis.1[0].key.clone()); // Mint for 2 demo accounts. @@ -355,7 +355,7 @@ fn test_new_genesis() { WriteOp::Value(lcs::to_bytes(&configuration.bump_epoch_for_test()).unwrap()), ), ( - AccessPath::new(account1, BalanceResource::access_path_for(coin1_tmp_tag())), + AccessPath::new(account1, BalanceResource::access_path_for(xus_tag())), WriteOp::Value(lcs::to_bytes(&BalanceResource::new(1_000_000)).unwrap()), ), ]) @@ -364,14 +364,14 @@ fn test_new_genesis() { vec![ContractEvent::new( *configuration.events().key(), 0, - coin1_tmp_tag(), + xus_tag(), vec![], )], ))); // Bootstrap DB into new genesis. - let waypoint = generate_waypoint::(&db, &genesis_txn).unwrap(); - assert!(maybe_bootstrap::(&db, &genesis_txn, waypoint).unwrap()); + let waypoint = generate_waypoint::(&db, &genesis_txn).unwrap(); + assert!(maybe_bootstrap::(&db, &genesis_txn, waypoint).unwrap()); assert_eq!(waypoint.version(), 5); // Client bootable from waypoint. diff --git a/execution/executor/tests/storage_integration_test.rs b/execution/executor/tests/storage_integration_test.rs index f16c5436d6..a2c1beef5d 100644 --- a/execution/executor/tests/storage_integration_test.rs +++ b/execution/executor/tests/storage_integration_test.rs @@ -1,7 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiler::Compiler; +use diem_crypto::{ed25519::*, HashValue, PrivateKey, Uniform}; +use diem_types::{ + account_config::{diem_root_address, treasury_compliance_account_address, xus_tag}, + account_state::AccountState, + block_metadata::BlockMetadata, + transaction::{Script, Transaction, WriteSetPayload}, + trusted_state::{TrustedState, TrustedStateChange}, + validator_signer::ValidatorSigner, +}; use executor_test_helpers::{ gen_block_id, gen_block_metadata, gen_ledger_info_with_sigs, get_test_signed_transaction, integration_test_impl::{ @@ -9,15 +18,6 @@ use executor_test_helpers::{ }, }; use executor_types::BlockExecutor; -use libra_crypto::{ed25519::*, HashValue, PrivateKey, Uniform}; -use libra_types::{ - account_config::{coin1_tmp_tag, libra_root_address, treasury_compliance_account_address}, - account_state::AccountState, - block_metadata::BlockMetadata, - transaction::{Script, Transaction, WriteSetPayload}, - trusted_state::{TrustedState, TrustedStateChange}, - validator_signer::ValidatorSigner, -}; use std::convert::TryFrom; use transaction_builder::{ encode_add_to_script_allow_list_script, encode_block_prologue_script, @@ -26,7 +26,7 @@ use transaction_builder::{ #[test] fn test_genesis() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); let genesis = vm_genesis::test_genesis_transaction(); let (_, db, _executor, waypoint) = create_db_and_executor(path.path(), &genesis); @@ -41,12 +41,12 @@ fn test_genesis() { let li = li.ledger_info(); assert_eq!(li.version(), 0); - let libra_root_account = db + let diem_root_account = db .reader - .get_account_state_with_proof(libra_root_address(), 0, 0) + .get_account_state_with_proof(diem_root_address(), 0, 0) .unwrap(); - libra_root_account - .verify(li, 0, libra_root_address()) + diem_root_account + .verify(li, 0, diem_root_address()) .unwrap(); } @@ -55,7 +55,7 @@ fn test_reconfiguration() { // When executing a transaction emits a validator set change, // storage should propagate the new validator set - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_key = &vm_genesis::GENESIS_KEYPAIR.0; @@ -73,12 +73,12 @@ fn test_reconfiguration() { .reader .get_account_state_with_proof(validator_account, current_version, current_version) .unwrap(); - let libra_root_account_state_with_proof = db + let diem_root_account_state_with_proof = db .reader - .get_account_state_with_proof(libra_root_address(), current_version, current_version) + .get_account_state_with_proof(diem_root_address(), current_version, current_version) .unwrap(); assert_eq!( - AccountState::try_from(&libra_root_account_state_with_proof.blob.unwrap()) + AccountState::try_from(&diem_root_account_state_with_proof.blob.unwrap()) .unwrap() .get_validator_set() .unwrap() @@ -102,7 +102,7 @@ fn test_reconfiguration() { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), validator_account, 1_000_000, vec![], @@ -189,12 +189,12 @@ fn test_reconfiguration() { .reader .get_account_state_with_proof(validator_account, current_version, current_version) .unwrap(); - let libra_root_account_state_with_proof = db + let diem_root_account_state_with_proof = db .reader - .get_account_state_with_proof(libra_root_address(), current_version, current_version) + .get_account_state_with_proof(diem_root_address(), current_version, current_version) .unwrap(); assert_eq!( - AccountState::try_from(&libra_root_account_state_with_proof.blob.unwrap()) + AccountState::try_from(&diem_root_account_state_with_proof.blob.unwrap()) .unwrap() .get_validator_set() .unwrap() @@ -212,11 +212,11 @@ fn test_reconfiguration() { ); // test validator's key in the validator set is as expected - let libra_root_account_state_with_proof = db + let diem_root_account_state_with_proof = db .reader - .get_account_state_with_proof(libra_root_address(), current_version, current_version) + .get_account_state_with_proof(diem_root_address(), current_version, current_version) .unwrap(); - let blob = &libra_root_account_state_with_proof.blob.unwrap(); + let blob = &diem_root_account_state_with_proof.blob.unwrap(); assert_eq!( AccountState::try_from(blob) .unwrap() @@ -231,7 +231,7 @@ fn test_reconfiguration() { #[test] fn test_change_publishing_option_to_custom() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_key = &vm_genesis::GENESIS_KEYPAIR.0; @@ -241,7 +241,7 @@ fn test_change_publishing_option_to_custom() { let parent_block_id = executor.committed_block_id(); let treasury_compliance_account = treasury_compliance_account_address(); - let genesis_account = libra_root_address(); + let genesis_account = diem_root_address(); let signer = ValidatorSigner::new(validators[0].owner_address, validators[0].key.clone()); let validator_account = signer.author(); @@ -255,7 +255,7 @@ fn test_change_publishing_option_to_custom() { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), validator_account, 1_000_000, vec![], @@ -289,17 +289,17 @@ fn test_change_publishing_option_to_custom() { let script_body = { let code = " - import 0x1.LibraTransactionPublishingOption; + import 0x1.DiemTransactionPublishingOption; main(account: &signer) { - LibraTransactionPublishingOption.set_open_script(move(account)); + DiemTransactionPublishingOption.set_open_script(move(account)); return; } "; let compiler = Compiler { - address: libra_types::account_config::CORE_CODE_ADDRESS, + address: diem_types::account_config::CORE_CODE_ADDRESS, extra_deps: vec![], ..Compiler::default() }; @@ -412,7 +412,7 @@ fn test_change_publishing_option_to_custom() { #[test] fn test_extend_allowlist() { - let path = libra_temppath::TempPath::new(); + let path = diem_temppath::TempPath::new(); path.create_as_dir().unwrap(); let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_key = &vm_genesis::GENESIS_KEYPAIR.0; @@ -422,7 +422,7 @@ fn test_extend_allowlist() { let parent_block_id = executor.committed_block_id(); let treasury_compliance_account = treasury_compliance_account_address(); - let genesis_account = libra_root_address(); + let genesis_account = diem_root_address(); let signer = ValidatorSigner::new(validators[0].owner_address, validators[0].key.clone()); let validator_account = signer.author(); @@ -436,7 +436,7 @@ fn test_extend_allowlist() { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), validator_account, 1_000_000, vec![], diff --git a/json-rpc/API-CHANGELOG.md b/json-rpc/API-CHANGELOG.md index ddf9438d97..d2c5c255e6 100644 --- a/json-rpc/API-CHANGELOG.md +++ b/json-rpc/API-CHANGELOG.md @@ -29,15 +29,15 @@ This allows to create verifying clients that do not need to blindly trust the fu ## 2020-10-08 Decode transaction script as name, code, arguments and type_arguments -- Transaction [Script](docs/type_transaction.md#type-script) is fulfilled with known script name as type, code, arguments and type_arguments. Similar with on-chain transaction [Script](https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.Script.html) type. +- Transaction [Script](docs/type_transaction.md#type-script) is fulfilled with known script name as type, code, arguments and type_arguments. Similar with on-chain transaction [Script](https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.Script.html) type. - Renamed type `peer_to_peer_transaction` to `peer_to_peer_with_metadata`, which is consistent with stdlib transaction script name. - Removed `mint_transaction`, it is never rendered because of a bug, and the script does not exist anymore. - [See PR #6453](https://github.com/libra/libra/pull/6453) -## 2020-10-07 Add `libra_version` field to `get_metadata` response +## 2020-10-07 Add `diem_version` field to `get_metadata` response -- `libra_version` number of libra onchain version +- `diem_version` number of diem onchain version See [doc](docs/type_metadata.md) for more details. diff --git a/json-rpc/Cargo.toml b/json-rpc/Cargo.toml index a197391c7d..baab39476a 100644 --- a/json-rpc/Cargo.toml +++ b/json-rpc/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-json-rpc" +name = "diem-json-rpc" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra rpc endpoint" +authors = ["Diem Association "] +description = "Diem rpc endpoint" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -25,18 +25,18 @@ reqwest = { version = "0.10.9", features = ["blocking", "json"], default_feature proptest = { version = "0.10.1", optional = true } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libradb = { path = "../storage/libradb", version = "0.1.0", optional = true } -libra-json-rpc-types = { path = "./types", version = "0.1.0", package = "libra-json-rpc-types" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-mempool = { path = "../mempool", version = "0.1.0" } -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-proptest-helpers = { path = "../common/proptest-helpers", optional = true } -libra-trace = { path = "../common/trace", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0" } -libra-temppath = { path = "../common/temppath", version = "0.1.0", optional = true } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diemdb = { path = "../storage/diemdb", version = "0.1.0", optional = true } +diem-json-rpc-types = { path = "./types", version = "0.1.0", package = "diem-json-rpc-types" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-mempool = { path = "../mempool", version = "0.1.0" } +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-proptest-helpers = { path = "../common/proptest-helpers", optional = true } +diem-trace = { path = "../common/trace", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0" } +diem-temppath = { path = "../common/temppath", version = "0.1.0", optional = true } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../language/move-core/types", version = "0.1.0" } network = { path = "../network", version = "0.1.0" } storage-interface = { path = "../storage/storage-interface", version = "0.1.0" } @@ -47,13 +47,13 @@ reqwest = { version = "0.10.9", features = ["blocking", "json"], default_feature rand = { version = "0.7.3" } generate-key = { path = "../config/generate-key", version = "0.1.0" } -libradb = { path = "../storage/libradb", version = "0.1.0", features = ["fuzzing"] } -libra-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-json-rpc-client = { path = "../client/json-rpc", version = "0.1.0" } -libra-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../common/proptest-helpers" } -libra-temppath = { path = "../common/temppath", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0", features = ["fuzzing"] } +diemdb = { path = "../storage/diemdb", version = "0.1.0", features = ["fuzzing"] } +diem-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-json-rpc-client = { path = "../client/json-rpc", version = "0.1.0" } +diem-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../common/proptest-helpers" } +diem-temppath = { path = "../common/temppath", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0", features = ["fuzzing"] } vm-validator = { path = "../vm-validator", version = "0.1.0" } compiled-stdlib = { path = "../language/stdlib/compiled", version = "0.1.0" } vm-genesis = { path = "../language/tools/vm-genesis", version = "0.1.0" } @@ -62,8 +62,8 @@ executor-types = { path = "../execution/executor-types", version = "0.1.0" } scratchpad = { path = "../storage/scratchpad", version = "0.1.0" } move-vm-types = { path = "../language/move-vm/types", version = "0.1.0" } transaction-builder-generated = { path = "../client/transaction-builder", version = "0.1.0" } -libra-node = { path = "../libra-node", version = "0.1.0" } +diem-node = { path = "../diem-node", version = "0.1.0" } [features] -fuzzing = ["proptest", "libra-mempool/fuzzing", "libradb/fuzzing", "libra-proptest-helpers", "libra-temppath", "reqwest"] +fuzzing = ["proptest", "diem-mempool/fuzzing", "diemdb/fuzzing", "diem-proptest-helpers", "diem-temppath", "reqwest"] failpoints = ["fail/failpoints"] diff --git a/json-rpc/README.md b/json-rpc/README.md index 3a2a202348..16d8eaf3e5 100644 --- a/json-rpc/README.md +++ b/json-rpc/README.md @@ -1,6 +1,6 @@ # JSON-RPC -JSON-RPC service provides APIs for client applications to query the Libra blockchain. +JSON-RPC service provides APIs for client applications to query the Diem blockchain. There are two types of clients, and thus two types of APIs: diff --git a/json-rpc/docs/client_checklist.md b/json-rpc/docs/client_checklist.md index 2d829c3f9e..4e4b44e13d 100644 --- a/json-rpc/docs/client_checklist.md +++ b/json-rpc/docs/client_checklist.md @@ -1,15 +1,15 @@ -This file is a checklist of requirement & technical details for a Libra client SDK implementation. +This file is a checklist of requirement & technical details for a Diem client SDK implementation. # Basics - [ ] module structure: - - libra - - LibraClient: JSON-RPC APIs interface, should support application to do easy mock / stub development. - - jsonrpc: jsonrpc client interface, include plain data classes / structs defined in Libra JSON-RPC SPEC document. + - diem + - DiemClient: JSON-RPC APIs interface, should support application to do easy mock / stub development. + - jsonrpc: jsonrpc client interface, include plain data classes / structs defined in Diem JSON-RPC SPEC document. - types: data transfer object types for jsonrpc client, should match server side JSON-RPC spec data types. - stdlib: move stdlib script utils. - testnet: testnet utils, should include FaucetService for handling testnet mint. - - libra-types: Libra onchain data structure types. + - diem-types: Diem onchain data structure types. - utils: - signing - sha3 hashing, address parsing and converting, hex encoding / decoding @@ -20,12 +20,12 @@ This file is a checklist of requirement & technical details for a Libra client S - batch requests and responses handling. - [ ] JSON-RPC client error handling should distinguish the following 3 type errors: - Transport layer error, e.g. HTTP call failure. - - JSON-RPC protocol error: e.g. server responds to non json data, or can't be parsed into [Libra JSON-RPC SPEC][1] defined data structure, or missing result & error field. + - JSON-RPC protocol error: e.g. server responds to non json data, or can't be parsed into [Diem JSON-RPC SPEC][1] defined data structure, or missing result & error field. - JSON-RPC error: error returned from server. - [ ] Supports https. - [ ] Client connection pool. - [ ] Handle stale responses: - - [ ] Parse libra_chain_id, libra_ledger_version and libra_ledger_tiemstamp in the JSONRPC response. + - [ ] Parse diem_chain_id, diem_ledger_version and diem_ledger_tiemstamp in the JSONRPC response. - [ ] client tracks latest server response block version and timestamp, raise error when received server response contains stale version / timestamp. - [ ] last known blockchain version <= response version: when connecting to a cluster of fullnodes, it is possible some fullnodes are behind the head couple versions. - [ ] last known blockchain timestamp <= response timestamp. @@ -44,7 +44,7 @@ This file is a checklist of requirement & technical details for a Libra client S - [ ] Send request with "client sdk name / version" as HTTP User-Agent: this is for server to recognize client sdk version. - [ ] Decode transaction script bytes: it is possible we may add new transaction script without upgrading server, hence client decoding logic is important for client to recognize all transaction scripts. By upgrading client side move stdlib scripts (binary and generated type information code), we can decode latest move stdlib scripts executed on-chain. -- [ ] Create transaction hash from signed transaction: hex-encode(sha3-256([]byte("LIBRA::Transaction")) + []byte(0) + signed transaction bytes) ([implementation example](https://github.com/libra/libra-client-sdk-go/blob/master/libratypes/hash.go#L27)) +- [ ] Create transaction hash from signed transaction: hex-encode(sha3-256([]byte("DIEM::Transaction")) + []byte(0) + signed transaction bytes) ([implementation example](https://github.com/libra/client-sdk-go/blob/master/diemtypes/hash.go#L27)) - [ ] Client interface should prefer to use AccountAddress type instead of string address. @@ -112,10 +112,10 @@ See [doc][5] for above concepts. - [ ] Async client - [ ] CLI connects to testnet for trying out features. -[1]: https://github.com/libra/libra/blob/master/json-rpc/json-rpc-spec.md "Libra JSON-RPC SPEC" +[1]: https://github.com/libra/libra/blob/master/json-rpc/json-rpc-spec.md "Diem JSON-RPC SPEC" [2]: https://github.com/libra/lip/blob/master/lips/lip-5.md "LIP-5" [3]: https://github.com/libra/libra/blob/master/language/stdlib/transaction_scripts/doc/peer_to_peer_with_metadata.md "P2P Transafer" [4]: https://github.com/libra/libra/tree/master/language/stdlib/transaction_scripts/doc "Move Stdlib scripts" -[5]: https://github.com/libra/libra/blob/master/client/libra-dev/README.md "Libra Client Dev Doc" +[5]: https://github.com/libra/libra/blob/master/client/diem-dev/README.md "Diem Client Dev Doc" [6]: https://github.com/libra/libra/blob/master/json-rpc/docs/service_testnet_faucet.md "Faucet service" [7]: https://github.com/libra/lip/blob/master/lips/lip-4.md "Transaction Metadata Specification" diff --git a/json-rpc/docs/client_implementation_guide.md b/json-rpc/docs/client_implementation_guide.md index d1f5a30fc8..827d44e008 100644 --- a/json-rpc/docs/client_implementation_guide.md +++ b/json-rpc/docs/client_implementation_guide.md @@ -2,22 +2,22 @@ ### Overview -To implement a client connecting to Libra JSON-RPC APIs, you need consider the followings: +To implement a client connecting to Diem JSON-RPC APIs, you need consider the followings: -* [JSON-RPC client](#json-rpc-client): talks to Libra JSON-RPC server. +* [JSON-RPC client](#json-rpc-client): talks to Diem JSON-RPC server. * [Testnet](#testnet): connect to testnet to do integration tests and confirm your client works as expected. -* [Query Blockchain](#query-blockchain): read data from Libra blockchain. -* [Submit Transaction](#submit-transaction): write data to Libra blockchain. +* [Query Blockchain](#query-blockchain): read data from Diem blockchain. +* [Submit Transaction](#submit-transaction): write data to Diem blockchain. * [Error handling](#error-handling): handle errors. ### JSON-RPC client -Any JSON-RPC 2.0 client should be able to work with Libra JSON-RPC APIs. -Libra JSON-RPC APIs extend to JSON-RPC 2.0 Spec for specific use case, check [Libra Extensions](./../json-rpc-spec.md#libra-extensions) for details, we will discuss more about them in [Error Handling](#error-handling) section. +Any JSON-RPC 2.0 client should be able to work with Diem JSON-RPC APIs. +Diem JSON-RPC APIs extend to JSON-RPC 2.0 Spec for specific use case, check [Diem Extensions](./../json-rpc-spec.md#diem-extensions) for details, we will discuss more about them in [Error Handling](#error-handling) section. ### Testnet -A simplest way to validate your client works is connecting it to Testnet(https://testnet.libra.org/v1). +A simplest way to validate your client works is connecting it to Testnet(https://testnet.diem.com/v1). For some query blockchain methods like [get_currencies](method_get_currencies.md) or [get_metadata](method_get_metadata.md), you don't need anything else other than a HTTP client to get back response from server. Try out [get_currencies example](method_get_currencies.md#example) on Testnet, and this can be the first query blockchain API you implement for your client. @@ -28,7 +28,7 @@ Please follow [Testnet Faucet Service](service_testnet_faucet.md) to implement m ### Query Blockchain -All the methods prefixed with `get_` listed at [here](./../json-rpc-spec.md#overview) are designed for querying Libra blockchain data. +All the methods prefixed with `get_` listed at [here](./../json-rpc-spec.md#overview) are designed for querying Diem blockchain data. You may start with implementing [get_currencies](method_get_currencies.md), which is the simplest API that does not require any arguments and always responds to the same result on Testnet. @@ -64,7 +64,7 @@ The following diagram shows the sequence of submit and wait for a peer to peer t #### Create local account A local account holds secrets of an onchain account: the private key. -Maintaining the local account or keeping the secure of private key is out of a Libra client's scope. In this guide, we use [Libra Swiss Knife][6] to generate local account keys: +Maintaining the local account or keeping the secure of private key is out of a Diem client's scope. In this guide, we use [Diem Swiss Knife][6] to generate local account keys: ``` shell # generate test keypair @@ -73,8 +73,8 @@ cargo run -p swiss-knife -- generate-test-ed25519-keypair { "error_message": "", "data": { - "libra_account_address": "a74fd7c46952c497e75afb0a7932586d", - "libra_auth_key": "459c77a38803bd53f3adee52703810e3a74fd7c46952c497e75afb0a7932586d", + "diem_account_address": "a74fd7c46952c497e75afb0a7932586d", + "diem_auth_key": "459c77a38803bd53f3adee52703810e3a74fd7c46952c497e75afb0a7932586d", "private_key": "cd9a2c90296a210249128ae3c908611637b2e00efd4986670e252abf3fabd1a9", "public_key": "447fc3be296803c2303951c7816624c7566730a5cc6860a4a1bd3c04731569f5" } @@ -83,7 +83,7 @@ cargo run -p swiss-knife -- generate-test-ed25519-keypair ``` > To run this by yourself, clone https://github.com/libra/libra.git, and run `./scripts/dev_setup.sh` to setup dev env. -> You can run the command in the above example at the root directory of libra codebase. +> You can run the command in the above example at the root directory of diem codebase. #### Create and sign transaction @@ -104,7 +104,7 @@ Here we give an example of how to create and sign transactions with option 1 in ```Java ChainId testNetChainID = new ChainId((byte) 2); // Testnet chain id is static value -String currencyCode = "Coin1"; +String currencyCode = "XUS"; String account1_address = "a74fd7c46952c497e75afb0a7932586d"; String account1_public_key = "447fc3be296803c2303951c7816624c7566730a5cc6860a4a1bd3c04731569f5"; String account1_private_key = "cd9a2c90296a210249128ae3c908611637b2e00efd4986670e252abf3fabd1a9"; @@ -152,8 +152,8 @@ The following code does signing transaction: ```Java -// sha3 hash "LIBRA::RawTransaction" bytes first, then concat with raw transaction bytes to create a message for signing. -byte[] hash = concat(sha3Hash("LIBRA::RawTransaction".getBytes()), rawTxnBytes); +// sha3 hash "DIEM::RawTransaction" bytes first, then concat with raw transaction bytes to create a message for signing. +byte[] hash = concat(sha3Hash("DIEM::RawTransaction".getBytes()), rawTxnBytes); // [bouncycastle](https://www.bouncycastle.org/)'s Ed25519Signer Ed25519Signer signer = new Ed25519Signer(); @@ -170,7 +170,7 @@ String signedTxnData = bytesToHex(toLCS(st)); ``` -For more details related to Libra crypto, please checkout [Crypto Spec](../../specifications/crypto/README.md). +For more details related to Diem crypto, please checkout [Crypto Spec](../../specifications/crypto/README.md). When you implement above logic, you may extract `createRawTransaction` and `createSignedTransaction` methods and use the following data to confirm their logic is correct: @@ -191,8 +191,8 @@ import com.novi.serde.Bytes; import com.novi.serde.Serializer; import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters; import org.bouncycastle.crypto.signers.Ed25519Signer; -import org.libra.stdlib.Helpers; -import org.libra.types.*; +import org.diem.stdlib.Helpers; +import org.diem.types.*; import java.io.IOException; import java.util.ArrayList; @@ -280,7 +280,7 @@ If transaction has not been executed yet, server responses null: ```Java public Transaction waitForTransaction(String address, @Unsigned long sequence, String transactionHash, - @Unsigned long expirationTimeSec, int timeout) throws LibraException { + @Unsigned long expirationTimeSec, int timeout) throws DiemException { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, timeout); @@ -291,12 +291,12 @@ public Transaction waitForTransaction(String address, @Unsigned long sequence, S if (accountTransaction != null) { if (!accountTransaction.getHash().equalsIgnoreCase(transactionHash)) { - throw new LibraException( + throw new DiemException( String.format("found transaction, but hash does not match, given %s, but got %s", transactionHash, accountTransaction.getHash())); } if (!txn.getVmStatus() != null && "executed".equalsIgnoreCase(accountTransaction.getVmStatus().getType())) { - throw new LibraTransactionExecutionFailedException( + throw new DiemTransactionExecutionFailedException( String.format("transaction execution failed: %s", accountTransaction.getVmStatus())); } @@ -309,7 +309,7 @@ public Transaction waitForTransaction(String address, @Unsigned long sequence, S } } - throw new LibraWaitForTransactionTimeoutException( + throw new DiemWaitForTransactionTimeoutException( String.format("transaction not found within timeout period: %d (seconds)", timeout)); } ``` @@ -324,7 +324,7 @@ We also should have a wait timeout for the case if the transaction is dropped so There are four general types errors you need consider: - Transport layer error, e.g. HTTP call failure. -- JSON-RPC protocol error: e.g. server response non json data, or can't be parsed into [Libra JSON-RPC SPEC](./../json-rpc-spec.md) defined data structure, or missing result & error field. +- JSON-RPC protocol error: e.g. server response non json data, or can't be parsed into [Diem JSON-RPC SPEC](./../json-rpc-spec.md) defined data structure, or missing result & error field. - JSON-RPC error: error returned from server. - Invalid arguments error: the caller of your client API may provide invalid arguments like invalid hex-encoded account address. @@ -336,8 +336,8 @@ Distinguish above four types errors can help application developer to decide wha - Invalid request: it indicates client side error, either it's application code bug or the client (your code) bug. If you did well with handling invalid arguments, then it means your client code has bug. - Server error: this can be a server side bug, or important information related to submitted transaction validation or execution error. -Other than general error handling, another type of error that client / application should pay attention to is server side stale response. This type problem happens when a Full Node is out of sync with the Libra network, or you connected to a sync delayed Full Node in a cluster of Full Nodes. To prevent these problems, we need: -- Track server side data freshness, Libra JSON-RPC server will always respond `libra_ledger_version` and `libra_ledger_timestampusec` (see [Libra Extensions](./../json-rpc-spec.md#libra-extensions)) for clients to validate and track server side data freshness. +Other than general error handling, another type of error that client / application should pay attention to is server side stale response. This type problem happens when a Full Node is out of sync with the Diem network, or you connected to a sync delayed Full Node in a cluster of Full Nodes. To prevent these problems, we need: +- Track server side data freshness, Diem JSON-RPC server will always respond `diem_ledger_version` and `diem_ledger_timestampusec` (see [Diem Extensions](./../json-rpc-spec.md#diem-extensions)) for clients to validate and track server side data freshness. - Retry query / get methods calls when response is from a stale server. - Do not retry for submit transaction call, because the submitted transaction can be synced correctly even you submitted it to a stale server. You may receive a JSON-RPC error if submitted same transaction. @@ -346,15 +346,15 @@ Other than general error handling, another type of error that client / applicati Once the above basic function works, you have a minimum client ready for usage. To make a production quality client, please checkout our [Client CHECKLIST](client_checklist.md). -[1]: https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.SignedTransaction.html "SignedTransaction" +[1]: https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.SignedTransaction.html "SignedTransaction" [2]: ../../language/transaction-builder/generator/README.md "Transaction Builder Generator" -[3]: ./../../client/swiss-knife/README.md "Libra Swiss Knife" -[4]: https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.RawTransaction.html "RawTransaction" -[5]: https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/index.html "LCS" +[3]: ./../../client/swiss-knife/README.md "Diem Swiss Knife" +[4]: https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.RawTransaction.html "RawTransaction" +[5]: https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/index.html "LCS" [6]: ./../../client/swiss-knife#generate-a-ed25519-keypair "Swiss Knife Gen Keys" [7]: ./../../language/stdlib/transaction_scripts/doc/peer_to_peer_with_metadata.md#function-peer_to_peer_with_metadata-1 "P2P script doc" [8]: ./../../client/swiss-knife/README.md#examples-for-generate-raw-txn-and-generate-signed-txn-operations "Swiss Knife gen txn" [9]: ./../../client/swiss-knife/README.md#building-the-binary-in-a-release-optimized-mode "Swiss Knife binary" [10]: ../../language/transaction-builder/generator/README.md#supported-languages "Transaction Builder Generator supports" -[11]: ./../../client/libra-dev/include/data.h "C binding head file" +[11]: ./../../client/diem-dev/include/data.h "C binding head file" [12]: ../../language/transaction-builder/generator/README.md#java "Generate Java Txn Builder" diff --git a/json-rpc/docs/method_get_account.md b/json-rpc/docs/method_get_account.md index c3a3342297..36a2ca057b 100644 --- a/json-rpc/docs/method_get_account.md +++ b/json-rpc/docs/method_get_account.md @@ -23,13 +23,13 @@ Null - If account does not exist ``` // Request: fetches account for account address "1668f6be25668c1a17cd8caf6b8d2f25" -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account","params":["1668f6be25668c1a17cd8caf6b8d2f25"],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account","params":["1668f6be25668c1a17cd8caf6b8d2f25"],"id":1}' https://testnet.diem.com/v1 // Response { - "libra_chain_id" : 2, + "diem_chain_id" : 2, "jsonrpc" : "2.0", - "libra_ledger_timestampusec" : 1597084681499780, + "diem_ledger_timestampusec" : 1597084681499780, "result" : { "delegated_key_rotation_capability" : false, "received_events_key" : "00000000000000001668f6be25668c1a17cd8caf6b8d2f25", @@ -37,7 +37,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "balances" : [ { "amount" : 2194000000, - "currency" : "LBR" + "currency" : "XDX" } ], "sequence_number" : 11, @@ -47,23 +47,23 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "role" : { "type": parent_vasp", "num_children" : 0, - "base_url" : "https://libra.org", + "base_url" : "https://diem.com", "human_name" : "testnet", "compliance_key" : "b7a3c12dc0c8c748ab07525b701122b88bd78f600c76342d27f25e5f92444cde", "expiration_time" : 18446744073709551615 } }, "id" : 1, - "libra_ledger_version" : 1303433 + "diem_ledger_version" : 1303433 } // Sample Response for non-existent account { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596694171246702, - "libra_ledger_version": 3307614, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596694171246702, + "diem_ledger_version": 3307614, "result": null } ``` diff --git a/json-rpc/docs/method_get_account_transaction.md b/json-rpc/docs/method_get_account_transaction.md index 0bc11a7c35..200f4dda91 100644 --- a/json-rpc/docs/method_get_account_transaction.md +++ b/json-rpc/docs/method_get_account_transaction.md @@ -25,22 +25,22 @@ Null - If transaction does not exist ``` // Request: fetches transaction for account address "1668f6be25668c1a17cd8caf6b8d2f25" and sequence number 0, with including events associated with this transaction -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account_transaction","params":["1668f6be25668c1a17cd8caf6b8d2f25", 0, true],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account_transaction","params":["1668f6be25668c1a17cd8caf6b8d2f25", 0, true],"id":1}' https://testnet.diem.com/v1 // Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596694618402871, - "libra_ledger_version": 3309406, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596694618402871, + "diem_ledger_version": 3309406, "result": { "events": [ { "data": { "amount": { "amount": 1000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7", @@ -55,7 +55,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 1000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7", @@ -72,13 +72,13 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "transaction": { "chain_id": 2, "expiration_timestamp_secs": 100000000000, - "gas_currency": "LBR", + "gas_currency": "XDX", "gas_unit_price": 0, "max_gas_amount": 1000000, "public_key": "f549a91fb9989883fb4d38b463308f3ea82074fb39ea74dae61f62e11bf55d25", "script": { "amount": 1000000, - "currency": "LBR", + "currency": "XDX", "metadata": "", "metadata_signature": "", "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7", diff --git a/json-rpc/docs/method_get_currencies.md b/json-rpc/docs/method_get_currencies.md index aa4cc0338f..a12bcf2f39 100644 --- a/json-rpc/docs/method_get_currencies.md +++ b/json-rpc/docs/method_get_currencies.md @@ -2,7 +2,7 @@ **Description** -Get information about various currencies supported by the Libra blockchain +Get information about various currencies supported by the Diem blockchain ### Parameters @@ -19,37 +19,37 @@ Returns array of [CurrencyInfo](type_currency_info.md) objects. ``` // Request: fetches currencies supported by the system -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_currencies","params":[],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_currencies","params":[],"id":1}' https://testnet.diem.com/v1 // Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596680410015647, - "libra_ledger_version": 3252698, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596680410015647, + "diem_ledger_version": 3252698, "result": [ { "burn_events_key": "02000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "04000000000000000000000000000000000000000a550c18", - "code": "Coin1", + "code": "XUS", "exchange_rate_update_events_key": "05000000000000000000000000000000000000000a550c18", "fractional_part": 100, "mint_events_key": "01000000000000000000000000000000000000000a550c18", "preburn_events_key": "03000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 0.5 + "to_xdx_exchange_rate": 0.5 }, { "burn_events_key": "0c000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "0e000000000000000000000000000000000000000a550c18", - "code": "LBR", + "code": "XDX", "exchange_rate_update_events_key": "0f000000000000000000000000000000000000000a550c18", "fractional_part": 1000, "mint_events_key": "0b000000000000000000000000000000000000000a550c18", "preburn_events_key": "0d000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1 + "to_xdx_exchange_rate": 1 } ] } diff --git a/json-rpc/docs/method_get_events.md b/json-rpc/docs/method_get_events.md index 74f210a772..4fb2949305 100644 --- a/json-rpc/docs/method_get_events.md +++ b/json-rpc/docs/method_get_events.md @@ -16,7 +16,7 @@ Fetch the events for a given event stream. Note: 1. For `sentpayment` and `receivedpayment` events, call [get_account](method_get_account.md) to get the event key of the event streams for a given user account. -2. For currency related events, call [get_currencies](method_get_currencies.md) to get the event keys (for example: to LBR exchange rate change event key). +2. For currency related events, call [get_currencies](method_get_currencies.md) to get the event keys (for example: to XDX exchange rate change event key). ### Returns @@ -29,21 +29,21 @@ Returns array of [Event](type_event.md) objects ``` //Request: get events associated with receivedpayment event stream key "00000000000000001668f6be25668c1a17cd8caf6b8d2f25" for account "1668f6be25668c1a17cd8caf6b8d2f25" -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_events","params": ["00000000000000001668f6be25668c1a17cd8caf6b8d2f25", 0, 10], "id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_events","params": ["00000000000000001668f6be25668c1a17cd8caf6b8d2f25", 0, 10], "id":1}' https://testnet.diem.com/v1 //Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596694876315159, - "libra_ledger_version": 3310435, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596694876315159, + "diem_ledger_version": 3310435, "result": [ { "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -58,7 +58,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -73,7 +73,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -88,7 +88,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -103,7 +103,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -118,7 +118,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -133,7 +133,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -148,7 +148,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -163,7 +163,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", @@ -178,7 +178,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "data": { "amount": { "amount": 100000000, - "currency": "LBR" + "currency": "XDX" }, "metadata": "", "receiver": "1668f6be25668c1a17cd8caf6b8d2f25", diff --git a/json-rpc/docs/method_get_metadata.md b/json-rpc/docs/method_get_metadata.md index 36d595a1ad..6b2753d17c 100644 --- a/json-rpc/docs/method_get_metadata.md +++ b/json-rpc/docs/method_get_metadata.md @@ -15,21 +15,21 @@ Get the blockchain / ledger metadata. [Metadata](type_metadata.md) -Note: fields `script_hash_allow_list`, `module_publishing_allowed` and `libra_version` are only returned when no version argument provided. +Note: fields `script_hash_allow_list`, `module_publishing_allowed` and `diem_version` are only returned when no version argument provided. ### Example ``` // Request: fetches current block metadata -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_metadata","params":[],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_metadata","params":[],"id":1}' https://testnet.diem.com/v1 // Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596680521771648, - "libra_ledger_version": 3253133, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596680521771648, + "diem_ledger_version": 3253133, "result": { "timestamp": 1596680521771648, "version": 3253133, diff --git a/json-rpc/docs/method_get_transactions.md b/json-rpc/docs/method_get_transactions.md index 60da46c50d..55acf27d23 100644 --- a/json-rpc/docs/method_get_transactions.md +++ b/json-rpc/docs/method_get_transactions.md @@ -25,15 +25,15 @@ if include_events is false, the [events](type_event.md) field in the Transaction ``` // Request: fetches 10 transactions since version 100000 -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_transactions","params":[100000, 10, false],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_transactions","params":[100000, 10, false],"id":1}' https://testnet.diem.com/v1 // Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596694433936687, - "libra_ledger_version": 3308663, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596694433936687, + "diem_ledger_version": 3308663, "result": [ { "events": [], @@ -64,13 +64,13 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho "transaction": { "chain_id": 2, "expiration_timestamp_secs": 1596085170, - "gas_currency": "LBR", + "gas_currency": "XDX", "gas_unit_price": 0, "max_gas_amount": 1000000, "public_key": "86f38df4199842f3bfe0dcd003aaf739f9cddd2845b2c5a3318b1878d56b0eb8", "script": { "amount": 100000, - "currency": "LBR", + "currency": "XDX", "metadata": "", "metadata_signature": "", "receiver": "2ce4a93c05ba7ac8e6e94736731b3ddd", diff --git a/json-rpc/docs/method_submit.md b/json-rpc/docs/method_submit.md index e60d9ad1b5..9c93667660 100644 --- a/json-rpc/docs/method_submit.md +++ b/json-rpc/docs/method_submit.md @@ -10,13 +10,13 @@ Submit a signed transaction to a full node. | Name | Type | Description | |-------|----------|------------------------------------------------------------------------------------------------------| -| data | string | Signed transaction data - hex-encoded bytes of [LCS][1] serialized Libra [SignedTransaction][3] type.| +| data | string | Signed transaction data - hex-encoded bytes of [LCS][1] serialized Diem [SignedTransaction][3] type.| Steps to create "data" parameters: 1. Create [RawTransaction][2] 2. Create signing message: - 1. [SHA3](https://en.wikipedia.org/wiki/SHA-3) hash bytes of string "LIBRA::RawTransaction". + 1. [SHA3](https://en.wikipedia.org/wiki/SHA-3) hash bytes of string "DIEM::RawTransaction". 2. [RawTransaction][2] [LCS][1] serialized bytes. 3. Concat above 2 bytes. 3. Sign the message with [Ed25519](https://ed25519.cr.yp.to/) and your account private key. @@ -35,8 +35,8 @@ Note: * After transaction is submitted, but not executed yet, calling [get_account_transaction](method_get_account_transaction.md) will return null. * If [get_account_transaction](method_get_account_transaction.md) returns a Transaction, client should validate [Transaction#signature](type_transaction.md#user) == the SignedTransaction signature as it is possible there is another Transaction submitted with same account sequence number. * After validated the Transaction is the submitted SignedTransaction, client should confirm the transaction is executed successfully by checking [Transaction#vm_status] == "executed"; any other vm_status means execution failed. The vm_status may contain some information for client to understand what's going wrong. -* There is no partial execution in Libra, hence the transaction either has full effect or has no effect at all. -* It is possible a Transaction may not executed after submitted successfully, hence you can't find it by [get_account_transaction](method_get_account_transaction.md) method. To avoid endless waiting, client should setup a reasonable Transaction expiration timestamp (RawTransaction#expiration_timestamp_secs), client may keep trying [get_account_transaction](method_get_account_transaction.md) and check libra_ledger_timestampusec in the response with the Transaction expiration timestamp. Transaction won't be executed if it's expiration timestamp is passed, hence client can safely re-construct the Transaction with new expiration timestamp and submit again. +* There is no partial execution in Diem, hence the transaction either has full effect or has no effect at all. +* It is possible a Transaction may not executed after submitted successfully, hence you can't find it by [get_account_transaction](method_get_account_transaction.md) method. To avoid endless waiting, client should setup a reasonable Transaction expiration timestamp (RawTransaction#expiration_timestamp_secs), client may keep trying [get_account_transaction](method_get_account_transaction.md) and check diem_ledger_timestampusec in the response with the Transaction expiration timestamp. Transaction won't be executed if it's expiration timestamp is passed, hence client can safely re-construct the Transaction with new expiration timestamp and submit again. ### Errors @@ -67,19 +67,19 @@ For VM and Mempool errors may include a "data" object contains more detail infor ``` // Request: submits a transaction whose hex-encoded LCS byte representation is in params -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"submit","params":["1668F6BE25668C1A17CD8CAF6B8D2F25370000000000000001E101A11CEB0B010000000701000202020403061004160205181D0735610896011000000001010000020001000003020301010004010300010501060C0108000506080005030A020A020005060C05030A020A020109000C4C696272614163636F756E741257697468647261774361706162696C6974791B657874726163745F77697468647261775F6361706162696C697479087061795F66726F6D1B726573746F72655F77697468647261775F6361706162696C69747900000000000000000000000000000001010104010C0B0011000C050E050A010A020B030B0438000B05110202010700000000000000000000000000000001034C4252034C4252000403262E691EC8C7E3E23470D8C3EE26E1A70140420F00000000000400040040420F00000000000000000000000000034C425200E8764817000000020020F549A91FB9989883FB4D38B463308F3EA82074FB39EA74DAE61F62E11BF55D25405CD26F114183C44874DD3F861E0AD24B8E5D8B8C1CAA1B79C7E641C664AE3FD645E4310237A0DC046046DEFBE27C4F15CAAB55A76BBAC15E92B444431232DE0C"],"id": 1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"submit","params":["1668F6BE25668C1A17CD8CAF6B8D2F25370000000000000001E101A11CEB0B010000000701000202020403061004160205181D0735610896011000000001010000020001000003020301010004010300010501060C0108000506080005030A020A020005060C05030A020A020109000C4C696272614163636F756E741257697468647261774361706162696C6974791B657874726163745F77697468647261775F6361706162696C697479087061795F66726F6D1B726573746F72655F77697468647261775F6361706162696C69747900000000000000000000000000000001010104010C0B0011000C050E050A010A020B030B0438000B05110202010700000000000000000000000000000001034C4252034C4252000403262E691EC8C7E3E23470D8C3EE26E1A70140420F00000000000400040040420F00000000000000000000000000034C425200E8764817000000020020F549A91FB9989883FB4D38B463308F3EA82074FB39EA74DAE61F62E11BF55D25405CD26F114183C44874DD3F861E0AD24B8E5D8B8C1CAA1B79C7E641C664AE3FD645E4310237A0DC046046DEFBE27C4F15CAAB55A76BBAC15E92B444431232DE0C"],"id": 1}' https://testnet.diem.com/v1 // Response, for successful transaction submission { "id":1, "jsonrpc":"2.0", - "libra_chain_id":2, - "libra_ledger_timestampusec":1596736351198722, - "libra_ledger_version":3475232, + "diem_chain_id":2, + "diem_ledger_timestampusec":1596736351198722, + "diem_ledger_version":3475232, "result":null } ``` -[1]: https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/index.html "LCS" -[2]: https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.RawTransaction.html "RawTransaction" -[3]: https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.SignedTransaction.html "SignedTransaction" +[1]: https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/index.html "LCS" +[2]: https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.RawTransaction.html "RawTransaction" +[3]: https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.SignedTransaction.html "SignedTransaction" diff --git a/json-rpc/docs/service_testnet_faucet.md b/json-rpc/docs/service_testnet_faucet.md index 7ef609c538..bccf68bd3f 100644 --- a/json-rpc/docs/service_testnet_faucet.md +++ b/json-rpc/docs/service_testnet_faucet.md @@ -5,20 +5,20 @@ As a side effect, it is also the only way you can create an onchain account on T > If you wonder how simple it is, check [server code](./../../docker/mint/server.py). -It's interface is very simple, fire a HTTP POST request to `http://faucet.testnet.libra.org/` with the following parameters: +It's interface is very simple, fire a HTTP POST request to `http://faucet.testnet.diem.com/` with the following parameters: | param name | type | description | |---------------|--------|---------------------------------| | amount | int | amount of coins to mint | | auth_key | string | your account authentication key | -| currency_code | string | the currency code, e.g. LBR | +| currency_code | string | the currency code, e.g. XDX | Server will start a sub-process to submit a mint coin transaction to Testnet, and return the next new account sequence for account `000000000000000000000000000000DD`. For example, you can have something like the followings: ```Java -private static String SERVER_URL = "http://faucet.testnet.libra.org/"; +private static String SERVER_URL = "http://faucet.testnet.diem.com/"; public static long mintCoinsAsync(long amount, String authKey, String currencyCode) { HttpClient httpClient = HttpClient.newHttpClient(); diff --git a/json-rpc/docs/type_account.md b/json-rpc/docs/type_account.md index 1ece15c52b..7de3a472bf 100644 --- a/json-rpc/docs/type_account.md +++ b/json-rpc/docs/type_account.md @@ -2,7 +2,7 @@ **Description** -A Libra account. +A Diem account. ### Attributes diff --git a/json-rpc/docs/type_currency_info.md b/json-rpc/docs/type_currency_info.md index fddb20f529..84435f785e 100644 --- a/json-rpc/docs/type_currency_info.md +++ b/json-rpc/docs/type_currency_info.md @@ -5,7 +5,7 @@ | code | string | Currency Code | | fractional_part | unsigned int64 | Max fractional part of single unit of currency allowed in a transaction | | scaling_factor | unsigned int64 | Factor by which the amount is scaled before it is stored in the blockchain | -| to_lbr_exchange_rate | float32 | Exchange rate of the currency to LBR currency | +| to_xdx_exchange_rate | float32 | Exchange rate of the currency to XDX currency | | mint_events_key | string | Unique key for the mint events stream of this currency | | burn_events_key | string | Unique key for the burn events stream of this currency | | preburn_events_key | string | Unique key for the preburn events stream of this currency | @@ -20,31 +20,31 @@ { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596680410015647, - "libra_ledger_version": 3252698, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596680410015647, + "diem_ledger_version": 3252698, "result": [ { "burn_events_key": "02000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "04000000000000000000000000000000000000000a550c18", - "code": "Coin1", + "code": "XUS", "exchange_rate_update_events_key": "05000000000000000000000000000000000000000a550c18", "fractional_part": 100, "mint_events_key": "01000000000000000000000000000000000000000a550c18", "preburn_events_key": "03000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 0.5 + "to_xdx_exchange_rate": 0.5 }, { "burn_events_key": "0c000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "0e000000000000000000000000000000000000000a550c18", - "code": "LBR", + "code": "XDX", "exchange_rate_update_events_key": "0f000000000000000000000000000000000000000a550c18", "fractional_part": 1000, "mint_events_key": "0b000000000000000000000000000000000000000a550c18", "preburn_events_key": "0d000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1 + "to_xdx_exchange_rate": 1 } ] } diff --git a/json-rpc/docs/type_event.md b/json-rpc/docs/type_event.md index e1179b8047..d7bed901e2 100644 --- a/json-rpc/docs/type_event.md +++ b/json-rpc/docs/type_event.md @@ -54,13 +54,13 @@ Event data is serialized into one JSON object with a "type" field to indicate it | type | string | constant string "mint" | | amount | [Amount](type_amount.md) | amount mint | -#### to_lbr_exchange_rate_update +#### to_xdx_exchange_rate_update | Name | Type | Description | |--------------------------|----------|----------------------------------------------| -| type | string | constant string "to_lbr_exchange_rate_update"| +| type | string | constant string "to_xdx_exchange_rate_update"| | currency_code | string | currency code of the exchange rate updated | -| new_to_lbr_exchange_rate | float32 | currency code of the exchange rate updated | +| new_to_xdx_exchange_rate | float32 | currency code of the exchange rate updated | #### receivedpayment @@ -152,7 +152,7 @@ Event emitted when a new account is created |-----------------|--------|--------------------------------| | type | string | Constant string "createaccount"| | created_address | string | Address of the created account | -| role_id | u64 | Role id of the created account, see [LIP-2](https://lip.libra.org/lip-2/#move-implementation) for more details | +| role_id | u64 | Role id of the created account, see [LIP-2](https://dip.diem.com/dip-2/#move-implementation) for more details | #### unknown @@ -162,4 +162,4 @@ Represents events currently unsupported by JSON-RPC API. |---------|--------|-----------------------------| | type | string | Constant string "unknown" | -[1]: https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/index.html "LCS" +[1]: https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/index.html "LCS" diff --git a/json-rpc/docs/type_metadata.md b/json-rpc/docs/type_metadata.md index e3b0423192..4635447165 100644 --- a/json-rpc/docs/type_metadata.md +++ b/json-rpc/docs/type_metadata.md @@ -6,16 +6,16 @@ |----------------------------|----------------|------------------------------------------------| | version | unsigned int64 | The latest block (ledger) version | | timestamp | unsigned int64 | The latest block (ledger) timestamp, unit is microsecond | -| chain_id | unsigned int8 | Chain ID of the Libra network | +| chain_id | unsigned int8 | Chain ID of the Diem network | | script_hash_allow_list | List | List of allowed scripts hex-encoded hash bytes, server may not return this field if the allow list not found in on chain configuration. | | module_publishing_allowed | boolean | True for allowing publishing customized script, server may not return this field if the flag not found in on chain configuration. | -| libra_version | unsigned int64 | Libra chain major version number | +| diem_version | unsigned int64 | Diem chain major version number | | accumulator_root_hash | string | accumulator root hash of the block (ledger) version | -| dual_attestation_limit | unsigned int64 | The dual attestation limit on-chain. Defined in terms of micro-LBR. | +| dual_attestation_limit | unsigned int64 | The dual attestation limit on-chain. Defined in terms of micro-XDX. | Note: -1. see [LibraTransactionPublishingOption](../../language/stdlib/modules/doc/LibraTransactionPublishingOption.md) for more details of `script_hash_allow_list` and `module_publishing_allowed`. -2. Fields `script_hash_allow_list`, `module_publishing_allowed` and `libra_version` are only returned when requesting latest version by [get_metadata](method_get_metadata.md) method call. +1. see [DiemTransactionPublishingOption](../../language/stdlib/modules/doc/DiemTransactionPublishingOption.md) for more details of `script_hash_allow_list` and `module_publishing_allowed`. +2. Fields `script_hash_allow_list`, `module_publishing_allowed` and `diem_version` are only returned when requesting latest version by [get_metadata](method_get_metadata.md) method call. ### Example @@ -23,15 +23,15 @@ Note: ``` // Request: fetches current block metadata -curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_metadata","params":[],"id":1}' https://testnet.libra.org/v1 +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_metadata","params":[],"id":1}' https://testnet.diem.com/v1 // Response { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596680521771648, - "libra_ledger_version": 3253133, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596680521771648, + "diem_ledger_version": 3253133, "result": { "timestamp": 1596680521771648, "version": 3253133, @@ -40,7 +40,7 @@ curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","metho ], "module_publishing_allowed": false, - "libra_version": 1, + "diem_version": 1, "accumulator_root_hash": "", "dual_attestation_limit": 1000000000 } diff --git a/json-rpc/docs/type_transaction.md b/json-rpc/docs/type_transaction.md index 53e7533d44..a1fc8c049d 100644 --- a/json-rpc/docs/type_transaction.md +++ b/json-rpc/docs/type_transaction.md @@ -20,7 +20,7 @@ A transaction on the blockchain. Note: * For the gas_used, internally within the VM we scale the gas units down by 1000 in order to allow granularity of costing for instruction, but without having to use floating point numbers, but we do round-up the gas used to the nearest "1" when we convert back out. -* Formula to create hash for a signed transaction before it is executed: hex-encode(sha3-256([]byte("LIBRA::Transaction")) + []byte(0) + signed transaction bytes) ([implementation example](https://github.com/libra/libra-client-sdk-go/blob/master/libratypes/hash.go#L27)) +* Formula to create hash for a signed transaction before it is executed: hex-encode(sha3-256([]byte("DIEM::Transaction")) + []byte(0) + signed transaction bytes) ([implementation example](https://github.com/libra/client-sdk-go/blob/master/diemtypes/hash.go#L27)) ### Example @@ -50,7 +50,7 @@ Transaction data is serialized into one JSON object with a "type" field to indic #### blockmetadata -A Libra network transaction that contains the metadata for the block. This transaction is always at the beginning of a block. +A Diem network transaction that contains the metadata for the block. This transaction is always at the beginning of a block. | Name | Type | Description | |---------------------|----------------|----------------------------------------------------------------| @@ -59,7 +59,7 @@ A Libra network transaction that contains the metadata for the block. This trans #### writeset -A Libra network transaction that modifies storage data directly. Currently, no details are exposed in the API. +A Diem network transaction that modifies storage data directly. Currently, no details are exposed in the API. | Name | Type | Description | |---------------------|----------------|----------------------------------------------------------------| @@ -77,7 +77,7 @@ User submitted transaction. | signature | string | Hex-encoded signature of this transaction | | public_key | string | Hex-encoded public key of the transaction sender | | sequence_number | unsigned int64 | Sequence number of this transaction corresponding to sender's account | -| chain_id | unsigned int8 | Chain ID of the Libra network this transaction is intended for | +| chain_id | unsigned int8 | Chain ID of the Diem network this transaction is intended for | | max_gas_amount | unsigned int64 | Maximum amount of gas that can be spent for this transaction | | gas_unit_price | unsigned int64 | Maximum gas price to be paid per unit of gas | | gas_currency | string | Gas price currency code | @@ -88,12 +88,12 @@ User submitted transaction. Note: script_hash is not hash of the script_bytes, it's hash of the script binary code bytes. More specifically, you can get same hash string by the following steps: - 1. Decode script_bytes into script call [struct](https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.Script.html). + 1. Decode script_bytes into script call [struct](https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.Script.html). 2. Sha3 256 hash of the code binary bytes in the script call struct. 3. Hex-encode the hash result bytes. -* You can decode transaction script call ([struct](https://developers.libra.org/docs/rustdocs/libra_types/transaction/struct.Script.html)) from script_bytes by LCS deserializer. -* If script_bytes is empty, it means transaction is not a [TransactionPayload#Script](https://developers.libra.org/docs/rustdocs/libra_types/transaction/enum.TransactionPayload.html#variant.Script). +* You can decode transaction script call ([struct](https://developers.diem.com/docs/rustdocs/diem_types/transaction/struct.Script.html)) from script_bytes by LCS deserializer. +* If script_bytes is empty, it means transaction is not a [TransactionPayload#Script](https://developers.diem.com/docs/rustdocs/diem_types/transaction/enum.TransactionPayload.html#variant.Script). You may decode Transaction#bytes by LCS deserializer for more details. @@ -131,7 +131,7 @@ The transaction script and arguments of the script call. Transaction script is unknown. * When script code can't be recognized, type will be set to `unknown`, code, arguments and type_arguments will still be provided. -* When transaction payload is not a script (see [TransactionPayload](https://developers.libra.org/docs/rustdocs/libra_types/transaction/enum.TransactionPayload.html)), +* When transaction payload is not a script (see [TransactionPayload](https://developers.diem.com/docs/rustdocs/diem_types/transaction/enum.TransactionPayload.html)), type will be set to `unknown`, code, arguments and type_arguments will not be provided. | Name | Type | Description | @@ -152,7 +152,7 @@ This is the only type we decoded script arguments and type_arguments as named fi | metadata | string | Metadata of the transaction, LCS serialized hex-encoded string. | | metadata_signature | string | Hex-encoded metadata signature, use this to validate metadata | -Note: for metadata and metadata_signature, see [LIP-4](https://lip.libra.org/lip-4/) for more details. +Note: for metadata and metadata_signature, see [LIP-4](https://dip.diem.com/dip-4/) for more details. ### Type VMStatus @@ -245,7 +245,7 @@ error reason for the error e.g., `EPAYEE_CANT_ACCEPT_CURRENCY_TYPE`. Both the ca "category":"INVALID_ARGUMENT", "category_description":" An argument provided to an operation is invalid. Example: a signing key has the wrong format.", "reason":"EPAYEE_CANT_ACCEPT_CURRENCY_TYPE", - "reason_description":" Attempted to send funds in a currency that the receiving account does not hold.\n e.g., `Libra to an account that exists, but does not have a `Balance` resource" + "reason_description":" Attempted to send funds in a currency that the receiving account does not hold.\n e.g., `Diem to an account that exists, but does not have a `Balance` resource" } ``` diff --git a/json-rpc/json-rpc-spec.md b/json-rpc/json-rpc-spec.md index 6711436f8e..870f80bd29 100644 --- a/json-rpc/json-rpc-spec.md +++ b/json-rpc/json-rpc-spec.md @@ -2,7 +2,7 @@ ## Overview -The Libra client API is based on the JSON-RPC protocol. This specification defines the client API endpoints and types, and provides usage examples. +The Diem client API is based on the JSON-RPC protocol. This specification defines the client API endpoints and types, and provides usage examples. List of released stable methods (unless specifically mentioned, all parameters are required for the method.): @@ -20,24 +20,24 @@ List of released stable methods (unless specifically mentioned, all parameters a ## Official Client SDKs -* [Go] (https://github.com/libra/libra-client-sdk-go) -* [Java] (https://github.com/libra/libra-client-sdk-java) -* [Python] (https://github.com/libra/libra-client-sdk-python) +* [Go] (https://github.com/libra/client-sdk-go) +* [Java] (https://github.com/libra/client-sdk-java) +* [Python] (https://github.com/libra/client-sdk-python) ## JSON-RPC specification JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. Refer to the [JSON-RPC Specification](https://www.jsonrpc.org/specification) for further details. -### Libra extensions +### Diem extensions The JSON-RPC response object is extended with the following fields: | Field | Type | Meaning | |----------------------------|----------------|----------------------------------------------| -| libra_chain_id | unsigned int8 | network chain id, e.g. testnet chain id is 2 | -| libra_ledger_version | unsigned int64 | server-side latest ledger version number | -| libra_ledger_timestampusec | unsigned int64 | server-side latest ledger timestamp microseconds | +| diem_chain_id | unsigned int8 | network chain id, e.g. testnet chain id is 2 | +| diem_ledger_version | unsigned int64 | server-side latest ledger version number | +| diem_ledger_timestampusec | unsigned int64 | server-side latest ledger timestamp microseconds | You can use this information to verify liveness / status of nodes in the network: if the timestamp or version is old (from the past), it means that the request hit a full node that is not up-to-date. @@ -49,9 +49,9 @@ You can use this information to verify liveness / status of nodes in the network { "id": 1, "jsonrpc": "2.0", - "libra_chain_id": 2, - "libra_ledger_timestampusec": 1596680521771648, - "libra_ledger_version": 3253133, + "diem_chain_id": 2, + "diem_ledger_timestampusec": 1596680521771648, + "diem_ledger_version": 3253133, "result": { "timestamp": 1596680521771648, "version": 3253133 @@ -77,12 +77,12 @@ For any invalid request or parameters request, a standard error code and message | -32602 | invalid params | | -32604 | invalid format | -Unless specifically mentioned below, Libra JSON-RPC will return the default error code - 32000 for generic server-side errors. More information may be returned in the ‘message’ and the ‘data’ fields, but this is not guaranteed. +Unless specifically mentioned below, Diem JSON-RPC will return the default error code - 32000 for generic server-side errors. More information may be returned in the ‘message’ and the ‘data’ fields, but this is not guaranteed. ## Versioning We use URI versioning to version our API, current version is v1. -For example, to hit testnet, the server url is: https://testnet.libra.org/v1. +For example, to hit testnet, the server url is: https://testnet.diem.com/v1. You may check [API-CHANGELOG.md](API-CHANGELOG.md) and learn more about our API changes. ## CORS support diff --git a/json-rpc/src/counters.rs b/json-rpc/src/counters.rs index f6f9633bd7..0f888979ea 100644 --- a/json-rpc/src/counters.rs +++ b/json-rpc/src/counters.rs @@ -1,15 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ - register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec, -}; +use diem_metrics::{register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec}; use once_cell::sync::Lazy; /// Cumulative number of rpc requests that the JSON RPC service receives pub static RPC_REQUESTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_client_service_rpc_requests_count", + "diem_client_service_rpc_requests_count", "Cumulative number of rpc requests that JSON RPC client service receives", &["type"] // batch / single ) @@ -18,8 +16,8 @@ pub static RPC_REQUESTS: Lazy = Lazy::new(|| { pub static RPC_REQUEST_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_client_service_rpc_request_latency_seconds", - "Libra client service rpc request latency histogram", + "diem_client_service_rpc_request_latency_seconds", + "Diem client service rpc request latency histogram", &["type"] // batch / single ) .unwrap() @@ -28,7 +26,7 @@ pub static RPC_REQUEST_LATENCY: Lazy = Lazy::new(|| { /// Cumulative number of valid requests that the JSON RPC client service receives pub static REQUESTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_client_service_requests_count", + "diem_client_service_requests_count", "Cumulative number of requests that JSON RPC client service receives", &[ "type", // batch / single @@ -42,7 +40,7 @@ pub static REQUESTS: Lazy = Lazy::new(|| { /// Cumulative number of invalid requests that the JSON RPC client service receives pub static INVALID_REQUESTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_client_service_invalid_requests_count", + "diem_client_service_invalid_requests_count", "Cumulative number of invalid requests that JSON RPC client service receives", &[ "type", // batch / single @@ -56,7 +54,7 @@ pub static INVALID_REQUESTS: Lazy = Lazy::new(|| { /// Cumulative number of server internal errors. pub static INTERNAL_ERRORS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_client_service_internal_error_count", + "diem_client_service_internal_error_count", "Cumulative number of internal error", &[ "type", // batch / single @@ -69,8 +67,8 @@ pub static INTERNAL_ERRORS: Lazy = Lazy::new(|| { pub static METHOD_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_client_service_method_latency_seconds", - "Libra client service method latency histogram", + "diem_client_service_method_latency_seconds", + "Diem client service method latency histogram", &[ "type", // batch / single "method" // JSON-RPC methods: submit, get_account ... diff --git a/json-rpc/src/fuzzing.rs b/json-rpc/src/fuzzing.rs index 20ad8fddb0..4902337f2c 100644 --- a/json-rpc/src/fuzzing.rs +++ b/json-rpc/src/fuzzing.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{methods, runtime, tests}; +use diem_config::config; +use diem_proptest_helpers::ValueGenerator; +use diem_types::account_state_blob::AccountStateWithProof; use futures::{channel::mpsc::channel, StreamExt}; -use libra_config::config; -use libra_proptest_helpers::ValueGenerator; -use libra_types::account_state_blob::AccountStateWithProof; use std::sync::Arc; use warp::reply::Reply; @@ -75,7 +75,7 @@ pub fn method_fuzzer(params_data: &[u8], method: &str) { pub fn generate_corpus(gen: &mut ValueGenerator) -> Vec { // use proptest to generate a SignedTransaction let txn = gen.generate(proptest::arbitrary::any::< - libra_types::transaction::SignedTransaction, + diem_types::transaction::SignedTransaction, >()); let payload = hex::encode(lcs::to_bytes(&txn).unwrap()); let request = @@ -104,7 +104,7 @@ pub fn request_fuzzer(json_request: serde_json::Value) { let mut gen = ValueGenerator::new(); let account_state_with_proof = gen.generate(proptest::prelude::any::()); - let db = tests::MockLibraDB { + let db = tests::MockDiemDB { version: 1 as u64, genesis: std::collections::HashMap::new(), all_accounts: std::collections::HashMap::new(), @@ -118,7 +118,7 @@ pub fn request_fuzzer(json_request: serde_json::Value) { Arc::new(db), mp_sender, config::RoleType::Validator, - libra_types::chain_id::ChainId::test(), + diem_types::chain_id::ChainId::test(), config::DEFAULT_BATCH_SIZE_LIMIT, config::DEFAULT_PAGE_SIZE_LIMIT, ); @@ -131,8 +131,8 @@ pub fn request_fuzzer(json_request: serde_json::Value) { rt.spawn(async move { if let Some((_, cb)) = mp_events.next().await { cb.send(Ok(( - libra_types::mempool_status::MempoolStatus::new( - libra_types::mempool_status::MempoolStatusCode::Accepted, + diem_types::mempool_status::MempoolStatus::new( + diem_types::mempool_status::MempoolStatusCode::Accepted, ), None, ))) diff --git a/json-rpc/src/lib.rs b/json-rpc/src/lib.rs index c783be596c..0743124368 100644 --- a/json-rpc/src/lib.rs +++ b/json-rpc/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! JSON RPC endpoint @@ -20,7 +20,7 @@ mod counters; mod methods; mod runtime; -pub use libra_json_rpc_types::{errors, response, views}; +pub use diem_json_rpc_types::{errors, response, views}; pub use runtime::{bootstrap, bootstrap_from_config}; diff --git a/json-rpc/src/methods.rs b/json-rpc/src/methods.rs index 9d008d8b66..6af971d892 100644 --- a/json-rpc/src/methods.rs +++ b/json-rpc/src/methods.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Module contains RPC method handlers for Full Node JSON-RPC interface @@ -12,16 +12,14 @@ use crate::{ }; use anyhow::{ensure, format_err, Error, Result}; use core::future::Future; -use fail::fail_point; -use futures::{channel::oneshot, SinkExt}; -use libra_config::config::RoleType; -use libra_crypto::hash::CryptoHash; -use libra_mempool::MempoolClientSender; -use libra_trace::prelude::*; -use libra_types::{ +use diem_config::config::RoleType; +use diem_crypto::hash::CryptoHash; +use diem_mempool::MempoolClientSender; +use diem_trace::prelude::*; +use diem_types::{ account_address::AccountAddress, account_config::{ - from_currency_code_string, libra_root_address, resources::dual_attestation::Limit, + diem_root_address, from_currency_code_string, resources::dual_attestation::Limit, AccountResource, }, account_state::AccountState, @@ -31,6 +29,8 @@ use libra_types::{ mempool_status::MempoolStatusCode, transaction::SignedTransaction, }; +use fail::fail_point; +use futures::{channel::oneshot, SinkExt}; use network::counters; use serde::de::DeserializeOwned; use serde_json::Value; @@ -307,10 +307,10 @@ async fn get_metadata(service: JsonRpcService, request: JsonRpcRequest) -> Resul let mut script_hash_allow_list: Option> = None; let mut module_publishing_allowed: Option = None; - let mut libra_version: Option = None; + let mut diem_version: Option = None; let mut dual_attestation_limit: Option = None; if version == request.version() { - if let Some(account) = service.get_account_state(libra_root_address(), version)? { + if let Some(account) = service.get_account_state(diem_root_address(), version)? { if let Some(vm_publishing_option) = account.get_vm_publishing_option()? { script_hash_allow_list = Some( vm_publishing_option @@ -322,11 +322,11 @@ async fn get_metadata(service: JsonRpcService, request: JsonRpcRequest) -> Resul module_publishing_allowed = Some(vm_publishing_option.is_open_module); } - if let Some(v) = account.get_libra_version()? { - libra_version = Some(v.major) + if let Some(v) = account.get_diem_version()? { + diem_version = Some(v.major) } if let Some(limit) = account.get_resource::()? { - dual_attestation_limit = Some(limit.micro_lbr_limit) + dual_attestation_limit = Some(limit.micro_xdx_limit) } } } @@ -337,7 +337,7 @@ async fn get_metadata(service: JsonRpcService, request: JsonRpcRequest) -> Resul chain_id, script_hash_allow_list, module_publishing_allowed, - libra_version, + diem_version, dual_attestation_limit, }) } @@ -510,7 +510,7 @@ async fn get_currencies( request: JsonRpcRequest, ) -> Result> { if let Some(account_state) = - service.get_account_state(libra_root_address(), request.version())? + service.get_account_state(diem_root_address(), request.version())? { Ok(account_state .get_registered_currency_info_resources()? @@ -635,7 +635,7 @@ async fn get_account_state_with_proof( /// Returns the number of peers this node is connected to async fn get_network_status(service: JsonRpcService, _request: JsonRpcRequest) -> Result { - let peers = counters::LIBRA_NETWORK_PEERS + let peers = counters::DIEM_NETWORK_PEERS .get_metric_with_label_values(&[service.role.as_str(), "connected"])?; Ok(peers.get() as u64) } @@ -698,7 +698,7 @@ fn invalid_param(index: usize, name: &str) -> JsonRpcError { "include_events" => "boolean", "account address" => "hex-encoded string", "event key" => "hex-encoded string", - "data" => "hex-encoded string of LCS serialized Libra SignedTransaction type", + "data" => "hex-encoded string of LCS serialized Diem SignedTransaction type", "version" => "unsigned int64", "ledger version for proof" => "unsigned int64", _ => "unknown", diff --git a/json-rpc/src/runtime.rs b/json-rpc/src/runtime.rs index 672582f5dd..d854d6075b 100644 --- a/json-rpc/src/runtime.rs +++ b/json-rpc/src/runtime.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,11 +7,11 @@ use crate::{ methods::{build_registry, JsonRpcRequest, JsonRpcService, RpcRegistry}, response::JsonRpcResponse, }; +use diem_config::config::{NodeConfig, RoleType}; +use diem_logger::{debug, Level, Schema}; +use diem_mempool::MempoolClientSender; +use diem_types::{chain_id::ChainId, ledger_info::LedgerInfoWithSignatures}; use futures::future::join_all; -use libra_config::config::{NodeConfig, RoleType}; -use libra_logger::{debug, Level, Schema}; -use libra_mempool::MempoolClientSender; -use libra_types::{chain_id::ChainId, ledger_info::LedgerInfoWithSignatures}; use rand::{rngs::OsRng, RngCore}; use serde_json::{map::Map, Value}; use std::{net::SocketAddr, sync::Arc}; @@ -66,7 +66,7 @@ macro_rules! log_response { level = Level::Error } } - libra_logger::log!( + diem_logger::log!( level, RpcResponseLog { trace_id: $trace_id, @@ -85,7 +85,7 @@ pub fn bootstrap( batch_size_limit: u16, page_size_limit: u16, content_len_limit: usize, - libra_db: Arc, + diem_db: Arc, mp_sender: MempoolClientSender, role: RoleType, chain_id: ChainId, @@ -99,7 +99,7 @@ pub fn bootstrap( let registry = Arc::new(build_registry()); let service = JsonRpcService::new( - libra_db, + diem_db, mp_sender, role, chain_id, @@ -150,7 +150,7 @@ pub fn bootstrap( let health_route = warp::path!("-" / "healthy") .and(warp::path::end()) - .map(|| "libra-node:ok"); + .map(|| "diem-node:ok"); let full_route = health_route.or(route_v1.or(route_root)); @@ -170,7 +170,7 @@ pub fn bootstrap( pub fn bootstrap_from_config( config: &NodeConfig, chain_id: ChainId, - libra_db: Arc, + diem_db: Arc, mp_sender: MempoolClientSender, ) -> Runtime { bootstrap( @@ -178,7 +178,7 @@ pub fn bootstrap_from_config( config.json_rpc.batch_size_limit, config.json_rpc.page_size_limit, config.json_rpc.content_length_limit, - libra_db, + diem_db, mp_sender, config.base.role, chain_id, diff --git a/json-rpc/src/tests/genesis.rs b/json-rpc/src/tests/genesis.rs index 2742f7759d..ef268e7343 100644 --- a/json-rpc/src/tests/genesis.rs +++ b/json-rpc/src/tests/genesis.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::StdLibOptions; -use executor::process_write_set; -use executor_types::ProofReader; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, transaction::{Transaction, WriteSetPayload}, }; +use executor::process_write_set; +use executor_types::ProofReader; use scratchpad::SparseMerkleTree; use std::{collections::HashMap, sync::Arc}; use vm_genesis::generate_genesis_change_set_for_testing; diff --git a/json-rpc/src/tests/mod.rs b/json-rpc/src/tests/mod.rs index f91486bda9..6c43fcf604 100644 --- a/json-rpc/src/tests/mod.rs +++ b/json-rpc/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] @@ -9,4 +9,4 @@ mod utils; pub use utils::test_bootstrap; #[cfg(any(test, feature = "fuzzing"))] -pub use utils::MockLibraDB; +pub use utils::MockDiemDB; diff --git a/json-rpc/src/tests/unit_tests.rs b/json-rpc/src/tests/unit_tests.rs index cd2eb8cc0b..13e36bfbcd 100644 --- a/json-rpc/src/tests/unit_tests.rs +++ b/json-rpc/src/tests/unit_tests.rs @@ -1,35 +1,28 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ errors::{JsonRpcError, ServerCode}, tests::{ genesis::generate_genesis_state, - utils::{test_bootstrap, MockLibraDB}, + utils::{test_bootstrap, MockDiemDB}, }, }; -use futures::{ - channel::{ - mpsc::{channel, Receiver}, - oneshot, - }, - StreamExt, -}; -use libra_config::{config::DEFAULT_CONTENT_LENGTH_LIMIT, utils}; -use libra_crypto::{ed25519::Ed25519PrivateKey, hash::CryptoHash, HashValue, PrivateKey, Uniform}; -use libra_json_rpc_client::{ +use diem_config::{config::DEFAULT_CONTENT_LENGTH_LIMIT, utils}; +use diem_crypto::{ed25519::Ed25519PrivateKey, hash::CryptoHash, HashValue, PrivateKey, Uniform}; +use diem_json_rpc_client::{ views::{ AccountStateWithProofView, AccountView, BytesView, EventView, MetadataView, StateProofView, TransactionDataView, TransactionView, VMStatusView, }, JsonRpcAsyncClient, JsonRpcBatch, JsonRpcResponse, ResponseAsView, }; -use libra_mempool::SubmissionStatus; -use libra_metrics::get_all_metrics; -use libra_proptest_helpers::ValueGenerator; -use libra_types::{ +use diem_mempool::SubmissionStatus; +use diem_metrics::get_all_metrics; +use diem_proptest_helpers::ValueGenerator; +use diem_types::{ account_address::AccountAddress, - account_config::{from_currency_code_string, AccountResource, FreezingBit, COIN1_NAME}, + account_config::{from_currency_code_string, AccountResource, FreezingBit, XUS_NAME}, account_state::AccountState, account_state_blob::{AccountStateBlob, AccountStateWithProof}, chain_id::ChainId, @@ -42,7 +35,14 @@ use libra_types::{ transaction::{SignedTransaction, Transaction, TransactionInfo, TransactionPayload}, vm_status::StatusCode, }; -use libradb::test_helper::arb_blocks_to_commit; +use diemdb::test_helper::arb_blocks_to_commit; +use futures::{ + channel::{ + mpsc::{channel, Receiver}, + oneshot, + }, + StreamExt, +}; use move_core_types::{ language_storage::TypeTag, move_resource::MoveResource, @@ -66,8 +66,8 @@ use vm_validator::{ use serde_json::json; -// returns MockLibraDB for unit-testing -fn mock_db() -> MockLibraDB { +// returns MockDiemDB for unit-testing +fn mock_db() -> MockDiemDB { let mut gen = ValueGenerator::new(); let blocks = gen.generate(arb_blocks_to_commit()); let mut account_state_with_proof = gen.generate(any::()); @@ -134,7 +134,7 @@ fn mock_db() -> MockLibraDB { } let (genesis, _) = generate_genesis_state(); - MockLibraDB { + MockDiemDB { version: version as u64, genesis, all_accounts, @@ -215,9 +215,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -229,9 +229,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": null, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -243,9 +243,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": null, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -257,9 +257,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -271,9 +271,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -285,9 +285,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -299,9 +299,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -315,9 +315,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -331,9 +331,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -347,9 +347,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -363,9 +363,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -379,9 +379,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -395,9 +395,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -406,14 +406,14 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "error": { "code": -32602, - "message": "Invalid param data(params[0]): should be hex-encoded string of LCS serialized Libra SignedTransaction type", + "message": "Invalid param data(params[0]): should be hex-encoded string of LCS serialized Diem SignedTransaction type", "data": null }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -427,9 +427,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -438,9 +438,9 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": [] }), ), @@ -455,9 +455,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -471,9 +471,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -487,9 +487,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -498,9 +498,9 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": null }), ), @@ -515,9 +515,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -531,9 +531,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -547,9 +547,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -563,9 +563,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -579,9 +579,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -590,9 +590,9 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": [] }), ), @@ -607,9 +607,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -623,9 +623,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -639,9 +639,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -655,9 +655,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -666,9 +666,9 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": null }), ), @@ -683,9 +683,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -699,9 +699,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -715,9 +715,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -726,9 +726,9 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": [] }), ), @@ -743,9 +743,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -759,9 +759,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -775,9 +775,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -791,9 +791,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -807,9 +807,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -823,9 +823,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -839,9 +839,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -855,9 +855,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -871,9 +871,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -887,9 +887,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -903,9 +903,9 @@ fn test_json_rpc_protocol_invalid_requests() { }, "id": 1, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version }), ), ( @@ -914,16 +914,16 @@ fn test_json_rpc_protocol_invalid_requests() { json!({ "id": null, "jsonrpc": "2.0", - "libra_chain_id": ChainId::test().id(), - "libra_ledger_timestampusec": timestamp, - "libra_ledger_version": version, + "diem_chain_id": ChainId::test().id(), + "diem_ledger_timestampusec": timestamp, + "diem_ledger_version": version, "result": { "chain_id": ChainId::test().id(), "timestamp": timestamp, "version": version, "script_hash_allow_list": [], "module_publishing_allowed": true, - "libra_version": 1, + "diem_version": 1, "accumulator_root_hash": "0000000000000000000000000000000000000000000000000000000000000000", "dual_attestation_limit": 1000000000, } @@ -967,18 +967,18 @@ fn test_metrics() { let metrics = get_all_metrics(); let expected_metrics = vec![ // rpc request count - "libra_client_service_rpc_requests_count{type=single}", - "libra_client_service_rpc_requests_count{type=batch}", + "diem_client_service_rpc_requests_count{type=single}", + "diem_client_service_rpc_requests_count{type=batch}", // rpc request latency - "libra_client_service_rpc_request_latency_seconds{type=single}", - "libra_client_service_rpc_request_latency_seconds{type=batch}", + "diem_client_service_rpc_request_latency_seconds{type=single}", + "diem_client_service_rpc_request_latency_seconds{type=batch}", // method request count - "libra_client_service_requests_count{method=get_currencies,result=success,type=single}", + "diem_client_service_requests_count{method=get_currencies,result=success,type=single}", // method latency - "libra_client_service_method_latency_seconds{method=get_currencies,type=single}", - "libra_client_service_method_latency_seconds{method=get_currencies,type=batch}", + "diem_client_service_method_latency_seconds{method=get_currencies,type=single}", + "diem_client_service_method_latency_seconds{method=get_currencies,type=batch}", // invalid params - "libra_client_service_invalid_requests_count{errortype=invalid_params,method=get_currencies,type=single}", + "diem_client_service_invalid_requests_count{errortype=invalid_params,method=get_currencies,type=single}", ]; for name in expected_metrics { @@ -1063,7 +1063,7 @@ fn test_get_account() { .expect("account does not exist"); let account_balances: Vec<_> = account.balances.iter().map(|bal| bal.amount).collect(); let expected_resource_balances: Vec<_> = expected_resource - .get_balance_resources(&[from_currency_code_string(COIN1_NAME).unwrap()]) + .get_balance_resources(&[from_currency_code_string(XUS_NAME).unwrap()]) .unwrap() .iter() .map(|(_, bal_resource)| bal_resource.coin()) @@ -1103,7 +1103,7 @@ fn test_get_account() { .expect("account does not exist"); let account_balances: Vec<_> = account.balances.iter().map(|bal| bal.amount).collect(); let expected_resource_balances: Vec<_> = states[idx] - .get_balance_resources(&[from_currency_code_string(COIN1_NAME).unwrap()]) + .get_balance_resources(&[from_currency_code_string(XUS_NAME).unwrap()]) .unwrap() .iter() .map(|(_, bal_resource)| bal_resource.coin()) @@ -1502,9 +1502,9 @@ fn test_get_network_status() { } } -/// Creates and returns a MockLibraDB, JsonRpcAsyncClient and corresponding server Runtime tuple for +/// Creates and returns a MockDiemDB, JsonRpcAsyncClient and corresponding server Runtime tuple for /// testing. The given channel_buffer specifies the buffer size of the mempool client sender channel. -fn create_database_client_and_runtime() -> (MockLibraDB, JsonRpcAsyncClient, Runtime) { +fn create_database_client_and_runtime() -> (MockDiemDB, JsonRpcAsyncClient, Runtime) { let (mock_db, runtime, url, _) = create_db_and_runtime(); let client = JsonRpcAsyncClient::new(reqwest::Url::from_str(url.as_str()).expect("invalid url")); @@ -1513,7 +1513,7 @@ fn create_database_client_and_runtime() -> (MockLibraDB, JsonRpcAsyncClient, Run } fn create_db_and_runtime() -> ( - MockLibraDB, + MockDiemDB, Runtime, String, Receiver<( @@ -1537,7 +1537,7 @@ fn create_db_and_runtime() -> ( } /// Returns the first account address stored in the given mock database. -fn get_first_account_from_mock_db(mock_db: &MockLibraDB) -> AccountAddress { +fn get_first_account_from_mock_db(mock_db: &MockDiemDB) -> AccountAddress { *mock_db .all_accounts .keys() @@ -1546,7 +1546,7 @@ fn get_first_account_from_mock_db(mock_db: &MockLibraDB) -> AccountAddress { } /// Returns the first account_state_with_proof stored in the given mock database. -fn get_first_state_proof_from_mock_db(mock_db: &MockLibraDB) -> AccountStateWithProof { +fn get_first_state_proof_from_mock_db(mock_db: &MockDiemDB) -> AccountStateWithProof { mock_db .account_state_with_proof .get(0) diff --git a/json-rpc/src/tests/utils.rs b/json-rpc/src/tests/utils.rs index 89579842bf..4ed2ec523d 100644 --- a/json-rpc/src/tests/utils.rs +++ b/json-rpc/src/tests/utils.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Error, Result}; -use libra_config::config::{ +use diem_config::config::{ RoleType, DEFAULT_BATCH_SIZE_LIMIT, DEFAULT_CONTENT_LENGTH_LIMIT, DEFAULT_PAGE_SIZE_LIMIT, }; -use libra_crypto::HashValue; -use libra_mempool::MempoolClientSender; -use libra_types::{ +use diem_crypto::HashValue; +use diem_mempool::MempoolClientSender; +use diem_types::{ account_address::AccountAddress, account_state_blob::{AccountStateBlob, AccountStateWithProof}, block_info::BlockInfo, @@ -37,7 +37,7 @@ use tokio::runtime::Runtime; /// Should only be used for unit-tests pub fn test_bootstrap( address: SocketAddr, - libra_db: Arc, + diem_db: Arc, mp_sender: MempoolClientSender, ) -> Runtime { crate::bootstrap( @@ -45,16 +45,16 @@ pub fn test_bootstrap( DEFAULT_BATCH_SIZE_LIMIT, DEFAULT_PAGE_SIZE_LIMIT, DEFAULT_CONTENT_LENGTH_LIMIT, - libra_db, + diem_db, mp_sender, RoleType::Validator, ChainId::test(), ) } -/// Lightweight mock of LibraDB +/// Lightweight mock of DiemDB #[derive(Clone)] -pub struct MockLibraDB { +pub struct MockDiemDB { pub version: u64, pub genesis: HashMap, pub all_accounts: HashMap, @@ -64,7 +64,7 @@ pub struct MockLibraDB { pub timestamps: Vec, } -impl DbReader for MockLibraDB { +impl DbReader for MockDiemDB { fn get_latest_account_state( &self, address: AccountAddress, diff --git a/json-rpc/src/util.rs b/json-rpc/src/util.rs index 9e776b3106..555f1ce5a0 100644 --- a/json-rpc/src/util.rs +++ b/json-rpc/src/util.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// Helper macros. Used to simplify adding new RpcHandler to Registry diff --git a/json-rpc/tests/integration_test.rs b/json-rpc/tests/integration_test.rs index 58605acf92..211d18b84b 100644 --- a/json-rpc/tests/integration_test.rs +++ b/json-rpc/tests/integration_test.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde_json::json; use compiled_stdlib::transaction_scripts::StdlibScript; -use libra_crypto::hash::CryptoHash; -use libra_types::{ +use diem_crypto::hash::CryptoHash; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, - account_config::coin1_tmp_tag, + account_config::xus_tag, epoch_change::EpochChangeProof, ledger_info::LedgerInfoWithSignatures, proof::TransactionAccumulatorRangeProof, @@ -23,7 +23,7 @@ mod testing; #[test] fn test_interface() { - libra_logger::LibraLogger::init_for_testing(); + diem_logger::DiemLogger::init_for_testing(); let fullnode = node::Node::start().unwrap(); fullnode.wait_for_jsonrpc_connectivity(); @@ -55,24 +55,24 @@ fn create_test_cases() -> Vec { { "burn_events_key": "06000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "08000000000000000000000000000000000000000a550c18", - "code": "Coin1", + "code": "XUS", "exchange_rate_update_events_key": "09000000000000000000000000000000000000000a550c18", "fractional_part": 100, "mint_events_key": "05000000000000000000000000000000000000000a550c18", "preburn_events_key": "07000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1.0, + "to_xdx_exchange_rate": 1.0, }, { "burn_events_key": "0b000000000000000000000000000000000000000a550c18", "cancel_burn_events_key": "0d000000000000000000000000000000000000000a550c18", - "code": "LBR", + "code": "XDX", "exchange_rate_update_events_key": "0e000000000000000000000000000000000000000a550c18", "fractional_part": 1000, "mint_events_key": "0a000000000000000000000000000000000000000a550c18", "preburn_events_key": "0c000000000000000000000000000000000000000a550c18", "scaling_factor": 1000000, - "to_lbr_exchange_rate": 1.0 + "to_xdx_exchange_rate": 1.0 } ]) ) @@ -83,20 +83,20 @@ fn create_test_cases() -> Vec { run: |env: &mut testing::Env| { let resp = env.send("get_metadata", json!([])); let metadata = resp.result.unwrap(); - assert_eq!(metadata["chain_id"], resp.libra_chain_id); - assert_eq!(metadata["timestamp"], resp.libra_ledger_timestampusec); - assert_eq!(metadata["version"], resp.libra_ledger_version); + assert_eq!(metadata["chain_id"], resp.diem_chain_id); + assert_eq!(metadata["timestamp"], resp.diem_ledger_timestampusec); + assert_eq!(metadata["version"], resp.diem_ledger_version); assert_eq!(metadata["chain_id"], 4); // for testing chain id, we init genesis with VMPublishingOption#open assert_eq!(metadata["script_hash_allow_list"], json!([])); assert_eq!(metadata["module_publishing_allowed"], true); - assert_eq!(metadata["libra_version"], 1); + assert_eq!(metadata["diem_version"], 1); assert_eq!(metadata["dual_attestation_limit"], 1000000000); - assert_ne!(resp.libra_ledger_timestampusec, 0); - assert_ne!(resp.libra_ledger_version, 0); + assert_ne!(resp.diem_ledger_timestampusec, 0); + assert_ne!(resp.diem_ledger_version, 0); // prove the accumulator_root_hash - let sp_resp = env.send("get_state_proof", json!([resp.libra_ledger_version])); + let sp_resp = env.send("get_state_proof", json!([resp.diem_ledger_version])); let state_proof = sp_resp.result.unwrap(); let info_hex = state_proof["ledger_info_with_signatures"].as_str().unwrap(); let info:LedgerInfoWithSignatures = lcs::from_bytes(&hex::decode(&info_hex).unwrap()).unwrap(); @@ -112,7 +112,7 @@ fn create_test_cases() -> Vec { // no data provided for the following fields when requesting older version assert_eq!(metadata["script_hash_allow_list"], json!(null)); assert_eq!(metadata["module_publishing_allowed"], json!(null)); - assert_eq!(metadata["libra_version"], json!(null)); + assert_eq!(metadata["diem_version"], json!(null)); }, }, Test { @@ -125,7 +125,7 @@ fn create_test_cases() -> Vec { Test { name: "unknown role type account", run: |env: &mut testing::Env| { - let address = format!("{:#x}", libra_types::account_config::libra_root_address()); + let address = format!("{:#x}", diem_types::account_config::diem_root_address()); let resp = env.send("get_account", json!([address])); let mut result = resp.result.unwrap(); // as we generate account auth key, ignore it in assertion @@ -153,7 +153,7 @@ fn create_test_cases() -> Vec { run: |env: &mut testing::Env| { let address = format!( "{:#x}", - libra_types::account_config::testnet_dd_account_address() + diem_types::account_config::testnet_dd_account_address() ); let resp = env.send("get_account", json!([address])); let mut result = resp.result.unwrap(); @@ -167,12 +167,12 @@ fn create_test_cases() -> Vec { "authentication_key": null, "balances": [ { - "amount": 9223370036854775807 as u64, - "currency": "Coin1" + "amount": 0 as u64, + "currency": "XDX" }, { - "amount": 0 as u64, - "currency": "LBR" + "amount": 9223370036854775807 as u64, + "currency": "XUS" }, ], "delegated_key_rotation_capability": false, @@ -188,7 +188,7 @@ fn create_test_cases() -> Vec { "preburn_balances": [ { "amount": 0, - "currency": "Coin1" + "currency": "XUS" }, ], "received_mint_events_key": "0000000000000000000000000000000000000000000000dd", @@ -213,7 +213,7 @@ fn create_test_cases() -> Vec { json!({ "address": address, "authentication_key": account.auth_key().to_string(), - "balances": [{"amount": 997000000000 as u64, "currency": "Coin1"}], + "balances": [{"amount": 997000000000 as u64, "currency": "XUS"}], "delegated_key_rotation_capability": false, "delegated_withdrawal_capability": false, "is_frozen": false, @@ -247,7 +247,7 @@ fn create_test_cases() -> Vec { json!({ "address": address, "authentication_key": account.auth_key().to_string(), - "balances": [{"amount": 3000000000 as u64, "currency": "Coin1"}], + "balances": [{"amount": 3000000000 as u64, "currency": "XUS"}], "delegated_key_rotation_capability": false, "delegated_withdrawal_capability": false, "is_frozen": false, @@ -265,7 +265,7 @@ fn create_test_cases() -> Vec { Test { name: "peer to peer account transaction with events", run: |env: &mut testing::Env| { - let prev_ledger_version = env.send("get_metadata", json!([])).libra_ledger_version; + let prev_ledger_version = env.send("get_metadata", json!([])).diem_ledger_version; let txn = env.transfer_coins((0, 0), (1, 0), 200000); env.wait_for_txn(&txn); @@ -282,7 +282,7 @@ fn create_test_cases() -> Vec { let version = result["version"].as_u64().unwrap(); assert_eq!( true, - version > prev_ledger_version && version <= resp.libra_ledger_version + version > prev_ledger_version && version <= resp.diem_ledger_version ); let gas_used = result["gas_used"].as_u64().expect("exist as u64"); @@ -292,7 +292,7 @@ fn create_test_cases() -> Vec { TransactionPayload::Script(s) => s, _ => unreachable!(), }; - let script_hash = libra_crypto::HashValue::sha3_256_of(script.code()).to_hex(); + let script_hash = diem_crypto::HashValue::sha3_256_of(script.code()).to_hex(); let script_bytes = hex::encode(lcs::to_bytes(script).unwrap()); assert_eq!( @@ -302,7 +302,7 @@ fn create_test_cases() -> Vec { "events": [ { "data": { - "amount": {"amount": 200000 as u64, "currency": "Coin1"}, + "amount": {"amount": 200000 as u64, "currency": "XUS"}, "metadata": "", "receiver": format!("{:#x}", &receiver.address), "sender": format!("{:#x}", &sender.address), @@ -314,7 +314,7 @@ fn create_test_cases() -> Vec { }, { "data": { - "amount": {"amount": 200000 as u64, "currency": "Coin1"}, + "amount": {"amount": 200000 as u64, "currency": "XUS"}, "metadata": "", "receiver": format!("{:#x}", &receiver.address), "sender": format!("{:#x}", &sender.address), @@ -330,14 +330,14 @@ fn create_test_cases() -> Vec { "transaction": { "chain_id": 4, "expiration_timestamp_secs": txn.expiration_timestamp_secs(), - "gas_currency": "Coin1", + "gas_currency": "XUS", "gas_unit_price": 0, "max_gas_amount": 1000000, "public_key": sender.public_key.to_string(), "script": { "type": "peer_to_peer_with_metadata", "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ format!("{{ADDRESS: {:?}}}", &receiver.address), @@ -347,7 +347,7 @@ fn create_test_cases() -> Vec { ], "code": hex::encode(script.code()), "amount": 200000, - "currency": "Coin1", + "currency": "XUS", "metadata": "", "metadata_signature": "", "receiver": format!("{:#x}", &receiver.address), @@ -394,7 +394,7 @@ fn create_test_cases() -> Vec { "reason": "EINSUFFICIENT_BALANCE", "reason_description": " The account does not hold a large enough balance in the specified currency" }, - "location": "00000000000000000000000000000001::LibraAccount", + "location": "00000000000000000000000000000001::DiemAccount", "type": "move_abort" }) ); @@ -426,7 +426,7 @@ fn create_test_cases() -> Vec { let account1 = env.get_account(0, 0); let account2 = env.get_account(1, 0); let script = transaction_builder_generated::stdlib::encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account2.address, 100, vec![], @@ -435,16 +435,16 @@ fn create_test_cases() -> Vec { let seq = env .get_account_sequence(account1.address.to_string()) .expect("account should exist onchain for create transaction"); - libra_types::transaction::helpers::create_user_txn( + diem_types::transaction::helpers::create_user_txn( account1, TransactionPayload::Script(script), account1.address, seq + 100, 1_000_000, 0, - libra_types::account_config::COIN1_NAME.to_owned(), + diem_types::account_config::XUS_NAME.to_owned(), -100_000_000, - libra_types::chain_id::ChainId::test(), + diem_types::chain_id::ChainId::test(), ).expect("user signed transaction") }; let resp = env.submit(&txn1); @@ -458,7 +458,7 @@ fn create_test_cases() -> Vec { Test { name: "preburn & burn events", run: |env: &mut testing::Env| { - let script = stdlib::encode_preburn_script(coin1_tmp_tag(), 100); + let script = stdlib::encode_preburn_script(xus_tag(), 100); let txn = env.create_txn(&env.dd, script.clone()); let result = env.submit_and_wait(txn); let version = result["version"].as_u64().unwrap(); @@ -468,7 +468,7 @@ fn create_test_cases() -> Vec { json!([ { "data": { - "amount": {"amount": 100, "currency": "Coin1"}, + "amount": {"amount": 100, "currency": "XUS"}, "metadata": "", "receiver": "000000000000000000000000000000dd", "sender": "000000000000000000000000000000dd", @@ -480,7 +480,7 @@ fn create_test_cases() -> Vec { }, { "data": { - "amount": {"amount": 100, "currency": "Coin1"}, + "amount": {"amount": 100, "currency": "XUS"}, "preburn_address": "000000000000000000000000000000dd", "type": "preburn" }, @@ -496,7 +496,7 @@ fn create_test_cases() -> Vec { result["transaction"]["script"], json!({ "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ "{U64: 100}", @@ -508,7 +508,7 @@ fn create_test_cases() -> Vec { result["transaction"] ); - let script = stdlib::encode_burn_script(coin1_tmp_tag(), 0, env.dd.address); + let script = stdlib::encode_burn_script(xus_tag(), 0, env.dd.address); let burn_txn = env.create_txn(&env.tc, script.clone()); let result = env.submit_and_wait(burn_txn); let version = result["version"].as_u64().unwrap(); @@ -516,7 +516,7 @@ fn create_test_cases() -> Vec { result["events"], json!([{ "data":{ - "amount":{"amount":100,"currency":"Coin1"}, + "amount":{"amount":100,"currency":"XUS"}, "preburn_address":"000000000000000000000000000000dd", "type":"burn" }, @@ -531,7 +531,7 @@ fn create_test_cases() -> Vec { result["transaction"]["script"], json!({ "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ "{U64: 0}", @@ -549,10 +549,10 @@ fn create_test_cases() -> Vec { name: "cancel burn event", run: |env: &mut testing::Env| { let txn = - env.create_txn(&env.dd, stdlib::encode_preburn_script(coin1_tmp_tag(), 100)); + env.create_txn(&env.dd, stdlib::encode_preburn_script(xus_tag(), 100)); env.submit_and_wait(txn); - let script = stdlib::encode_cancel_burn_script(coin1_tmp_tag(), env.dd.address); + let script = stdlib::encode_cancel_burn_script(xus_tag(), env.dd.address); let cancel_burn_txn = env.create_txn(&env.tc, script.clone()); let result = env.submit_and_wait(cancel_burn_txn); let version = result["version"].as_u64().unwrap(); @@ -561,7 +561,7 @@ fn create_test_cases() -> Vec { json!([ { "data":{ - "amount":{"amount":100,"currency":"Coin1"}, + "amount":{"amount":100,"currency":"XUS"}, "preburn_address":"000000000000000000000000000000dd", "type":"cancelburn" }, @@ -571,7 +571,7 @@ fn create_test_cases() -> Vec { }, { "data":{ - "amount":{"amount":100,"currency":"Coin1"}, + "amount":{"amount":100,"currency":"XUS"}, "metadata":"", "receiver":"000000000000000000000000000000dd", "sender":"000000000000000000000000000000dd", @@ -589,7 +589,7 @@ fn create_test_cases() -> Vec { result["transaction"]["script"], json!({ "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ "{ADDRESS: 000000000000000000000000000000DD}", @@ -605,7 +605,7 @@ fn create_test_cases() -> Vec { Test { name: "update exchange rate event", run: |env: &mut testing::Env| { - let script = stdlib::encode_update_exchange_rate_script(coin1_tmp_tag(), 0, 1, 4); + let script = stdlib::encode_update_exchange_rate_script(xus_tag(), 0, 1, 4); let txn = env.create_txn(&env.tc, script.clone()); let result = env.submit_and_wait(txn); let version = result["version"].as_u64().unwrap(); @@ -613,9 +613,9 @@ fn create_test_cases() -> Vec { result["events"], json!([{ "data":{ - "currency_code":"Coin1", - "new_to_lbr_exchange_rate":0.25, - "type":"to_lbr_exchange_rate_update" + "currency_code":"XUS", + "new_to_xdx_exchange_rate":0.25, + "type":"to_xdx_exchange_rate_update" }, "key":"09000000000000000000000000000000000000000a550c18", "sequence_number":0, @@ -628,7 +628,7 @@ fn create_test_cases() -> Vec { result["transaction"]["script"], json!({ "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ "{U64: 0}", @@ -647,7 +647,7 @@ fn create_test_cases() -> Vec { name: "mint & received mint events", run: |env: &mut testing::Env| { let script = stdlib::encode_tiered_mint_script( - coin1_tmp_tag(), + xus_tag(), 0, env.dd.address, 1_000_000, @@ -661,7 +661,7 @@ fn create_test_cases() -> Vec { json!([ { "data":{ - "amount":{"amount":1000000,"currency":"Coin1"}, + "amount":{"amount":1000000,"currency":"XUS"}, "destination_address":"000000000000000000000000000000dd", "type":"receivedmint" }, @@ -671,7 +671,7 @@ fn create_test_cases() -> Vec { }, { "data":{ - "amount":{"amount":1000000,"currency":"Coin1"}, + "amount":{"amount":1000000,"currency":"XUS"}, "type":"mint" }, "key":"05000000000000000000000000000000000000000a550c18", @@ -679,7 +679,7 @@ fn create_test_cases() -> Vec { "transaction_version":version}, { "data":{ - "amount":{"amount":1000000,"currency":"Coin1"}, + "amount":{"amount":1000000,"currency":"XUS"}, "metadata":"", "receiver":"000000000000000000000000000000dd", "sender":"00000000000000000000000000000000", @@ -698,7 +698,7 @@ fn create_test_cases() -> Vec { result["transaction"]["script"], json!({ "type_arguments": [ - "Coin1" + "XUS" ], "arguments": [ "{U64: 0}", @@ -718,7 +718,7 @@ fn create_test_cases() -> Vec { name: "rotate compliance key rotation events", run: |env: &mut testing::Env| { let private_key = generate_key::generate_key(); - let public_key: libra_crypto::ed25519::Ed25519PublicKey = (&private_key).into(); + let public_key: diem_crypto::ed25519::Ed25519PublicKey = (&private_key).into(); let txn = env.create_txn( &env.vasps[0], stdlib::encode_rotate_dual_attestation_info_script( @@ -867,11 +867,11 @@ fn create_test_cases() -> Vec { let resp = env.send("get_metadata", json!([])); let limit = 10; - assert!(resp.libra_ledger_version > limit); + assert!(resp.diem_ledger_version > limit); // We test 2 cases: - // 1. base_version + limit > resp.libra_ledger_version - // 2. base_version + limit < resp.libra_ledger_version - for base_version in &[resp.libra_ledger_version, 0] { + // 1. base_version + limit > resp.diem_ledger_version + // 2. base_version + limit < resp.diem_ledger_version + for base_version in &[resp.diem_ledger_version, 0] { // let response = env.send("get_transactions_with_proofs", json!([*base_version, limit])); let responses = env.send_request(json!([ {"jsonrpc": "2.0", "method": "get_state_proof", "params": json!([0]), "id": 1}, diff --git a/json-rpc/tests/node.rs b/json-rpc/tests/node.rs index f249161a4c..21977ec8ba 100644 --- a/json-rpc/tests/node.rs +++ b/json-rpc/tests/node.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_config::config::NodeConfig; -use libra_genesis_tool::{config_builder::ValidatorBuilder, swarm_config::BuildSwarm}; +use diem_config::config::NodeConfig; +use diem_genesis_tool::{config_builder::ValidatorBuilder, swarm_config::BuildSwarm}; pub struct Node { pub config: NodeConfig, - pub root_key: libra_crypto::ed25519::Ed25519PrivateKey, - node: libra_node::LibraHandle, - _temp_dir: libra_temppath::TempPath, + pub root_key: diem_crypto::ed25519::Ed25519PrivateKey, + node: diem_node::DiemHandle, + _temp_dir: diem_temppath::TempPath, } impl Drop for Node { @@ -20,7 +20,7 @@ impl Drop for Node { impl Node { pub fn start() -> Result { - let temp_dir = libra_temppath::TempPath::new(); + let temp_dir = diem_temppath::TempPath::new(); temp_dir .create_as_dir() .expect("unable to create temporary config dir"); @@ -35,7 +35,7 @@ impl Node { config.set_data_dir(node_dir.to_path_buf()); config.save(&config_path)?; - let node = libra_node::setup_environment(&config, None); + let node = diem_node::setup_environment(&config, None); Ok(Self { root_key, diff --git a/json-rpc/tests/testing.rs b/json-rpc/tests/testing.rs index 1c0ace9daf..168dd0a530 100644 --- a/json-rpc/tests/testing.rs +++ b/json-rpc/tests/testing.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; -use libra_crypto::{hash::CryptoHash, traits::SigningKey}; -use libra_json_rpc_types::response::JsonRpcResponse; -use libra_types::{ +use diem_crypto::{hash::CryptoHash, traits::SigningKey}; +use diem_json_rpc_types::response::JsonRpcResponse; +use diem_types::{ account_address::AccountAddress, account_config::{ - coin1_tmp_tag, libra_root_address, testnet_dd_account_address, - treasury_compliance_account_address, COIN1_NAME, + diem_root_address, testnet_dd_account_address, treasury_compliance_account_address, + xus_tag, XUS_NAME, }, chain_id::ChainId, transaction::SignedTransaction, @@ -27,7 +27,7 @@ pub struct Env { } impl Env { - pub fn gen(root_private_key: libra_crypto::ed25519::Ed25519PrivateKey, url: String) -> Self { + pub fn gen(root_private_key: diem_crypto::ed25519::Ed25519PrivateKey, url: String) -> Self { Self { url, tc: Account::new_with_address( @@ -35,7 +35,7 @@ impl Env { root_private_key.clone(), ), dd: Account::new_with_address(testnet_dd_account_address(), root_private_key.clone()), - root: Account::new_with_address(libra_root_address(), root_private_key), + root: Account::new_with_address(diem_root_address(), root_private_key), vasps: vec![], client: reqwest::blocking::Client::new(), allow_execution_failures: false, @@ -69,7 +69,7 @@ impl Env { let vasp = Account::gen(); let script = transaction_builder_generated::stdlib::encode_create_parent_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), 0, // sliding nonce vasp.address, vasp.auth_key().prefix().to_vec(), @@ -84,7 +84,7 @@ impl Env { pub fn create_child_vasp(&mut self, parent_vasp_index: usize, amount: u64) { let child = Account::gen(); let script = transaction_builder_generated::stdlib::encode_create_child_vasp_account_script( - coin1_tmp_tag(), + xus_tag(), child.address, child.auth_key().prefix().to_vec(), false, /* add all currencies */ @@ -98,7 +98,7 @@ impl Env { pub fn transfer_coins_to_vasp(&mut self, index: usize, amount: u64) { let script = transaction_builder_generated::stdlib::encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), self.vasps[index].address, amount, vec![], @@ -129,7 +129,7 @@ impl Env { let receiver_address = self.vasps[rid].children[rcid].address; let script = transaction_builder_generated::stdlib::encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), receiver_address, amount, // todo: add metadata @@ -152,30 +152,30 @@ impl Env { pub fn create_txn( &self, account: &Account, - script: libra_types::transaction::Script, + script: diem_types::transaction::Script, ) -> SignedTransaction { self.create_txn_by_payload( account, - libra_types::transaction::TransactionPayload::Script(script), + diem_types::transaction::TransactionPayload::Script(script), ) } pub fn create_txn_by_payload( &self, account: &Account, - payload: libra_types::transaction::TransactionPayload, + payload: diem_types::transaction::TransactionPayload, ) -> SignedTransaction { let seq = self .get_account_sequence(account.address.to_string()) .expect("account should exist onchain for create transaction"); - libra_types::transaction::helpers::create_user_txn( + diem_types::transaction::helpers::create_user_txn( account, payload, account.address, seq, 1_000_000, 0, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), 30, ChainId::test(), ) @@ -212,7 +212,7 @@ impl Env { } pub fn wait_for_txn(&self, txn: &SignedTransaction) -> Value { - let txn_hash = libra_types::transaction::Transaction::UserTransaction(txn.clone()) + let txn_hash = diem_types::transaction::Transaction::UserTransaction(txn.clone()) .hash() .to_hex(); for _i in 0..60 { @@ -269,28 +269,28 @@ impl std::panic::UnwindSafe for Env {} #[derive(Clone, Debug, PartialEq)] pub struct Account { - pub private_key: libra_crypto::ed25519::Ed25519PrivateKey, - pub public_key: libra_crypto::ed25519::Ed25519PublicKey, - pub address: libra_types::account_address::AccountAddress, + pub private_key: diem_crypto::ed25519::Ed25519PrivateKey, + pub public_key: diem_crypto::ed25519::Ed25519PublicKey, + pub address: diem_types::account_address::AccountAddress, pub seq: u64, pub children: Vec, } impl Account { - pub fn new(private_key: libra_crypto::ed25519::Ed25519PrivateKey) -> Self { - let public_key: libra_crypto::ed25519::Ed25519PublicKey = (&private_key).into(); + pub fn new(private_key: diem_crypto::ed25519::Ed25519PrivateKey) -> Self { + let public_key: diem_crypto::ed25519::Ed25519PublicKey = (&private_key).into(); Account { private_key, public_key: public_key.clone(), - address: libra_types::account_address::from_public_key(&public_key), + address: diem_types::account_address::from_public_key(&public_key), seq: 0, children: vec![], } } pub fn new_with_address( - address: libra_types::account_address::AccountAddress, - private_key: libra_crypto::ed25519::Ed25519PrivateKey, + address: diem_types::account_address::AccountAddress, + private_key: diem_crypto::ed25519::Ed25519PrivateKey, ) -> Self { let public_key = (&private_key).into(); Account { @@ -310,20 +310,20 @@ impl Account { hex::encode(self.address) } - pub fn auth_key(&self) -> libra_types::transaction::authenticator::AuthenticationKey { - libra_types::transaction::authenticator::AuthenticationKey::ed25519(&self.public_key) + pub fn auth_key(&self) -> diem_types::transaction::authenticator::AuthenticationKey { + diem_types::transaction::authenticator::AuthenticationKey::ed25519(&self.public_key) } } -impl libra_types::transaction::helpers::TransactionSigner for Account { +impl diem_types::transaction::helpers::TransactionSigner for Account { fn sign_txn( &self, - raw_txn: libra_types::transaction::RawTransaction, + raw_txn: diem_types::transaction::RawTransaction, ) -> Result { let signature = self.private_key.sign(&raw_txn); Ok(SignedTransaction::new( raw_txn, - libra_crypto::ed25519::Ed25519PublicKey::from(&self.private_key), + diem_crypto::ed25519::Ed25519PublicKey::from(&self.private_key), signature, )) } diff --git a/json-rpc/types/Cargo.toml b/json-rpc/types/Cargo.toml index 868283d65b..6e73ce7fbc 100644 --- a/json-rpc/types/Cargo.toml +++ b/json-rpc/types/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-json-rpc-types" +name = "diem-json-rpc-types" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra JSONRPC Types" +authors = ["Diem Association "] +description = "Diem JSONRPC Types" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -18,9 +18,9 @@ prost = "0.6.1" compiled-stdlib = { path = "../../language/stdlib/compiled", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } move-explain = { path = "../../language/tools/move-explain", version = "0.1.0" } diff --git a/json-rpc/types/build.rs b/json-rpc/types/build.rs index 1f63ba4a92..2402b8b811 100644 --- a/json-rpc/types/build.rs +++ b/json-rpc/types/build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 fn main() { diff --git a/json-rpc/types/src/constants.rs b/json-rpc/types/src/constants.rs index 99477eb2a7..4cae3193bc 100644 --- a/json-rpc/types/src/constants.rs +++ b/json-rpc/types/src/constants.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Defines constants for enum type values -//! See the following Libra JSON-RPC response type documents for more details: +//! See the following Diem JSON-RPC response type documents for more details: //! * https://github.com/libra/libra/blob/master/json-rpc/docs/type_account.md#type-account //! * https://github.com/libra/libra/blob/master/json-rpc/docs/type_event.md#event-data //! * https://github.com/libra/libra/blob/master/json-rpc/docs/type_transaction.md#type-vmstatus @@ -19,7 +19,7 @@ pub const EVENT_DATA_UNKNOWN: &str = "unknown"; pub const EVENT_DATA_BURN: &str = "burn"; pub const EVENT_DATA_CANCEL_BURN: &str = "cancelburn"; pub const EVENT_DATA_MINT: &str = "mint"; -pub const EVENT_DATA_TO_LBR_EXCHANGE_RATE_UPDATE: &str = "to_lbr_exchange_rate_update"; +pub const EVENT_DATA_TO_XDX_EXCHANGE_RATE_UPDATE: &str = "to_xdx_exchange_rate_update"; pub const EVENT_DATA_PREBURN: &str = "preburn"; pub const EVENT_DATA_RECEIVED_PAYMENT: &str = "receivedpayment"; pub const EVENT_DATA_SENT_PAYMENT: &str = "sentpayment"; diff --git a/json-rpc/types/src/errors.rs b/json-rpc/types/src/errors.rs index 13e6a9a3b4..59b78973fe 100644 --- a/json-rpc/types/src/errors.rs +++ b/json-rpc/types/src/errors.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_types::{ +use diem_types::{ mempool_status::{MempoolStatus, MempoolStatusCode}, vm_status::{StatusCode, StatusType}, }; @@ -223,7 +223,7 @@ impl JsonRpcError { #[cfg(test)] mod tests { use crate::errors::{is_internal_error, JsonRpcError, ServerCode, INTERNAL_ERRORS}; - use libra_types::{ + use diem_types::{ mempool_status::{MempoolStatus, MempoolStatusCode}, vm_status::StatusCode, }; diff --git a/json-rpc/types/src/lib.rs b/json-rpc/types/src/lib.rs index 674a8084b9..5f09331138 100644 --- a/json-rpc/types/src/lib.rs +++ b/json-rpc/types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod errors; diff --git a/json-rpc/types/src/proto/jsonrpc.proto b/json-rpc/types/src/proto/jsonrpc.proto index 6e7b6961b7..d6eb0a80eb 100644 --- a/json-rpc/types/src/proto/jsonrpc.proto +++ b/json-rpc/types/src/proto/jsonrpc.proto @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // This is the definition of json-rpc service response data structures for keeping @@ -17,14 +17,14 @@ // == How to use == // // 1. Generate code by protoc. -// 2. The generated data types can be used to deserialize Libra JSON-RPC response#result +// 2. The generated data types can be used to deserialize Diem JSON-RPC response#result // object. // 3. Use protobuf json format parser deserialize response#result. // 4. As protobuf does not provide functions to deserialize list of objects, when // response#result is an array, you need use the parser deserialize object in the // array and then collect them as array. // -// May checkout python implementation as example: https://github.com/libra/libra-client-sdk-python/blob/master/src/libra/jsonrpc/client.py#L474 +// May checkout python implementation as example: https://github.com/libra/libra-client-sdk-python/blob/master/src/diem/jsonrpc/client.py#L474 // // For each data type detail document, please checkout https://github.com/libra/libra/blob/master/json-rpc/json-rpc-spec.md. @@ -32,8 +32,8 @@ syntax = "proto3"; package jsonrpc; -option go_package = "github.com/libra/jsonrpc"; -option java_package = "org.libra.jsonrpc"; +option go_package = "github.com/diem/jsonrpc"; +option java_package = "org.diem.jsonrpc"; option java_outer_classname = "JsonRpc"; message Amount { @@ -100,9 +100,9 @@ message EventData { // hex-encoded bytes string preburn_address = 3 [json_name="preburn_address"]; - // to_lbr_exchange_rate_update event only + // to_xdx_exchange_rate_update event only string currency_code = 4 [json_name="currency_code"]; - float new_to_lbr_exchange_rate = 5 [json_name="new_to_lbr_exchange_rate"]; + float new_to_xdx_exchange_rate = 5 [json_name="new_to_xdx_exchange_rate"]; // receivedpayment and sentpayment events // hex-encoded bytes @@ -142,7 +142,7 @@ message EventData { string created_address = 18 [json_name="created_address"]; /** * createaccount event field. - * Role id of the created account, see [LIP-2](https://lip.libra.org/lip-2/#move-implementation) + * Role id of the created account, see [LIP-2](https://dip.diem.com/dip-2/#move-implementation) * for more details */ uint64 role_id = 19 [json_name="role_id"]; @@ -165,7 +165,7 @@ message Metadata { */ uint64 timestamp = 2; /** - * Chain ID of the Libra network + * Chain ID of the Diem network */ uint32 chain_id = 3 [json_name="chain_id"]; @@ -182,9 +182,9 @@ message Metadata { bool module_publishing_allowed = 5 [json_name="module_publishing_allowed"]; /** - * Libra chain major version number. + * Diem chain major version number. */ - uint64 libra_version = 6 [json_name="libra_version"]; + uint64 diem_version = 6 [json_name="diem_version"]; /** * accumulator root hash of the ledger version requested @@ -192,7 +192,7 @@ message Metadata { string accumulator_root_hash = 7 [json_name="accumulator_root_hash"]; /** - * The dual attestation limit on-chain. Defined in terms of micro-LBR. + * The dual attestation limit on-chain. Defined in terms of micro-XDX. */ uint64 dual_attestation_limit = 8 [json_name="dual_attestation_limit"]; } @@ -304,12 +304,12 @@ message Script { /** * Metadata of the transaction, LCS serialized hex-encoded string. - * See [LIP-4](https://lip.libra.org/lip-4/) for more details. + * See [LIP-4](https://dip.diem.com/dip-4/) for more details. */ string metadata = 8; /** * Hex-encoded metadata signature, use this to validate metadata. - * See [LIP-4](https://lip.libra.org/lip-4/) for more details. + * See [LIP-4](https://dip.diem.com/dip-4/) for more details. */ string metadata_signature = 9 [json_name="metadata_signature"]; } @@ -318,7 +318,7 @@ message CurrencyInfo { string code = 1; uint64 scaling_factor = 2 [json_name="scaling_factor"]; uint64 fractional_part = 3 [json_name="fractional_part"]; - float to_lbr_exchange_rate = 4 [json_name="to_lbr_exchange_rate"]; + float to_xdx_exchange_rate = 4 [json_name="to_xdx_exchange_rate"]; // hex-encoded bytes string mint_events_key = 5 [json_name="mint_events_key"]; // hex-encoded bytes diff --git a/json-rpc/types/src/proto/mod.rs b/json-rpc/types/src/proto/mod.rs index ef56971f5b..dec4170ea2 100644 --- a/json-rpc/types/src/proto/mod.rs +++ b/json-rpc/types/src/proto/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(bare_trait_objects)] diff --git a/json-rpc/types/src/response.rs b/json-rpc/types/src/response.rs index 9e82d7897c..52fe13e9c5 100644 --- a/json-rpc/types/src/response.rs +++ b/json-rpc/types/src/response.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::errors::JsonRpcError; @@ -6,9 +6,9 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Serialize, Deserialize, Debug)] pub struct JsonRpcResponse { - pub libra_chain_id: u8, - pub libra_ledger_version: u64, - pub libra_ledger_timestampusec: u64, + pub diem_chain_id: u8, + pub diem_ledger_version: u64, + pub diem_ledger_timestampusec: u64, pub jsonrpc: String, @@ -21,14 +21,14 @@ pub struct JsonRpcResponse { impl JsonRpcResponse { pub fn new( - chain_id: libra_types::chain_id::ChainId, - libra_ledger_version: u64, - libra_ledger_timestampusec: u64, + chain_id: diem_types::chain_id::ChainId, + diem_ledger_version: u64, + diem_ledger_timestampusec: u64, ) -> Self { Self { - libra_chain_id: chain_id.id(), - libra_ledger_version, - libra_ledger_timestampusec, + diem_chain_id: chain_id.id(), + diem_ledger_version, + diem_ledger_timestampusec, jsonrpc: "2.0".to_string(), id: None, result: None, @@ -40,15 +40,15 @@ impl JsonRpcResponse { #[cfg(test)] mod tests { use crate::response::JsonRpcResponse; - use libra_types::chain_id::ChainId; + use diem_types::chain_id::ChainId; #[test] fn test_new() { let resp = JsonRpcResponse::new(ChainId::test(), 1, 2); assert_eq!(resp.jsonrpc, "2.0"); - assert_eq!(resp.libra_chain_id, 4); - assert_eq!(resp.libra_ledger_version, 1); - assert_eq!(resp.libra_ledger_timestampusec, 2); + assert_eq!(resp.diem_chain_id, 4); + assert_eq!(resp.diem_ledger_version, 1); + assert_eq!(resp.diem_ledger_timestampusec, 2); assert!(resp.id.is_none()); assert!(resp.result.is_none()); assert!(resp.error.is_none()); diff --git a/json-rpc/types/src/views.rs b/json-rpc/types/src/views.rs index 70019bd9b6..2c72dfbccc 100644 --- a/json-rpc/types/src/views.rs +++ b/json-rpc/types/src/views.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Error, Result}; use compiled_stdlib::transaction_scripts::StdlibScript; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ account_config::{ AccountResource, AccountRole, AdminTransactionEvent, BalanceResource, BaseUrlRotationEvent, BurnEvent, CancelBurnEvent, ComplianceKeyRotationEvent, CreateAccountEvent, CurrencyInfoResource, FreezingBit, MintEvent, NewBlockEvent, NewEpochEvent, PreburnEvent, - ReceivedMintEvent, ReceivedPaymentEvent, SentPaymentEvent, ToLBRExchangeRateUpdateEvent, + ReceivedMintEvent, ReceivedPaymentEvent, SentPaymentEvent, ToXDXExchangeRateUpdateEvent, }, account_state_blob::AccountStateWithProof, contract_event::ContractEvent, @@ -143,10 +143,10 @@ pub enum EventDataView { }, #[serde(rename = "mint")] Mint { amount: AmountView }, - #[serde(rename = "to_lbr_exchange_rate_update")] - ToLBRExchangeRateUpdate { + #[serde(rename = "to_xdx_exchange_rate_update")] + ToXDXExchangeRateUpdate { currency_code: String, - new_to_lbr_exchange_rate: f32, + new_to_xdx_exchange_rate: f32, }, #[serde(rename = "preburn")] Preburn { @@ -258,11 +258,11 @@ impl TryFrom for EventDataView { amount: amount_view, preburn_address, } - } else if event.type_tag() == &TypeTag::Struct(ToLBRExchangeRateUpdateEvent::struct_tag()) { - let update_event = ToLBRExchangeRateUpdateEvent::try_from(&event)?; - EventDataView::ToLBRExchangeRateUpdate { + } else if event.type_tag() == &TypeTag::Struct(ToXDXExchangeRateUpdateEvent::struct_tag()) { + let update_event = ToXDXExchangeRateUpdateEvent::try_from(&event)?; + EventDataView::ToXDXExchangeRateUpdate { currency_code: update_event.currency_code().to_string(), - new_to_lbr_exchange_rate: update_event.new_to_lbr_exchange_rate(), + new_to_xdx_exchange_rate: update_event.new_to_xdx_exchange_rate(), } } else if event.type_tag() == &TypeTag::Struct(MintEvent::struct_tag()) { let mint_event = MintEvent::try_from(&event)?; @@ -351,7 +351,7 @@ pub struct MetadataView { pub chain_id: u8, pub script_hash_allow_list: Option>, pub module_publishing_allowed: Option, - pub libra_version: Option, + pub diem_version: Option, pub dual_attestation_limit: Option, } @@ -724,7 +724,7 @@ pub struct CurrencyInfoView { pub code: String, pub scaling_factor: u64, pub fractional_part: u64, - pub to_lbr_exchange_rate: f32, + pub to_xdx_exchange_rate: f32, pub mint_events_key: BytesView, pub burn_events_key: BytesView, pub preburn_events_key: BytesView, @@ -738,7 +738,7 @@ impl From<&CurrencyInfoResource> for CurrencyInfoView { code: info.currency_code().to_string(), scaling_factor: info.scaling_factor(), fractional_part: info.fractional_part(), - to_lbr_exchange_rate: info.exchange_rate(), + to_xdx_exchange_rate: info.exchange_rate(), mint_events_key: BytesView::from(info.mint_events().key().as_bytes()), burn_events_key: BytesView::from(info.burn_events().key().as_bytes()), preburn_events_key: BytesView::from(info.preburn_events().key().as_bytes()), diff --git a/language/README.md b/language/README.md index fdf280d6b2..c99f7c5249 100644 --- a/language/README.md +++ b/language/README.md @@ -5,7 +5,7 @@ custom_edit_url: https://github.com/libra/libra/edit/master/language/README.md --- -Move is a new programming language developed to provide a safe and programmable foundation for the Libra Blockchain. +Move is a new programming language developed to provide a safe and programmable foundation for the Diem Blockchain. ## Overview @@ -17,14 +17,14 @@ The Move language directory consists of four main parts: - [move-lang](move-lang/) — contains the Move source language compiler. -- [standard library](stdlib/) — contains the Move code for the core system modules (such as `LibraAccount`), as well as the standard library transaction scripts. +- [standard library](stdlib/) — contains the Move code for the core system modules (such as `DiemAccount`), as well as the standard library transaction scripts. -## How the Move Language Fits Into Libra Core +## How the Move Language Fits Into Diem Core -Libra Core components interact with the language component through the VM. Specifically, the [admission control](../admission_control/) component uses a limited, read-only [subset](../vm_validator/) of the VM functionality to discard invalid transactions before they are admitted to the mempool and consensus. The [execution](../execution/) component uses the VM to execute a block of transactions. +Diem Core components interact with the language component through the VM. Specifically, the [admission control](../admission_control/) component uses a limited, read-only [subset](../vm_validator/) of the VM functionality to discard invalid transactions before they are admitted to the mempool and consensus. The [execution](../execution/) component uses the VM to execute a block of transactions. ## Exploring the Move language - You can find many small Move examples in the [tests](move-lang/tests/functional/) directory. The easiest way to experiment with Move is to create a new test in this directory and run it with `cargo test`. -- More substantial examples can be found in the [standard library](stdlib/modules) directory. The Two particularly notable ones are [LibraAccount](stdlib/modules/libra_account.move), which implements accounts on the Libra blockchain, and [Libra](stdlib/modules/libra.move), which implements generic currency logic used by all of the currencies the Libra payment network supports. -- The transaction scripts supported in the Libra blockchain are also in the standard library directory. Move tests and local instances of the Libra blockchain can execute arbitrary transaction scripts, but the Libra blockchain and testnet are limited to accepting the scripts in this directory. +- More substantial examples can be found in the [standard library](stdlib/modules) directory. The Two particularly notable ones are [DiemAccount](stdlib/modules/diem_account.move), which implements accounts on the Diem blockchain, and [Diem](stdlib/modules/diem.move), which implements generic currency logic used by all of the currencies the Diem payment network supports. +- The transaction scripts supported in the Diem blockchain are also in the standard library directory. Move tests and local instances of the Diem blockchain can execute arbitrary transaction scripts, but the Diem blockchain and testnet are limited to accepting the scripts in this directory. diff --git a/language/benchmarks/Cargo.toml b/language/benchmarks/Cargo.toml index 0bebaf4f2d..b0525c5671 100644 --- a/language/benchmarks/Cargo.toml +++ b/language/benchmarks/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "language-benchmarks" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra language benchmarks" +authors = ["Diem Association "] +description = "Diem language benchmarks" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,16 +16,16 @@ proptest = "0.10.1" bytecode-verifier = { path = "../bytecode-verifier", version = "0.1.0" } language-e2e-tests = { path = "../testing-infra/e2e-tests", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } -libra-state-view = { path = "../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } +diem-state-view = { path = "../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../move-core/types", version = "0.1.0" } move-lang = { path = "../move-lang", version = "0.0.1" } move-vm-runtime = { path = "../move-vm/runtime", version = "0.1.0" } move-vm-types = { path = "../move-vm/types", version = "0.1.0" } vm = { path = "../vm", version = "0.1.0" } -libra-vm = { path = "../libra-vm", version = "0.1.0" } +diem-vm = { path = "../diem-vm", version = "0.1.0" } [[bench]] name = "benchmarks" diff --git a/language/benchmarks/benches/benchmarks.rs b/language/benchmarks/benches/benchmarks.rs index f54ff850ce..bcaee3528a 100644 --- a/language/benchmarks/benches/benchmarks.rs +++ b/language/benchmarks/benches/benchmarks.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use criterion::{criterion_group, criterion_main, Criterion}; diff --git a/language/benchmarks/src/lib.rs b/language/benchmarks/src/lib.rs index 148a2090a0..81d108f9d1 100644 --- a/language/benchmarks/src/lib.rs +++ b/language/benchmarks/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/benchmarks/src/move_vm.rs b/language/benchmarks/src/move_vm.rs index f281378233..81077b8932 100644 --- a/language/benchmarks/src/move_vm.rs +++ b/language/benchmarks/src/move_vm.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use criterion::Criterion; -use libra_state_view::StateView; -use libra_types::{access_path::AccessPath, account_address::AccountAddress}; -use libra_vm::data_cache::StateViewCache; +use diem_state_view::StateView; +use diem_types::{access_path::AccessPath, account_address::AccountAddress}; +use diem_vm::data_cache::StateViewCache; use move_core_types::{ gas_schedule::{GasAlgebra, GasUnits}, identifier::{IdentStr, Identifier}, @@ -29,7 +29,7 @@ pub fn bench(c: &mut Criterion, fun: &str) { // Compile `bench.move` fn compile_module(addr: &[u8; AccountAddress::LENGTH]) -> CompiledModule { - // TODO: this has only been tried with `cargo bench` from `libra/src/language/benchmarks` + // TODO: this has only been tried with `cargo bench` from `diem/src/language/benchmarks` let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); path.push("src/bench.move"); let s = path.to_str().expect("no path specified").to_owned(); diff --git a/language/benchmarks/src/transactions.rs b/language/benchmarks/src/transactions.rs index 2997808e02..0ec8538dcf 100644 --- a/language/benchmarks/src/transactions.rs +++ b/language/benchmarks/src/transactions.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use criterion::{BatchSize, Bencher}; +use diem_proptest_helpers::ValueGenerator; +use diem_types::transaction::SignedTransaction; use language_e2e_tests::{ account_universe::{log_balance_strategy, AUTransactionGen, AccountUniverseGen}, executor::FakeExecutor, gas_costs::TXN_RESERVED, }; -use libra_proptest_helpers::ValueGenerator; -use libra_types::transaction::SignedTransaction; use proptest::{collection::vec, strategy::Strategy}; /// Benchmarking support for transactions. diff --git a/language/borrow-graph/Cargo.toml b/language/borrow-graph/Cargo.toml index 7d47b8e59f..939abe6c5b 100644 --- a/language/borrow-graph/Cargo.toml +++ b/language/borrow-graph/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "borrow-graph" version = "0.0.1" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } mirai-annotations = "1.10.1" diff --git a/language/borrow-graph/src/graph.rs b/language/borrow-graph/src/graph.rs index f4004afbb2..243881a3d3 100644 --- a/language/borrow-graph/src/graph.rs +++ b/language/borrow-graph/src/graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/borrow-graph/src/lib.rs b/language/borrow-graph/src/lib.rs index 1d496e4d9f..92dfac322a 100644 --- a/language/borrow-graph/src/lib.rs +++ b/language/borrow-graph/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/borrow-graph/src/paths.rs b/language/borrow-graph/src/paths.rs index 17263d3279..4e7a693ae9 100644 --- a/language/borrow-graph/src/paths.rs +++ b/language/borrow-graph/src/paths.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub type PathSlice = [Lbl]; diff --git a/language/borrow-graph/src/references.rs b/language/borrow-graph/src/references.rs index 77103eff23..1d74f57002 100644 --- a/language/borrow-graph/src/references.rs +++ b/language/borrow-graph/src/references.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/borrow-graph/src/shared.rs b/language/borrow-graph/src/shared.rs index 9a4c90c69a..e9ad8b3165 100644 --- a/language/borrow-graph/src/shared.rs +++ b/language/borrow-graph/src/shared.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::collections::{BTreeMap, BTreeSet}; diff --git a/language/bytecode-verifier/Cargo.toml b/language/bytecode-verifier/Cargo.toml index 36a926f5e8..781f5bfa3b 100644 --- a/language/bytecode-verifier/Cargo.toml +++ b/language/bytecode-verifier/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "bytecode-verifier" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra bytecode verifier" +authors = ["Diem Association "] +description = "Diem bytecode verifier" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,8 +16,8 @@ petgraph = "0.5.1" borrow-graph = { path = "../borrow-graph", version = "0.0.1" } vm = { path = "../vm", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../move-core/types", version = "0.1.0" } [dev-dependencies] @@ -25,4 +25,4 @@ invalid-mutations = { path = "invalid-mutations", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/bytecode-verifier/bytecode-verifier-tests/Cargo.toml b/language/bytecode-verifier/bytecode-verifier-tests/Cargo.toml index 90cb94df56..3bba6da024 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/Cargo.toml +++ b/language/bytecode-verifier/bytecode-verifier-tests/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "bytecode-verifier-tests" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra bytecode verifier tests" +authors = ["Diem Association "] +description = "Diem bytecode verifier tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,12 +14,12 @@ petgraph = "0.5.1" proptest = "0.10.1" bytecode-verifier = { path = "../", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } invalid-mutations = { path = "../invalid-mutations", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } compiled-stdlib = { path = "../../stdlib/compiled", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0", features = ["fuzzing"] } [features] -fuzzing = ["libra-types/fuzzing", "vm/fuzzing"] +fuzzing = ["diem-types/fuzzing", "vm/fuzzing"] diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/lib.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/lib.rs index 5f4278f72f..4c8be6485d 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/lib.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/bounds_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/bounds_tests.rs index 5d9ae18363..a9fedb1b18 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/bounds_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/bounds_tests.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::{account_address::AccountAddress, vm_status::StatusCode}; use invalid_mutations::bounds::{ ApplyCodeUnitBoundsContext, ApplyOutOfBoundsContext, CodeUnitBoundsMutation, OutOfBoundsMutation, }; -use libra_types::{account_address::AccountAddress, vm_status::StatusCode}; use move_core_types::identifier::Identifier; use proptest::{collection::vec, prelude::*}; use vm::{check_bounds::BoundsChecker, file_format::*, proptest_types::CompiledModuleStrategyGen}; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/code_unit_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/code_unit_tests.rs index bd5a51a543..306a801c43 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/code_unit_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/code_unit_tests.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::CodeUnitVerifier; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::file_format::{self, Bytecode}; #[test] diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/constants_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/constants_tests.rs index 1e91b8ae71..70688825ef 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/constants_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/constants_tests.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::constants; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use proptest::prelude::*; use vm::file_format::{empty_module, CompiledModule, Constant, SignatureToken}; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/control_flow_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/control_flow_tests.rs index a27b042b4c..20072bbfc1 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/control_flow_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/control_flow_tests.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::control_flow; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::ModuleAccess, errors::PartialVMResult, diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/duplication_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/duplication_tests.rs index 2032e857fc..cdc1085a6a 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/duplication_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/duplication_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::DuplicationChecker; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/generic_ops_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/generic_ops_tests.rs index 5c264c5941..b2bf8f9d9e 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/generic_ops_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/generic_ops_tests.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::InstructionConsistency; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use move_core_types::{account_address::AccountAddress, identifier::Identifier}; use vm::file_format::*; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/mod.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/mod.rs index f9ed9085ce..0497ccfdd7 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/mod.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod bounds_tests; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/multi_pass_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/multi_pass_tests.rs index d0c563ece4..a0f181d9ee 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/multi_pass_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/multi_pass_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::{ diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/negative_stack_size_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/negative_stack_size_tests.rs index cba59e01d0..57bba42ddc 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/negative_stack_size_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/negative_stack_size_tests.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::CodeUnitVerifier; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::file_format::{self, Bytecode}; #[test] diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/resources_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/resources_tests.rs index 3fcf0676d0..5a569706e7 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/resources_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/resources_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::ResourceTransitiveChecker; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/signature_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/signature_tests.rs index 080f3304e1..7877d920b7 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/signature_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/signature_tests.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::{verify_module, SignatureChecker}; +use diem_types::account_address::AccountAddress; use invalid_mutations::signature::{FieldRefMutation, SignatureRefMutation}; -use libra_types::account_address::AccountAddress; use move_core_types::identifier::Identifier; use proptest::{collection::vec, prelude::*, sample::Index as PropIndex}; use vm::file_format::{Bytecode::*, CompiledModule, SignatureToken::*, *}; diff --git a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/struct_defs_tests.rs b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/struct_defs_tests.rs index 9fa856ee42..6f97923e8e 100644 --- a/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/struct_defs_tests.rs +++ b/language/bytecode-verifier/bytecode-verifier-tests/src/unit_tests/struct_defs_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::RecursiveStructDefChecker; diff --git a/language/bytecode-verifier/invalid-mutations/Cargo.toml b/language/bytecode-verifier/invalid-mutations/Cargo.toml index 9a5216e32c..dee1a77280 100644 --- a/language/bytecode-verifier/invalid-mutations/Cargo.toml +++ b/language/bytecode-verifier/invalid-mutations/Cargo.toml @@ -2,20 +2,20 @@ name = "invalid-mutations" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra invalid mutations" +authors = ["Diem Association "] +description = "Diem invalid mutations" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false [dependencies] vm = { path = "../../vm", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } proptest = "0.10.1" -libra-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/bytecode-verifier/invalid-mutations/src/bounds.rs b/language/bytecode-verifier/invalid-mutations/src/bounds.rs index 3521033727..65e95709bb 100644 --- a/language/bytecode-verifier/invalid-mutations/src/bounds.rs +++ b/language/bytecode-verifier/invalid-mutations/src/bounds.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_proptest_helpers::pick_slice_idxs; -use libra_types::vm_status::StatusCode; +use diem_proptest_helpers::pick_slice_idxs; +use diem_types::vm_status::StatusCode; use proptest::{ prelude::*, sample::{self, Index as PropIndex}, diff --git a/language/bytecode-verifier/invalid-mutations/src/bounds/code_unit.rs b/language/bytecode-verifier/invalid-mutations/src/bounds/code_unit.rs index 80743744ae..056885426d 100644 --- a/language/bytecode-verifier/invalid-mutations/src/bounds/code_unit.rs +++ b/language/bytecode-verifier/invalid-mutations/src/bounds/code_unit.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_proptest_helpers::pick_slice_idxs; -use libra_types::vm_status::StatusCode; +use diem_proptest_helpers::pick_slice_idxs; +use diem_types::vm_status::StatusCode; use proptest::{prelude::*, sample::Index as PropIndex}; use std::collections::BTreeMap; use vm::{ diff --git a/language/bytecode-verifier/invalid-mutations/src/lib.rs b/language/bytecode-verifier/invalid-mutations/src/lib.rs index 34e286a90b..65c6692b2c 100644 --- a/language/bytecode-verifier/invalid-mutations/src/lib.rs +++ b/language/bytecode-verifier/invalid-mutations/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/bytecode-verifier/invalid-mutations/src/signature.rs b/language/bytecode-verifier/invalid-mutations/src/signature.rs index 65042bdf8a..4af1b6f6a4 100644 --- a/language/bytecode-verifier/invalid-mutations/src/signature.rs +++ b/language/bytecode-verifier/invalid-mutations/src/signature.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proptest::sample::Index as PropIndex; diff --git a/language/bytecode-verifier/src/absint.rs b/language/bytecode-verifier/src/absint.rs index 08cccc283d..fadaedb9ab 100644 --- a/language/bytecode-verifier/src/absint.rs +++ b/language/bytecode-verifier/src/absint.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/bytecode-verifier/src/acquires_list_verifier.rs b/language/bytecode-verifier/src/acquires_list_verifier.rs index 562686a38e..f7debe7973 100644 --- a/language/bytecode-verifier/src/acquires_list_verifier.rs +++ b/language/bytecode-verifier/src/acquires_list_verifier.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying properties about the acquires list on function @@ -10,7 +10,7 @@ //! - No missing resources (any resource acquired must be present) //! - No additional resources (no extraneous resources not actually acquired) -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use std::collections::{BTreeSet, HashMap}; use vm::{ access::ModuleAccess, diff --git a/language/bytecode-verifier/src/binary_views.rs b/language/bytecode-verifier/src/binary_views.rs index dc77883224..360aaeb13d 100644 --- a/language/bytecode-verifier/src/binary_views.rs +++ b/language/bytecode-verifier/src/binary_views.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::control_flow_graph::VMControlFlowGraph; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use move_core_types::{ account_address::AccountAddress, identifier::IdentStr, language_storage::ModuleId, }; diff --git a/language/bytecode-verifier/src/check_duplication.rs b/language/bytecode-verifier/src/check_duplication.rs index 7b7c50ea9c..9455a6ac26 100644 --- a/language/bytecode-verifier/src/check_duplication.rs +++ b/language/bytecode-verifier/src/check_duplication.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying that each vector in a CompiledModule contains @@ -8,7 +8,7 @@ //! - struct and field definitions are consistent //! - the handles in struct and function definitions point to the self module index //! - all struct and function handles pointing to the self module index have a definition -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use move_core_types::{account_address::AccountAddress, identifier::Identifier}; use std::{collections::HashSet, hash::Hash}; use vm::{ diff --git a/language/bytecode-verifier/src/code_unit_verifier.rs b/language/bytecode-verifier/src/code_unit_verifier.rs index 4ed558911a..318efaaa9c 100644 --- a/language/bytecode-verifier/src/code_unit_verifier.rs +++ b/language/bytecode-verifier/src/code_unit_verifier.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements the checker for verifying correctness of function bodies. diff --git a/language/bytecode-verifier/src/constants.rs b/language/bytecode-verifier/src/constants.rs index cd4cdb5715..41c5d98d02 100644 --- a/language/bytecode-verifier/src/constants.rs +++ b/language/bytecode-verifier/src/constants.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying that //! - a constant's type only refers to primitive types //! - a constant's data serializes correctly for that type -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::ModuleAccess, errors::{verification_error, Location, PartialVMResult, VMResult}, diff --git a/language/bytecode-verifier/src/control_flow.rs b/language/bytecode-verifier/src/control_flow.rs index 92ef7fe8ce..3d8fda6d53 100644 --- a/language/bytecode-verifier/src/control_flow.rs +++ b/language/bytecode-verifier/src/control_flow.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifies control flow. The following properties are @@ -6,7 +6,7 @@ //! - All forward jumps do not enter into the middle of a loop //! - All "breaks" (forward, loop-exiting jumps) go to the "end" of the loop //! - All "continues" (back jumps in a loop) are only to the current loop -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use std::{collections::HashSet, convert::TryInto}; use vm::{ errors::{PartialVMError, PartialVMResult}, diff --git a/language/bytecode-verifier/src/control_flow_graph.rs b/language/bytecode-verifier/src/control_flow_graph.rs index fa5cf2bca3..396936500c 100644 --- a/language/bytecode-verifier/src/control_flow_graph.rs +++ b/language/bytecode-verifier/src/control_flow_graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the control-flow graph uses for bytecode verification. diff --git a/language/bytecode-verifier/src/dependencies.rs b/language/bytecode-verifier/src/dependencies.rs index 40f168979c..6b87f4b03c 100644 --- a/language/bytecode-verifier/src/dependencies.rs +++ b/language/bytecode-verifier/src/dependencies.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module contains the public APIs supported by the bytecode verifier. use crate::binary_views::BinaryIndexedView; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use move_core_types::{identifier::Identifier, language_storage::ModuleId}; use std::collections::{BTreeMap, HashMap}; use vm::{ diff --git a/language/bytecode-verifier/src/instantiation_loops.rs b/language/bytecode-verifier/src/instantiation_loops.rs index 23979a905c..071da02974 100644 --- a/language/bytecode-verifier/src/instantiation_loops.rs +++ b/language/bytecode-verifier/src/instantiation_loops.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This implements an algorithm that detects loops during the instantiation of generics. @@ -12,7 +12,7 @@ //! instances. We do reject recursive functions that create a new type upon each call but do //! terminate eventually. -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use petgraph::{ algo::tarjan_scc, graph::{EdgeIndex, NodeIndex}, diff --git a/language/bytecode-verifier/src/instruction_consistency.rs b/language/bytecode-verifier/src/instruction_consistency.rs index f810f719f9..f1390f407d 100644 --- a/language/bytecode-verifier/src/instruction_consistency.rs +++ b/language/bytecode-verifier/src/instruction_consistency.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the transfer functions for verifying type safety of a procedure body. //! It does not utilize control flow, but does check each block independently use crate::binary_views::BinaryIndexedView; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::ModuleAccess, errors::{Location, PartialVMError, PartialVMResult, VMResult}, diff --git a/language/bytecode-verifier/src/lib.rs b/language/bytecode-verifier/src/lib.rs index 5a8cfdd081..fafd59bc94 100644 --- a/language/bytecode-verifier/src/lib.rs +++ b/language/bytecode-verifier/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/bytecode-verifier/src/locals_safety/abstract_state.rs b/language/bytecode-verifier/src/locals_safety/abstract_state.rs index 485e7b54b1..08105d3da9 100644 --- a/language/bytecode-verifier/src/locals_safety/abstract_state.rs +++ b/language/bytecode-verifier/src/locals_safety/abstract_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the abstract state for the local safety analysis. diff --git a/language/bytecode-verifier/src/locals_safety/mod.rs b/language/bytecode-verifier/src/locals_safety/mod.rs index c74d15f3a6..75c8733cec 100644 --- a/language/bytecode-verifier/src/locals_safety/mod.rs +++ b/language/bytecode-verifier/src/locals_safety/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the transfer functions for verifying local safety of a @@ -13,7 +13,7 @@ use crate::{ binary_views::{BinaryIndexedView, FunctionView}, }; use abstract_state::{AbstractState, LocalState}; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use mirai_annotations::*; use vm::{ errors::{PartialVMError, PartialVMResult}, diff --git a/language/bytecode-verifier/src/reference_safety/abstract_state.rs b/language/bytecode-verifier/src/reference_safety/abstract_state.rs index 5176611d71..92b4bc167e 100644 --- a/language/bytecode-verifier/src/reference_safety/abstract_state.rs +++ b/language/bytecode-verifier/src/reference_safety/abstract_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the abstract state for the type and memory safety analysis. @@ -7,7 +7,7 @@ use crate::{ binary_views::FunctionView, }; use borrow_graph::references::RefID; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use mirai_annotations::{checked_postcondition, checked_precondition, checked_verify}; use std::collections::{BTreeMap, BTreeSet}; use vm::{ diff --git a/language/bytecode-verifier/src/reference_safety/mod.rs b/language/bytecode-verifier/src/reference_safety/mod.rs index 60fa33b822..b052ac6fb0 100644 --- a/language/bytecode-verifier/src/reference_safety/mod.rs +++ b/language/bytecode-verifier/src/reference_safety/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the transfer functions for verifying reference safety of a procedure body. diff --git a/language/bytecode-verifier/src/resources.rs b/language/bytecode-verifier/src/resources.rs index f9d64388bb..1ec676d5a5 100644 --- a/language/bytecode-verifier/src/resources.rs +++ b/language/bytecode-verifier/src/resources.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying that a non-resource struct does not //! have resource fields inside it. -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::ModuleAccess, errors::{verification_error, Location, PartialVMResult, VMResult}, diff --git a/language/bytecode-verifier/src/signature.rs b/language/bytecode-verifier/src/signature.rs index 65b664459a..5439e03145 100644 --- a/language/bytecode-verifier/src/signature.rs +++ b/language/bytecode-verifier/src/signature.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying signature tokens used in types of function //! parameters, locals, and fields of structs are well-formed. References can only occur at the //! top-level in all tokens. Additionally, references cannot occur at all in field types. use crate::binary_views::BinaryIndexedView; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::{ModuleAccess, ScriptAccess}, errors::{Location, PartialVMError, PartialVMResult, VMResult}, diff --git a/language/bytecode-verifier/src/stack_usage_verifier.rs b/language/bytecode-verifier/src/stack_usage_verifier.rs index df03c2a67b..e1a80497b8 100644 --- a/language/bytecode-verifier/src/stack_usage_verifier.rs +++ b/language/bytecode-verifier/src/stack_usage_verifier.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a checker for verifying that basic blocks in the bytecode instruction @@ -12,7 +12,7 @@ use crate::{ binary_views::{BinaryIndexedView, FunctionView}, control_flow_graph::{BlockId, ControlFlowGraph}, }; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ errors::{PartialVMError, PartialVMResult}, file_format::{Bytecode, CodeUnit, FunctionDefinitionIndex, Signature, StructFieldInformation}, diff --git a/language/bytecode-verifier/src/struct_defs.rs b/language/bytecode-verifier/src/struct_defs.rs index ef213caafa..53f78022fe 100644 --- a/language/bytecode-verifier/src/struct_defs.rs +++ b/language/bytecode-verifier/src/struct_defs.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides a checker for verifying that struct definitions in a module are not //! recursive. Since the module dependency graph is acylic by construction, applying this checker to //! each module in isolation guarantees that there is no structural recursion globally. -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use petgraph::{algo::toposort, graphmap::DiGraphMap}; use std::collections::{BTreeMap, BTreeSet}; use vm::{ diff --git a/language/bytecode-verifier/src/type_safety.rs b/language/bytecode-verifier/src/type_safety.rs index d5b75fc0cc..e0177a5c5b 100644 --- a/language/bytecode-verifier/src/type_safety.rs +++ b/language/bytecode-verifier/src/type_safety.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the transfer functions for verifying type safety of a procedure body. @@ -8,7 +8,7 @@ use crate::{ binary_views::{BinaryIndexedView, FunctionView}, control_flow_graph::ControlFlowGraph, }; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use mirai_annotations::*; use vm::{ errors::{PartialVMError, PartialVMResult}, diff --git a/language/bytecode-verifier/src/verifier.rs b/language/bytecode-verifier/src/verifier.rs index 3b1f3d635f..32b771cd4b 100644 --- a/language/bytecode-verifier/src/verifier.rs +++ b/language/bytecode-verifier/src/verifier.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module contains the public APIs supported by the bytecode verifier. @@ -8,7 +8,7 @@ use crate::{ resources::ResourceTransitiveChecker, signature::SignatureChecker, struct_defs::RecursiveStructDefChecker, }; -use libra_types::vm_status::StatusCode; +use diem_types::vm_status::StatusCode; use vm::{ access::ScriptAccess, errors::{Location, PartialVMError, PartialVMResult, VMResult}, diff --git a/language/compiler/Cargo.toml b/language/compiler/Cargo.toml index f1acc398a5..29722aea8e 100644 --- a/language/compiler/Cargo.toml +++ b/language/compiler/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "compiler" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra compiler" +authors = ["Diem Association "] +description = "Diem compiler" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,8 +15,8 @@ bytecode-verifier = { path = "../bytecode-verifier", version = "0.1.0" } ir-to-bytecode = { path = "ir-to-bytecode", version = "0.1.0" } bytecode-source-map = { path = "bytecode-source-map", version = "0.1.0" } compiled-stdlib = { path = "../stdlib/compiled", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-ir-types = { path = "../move-ir/types", version = "0.1.0" } vm = { path = "../vm", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } @@ -25,4 +25,4 @@ serde_json = "1.0.60" [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/compiler/README.md b/language/compiler/README.md index e2b8febbcb..abfa2272d2 100644 --- a/language/compiler/README.md +++ b/language/compiler/README.md @@ -55,7 +55,7 @@ ARGS: > cargo build --bin compiler * This will build the compiler + verifier binary. -* The binary can be found at `libra/target/debug/compiler`. +* The binary can be found at `diem/target/debug/compiler`. * Alternatively, the binary can be run directly with `cargo run -p compiler`. To compile and verify `foo.mvir`, which contains a Move IR module: diff --git a/language/compiler/bytecode-source-map/Cargo.toml b/language/compiler/bytecode-source-map/Cargo.toml index 19220aa6f7..d4c42390e9 100644 --- a/language/compiler/bytecode-source-map/Cargo.toml +++ b/language/compiler/bytecode-source-map/Cargo.toml @@ -1,15 +1,15 @@ [package] name = "bytecode-source-map" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] license = "Apache-2.0" publish = false edition = "2018" [dependencies] anyhow = "1.0.34" -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } @@ -20,4 +20,4 @@ serde = { version = "1.0.117", default-features = false } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/compiler/bytecode-source-map/src/lib.rs b/language/compiler/bytecode-source-map/src/lib.rs index 0065f835cd..57d6c4c8a3 100644 --- a/language/compiler/bytecode-source-map/src/lib.rs +++ b/language/compiler/bytecode-source-map/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/compiler/bytecode-source-map/src/mapping.rs b/language/compiler/bytecode-source-map/src/mapping.rs index c97f5bb78c..4a5023c168 100644 --- a/language/compiler/bytecode-source-map/src/mapping.rs +++ b/language/compiler/bytecode-source-map/src/mapping.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{marking::MarkedSourceMapping, source_map::SourceMap}; diff --git a/language/compiler/bytecode-source-map/src/marking.rs b/language/compiler/bytecode-source-map/src/marking.rs index 96202ed6d5..b3e0bd49b7 100644 --- a/language/compiler/bytecode-source-map/src/marking.rs +++ b/language/compiler/bytecode-source-map/src/marking.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::collections::{BTreeMap, HashMap}; diff --git a/language/compiler/bytecode-source-map/src/source_map.rs b/language/compiler/bytecode-source-map/src/source_map.rs index b65adbef66..8bd3ad5db5 100644 --- a/language/compiler/bytecode-source-map/src/source_map.rs +++ b/language/compiler/bytecode-source-map/src/source_map.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::Identifier; use move_ir_types::ast::{ConstantName, ModuleName, NopLabel, QualifiedModuleIdent}; use serde::{Deserialize, Serialize}; diff --git a/language/compiler/bytecode-source-map/src/utils.rs b/language/compiler/bytecode-source-map/src/utils.rs index fde19ca3a9..8389c212c5 100644 --- a/language/compiler/bytecode-source-map/src/utils.rs +++ b/language/compiler/bytecode-source-map/src/utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{mapping::SourceMapping, source_map::SourceMap}; diff --git a/language/compiler/ir-to-bytecode/Cargo.toml b/language/compiler/ir-to-bytecode/Cargo.toml index 73b0834fca..b6db99ea96 100644 --- a/language/compiler/ir-to-bytecode/Cargo.toml +++ b/language/compiler/ir-to-bytecode/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "ir-to-bytecode" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra ir to bytecode" +authors = ["Diem Association "] +description = "Diem ir to bytecode" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,8 +12,8 @@ edition = "2018" [dependencies] anyhow = "1.0.34" ir-to-bytecode-syntax = { path = "syntax", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } @@ -25,4 +25,4 @@ thiserror = "1.0.22" [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/compiler/ir-to-bytecode/src/compiler.rs b/language/compiler/ir-to-bytecode/src/compiler.rs index 91fc3fdb69..2a36a54ae9 100644 --- a/language/compiler/ir-to-bytecode/src/compiler.rs +++ b/language/compiler/ir-to-bytecode/src/compiler.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,7 +7,7 @@ use crate::{ }; use anyhow::{bail, format_err, Result}; use bytecode_source_map::source_map::SourceMap; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::value::{MoveTypeLayout, MoveValue}; use move_ir_types::{ ast::{self, Bytecode as IRBytecode, Bytecode_ as IRBytecode_, *}, diff --git a/language/compiler/ir-to-bytecode/src/context.rs b/language/compiler/ir-to-bytecode/src/context.rs index 145e1e2e27..9d34d65dd2 100644 --- a/language/compiler/ir-to-bytecode/src/context.rs +++ b/language/compiler/ir-to-bytecode/src/context.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, format_err, Result}; use bytecode_source_map::source_map::SourceMap; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::{IdentStr, Identifier}; use move_ir_types::{ ast::{ diff --git a/language/compiler/ir-to-bytecode/src/errors.rs b/language/compiler/ir-to-bytecode/src/errors.rs index 1a1c636f95..6528389163 100644 --- a/language/compiler/ir-to-bytecode/src/errors.rs +++ b/language/compiler/ir-to-bytecode/src/errors.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use thiserror::Error; diff --git a/language/compiler/ir-to-bytecode/src/lib.rs b/language/compiler/ir-to-bytecode/src/lib.rs index 2a0709d864..1cc2b0bd45 100644 --- a/language/compiler/ir-to-bytecode/src/lib.rs +++ b/language/compiler/ir-to-bytecode/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/compiler/ir-to-bytecode/src/parser.rs b/language/compiler/ir-to-bytecode/src/parser.rs index 992c4bdaf2..a37e404c5e 100644 --- a/language/compiler/ir-to-bytecode/src/parser.rs +++ b/language/compiler/ir-to-bytecode/src/parser.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; @@ -11,8 +11,8 @@ use codespan_reporting::{ Config, }, }; +use diem_types::account_address::AccountAddress; use ir_to_bytecode_syntax::syntax::{self, ParseError}; -use libra_types::account_address::AccountAddress; use move_ir_types::{ast, location::*}; /// Determine if a character is an allowed eye-visible (printable) character. diff --git a/language/compiler/ir-to-bytecode/syntax/Cargo.toml b/language/compiler/ir-to-bytecode/syntax/Cargo.toml index 25d44fa947..7c9fda0ac1 100644 --- a/language/compiler/ir-to-bytecode/syntax/Cargo.toml +++ b/language/compiler/ir-to-bytecode/syntax/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "ir-to-bytecode-syntax" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra ir to bytecode syntax" +authors = ["Diem Association "] +description = "Diem ir to bytecode syntax" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,9 +15,9 @@ codespan = { version = "0.8.0", features = ["serialization"] } hex = "0.4.2" move-ir-types = { path = "../../../move-ir/types", version = "0.1.0" } move-core-types = { path = "../../../move-core/types", version = "0.1.0" } -libra-types = { path = "../../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../../common/workspace-hack", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/compiler/ir-to-bytecode/syntax/src/lexer.rs b/language/compiler/ir-to-bytecode/syntax/src/lexer.rs index 5418395218..74b2fbe69c 100644 --- a/language/compiler/ir-to-bytecode/syntax/src/lexer.rs +++ b/language/compiler/ir-to-bytecode/syntax/src/lexer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::syntax::ParseError; diff --git a/language/compiler/ir-to-bytecode/syntax/src/lib.rs b/language/compiler/ir-to-bytecode/syntax/src/lib.rs index 97ef2a3685..67fa0f0b2f 100644 --- a/language/compiler/ir-to-bytecode/syntax/src/lib.rs +++ b/language/compiler/ir-to-bytecode/syntax/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/compiler/ir-to-bytecode/syntax/src/syntax.rs b/language/compiler/ir-to-bytecode/syntax/src/syntax.rs index 23a7b7193d..51fd5d8341 100644 --- a/language/compiler/ir-to-bytecode/syntax/src/syntax.rs +++ b/language/compiler/ir-to-bytecode/syntax/src/syntax.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{Context, Error}; @@ -6,7 +6,7 @@ use codespan::{ByteIndex, Span}; use std::{fmt, str::FromStr}; use crate::lexer::*; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::{IdentStr, Identifier}; use move_ir_types::{ast::*, location::*, spec_language_ast::*}; diff --git a/language/compiler/src/lib.rs b/language/compiler/src/lib.rs index 93304bbc76..915465b19e 100644 --- a/language/compiler/src/lib.rs +++ b/language/compiler/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,11 +11,11 @@ mod unit_tests; use anyhow::Result; use bytecode_source_map::source_map::SourceMap; use compiled_stdlib::{stdlib_modules, StdLibOptions}; +use diem_types::{account_address::AccountAddress, account_config}; use ir_to_bytecode::{ compiler::{compile_module, compile_script}, parser::{parse_module, parse_script}, }; -use libra_types::{account_address::AccountAddress, account_config}; use move_ir_types::location::Loc; use std::mem; use vm::file_format::{CompiledModule, CompiledScript}; diff --git a/language/compiler/src/main.rs b/language/compiler/src/main.rs index 83b2816eca..4eaa50cd8d 100644 --- a/language/compiler/src/main.rs +++ b/language/compiler/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -7,8 +7,8 @@ use anyhow::Context; use bytecode_verifier::{verify_module, verify_script, DependencyChecker}; use compiled_stdlib::{stdlib_modules, StdLibOptions}; use compiler::{util, Compiler}; +use diem_types::{access_path::AccessPath, account_address::AccountAddress, account_config}; use ir_to_bytecode::parser::{parse_module, parse_script}; -use libra_types::{access_path::AccessPath, account_address::AccountAddress, account_config}; use std::{ convert::TryFrom, fs, diff --git a/language/compiler/src/unit_tests/branch_tests.rs b/language/compiler/src/unit_tests/branch_tests.rs index 2cd6510787..12ca550b52 100644 --- a/language/compiler/src/unit_tests/branch_tests.rs +++ b/language/compiler/src/unit_tests/branch_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::compile_script_string; diff --git a/language/compiler/src/unit_tests/cfg_tests.rs b/language/compiler/src/unit_tests/cfg_tests.rs index 1924cf75b9..141e666c83 100644 --- a/language/compiler/src/unit_tests/cfg_tests.rs +++ b/language/compiler/src/unit_tests/cfg_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::compile_script_string; diff --git a/language/compiler/src/unit_tests/expression_tests.rs b/language/compiler/src/unit_tests/expression_tests.rs index 8a229fcf85..28036389e7 100644 --- a/language/compiler/src/unit_tests/expression_tests.rs +++ b/language/compiler/src/unit_tests/expression_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::{ diff --git a/language/compiler/src/unit_tests/function_tests.rs b/language/compiler/src/unit_tests/function_tests.rs index 3c0a435547..c05d261549 100644 --- a/language/compiler/src/unit_tests/function_tests.rs +++ b/language/compiler/src/unit_tests/function_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::compile_module_string; diff --git a/language/compiler/src/unit_tests/import_tests.rs b/language/compiler/src/unit_tests/import_tests.rs index 8f1910f078..208120eb58 100644 --- a/language/compiler/src/unit_tests/import_tests.rs +++ b/language/compiler/src/unit_tests/import_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::{ @@ -9,7 +9,7 @@ use crate::unit_tests::testutils::{ fn compile_script_with_imports() { let code = String::from( " - import 0x1.LibraCoin; + import 0x1.DiemCoin; main() { let x: u64; @@ -29,7 +29,7 @@ fn compile_module_with_imports() { let code = String::from( " module Foobar { - import 0x1.LibraCoin; + import 0x1.DiemCoin; resource FooCoin { value: u64 } diff --git a/language/compiler/src/unit_tests/mod.rs b/language/compiler/src/unit_tests/mod.rs index fa2f6965a7..1fd946fd32 100644 --- a/language/compiler/src/unit_tests/mod.rs +++ b/language/compiler/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Needs to be at the top to allow macros defined in here to be used in tests. diff --git a/language/compiler/src/unit_tests/serializer_tests.rs b/language/compiler/src/unit_tests/serializer_tests.rs index 58b5cbf7a6..5e03b72516 100644 --- a/language/compiler/src/unit_tests/serializer_tests.rs +++ b/language/compiler/src/unit_tests/serializer_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::unit_tests::testutils::compile_script_string; diff --git a/language/compiler/src/unit_tests/testutils.rs b/language/compiler/src/unit_tests/testutils.rs index b1f1d7eb78..b01426bb77 100644 --- a/language/compiler/src/unit_tests/testutils.rs +++ b/language/compiler/src/unit_tests/testutils.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use bytecode_verifier::{verify_module, verify_script}; use compiled_stdlib::{stdlib_modules, StdLibOptions}; +use diem_types::account_address::AccountAddress; use ir_to_bytecode::{ compiler::{compile_module, compile_script}, parser::{parse_module, parse_script}, }; -use libra_types::account_address::AccountAddress; use vm::{ access::ScriptAccess, errors::{Location, VMError}, diff --git a/language/compiler/src/util.rs b/language/compiler/src/util.rs index 3af095cc60..d35f47ee69 100644 --- a/language/compiler/src/util.rs +++ b/language/compiler/src/util.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; use bytecode_source_map::source_map::SourceMap; +use diem_types::account_address::AccountAddress; use ir_to_bytecode::{compiler::compile_module, parser::parse_module}; -use libra_types::account_address::AccountAddress; use move_ir_types::location::Loc; use std::{fs, path::Path}; use vm::{access::ModuleAccess, file_format::CompiledModule}; diff --git a/language/libra-tools/libra-events-fetcher/Cargo.toml b/language/diem-tools/diem-events-fetcher/Cargo.toml similarity index 62% rename from language/libra-tools/libra-events-fetcher/Cargo.toml rename to language/diem-tools/diem-events-fetcher/Cargo.toml index daa91416c2..fd82dd046f 100644 --- a/language/libra-tools/libra-events-fetcher/Cargo.toml +++ b/language/diem-tools/diem-events-fetcher/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-events-fetcher" +name = "diem-events-fetcher" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Generating writesets used for incident management" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,7 +19,7 @@ structopt = "0.3.21" futures = "0.3.8" tokio = { version = "0.2.22", features = ["full"] } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-json-rpc-client = { path = "../../../client/json-rpc", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-json-rpc-client = { path = "../../../client/json-rpc", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/libra-tools/libra-events-fetcher/src/lib.rs b/language/diem-tools/diem-events-fetcher/src/lib.rs similarity index 92% rename from language/libra-tools/libra-events-fetcher/src/lib.rs rename to language/diem-tools/diem-events-fetcher/src/lib.rs index a036f203ab..d4f962eb1c 100644 --- a/language/libra-tools/libra-events-fetcher/src/lib.rs +++ b/language/diem-tools/diem-events-fetcher/src/lib.rs @@ -1,23 +1,23 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use futures::future::join_all; -use libra_json_rpc_client::async_client::{types as jsonrpc, Client, Retry}; -use libra_types::{ +use diem_json_rpc_client::async_client::{types as jsonrpc, Client, Retry}; +use diem_types::{ account_address::AccountAddress, account_state::AccountState, account_state_blob::AccountStateBlob, event::{EventHandle, EventKey}, }; +use futures::future::join_all; use reqwest::Url; use std::convert::TryFrom; const BATCH_SIZE: u64 = 500; -pub struct LibraEventsFetcher(Client); +pub struct DiemEventsFetcher(Client); -impl LibraEventsFetcher { +impl DiemEventsFetcher { pub fn new(url: &str) -> Result { let url = Url::parse(url)?; Ok(Self(Client::from_url(url, Retry::default())?)) diff --git a/language/libra-tools/libra-events-fetcher/src/main.rs b/language/diem-tools/diem-events-fetcher/src/main.rs similarity index 85% rename from language/libra-tools/libra-events-fetcher/src/main.rs rename to language/diem-tools/diem-events-fetcher/src/main.rs index 8d402aa250..120a287d40 100644 --- a/language/libra-tools/libra-events-fetcher/src/main.rs +++ b/language/diem-tools/diem-events-fetcher/src/main.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_events_fetcher::LibraEventsFetcher; -use libra_types::account_address::AccountAddress; +use diem_events_fetcher::DiemEventsFetcher; +use diem_types::account_address::AccountAddress; use structopt::StructOpt; #[derive(Debug, StructOpt)] @@ -24,7 +24,7 @@ enum Command { #[tokio::main] async fn main() -> Result<()> { let opt = Opt::from_args(); - let events_fetcher = LibraEventsFetcher::new(opt.url.as_str())?; + let events_fetcher = DiemEventsFetcher::new(opt.url.as_str())?; match opt.cmd { Command::GetPaymentEvents { accounts } => { for acc in accounts { diff --git a/language/diem-tools/diem-validator-interface/Cargo.toml b/language/diem-tools/diem-validator-interface/Cargo.toml new file mode 100644 index 0000000000..dec0559557 --- /dev/null +++ b/language/diem-tools/diem-validator-interface/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "diem-validator-interface" +version = "0.1.0" +authors = ["Diem Association "] +description = "Defines interfaces between the diem nodes and local move infrastructure" +repository = "https://github.com/libra/libra" +homepage = "https://diem.com" +license = "Apache-2.0" +publish = false +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +reqwest = { version = "0.10.9", features = ["blocking", "json"] } +anyhow = "1.0.34" +diem-config = { path = "../../../config", version = "0.1.0" } +diem-json-rpc-client = { path = "../../../client/json-rpc", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diemdb = { path = "../../../storage/diemdb", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +storage-interface = { path = "../../../storage/storage-interface", version = "0.1.0" } +scratchpad = { path = "../../../storage/scratchpad", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/libra-tools/libra-validator-interface/src/json_rpc_interface.rs b/language/diem-tools/diem-validator-interface/src/json_rpc_interface.rs similarity index 92% rename from language/libra-tools/libra-validator-interface/src/json_rpc_interface.rs rename to language/diem-tools/diem-validator-interface/src/json_rpc_interface.rs index c53b4223bb..d0aefe1a35 100644 --- a/language/libra-tools/libra-validator-interface/src/json_rpc_interface.rs +++ b/language/diem-tools/diem-validator-interface/src/json_rpc_interface.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::LibraValidatorInterface; +use crate::DiemValidatorInterface; use anyhow::{bail, Result}; -use libra_json_rpc_client::{JsonRpcBatch, JsonRpcClient, JsonRpcResponse}; -use libra_types::{ +use diem_json_rpc_client::{JsonRpcBatch, JsonRpcClient, JsonRpcResponse}; +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, transaction::{Transaction, Version}, @@ -32,7 +32,7 @@ impl JsonRpcDebuggerInterface { } } -impl LibraValidatorInterface for JsonRpcDebuggerInterface { +impl DiemValidatorInterface for JsonRpcDebuggerInterface { fn get_account_state_by_version( &self, account: AccountAddress, diff --git a/language/libra-tools/libra-validator-interface/src/lib.rs b/language/diem-tools/diem-validator-interface/src/lib.rs similarity index 87% rename from language/libra-tools/libra-validator-interface/src/lib.rs rename to language/diem-tools/diem-validator-interface/src/lib.rs index 00445ff29b..213a0381d2 100644 --- a/language/libra-tools/libra-validator-interface/src/lib.rs +++ b/language/diem-tools/diem-validator-interface/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod json_rpc_interface; @@ -8,8 +8,8 @@ pub use crate::storage_interface::DBDebuggerInterface; pub use json_rpc_interface::JsonRpcDebuggerInterface; use anyhow::{bail, Result}; -use libra_state_view::StateView; -use libra_types::{ +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_state::AccountState, @@ -18,7 +18,7 @@ use libra_types::{ }; use std::convert::TryFrom; -pub trait LibraValidatorInterface { +pub trait DiemValidatorInterface { fn get_account_state_by_version( &self, account: AccountAddress, @@ -34,12 +34,12 @@ pub trait LibraValidatorInterface { } pub struct DebuggerStateView<'a> { - db: &'a dyn LibraValidatorInterface, + db: &'a dyn DiemValidatorInterface, version: Version, } impl<'a> DebuggerStateView<'a> { - pub fn new(db: &'a dyn LibraValidatorInterface, version: Version) -> Self { + pub fn new(db: &'a dyn DiemValidatorInterface, version: Version) -> Self { Self { db, version } } } diff --git a/language/libra-tools/libra-validator-interface/src/storage_interface.rs b/language/diem-tools/diem-validator-interface/src/storage_interface.rs similarity index 86% rename from language/libra-tools/libra-validator-interface/src/storage_interface.rs rename to language/diem-tools/diem-validator-interface/src/storage_interface.rs index f36d9352ca..78a3e36483 100644 --- a/language/libra-tools/libra-validator-interface/src/storage_interface.rs +++ b/language/diem-tools/diem-validator-interface/src/storage_interface.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::LibraValidatorInterface; +use crate::DiemValidatorInterface; use anyhow::{anyhow, Result}; -use libra_config::config::RocksdbConfig; -use libra_types::{ +use diem_config::config::RocksdbConfig; +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, transaction::{Transaction, Version}, }; -use libradb::LibraDB; +use diemdb::DiemDB; use std::{path::Path, sync::Arc}; use storage_interface::DbReader; @@ -17,7 +17,7 @@ pub struct DBDebuggerInterface(Arc); impl DBDebuggerInterface { pub fn open + Clone>(db_root_path: P) -> Result { - Ok(Self(Arc::new(LibraDB::open( + Ok(Self(Arc::new(DiemDB::open( db_root_path, true, None, @@ -26,7 +26,7 @@ impl DBDebuggerInterface { } } -impl LibraValidatorInterface for DBDebuggerInterface { +impl DiemValidatorInterface for DBDebuggerInterface { fn get_account_state_by_version( &self, account: AccountAddress, diff --git a/language/libra-tools/transaction-replay/Cargo.toml b/language/diem-tools/transaction-replay/Cargo.toml similarity index 64% rename from language/libra-tools/transaction-replay/Cargo.toml rename to language/diem-tools/transaction-replay/Cargo.toml index 169e4ce100..a63c87598e 100644 --- a/language/libra-tools/transaction-replay/Cargo.toml +++ b/language/diem-tools/transaction-replay/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-transaction-replay" +name = "diem-transaction-replay" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Replay transactions stored on chain" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,12 +12,12 @@ edition = "2018" [dependencies] anyhow = "1.0.34" structopt = "0.3.21" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-validator-interface = { path = "../libra-validator-interface", version = "0.1.0" } -libradb = { path = "../../../storage/libradb", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-validator-interface = { path = "../diem-validator-interface", version = "0.1.0" } +diemdb = { path = "../../../storage/diemdb", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0"} move-vm-types = { path = "../../move-vm/types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } diff --git a/language/libra-tools/transaction-replay/examples/account_exists.move b/language/diem-tools/transaction-replay/examples/account_exists.move similarity index 69% rename from language/libra-tools/transaction-replay/examples/account_exists.move rename to language/diem-tools/transaction-replay/examples/account_exists.move index bbd222fc46..5598ba78d2 100644 --- a/language/libra-tools/transaction-replay/examples/account_exists.move +++ b/language/diem-tools/transaction-replay/examples/account_exists.move @@ -1,11 +1,11 @@ script { // Usage: bisect-transaction // Find the first version where the account is created. -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::Signer; -fun main(_lr_account: &signer, sender: &signer) { +fun main(_dr_account: &signer, sender: &signer) { let addr = Signer::address_of(sender); - if(LibraAccount::exists_at(addr)) { + if(DiemAccount::exists_at(addr)) { abort 1 }; return diff --git a/language/libra-tools/transaction-replay/examples/time_exceeds.move b/language/diem-tools/transaction-replay/examples/time_exceeds.move similarity index 59% rename from language/libra-tools/transaction-replay/examples/time_exceeds.move rename to language/diem-tools/transaction-replay/examples/time_exceeds.move index c4c98c5b33..31226a1c36 100644 --- a/language/libra-tools/transaction-replay/examples/time_exceeds.move +++ b/language/diem-tools/transaction-replay/examples/time_exceeds.move @@ -1,10 +1,10 @@ script { // Usage: bisect-transaction // Find the first version where the time exceeds X. -use 0x1::LibraTimestamp; -fun main(_lr_account: &signer, _sender: &signer) { +use 0x1::DiemTimestamp; +fun main(_dr_account: &signer, _sender: &signer) { let time_to_query = 1598390547040813; - assert(LibraTimestamp::now_microseconds() < time_to_query, 1); + assert(DiemTimestamp::now_microseconds() < time_to_query, 1); return } } diff --git a/language/libra-tools/transaction-replay/src/lib.rs b/language/diem-tools/transaction-replay/src/lib.rs similarity index 92% rename from language/libra-tools/transaction-replay/src/lib.rs rename to language/diem-tools/transaction-replay/src/lib.rs index 4a906c578b..14fd71ee0f 100644 --- a/language/libra-tools/transaction-replay/src/lib.rs +++ b/language/diem-tools/transaction-replay/src/lib.rs @@ -1,19 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, format_err, Result}; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, - account_config::libra_root_address, + account_config::diem_root_address, account_state::AccountState, transaction::{ChangeSet, Transaction, TransactionOutput, Version}, }; -use libra_validator_interface::{ - DBDebuggerInterface, DebuggerStateView, JsonRpcDebuggerInterface, LibraValidatorInterface, -}; -use libra_vm::{ - data_cache::RemoteStorage, txn_effects_to_writeset_and_events, LibraVM, VMExecutor, +use diem_validator_interface::{ + DBDebuggerInterface, DebuggerStateView, DiemValidatorInterface, JsonRpcDebuggerInterface, }; +use diem_vm::{data_cache::RemoteStorage, txn_effects_to_writeset_and_events, DiemVM, VMExecutor}; use move_core_types::gas_schedule::{GasAlgebra, GasUnits}; use move_lang::{compiled_unit::CompiledUnit, move_compile, shared::Address}; use move_vm_runtime::{logging::NoContextLog, move_vm::MoveVM, session::Session}; @@ -26,12 +24,12 @@ use vm::errors::VMResult; #[cfg(test)] mod unit_tests; -pub struct LibraDebugger { - debugger: Box, +pub struct DiemDebugger { + debugger: Box, } -impl LibraDebugger { - pub fn new(debugger: Box) -> Self { +impl DiemDebugger { + pub fn new(debugger: Box) -> Self { Self { debugger } } @@ -53,7 +51,7 @@ impl LibraDebugger { txns: Vec, ) -> Result> { let state_view = DebuggerStateView::new(&*self.debugger, version); - LibraVM::execute_block(txns, &state_view) + DiemVM::execute_block(txns, &state_view) .map_err(|err| format_err!("Unexpected VM Error: {:?}", err)) } @@ -177,7 +175,7 @@ impl LibraDebugger { predicate.clone(), vec![], vec![], - vec![libra_root_address(), sender], + vec![diem_root_address(), sender], &mut cost_strategy, &log_context, ) @@ -219,7 +217,7 @@ impl LibraDebugger { } fn is_reconfiguration(vm_output: &TransactionOutput) -> bool { - let new_epoch_event_key = libra_types::on_chain_config::new_epoch_event_key(); + let new_epoch_event_key = diem_types::on_chain_config::new_epoch_event_key(); vm_output .events() .iter() diff --git a/language/libra-tools/transaction-replay/src/main.rs b/language/diem-tools/transaction-replay/src/main.rs similarity index 94% rename from language/libra-tools/transaction-replay/src/main.rs rename to language/diem-tools/transaction-replay/src/main.rs index 9333813714..7854438cb8 100644 --- a/language/libra-tools/transaction-replay/src/main.rs +++ b/language/diem-tools/transaction-replay/src/main.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; +use diem_transaction_replay::DiemDebugger; +use diem_types::{account_address::AccountAddress, transaction::Version}; use difference::Changeset; -use libra_transaction_replay::LibraDebugger; -use libra_types::{account_address::AccountAddress, transaction::Version}; use move_vm_test_utils::ChangeSet; use std::path::PathBuf; use stdlib::build_stdlib; @@ -12,7 +12,7 @@ use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { - /// Path to the local LibraDB file + /// Path to the local DiemDB file #[structopt(long, parse(from_os_str))] db: Option, /// Full URL address to connect to - should include port number, if applicable @@ -63,9 +63,9 @@ enum Command { fn main() -> Result<()> { let opt = Opt::from_args(); let debugger = if let Some(p) = opt.db { - LibraDebugger::db(p)? + DiemDebugger::db(p)? } else if let Some(url) = opt.url { - LibraDebugger::json_rpc(url.as_str())? + DiemDebugger::json_rpc(url.as_str())? } else { panic!("No debugger attached") }; diff --git a/language/libra-tools/transaction-replay/src/unit_tests/bisection_tests.rs b/language/diem-tools/transaction-replay/src/unit_tests/bisection_tests.rs similarity index 89% rename from language/libra-tools/transaction-replay/src/unit_tests/bisection_tests.rs rename to language/diem-tools/transaction-replay/src/unit_tests/bisection_tests.rs index 7afd81e0ad..51148ae141 100644 --- a/language/libra-tools/transaction-replay/src/unit_tests/bisection_tests.rs +++ b/language/diem-tools/transaction-replay/src/unit_tests/bisection_tests.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{unit_tests::TestInterface, LibraDebugger}; +use crate::{unit_tests::TestInterface, DiemDebugger}; use anyhow::bail; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_config::AccountResource, event::{EventHandle, EventKey}, @@ -14,7 +14,7 @@ use std::path::PathBuf; #[test] fn test_bisection() { - let debugger = LibraDebugger::new(Box::new(TestInterface::empty(100))); + let debugger = DiemDebugger::new(Box::new(TestInterface::empty(100))); let check = |v: Vec, result| { assert_eq!( debugger @@ -41,7 +41,7 @@ fn test_bisection() { #[test] fn test_changeset_override() { - let debugger = LibraDebugger::new(Box::new(TestInterface::genesis())); + let debugger = DiemDebugger::new(Box::new(TestInterface::genesis())); let address = AccountAddress::random(); let mut override_changeset = ChangeSet::new(); override_changeset diff --git a/language/libra-tools/transaction-replay/src/unit_tests/mod.rs b/language/diem-tools/transaction-replay/src/unit_tests/mod.rs similarity index 95% rename from language/libra-tools/transaction-replay/src/unit_tests/mod.rs rename to language/diem-tools/transaction-replay/src/unit_tests/mod.rs index ab94c2c7d5..29dbd7f40b 100644 --- a/language/libra-tools/transaction-replay/src/unit_tests/mod.rs +++ b/language/diem-tools/transaction-replay/src/unit_tests/mod.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod bisection_tests; -use crate::LibraValidatorInterface; +use crate::DiemValidatorInterface; use anyhow::{bail, Result}; use compiled_stdlib::StdLibOptions; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_state::AccountState, account_state_blob::AccountStateBlob, @@ -69,7 +69,7 @@ impl TestInterface { } } -impl LibraValidatorInterface for TestInterface { +impl DiemValidatorInterface for TestInterface { fn get_account_state_by_version( &self, account: AccountAddress, diff --git a/language/libra-tools/writeset-transaction-generator/Cargo.toml b/language/diem-tools/writeset-transaction-generator/Cargo.toml similarity index 71% rename from language/libra-tools/writeset-transaction-generator/Cargo.toml rename to language/diem-tools/writeset-transaction-generator/Cargo.toml index 0ba8168d4f..9778963d43 100644 --- a/language/libra-tools/writeset-transaction-generator/Cargo.toml +++ b/language/diem-tools/writeset-transaction-generator/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-writeset-generator" +name = "diem-writeset-generator" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Generating writesets used for incident management" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,8 +19,8 @@ handlebars = "3.5.1" serde = { version = "1.0.117", default-features = false } serde_json = "1.0.60" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } stdlib = { path = "../../stdlib", version = "0.1.0" } move-lang = { path = "../../move-lang", version = "0.0.1" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/libra-tools/writeset-transaction-generator/src/lib.rs b/language/diem-tools/writeset-transaction-generator/src/lib.rs similarity index 91% rename from language/libra-tools/writeset-transaction-generator/src/lib.rs rename to language/diem-tools/writeset-transaction-generator/src/lib.rs index 8e0489eae0..e75047b4df 100644 --- a/language/libra-tools/writeset-transaction-generator/src/lib.rs +++ b/language/diem-tools/writeset-transaction-generator/src/lib.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use handlebars::Handlebars; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, - account_config::libra_root_address, + account_config::diem_root_address, transaction::{Script, Transaction, WriteSetPayload}, }; +use handlebars::Handlebars; use serde::Serialize; use std::{collections::HashMap, io::Write, path::PathBuf}; use stdlib::compile_script; @@ -48,7 +48,7 @@ pub fn encode_remove_validators_transaction(validators: Vec) -> Transaction::GenesisTransaction(WriteSetPayload::Script { script, - execute_as: libra_root_address(), + execute_as: diem_root_address(), }) } @@ -67,7 +67,7 @@ pub fn encode_custom_script(script_name_in_templates: &str, args: Transaction::GenesisTransaction(WriteSetPayload::Script { script, - execute_as: libra_root_address(), + execute_as: diem_root_address(), }) } @@ -81,6 +81,6 @@ pub fn encode_halt_network_transaction() -> Transaction { vec![], vec![], ), - execute_as: libra_root_address(), + execute_as: diem_root_address(), }) } diff --git a/language/libra-tools/writeset-transaction-generator/src/main.rs b/language/diem-tools/writeset-transaction-generator/src/main.rs similarity index 89% rename from language/libra-tools/writeset-transaction-generator/src/main.rs rename to language/diem-tools/writeset-transaction-generator/src/main.rs index 2bb92c0c15..f766cd1e67 100644 --- a/language/libra-tools/writeset-transaction-generator/src/main.rs +++ b/language/diem-tools/writeset-transaction-generator/src/main.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; -use libra_types::{account_address::AccountAddress, transaction::Transaction}; -use libra_writeset_generator::{ +use diem_types::{account_address::AccountAddress, transaction::Transaction}; +use diem_writeset_generator::{ encode_custom_script, encode_halt_network_transaction, encode_remove_validators_transaction, }; use std::path::PathBuf; @@ -11,7 +11,7 @@ use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { - /// Path to the local LibraDB file + /// Path to the local DiemDB file #[structopt(long, short, parse(from_os_str))] output: PathBuf, #[structopt(subcommand)] // Note that we mark a field as a subcommand diff --git a/language/diem-tools/writeset-transaction-generator/templates/halt_transactions.move b/language/diem-tools/writeset-transaction-generator/templates/halt_transactions.move new file mode 100644 index 0000000000..b8b6b4f903 --- /dev/null +++ b/language/diem-tools/writeset-transaction-generator/templates/halt_transactions.move @@ -0,0 +1,8 @@ +script { + use 0x1::DiemTransactionPublishingOption; + fun main(diem_root: &signer) { + DiemTransactionPublishingOption::set_open_script(diem_root); + // Add a null hash to the script allow list to disable execution of all scripts sent to the validator. + DiemTransactionPublishingOption::add_to_script_allow_list(diem_root, x"0000000000000000000000000000000000000000000000000000000000000000"); + } +} diff --git a/language/diem-tools/writeset-transaction-generator/templates/remove_validators.move b/language/diem-tools/writeset-transaction-generator/templates/remove_validators.move new file mode 100644 index 0000000000..6ac969f20c --- /dev/null +++ b/language/diem-tools/writeset-transaction-generator/templates/remove_validators.move @@ -0,0 +1,8 @@ +script { + use 0x1::DiemSystem; + fun main(diem_root: &signer) { + {{#each addresses}} + DiemSystem::remove_validator(diem_root, 0x{{this}}); + {{/each}} + } +} diff --git a/language/libra-vm/Cargo.toml b/language/diem-vm/Cargo.toml similarity index 54% rename from language/libra-vm/Cargo.toml rename to language/diem-vm/Cargo.toml index 29a0a6b171..2c715a1e66 100644 --- a/language/libra-vm/Cargo.toml +++ b/language/diem-vm/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-vm" +name = "diem-vm" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra VM runtime" +authors = ["Diem Association "] +description = "Diem VM runtime" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,13 +17,13 @@ rayon = "1.5.0" mirai-annotations = "1.10.1" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-state-view = { path = "../../storage/state-view", version = "0.1.0" } -libra-trace = { path = "../../common/trace", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-state-view = { path = "../../storage/state-view", version = "0.1.0" } +diem-trace = { path = "../../common/trace", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../move-vm/runtime", version = "0.1.0" } move-vm-types = { path = "../move-vm/types", version = "0.1.0" } @@ -34,7 +34,7 @@ serde = { version = "1.0.117", default-features = false } [dev-dependencies] proptest = "0.10.1" -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } [features] default = [] diff --git a/language/libra-vm/README.md b/language/diem-vm/README.md similarity index 92% rename from language/libra-vm/README.md rename to language/diem-vm/README.md index a0a8c90e7e..d1eabf7a45 100644 --- a/language/libra-vm/README.md +++ b/language/diem-vm/README.md @@ -20,8 +20,8 @@ data view is a **read only** snapshot of the data and code in the blockchain at a given version (i.e., block height). At the time of startup, the runtime does not have any code or data loaded. It is effectively *“empty”*. -Every transaction executes within the context of a [Libra -account](../../stdlib/modules/libra_account.mvir)---specifically the transaction +Every transaction executes within the context of a [Diem +account](../../stdlib/modules/diem_account.mvir)---specifically the transaction submitter's account. The execution of every transaction consists of three parts: the account prologue, the transaction itself, and the account epilogue. This is the only transaction flow known to the runtime, and it is @@ -30,8 +30,8 @@ individual transaction from the block and execute the transaction flow: 1. ***Transaction Prologue*** - in verification mode the runtime runs the bytecode verifier over the transaction script and executes the - prologue defined in the [Libra account - module](../../stdlib/modules/libra_account.mvir). The prologue is responsible + prologue defined in the [Diem account + module](../../stdlib/modules/diem_account.mvir). The prologue is responsible for checking the structure of the transaction and rejecting obviously bad transactions. In verification mode, the runtime returns a status of either `success` or `failure` depending upon the @@ -49,7 +49,7 @@ individual transaction from the block and execute the transaction flow: blockchain state by the VM---this is the responsibility of the [execution module](../../../execution/). 3. ***Transaction Epilogue*** - in execution mode the epilogue defined in - the [Libra account module](../../stdlib/modules/libra_account.mvir) is + the [Diem account module](../../stdlib/modules/diem_account.mvir) is executed to perform actions based upon the result of the execution of the user-submitted transaction. One example of such an action is debiting the gas fee for the transaction from the submitting account's @@ -68,7 +68,7 @@ visible to subsequent transactions within each block. ## Implementation Details -* The runtime top level structs are in `runtime` and `libra vm` related +* The runtime top level structs are in `runtime` and `diem vm` related code. * The transaction flow is implemented in the [`process_txn`](./src/process_txn.rs) module. diff --git a/language/libra-vm/src/access_path_cache.rs b/language/diem-vm/src/access_path_cache.rs similarity index 95% rename from language/libra-vm/src/access_path_cache.rs rename to language/diem-vm/src/access_path_cache.rs index 1ceb352d98..d70fa2fe3e 100644 --- a/language/libra-vm/src/access_path_cache.rs +++ b/language/diem-vm/src/access_path_cache.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::access_path::AccessPath; +use diem_types::access_path::AccessPath; use move_core_types::{ account_address::AccountAddress, language_storage::{ModuleId, StructTag}, diff --git a/language/libra-vm/src/counters.rs b/language/diem-vm/src/counters.rs similarity index 75% rename from language/libra-vm/src/counters.rs rename to language/diem-vm/src/counters.rs index 9078c9eae9..01b8ce0fac 100644 --- a/language/libra-vm/src/counters.rs +++ b/language/diem-vm/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ +use diem_metrics::{ register_histogram, register_int_counter, register_int_counter_vec, Histogram, IntCounter, IntCounterVec, }; @@ -11,7 +11,7 @@ use once_cell::sync::Lazy; /// distinguish success or failure results. pub static TRANSACTIONS_VALIDATED: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_vm_transactions_validated", + "diem_vm_transactions_validated", "Number of transactions validated", &["status"] ) @@ -22,7 +22,7 @@ pub static TRANSACTIONS_VALIDATED: Lazy = Lazy::new(|| { /// distinguish completed vs. discarded transactions. pub static USER_TRANSACTIONS_EXECUTED: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_vm_user_transactions_executed", + "diem_vm_user_transactions_executed", "Number of user transactions executed", &["status"] ) @@ -32,7 +32,7 @@ pub static USER_TRANSACTIONS_EXECUTED: Lazy = Lazy::new(|| { /// Count the number of system transactions executed. pub static SYSTEM_TRANSACTIONS_EXECUTED: Lazy = Lazy::new(|| { register_int_counter!( - "libra_vm_system_transactions_executed", + "diem_vm_system_transactions_executed", "Number of system transactions executed" ) .unwrap() @@ -40,7 +40,7 @@ pub static SYSTEM_TRANSACTIONS_EXECUTED: Lazy = Lazy::new(|| { pub static BLOCK_TRANSACTION_COUNT: Lazy = Lazy::new(|| { register_histogram!( - "libra_vm_num_txns_per_block", + "diem_vm_num_txns_per_block", "Number of transactions per block" ) .unwrap() @@ -48,7 +48,7 @@ pub static BLOCK_TRANSACTION_COUNT: Lazy = Lazy::new(|| { pub static TXN_TOTAL_SECONDS: Lazy = Lazy::new(|| { register_histogram!( - "libra_vm_txn_total_seconds", + "diem_vm_txn_total_seconds", "Execution time per user transaction" ) .unwrap() @@ -56,18 +56,17 @@ pub static TXN_TOTAL_SECONDS: Lazy = Lazy::new(|| { pub static TXN_VALIDATION_SECONDS: Lazy = Lazy::new(|| { register_histogram!( - "libra_vm_txn_validation_seconds", + "diem_vm_txn_validation_seconds", "Validation time per user transaction" ) .unwrap() }); -pub static TXN_GAS_USAGE: Lazy = Lazy::new(|| { - register_histogram!("libra_vm_txn_gas_usage", "Gas used per transaction").unwrap() -}); +pub static TXN_GAS_USAGE: Lazy = + Lazy::new(|| register_histogram!("diem_vm_txn_gas_usage", "Gas used per transaction").unwrap()); /// Count the number of critical errors. This is not intended for display /// on a dashboard but rather for triggering alerts. pub static CRITICAL_ERRORS: Lazy = Lazy::new(|| { - register_int_counter!("libra_vm_critical_errors", "Number of critical errors").unwrap() + register_int_counter!("diem_vm_critical_errors", "Number of critical errors").unwrap() }); diff --git a/language/libra-vm/src/data_cache.rs b/language/diem-vm/src/data_cache.rs similarity index 97% rename from language/libra-vm/src/data_cache.rs rename to language/diem-vm/src/data_cache.rs index 7916755674..f0e955265a 100644 --- a/language/libra-vm/src/data_cache.rs +++ b/language/diem-vm/src/data_cache.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Scratchpad for on chain values during the execution. use crate::{counters::CRITICAL_ERRORS, create_access_path, logging::AdapterLogSchema}; #[allow(unused_imports)] use anyhow::format_err; -use fail::fail_point; -use libra_logger::prelude::*; -use libra_state_view::{StateView, StateViewId}; -use libra_types::{ +use diem_logger::prelude::*; +use diem_state_view::{StateView, StateViewId}; +use diem_types::{ access_path::AccessPath, on_chain_config::ConfigStorage, vm_status::StatusCode, write_set::{WriteOp, WriteSet}, }; +use fail::fail_point; use move_core_types::{ account_address::AccountAddress, language_storage::{ModuleId, StructTag}, @@ -22,7 +22,7 @@ use move_vm_runtime::data_cache::RemoteCache; use std::collections::btree_map::BTreeMap; use vm::errors::*; -/// A local cache for a given a `StateView`. The cache is private to the Libra layer +/// A local cache for a given a `StateView`. The cache is private to the Diem layer /// but can be used as a one shot cache for systems that need a simple `RemoteCache` /// implementation (e.g. tests or benchmarks). /// diff --git a/language/libra-vm/src/libra_transaction_executor.rs b/language/diem-vm/src/diem_transaction_executor.rs similarity index 96% rename from language/libra-vm/src/libra_transaction_executor.rs rename to language/diem-vm/src/diem_transaction_executor.rs index b4e439cfad..008f761c08 100644 --- a/language/libra-vm/src/libra_transaction_executor.rs +++ b/language/diem-vm/src/diem_transaction_executor.rs @@ -1,24 +1,23 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ counters::*, data_cache::StateViewCache, - errors::expect_only_successful_execution, - libra_vm::{ + diem_vm::{ charge_global_write_gas_usage, get_currency_info, get_transaction_output, - txn_effects_to_writeset_and_events_cached, LibraVMImpl, LibraVMInternals, + txn_effects_to_writeset_and_events_cached, DiemVMImpl, DiemVMInternals, }, + errors::expect_only_successful_execution, logging::AdapterLogSchema, system_module_names::*, transaction_metadata::TransactionMetadata, txn_effects_to_writeset_and_events, VMExecutor, }; -use fail::fail_point; -use libra_logger::prelude::*; -use libra_state_view::StateView; -use libra_trace::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_state_view::StateView; +use diem_trace::prelude::*; +use diem_types::{ account_config, block_metadata::BlockMetadata, transaction::{ @@ -28,6 +27,7 @@ use libra_types::{ vm_status::{KeptVMStatus, StatusCode, VMStatus}, write_set::{WriteSet, WriteSetMut}, }; +use fail::fail_point; use move_core_types::{ account_address::AccountAddress, gas_schedule::{CostTable, GasAlgebra, GasCarrier, GasUnits}, @@ -44,15 +44,15 @@ use std::{ convert::{AsMut, AsRef}, }; -pub struct LibraVM(LibraVMImpl); +pub struct DiemVM(DiemVMImpl); -impl LibraVM { +impl DiemVM { pub fn new(state: &S) -> Self { - Self(LibraVMImpl::new(state)) + Self(DiemVMImpl::new(state)) } - pub fn internals(&self) -> LibraVMInternals { - LibraVMInternals::new(&self.0) + pub fn internals(&self) -> DiemVMInternals { + DiemVMInternals::new(&self.0) } /// Generates a transaction output for a transaction that encountered errors during the @@ -457,7 +457,7 @@ impl LibraVM { ]; session .execute_function( - &LIBRA_BLOCK_MODULE, + &DIEM_BLOCK_MODULE, &BLOCK_PROLOGUE, vec![], args, @@ -517,7 +517,7 @@ impl LibraVM { } TransactionPayload::Module(_) | TransactionPayload::Script(_) => { log_context.alert(); - error!(*log_context, "[libra_vm] UNREACHABLE"); + error!(*log_context, "[diem_vm] UNREACHABLE"); return Ok(discard_error_vm_status(VMStatus::Error( StatusCode::UNREACHABLE, ))); @@ -646,7 +646,7 @@ impl LibraVM { Ok(PreprocessedTransaction::BlockPrologue(block_metadata)) => { execute_block_trace_guard.clear(); current_block_id = block_metadata.id(); - trace_code_block!("libra_vm::execute_block_impl", {"block", current_block_id}, execute_block_trace_guard); + trace_code_block!("diem_vm::execute_block_impl", {"block", current_block_id}, execute_block_trace_guard); let (vm_status, output) = self.process_block_prologue(data_cache, block_metadata, &log_context)?; (vm_status, output, Some("block_prologue".to_string())) @@ -727,7 +727,7 @@ impl LibraVM { state_view: &dyn StateView, ) -> Result, VMStatus> { let mut state_view_cache = StateViewCache::new(state_view); - let mut vm = LibraVM::new(&state_view_cache); + let mut vm = DiemVM::new(&state_view_cache); vm.execute_block_impl(transactions, &mut state_view_cache) } } @@ -754,7 +754,7 @@ fn preprocess_transaction(txn: Transaction) -> Result bool { - let new_epoch_event_key = libra_types::on_chain_config::new_epoch_event_key(); + let new_epoch_event_key = diem_types::on_chain_config::new_epoch_event_key(); vm_output .events() .iter() @@ -773,7 +773,7 @@ enum PreprocessedTransaction { } // Executor external API -impl VMExecutor for LibraVM { +impl VMExecutor for DiemVM { /// Execute a block of `transactions`. The output vector will have the exact same length as the /// input vector. The discarded transactions will be marked as `TransactionStatus::Discard` and /// have an empty `WriteSet`. Also `state_view` is immutable, and does not have interior @@ -833,14 +833,14 @@ fn convert_txn_args(args: &[TransactionArgument]) -> Vec { .collect() } -impl AsRef for LibraVM { - fn as_ref(&self) -> &LibraVMImpl { +impl AsRef for DiemVM { + fn as_ref(&self) -> &DiemVMImpl { &self.0 } } -impl AsMut for LibraVM { - fn as_mut(&mut self) -> &mut LibraVMImpl { +impl AsMut for DiemVM { + fn as_mut(&mut self) -> &mut DiemVMImpl { &mut self.0 } } diff --git a/language/libra-vm/src/libra_transaction_validator.rs b/language/diem-vm/src/diem_transaction_validator.rs similarity index 90% rename from language/libra-vm/src/libra_transaction_validator.rs rename to language/diem-vm/src/diem_transaction_validator.rs index 43808ea7be..6ade6c3f84 100644 --- a/language/libra-vm/src/libra_transaction_validator.rs +++ b/language/diem-vm/src/diem_transaction_validator.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ counters::*, create_access_path, data_cache::StateViewCache, - libra_vm::{get_currency_info, LibraVMImpl}, + diem_vm::{get_currency_info, DiemVMImpl}, transaction_metadata::TransactionMetadata, VMValidator, }; -use libra_logger::prelude::*; -use libra_state_view::StateView; -use libra_types::{ +use diem_logger::prelude::*; +use diem_state_view::StateView; +use diem_types::{ account_address::AccountAddress, account_config::{self, RoleId}, - on_chain_config::{LibraVersion, VMConfig, VMPublishingOption}, + on_chain_config::{DiemVersion, VMConfig, VMPublishingOption}, transaction::{ GovernanceRole, SignatureCheckedTransaction, SignedTransaction, TransactionPayload, VMValidatorResult, @@ -31,24 +31,24 @@ use crate::logging::AdapterLogSchema; use move_vm_types::gas_schedule::CostStrategy; #[derive(Clone)] -pub struct LibraVMValidator(LibraVMImpl); +pub struct DiemVMValidator(DiemVMImpl); -impl LibraVMValidator { +impl DiemVMValidator { pub fn new(state: &S) -> Self { info!( AdapterLogSchema::new(state.id(), 0), "Adapter created for Validation" ); - Self(LibraVMImpl::new(state)) + Self(DiemVMImpl::new(state)) } pub fn init_with_config( - version: LibraVersion, + version: DiemVersion, on_chain_config: VMConfig, publishing_option: VMPublishingOption, ) -> Self { info!("Adapter restarted for Validation"); - LibraVMValidator(LibraVMImpl::init_with_config( + DiemVMValidator(DiemVMImpl::init_with_config( version, on_chain_config, publishing_option, @@ -96,14 +96,14 @@ impl LibraVMValidator { } // VMValidator external API -impl VMValidator for LibraVMValidator { +impl VMValidator for DiemVMValidator { /// Determine if a transaction is valid. Will return `None` if the transaction is accepted, /// `Some(Err)` if the VM rejects it, with `Err` as an error code. Verification performs the /// following steps: /// 1. The signature on the `SignedTransaction` matches the public key included in the /// transaction /// 2. The script to be executed is under given specific configuration. - /// 3. Invokes `LibraAccount.prologue`, which checks properties such as the transaction has the + /// 3. Invokes `DiemAccount.prologue`, which checks properties such as the transaction has the /// right sequence number and the sender has enough balance to pay for the gas. /// TBD: /// 1. Transaction arguments matches the main function's type signature. @@ -141,7 +141,7 @@ impl VMValidator for LibraVMValidator { let account_role = get_account_role(txn_sender, &data_cache); let normalized_gas_price = match get_currency_info(¤cy_code, &data_cache) { - Ok(info) => info.convert_to_lbr(gas_price), + Ok(info) => info.convert_to_xdx(gas_price), Err(err) => { return VMValidatorResult::new( Some(err.status_code()), diff --git a/language/libra-vm/src/libra_vm.rs b/language/diem-vm/src/diem_vm.rs similarity index 94% rename from language/libra-vm/src/libra_vm.rs rename to language/diem-vm/src/diem_vm.rs index 4367dd0526..e37bc05889 100644 --- a/language/libra-vm/src/libra_vm.rs +++ b/language/diem-vm/src/diem_vm.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,18 +9,18 @@ use crate::{ system_module_names::*, transaction_metadata::TransactionMetadata, }; -use fail::fail_point; -use libra_logger::prelude::*; -use libra_state_view::StateView; -use libra_types::{ +use diem_logger::prelude::*; +use diem_state_view::StateView; +use diem_types::{ account_config::{self, CurrencyInfoResource}, contract_event::ContractEvent, event::EventKey, - on_chain_config::{ConfigStorage, LibraVersion, OnChainConfig, VMConfig, VMPublishingOption}, + on_chain_config::{ConfigStorage, DiemVersion, OnChainConfig, VMConfig, VMPublishingOption}, transaction::{TransactionOutput, TransactionStatus}, vm_status::{KeptVMStatus, StatusCode, VMStatus}, write_set::{WriteOp, WriteSet, WriteSetMut}, }; +use fail::fail_point; use move_core_types::{ gas_schedule::{CostTable, GasAlgebra, GasUnits}, identifier::IdentStr, @@ -41,14 +41,14 @@ use vm::errors::Location; #[derive(Clone)] /// A wrapper to make VMRuntime standalone and thread safe. -pub struct LibraVMImpl { +pub struct DiemVMImpl { move_vm: Arc, on_chain_config: Option, - version: Option, + version: Option, publishing_option: Option, } -impl LibraVMImpl { +impl DiemVMImpl { #[allow(clippy::new_without_default)] pub fn new(state: &S) -> Self { let inner = MoveVM::new(); @@ -63,7 +63,7 @@ impl LibraVMImpl { } pub fn init_with_config( - version: LibraVersion, + version: DiemVersion, on_chain_config: VMConfig, publishing_option: VMPublishingOption, ) -> Self { @@ -76,9 +76,9 @@ impl LibraVMImpl { } } - /// Provides access to some internal APIs of the Libra VM. - pub fn internals(&self) -> LibraVMInternals { - LibraVMInternals(self) + /// Provides access to some internal APIs of the Diem VM. + pub fn internals(&self) -> DiemVMInternals { + DiemVMInternals(self) } pub(crate) fn publishing_option( @@ -97,7 +97,7 @@ impl LibraVMImpl { fn load_configs_impl(&mut self, data_cache: &S) { self.on_chain_config = VMConfig::fetch_config(data_cache); - self.version = LibraVersion::fetch_config(data_cache); + self.version = DiemVersion::fetch_config(data_cache); self.publishing_option = VMPublishingOption::fetch_config(data_cache); } @@ -112,10 +112,10 @@ impl LibraVMImpl { }) } - pub fn get_libra_version(&self) -> Result { + pub fn get_diem_version(&self) -> Result { self.version.clone().ok_or_else(|| { CRITICAL_ERRORS.inc(); - error!("VM Startup Failed. Libra Version Not Found"); + error!("VM Startup Failed. Diem Version Not Found"); VMStatus::Error(StatusCode::VM_STARTUP_FAILURE) }) } @@ -428,12 +428,12 @@ impl LibraVMImpl { } } -/// Internal APIs for the Libra VM, primarily used for testing. +/// Internal APIs for the Diem VM, primarily used for testing. #[derive(Clone, Copy)] -pub struct LibraVMInternals<'a>(&'a LibraVMImpl); +pub struct DiemVMInternals<'a>(&'a DiemVMImpl); -impl<'a> LibraVMInternals<'a> { - pub fn new(internal: &'a LibraVMImpl) -> Self { +impl<'a> DiemVMInternals<'a> { + pub fn new(internal: &'a DiemVMImpl) -> Self { Self(internal) } @@ -448,8 +448,8 @@ impl<'a> LibraVMInternals<'a> { } /// Returns the version of Move Runtime. - pub fn libra_version(self) -> Result { - self.0.get_libra_version() + pub fn diem_version(self) -> Result { + self.0.get_diem_version() } /// Executes the given code within the context of a transaction. @@ -585,12 +585,12 @@ fn vm_thread_safe() { fn assert_send() {} fn assert_sync() {} - use crate::{LibraVM, LibraVMValidator}; + use crate::{DiemVM, DiemVMValidator}; - assert_send::(); - assert_sync::(); - assert_send::(); - assert_sync::(); + assert_send::(); + assert_sync::(); + assert_send::(); + assert_sync::(); assert_send::(); assert_sync::(); } diff --git a/language/libra-vm/src/errors.rs b/language/diem-vm/src/errors.rs similarity index 89% rename from language/libra-vm/src/errors.rs rename to language/diem-vm/src/errors.rs index 546e917631..05d6c42a58 100644 --- a/language/libra-vm/src/errors.rs +++ b/language/diem-vm/src/errors.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_logger::prelude::*; +use diem_logger::prelude::*; use move_core_types::vm_status::{known_locations, StatusCode, VMStatus}; use move_vm_runtime::logging::LogContext; use vm::errors::VMError; @@ -21,7 +21,7 @@ pub const ETRANSACTION_EXPIRED: u64 = 1006; // transaction expiration time excee pub const EBAD_CHAIN_ID: u64 = 1007; // chain_id in transaction doesn't match the one on-chain pub const ESCRIPT_NOT_ALLOWED: u64 = 1008; pub const EMODULE_NOT_ALLOWED: u64 = 1009; -pub const EINVALID_WRITESET_SENDER: u64 = 1010; // invalid sender (not libra root) for write set +pub const EINVALID_WRITESET_SENDER: u64 = 1010; // invalid sender (not diem root) for write set const INVALID_STATE: u8 = 1; const INVALID_ARGUMENT: u8 = 7; @@ -50,7 +50,7 @@ pub fn convert_prologue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected prologue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", + "[diem_vm] Unexpected prologue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", location, code, category, reason, ); VMStatus::Error(StatusCode::UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION) @@ -81,7 +81,7 @@ pub fn convert_prologue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected prologue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", + "[diem_vm] Unexpected prologue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", location, code, category, reason, ); return Err(VMStatus::Error( @@ -95,7 +95,7 @@ pub fn convert_prologue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected prologue error: {:?}", status + "[diem_vm] Unexpected prologue error: {:?}", status ); VMStatus::Error(StatusCode::UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION) } @@ -119,7 +119,7 @@ pub fn convert_epilogue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected success epilogue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", + "[diem_vm] Unexpected success epilogue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", location, code, category, reason, ); VMStatus::Error(StatusCode::UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION) @@ -131,7 +131,7 @@ pub fn convert_epilogue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected success epilogue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", + "[diem_vm] Unexpected success epilogue Move abort: {:?}::{:?} (Category: {:?} Reason: {:?})", location, code, category, reason, ); VMStatus::Error(StatusCode::UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION) @@ -142,7 +142,7 @@ pub fn convert_epilogue_error( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected success epilogue error: {:?}", status, + "[diem_vm] Unexpected success epilogue error: {:?}", status, ); VMStatus::Error(StatusCode::UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION) } @@ -165,7 +165,7 @@ pub fn expect_only_successful_execution( log_context.alert(); error!( *log_context, - "[libra_vm] Unexpected error from known Move function, '{}'. Error: {:?}", + "[diem_vm] Unexpected error from known Move function, '{}'. Error: {:?}", function_name, status, ); diff --git a/language/libra-vm/src/foreign_contracts.rs b/language/diem-vm/src/foreign_contracts.rs similarity index 83% rename from language/libra-vm/src/foreign_contracts.rs rename to language/diem-vm/src/foreign_contracts.rs index 50cea9a231..73cb5c862a 100644 --- a/language/libra-vm/src/foreign_contracts.rs +++ b/language/diem-vm/src/foreign_contracts.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file contains models of the vm crate's dependencies for use with MIRAI. diff --git a/language/libra-vm/src/lib.rs b/language/diem-vm/src/lib.rs similarity index 95% rename from language/libra-vm/src/lib.rs rename to language/diem-vm/src/lib.rs index ff1668ab6b..9818a133ae 100644 --- a/language/libra-vm/src/lib.rs +++ b/language/diem-vm/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -110,22 +110,22 @@ pub mod data_cache; #[cfg(feature = "mirai-contracts")] pub mod foreign_contracts; +mod diem_vm; mod errors; -mod libra_vm; pub mod transaction_metadata; -pub mod libra_transaction_executor; -pub mod libra_transaction_validator; +pub mod diem_transaction_executor; +pub mod diem_transaction_validator; pub mod logging; pub mod system_module_names; pub use crate::{ - libra_transaction_executor::LibraVM, libra_transaction_validator::LibraVMValidator, - libra_vm::txn_effects_to_writeset_and_events, + diem_transaction_executor::DiemVM, diem_transaction_validator::DiemVMValidator, + diem_vm::txn_effects_to_writeset_and_events, }; -use libra_state_view::StateView; -use libra_types::{ +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, transaction::{SignedTransaction, Transaction, TransactionOutput, VMValidatorResult}, vm_status::VMStatus, @@ -137,7 +137,7 @@ use move_core_types::{ /// This trait describes the VM's validation interfaces. pub trait VMValidator { - /// Executes the prologue of the Libra Account and verifies that the transaction is valid. + /// Executes the prologue of the Diem Account and verifies that the transaction is valid. fn validate_transaction( &self, transaction: SignedTransaction, diff --git a/language/libra-vm/src/logging.rs b/language/diem-vm/src/logging.rs similarity index 93% rename from language/libra-vm/src/logging.rs rename to language/diem-vm/src/logging.rs index fb8213ffff..e67105de6d 100644 --- a/language/libra-vm/src/logging.rs +++ b/language/diem-vm/src/logging.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::counters::CRITICAL_ERRORS; -use libra_crypto::HashValue; -use libra_logger::Schema; -use libra_state_view::StateViewId; -use libra_types::transaction::Version; +use diem_crypto::HashValue; +use diem_logger::Schema; +use diem_state_view::StateViewId; +use diem_types::transaction::Version; use move_vm_runtime::logging::LogContext; use serde::Serialize; diff --git a/language/libra-vm/src/system_module_names.rs b/language/diem-vm/src/system_module_names.rs similarity index 74% rename from language/libra-vm/src/system_module_names.rs rename to language/diem-vm/src/system_module_names.rs index dcad908af2..4dc711689d 100644 --- a/language/libra-vm/src/system_module_names.rs +++ b/language/diem-vm/src/system_module_names.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Names of modules, functions, and types used by Libra System. +//! Names of modules, functions, and types used by Diem System. -use libra_types::account_config; +use diem_types::account_config; use move_core_types::{identifier::Identifier, language_storage::ModuleId}; use once_cell::sync::Lazy; // Data to resolve basic account and transaction flow functions and structs -/// The ModuleId for the libra writeset manager module -/// The ModuleId for the libra block module -pub static LIBRA_BLOCK_MODULE: Lazy = Lazy::new(|| { +/// The ModuleId for the diem writeset manager module +/// The ModuleId for the diem block module +pub static DIEM_BLOCK_MODULE: Lazy = Lazy::new(|| { ModuleId::new( account_config::CORE_CODE_ADDRESS, - Identifier::new("LibraBlock").unwrap(), + Identifier::new("DiemBlock").unwrap(), ) }); diff --git a/language/libra-vm/src/transaction_metadata.rs b/language/diem-vm/src/transaction_metadata.rs similarity index 95% rename from language/libra-vm/src/transaction_metadata.rs rename to language/diem-vm/src/transaction_metadata.rs index 4c1430ff6f..bd2c6543b1 100644 --- a/language/libra-vm/src/transaction_metadata.rs +++ b/language/diem-vm/src/transaction_metadata.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey}; +use diem_types::{ account_address::AccountAddress, chain_id::ChainId, transaction::{ diff --git a/language/e2e-testsuite/Cargo.toml b/language/e2e-testsuite/Cargo.toml index 52bef22c76..01719cdc98 100644 --- a/language/e2e-testsuite/Cargo.toml +++ b/language/e2e-testsuite/Cargo.toml @@ -2,10 +2,10 @@ name = "language-e2e-testsuite" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra language e2e tests" +authors = ["Diem Association "] +description = "Diem language e2e tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -15,20 +15,20 @@ language-e2e-tests = { path = "../testing-infra/e2e-tests", version = "0.1.0" } bytecode-verifier = { path = "../bytecode-verifier", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } compiler = { path = "../compiler", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } move-core-types = { path = "../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../move-vm/runtime", version = "0.1.0" } move-vm-types = { path = "../move-vm/types", version = "0.1.0" } transaction-builder = { path = "../transaction-builder", version = "0.1.0"} transaction-builder-generated = { path = "../../client/transaction-builder", version = "0.1.0"} vm = { path = "../vm", version = "0.1.0" } -libra-vm = { path = "../libra-vm", version = "0.1.0" } +diem-vm = { path = "../diem-vm", version = "0.1.0" } proptest = "0.10.1" -libra-logger = { path = "../../common/logger", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } compiled-stdlib = { path = "../stdlib/compiled", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } -libra-writeset-generator = { path = "../libra-tools/writeset-transaction-generator", version = "0.1.0"} +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-writeset-generator = { path = "../diem-tools/writeset-transaction-generator", version = "0.1.0"} [features] default = ["transaction-builder-generated/fuzzing"] diff --git a/language/e2e-testsuite/src/lib.rs b/language/e2e-testsuite/src/lib.rs index 10a9cdd86f..463fcc9a14 100644 --- a/language/e2e-testsuite/src/lib.rs +++ b/language/e2e-testsuite/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] diff --git a/language/e2e-testsuite/src/tests/account_limits.rs b/language/e2e-testsuite/src/tests/account_limits.rs index a8a6763c9d..dc0543f08c 100644 --- a/language/e2e-testsuite/src/tests/account_limits.rs +++ b/language/e2e-testsuite/src/tests/account_limits.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use compiler::Compiler; -use language_e2e_tests::{ - account::{self, Account}, - current_function_name, - executor::FakeExecutor, -}; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_config, transaction::{Script, TransactionArgument, TransactionOutput, WriteSetPayload}, vm_status::KeptVMStatus, }; +use language_e2e_tests::{ + account::{self, Account}, + current_function_name, + executor::FakeExecutor, +}; use transaction_builder::*; fn assert_aborted_with(output: TransactionOutput, error_code: u64) { @@ -28,13 +28,13 @@ fn encode_add_account_limits_admin_script(execute_as: AccountAddress) -> WriteSe let add_account_limits_admin_script = { let code = " import 0x1.AccountLimits; - import 0x1.Coin1; + import 0x1.XUS; import 0x1.Signer; - main(lr_account: &signer, vasp: &signer) { - AccountLimits.publish_unrestricted_limits(copy(vasp)); - AccountLimits.publish_window( - move(lr_account), + main(dr_account: &signer, vasp: &signer) { + AccountLimits.publish_unrestricted_limits(copy(vasp)); + AccountLimits.publish_window( + move(dr_account), copy(vasp), Signer.address_of(move(vasp)) ); @@ -67,7 +67,7 @@ fn encode_update_account_limit_definition_script( let script_body = { let code = " import 0x1.AccountLimits; - import 0x1.Coin1; + import 0x1.XUS; main( account: &signer, @@ -77,7 +77,7 @@ fn encode_update_account_limit_definition_script( new_max_holding_balance: u64, new_time_period: u64 ) { - AccountLimits.update_limits_definition( + AccountLimits.update_limits_definition( move(account), move(limit_addr), move(new_max_inflow), @@ -119,14 +119,14 @@ fn encode_update_account_limit_window_info_script( let script_body = { let code = " import 0x1.AccountLimits; - import 0x1.Coin1; + import 0x1.XUS; main(account: &signer, window_addr: address, aggregate_balance: u64, new_limit_address: address ) { - AccountLimits.update_window_info( + AccountLimits.update_window_info( move(account), move(window_addr), move(aggregate_balance), @@ -165,7 +165,7 @@ fn account_limits() { let vasp_b = executor.create_raw_account(); let vasp_a_child = executor.create_raw_account(); let vasp_b_child = executor.create_raw_account(); - let libra_root = Account::new_libra_root(); + let diem_root = Account::new_diem_root(); let blessed = Account::new_blessed_tc(); let dd = Account::new_genesis_account(account_config::testnet_dd_account_address()); @@ -178,7 +178,7 @@ fn account_limits() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *vasp_a.address(), vasp_a.auth_key_prefix(), @@ -193,7 +193,7 @@ fn account_limits() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *vasp_b.address(), vasp_b.auth_key_prefix(), @@ -210,7 +210,7 @@ fn account_limits() { vasp_a .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), vasp_a_child.auth_key_prefix(), true, @@ -224,7 +224,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child.address(), vasp_b_child.auth_key_prefix(), true, @@ -236,7 +236,7 @@ fn account_limits() { ); executor.execute_and_apply( - libra_root + diem_root .transaction() .write_set(encode_add_account_limits_admin_script(*vasp_a.address())) .sequence_number(1) @@ -244,7 +244,7 @@ fn account_limits() { ); executor.execute_and_apply( - libra_root + diem_root .transaction() .write_set(encode_add_account_limits_admin_script(*vasp_b.address())) .sequence_number(2) @@ -255,7 +255,7 @@ fn account_limits() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a.address(), 2 * mint_amount, vec![], @@ -268,7 +268,7 @@ fn account_limits() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b.address(), 2 * mint_amount, vec![], @@ -318,7 +318,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a.address(), mint_amount + 1, vec![], @@ -337,7 +337,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), mint_amount + 1, vec![], @@ -355,7 +355,7 @@ fn account_limits() { vasp_a .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), mint_amount + 1, vec![], @@ -371,7 +371,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child.address(), mint_amount + 1, vec![], @@ -387,7 +387,7 @@ fn account_limits() { vasp_b_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), mint_amount, vec![], @@ -403,7 +403,7 @@ fn account_limits() { let output = executor.execute_transaction( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], @@ -424,7 +424,7 @@ fn account_limits() { let output = executor.execute_transaction( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], @@ -462,7 +462,7 @@ fn account_limits() { vasp_a .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1001, vec![], @@ -478,7 +478,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child.address(), 1000, vec![], @@ -495,7 +495,7 @@ fn account_limits() { vasp_a .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b.address(), 1, vec![], @@ -514,7 +514,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child.address(), 1, vec![], @@ -533,7 +533,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd.address(), 1, vec![], @@ -554,7 +554,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd.address(), 1, vec![], @@ -575,11 +575,11 @@ fn account_limits() { // Set vasp A's max holding to its current balance across all accounts { let a_parent_balance = executor - .read_balance_resource(&vasp_a, account::coin1_tmp_currency_code()) + .read_balance_resource(&vasp_a, account::xus_currency_code()) .unwrap() .coin(); let a_child_balance = executor - .read_balance_resource(&vasp_a_child, account::coin1_tmp_currency_code()) + .read_balance_resource(&vasp_a_child, account::xus_currency_code()) .unwrap() .coin(); let a_balance = a_parent_balance + a_child_balance; @@ -618,7 +618,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], @@ -636,7 +636,7 @@ fn account_limits() { vasp_a .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child.address(), 10, vec![], @@ -652,7 +652,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 10, vec![], @@ -669,7 +669,7 @@ fn account_limits() { vasp_b .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], @@ -687,7 +687,7 @@ fn account_limits() { vasp_a_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a.address(), 1100, vec![], @@ -703,7 +703,7 @@ fn account_limits() { let output = executor.execute_transaction( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], @@ -725,7 +725,7 @@ fn account_limits() { let output = executor.execute_transaction( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child.address(), 1, vec![], diff --git a/language/e2e-testsuite/src/tests/account_universe/bad_transaction.rs b/language/e2e-testsuite/src/tests/account_universe/bad_transaction.rs index e1e6872992..af9b131720 100644 --- a/language/e2e-testsuite/src/tests/account_universe/bad_transaction.rs +++ b/language/e2e-testsuite/src/tests/account_universe/bad_transaction.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use language_e2e_tests::account_universe::{ diff --git a/language/e2e-testsuite/src/tests/account_universe/create_account.rs b/language/e2e-testsuite/src/tests/account_universe/create_account.rs index ee4288f89b..fb7c691f4a 100644 --- a/language/e2e-testsuite/src/tests/account_universe/create_account.rs +++ b/language/e2e-testsuite/src/tests/account_universe/create_account.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // TODO: all of these tests rely on a symmetric account creation mechanism; that is, an account of diff --git a/language/e2e-testsuite/src/tests/account_universe/mod.rs b/language/e2e-testsuite/src/tests/account_universe/mod.rs index 94283c8c6c..8eaa44950c 100644 --- a/language/e2e-testsuite/src/tests/account_universe/mod.rs +++ b/language/e2e-testsuite/src/tests/account_universe/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod bad_transaction; diff --git a/language/e2e-testsuite/src/tests/account_universe/peer_to_peer.rs b/language/e2e-testsuite/src/tests/account_universe/peer_to_peer.rs index 2cfc8b8611..81463a244f 100644 --- a/language/e2e-testsuite/src/tests/account_universe/peer_to_peer.rs +++ b/language/e2e-testsuite/src/tests/account_universe/peer_to_peer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use language_e2e_tests::account_universe::{ diff --git a/language/e2e-testsuite/src/tests/account_universe/rotate_key.rs b/language/e2e-testsuite/src/tests/account_universe/rotate_key.rs index 43d8c8ac11..9c5261580d 100644 --- a/language/e2e-testsuite/src/tests/account_universe/rotate_key.rs +++ b/language/e2e-testsuite/src/tests/account_universe/rotate_key.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use language_e2e_tests::account_universe::{ diff --git a/language/e2e-testsuite/src/tests/admin_script.rs b/language/e2e-testsuite/src/tests/admin_script.rs index 1fb3dc4ab9..6a54f9138d 100644 --- a/language/e2e-testsuite/src/tests/admin_script.rs +++ b/language/e2e-testsuite/src/tests/admin_script.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ account_config, transaction::{authenticator::AuthenticationKey, Script, TransactionArgument}, vm_status::StatusCode, }; use compiler::Compiler; -use libra_types::transaction::WriteSetPayload; +use diem_types::transaction::WriteSetPayload; #[test] fn admin_script_rotate_key_single_signer_no_epoch() { @@ -26,13 +26,13 @@ fn admin_script_rotate_key_single_signer_no_epoch() { let script_body = { let code = r#" -import 0x1.LibraAccount; +import 0x1.DiemAccount; -main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { - let rotate_cap: LibraAccount.KeyRotationCapability; - rotate_cap = LibraAccount.extract_key_rotation_capability(copy(account)); - LibraAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); - LibraAccount.restore_key_rotation_capability(move(rotate_cap)); +main(dr_account: &signer, account: &signer, auth_key_prefix: vector) { + let rotate_cap: DiemAccount.KeyRotationCapability; + rotate_cap = DiemAccount.extract_key_rotation_capability(copy(account)); + DiemAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); + DiemAccount.restore_key_rotation_capability(move(rotate_cap)); return; } @@ -47,7 +47,7 @@ main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { .into_script_blob("file_name", code) .expect("Failed to compile") }; - let account = Account::new_libra_root(); + let account = Account::new_diem_root(); let txn = account .transaction() .write_set(WriteSetPayload::Script { @@ -64,7 +64,7 @@ main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { let output = executor.execute_and_apply(txn); // The transaction should not trigger a reconfiguration. - let new_epoch_event_key = libra_types::on_chain_config::new_epoch_event_key(); + let new_epoch_event_key = diem_types::on_chain_config::new_epoch_event_key(); assert!(!output .events() .iter() @@ -90,16 +90,16 @@ fn admin_script_rotate_key_single_signer_new_epoch() { let script_body = { let code = r#" -import 0x1.LibraAccount; -import 0x1.LibraConfig; +import 0x1.DiemAccount; +import 0x1.DiemConfig; -main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { - let rotate_cap: LibraAccount.KeyRotationCapability; - rotate_cap = LibraAccount.extract_key_rotation_capability(copy(account)); - LibraAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); - LibraAccount.restore_key_rotation_capability(move(rotate_cap)); +main(dr_account: &signer, account: &signer, auth_key_prefix: vector) { + let rotate_cap: DiemAccount.KeyRotationCapability; + rotate_cap = DiemAccount.extract_key_rotation_capability(copy(account)); + DiemAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); + DiemAccount.restore_key_rotation_capability(move(rotate_cap)); - LibraConfig.reconfigure(move(lr_account)); + DiemConfig.reconfigure(move(dr_account)); return; } "#; @@ -113,7 +113,7 @@ main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { .into_script_blob("file_name", code) .expect("Failed to compile") }; - let account = Account::new_libra_root(); + let account = Account::new_diem_root(); let txn = account .transaction() .write_set(WriteSetPayload::Script { @@ -130,7 +130,7 @@ main(lr_account: &signer, account: &signer, auth_key_prefix: vector) { let output = executor.execute_and_apply(txn); // The transaction should trigger a reconfiguration. - let new_epoch_event_key = libra_types::on_chain_config::new_epoch_event_key(); + let new_epoch_event_key = diem_types::on_chain_config::new_epoch_event_key(); assert!(output .events() .iter() @@ -156,13 +156,13 @@ fn admin_script_rotate_key_multi_signer() { let script_body = { let code = r#" -import 0x1.LibraAccount; +import 0x1.DiemAccount; main(account: &signer, auth_key_prefix: vector) { - let rotate_cap: LibraAccount.KeyRotationCapability; - rotate_cap = LibraAccount.extract_key_rotation_capability(copy(account)); - LibraAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); - LibraAccount.restore_key_rotation_capability(move(rotate_cap)); + let rotate_cap: DiemAccount.KeyRotationCapability; + rotate_cap = DiemAccount.extract_key_rotation_capability(copy(account)); + DiemAccount.rotate_authentication_key(&rotate_cap, move(auth_key_prefix)); + DiemAccount.restore_key_rotation_capability(move(rotate_cap)); return; } @@ -177,7 +177,7 @@ main(account: &signer, auth_key_prefix: vector) { .into_script_blob("file_name", code) .expect("Failed to compile") }; - let account = Account::new_libra_root(); + let account = Account::new_diem_root(); let txn = account .transaction() .write_set(WriteSetPayload::Script { diff --git a/language/e2e-testsuite/src/tests/create_account.rs b/language/e2e-testsuite/src/tests/create_account.rs index 05cfdadeb4..415ba4fa06 100644 --- a/language/e2e-testsuite/src/tests/create_account.rs +++ b/language/e2e-testsuite/src/tests/create_account.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::{account_config, transaction::TransactionStatus, vm_status::KeptVMStatus}; use language_e2e_tests::{ account::{self, Account}, common_transactions::create_account_txn, current_function_name, executor::FakeExecutor, }; -use libra_types::{account_config, transaction::TransactionStatus, vm_status::KeptVMStatus}; #[test] fn create_account() { @@ -24,7 +24,7 @@ fn create_account() { &new_account, 0, initial_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); // execute transaction @@ -41,7 +41,7 @@ fn create_account() { .expect("sender must exist"); let updated_receiver_balance = executor - .read_balance_resource(&new_account, account::coin1_tmp_currency_code()) + .read_balance_resource(&new_account, account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(initial_amount, updated_receiver_balance.coin()); assert_eq!(1, updated_sender.sequence_number()); diff --git a/language/e2e-testsuite/src/tests/data_store.rs b/language/e2e-testsuite/src/tests/data_store.rs index 17fbd76732..1077d0d50b 100644 --- a/language/e2e-testsuite/src/tests/data_store.rs +++ b/language/e2e-testsuite/src/tests/data_store.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytecode_verifier::verify_module; use compiler::Compiler; +use diem_types::{ + transaction::{Module, SignedTransaction, Transaction, TransactionStatus}, + vm_status::KeptVMStatus, +}; use language_e2e_tests::{ account::AccountData, compile::compile_script_with_address, current_function_name, executor::FakeExecutor, }; -use libra_types::{ - transaction::{Module, SignedTransaction, Transaction, TransactionStatus}, - vm_status::KeptVMStatus, -}; use vm::CompiledModule; #[test] diff --git a/language/e2e-testsuite/src/tests/emergency_admin_script.rs b/language/e2e-testsuite/src/tests/emergency_admin_script.rs index a9bb6bd12a..3da8c0d3bd 100644 --- a/language/e2e-testsuite/src/tests/emergency_admin_script.rs +++ b/language/e2e-testsuite/src/tests/emergency_admin_script.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{ - account::Account, common_transactions::peer_to_peer_txn, current_function_name, - executor::FakeExecutor, -}; -use libra_crypto::HashValue; -use libra_types::{ - account_config::libra_root_address, +use diem_crypto::HashValue; +use diem_types::{ + account_config::diem_root_address, on_chain_config::new_epoch_event_key, transaction::{TransactionPayload, TransactionStatus}, vm_status::KeptVMStatus, }; -use libra_writeset_generator::{ +use diem_writeset_generator::{ encode_custom_script, encode_halt_network_transaction, encode_remove_validators_transaction, }; +use language_e2e_tests::{ + account::Account, common_transactions::peer_to_peer_txn, current_function_name, + executor::FakeExecutor, +}; use move_core_types::vm_status::StatusCode; use move_vm_types::values::Value; use serde_json::json; @@ -24,14 +24,14 @@ use transaction_builder::*; fn validator_batch_remove() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let libra_root_account = Account::new_libra_root(); + let diem_root_account = Account::new_diem_root(); let validator_account_0 = executor.create_raw_account(); let validator_account_1 = executor.create_raw_account(); let operator_account = executor.create_raw_account(); // Add validator_0 executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_account_script( 0, @@ -44,7 +44,7 @@ fn validator_batch_remove() { ); // Add operator executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_operator_account_script( 0, @@ -88,9 +88,9 @@ fn validator_batch_remove() { .sign(), ); - // libra_root adds validator + // diem_root adds validator executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_validator_and_reconfigure_script( 2, @@ -104,7 +104,7 @@ fn validator_batch_remove() { // Add validator_1 executor.new_block(); executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_account_script( 0, @@ -147,9 +147,9 @@ fn validator_batch_remove() { .sign(), ); - // libra_root adds validator + // diem_root adds validator executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_validator_and_reconfigure_script( 3, @@ -192,26 +192,26 @@ fn validator_batch_remove() { // Make sure both validators are removed from the validator set. assert!(executor .try_exec( - "LibraSystem", + "DiemSystem", "remove_validator", vec![], vec![ - Value::transaction_argument_signer_reference(libra_root_address()), + Value::transaction_argument_signer_reference(diem_root_address()), Value::address(*validator_account_0.address()) ], - libra_root_account.address() + diem_root_account.address() ) .is_err()); assert!(executor .try_exec( - "LibraSystem", + "DiemSystem", "remove_validator", vec![], vec![ - Value::transaction_argument_signer_reference(libra_root_address()), + Value::transaction_argument_signer_reference(diem_root_address()), Value::address(*validator_account_1.address()) ], - libra_root_account.address() + diem_root_account.address() ) .is_err()); } @@ -220,7 +220,7 @@ fn validator_batch_remove() { fn halt_network() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let libra_root_account = Account::new_libra_root(); + let diem_root_account = Account::new_diem_root(); let sender = executor.create_raw_account_data(1_000_000, 10); let receiver = executor.create_raw_account_data(100_000, 10); executor.add_account_data(&sender); @@ -256,9 +256,9 @@ fn halt_network() { &TransactionStatus::Discard(StatusCode::UNKNOWN_SCRIPT) ); - // LibraRoot can still send transaction + // DiemRoot can still send transaction executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_to_script_allow_list_script(script_hash, 0)) .sequence_number(1) diff --git a/language/e2e-testsuite/src/tests/execution_strategies.rs b/language/e2e-testsuite/src/tests/execution_strategies.rs index 74bb119070..ac1f670809 100644 --- a/language/e2e-testsuite/src/tests/execution_strategies.rs +++ b/language/e2e-testsuite/src/tests/execution_strategies.rs @@ -1,6 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::{account_config, transaction::SignedTransaction, vm_status::VMStatus}; use language_e2e_tests::{ account::Account, common_transactions::create_account_txn, @@ -15,17 +16,16 @@ use language_e2e_tests::{ types::Executor, }, }; -use libra_types::{account_config, transaction::SignedTransaction, vm_status::VMStatus}; fn txn(seq_num: u64) -> SignedTransaction { let account = Account::new(); - let libra_root = Account::new_libra_root(); + let diem_root = Account::new_diem_root(); create_account_txn( - &libra_root, + &diem_root, &account, seq_num + 1, 0, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ) } diff --git a/language/e2e-testsuite/src/tests/failed_transaction_tests.rs b/language/e2e-testsuite/src/tests/failed_transaction_tests.rs index 800536d2bc..ec23b1be17 100644 --- a/language/e2e-testsuite/src/tests/failed_transaction_tests.rs +++ b/language/e2e-testsuite/src/tests/failed_transaction_tests.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::vm_status::{KeptVMStatus, StatusCode, VMStatus}; +use diem_vm::{data_cache::StateViewCache, transaction_metadata::TransactionMetadata, DiemVM}; use language_e2e_tests::{ account, common_transactions::peer_to_peer_txn, current_function_name, executor::FakeExecutor, }; -use libra_types::vm_status::{KeptVMStatus, StatusCode, VMStatus}; -use libra_vm::{data_cache::StateViewCache, transaction_metadata::TransactionMetadata, LibraVM}; use move_core_types::gas_schedule::{GasAlgebra, GasPrice, GasUnits}; use move_vm_runtime::logging::NoContextLog; use move_vm_types::gas_schedule::zero_cost_schedule; @@ -18,7 +18,7 @@ fn failed_transaction_cleanup_test() { executor.add_account_data(&sender); let log_context = NoContextLog::new(); - let libra_vm = LibraVM::new(executor.get_state_view()); + let diem_vm = DiemVM::new(executor.get_state_view()); let data_cache = StateViewCache::new(executor.get_state_view()); let mut txn_data = TransactionMetadata::default(); @@ -31,13 +31,13 @@ fn failed_transaction_cleanup_test() { let gas_schedule = zero_cost_schedule(); // TYPE_MISMATCH should be kept and charged. - let out1 = libra_vm.failed_transaction_cleanup( + let out1 = diem_vm.failed_transaction_cleanup( VMStatus::Error(StatusCode::TYPE_MISMATCH), &gas_schedule, gas_left, &txn_data, &data_cache, - &account::coin1_tmp_currency_code(), + &account::xus_currency_code(), &log_context, ); assert!(!out1.write_set().is_empty()); @@ -50,13 +50,13 @@ fn failed_transaction_cleanup_test() { ); // Invariant violations should be discarded and not charged. - let out2 = libra_vm.failed_transaction_cleanup( + let out2 = diem_vm.failed_transaction_cleanup( VMStatus::Error(StatusCode::UNKNOWN_INVARIANT_VIOLATION_ERROR), &gas_schedule, gas_left, &txn_data, &data_cache, - &account::coin1_tmp_currency_code(), + &account::xus_currency_code(), &log_context, ); assert!(out2.write_set().is_empty()); diff --git a/language/e2e-testsuite/src/tests/genesis.rs b/language/e2e-testsuite/src/tests/genesis.rs index 600721aa28..7069b6b08e 100644 --- a/language/e2e-testsuite/src/tests/genesis.rs +++ b/language/e2e-testsuite/src/tests/genesis.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::transaction::{Transaction, TransactionStatus, WriteSetPayload}; use language_e2e_tests::{ common_transactions::peer_to_peer_txn, data_store::GENESIS_CHANGE_SET, executor::FakeExecutor, }; -use libra_types::transaction::{Transaction, TransactionStatus, WriteSetPayload}; #[test] fn no_deletion_in_genesis() { diff --git a/language/e2e-testsuite/src/tests/genesis_initializations.rs b/language/e2e-testsuite/src/tests/genesis_initializations.rs index d2f9b9ea64..b942661c96 100644 --- a/language/e2e-testsuite/src/tests/genesis_initializations.rs +++ b/language/e2e-testsuite/src/tests/genesis_initializations.rs @@ -1,89 +1,89 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::account_config; use language_e2e_tests::executor::FakeExecutor; -use libra_types::account_config; use move_core_types::account_address::AccountAddress; use move_vm_types::values::Value; #[test] -fn test_libra_initialize() { +fn test_diem_initialize() { let mut executor = FakeExecutor::stdlib_only_genesis(); - // LR doesn't have role yet, so role check will fail + // DR doesn't have role yet, so role check will fail let output = executor.try_exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); assert_eq!(output.unwrap_err().move_abort_code(), Some(5)); - // Grant the LR role + // Grant the DR role executor.exec( "Roles", - "grant_libra_root_role", + "grant_diem_root_role", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); // Now initialize, it should all succeed. executor.exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); // Second time you try though you'll get an already published error with EMODIFY_CAPABILITY // reason. let output = executor.try_exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); assert_eq!(output.unwrap_err().move_abort_code(), Some(262)); } #[test] -fn test_libra_initialize_tc_account() { +fn test_diem_initialize_tc_account() { let mut executor = FakeExecutor::stdlib_only_genesis(); - // LR doesn't have role yet, so role check will fail + // DR doesn't have role yet, so role check will fail let output = executor.try_exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); assert_eq!(output.unwrap_err().move_abort_code(), Some(5)); - // Grant the LR role + // Grant the DR role executor.exec( "Roles", - "grant_libra_root_role", + "grant_diem_root_role", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); // Grant the TC role @@ -95,14 +95,14 @@ fn test_libra_initialize_tc_account() { Value::transaction_argument_signer_reference( account_config::treasury_compliance_account_address(), ), - Value::transaction_argument_signer_reference(account_config::libra_root_address()), + Value::transaction_argument_signer_reference(account_config::diem_root_address()), ], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); // Try to initialize, invalid sender so role check will fail let output = executor.try_exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( @@ -115,19 +115,19 @@ fn test_libra_initialize_tc_account() { // Now initialize, it should all succeed. executor.exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); // Second time you try though you'll get an already published error with EMODIFY_CAPABILITY // reason. let output = executor.try_exec( - "Libra", + "Diem", "initialize", vec![], vec![Value::transaction_argument_signer_reference( @@ -140,13 +140,13 @@ fn test_libra_initialize_tc_account() { } #[test] -fn test_libra_timestamp_time_has_started() { +fn test_diem_timestamp_time_has_started() { let mut executor = FakeExecutor::stdlib_only_genesis(); let account_address = AccountAddress::random(); - // Invalid address used to call `LibraTimestamp::set_time_has_started` + // Invalid address used to call `DiemTimestamp::set_time_has_started` let output = executor.try_exec( - "LibraTimestamp", + "DiemTimestamp", "set_time_has_started", vec![], vec![Value::transaction_argument_signer_reference( @@ -157,30 +157,30 @@ fn test_libra_timestamp_time_has_started() { assert_eq!(output.unwrap_err().move_abort_code(), Some(2)); executor.exec( - "LibraTimestamp", + "DiemTimestamp", "set_time_has_started", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); let output = executor.try_exec( - "LibraTimestamp", + "DiemTimestamp", "set_time_has_started", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); assert_eq!(output.unwrap_err().move_abort_code(), Some(1)); } #[test] -fn test_libra_block_double_init() { +fn test_diem_block_double_init() { let mut executor = FakeExecutor::stdlib_only_genesis(); executor.exec( @@ -188,29 +188,29 @@ fn test_libra_block_double_init() { "publish_generator", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); executor.exec( - "LibraBlock", + "DiemBlock", "initialize_block_metadata", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); let output = executor.try_exec( - "LibraBlock", + "DiemBlock", "initialize_block_metadata", vec![], vec![Value::transaction_argument_signer_reference( - account_config::libra_root_address(), + account_config::diem_root_address(), )], - &account_config::libra_root_address(), + &account_config::diem_root_address(), ); assert_eq!(output.unwrap_err().move_abort_code(), Some(6)); diff --git a/language/e2e-testsuite/src/tests/mint.rs b/language/e2e-testsuite/src/tests/mint.rs index d5d3e6bc1d..c9f3057bfb 100644 --- a/language/e2e-testsuite/src/tests/mint.rs +++ b/language/e2e-testsuite/src/tests/mint.rs @@ -1,6 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::{ + account_config, + transaction::TransactionStatus, + vm_status::{known_locations, KeptVMStatus}, +}; use language_e2e_tests::{ account::{self, Account}, current_function_name, @@ -8,11 +13,6 @@ use language_e2e_tests::{ gas_costs::TXN_RESERVED, transaction_status_eq, }; -use libra_types::{ - account_config, - transaction::TransactionStatus, - vm_status::{known_locations, KeptVMStatus}, -}; use transaction_builder::*; #[test] @@ -28,7 +28,7 @@ fn tiered_mint_designated_dealer() { blessed .transaction() .script(encode_create_designated_dealer_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *dd.address(), dd.auth_key_prefix(), @@ -44,7 +44,7 @@ fn tiered_mint_designated_dealer() { blessed .transaction() .script(encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 1, *dd.address(), mint_amount_one, @@ -57,7 +57,7 @@ fn tiered_mint_designated_dealer() { .read_account_resource(&dd) .expect("receiver must exist"); let dd_balance = executor - .read_balance_resource(&dd, account::coin1_tmp_currency_code()) + .read_balance_resource(&dd, account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(mint_amount_one, dd_balance.coin()); assert_eq!(0, dd_post_mint.sequence_number()); @@ -69,7 +69,7 @@ fn tiered_mint_designated_dealer() { blessed .transaction() .script(encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 2, *dd.address(), mint_amount_two, @@ -79,7 +79,7 @@ fn tiered_mint_designated_dealer() { .sign(), ); let dd_balance = executor - .read_balance_resource(&dd, account::coin1_tmp_currency_code()) + .read_balance_resource(&dd, account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(mint_amount_one + mint_amount_two, dd_balance.coin()); @@ -89,7 +89,7 @@ fn tiered_mint_designated_dealer() { blessed .transaction() .script(encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 3, *dd.address(), mint_amount_one, @@ -124,7 +124,7 @@ fn mint_to_existing_not_dd() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *receiver.address(), receiver.auth_key_prefix(), @@ -140,7 +140,7 @@ fn mint_to_existing_not_dd() { blessed .transaction() .script(encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *receiver.address(), mint_amount, @@ -176,7 +176,7 @@ fn mint_to_new_account() { let output = executor.execute_transaction( tc.transaction() .script(encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *new_account.address(), mint_amount, @@ -202,12 +202,12 @@ fn tiered_update_exchange_rate() { let blessed = Account::new_blessed_tc(); - // set coin1_tmp rate to 1.23 Coin1 + // set xus rate to 1.23 XUS executor.execute_and_apply( blessed .transaction() .script(encode_update_exchange_rate_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, 123, 100, diff --git a/language/e2e-testsuite/src/tests/mod.rs b/language/e2e-testsuite/src/tests/mod.rs index 4568aa95d2..c9194255b6 100644 --- a/language/e2e-testsuite/src/tests/mod.rs +++ b/language/e2e-testsuite/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Test module. diff --git a/language/e2e-testsuite/src/tests/module_publishing.rs b/language/e2e-testsuite/src/tests/module_publishing.rs index 752e7c6d7f..469443cda0 100644 --- a/language/e2e-testsuite/src/tests/module_publishing.rs +++ b/language/e2e-testsuite/src/tests/module_publishing.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{ - account::Account, assert_prologue_parity, compile::compile_module_with_address, - current_function_name, executor::FakeExecutor, transaction_status_eq, -}; -use libra_types::{ +use diem_types::{ account_config::{self}, on_chain_config::VMPublishingOption, transaction::TransactionStatus, vm_status::{KeptVMStatus, StatusCode}, }; +use language_e2e_tests::{ + account::Account, assert_prologue_parity, compile::compile_module_with_address, + current_function_name, executor::FakeExecutor, transaction_status_eq, +}; // A module with an address different from the sender's address should be rejected #[test] @@ -152,7 +152,7 @@ pub fn test_publishing_no_modules_non_allowlist_script_proper_sender() { executor.set_golden_file(current_function_name!()); // create a transaction trying to publish a new module. - let sender = Account::new_libra_root(); + let sender = Account::new_diem_root(); let program = String::from( " @@ -182,7 +182,7 @@ pub fn test_publishing_no_modules_proper_sender() { executor.set_golden_file(current_function_name!()); // create a transaction trying to publish a new module. - let sender = Account::new_libra_root(); + let sender = Account::new_diem_root(); let program = String::from( " diff --git a/language/e2e-testsuite/src/tests/on_chain_configs.rs b/language/e2e-testsuite/src/tests/on_chain_configs.rs index b90794454a..5b8b006ab8 100644 --- a/language/e2e-testsuite/src/tests/on_chain_configs.rs +++ b/language/e2e-testsuite/src/tests/on_chain_configs.rs @@ -1,7 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::transaction_scripts::StdlibScript; +use diem_crypto::HashValue; +use diem_types::{ + on_chain_config::DiemVersion, + transaction::{Script, TransactionArgument, TransactionStatus}, + vm_status::{KeptVMStatus, StatusCode}, +}; +use diem_vm::DiemVM; use language_e2e_tests::{ account::{self, Account}, assert_prologue_parity, @@ -10,34 +17,27 @@ use language_e2e_tests::{ executor::FakeExecutor, transaction_status_eq, }; -use libra_crypto::HashValue; -use libra_types::{ - on_chain_config::LibraVersion, - transaction::{Script, TransactionArgument, TransactionStatus}, - vm_status::{KeptVMStatus, StatusCode}, -}; -use libra_vm::LibraVM; use transaction_builder::{ encode_add_to_script_allow_list_script, encode_update_dual_attestation_limit_script, }; #[test] -fn initial_libra_version() { +fn initial_diem_version() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let vm = LibraVM::new(executor.get_state_view()); + let vm = DiemVM::new(executor.get_state_view()); assert_eq!( - vm.internals().libra_version().unwrap(), - LibraVersion { major: 1 } + vm.internals().diem_version().unwrap(), + DiemVersion { major: 1 } ); - let account = Account::new_genesis_account(libra_types::on_chain_config::config_address()); + let account = Account::new_genesis_account(diem_types::on_chain_config::config_address()); let txn = account .transaction() .script(Script::new( - StdlibScript::UpdateLibraVersion.compiled_bytes().into_vec(), + StdlibScript::UpdateDiemVersion.compiled_bytes().into_vec(), vec![], vec![TransactionArgument::U64(0), TransactionArgument::U64(2)], )) @@ -46,10 +46,10 @@ fn initial_libra_version() { executor.new_block(); executor.execute_and_apply(txn); - let new_vm = LibraVM::new(executor.get_state_view()); + let new_vm = DiemVM::new(executor.get_state_view()); assert_eq!( - new_vm.internals().libra_version().unwrap(), - LibraVersion { major: 2 } + new_vm.internals().diem_version().unwrap(), + DiemVersion { major: 2 } ); } @@ -57,18 +57,18 @@ fn initial_libra_version() { fn drop_txn_after_reconfiguration() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let vm = LibraVM::new(executor.get_state_view()); + let vm = DiemVM::new(executor.get_state_view()); assert_eq!( - vm.internals().libra_version().unwrap(), - LibraVersion { major: 1 } + vm.internals().diem_version().unwrap(), + DiemVersion { major: 1 } ); - let account = Account::new_genesis_account(libra_types::on_chain_config::config_address()); + let account = Account::new_genesis_account(diem_types::on_chain_config::config_address()); let txn = account .transaction() .script(Script::new( - StdlibScript::UpdateLibraVersion.compiled_bytes().into_vec(), + StdlibScript::UpdateDiemVersion.compiled_bytes().into_vec(), vec![], vec![TransactionArgument::U64(0), TransactionArgument::U64(2)], )) @@ -97,13 +97,13 @@ fn updated_limit_allows_txn() { executor.add_account_data(&receiver); // Execute updated dual attestation limit - let new_micro_lbr_limit = 1_000_011; + let new_micro_xdx_limit = 1_000_011; let output = executor.execute_and_apply( blessed .transaction() .script(encode_update_dual_attestation_limit_script( 3, - new_micro_lbr_limit, + new_micro_xdx_limit, )) .sequence_number(0) .sign(), @@ -122,10 +122,10 @@ fn updated_limit_allows_txn() { &TransactionStatus::Keep(KeptVMStatus::Executed) )); let sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); let receiver_balance = executor - .read_balance_resource(receiver.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(receiver.account(), account::xus_currency_code()) .expect("receiver balcne must exist"); assert_eq!(3_999_990, sender_balance.coin()); @@ -137,7 +137,7 @@ fn update_script_allow_list() { // create a FakeExecutor with a genesis from file let mut executor = FakeExecutor::allowlist_genesis(); executor.set_golden_file(current_function_name!()); - let lr = Account::new_libra_root(); + let dr = Account::new_diem_root(); // create and publish a sender with 5_000_000 coins and a receiver with 0 coins let sender = executor.create_raw_account_data(5_000_000, 10); executor.add_account_data(&sender); @@ -159,9 +159,9 @@ fn update_script_allow_list() { StatusCode::UNKNOWN_SCRIPT ); - // LIBRA_ROOT can send arbitrary txn to the network. + // DIEM_ROOT can send arbitrary txn to the network. let random_script = vec![]; - let txn = lr + let txn = dr .transaction() .script(Script::new(random_script.clone(), vec![], vec![])) .sequence_number(1) @@ -172,9 +172,9 @@ fn update_script_allow_list() { &TransactionStatus::Keep(KeptVMStatus::MiscellaneousError) ); - // LR append this hash to the allow list + // DR append this hash to the allow list executor.execute_and_apply( - lr.transaction() + dr.transaction() .script(encode_add_to_script_allow_list_script( HashValue::sha3_256_of(random_script.as_ref()).to_vec(), 0, diff --git a/language/e2e-testsuite/src/tests/peer_to_peer.rs b/language/e2e-testsuite/src/tests/peer_to_peer.rs index efb396e43d..c7d507f0f8 100644 --- a/language/e2e-testsuite/src/tests/peer_to_peer.rs +++ b/language/e2e-testsuite/src/tests/peer_to_peer.rs @@ -1,15 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::transaction_scripts::StdlibScript; -use language_e2e_tests::{ - account::{self, Account}, - common_transactions::peer_to_peer_txn, - current_function_name, - executor::FakeExecutor, - transaction_status_eq, -}; -use libra_types::{ +use diem_types::{ account_config::{self, ReceivedPaymentEvent, SentPaymentEvent}, on_chain_config::VMPublishingOption, transaction::{ @@ -17,12 +10,19 @@ use libra_types::{ }, vm_status::{known_locations, KeptVMStatus}, }; +use language_e2e_tests::{ + account::{self, Account}, + common_transactions::peer_to_peer_txn, + current_function_name, + executor::FakeExecutor, + transaction_status_eq, +}; use std::{convert::TryFrom, time::Instant}; use vm::file_format::{Bytecode, CompiledScript}; #[test] fn single_peer_to_peer_with_event() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // create a FakeExecutor with a genesis from file let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); @@ -51,13 +51,13 @@ fn single_peer_to_peer_with_event() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); let updated_receiver = executor .read_account_resource(receiver.account()) .expect("receiver must exist"); let updated_receiver_balance = executor - .read_balance_resource(receiver.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(receiver.account(), account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(receiver_balance, updated_receiver_balance.coin()); assert_eq!(sender_balance, updated_sender_balance.coin()); @@ -79,7 +79,7 @@ fn single_peer_to_peer_with_event() { #[test] fn single_peer_to_peer_with_padding() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // create a FakeExecutor with a genesis from file let mut executor = FakeExecutor::from_genesis_with_options(VMPublishingOption::custom_scripts()); @@ -113,7 +113,7 @@ fn single_peer_to_peer_with_padding() { Script::new( script_bytes, - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], vec![ TransactionArgument::Address(*receiver.address()), TransactionArgument::U64(transfer_amount), @@ -147,10 +147,10 @@ fn single_peer_to_peer_with_padding() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); let updated_receiver_balance = executor - .read_balance_resource(receiver.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(receiver.account(), account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(receiver_balance, updated_receiver_balance.coin()); assert_eq!(sender_balance, updated_sender_balance.coin()); @@ -199,10 +199,10 @@ fn few_peer_to_peer_with_event() { } let original_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); let original_receiver_balance = executor - .read_balance_resource(receiver.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(receiver.account(), account::xus_currency_code()) .expect("receiver balcne must exist"); executor.apply_write_set(txn_output.write_set()); @@ -213,13 +213,13 @@ fn few_peer_to_peer_with_event() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); let updated_receiver = executor .read_account_resource(receiver.account()) .expect("receiver must exist"); let updated_receiver_balance = executor - .read_balance_resource(receiver.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(receiver.account(), account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(receiver_balance, updated_receiver_balance.coin()); assert_eq!(sender_balance, updated_sender_balance.coin()); @@ -279,7 +279,7 @@ impl TxnInfo { } // Create a cyclic transfer around a slice of Accounts. -// Each Account makes a transfer for the same amount to the next LibraAccount. +// Each Account makes a transfer for the same amount to the next DiemAccount. fn create_cyclic_transfers( executor: &FakeExecutor, accounts: &[Account], @@ -378,12 +378,12 @@ fn check_and_apply_transfer_output( .read_account_resource(&sender) .expect("sender must exist"); let sender_balance = executor - .read_balance_resource(&sender, account::coin1_tmp_currency_code()) + .read_balance_resource(&sender, account::xus_currency_code()) .expect("sender balance must exist"); let sender_initial_balance = sender_balance.coin(); let sender_seq_num = sender_resource.sequence_number(); let receiver_initial_balance = executor - .read_balance_resource(&receiver, account::coin1_tmp_currency_code()) + .read_balance_resource(&receiver, account::xus_currency_code()) .expect("receiver balance must exist") .coin(); @@ -398,10 +398,10 @@ fn check_and_apply_transfer_output( .read_account_resource(&sender) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(&sender, account::coin1_tmp_currency_code()) + .read_balance_resource(&sender, account::xus_currency_code()) .expect("sender balance must exist"); let updated_receiver_balance = executor - .read_balance_resource(&receiver, account::coin1_tmp_currency_code()) + .read_balance_resource(&receiver, account::xus_currency_code()) .expect("receiver balance must exist"); assert_eq!(receiver_balance, updated_receiver_balance.coin()); assert_eq!(sender_balance, updated_sender_balance.coin()); diff --git a/language/e2e-testsuite/src/tests/rotate_key.rs b/language/e2e-testsuite/src/tests/rotate_key.rs index a2d79dbf13..de4a55d4a0 100644 --- a/language/e2e-testsuite/src/tests/rotate_key.rs +++ b/language/e2e-testsuite/src/tests/rotate_key.rs @@ -1,22 +1,22 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{ - account, - common_transactions::{raw_rotate_key_txn, rotate_key_txn}, - current_function_name, - executor::FakeExecutor, - keygen::KeyGen, -}; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519PrivateKey, multi_ed25519::{MultiEd25519PublicKey, MultiEd25519Signature}, PrivateKey, SigningKey, Uniform, }; -use libra_types::{ +use diem_types::{ transaction::{authenticator::AuthenticationKey, SignedTransaction, TransactionStatus}, vm_status::{KeptVMStatus, StatusCode}, }; +use language_e2e_tests::{ + account, + common_transactions::{raw_rotate_key_txn, rotate_key_txn}, + current_function_name, + executor::FakeExecutor, + keygen::KeyGen, +}; #[test] fn rotate_ed25519_key() { @@ -46,7 +46,7 @@ fn rotate_ed25519_key() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(new_key_hash, updated_sender.authentication_key().to_vec()); assert_eq!(balance, updated_sender_balance.coin()); diff --git a/language/e2e-testsuite/src/tests/scripts.rs b/language/e2e-testsuite/src/tests/scripts.rs index be4602984d..bb65faf6ba 100644 --- a/language/e2e-testsuite/src/tests/scripts.rs +++ b/language/e2e-testsuite/src/tests/scripts.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{account, current_function_name, executor::FakeExecutor}; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_config, on_chain_config::VMPublishingOption, transaction::{Script, TransactionStatus}, vm_status::KeptVMStatus, }; +use language_e2e_tests::{account, current_function_name, executor::FakeExecutor}; use move_core_types::{ identifier::Identifier, language_storage::{StructTag, TypeTag}, @@ -60,7 +60,7 @@ fn script_code_unverifiable() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); @@ -136,7 +136,7 @@ fn script_none_existing_module_dep() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); @@ -212,7 +212,7 @@ fn script_non_existing_function_dep() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); @@ -289,7 +289,7 @@ fn script_bad_sig_function_dep() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); @@ -354,7 +354,7 @@ fn script_type_argument_module_does_not_exist() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); @@ -419,7 +419,7 @@ fn script_nested_type_argument_module_does_not_exist() { .read_account_resource(sender.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource(sender.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(sender.account(), account::xus_currency_code()) .expect("sender balance must exist"); assert_eq!(balance, updated_sender_balance.coin()); assert_eq!(11, updated_sender.sequence_number()); diff --git a/language/e2e-testsuite/src/tests/transaction_builder.rs b/language/e2e-testsuite/src/tests/transaction_builder.rs index 15d85021b2..54ef222535 100644 --- a/language/e2e-testsuite/src/tests/transaction_builder.rs +++ b/language/e2e-testsuite/src/tests/transaction_builder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Tests for all of the script encoding functions in language/transaction_builder/lib.rs. @@ -8,6 +8,13 @@ #![forbid(unsafe_code)] +use diem_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, PrivateKey, Uniform}; +use diem_types::{ + account_address::AccountAddress, + account_config, + transaction::{authenticator::AuthenticationKey, Script, TransactionOutput, TransactionStatus}, + vm_status::{KeptVMStatus, StatusCode}, +}; use language_e2e_tests::{ account::{self, Account}, common_transactions::rotate_key_txn, @@ -16,17 +23,10 @@ use language_e2e_tests::{ gas_costs, keygen::KeyGen, }; -use libra_crypto::{ed25519::Ed25519PrivateKey, traits::SigningKey, PrivateKey, Uniform}; -use libra_types::{ - account_address::AccountAddress, - account_config, - transaction::{authenticator::AuthenticationKey, Script, TransactionOutput, TransactionStatus}, - vm_status::{KeptVMStatus, StatusCode}, -}; use move_core_types::language_storage::TypeTag; use transaction_builder::*; -const COIN1_THRESHOLD: u64 = 10_000_000_000 / 5; +const XUS_THRESHOLD: u64 = 10_000_000_000 / 5; const BAD_METADATA_SIGNATURE_ERROR_CODE: u64 = 775; const MISMATCHED_METADATA_SIGNATURE_ERROR_CODE: u64 = 1031; const PAYEE_COMPLIANCE_KEY_NOT_SET_ERROR_CODE: u64 = 1281; @@ -45,7 +45,7 @@ fn freeze_unfreeze_account() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *account.address(), account.auth_key_prefix(), @@ -110,7 +110,7 @@ fn create_parent_and_child_vasp() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *parent.address(), parent.auth_key_prefix(), @@ -126,7 +126,7 @@ fn create_parent_and_child_vasp() { parent .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), add_all_currencies, @@ -138,7 +138,7 @@ fn create_parent_and_child_vasp() { // check for zero balance assert_eq!( executor - .read_balance_resource(&child, account::coin1_tmp_currency_code()) + .read_balance_resource(&child, account::xus_currency_code()) .unwrap() .coin(), 0 @@ -174,7 +174,7 @@ fn create_child_vasp_all_currencies() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *parent.address(), parent.auth_key_prefix(), @@ -190,7 +190,7 @@ fn create_child_vasp_all_currencies() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *parent.address(), amount, vec![], @@ -201,7 +201,7 @@ fn create_child_vasp_all_currencies() { ); assert!(executor - .read_balance_resource(&parent, account::coin1_tmp_currency_code()) + .read_balance_resource(&parent, account::xus_currency_code()) .is_some()); // create a child VASP with a balance of amount @@ -209,7 +209,7 @@ fn create_child_vasp_all_currencies() { parent .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), add_all_currencies, @@ -221,7 +221,7 @@ fn create_child_vasp_all_currencies() { ); assert!(executor - .read_balance_resource(&parent, account::coin1_tmp_currency_code()) + .read_balance_resource(&parent, account::xus_currency_code()) .is_some()); } @@ -241,7 +241,7 @@ fn create_child_vasp_with_balance() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *parent.address(), parent.auth_key_prefix(), @@ -257,7 +257,7 @@ fn create_child_vasp_with_balance() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *parent.address(), amount, vec![], @@ -269,7 +269,7 @@ fn create_child_vasp_with_balance() { assert_eq!( executor - .read_balance_resource(&parent, account::coin1_tmp_currency_code()) + .read_balance_resource(&parent, account::xus_currency_code()) .unwrap() .coin(), amount @@ -280,7 +280,7 @@ fn create_child_vasp_with_balance() { parent .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), add_all_currencies, @@ -294,7 +294,7 @@ fn create_child_vasp_with_balance() { // check balance assert_eq!( executor - .read_balance_resource(&child, account::coin1_tmp_currency_code()) + .read_balance_resource(&child, account::xus_currency_code()) .unwrap() .coin(), amount @@ -318,13 +318,13 @@ fn dual_attestation_payment() { let (receiver_vasp_compliance_private_key, receiver_vasp_compliance_public_key) = keygen.generate_keypair(); - let payment_amount = COIN1_THRESHOLD; + let payment_amount = XUS_THRESHOLD; executor.execute_and_apply( blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *payment_sender.address(), payment_sender.auth_key_prefix(), @@ -339,7 +339,7 @@ fn dual_attestation_payment() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *payment_receiver.address(), payment_receiver.auth_key_prefix(), @@ -365,9 +365,9 @@ fn dual_attestation_payment() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *payment_sender.address(), - COIN1_THRESHOLD * 10, + XUS_THRESHOLD * 10, vec![], vec![], )) @@ -380,7 +380,7 @@ fn dual_attestation_payment() { payment_sender .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender_child.address(), sender_child.auth_key_prefix(), false, @@ -395,7 +395,7 @@ fn dual_attestation_payment() { payment_receiver .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *payee_child.address(), payee_child.auth_key_prefix(), false, @@ -416,7 +416,7 @@ fn dual_attestation_payment() { *payment_sender.address(), *payment_receiver.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ref_id, &receiver_vasp_compliance_private_key, )) @@ -438,7 +438,7 @@ fn dual_attestation_payment() { *payment_sender.address(), *payee_child.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ref_id, &receiver_vasp_compliance_private_key, )) @@ -455,7 +455,7 @@ fn dual_attestation_payment() { payment_sender .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *payment_receiver.address(), payment_amount, ref_id, @@ -481,7 +481,7 @@ fn dual_attestation_payment() { *payment_sender.address(), *payment_receiver.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ref_id, // Sign with the wrong private key &sender_vasp_compliance_private_key, @@ -503,7 +503,7 @@ fn dual_attestation_payment() { *payment_sender.address(), *payment_receiver.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ref_id, &sender_vasp_compliance_private_key, )) @@ -520,7 +520,7 @@ fn dual_attestation_payment() { payment_sender .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender_child.address(), payment_amount * 2, vec![0], @@ -535,7 +535,7 @@ fn dual_attestation_payment() { payment_sender .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender_child.address(), payment_amount * 2, vec![0], @@ -553,7 +553,7 @@ fn dual_attestation_payment() { sender_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *payment_sender.address(), payment_amount, vec![0], @@ -569,7 +569,7 @@ fn dual_attestation_payment() { sender_child .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender_child.address(), payment_amount, vec![0], @@ -604,7 +604,7 @@ fn dual_attestation_payment() { *payment_sender.address(), *payment_receiver.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), // pick an arbitrary ref_id lcs::to_bytes(&9999u64).unwrap(), &receiver_vasp_compliance_private_key, @@ -623,7 +623,7 @@ fn dual_attestation_payment() { *payment_receiver.address(), *payment_sender.address(), payment_amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), // pick an arbitrary ref_id lcs::to_bytes(&9999u64).unwrap(), &receiver_vasp_compliance_private_key, @@ -643,7 +643,7 @@ fn create_dual_attestation_payment( ref_id: Vec, receiver_compliance_private_key: &Ed25519PrivateKey, ) -> Script { - let mut domain_separator = b"@@$$LIBRA_ATTEST$$@@".to_vec(); + let mut domain_separator = b"@@$$DIEM_ATTEST$$@@".to_vec(); let message = { let mut msg = ref_id.clone(); msg.append(&mut lcs::to_bytes(&sender_address).unwrap()); @@ -698,7 +698,7 @@ fn dd_dual_attestation_payments() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *parent_vasp.address(), parent_vasp.auth_key_prefix(), @@ -713,7 +713,7 @@ fn dd_dual_attestation_payments() { blessed .transaction() .script(encode_create_designated_dealer_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *dd1.address(), dd1.auth_key_prefix(), @@ -728,7 +728,7 @@ fn dd_dual_attestation_payments() { blessed .transaction() .script(encode_create_designated_dealer_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *dd2.address(), dd2.auth_key_prefix(), @@ -774,9 +774,9 @@ fn dd_dual_attestation_payments() { mint_dd .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd1.address(), - COIN1_THRESHOLD * 4, + XUS_THRESHOLD * 4, vec![], vec![], )) @@ -788,9 +788,9 @@ fn dd_dual_attestation_payments() { mint_dd .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *parent_vasp.address(), - COIN1_THRESHOLD * 2, + XUS_THRESHOLD * 2, vec![], vec![], )) @@ -802,9 +802,9 @@ fn dd_dual_attestation_payments() { executor.execute_and_apply( dd1.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd2.address(), - COIN1_THRESHOLD, + XUS_THRESHOLD, vec![0], vec![], )) @@ -817,8 +817,8 @@ fn dd_dual_attestation_payments() { .script(create_dual_attestation_payment( *dd1.address(), *dd2.address(), - COIN1_THRESHOLD, - account_config::coin1_tmp_tag(), + XUS_THRESHOLD, + account_config::xus_tag(), // pick an arbitrary ref_id lcs::to_bytes(&9999u64).unwrap(), &dd2_compliance_private_key, @@ -831,9 +831,9 @@ fn dd_dual_attestation_payments() { executor.execute_and_apply( dd1.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *parent_vasp.address(), - COIN1_THRESHOLD, + XUS_THRESHOLD, vec![0], vec![], )) @@ -846,8 +846,8 @@ fn dd_dual_attestation_payments() { .script(create_dual_attestation_payment( *dd1.address(), *parent_vasp.address(), - COIN1_THRESHOLD, - account_config::coin1_tmp_tag(), + XUS_THRESHOLD, + account_config::xus_tag(), // pick an arbitrary ref_id lcs::to_bytes(&9999u64).unwrap(), &parent_vasp_compliance_private_key, @@ -861,9 +861,9 @@ fn dd_dual_attestation_payments() { parent_vasp .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd1.address(), - COIN1_THRESHOLD, + XUS_THRESHOLD, vec![0], vec![], )) @@ -877,8 +877,8 @@ fn dd_dual_attestation_payments() { .script(create_dual_attestation_payment( *parent_vasp.address(), *dd1.address(), - COIN1_THRESHOLD, - account_config::coin1_tmp_tag(), + XUS_THRESHOLD, + account_config::xus_tag(), // pick an arbitrary ref_id lcs::to_bytes(&9999u64).unwrap(), &dd1_compliance_private_key, @@ -892,9 +892,9 @@ fn dd_dual_attestation_payments() { parent_vasp .transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *dd1.address(), - COIN1_THRESHOLD, + XUS_THRESHOLD, vec![0], b"what a bad signature".to_vec(), )) @@ -975,7 +975,7 @@ fn recovery_address() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *parent.address(), parent.auth_key_prefix(), @@ -991,7 +991,7 @@ fn recovery_address() { parent .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), add_all_currencies, @@ -1062,7 +1062,7 @@ fn recovery_address() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *other_vasp.address(), other_vasp.auth_key_prefix(), @@ -1122,7 +1122,7 @@ fn add_child_currencies() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *vasp_a.address(), vasp_a.auth_key_prefix(), @@ -1138,7 +1138,7 @@ fn add_child_currencies() { vasp_a .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_a_child1.address(), vasp_a_child1.auth_key_prefix(), false, @@ -1166,7 +1166,7 @@ fn add_child_currencies() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *vasp_b.address(), vasp_b.auth_key_prefix(), @@ -1182,7 +1182,7 @@ fn add_child_currencies() { vasp_b .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *vasp_b_child1.address(), vasp_b_child1.auth_key_prefix(), true, diff --git a/language/e2e-testsuite/src/tests/transaction_fees.rs b/language/e2e-testsuite/src/tests/transaction_fees.rs index 616ca7715a..b34a12af50 100644 --- a/language/e2e-testsuite/src/tests/transaction_fees.rs +++ b/language/e2e-testsuite/src/tests/transaction_fees.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::transaction_scripts::StdlibScript; -use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ - account_config::{self, BurnEvent, COIN1_NAME}, +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ + account_config::{self, BurnEvent, XUS_NAME}, transaction::{authenticator::AuthenticationKey, Script, TransactionArgument}, vm_status::KeptVMStatus, }; +use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; use move_core_types::{ identifier::Identifier, language_storage::{StructTag, TypeTag}, @@ -29,7 +29,7 @@ fn burn_txn_fees() { blessed .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *sender.address(), sender.auth_key_prefix(), @@ -43,7 +43,7 @@ fn burn_txn_fees() { executor.execute_and_apply( dd.transaction() .script(encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender.address(), 10_000_000, vec![], @@ -70,24 +70,24 @@ fn burn_txn_fees() { )) .sequence_number(0) .gas_unit_price(1) - .gas_currency_code(COIN1_NAME) + .gas_currency_code(XUS_NAME) .sign(), ); assert_eq!(status.status().status(), Ok(KeptVMStatus::Executed)); status.gas_used() }; - let coin1_tmp_ty = TypeTag::Struct(StructTag { + let xus_ty = TypeTag::Struct(StructTag { address: account_config::CORE_CODE_ADDRESS, - module: Identifier::new("Coin1").unwrap(), - name: Identifier::new("Coin1").unwrap(), + module: Identifier::new("XUS").unwrap(), + name: Identifier::new("XUS").unwrap(), type_params: vec![], }); let output = executor.execute_and_apply( blessed .transaction() - .script(encode_burn_txn_fees_script(coin1_tmp_ty)) + .script(encode_burn_txn_fees_script(xus_ty)) .sequence_number(1) .sign(), ); @@ -101,7 +101,7 @@ fn burn_txn_fees() { assert_eq!(burn_events.len(), 1); assert!(burn_events .iter() - .any(|event| event.currency_code().as_str() == "Coin1")); + .any(|event| event.currency_code().as_str() == "XUS")); burn_events .iter() .for_each(|event| assert_eq!(event.amount(), gas_used)); diff --git a/language/e2e-testsuite/src/tests/transaction_fuzzer.rs b/language/e2e-testsuite/src/tests/transaction_fuzzer.rs index 4e2afae5f3..46b1ab2391 100644 --- a/language/e2e-testsuite/src/tests/transaction_fuzzer.rs +++ b/language/e2e-testsuite/src/tests/transaction_fuzzer.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::transaction_scripts::StdlibScript; +use diem_types::account_config; use language_e2e_tests::{ account::{self, Account}, executor::FakeExecutor, }; -use libra_types::account_config; use proptest::{collection::vec, prelude::*}; use std::convert::TryFrom; use transaction_builder::encode_create_parent_vasp_account_script; @@ -20,7 +20,7 @@ proptest! { ) { let executor = FakeExecutor::from_genesis_file(); let mut accounts = vec![]; - accounts.push((Account::new_libra_root(), 1)); + accounts.push((Account::new_diem_root(), 1)); accounts.push((Account::new_blessed_tc(), 0)); let num_accounts = accounts.len(); @@ -43,13 +43,13 @@ proptest! { ) { let mut executor = FakeExecutor::from_genesis_file(); let mut accounts = vec![]; - let libra_root = Account::new_libra_root(); - let coins = vec![account::coin1_tmp_currency_code()]; + let diem_root = Account::new_diem_root(); + let coins = vec![account::xus_currency_code()]; // Create a number of accounts for i in 0..10 { let account = executor.create_raw_account(); executor.execute_and_apply( - libra_root + diem_root .transaction() .script(encode_create_parent_vasp_account_script( account_config::type_tag_for_currency_code(coins[i % coins.len()].clone()), @@ -64,7 +64,7 @@ proptest! { ); accounts.push((account, 0)); } - // Don't include the LR account since txns from that can bork the system + // Don't include the DR account since txns from that can bork the system accounts.push((Account::new_genesis_account(account_config::testnet_dd_account_address()), 0)); accounts.push((Account::new_blessed_tc(), 0)); let num_accounts = accounts.len(); diff --git a/language/e2e-testsuite/src/tests/validator_set_management.rs b/language/e2e-testsuite/src/tests/validator_set_management.rs index 408062f990..2d59c4eebf 100644 --- a/language/e2e-testsuite/src/tests/validator_set_management.rs +++ b/language/e2e-testsuite/src/tests/validator_set_management.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; -use libra_types::{ +use diem_types::{ on_chain_config::new_epoch_event_key, transaction::{TransactionStatus, WriteSetPayload}, vm_status::KeptVMStatus, }; +use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; use transaction_builder::*; #[test] @@ -14,12 +14,12 @@ fn validator_add() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let libra_root_account = Account::new_libra_root(); + let diem_root_account = Account::new_diem_root(); let validator_account = executor.create_raw_account(); let operator_account = executor.create_raw_account(); executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_account_script( 0, @@ -31,7 +31,7 @@ fn validator_add() { .sign(), ); executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_operator_account_script( 0, @@ -74,7 +74,7 @@ fn validator_add() { ); let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_validator_and_reconfigure_script( 2, @@ -99,12 +99,12 @@ fn validator_add() { fn validator_rotate_key_and_reconfigure() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let libra_root_account = Account::new_libra_root(); + let diem_root_account = Account::new_diem_root(); let validator_account = executor.create_raw_account(); let validator_operator = executor.create_raw_account(); executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_account_script( 0, @@ -117,7 +117,7 @@ fn validator_rotate_key_and_reconfigure() { ); executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_operator_account_script( 0, @@ -165,7 +165,7 @@ fn validator_rotate_key_and_reconfigure() { ); let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_validator_and_reconfigure_script( 2, @@ -219,14 +219,14 @@ fn validator_rotate_key_and_reconfigure() { fn validator_set_operator_set_key_reconfigure() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let libra_root_account = Account::new_libra_root(); + let diem_root_account = Account::new_diem_root(); let validator_account = executor.create_raw_account(); let operator_account_0 = executor.create_raw_account(); let operator_account_1 = executor.create_raw_account(); // Create operator 0 let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_operator_account_script( 0, @@ -245,7 +245,7 @@ fn validator_set_operator_set_key_reconfigure() { // Create operator 1 let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_operator_account_script( 0, @@ -264,7 +264,7 @@ fn validator_set_operator_set_key_reconfigure() { // Create validator 0 let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_create_validator_account_script( 0, @@ -281,13 +281,13 @@ fn validator_set_operator_set_key_reconfigure() { ); executor.new_block(); - // LR sets operator 1 for validator 0 + // DR sets operator 1 for validator 0 let admin_script = encode_set_validator_operator_with_nonce_admin_script( 0, b"operator_1".to_vec(), *operator_account_1.address(), ); - let txn = libra_root_account + let txn = diem_root_account .transaction() .write_set(WriteSetPayload::Script { script: admin_script, @@ -343,7 +343,7 @@ fn validator_set_operator_set_key_reconfigure() { ); let output = executor.execute_and_apply( - libra_root_account + diem_root_account .transaction() .script(encode_add_validator_and_reconfigure_script( 3, diff --git a/language/e2e-testsuite/src/tests/vasps.rs b/language/e2e-testsuite/src/tests/vasps.rs index 7c1c441db8..4b7268a420 100644 --- a/language/e2e-testsuite/src/tests/vasps.rs +++ b/language/e2e-testsuite/src/tests/vasps.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] +use diem_types::{account_config, vm_status::KeptVMStatus}; use language_e2e_tests::{account::Account, current_function_name, executor::FakeExecutor}; -use libra_types::{account_config, vm_status::KeptVMStatus}; use move_core_types::vm_status::VMStatus; use move_vm_types::values::Value; use transaction_builder::*; @@ -22,7 +22,7 @@ fn valid_creator_already_vasp() { treasury_compliance .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *account.address(), account.auth_key_prefix(), @@ -67,7 +67,7 @@ fn max_child_accounts_for_vasp() { treasury_compliance .transaction() .script(encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *account.address(), account.auth_key_prefix(), @@ -84,7 +84,7 @@ fn max_child_accounts_for_vasp() { account .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), false, @@ -100,7 +100,7 @@ fn max_child_accounts_for_vasp() { account .transaction() .script(encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *child.address(), child.auth_key_prefix(), false, diff --git a/language/e2e-testsuite/src/tests/verify_txn.rs b/language/e2e-testsuite/src/tests/verify_txn.rs index f3c5dd113b..2063cd93ce 100644 --- a/language/e2e-testsuite/src/tests/verify_txn.rs +++ b/language/e2e-testsuite/src/tests/verify_txn.rs @@ -1,15 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::transaction_scripts::StdlibScript; use compiler::Compiler; -use language_e2e_tests::{ - account::Account, assert_prologue_disparity, assert_prologue_parity, - compile::compile_module_with_address, current_function_name, executor::FakeExecutor, gas_costs, - transaction_status_eq, -}; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ account_address::AccountAddress, account_config, chain_id::ChainId, @@ -18,6 +13,11 @@ use libra_types::{ transaction::{Script, TransactionArgument, TransactionStatus}, vm_status::{KeptVMStatus, StatusCode}, }; +use language_e2e_tests::{ + account::Account, assert_prologue_disparity, assert_prologue_parity, + compile::compile_module_with_address, current_function_name, executor::FakeExecutor, gas_costs, + transaction_status_eq, +}; use move_core_types::{ gas_schedule::{GasAlgebra, GasConstants, MAX_TRANSACTION_SIZE_IN_BYTES}, identifier::Identifier, @@ -35,7 +35,7 @@ fn verify_signature() { // Generate a new key pair to try and sign things with. let private_key = Ed25519PrivateKey::generate_for_testing(); let program = encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender.address(), 100, vec![], @@ -65,7 +65,7 @@ fn verify_reserved_sender() { // Generate a new key pair to try and sign things with. let private_key = Ed25519PrivateKey::generate_for_testing(); let program = encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *sender.address(), 100, vec![], @@ -115,7 +115,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -128,7 +128,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -151,7 +151,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(1) @@ -168,7 +168,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(11) @@ -185,7 +185,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -205,7 +205,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -227,7 +227,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -245,7 +245,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -263,7 +263,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args.clone(), )) .sequence_number(10) @@ -281,7 +281,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args, )) .sequence_number(10) @@ -299,7 +299,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], vec![TransactionArgument::U64(42); MAX_TRANSACTION_SIZE_IN_BYTES as usize], )) .sequence_number(10) @@ -322,7 +322,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script.clone(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args, )) .sequence_number(10) @@ -341,7 +341,7 @@ fn verify_simple_payment() { .transaction() .script(Script::new( p2p_script, - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], vec![], )) .sequence_number(10) @@ -414,7 +414,7 @@ pub fn test_arbitrary_script_execution() { } #[test] -pub fn test_publish_from_libra_root() { +pub fn test_publish_from_diem_root() { // create a FakeExecutor with a genesis from file let mut executor = FakeExecutor::from_genesis_with_options(VMPublishingOption::custom_scripts()); @@ -476,7 +476,7 @@ fn verify_expiration_time() { None, /* script */ 0, /* expiration_time */ 0, /* gas_unit_price */ - account_config::COIN1_NAME.to_owned(), + account_config::XUS_NAME.to_owned(), None, /* max_gas_amount */ ); assert_prologue_parity!( @@ -495,7 +495,7 @@ fn verify_expiration_time() { None, /* script */ 0, /* expiration_time */ 0, /* gas_unit_price */ - account_config::COIN1_NAME.to_owned(), + account_config::XUS_NAME.to_owned(), None, /* max_gas_amount */ ); assert_prologue_parity!( @@ -580,14 +580,14 @@ fn verify_gas_currency_code() { } #[test] -pub fn test_no_publishing_libra_root_sender() { +pub fn test_no_publishing_diem_root_sender() { // create a FakeExecutor with a genesis from file let mut executor = FakeExecutor::from_genesis_with_options(VMPublishingOption::custom_scripts()); executor.set_golden_file(current_function_name!()); // create a transaction trying to publish a new module. - let sender = Account::new_libra_root(); + let sender = Account::new_diem_root(); let module = String::from( " @@ -847,7 +847,7 @@ fn test_module_dependency_fails_verification() { let m = good_module_uses_bad(*sender.address(), bad_module); let mut serialized_module = Vec::::new(); m.serialize(&mut serialized_module).unwrap(); - libra_types::transaction::Module::new(serialized_module) + diem_types::transaction::Module::new(serialized_module) }; let txn = sender @@ -1011,7 +1011,7 @@ fn test_module_transitive_dependency_fails_verification() { extra_deps: vec![good_module], ..Compiler::default() }; - libra_types::transaction::Module::new( + diem_types::transaction::Module::new( compiler .into_module_blob("file_name", module_code) .expect("Module compilation failed"), @@ -1112,7 +1112,7 @@ fn charge_gas_invalid_args() { StdlibScript::PeerToPeerWithMetadata .compiled_bytes() .into_vec(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], // Don't pass any arguments vec![], )) diff --git a/language/e2e-testsuite/src/tests/write_set.rs b/language/e2e-testsuite/src/tests/write_set.rs index aa778eb5ba..cab8e2c140 100644 --- a/language/e2e-testsuite/src/tests/write_set.rs +++ b/language/e2e-testsuite/src/tests/write_set.rs @@ -1,18 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use language_e2e_tests::{ - account::{self, Account}, - assert_prologue_parity, - common_transactions::rotate_key_txn, - current_function_name, - executor::FakeExecutor, - transaction_status_eq, -}; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ access_path::AccessPath, - account_config::{coin1_tmp_tag, CORE_CODE_ADDRESS}, + account_config::{xus_tag, CORE_CODE_ADDRESS}, chain_id::{ChainId, NamedChain}, contract_event::ContractEvent, on_chain_config::new_epoch_event_key, @@ -22,6 +14,14 @@ use libra_types::{ vm_status::{KeptVMStatus, StatusCode}, write_set::{WriteOp, WriteSet, WriteSetMut}, }; +use language_e2e_tests::{ + account::{self, Account}, + assert_prologue_parity, + common_transactions::rotate_key_txn, + current_function_name, + executor::FakeExecutor, + transaction_status_eq, +}; use move_core_types::{ identifier::Identifier, language_storage::{ResourceKey, StructTag}, @@ -31,7 +31,7 @@ use move_core_types::{ fn invalid_write_set_signer() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let genesis_account = Account::new_libra_root(); + let genesis_account = Account::new_diem_root(); executor.new_block(); // Create a WriteSet that adds an account on a new address. @@ -62,7 +62,7 @@ fn invalid_write_set_signer() { fn verify_and_execute_writeset() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let genesis_account = Account::new_libra_root(); + let genesis_account = Account::new_diem_root(); executor.new_block(); // Create a WriteSet that adds an account on a new address. @@ -90,20 +90,17 @@ fn verify_and_execute_writeset() { executor.apply_write_set(output.write_set()); - let updated_libra_root_account = executor + let updated_diem_root_account = executor .read_account_resource(&genesis_account) .expect("sender must exist"); let updated_sender = executor .read_account_resource(new_account_data.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource( - new_account_data.account(), - account::coin1_tmp_currency_code(), - ) + .read_balance_resource(new_account_data.account(), account::xus_currency_code()) .expect("sender balance must exist"); - assert_eq!(2, updated_libra_root_account.sequence_number()); + assert_eq!(2, updated_diem_root_account.sequence_number()); assert_eq!(0, updated_sender_balance.coin()); assert_eq!(10, updated_sender.sequence_number()); @@ -133,14 +130,14 @@ fn verify_and_execute_writeset() { fn bad_writesets() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let genesis_account = Account::new_libra_root(); + let genesis_account = Account::new_diem_root(); executor.new_block(); // Create a WriteSet that adds an account on a new address let new_account_data = executor.create_raw_account_data(1000, 10); let write_set = new_account_data.to_writeset(); - // (1) A WriteSet signed by an arbitrary account, not Libra root, should be rejected. + // (1) A WriteSet signed by an arbitrary account, not Diem root, should be rejected. let writeset_txn = new_account_data .account() .transaction() @@ -157,7 +154,7 @@ fn bad_writesets() { ); // (2) A WriteSet containing a reconfiguration event should be dropped. - let event = ContractEvent::new(new_epoch_event_key(), 0, coin1_tmp_tag(), vec![]); + let event = ContractEvent::new(new_epoch_event_key(), 0, xus_tag(), vec![]); let writeset_txn = genesis_account .transaction() .write_set(WriteSetPayload::Direct(ChangeSet::new( @@ -171,13 +168,13 @@ fn bad_writesets() { &TransactionStatus::Discard(StatusCode::INVALID_WRITE_SET) ); - // (3) A WriteSet attempting to change LibraWriteSetManager should be dropped. + // (3) A WriteSet attempting to change DiemWriteSetManager should be dropped. let key = ResourceKey::new( *genesis_account.address(), StructTag { address: CORE_CODE_ADDRESS, - module: Identifier::new("LibraAccount").unwrap(), - name: Identifier::new("LibraWriteSetManager").unwrap(), + module: Identifier::new("DiemAccount").unwrap(), + name: Identifier::new("DiemWriteSetManager").unwrap(), type_params: vec![], }, ); @@ -197,13 +194,13 @@ fn bad_writesets() { &TransactionStatus::Discard(StatusCode::INVALID_WRITE_SET) ); - // (4) A WriteSet attempting to change Libra root AccountResource should be dropped. + // (4) A WriteSet attempting to change Diem root AccountResource should be dropped. let key = ResourceKey::new( *genesis_account.address(), StructTag { address: CORE_CODE_ADDRESS, - module: Identifier::new("LibraAccount").unwrap(), - name: Identifier::new("LibraAccount").unwrap(), + module: Identifier::new("DiemAccount").unwrap(), + name: Identifier::new("DiemAccount").unwrap(), type_params: vec![], }, ); @@ -292,7 +289,7 @@ fn bad_writesets() { fn transfer_and_execute_writeset() { let mut executor = FakeExecutor::from_genesis_file(); executor.set_golden_file(current_function_name!()); - let genesis_account = Account::new_libra_root(); + let genesis_account = Account::new_diem_root(); let blessed_account = Account::new_blessed_tc(); executor.new_block(); @@ -325,20 +322,17 @@ fn transfer_and_execute_writeset() { executor.apply_write_set(output.write_set()); - let updated_libra_root_account = executor + let updated_diem_root_account = executor .read_account_resource(&genesis_account) .expect("sender must exist"); let updated_sender = executor .read_account_resource(new_account_data.account()) .expect("sender must exist"); let updated_sender_balance = executor - .read_balance_resource( - new_account_data.account(), - account::coin1_tmp_currency_code(), - ) + .read_balance_resource(new_account_data.account(), account::xus_currency_code()) .expect("sender balance must exist"); - assert_eq!(2, updated_libra_root_account.sequence_number()); + assert_eq!(2, updated_diem_root_account.sequence_number()); assert_eq!(0, updated_sender_balance.coin()); assert_eq!(10, updated_sender.sequence_number()); diff --git a/language/ir-testsuite/Cargo.toml b/language/ir-testsuite/Cargo.toml index 265b284f92..c0a5405f55 100644 --- a/language/ir-testsuite/Cargo.toml +++ b/language/ir-testsuite/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "ir-testsuite" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra functional tests" +authors = ["Diem Association "] +description = "Diem functional tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -14,8 +14,8 @@ bytecode-verifier = { path = "../bytecode-verifier", version = "0.1.0" } datatest-stable = { path = "../../common/datatest-stable", version = "0.1.0" } functional-tests = { path = "../testing-infra/functional-tests", version = "0.1.0" } ir-to-bytecode = { path = "../compiler/ir-to-bytecode", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-ir-types = { path = "../move-ir/types", version = "0.1.0" } compiled-stdlib = { path = "../stdlib/compiled", version = "0.1.0" } vm = { path = "../vm", version = "0.1.0" } diff --git a/language/ir-testsuite/tests/move/builtins/get_missing_account.mvir b/language/ir-testsuite/tests/move/builtins/get_missing_account.mvir index 6ce20e46b2..c3e2032656 100644 --- a/language/ir-testsuite/tests/move/builtins/get_missing_account.mvir +++ b/language/ir-testsuite/tests/move/builtins/get_missing_account.mvir @@ -1,5 +1,5 @@ -import 0x1.LibraAccount; -import 0x1.Coin1; +import 0x1.DiemAccount; +import 0x1.XUS; main() { let addr: address; @@ -7,8 +7,8 @@ main() { let account_balance: u64; addr = 0x011111111111111110; - account_exists = LibraAccount.exists_at(copy(addr)); - account_balance = LibraAccount.balance(move(addr)); + account_exists = DiemAccount.exists_at(copy(addr)); + account_balance = DiemAccount.balance(move(addr)); return; } // check: "Keep(ABORTED { code: 4869," diff --git a/language/ir-testsuite/tests/move/builtins/release.mvir b/language/ir-testsuite/tests/move/builtins/release.mvir index 52f3a78c29..a1cda647ea 100644 --- a/language/ir-testsuite/tests/move/builtins/release.mvir +++ b/language/ir-testsuite/tests/move/builtins/release.mvir @@ -1,9 +1,9 @@ -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { - let coin: Libra.Libra; - coin = Libra.zero(); + let coin: Diem.Diem; + coin = Diem.zero(); _ = move(coin); return; diff --git a/language/ir-testsuite/tests/move/commands/abort_unused_resource.mvir b/language/ir-testsuite/tests/move/commands/abort_unused_resource.mvir index 3ece38e4a3..ee2405d0d7 100644 --- a/language/ir-testsuite/tests/move/commands/abort_unused_resource.mvir +++ b/language/ir-testsuite/tests/move/commands/abort_unused_resource.mvir @@ -1,9 +1,9 @@ -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let z: Libra.Libra; - z = Libra.zero(); + let z: Diem.Diem; + z = Diem.zero(); // z is allowed to be unused abort 0; } diff --git a/language/ir-testsuite/tests/move/commands/assign_resource.mvir b/language/ir-testsuite/tests/move/commands/assign_resource.mvir index a89afbb95a..9bf1aa00a7 100644 --- a/language/ir-testsuite/tests/move/commands/assign_resource.mvir +++ b/language/ir-testsuite/tests/move/commands/assign_resource.mvir @@ -1,10 +1,10 @@ -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let z: Libra.Libra; - z = Libra.zero(); - z = Libra.zero(); + let z: Diem.Diem; + z = Diem.zero(); + z = Diem.zero(); return; } diff --git a/language/ir-testsuite/tests/move/generics/coin_wrapper.mvir b/language/ir-testsuite/tests/move/generics/coin_wrapper.mvir index d36c0f0652..57524eab5a 100644 --- a/language/ir-testsuite/tests/move/generics/coin_wrapper.mvir +++ b/language/ir-testsuite/tests/move/generics/coin_wrapper.mvir @@ -1,18 +1,18 @@ module M { - import 0x1.Coin1; - import 0x1.Libra; + import 0x1.XUS; + import 0x1.Diem; import 0x1.Signer; resource Foo { x: T } - resource CoinWrapper { f: Self.Foo> } + resource CoinWrapper { f: Self.Foo> } resource InnerWrapper { f: Self.Foo} resource Inner { b: vector } - public coin_wrapper(account: &signer, c: Libra.Libra) { - let foo: Self.Foo>; + public coin_wrapper(account: &signer, c: Diem.Diem) { + let foo: Self.Foo>; let coin_wrapper: Self.CoinWrapper; - foo = Foo> {x: move(c)}; + foo = Foo> {x: move(c)}; coin_wrapper = CoinWrapper {f: move(foo)}; move_to(move(account), move(coin_wrapper)); return; @@ -33,15 +33,15 @@ module M { public get_coin_value(account: &signer): u64 acquires CoinWrapper { let sender: address; let coin_wrapper_ref: &Self.CoinWrapper; - let foo_ref: &Self.Foo>; - let coin_ref: &Libra.Libra; + let foo_ref: &Self.Foo>; + let coin_ref: &Diem.Diem; sender = Signer.address_of(copy(account)); coin_wrapper_ref = borrow_global(move(sender)); foo_ref = &move(coin_wrapper_ref).f; coin_ref = &move(foo_ref).x; - return Libra.value(move(coin_ref)); + return Diem.value(move(coin_ref)); } public get_inner(account: &signer): vector acquires InnerWrapper { @@ -59,31 +59,31 @@ module M { } - public destroy(account: &signer): Libra.Libra acquires CoinWrapper { + public destroy(account: &signer): Diem.Diem acquires CoinWrapper { let sender: address; let coin_wrapper: Self.CoinWrapper; - let f: Self.Foo>; - let x: Libra.Libra; + let f: Self.Foo>; + let x: Diem.Diem; sender = Signer.address_of(copy(account)); coin_wrapper = move_from(move(sender)); CoinWrapper {f} = move(coin_wrapper); - Foo> {x} = move(f); + Foo> {x} = move(f); return move(x); } } //! new-transaction import {{default}}.M; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { - let coin: Libra.Libra; + let coin: Diem.Diem; let byte: vector; byte = h"bac1ac"; - coin = Libra.zero(); + coin = Diem.zero(); M.coin_wrapper(copy(account), move(coin)); M.inner_wrapper(copy(account), move(byte)); @@ -94,11 +94,11 @@ main(account: &signer) { //! new-transaction import {{default}}.M; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { - let coin: Libra.Libra; + let coin: Diem.Diem; let byte: vector; byte = h"bac1ac"; @@ -110,13 +110,13 @@ main(account: &signer) { //! new-transaction import {{default}}.M; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { - let coin: Libra.Libra; + let coin: Diem.Diem; coin = M.destroy(copy(account)); - Libra.destroy_zero(move(coin)); + Diem.destroy_zero(move(coin)); return; } // check: "Keep(EXECUTED)" diff --git a/language/ir-testsuite/tests/move/module_member_types/invalid_resource_write.mvir b/language/ir-testsuite/tests/move/module_member_types/invalid_resource_write.mvir index db0206045d..e43c574515 100644 --- a/language/ir-testsuite/tests/move/module_member_types/invalid_resource_write.mvir +++ b/language/ir-testsuite/tests/move/module_member_types/invalid_resource_write.mvir @@ -1,21 +1,21 @@ module RTest { -import 0x1.Coin1; - import 0x1.Libra; - resource T{fr: Libra.Libra} +import 0x1.XUS; + import 0x1.Diem; + resource T{fr: Diem.Diem} - public new(y: Libra.Libra): Self.T { + public new(y: Diem.Diem): Self.T { return T{fr: move(y)}; } public destroy(t: Self.T){ - let fr: Libra.Libra; + let fr: Diem.Diem; T { fr } = move(t); - Libra.destroy_zero(move(fr)); + Diem.destroy_zero(move(fr)); return; } - public t4(t: &mut Self.T, i: Libra.Libra) { - let x: &mut Libra.Libra; + public t4(t: &mut Self.T, i: Diem.Diem) { + let x: &mut Diem.Diem; x = &mut move(t).fr; *move(x) = move(i); return; diff --git a/language/ir-testsuite/tests/move/module_member_types/resource_has_resource_field.mvir b/language/ir-testsuite/tests/move/module_member_types/resource_has_resource_field.mvir index 68b04df3ec..3b56f510e9 100644 --- a/language/ir-testsuite/tests/move/module_member_types/resource_has_resource_field.mvir +++ b/language/ir-testsuite/tests/move/module_member_types/resource_has_resource_field.mvir @@ -1,5 +1,5 @@ module Test { - import 0x1.Coin1; - import 0x1.Libra; - resource T{fint: Libra.Libra} + import 0x1.XUS; + import 0x1.Diem; + resource T{fint: Diem.Diem} } diff --git a/language/ir-testsuite/tests/move/module_member_types/resource_instantiate_bad_type.mvir b/language/ir-testsuite/tests/move/module_member_types/resource_instantiate_bad_type.mvir index 14286f54cf..047617a70e 100644 --- a/language/ir-testsuite/tests/move/module_member_types/resource_instantiate_bad_type.mvir +++ b/language/ir-testsuite/tests/move/module_member_types/resource_instantiate_bad_type.mvir @@ -1,10 +1,10 @@ module Test { - import 0x1.Coin1; - import 0x1.Libra; + import 0x1.XUS; + import 0x1.Diem; resource B{b: bool} resource T{ft: Self.B} - public t1(x: Libra.Libra): Self.T { + public t1(x: Diem.Diem): Self.T { return T{ft: move(x)}; } diff --git a/language/ir-testsuite/tests/move/module_member_types/unrestricted_has_resource_field.mvir b/language/ir-testsuite/tests/move/module_member_types/unrestricted_has_resource_field.mvir index 646b82275d..c99d85a770 100644 --- a/language/ir-testsuite/tests/move/module_member_types/unrestricted_has_resource_field.mvir +++ b/language/ir-testsuite/tests/move/module_member_types/unrestricted_has_resource_field.mvir @@ -1,11 +1,11 @@ // check: INVALID_RESOURCE_FIELD module Test { -import 0x1.Coin1; - import 0x1.Libra; +import 0x1.XUS; + import 0x1.Diem; struct T{ - fc: Libra.Libra, + fc: Diem.Diem, fint: u64, } } diff --git a/language/ir-testsuite/tests/move/mutation/assign_local_resource.mvir b/language/ir-testsuite/tests/move/mutation/assign_local_resource.mvir index 67d5620ee5..af9c6b1521 100644 --- a/language/ir-testsuite/tests/move/mutation/assign_local_resource.mvir +++ b/language/ir-testsuite/tests/move/mutation/assign_local_resource.mvir @@ -1,15 +1,15 @@ // check: WRITEREF_RESOURCE_ERROR -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let resource1: Libra.Libra; - let resource_ref: &mut Libra.Libra; - let resource2: Libra.Libra; + let resource1: Diem.Diem; + let resource_ref: &mut Diem.Diem; + let resource2: Diem.Diem; - resource1 = Libra.zero(); + resource1 = Diem.zero(); resource_ref = &mut resource1; - resource2 = Libra.zero(); + resource2 = Diem.zero(); *move(resource_ref) = move(resource2); return; } diff --git a/language/ir-testsuite/tests/move/mutation/assign_local_resource_twice.mvir b/language/ir-testsuite/tests/move/mutation/assign_local_resource_twice.mvir index e9a524e209..9a43c1c31c 100644 --- a/language/ir-testsuite/tests/move/mutation/assign_local_resource_twice.mvir +++ b/language/ir-testsuite/tests/move/mutation/assign_local_resource_twice.mvir @@ -1,9 +1,9 @@ -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let resource1: Libra.Libra; - let resource_ref: &mut Libra.Libra; - resource1 = Libra.zero(); + let resource1: Diem.Diem; + let resource_ref: &mut Diem.Diem; + resource1 = Diem.zero(); resource_ref = &mut resource1; *move(resource_ref) = move(resource1); return; diff --git a/language/ir-testsuite/tests/move/mutation/assign_resource_type.mvir b/language/ir-testsuite/tests/move/mutation/assign_resource_type.mvir index 3187911350..921a306323 100644 --- a/language/ir-testsuite/tests/move/mutation/assign_resource_type.mvir +++ b/language/ir-testsuite/tests/move/mutation/assign_resource_type.mvir @@ -1,19 +1,19 @@ module A { -import 0x1.Coin1; - import 0x1.Libra; - resource T {fr: Libra.Libra} +import 0x1.XUS; + import 0x1.Diem; + resource T {fr: Diem.Diem} - public new(y: Libra.Libra): Self.T { + public new(y: Diem.Diem): Self.T { return T{fr: move(y)}; } public destroy(a: Self.T) { - let fr: Libra.Libra; + let fr: Diem.Diem; T { fr } = move(a); - Libra.destroy_zero(move(fr)); + Diem.destroy_zero(move(fr)); return; } - public t(this: &mut Self.T, y: Libra.Libra) { - let x: &mut Libra.Libra; + public t(this: &mut Self.T, y: Diem.Diem) { + let x: &mut Diem.Diem; x = &mut move(this).fr; *move(x) = move(y); return; diff --git a/language/ir-testsuite/tests/move/mutation/destroy_resource_holder.mvir b/language/ir-testsuite/tests/move/mutation/destroy_resource_holder.mvir index 1a86d31175..be4af1bc32 100644 --- a/language/ir-testsuite/tests/move/mutation/destroy_resource_holder.mvir +++ b/language/ir-testsuite/tests/move/mutation/destroy_resource_holder.mvir @@ -1,14 +1,14 @@ module A { -import 0x1.Coin1; - import 0x1.Libra; - resource A { c: Libra.Libra } - public new(c: Libra.Libra): Self.A { +import 0x1.XUS; + import 0x1.Diem; + resource A { c: Diem.Diem } + public new(c: Diem.Diem): Self.A { return A { c: move(c) }; } public destroy_a(a: Self.A) { - let c: Libra.Libra; + let c: Diem.Diem; A { c } = move(a); - Libra.destroy_zero(move(c)); + Diem.destroy_zero(move(c)); return; } } @@ -16,13 +16,13 @@ import 0x1.Coin1; //! new-transaction import {{default}}.A; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let zero_resource: Libra.Libra; + let zero_resource: Diem.Diem; let s: A.A; - zero_resource = Libra.zero(); + zero_resource = Diem.zero(); s = A.new(move(zero_resource)); A.destroy_a(move(s)); diff --git a/language/ir-testsuite/tests/move/mutation/mint_money.mvir b/language/ir-testsuite/tests/move/mutation/mint_money.mvir index 2f3f579949..0ef7d61740 100644 --- a/language/ir-testsuite/tests/move/mutation/mint_money.mvir +++ b/language/ir-testsuite/tests/move/mutation/mint_money.mvir @@ -1,24 +1,24 @@ // check: "Unbound field balance" module Hack { -import 0x1.Coin1; - import 0x1.Libra; - import 0x1.LibraAccount; +import 0x1.XUS; + import 0x1.Diem; + import 0x1.DiemAccount; - resource T{money: Libra.Libra} - public new(m: Libra.Libra): Self.T { + resource T{money: Diem.Diem} + public new(m: Diem.Diem): Self.T { return T{money: move(m)}; } public give_me_all_the_money(this: &mut Self.T, addr: address) { - let ref0: &mut Libra.Libra; + let ref0: &mut Diem.Diem; let ref1: &mut u64; - let new_money: Libra.Libra; + let new_money: Diem.Diem; ref0 = &mut copy(this).money; ref1 = &mut copy(ref0).balance; *move(ref1) = 1000000000000; - new_money = Libra.withdraw(move(ref0), 1000000000000); - LibraAccount.deposit(move(addr), move(new_money)); + new_money = Diem.withdraw(move(ref0), 1000000000000); + DiemAccount.deposit(move(addr), move(new_money)); _ = move(this); return; } @@ -27,17 +27,17 @@ import 0x1.Coin1; //! new-transaction import {{default}}.Hack; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; import 0x1.Signer; main(account: &signer) { - let zero_resource: Libra.Libra; + let zero_resource: Diem.Diem; let minter: Hack.Hack; let addr1: address; let minter_ref: &mut Hack.Hack; - zero_resource = Libra.zero(); + zero_resource = Diem.zero(); minter = Hack.new(move(zero_resource)); addr1 = Signer.address_of(move(account)); minter_ref = &mut minter; diff --git a/language/ir-testsuite/tests/move/mutation/mutate_resource_holder.mvir b/language/ir-testsuite/tests/move/mutation/mutate_resource_holder.mvir index 2317eddc23..d92eaa7f5b 100644 --- a/language/ir-testsuite/tests/move/mutation/mutate_resource_holder.mvir +++ b/language/ir-testsuite/tests/move/mutation/mutate_resource_holder.mvir @@ -1,22 +1,22 @@ module A { -import 0x1.Coin1; - import 0x1.Libra; - resource A { c: Libra.Libra } - public new(c: Libra.Libra): Self.A { +import 0x1.XUS; + import 0x1.Diem; + resource A { c: Diem.Diem } + public new(c: Diem.Diem): Self.A { return A { c: move(c) }; } public destroy_a(a: Self.A) { - let c: Libra.Libra; + let c: Diem.Diem; A { c } = move(a); - Libra.destroy_zero(move(c)); + Diem.destroy_zero(move(c)); return; } public mutate(a_ref: &mut Self.A) { - let ref: &mut Libra.Libra; - let zero: Libra.Libra; + let ref: &mut Diem.Diem; + let zero: Diem.Diem; ref = &mut move(a_ref).c; - zero = Libra.zero(); + zero = Diem.zero(); *move(ref) = move(zero); return; diff --git a/language/ir-testsuite/tests/move/mutation/unused_resource_holder.mvir b/language/ir-testsuite/tests/move/mutation/unused_resource_holder.mvir index e106824b42..c9a97118ab 100644 --- a/language/ir-testsuite/tests/move/mutation/unused_resource_holder.mvir +++ b/language/ir-testsuite/tests/move/mutation/unused_resource_holder.mvir @@ -1,19 +1,19 @@ // check: UNSAFE_RET_UNUSED_RESOURCES module A { -import 0x1.Coin1; - import 0x1.Libra; +import 0x1.XUS; + import 0x1.Diem; - resource T{g: Libra.Libra} + resource T{g: Diem.Diem} - public new(g: Libra.Libra): Self.T { + public new(g: Diem.Diem): Self.T { return T{g: move(g)}; } public destroy(a: Self.T) { - let c: Libra.Libra; + let c: Diem.Diem; T{g: c} = move(a); - Libra.destroy_zero(move(c)); + Diem.destroy_zero(move(c)); return; } } @@ -21,13 +21,13 @@ import 0x1.Coin1; //! new-transaction import {{default}}.A; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let zero_resource: Libra.Libra; + let zero_resource: Diem.Diem; let s: A.T; - zero_resource = Libra.zero(); + zero_resource = Diem.zero(); s = A.new(move(zero_resource)); return; diff --git a/language/ir-testsuite/tests/move/natives/vector/vector_module.mvir b/language/ir-testsuite/tests/move/natives/vector/vector_module.mvir index 738ddb24e5..6009326bf3 100644 --- a/language/ir-testsuite/tests/move/natives/vector/vector_module.mvir +++ b/language/ir-testsuite/tests/move/natives/vector/vector_module.mvir @@ -1,60 +1,60 @@ module M { -import 0x1.Coin1; - import 0x1.Libra; +import 0x1.XUS; + import 0x1.Diem; import 0x1.Vector; import 0x1.Signer; - resource Coins { f: vector> } + resource Coins { f: vector> } public new(account: &signer) { - let coin_vec: vector>; + let coin_vec: vector>; let coins: Self.Coins; - coin_vec = Vector.empty>(); + coin_vec = Vector.empty>(); coins = Coins { f: move(coin_vec)}; move_to(move(account), move(coins)); return; } - public put_coin(account: &signer, coin: Libra.Libra) acquires Coins { + public put_coin(account: &signer, coin: Diem.Diem) acquires Coins { let coins_ref: &mut Self.Coins; - let v_ref: &mut vector>; + let v_ref: &mut vector>; coins_ref = borrow_global_mut(Signer.address_of(move(account))); v_ref = &mut move(coins_ref).f; - Vector.push_back>(move(v_ref), move(coin)); + Vector.push_back>(move(v_ref), move(coin)); return; } public get_value(account: &signer, i: u64): u64 acquires Coins { let coins_ref: &Self.Coins; - let v_ref: &vector>; - let coin_ref: &Libra.Libra; + let v_ref: &vector>; + let coin_ref: &Diem.Diem; coins_ref = borrow_global(Signer.address_of(move(account))); v_ref = &move(coins_ref).f; - coin_ref = Vector.borrow>(move(v_ref), move(i)); + coin_ref = Vector.borrow>(move(v_ref), move(i)); - return Libra.value(move(coin_ref)); + return Diem.value(move(coin_ref)); } - public pop(account: &signer): Libra.Libra acquires Coins { + public pop(account: &signer): Diem.Diem acquires Coins { let coins_ref: &mut Self.Coins; - let v_ref: &mut vector>; + let v_ref: &mut vector>; coins_ref = borrow_global_mut(Signer.address_of(move(account))); v_ref = &mut move(coins_ref).f; - return Vector.pop_back>(move(v_ref)); + return Vector.pop_back>(move(v_ref)); } } //! new-transaction import {{default}}.M; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { M.new(copy(account)); - M.put_coin(copy(account), Libra.zero()); + M.put_coin(copy(account), Diem.zero()); return; } diff --git a/language/ir-testsuite/tests/move/publish/publish_module_and_use.mvir b/language/ir-testsuite/tests/move/publish/publish_module_and_use.mvir index 9b2467c1d0..f98c207f05 100644 --- a/language/ir-testsuite/tests/move/publish/publish_module_and_use.mvir +++ b/language/ir-testsuite/tests/move/publish/publish_module_and_use.mvir @@ -1,26 +1,26 @@ module MoneyHolder { - import 0x1.Coin1; - import 0x1.Libra; + import 0x1.XUS; + import 0x1.Diem; - resource T { money: Libra.Libra } + resource T { money: Diem.Diem } - public new(m: Libra.Libra): Self.T { + public new(m: Diem.Diem): Self.T { return T{ money: move(m) }; } public value(this :&Self.T): u64 { - let ref: &Libra.Libra; + let ref: &Diem.Diem; let val: u64; ref = ©(this).money; - val = Libra.value(move(ref)); + val = Diem.value(move(ref)); _ = move(this); return move(val); } public destroy_t(t: Self.T) { - let money: Libra.Libra; + let money: Diem.Diem; T{ money } = move(t); - Libra.destroy_zero(move(money)); + Diem.destroy_zero(move(money)); return; } } @@ -28,15 +28,15 @@ module MoneyHolder { //! new-transaction import {{default}}.MoneyHolder; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let coin: Libra.Libra; + let coin: Diem.Diem; let money_holder: MoneyHolder.T; let money_holder_ref: &MoneyHolder.T; let value: u64; - coin = Libra.zero(); + coin = Diem.zero(); money_holder = MoneyHolder.new(move(coin)); money_holder_ref = &money_holder; value = MoneyHolder.value(move(money_holder_ref)); diff --git a/language/ir-testsuite/tests/move/publish/publish_two_modules.mvir b/language/ir-testsuite/tests/move/publish/publish_two_modules.mvir index dcdd9f78e5..34718d3764 100644 --- a/language/ir-testsuite/tests/move/publish/publish_two_modules.mvir +++ b/language/ir-testsuite/tests/move/publish/publish_two_modules.mvir @@ -1,26 +1,26 @@ module MoneyHolder { - import 0x1.Coin1; - import 0x1.Libra; + import 0x1.XUS; + import 0x1.Diem; - resource T { money: Libra.Libra } + resource T { money: Diem.Diem } - public new(m: Libra.Libra): Self.T { + public new(m: Diem.Diem): Self.T { return T{ money: move(m) }; } public value(this :&Self.T): u64 { - let ref: &Libra.Libra; + let ref: &Diem.Diem; let val: u64; ref = ©(this).money; - val = Libra.value(move(ref)); + val = Diem.value(move(ref)); _ = move(this); return move(val); } public destroy_t(t: Self.T) { - let money: Libra.Libra; + let money: Diem.Diem; T{ money } = move(t); - Libra.destroy_zero(move(money)); + Diem.destroy_zero(move(money)); return; } } @@ -43,11 +43,11 @@ module Bar { import {{default}}.MoneyHolder; import {{default}}.Bar; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.XUS; +import 0x1.Diem; main() { - let coin: Libra.Libra; + let coin: Diem.Diem; let money_holder: MoneyHolder.T; let money_holder_ref: &MoneyHolder.T; let value: u64; @@ -56,7 +56,7 @@ main() { let bar_ref: &Bar.T; let v2: u64; - coin = Libra.zero(); + coin = Diem.zero(); money_holder = MoneyHolder.new(move(coin)); money_holder_ref = &money_holder; diff --git a/language/ir-testsuite/tests/move/publish/resources_are_distinct_by_published_account.mvir b/language/ir-testsuite/tests/move/publish/resources_are_distinct_by_published_account.mvir index df984fa6d8..459c141af5 100644 --- a/language/ir-testsuite/tests/move/publish/resources_are_distinct_by_published_account.mvir +++ b/language/ir-testsuite/tests/move/publish/resources_are_distinct_by_published_account.mvir @@ -1,5 +1,5 @@ -module LibraAccount { - import 0x1.LibraAccount; +module DiemAccount { + import 0x1.DiemAccount; import 0x1.Signer; resource T{sequence_number: u64} @@ -33,7 +33,7 @@ module LibraAccount { sender = Signer.address_of(copy(account)); - sequence_number = LibraAccount.sequence_number(copy(sender)); + sequence_number = DiemAccount.sequence_number(copy(sender)); assert(copy(sequence_number) == 1, 42); fake_ref = borrow_global_mut(copy(sender)); @@ -47,7 +47,7 @@ module LibraAccount { //! new-transaction -import {{default}}.LibraAccount as MyAccount; +import {{default}}.DiemAccount as MyAccount; main(account: &signer) { MyAccount.test(move(account)); diff --git a/language/ir-testsuite/tests/move/scripts/script_too_few_type_args_inner.mvir b/language/ir-testsuite/tests/move/scripts/script_too_few_type_args_inner.mvir index 9fe59f608a..d67aaa6f95 100644 --- a/language/ir-testsuite/tests/move/scripts/script_too_few_type_args_inner.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_too_few_type_args_inner.mvir @@ -1,4 +1,4 @@ -//! type-args: 0x1::LibraAccount::Balance +//! type-args: 0x1::DiemAccount::Balance main() { return; } diff --git a/language/ir-testsuite/tests/move/scripts/script_too_many_type_args_inner.mvir b/language/ir-testsuite/tests/move/scripts/script_too_many_type_args_inner.mvir index 72c1b72893..3b9ff18a79 100644 --- a/language/ir-testsuite/tests/move/scripts/script_too_many_type_args_inner.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_too_many_type_args_inner.mvir @@ -1,4 +1,4 @@ -//! type-args: 0x1::LibraAccount::Balance +//! type-args: 0x1::DiemAccount::Balance main() { return; } diff --git a/language/ir-testsuite/tests/move/scripts/script_type_arg_kind_mismatch_1.mvir b/language/ir-testsuite/tests/move/scripts/script_type_arg_kind_mismatch_1.mvir index 398b52b9f0..e8b1587bdb 100644 --- a/language/ir-testsuite/tests/move/scripts/script_type_arg_kind_mismatch_1.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_type_arg_kind_mismatch_1.mvir @@ -1,4 +1,4 @@ -//! type-args: 0x1::LibraAccount::LibraAccount +//! type-args: 0x1::DiemAccount::DiemAccount main() { return; } diff --git a/language/ir-testsuite/tests/move/scripts/script_type_args_type_eq.mvir b/language/ir-testsuite/tests/move/scripts/script_type_args_type_eq.mvir index 3f9e9aa9cc..56b6011afc 100644 --- a/language/ir-testsuite/tests/move/scripts/script_type_args_type_eq.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_type_args_type_eq.mvir @@ -29,12 +29,12 @@ main(account: &signer) { //! new-transaction -//! type-args: 0x1::LibraAccount::LibraAccount +//! type-args: 0x1::DiemAccount::DiemAccount import {{default}}.M; -import 0x1.LibraAccount; +import 0x1.DiemAccount; main(account: &signer) { - assert(M.type_eq(copy(account)), 100); + assert(M.type_eq(copy(account)), 100); assert(!M.type_eq(copy(account)), 101); return; } @@ -42,13 +42,13 @@ main(account: &signer) { //! new-transaction -//! type-args: 0x1::LibraAccount::Balance<0x1::LibraAccount::Balance>> +//! type-args: 0x1::DiemAccount::Balance<0x1::DiemAccount::Balance>> import {{default}}.M; -import 0x1.LibraAccount; +import 0x1.DiemAccount; main(account: &signer) { - assert(M.type_eq>>>(copy(account)), 100); - assert(!M.type_eq>>>(copy(account)), 101); + assert(M.type_eq>>>(copy(account)), 100); + assert(!M.type_eq>>>(copy(account)), 101); return; } // check: "Keep(EXECUTED)" diff --git a/language/ir-testsuite/tests/move/scripts/script_with_generic_type_arg.mvir b/language/ir-testsuite/tests/move/scripts/script_with_generic_type_arg.mvir index 2d2d422af7..383f1746cd 100644 --- a/language/ir-testsuite/tests/move/scripts/script_with_generic_type_arg.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_with_generic_type_arg.mvir @@ -1,4 +1,4 @@ -//! type-args: 0x1::LibraAccount::Balance<0x1::LibraAccount::Balance> +//! type-args: 0x1::DiemAccount::Balance<0x1::DiemAccount::Balance> main() { return; } diff --git a/language/ir-testsuite/tests/move/scripts/script_with_type_parameters.mvir b/language/ir-testsuite/tests/move/scripts/script_with_type_parameters.mvir index 0df05c65f4..a35169f77d 100644 --- a/language/ir-testsuite/tests/move/scripts/script_with_type_parameters.mvir +++ b/language/ir-testsuite/tests/move/scripts/script_with_type_parameters.mvir @@ -1,4 +1,4 @@ -//! type-args: u64, u8, 0x1::LibraAccount::LibraAccount +//! type-args: u64, u8, 0x1::DiemAccount::DiemAccount main() { return; } diff --git a/language/ir-testsuite/tests/move/transactions/tx_assoc.mvir b/language/ir-testsuite/tests/move/transactions/tx_assoc.mvir index a9575dccd4..ce8affae0d 100644 --- a/language/ir-testsuite/tests/move/transactions/tx_assoc.mvir +++ b/language/ir-testsuite/tests/move/transactions/tx_assoc.mvir @@ -1,8 +1,8 @@ import 0x1.CoreAddresses; import 0x1.Signer; -//! sender: libraroot +//! sender: diemroot main(account: &signer) { - assert(Signer.address_of(move(account)) == CoreAddresses.LIBRA_ROOT_ADDRESS(), 0); + assert(Signer.address_of(move(account)) == CoreAddresses.DIEM_ROOT_ADDRESS(), 0); return; } @@ -10,7 +10,7 @@ main(account: &signer) { import 0x1.CoreAddresses; import 0x1.Signer; main(account: &signer) { - assert(Signer.address_of(move(account)) != CoreAddresses.LIBRA_ROOT_ADDRESS(), 1); + assert(Signer.address_of(move(account)) != CoreAddresses.DIEM_ROOT_ADDRESS(), 1); return; } @@ -20,7 +20,7 @@ main(account: &signer) { import 0x1.CoreAddresses; import 0x1.Signer; main(account: &signer) { - assert(Signer.address_of(move(account)) != CoreAddresses.LIBRA_ROOT_ADDRESS(), 2); - assert({{alice}} != CoreAddresses.LIBRA_ROOT_ADDRESS(), 3); + assert(Signer.address_of(move(account)) != CoreAddresses.DIEM_ROOT_ADDRESS(), 2); + assert({{alice}} != CoreAddresses.DIEM_ROOT_ADDRESS(), 3); return; } diff --git a/language/ir-testsuite/tests/testing_infra/multiple_transactions.mvir b/language/ir-testsuite/tests/testing_infra/multiple_transactions.mvir index 451b9a27cd..0d74110e21 100644 --- a/language/ir-testsuite/tests/testing_infra/multiple_transactions.mvir +++ b/language/ir-testsuite/tests/testing_infra/multiple_transactions.mvir @@ -1,34 +1,34 @@ //! account: alice, 900000 //! account: bob, 900000 -// Alice sends 200 Libra Coins to Bob +// Alice sends 200 Diem Coins to Bob //! sender: alice //! args: {{bob}} //! gas-price: 0 -import 0x1.LibraAccount; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.DiemAccount; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer, receiver: address) { - let coins: Libra.Libra; - let with_cap: LibraAccount.WithdrawCapability; + let coins: Diem.Diem; + let with_cap: DiemAccount.WithdrawCapability; - with_cap = LibraAccount.extract_withdraw_capability(copy(account)); - LibraAccount.pay_from(&with_cap, move(receiver), 200, h"", h""); - LibraAccount.restore_withdraw_capability(move(with_cap)); + with_cap = DiemAccount.extract_withdraw_capability(copy(account)); + DiemAccount.pay_from(&with_cap, move(receiver), 200, h"", h""); + DiemAccount.restore_withdraw_capability(move(with_cap)); return; } -// Alice checks that her balance is less than 999800 Libra Coins. (200 + gas) +// Alice checks that her balance is less than 999800 Diem Coins. (200 + gas) //! new-transaction //! sender: alice -import 0x1.LibraAccount; -import 0x1.Coin1; +import 0x1.DiemAccount; +import 0x1.XUS; import 0x1.Signer; main(account: &signer) { @@ -36,7 +36,7 @@ main(account: &signer) { let sender: address; sender = Signer.address_of(move(account)); - balance = LibraAccount.balance(move(sender)); + balance = DiemAccount.balance(move(sender)); assert(move(balance) <= 999800, 42); return; @@ -44,11 +44,11 @@ main(account: &signer) { -// Bob checks that he has 90200 Libra Coins +// Bob checks that he has 90200 Diem Coins //! new-transaction //! sender: bob -import 0x1.LibraAccount; -import 0x1.Coin1; +import 0x1.DiemAccount; +import 0x1.XUS; import 0x1.Signer; main(account: &signer) { @@ -56,7 +56,7 @@ main(account: &signer) { let sender: address; sender = Signer.address_of(move(account)); - balance = LibraAccount.balance(move(sender)); + balance = DiemAccount.balance(move(sender)); assert(move(balance) == 900200, 42); return; diff --git a/language/ir-testsuite/tests/testing_infra/show_all_optional_info.exp b/language/ir-testsuite/tests/testing_infra/show_all_optional_info.exp index 4cba1b7196..15413f0d26 100644 --- a/language/ir-testsuite/tests/testing_infra/show_all_optional_info.exp +++ b/language/ir-testsuite/tests/testing_infra/show_all_optional_info.exp @@ -2,11 +2,11 @@ [1] Move VM Status: EXECUTED [2] Transaction Status: Keep(EXECUTED) [3] Gas Used: 16 -[4] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500100000000000000))] }) +[4] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500100000000000000))] }) [5] Events: [] [6] Transaction(1) [7] Move VM Status: EXECUTION_FAILURE { status_code: ARITHMETIC_ERROR, location: Script, function_definition: 0, code_offset: 2 } [8] Transaction Status: Keep(EXECUTION_FAILURE { location: Script, function_definition: 0, code_offset: 2 }) [9] Gas Used: 1 -[10] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500200000000000000))] }) +[10] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500200000000000000))] }) [11] Events: [] diff --git a/language/ir-testsuite/tests/testing_infra/transfer_money.mvir b/language/ir-testsuite/tests/testing_infra/transfer_money.mvir index 143ff6db73..c4f4798d59 100644 --- a/language/ir-testsuite/tests/testing_infra/transfer_money.mvir +++ b/language/ir-testsuite/tests/testing_infra/transfer_money.mvir @@ -2,16 +2,16 @@ //! account: Bob, 1000000 //! sender: Alice -import 0x1.LibraAccount; -import 0x1.Coin1; -import 0x1.Libra; +import 0x1.DiemAccount; +import 0x1.XUS; +import 0x1.Diem; main(account: &signer) { - let with_cap: LibraAccount.WithdrawCapability; + let with_cap: DiemAccount.WithdrawCapability; - with_cap = LibraAccount.extract_withdraw_capability(copy(account)); - LibraAccount.pay_from(&with_cap, {{bob}}, 42, h"", h""); - LibraAccount.restore_withdraw_capability(move(with_cap)); + with_cap = DiemAccount.extract_withdraw_capability(copy(account)); + DiemAccount.pay_from(&with_cap, {{bob}}, 42, h"", h""); + DiemAccount.restore_withdraw_capability(move(with_cap)); return; } diff --git a/language/ir-testsuite/tests/testsuite.rs b/language/ir-testsuite/tests/testsuite.rs index cdf5fd1ba2..fed9469f0d 100644 --- a/language/ir-testsuite/tests/testsuite.rs +++ b/language/ir-testsuite/tests/testsuite.rs @@ -1,8 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use compiled_stdlib::{stdlib_modules, StdLibOptions}; +use diem_types::account_address::AccountAddress; use functional_tests::{ compiler::{Compiler, ScriptOrModule}, testsuite, @@ -11,7 +12,6 @@ use ir_to_bytecode::{ compiler::{compile_module, compile_script}, parser::parse_script_or_module, }; -use libra_types::account_address::AccountAddress; use move_ir_types::ast; use std::path::Path; use vm::CompiledModule; diff --git a/language/libra-tools/libra-validator-interface/Cargo.toml b/language/libra-tools/libra-validator-interface/Cargo.toml deleted file mode 100644 index 5bcd37859e..0000000000 --- a/language/libra-tools/libra-validator-interface/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "libra-validator-interface" -version = "0.1.0" -authors = ["Libra Association "] -description = "Defines interfaces between the libra nodes and local move infrastructure" -repository = "https://github.com/libra/libra" -homepage = "https://libra.org" -license = "Apache-2.0" -publish = false -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -reqwest = { version = "0.10.9", features = ["blocking", "json"] } -anyhow = "1.0.34" -libra-config = { path = "../../../config", version = "0.1.0" } -libra-json-rpc-client = { path = "../../../client/json-rpc", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libradb = { path = "../../../storage/libradb", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -storage-interface = { path = "../../../storage/storage-interface", version = "0.1.0" } -scratchpad = { path = "../../../storage/scratchpad", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/libra-tools/writeset-transaction-generator/templates/halt_transactions.move b/language/libra-tools/writeset-transaction-generator/templates/halt_transactions.move deleted file mode 100644 index 8c986b9c79..0000000000 --- a/language/libra-tools/writeset-transaction-generator/templates/halt_transactions.move +++ /dev/null @@ -1,8 +0,0 @@ -script { - use 0x1::LibraTransactionPublishingOption; - fun main(libra_root: &signer) { - LibraTransactionPublishingOption::set_open_script(libra_root); - // Add a null hash to the script allow list to disable execution of all scripts sent to the validator. - LibraTransactionPublishingOption::add_to_script_allow_list(libra_root, x"0000000000000000000000000000000000000000000000000000000000000000"); - } -} diff --git a/language/libra-tools/writeset-transaction-generator/templates/remove_validators.move b/language/libra-tools/writeset-transaction-generator/templates/remove_validators.move deleted file mode 100644 index 0154aa3bd2..0000000000 --- a/language/libra-tools/writeset-transaction-generator/templates/remove_validators.move +++ /dev/null @@ -1,8 +0,0 @@ -script { - use 0x1::LibraSystem; - fun main(libra_root: &signer) { - {{#each addresses}} - LibraSystem::remove_validator(libra_root, 0x{{this}}); - {{/each}} - } -} diff --git a/language/move-core/types/Cargo.toml b/language/move-core/types/Cargo.toml index 737e802e41..2c45c73b58 100644 --- a/language/move-core/types/Cargo.toml +++ b/language/move-core/types/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-core-types" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Core types for Move" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -24,9 +24,9 @@ thiserror = "1.0.22" once_cell = "1.4.1" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0", default-features = false } -libra-crypto-derive = { path = "../../../crypto/crypto-derive", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0", default-features = false } +diem-crypto-derive = { path = "../../../crypto/crypto-derive", version = "0.1.0" } short-hex-str = { path = "../../../common/short-hex-str", version = "0.1.0" } [dev-dependencies] @@ -38,6 +38,6 @@ serde_json = "1.0.60" [features] default = ["fiat"] -fiat = ["libra-crypto/fiat"] -vanilla = ["libra-crypto/vanilla-u64"] +fiat = ["diem-crypto/fiat"] +vanilla = ["diem-crypto/vanilla-u64"] fuzzing = ["proptest", "proptest-derive"] diff --git a/language/move-core/types/src/account_address.rs b/language/move-core/types/src/account_address.rs index 16b7337677..f6a639876c 100644 --- a/language/move-core/types/src/account_address.rs +++ b/language/move-core/types/src/account_address.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{ensure, Error, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, CryptoHasher}, x25519, HashValue, }; -use libra_crypto_derive::CryptoHasher; +use diem_crypto_derive::CryptoHasher; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; use rand::{rngs::OsRng, Rng}; diff --git a/language/move-core/types/src/gas_schedule.rs b/language/move-core/types/src/gas_schedule.rs index d794d776ba..6b54472aa5 100644 --- a/language/move-core/types/src/gas_schedule.rs +++ b/language/move-core/types/src/gas_schedule.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module lays out the basic abstract costing schedule for bytecode instructions. diff --git a/language/move-core/types/src/identifier.rs b/language/move-core/types/src/identifier.rs index c22c269659..be77ff9a19 100644 --- a/language/move-core/types/src/identifier.rs +++ b/language/move-core/types/src/identifier.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! An identifier is the name of an entity (module, resource, function, etc) in Move. diff --git a/language/move-core/types/src/language_storage.rs b/language/move-core/types/src/language_storage.rs index c55aa79e72..30dde7f802 100644 --- a/language/move-core/types/src/language_storage.rs +++ b/language/move-core/types/src/language_storage.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ account_address::AccountAddress, identifier::{IdentStr, Identifier}, }; -use libra_crypto::hash::CryptoHash; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto::hash::CryptoHash; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; use serde::{Deserialize, Serialize}; diff --git a/language/move-core/types/src/lib.rs b/language/move-core/types/src/lib.rs index f067422314..a68f749c68 100644 --- a/language/move-core/types/src/lib.rs +++ b/language/move-core/types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Core types for Move. diff --git a/language/move-core/types/src/move_resource.rs b/language/move-core/types/src/move_resource.rs index 77f91aa381..d5cdfda50f 100644 --- a/language/move-core/types/src/move_resource.rs +++ b/language/move-core/types/src/move_resource.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-core/types/src/parser.rs b/language/move-core/types/src/parser.rs index 73eb86a824..b0825f6899 100644 --- a/language/move-core/types/src/parser.rs +++ b/language/move-core/types/src/parser.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-core/types/src/proptest_types.rs b/language/move-core/types/src/proptest_types.rs index 433cbab5cb..27e506d261 100644 --- a/language/move-core/types/src/proptest_types.rs +++ b/language/move-core/types/src/proptest_types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-core/types/src/transaction_argument.rs b/language/move-core/types/src/transaction_argument.rs index 1a0edcd3e6..986e5b9a88 100644 --- a/language/move-core/types/src/transaction_argument.rs +++ b/language/move-core/types/src/transaction_argument.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; diff --git a/language/move-core/types/src/unit_tests/address_test.rs b/language/move-core/types/src/unit_tests/address_test.rs index e1f69a8eb0..82ddc344e4 100644 --- a/language/move-core/types/src/unit_tests/address_test.rs +++ b/language/move-core/types/src/unit_tests/address_test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; +use diem_crypto::{hash::CryptoHash, HashValue}; use hex::FromHex; -use libra_crypto::{hash::CryptoHash, HashValue}; use proptest::prelude::*; use std::{ convert::{AsRef, TryFrom}, @@ -55,7 +55,7 @@ fn test_address() { }); let hash_vec = - &Vec::from_hex("c44c0a209ec51c8077b0007334988e11867842e152e05316f062a589ed6b606d") + &Vec::from_hex("6403c4906e79cf4536edada922040805c6a8d0e735fa4516a9cc40038bd125c8") .expect("You must provide a valid Hex format"); let mut hash = [0u8; 32]; diff --git a/language/move-core/types/src/unit_tests/identifier_test.rs b/language/move-core/types/src/unit_tests/identifier_test.rs index eb600a3917..08a107c4e1 100644 --- a/language/move-core/types/src/unit_tests/identifier_test.rs +++ b/language/move-core/types/src/unit_tests/identifier_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::identifier::{IdentStr, Identifier, ALLOWED_IDENTIFIERS}; diff --git a/language/move-core/types/src/unit_tests/language_storage_test.rs b/language/move-core/types/src/unit_tests/language_storage_test.rs index 81906179c8..873e7f090c 100644 --- a/language/move-core/types/src/unit_tests/language_storage_test.rs +++ b/language/move-core/types/src/unit_tests/language_storage_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::language_storage::ModuleId; diff --git a/language/move-core/types/src/unit_tests/mod.rs b/language/move-core/types/src/unit_tests/mod.rs index 5488f8a75d..3b0f2db139 100644 --- a/language/move-core/types/src/unit_tests/mod.rs +++ b/language/move-core/types/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod address_test; diff --git a/language/move-core/types/src/value.rs b/language/move-core/types/src/value.rs index fd7cfba347..57fc6c48a9 100644 --- a/language/move-core/types/src/value.rs +++ b/language/move-core/types/src/value.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; diff --git a/language/move-core/types/src/vm_status.rs b/language/move-core/types/src/vm_status.rs index 732538d01a..f064384b95 100644 --- a/language/move-core/types/src/vm_status.rs +++ b/language/move-core/types/src/vm_status.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::unit_arg)] @@ -318,7 +318,7 @@ pub mod known_locations { use once_cell::sync::Lazy; /// The name of the Account module. - pub const ACCOUNT_MODULE_NAME: &str = "LibraAccount"; + pub const ACCOUNT_MODULE_NAME: &str = "DiemAccount"; /// The Identifier for the Account module. pub static ACCOUNT_MODULE_IDENTIFIER: Lazy = Lazy::new(|| Identifier::new(ACCOUNT_MODULE_NAME).unwrap()); @@ -330,16 +330,16 @@ pub mod known_locations { AbortLocation::Module(ACCOUNT_MODULE.clone()) } - /// The name of the Libra module. - pub const LIBRA_MODULE_NAME: &str = "Libra"; - /// The Identifier for the Libra module. - pub static LIBRA_MODULE_IDENTIFIER: Lazy = - Lazy::new(|| Identifier::new(LIBRA_MODULE_NAME).unwrap()); - /// The ModuleId for the Libra module. - pub static LIBRA_MODULE: Lazy = - Lazy::new(|| ModuleId::new(CORE_CODE_ADDRESS, LIBRA_MODULE_IDENTIFIER.clone())); - pub fn libra_module_abort() -> AbortLocation { - AbortLocation::Module(LIBRA_MODULE.clone()) + /// The name of the Diem module. + pub const DIEM_MODULE_NAME: &str = "Diem"; + /// The Identifier for the Diem module. + pub static DIEM_MODULE_IDENTIFIER: Lazy = + Lazy::new(|| Identifier::new(DIEM_MODULE_NAME).unwrap()); + /// The ModuleId for the Diem module. + pub static DIEM_MODULE: Lazy = + Lazy::new(|| ModuleId::new(CORE_CODE_ADDRESS, DIEM_MODULE_IDENTIFIER.clone())); + pub fn diem_module_abort() -> AbortLocation { + AbortLocation::Module(DIEM_MODULE.clone()) } /// The name of the Designated Dealer module. diff --git a/language/move-ir/types/Cargo.toml b/language/move-ir/types/Cargo.toml index 7dbf3ae7e4..494d72413e 100644 --- a/language/move-ir/types/Cargo.toml +++ b/language/move-ir/types/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-ir-types" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Types for Move IR" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -17,6 +17,6 @@ serde = { version = "1.0.117", features = ["derive"] } hex = "0.4.2" once_cell = "1.4.1" -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } diff --git a/language/move-ir/types/src/ast.rs b/language/move-ir/types/src/ast.rs index b7d3262440..0aeb9afd54 100644 --- a/language/move-ir/types/src/ast.rs +++ b/language/move-ir/types/src/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ spec_language_ast::{Condition, Invariant, SyntheticDefinition}, }; use anyhow::Result; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::{identifier::Identifier, language_storage::ModuleId, value::MoveValue}; use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; diff --git a/language/move-ir/types/src/lib.rs b/language/move-ir/types/src/lib.rs index ab711fb2aa..80ede8d0af 100644 --- a/language/move-ir/types/src/lib.rs +++ b/language/move-ir/types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Base types for the Move IR. diff --git a/language/move-ir/types/src/location.rs b/language/move-ir/types/src/location.rs index 1700786f53..166658ff84 100644 --- a/language/move-ir/types/src/location.rs +++ b/language/move-ir/types/src/location.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use codespan::Span; diff --git a/language/move-ir/types/src/spec_language_ast.rs b/language/move-ir/types/src/spec_language_ast.rs index 2b357a5448..fd3bfe26ff 100644 --- a/language/move-ir/types/src/spec_language_ast.rs +++ b/language/move-ir/types/src/spec_language_ast.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ ast::{BinOp, CopyableVal_, Field_, QualifiedStructIdent, Type}, location::*, }; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::Identifier; /// AST for the Move Prover specification language. diff --git a/language/move-lang/Cargo.toml b/language/move-lang/Cargo.toml index b50eed8b3a..8fdb8d8549 100644 --- a/language/move-lang/Cargo.toml +++ b/language/move-lang/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "move-lang" version = "0.0.1" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" @@ -22,8 +22,8 @@ tempfile = "3.1.0" move-vm = { path = "../vm", package = "vm" } move-core-types = { path = "../move-core/types" } move-bytecode-verifier = { path = "../bytecode-verifier", package = "bytecode-verifier" } -libra-types = { path = "../../types" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-ir-types = {path = "../move-ir/types" } ir-to-bytecode = {path = "../compiler/ir-to-bytecode" } borrow-graph = { path = "../borrow-graph" } diff --git a/language/move-lang/README.md b/language/move-lang/README.md index d254f8bd6a..7e7169a4de 100644 --- a/language/move-lang/README.md +++ b/language/move-lang/README.md @@ -4,7 +4,7 @@ title: Move Source Language custom_edit_url: https://github.com/libra/libra/edit/master/language/move-lang/README.md --- -## Code under this subtree is experimental. It is out of scope for the Libra Bug Bounty until it is no longer marked experimental. +## Code under this subtree is experimental. It is out of scope for the Diem Bug Bounty until it is no longer marked experimental. # Move Source Language diff --git a/language/move-lang/functional-tests/Cargo.toml b/language/move-lang/functional-tests/Cargo.toml index a41f400b0a..968ef78220 100644 --- a/language/move-lang/functional-tests/Cargo.toml +++ b/language/move-lang/functional-tests/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "move-lang-functional-tests" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" @@ -9,7 +9,7 @@ license = "Apache-2.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] anyhow = "1.0.34" @@ -17,7 +17,7 @@ tempfile = "3.1.0" datatest-stable = { path = "../../../common/datatest-stable", version = "0.1.0" } functional-tests = { path = "../../testing-infra/functional-tests", version = "0.1.0" } -libra-types = { path = "../../../types" } +diem-types = { path = "../../../types" } move-lang = { path = "..", version = "0.0.1" } [[test]] diff --git a/language/move-lang/functional-tests/src/lib.rs b/language/move-lang/functional-tests/src/lib.rs index 7a4e45db9c..5496168458 100644 --- a/language/move-lang/functional-tests/src/lib.rs +++ b/language/move-lang/functional-tests/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-lang/functional-tests/tests/libra/account_limits/basics.exp b/language/move-lang/functional-tests/tests/diem/account_limits/basics.exp similarity index 97% rename from language/move-lang/functional-tests/tests/libra/account_limits/basics.exp rename to language/move-lang/functional-tests/tests/diem/account_limits/basics.exp index 30c1d15c16..b0a7f8a27a 100644 --- a/language/move-lang/functional-tests/tests/libra/account_limits/basics.exp +++ b/language/move-lang/functional-tests/tests/diem/account_limits/basics.exp @@ -2,8 +2,8 @@ [1] Move VM Status: EXECUTED [2] Transaction Status: Keep(EXECUTED) [3] Transaction(1) -[4] Move VM Status: ABORTED { code: 1, location: 00000000000000000000000000000001::LibraTimestamp } -[5] Transaction Status: Keep(ABORTED { code: 1, location: 00000000000000000000000000000001::LibraTimestamp }) +[4] Move VM Status: ABORTED { code: 1, location: 00000000000000000000000000000001::DiemTimestamp } +[5] Transaction Status: Keep(ABORTED { code: 1, location: 00000000000000000000000000000001::DiemTimestamp }) [6] Transaction(2) [7] Move VM Status: EXECUTED [8] Transaction Status: Keep(EXECUTED) diff --git a/language/move-lang/functional-tests/tests/libra/account_limits/basics.move b/language/move-lang/functional-tests/tests/diem/account_limits/basics.move similarity index 62% rename from language/move-lang/functional-tests/tests/libra/account_limits/basics.move rename to language/move-lang/functional-tests/tests/diem/account_limits/basics.move index 948ff4ea6d..2536063338 100644 --- a/language/move-lang/functional-tests/tests/libra/account_limits/basics.move +++ b/language/move-lang/functional-tests/tests/diem/account_limits/basics.move @@ -1,5 +1,5 @@ -//! account: bob, 100000000Coin1, 0 -//! account: alice, 100000000Coin1, 0 +//! account: bob, 100000000XUS, 0 +//! account: alice, 100000000XUS, 0 //! new-transaction module Holder { @@ -22,25 +22,25 @@ fun main(account: &signer) { } //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: bob script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; -fun main(lr: &signer, bob_account: &signer) { - AccountLimits::publish_unrestricted_limits(bob_account); - AccountLimits::publish_window(lr, bob_account, {{bob}}); +use 0x1::XUS::XUS; +fun main(dr: &signer, bob_account: &signer) { + AccountLimits::publish_unrestricted_limits(bob_account); + AccountLimits::publish_window(dr, bob_account, {{bob}}); } } //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: bob script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; -fun main(lr: &signer, bob_account: &signer) { - AccountLimits::publish_window(lr, bob_account, {{bob}}); +use 0x1::XUS::XUS; +fun main(dr: &signer, bob_account: &signer) { + AccountLimits::publish_window(dr, bob_account, {{bob}}); } } @@ -48,9 +48,9 @@ fun main(lr: &signer, bob_account: &signer) { //! sender: bob script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(bob_account: &signer) { - AccountLimits::publish_window(bob_account, bob_account, {{bob}}); + AccountLimits::publish_window(bob_account, bob_account, {{bob}}); } } @@ -58,9 +58,9 @@ fun main(bob_account: &signer) { //! sender: bob script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(bob_account: &signer) { - AccountLimits::publish_unrestricted_limits(bob_account); + AccountLimits::publish_unrestricted_limits(bob_account); } } @@ -68,9 +68,9 @@ fun main(bob_account: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( tc, {{bob}}, 100, /* new_max_inflow */ @@ -82,12 +82,12 @@ fun main(tc: &signer) { } //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( tc, {{bob}}, 100, /* new_max_inflow */ @@ -102,9 +102,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( tc, {{bob}}, 0, /* new_max_inflow */ @@ -119,9 +119,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( tc, {{default}}, 0, /* new_max_inflow */ @@ -136,9 +136,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( tc, {{bob}}, 0, /* new_max_inflow */ @@ -153,9 +153,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_window_info( + AccountLimits::update_window_info( tc, {{bob}}, 120, @@ -168,9 +168,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_window_info( + AccountLimits::update_window_info( tc, {{bob}}, 0, @@ -183,9 +183,9 @@ fun main(tc: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(tc: &signer) { - AccountLimits::update_window_info( + AccountLimits::update_window_info( tc, {{bob}}, 120, @@ -195,13 +195,13 @@ fun main(tc: &signer) { } //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; -fun main(lr: &signer) { - AccountLimits::update_window_info( - lr, +use 0x1::XUS::XUS; +fun main(dr: &signer) { + AccountLimits::update_window_info( + dr, {{bob}}, 120, {{bob}}, @@ -213,9 +213,9 @@ fun main(lr: &signer) { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main() { - assert(AccountLimits::limits_definition_address({{bob}}) == {{bob}}, 0); + assert(AccountLimits::limits_definition_address({{bob}}) == {{bob}}, 0); } } @@ -223,21 +223,21 @@ fun main() { //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main() { - assert(AccountLimits::has_limits_published({{bob}}), 1); + assert(AccountLimits::has_limits_published({{bob}}), 1); - assert(!AccountLimits::has_limits_published({{alice}}), 3); + assert(!AccountLimits::has_limits_published({{alice}}), 3); } } //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: bob script { use 0x1::AccountLimits; -use 0x1::Coin1::Coin1; -fun main(lr: &signer, bob_account: &signer) { - AccountLimits::publish_window(lr, bob_account, {{default}}); +use 0x1::XUS::XUS; +fun main(dr: &signer, bob_account: &signer) { + AccountLimits::publish_window(dr, bob_account, {{default}}); } } diff --git a/language/move-lang/functional-tests/tests/diem/account_limits/test.move b/language/move-lang/functional-tests/tests/diem/account_limits/test.move new file mode 100644 index 0000000000..3ce2c89743 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/account_limits/test.move @@ -0,0 +1,249 @@ +//! account: validatorvivian, 10000000XUS, 0, validator +//! account: bob, 100000000XUS, 0 +//! account: alice, 100000000XUS, 0 +//! account: otherblessed, 0XUS, 0 +//! account: otherbob, 0XUS, 0, address + +//! account: moneybags, 1000000000000XUS + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// TODO: fix +// chec: ABORTED +// chec: 10048 + +//! new-transaction +//! sender: moneybags +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{otherblessed}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap) +} +} +// TODO: fix +// chec: ABORTED +// chec: 10047 + +// ----- Blessed updates max_inflow for unhosted wallet + +//! new-transaction +//! sender: blessed +script { + use 0x1::AccountLimits; + use 0x1::CoreAddresses; + use 0x1::XDX::XDX; + fun main(tc_account: &signer) { + AccountLimits::update_limits_definition(tc_account, CoreAddresses::DIEM_ROOT_ADDRESS(), 2, 2, 0, 0); + } +} + +// check: "Keep(EXECUTED)" + +// ------ try and mint to unhosted bob, but inflow is higher than total flow + +//! new-transaction +//! sender: moneybags +script { + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 3, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap) + } +} + +// TODO fix (should ABORT) - update unhosted //! account directive, and flow/balance updates for accounts +// check: "Keep(EXECUTED)" + + +// --- increase limits limits + +//! new-transaction +//! sender: blessed +script { + use 0x1::AccountLimits; + use 0x1::CoreAddresses; + use 0x1::XDX::XDX; + fun main(tc_account: &signer) { + AccountLimits::update_limits_definition(tc_account, CoreAddresses::DIEM_ROOT_ADDRESS(), 1000, 1000, 1000, 0); + } +} + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + // Since we directly wrote into this account using fake data store, we + // don't actually know that the balance is greater than 0 in the + // account limits code, but it is. + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: moneybags +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{otherblessed}}, 2, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); +} +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: otherblessed +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: moneybags +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 2, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); +} +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// TODO: fix +// chec: ABORTED +// chec: 1 + +//! block-prologue +//! proposer: validatorvivian +//! block-time: 40001 + +//! new-transaction +//! sender: moneybags +script { + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 100, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: moneybags +script { + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// TODO: fix +// chec: ABORTED +// check: 9 + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 101, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// chec: ABORTED +// check: 11 + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// TODO: fix +// chec: ABORTED +// chec: 1 + +//! new-transaction +//! sender: moneybags +script { + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 1, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// TODO: fix +// chec: ABORTED +// chec: 1 + +//! new-transaction +//! sender: blessed +//! type-args: 0x1::XUS::XUS +//! args: 0, {{otherbob}}, {{otherbob::auth_key}}, b"bob", true +stdlib_script::create_parent_vasp_account +//! check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/admin_scripts/basic_admin_script.move b/language/move-lang/functional-tests/tests/diem/admin_scripts/basic_admin_script.move similarity index 62% rename from language/move-lang/functional-tests/tests/libra/admin_scripts/basic_admin_script.move rename to language/move-lang/functional-tests/tests/diem/admin_scripts/basic_admin_script.move index 60b74df1a3..35c6e993da 100644 --- a/language/move-lang/functional-tests/tests/libra/admin_scripts/basic_admin_script.move +++ b/language/move-lang/functional-tests/tests/diem/admin_scripts/basic_admin_script.move @@ -1,12 +1,12 @@ //! account: bob, 0, 0, vasp -//! sender: libraroot +//! sender: diemroot //! execute-as: bob script { use 0x1::Signer; use 0x1::CoreAddresses; -fun main(lr: &signer, bob: &signer) { - assert(Signer::address_of(lr) == CoreAddresses::LIBRA_ROOT_ADDRESS(), 0); +fun main(dr: &signer, bob: &signer) { + assert(Signer::address_of(dr) == CoreAddresses::DIEM_ROOT_ADDRESS(), 0); assert(Signer::address_of(bob) == {{bob}}, 1); } } @@ -18,8 +18,8 @@ fun main(lr: &signer, bob: &signer) { script { use 0x1::Signer; use 0x1::CoreAddresses; -fun main(lr: &signer, bob: &signer) { - assert(Signer::address_of(lr) == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), 0); +fun main(dr: &signer, bob: &signer) { + assert(Signer::address_of(dr) == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), 0); assert(Signer::address_of(bob) == {{bob}}, 1); } } diff --git a/language/move-lang/functional-tests/tests/libra/authenticator/authenticator.move b/language/move-lang/functional-tests/tests/diem/authenticator/authenticator.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/authenticator/authenticator.move rename to language/move-lang/functional-tests/tests/diem/authenticator/authenticator.move diff --git a/language/move-lang/functional-tests/tests/libra/block/block_prologue.move b/language/move-lang/functional-tests/tests/diem/block/block_prologue.move similarity index 59% rename from language/move-lang/functional-tests/tests/libra/block/block_prologue.move rename to language/move-lang/functional-tests/tests/diem/block/block_prologue.move index ec8ad60d37..daff542654 100644 --- a/language/move-lang/functional-tests/tests/libra/block/block_prologue.move +++ b/language/move-lang/functional-tests/tests/diem/block/block_prologue.move @@ -10,22 +10,22 @@ //! new-transaction script{ -use 0x1::LibraTimestamp; -use 0x1::LibraBlock; +use 0x1::DiemTimestamp; +use 0x1::DiemBlock; fun main() { - assert(LibraBlock::get_current_block_height() == 1, 73); - assert(LibraTimestamp::now_microseconds() == 1000000, 76); + assert(DiemBlock::get_current_block_height() == 1, 73); + assert(DiemTimestamp::now_microseconds() == 1000000, 76); } } // check: "Keep(EXECUTED)" //! new-transaction script{ -use 0x1::LibraTimestamp; +use 0x1::DiemTimestamp; fun main() { - assert(LibraTimestamp::now_microseconds() != 2000000, 77); + assert(DiemTimestamp::now_microseconds() != 2000000, 77); } } // check: "Keep(EXECUTED)" @@ -33,10 +33,10 @@ fun main() { //! new-transaction //! sender: vivian script{ -use 0x1::LibraTimestamp; +use 0x1::DiemTimestamp; fun main(account: &signer) { - LibraTimestamp::update_global_time(account, {{vivian}}, 20); + DiemTimestamp::update_global_time(account, {{vivian}}, 20); } } // check: "Keep(ABORTED { code: 514," diff --git a/language/move-lang/functional-tests/tests/libra/block/expired_transaction.move b/language/move-lang/functional-tests/tests/diem/block/expired_transaction.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/block/expired_transaction.move rename to language/move-lang/functional-tests/tests/diem/block/expired_transaction.move diff --git a/language/move-lang/functional-tests/tests/diem/block/get_block_height.move b/language/move-lang/functional-tests/tests/diem/block/get_block_height.move new file mode 100644 index 0000000000..33ca355224 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/block/get_block_height.move @@ -0,0 +1,40 @@ +//! account: vivian, 1000000, 0, validator +//! new-transaction + +script{ +use 0x1::DiemBlock; +fun main() { + // check that the height of the initial block is zero + assert(DiemBlock::get_current_block_height() == 0, 77); +} +} + +//! block-prologue +//! proposer: vivian +//! block-time: 100000000 + +//! new-transaction +script{ +use 0x1::DiemBlock; +use 0x1::DiemTimestamp; + +fun main() { + assert(DiemBlock::get_current_block_height() == 1, 76); + assert(DiemTimestamp::now_microseconds() == 100000000, 80); +} +} + +//! block-prologue +//! proposer: vivian +//! block-time: 101000000 + +//! new-transaction +script{ +use 0x1::DiemBlock; +use 0x1::DiemTimestamp; + +fun main() { + assert(DiemBlock::get_current_block_height() == 2, 76); + assert(DiemTimestamp::now_microseconds() == 101000000, 80); +} +} diff --git a/language/move-lang/functional-tests/tests/libra/block/invalid_initialization_address.move b/language/move-lang/functional-tests/tests/diem/block/invalid_initialization_address.move similarity index 51% rename from language/move-lang/functional-tests/tests/libra/block/invalid_initialization_address.move rename to language/move-lang/functional-tests/tests/diem/block/invalid_initialization_address.move index eb3ecbf134..1b45ba8337 100644 --- a/language/move-lang/functional-tests/tests/libra/block/invalid_initialization_address.move +++ b/language/move-lang/functional-tests/tests/diem/block/invalid_initialization_address.move @@ -1,7 +1,7 @@ script { -use 0x1::LibraBlock; +use 0x1::DiemBlock; fun main(account: &signer) { - LibraBlock::initialize_block_metadata(account); + DiemBlock::initialize_block_metadata(account); } } // check: "Keep(ABORTED { code: 1," diff --git a/language/move-lang/functional-tests/tests/libra/block/none_validator_propser.move b/language/move-lang/functional-tests/tests/diem/block/none_validator_propser.move similarity index 66% rename from language/move-lang/functional-tests/tests/libra/block/none_validator_propser.move rename to language/move-lang/functional-tests/tests/diem/block/none_validator_propser.move index 3cc5c41cd9..ac6c8d3d52 100644 --- a/language/move-lang/functional-tests/tests/libra/block/none_validator_propser.move +++ b/language/move-lang/functional-tests/tests/diem/block/none_validator_propser.move @@ -7,12 +7,12 @@ //! new-transaction script{ -use 0x1::LibraBlock; -use 0x1::LibraTimestamp; +use 0x1::DiemBlock; +use 0x1::DiemTimestamp; fun main() { - assert(LibraBlock::get_current_block_height() == 1, 77); - assert(LibraTimestamp::now_microseconds() == 1000000, 78); + assert(DiemBlock::get_current_block_height() == 1, 77); + assert(DiemTimestamp::now_microseconds() == 1000000, 78); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/block/older_timestamp.move b/language/move-lang/functional-tests/tests/diem/block/older_timestamp.move similarity index 61% rename from language/move-lang/functional-tests/tests/libra/block/older_timestamp.move rename to language/move-lang/functional-tests/tests/diem/block/older_timestamp.move index f52965adda..de249497b2 100644 --- a/language/move-lang/functional-tests/tests/libra/block/older_timestamp.move +++ b/language/move-lang/functional-tests/tests/diem/block/older_timestamp.move @@ -6,12 +6,12 @@ //! new-transaction script{ -use 0x1::LibraBlock; -use 0x1::LibraTimestamp; +use 0x1::DiemBlock; +use 0x1::DiemTimestamp; fun main() { - assert(LibraBlock::get_current_block_height() == 1, 76); - assert(LibraTimestamp::now_microseconds() == 100000000, 77); + assert(DiemBlock::get_current_block_height() == 1, 76); + assert(DiemTimestamp::now_microseconds() == 100000000, 77); } } diff --git a/language/move-lang/functional-tests/tests/libra/block/vm_proposer.move b/language/move-lang/functional-tests/tests/diem/block/vm_proposer.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/block/vm_proposer.move rename to language/move-lang/functional-tests/tests/diem/block/vm_proposer.move diff --git a/language/move-lang/functional-tests/tests/libra/designated_dealer/basics.move b/language/move-lang/functional-tests/tests/diem/designated_dealer/basics.move similarity index 58% rename from language/move-lang/functional-tests/tests/libra/designated_dealer/basics.move rename to language/move-lang/functional-tests/tests/diem/designated_dealer/basics.move index dc04ff6401..388df188c2 100644 --- a/language/move-lang/functional-tests/tests/libra/designated_dealer/basics.move +++ b/language/move-lang/functional-tests/tests/diem/designated_dealer/basics.move @@ -1,12 +1,12 @@ //! account: bob, 0,0, address -//! account: validatorvivian, 10000000Coin1, 0, validator +//! account: validatorvivian, 10000000XUS, 0, validator //! new-transaction script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - DesignatedDealer::publish_designated_dealer_credential( + DesignatedDealer::publish_designated_dealer_credential( account, account, false ); } @@ -17,9 +17,9 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - DesignatedDealer::publish_designated_dealer_credential( + DesignatedDealer::publish_designated_dealer_credential( account, account, false ); } @@ -29,9 +29,9 @@ fun main(account: &signer) { //! new-transaction script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - DesignatedDealer::add_currency(account, account); + DesignatedDealer::add_currency(account, account); } } // check: "Keep(ABORTED { code: 258," @@ -40,16 +40,16 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - DesignatedDealer::add_currency(account, account); + DesignatedDealer::add_currency(account, account); } } // check: "Keep(ABORTED { code: 5," //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{bob}}, {{bob::auth_key}}, x"", false stdlib_script::create_designated_dealer @@ -59,9 +59,9 @@ stdlib_script::create_designated_dealer //! new-transaction script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - DesignatedDealer::update_tier(account, {{bob}}, 10, 1000000000000); + DesignatedDealer::update_tier(account, {{bob}}, 10, 1000000000000); } } // check: "Keep(ABORTED { code: 258," @@ -70,10 +70,10 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - DesignatedDealer::update_tier(account, {{bob}}, 0, 500000 * Libra::scaling_factor()); + DesignatedDealer::update_tier(account, {{bob}}, 0, 500000 * Diem::scaling_factor()); } } // check: "Keep(EXECUTED)" @@ -82,10 +82,10 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - DesignatedDealer::update_tier(account, {{bob}}, 0, 5000000 * Libra::scaling_factor()); + DesignatedDealer::update_tier(account, {{bob}}, 0, 5000000 * Diem::scaling_factor()); } } // check: "Keep(ABORTED { code: 519," @@ -94,10 +94,10 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - DesignatedDealer::update_tier(account, {{bob}}, 2, 5000000 * Libra::scaling_factor()); + DesignatedDealer::update_tier(account, {{bob}}, 2, 5000000 * Diem::scaling_factor()); } } // check: "Keep(ABORTED { code: 519," @@ -106,11 +106,11 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::DesignatedDealer; -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - Libra::destroy_zero( - DesignatedDealer::tiered_mint(account, 0, {{bob}}, 0) + Diem::destroy_zero( + DesignatedDealer::tiered_mint(account, 0, {{bob}}, 0) ); } } @@ -119,12 +119,12 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - use 0x1::Libra; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + use 0x1::Diem; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( - tc_account, {{bob}}, 500000 * Libra::scaling_factor() - 1, 0 + DiemAccount::tiered_mint( + tc_account, {{bob}}, 500000 * Diem::scaling_factor() - 1, 0 ); } } @@ -135,10 +135,10 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, {{bob}}, 2, 0 ); } @@ -153,12 +153,12 @@ script { //! sender: blessed //! expiration-time: 95000000001 script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - use 0x1::Libra; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + use 0x1::Diem; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( - tc_account, {{bob}}, 500000 * Libra::scaling_factor() - 1, 0 + DiemAccount::tiered_mint( + tc_account, {{bob}}, 500000 * Diem::scaling_factor() - 1, 0 ); } } diff --git a/language/move-lang/functional-tests/tests/libra/designated_dealer/burns.move b/language/move-lang/functional-tests/tests/diem/designated_dealer/burns.move similarity index 84% rename from language/move-lang/functional-tests/tests/libra/designated_dealer/burns.move rename to language/move-lang/functional-tests/tests/diem/designated_dealer/burns.move index 7ab7df5086..ac5cf1d94e 100644 --- a/language/move-lang/functional-tests/tests/libra/designated_dealer/burns.move +++ b/language/move-lang/functional-tests/tests/diem/designated_dealer/burns.move @@ -7,11 +7,11 @@ //! sender: blessed script { use 0x1::DesignatedDealer; - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(account: &signer) { let dummy_auth_key_prefix = x"00000000000000000000000000000001"; - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, 0xDEADBEEF, dummy_auth_key_prefix, x"", false ); assert(DesignatedDealer::exists_at(0xDEADBEEF), 0); @@ -27,11 +27,11 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { let designated_dealer_address = 0xDEADBEEF; - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, designated_dealer_address, 99, 0 ); } diff --git a/language/move-lang/functional-tests/tests/libra/designated_dealer/currencies.move b/language/move-lang/functional-tests/tests/diem/designated_dealer/currencies.move similarity index 59% rename from language/move-lang/functional-tests/tests/libra/designated_dealer/currencies.move rename to language/move-lang/functional-tests/tests/diem/designated_dealer/currencies.move index 4a4a375dc9..f8f426533c 100644 --- a/language/move-lang/functional-tests/tests/libra/designated_dealer/currencies.move +++ b/language/move-lang/functional-tests/tests/diem/designated_dealer/currencies.move @@ -5,26 +5,26 @@ //! sender: blessed script { use 0x1::DualAttestation; - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - use 0x1::LBR::LBR; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; + use 0x1::XDX::XDX; fun main(account: &signer) { let dummy_auth_key_prefix = x"00000000000000000000000000000001"; - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, 0x2, copy dummy_auth_key_prefix, b"name", false ); - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, 0x3, dummy_auth_key_prefix, b"other_name", true ); - assert(LibraAccount::accepts_currency(0x2), 0); - assert(!LibraAccount::accepts_currency(0x2), 2); + assert(DiemAccount::accepts_currency(0x2), 0); + assert(!DiemAccount::accepts_currency(0x2), 2); assert(DualAttestation::human_name(0x2) == b"name", 77); assert(DualAttestation::base_url(0x2) == b"", 78); assert(DualAttestation::compliance_public_key(0x2) == b"", 79); - assert(LibraAccount::accepts_currency(0x3), 3); - assert(LibraAccount::accepts_currency(0x3), 5); + assert(DiemAccount::accepts_currency(0x3), 3); + assert(DiemAccount::accepts_currency(0x3), 5); } } diff --git a/language/move-lang/functional-tests/tests/libra/designated_dealer/tiered_mint.move b/language/move-lang/functional-tests/tests/diem/designated_dealer/tiered_mint.move similarity index 77% rename from language/move-lang/functional-tests/tests/libra/designated_dealer/tiered_mint.move rename to language/move-lang/functional-tests/tests/diem/designated_dealer/tiered_mint.move index 6b78c2280d..3502346d2c 100644 --- a/language/move-lang/functional-tests/tests/libra/designated_dealer/tiered_mint.move +++ b/language/move-lang/functional-tests/tests/diem/designated_dealer/tiered_mint.move @@ -7,11 +7,11 @@ //! sender: blessed script { use 0x1::DesignatedDealer; - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(account: &signer) { let dummy_auth_key_prefix = x"00000000000000000000000000000001"; - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, 0xDEADBEEF, dummy_auth_key_prefix, x"", false ); assert(DesignatedDealer::exists_at(0xDEADBEEF), 0); @@ -28,11 +28,11 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { let designated_dealer_address = 0xDEADBEEF; - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, designated_dealer_address, 99*1000000, 0 ); } @@ -48,10 +48,10 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, 0xDEADBEEF, 5000001*1000000, 1 ); } @@ -65,10 +65,10 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, 0xDEADBEEF, 5000001*1000000, 2 ); } @@ -82,10 +82,10 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, 0xDEADBEEF, 50000001*1000000, 3 ); } @@ -99,10 +99,10 @@ script { //! new-transaction //! sender: blessed script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, 0xDEADBEEF, 500000001*1000000, 3 ); } @@ -116,10 +116,10 @@ script { //! sender: blessed script { use 0x1::DesignatedDealer; - use 0x1::Coin1::Coin1; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { // DesignatedDealer::update_tier(&tc_capability, 0xDEADBEEF, 4, 1000000); // invalid tier index (max index 3) - DesignatedDealer::update_tier(tc_account, 0xDEADBEEF, 4, 1000000); // invalid tier index (max index 3) + DesignatedDealer::update_tier(tc_account, 0xDEADBEEF, 4, 1000000); // invalid tier index (max index 3) } } @@ -131,10 +131,10 @@ script { //! new-transaction //! sender: ricky script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(tc_account: &signer) { - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, 0xDEADBEEF, 1, 0 ); } diff --git a/language/move-lang/functional-tests/tests/libra/libra/add_currency_to_system.move b/language/move-lang/functional-tests/tests/diem/diem/add_currency_to_system.move similarity index 60% rename from language/move-lang/functional-tests/tests/libra/libra/add_currency_to_system.move rename to language/move-lang/functional-tests/tests/diem/diem/add_currency_to_system.move index ab55cc2fc3..1e7e71216b 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/add_currency_to_system.move +++ b/language/move-lang/functional-tests/tests/diem/diem/add_currency_to_system.move @@ -1,6 +1,6 @@ //! account: vivian, 1000000, 0, validator //! account: dd, 0, 0, address -//! account: bob, 0Coin1, 0, vasp +//! account: bob, 0XUS, 0, vasp //! new-transaction //! sender: bob @@ -15,13 +15,13 @@ fun main() {} //! block-time: 2 //! new-transaction -//! sender: libraroot +//! sender: diemroot // Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } // check: "Keep(EXECUTED)" @@ -33,20 +33,20 @@ fun main(config: &signer) { // BEGIN: registration of a currency //! new-transaction -//! sender: libraroot +//! sender: diemroot address 0x1 { module COIN { use 0x1::FixedPoint32; - use 0x1::Libra; + use 0x1::Diem; struct COIN { } - public fun initialize(lr_account: &signer, tc_account: &signer) { + public fun initialize(dr_account: &signer, tc_account: &signer) { // Register the COIN currency. - Libra::register_SCS_currency( - lr_account, + Diem::register_SCS_currency( + dr_account, tc_account, - FixedPoint32::create_from_rational(1, 2), // exchange rate to LBR + FixedPoint32::create_from_rational(1, 2), // exchange rate to XDX 1000000, // scaling_factor = 10^6 100, // fractional_part = 10^2 b"COIN", @@ -61,13 +61,13 @@ module COIN { //! block-time: 4 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: blessed script { use 0x1::TransactionFee; use 0x1::COIN::{Self, COIN}; -fun main(lr_account: &signer, tc_account: &signer) { - COIN::initialize(lr_account, tc_account); +fun main(dr_account: &signer, tc_account: &signer) { + COIN::initialize(dr_account, tc_account); TransactionFee::add_txn_fee_currency(tc_account); } } @@ -79,42 +79,42 @@ fun main(lr_account: &signer, tc_account: &signer) { //! sender: blessed //! gas-currency: COIN script { -use 0x1::Libra; +use 0x1::Diem; use 0x1::COIN::COIN; use 0x1::FixedPoint32; fun main(account: &signer) { - assert(Libra::approx_lbr_for_value(10) == 5, 1); - assert(Libra::scaling_factor() == 1000000, 2); - assert(Libra::fractional_part() == 100, 3); - Libra::update_lbr_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); - assert(Libra::approx_lbr_for_value(10) == 3, 4); + assert(Diem::approx_xdx_for_value(10) == 5, 1); + assert(Diem::scaling_factor() == 1000000, 2); + assert(Diem::fractional_part() == 100, 3); + Diem::update_xdx_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); + assert(Diem::approx_xdx_for_value(10) == 3, 4); } } -// check: ToLBRExchangeRateUpdateEvent +// check: ToXDXExchangeRateUpdateEvent // check: "Keep(EXECUTED)" //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; -use 0x1::Libra; +use 0x1::Diem; fun main(account: &signer) { - let prev_mcap3 = Libra::market_cap(); - LibraAccount::create_designated_dealer( + let prev_mcap3 = Diem::market_cap(); + DiemAccount::create_designated_dealer( account, {{dd}}, {{dd::auth_key}}, x"", false, ); - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( account, {{dd}}, 10000, 0, ); - assert(Libra::market_cap() - prev_mcap3 == 10000, 8); + assert(Diem::market_cap() - prev_mcap3 == 10000, 8); } } // check: "Keep(EXECUTED)" @@ -122,10 +122,10 @@ fun main(account: &signer) { //! new-transaction //! sender: bob script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(EXECUTED)" @@ -133,18 +133,18 @@ fun main(account: &signer) { //! new-transaction //! sender: dd script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from( + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from( &with_cap, {{bob}}, 10000, x"", x"" ); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra/blessing.move b/language/move-lang/functional-tests/tests/diem/diem/blessing.move similarity index 54% rename from language/move-lang/functional-tests/tests/libra/libra/blessing.move rename to language/move-lang/functional-tests/tests/diem/diem/blessing.move index 5b717efed7..82368ce063 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/blessing.move +++ b/language/move-lang/functional-tests/tests/diem/diem/blessing.move @@ -1,56 +1,56 @@ //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -// Make sure that Coin1 is registered. Make sure that the rules +use 0x1::Diem; +use 0x1::XUS::XUS; +// Make sure that XUS is registered. Make sure that the rules // relating to SCS and synthetic currencies are consistent fun main() { - assert(Libra::is_currency(), 1); - assert(!Libra::is_synthetic_currency(), 2); - assert(Libra::is_SCS_currency(), 4); - Libra::assert_is_currency(); - Libra::assert_is_SCS_currency(); + assert(Diem::is_currency(), 1); + assert(!Diem::is_synthetic_currency(), 2); + assert(Diem::is_SCS_currency(), 4); + Diem::assert_is_currency(); + Diem::assert_is_SCS_currency(); } } // check: "Keep(EXECUTED)" //! new-transaction script { -use 0x1::Libra; -use 0x1::LBR::LBR; +use 0x1::Diem; +use 0x1::XDX::XDX; fun main() { - Libra::assert_is_SCS_currency(); + Diem::assert_is_SCS_currency(); } } // check: "Keep(ABORTED { code: 257," //! new-transaction script { -use 0x1::Libra; +use 0x1::Diem; fun main() { - Libra::assert_is_currency(); + Diem::assert_is_currency(); } } // check: "Keep(ABORTED { code: 261," //! new-transaction script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; use 0x1::FixedPoint32; fun main(account: &signer) { - Libra::update_lbr_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); + Diem::update_xdx_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); } } // check: "Keep(ABORTED { code: 258," //! new-transaction script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; fun main(account: &signer) { - Libra::update_minting_ability(account, false); + Diem::update_minting_ability(account, false); } } // check: "Keep(ABORTED { code: 258," @@ -71,15 +71,15 @@ module Holder { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; use 0x1::FixedPoint32; use {{default}}::Holder; -fun main(lr_account: &signer) { - let (a, b) = Libra::register_currency( - lr_account, +fun main(dr_account: &signer) { + let (a, b) = Diem::register_currency( + dr_account, FixedPoint32::create_from_rational(1, 1), false, 1000, @@ -87,50 +87,50 @@ fun main(lr_account: &signer) { b"ABC", ); - Holder::hold(lr_account, a); - Holder::hold(lr_account, b); + Holder::hold(dr_account, a); + Holder::hold(dr_account, b); } } // check: "Keep(ABORTED { code: 262," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::Libra; +use 0x1::Diem; use 0x1::FixedPoint32; use {{default}}::Holder; -fun main(lr_account: &signer) { - let (a, b) = Libra::register_currency( - lr_account, +fun main(dr_account: &signer) { + let (a, b) = Diem::register_currency( + dr_account, FixedPoint32::create_from_rational(1,1), false, 0, // scaling factor 100, x"" ); - Holder::hold(lr_account, a); - Holder::hold(lr_account, b); + Holder::hold(dr_account, a); + Holder::hold(dr_account, b); } } // check: "Keep(ABORTED { code: 263," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::Libra; +use 0x1::Diem; use 0x1::FixedPoint32; use {{default}}::Holder; -fun main(lr_account: &signer) { - let (a, b) = Libra::register_currency( - lr_account, +fun main(dr_account: &signer) { + let (a, b) = Diem::register_currency( + dr_account, FixedPoint32::create_from_rational(1,1), false, 1000000000000000, // scaling factor > MAX_SCALING_FACTOR 100, x"" ); - Holder::hold(lr_account, a); - Holder::hold(lr_account, b); + Holder::hold(dr_account, a); + Holder::hold(dr_account, b); } } // check: "Keep(ABORTED { code: 263," diff --git a/language/move-lang/functional-tests/tests/diem/diem/functionality.move b/language/move-lang/functional-tests/tests/diem/diem/functionality.move new file mode 100644 index 0000000000..8d83baefd9 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem/functionality.move @@ -0,0 +1,232 @@ +//! account: bob, 0XUS + +module Holder { + resource struct Holder { x: T } + public fun hold(account: &signer, x: T) { + move_to(account, Holder { x }) + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +use {{default}}::Holder; +fun main(account: &signer) { + let xus = Diem::mint(account, 10000); + assert(Diem::value(&xus) == 10000, 0); + + let (xus1, xus2) = Diem::split(xus, 5000); + assert(Diem::value(&xus1) == 5000 , 0); + assert(Diem::value(&xus2) == 5000 , 2); + let tmp = Diem::withdraw(&mut xus1, 1000); + assert(Diem::value(&xus1) == 4000 , 4); + assert(Diem::value(&tmp) == 1000 , 5); + Diem::deposit(&mut xus1, tmp); + assert(Diem::value(&xus1) == 5000 , 6); + let xus = Diem::join(xus1, xus2); + assert(Diem::value(&xus) == 10000, 7); + Holder::hold(account, xus); + + Diem::destroy_zero(Diem::zero()); +} +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +fun main(account: &signer) { + Diem::destroy_zero(Diem::mint(account, 1)); +} +} +// check: "Keep(ABORTED { code: 2055," + +//! new-transaction +//! sender: bob +//! gas-currency: XUS +script { + use 0x1::Diem; + use 0x1::XUS::XUS; + fun main() { + let coins = Diem::zero(); + Diem::approx_xdx_for_coin(&coins); + Diem::destroy_zero(coins); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +script { + use 0x1::Diem; + fun main() { + Diem::destroy_zero( + Diem::zero() + ); + } +} +// check: "Keep(ABORTED { code: 261" + +//! new-transaction +script { + use 0x1::Diem; + use 0x1::XDX::XDX; + use 0x1::XUS::XUS; + fun main() { + assert(!Diem::is_synthetic_currency(), 9); + assert(Diem::is_synthetic_currency(), 10); + assert(!Diem::is_synthetic_currency(), 11); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: blessed +script { + use 0x1::Diem; + use 0x1::XUS::XUS; + use {{default}}::Holder; + fun main(account: &signer) { + Holder::hold( + account, + Diem::remove_burn_capability(account) + ); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: diemroot +script { +use 0x1::Diem; +use 0x1::FixedPoint32; +use {{default}}::Holder; +fun main(account: &signer) { + let (mint_cap, burn_cap) = Diem::register_currency( + account, FixedPoint32::create_from_rational(1, 1), true, 10, 10, b"wat" + ); + Diem::publish_burn_capability(account, burn_cap); + Holder::hold(account, mint_cap); +} +} +// check: "Keep(ABORTED { code: 258," + +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::FixedPoint32; +use {{default}}::Holder; +fun main(account: &signer) { + let (mint_cap, burn_cap) = Diem::register_currency( + account, FixedPoint32::create_from_rational(1, 1), true, 10, 10, b"wat" + ); + Holder::hold(account, mint_cap); + Holder::hold(account, burn_cap); +} +} +// check: "Keep(ABORTED { code: 2," + +//! new-transaction +//! sender: diemroot +script { +use 0x1::Diem; +use 0x1::FixedPoint32; +fun main(account: &signer) { + Diem::register_SCS_currency( + account, account, FixedPoint32::create_from_rational(1, 1), 10, 10, b"wat" + ); +} +} +// check: "Keep(ABORTED { code: 258," + +//! new-transaction +//! sender: diemroot +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +use {{default}}::Holder; +fun main(account: &signer) { + Holder::hold(account, Diem::create_preburn(account)); +} +} +// check: "Keep(ABORTED { code: 258,") + +//! new-transaction +//! sender: diemroot +script { +use 0x1::Diem; +use 0x1::XDX::XDX; +fun main(account: &signer) { + Diem::publish_preburn_to_account(account, account); +} +} +// check: "Keep(ABORTED { code: 1539,") + +//! new-transaction +//! sender: diemroot +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +fun main(account: &signer) { + Diem::publish_preburn_to_account(account, account); +} +} +// check: "Keep(ABORTED { code: 1539,") + +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +fun main(account: &signer) { + let xus = Diem::mint(account, 1); + let tmp = Diem::withdraw(&mut xus, 10); + Diem::destroy_zero(tmp); + Diem::destroy_zero(xus); +} +} +// check: "Keep(ABORTED { code: 2568," + +//! new-transaction +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +use 0x1::XDX::XDX; +fun main() { + assert(Diem::is_SCS_currency(), 99); + assert(!Diem::is_SCS_currency(), 98); + assert(!Diem::is_synthetic_currency(), 97); + assert(Diem::is_synthetic_currency(), 96); +} +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: blessed +script { +use 0x1::CoreAddresses; +fun main(account: &signer) { + CoreAddresses::assert_currency_info(account) +} +} +// check: "Keep(ABORTED { code: 770," + +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +fun main(tc_account: &signer) { + let max_u64 = 18446744073709551615; + let coin1 = Diem::mint(tc_account, max_u64); + let coin2 = Diem::mint(tc_account, 1); + Diem::deposit(&mut coin1, coin2); + Diem::destroy_zero(coin1); +} +} +// check: "Keep(ABORTED { code: 1800," diff --git a/language/move-lang/functional-tests/tests/libra/libra/initialize.move b/language/move-lang/functional-tests/tests/diem/diem/initialize.move similarity index 58% rename from language/move-lang/functional-tests/tests/libra/libra/initialize.move rename to language/move-lang/functional-tests/tests/diem/diem/initialize.move index 7468818f52..c36f9af852 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/initialize.move +++ b/language/move-lang/functional-tests/tests/diem/diem/initialize.move @@ -1,9 +1,9 @@ //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::Libra; +use 0x1::Diem; fun main(account: &signer) { - Libra::initialize(account); + Diem::initialize(account); } } // check: "Keep(ABORTED { code: 1," diff --git a/language/move-lang/functional-tests/tests/libra/libra/mint.move b/language/move-lang/functional-tests/tests/diem/diem/mint.move similarity index 65% rename from language/move-lang/functional-tests/tests/libra/libra/mint.move rename to language/move-lang/functional-tests/tests/diem/diem/mint.move index 68db18ff52..0c67f4dd3f 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/mint.move +++ b/language/move-lang/functional-tests/tests/diem/diem/mint.move @@ -1,6 +1,6 @@ // Test the mint flow -//! account: alice, 0Coin1 +//! account: alice, 0XUS module Holder { resource struct Holder { x: T } @@ -14,15 +14,15 @@ module Holder { //! new-transaction //! sender: blessed script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; use {{default}}::Holder; fun main(account: &signer) { // mint 100 coins and check that the market cap increases appropriately - let old_market_cap = Libra::market_cap(); - let coin = Libra::mint(account, 100); - assert(Libra::value(&coin) == 100, 8000); - assert(Libra::market_cap() == old_market_cap + 100, 8001); + let old_market_cap = Diem::market_cap(); + let coin = Diem::mint(account, 100); + assert(Diem::value(&coin) == 100, 8000); + assert(Diem::market_cap() == old_market_cap + 100, 8001); // get rid of the coin Holder::hold(account, coin) @@ -35,11 +35,11 @@ fun main(account: &signer) { //! new-transaction // Minting from a non-privileged account should not work script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - let coin = Libra::mint(account, 100); - Libra::destroy_zero(coin) + let coin = Diem::mint(account, 100); + Diem::destroy_zero(coin) } } diff --git a/language/move-lang/functional-tests/tests/libra/libra/multi_currency.move b/language/move-lang/functional-tests/tests/diem/diem/multi_currency.move similarity index 53% rename from language/move-lang/functional-tests/tests/libra/libra/multi_currency.move rename to language/move-lang/functional-tests/tests/diem/diem/multi_currency.move index 96145e0b7a..a3d79bd072 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/multi_currency.move +++ b/language/move-lang/functional-tests/tests/diem/diem/multi_currency.move @@ -1,18 +1,18 @@ //! account: alice, 0, 0, address //! account: bob, 0, 0, address -//! account: richie, 10Coin1 +//! account: richie, 10XUS //! account: sally, 0, 0, address // BEGIN: registration of a currency //! account: validator, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot // Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } // check: "Keep(EXECUTED)" @@ -23,20 +23,20 @@ fun main(config: &signer) { //! new-transaction -//! sender: libraroot +//! sender: diemroot address 0x1 { module COIN { use 0x1::FixedPoint32; - use 0x1::Libra; + use 0x1::Diem; struct COIN { } - public fun initialize(lr_account: &signer, tc_account: &signer) { + public fun initialize(dr_account: &signer, tc_account: &signer) { // Register the COIN currency. - Libra::register_SCS_currency( - lr_account, + Diem::register_SCS_currency( + dr_account, tc_account, - FixedPoint32::create_from_rational(1, 2), // exchange rate to LBR + FixedPoint32::create_from_rational(1, 2), // exchange rate to XDX 1000000, // scaling_factor = 10^6 100, // fractional_part = 10^2 b"COIN", @@ -51,13 +51,13 @@ module COIN { //! block-time: 4 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: blessed script { use 0x1::TransactionFee; use 0x1::COIN::{Self, COIN}; -fun main(lr_account: &signer, tc_account: &signer) { - COIN::initialize(lr_account, tc_account); +fun main(dr_account: &signer, tc_account: &signer) { + COIN::initialize(dr_account, tc_account); TransactionFee::add_txn_fee_currency(tc_account); } } @@ -76,9 +76,9 @@ stdlib_script::create_designated_dealer //! sender: blessed script { use 0x1::COIN::COIN; -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::tiered_mint(account, {{sally}}, 10, 3); + DiemAccount::tiered_mint(account, {{sally}}, 10, 3); } } @@ -86,13 +86,13 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; use 0x1::COIN::COIN; -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(tc_account: &signer) { let add_all_currencies = false; - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( tc_account, {{alice}}, {{alice::auth_key}}, @@ -100,7 +100,7 @@ fun main(tc_account: &signer) { add_all_currencies, ); - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( tc_account, {{bob}}, {{bob::auth_key}}, @@ -115,12 +115,12 @@ fun main(tc_account: &signer) { //! new-transaction //! sender: richie script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" @@ -129,12 +129,12 @@ fun main(account: &signer) { //! new-transaction //! sender: sally script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" @@ -142,10 +142,10 @@ fun main(account: &signer) { //! new-transaction //! sender: alice script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(EXECUTED)" @@ -153,10 +153,10 @@ fun main(account: &signer) { //! new-transaction //! sender: bob script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(EXECUTED)" @@ -165,21 +165,21 @@ fun main(account: &signer) { //! new-transaction //! sender: alice script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 261," -// Adding Coin1 a second time should fail with ADD_EXISTING_CURRENCY +// Adding XUS a second time should fail with ADD_EXISTING_CURRENCY //! new-transaction //! sender: alice script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 3846," @@ -187,14 +187,14 @@ fun main(account: &signer) { //! new-transaction //! sender: alice script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - assert(LibraAccount::balance({{alice}}) == 0, 0); - assert(LibraAccount::balance({{bob}}) == 10, 1); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + assert(DiemAccount::balance({{alice}}) == 0, 0); + assert(DiemAccount::balance({{bob}}) == 10, 1); } } // check: "Keep(EXECUTED)" @@ -202,18 +202,18 @@ fun main(account: &signer) { //! new-transaction //! sender: bob script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::COIN::COIN; -use 0x1::Coin1::Coin1; +use 0x1::XUS::XUS; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); - LibraAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - assert(LibraAccount::balance({{bob}}) == 0, 2); - assert(LibraAccount::balance({{bob}}) == 0, 3); - assert(LibraAccount::balance({{alice}}) == 10, 4); - assert(LibraAccount::balance({{alice}}) == 10, 5); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); + DiemAccount::pay_from(&with_cap, {{alice}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + assert(DiemAccount::balance({{bob}}) == 0, 2); + assert(DiemAccount::balance({{bob}}) == 0, 3); + assert(DiemAccount::balance({{alice}}) == 10, 4); + assert(DiemAccount::balance({{alice}}) == 10, 5); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra/preburn_burn.move b/language/move-lang/functional-tests/tests/diem/diem/preburn_burn.move similarity index 55% rename from language/move-lang/functional-tests/tests/libra/libra/preburn_burn.move rename to language/move-lang/functional-tests/tests/diem/diem/preburn_burn.move index 96e9b2b2f7..50b012920d 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/preburn_burn.move +++ b/language/move-lang/functional-tests/tests/diem/diem/preburn_burn.move @@ -5,18 +5,18 @@ // register blessed as a preburn entity //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, {{dd}}, {{dd::auth_key}}, x"", false, ); - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( account, {{dd}}, 600, @@ -29,20 +29,20 @@ fun main(account: &signer) { // perform a preburn //! new-transaction //! sender: dd -//! gas-currency: Coin1 +//! gas-currency: XUS script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::Diem; +use 0x1::DiemAccount; fun main(account: &signer) { - let old_market_cap = Libra::market_cap(); - let with_cap = LibraAccount::extract_withdraw_capability(account); + let old_market_cap = Diem::market_cap(); + let with_cap = DiemAccount::extract_withdraw_capability(account); // send the coins to the preburn area. market cap should not be affected, but the preburn // bucket should increase in size by 100 - LibraAccount::preburn(account, &with_cap, 100); - assert(Libra::market_cap() == old_market_cap, 8002); - assert(Libra::preburn_value() == 100, 8003); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::preburn(account, &with_cap, 100); + assert(Diem::market_cap() == old_market_cap, 8002); + assert(Diem::preburn_value() == 100, 8003); + DiemAccount::restore_withdraw_capability(with_cap); } } @@ -53,10 +53,10 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::cancel_burn(account, {{dd}}) + DiemAccount::cancel_burn(account, {{dd}}) } } // check: CancelBurnEvent @@ -65,20 +65,20 @@ fun main(account: &signer) { // perform a preburn //! new-transaction //! sender: dd -//! gas-currency: Coin1 +//! gas-currency: XUS script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::Diem; +use 0x1::DiemAccount; fun main(account: &signer) { - let old_market_cap = Libra::market_cap(); - let with_cap = LibraAccount::extract_withdraw_capability(account); + let old_market_cap = Diem::market_cap(); + let with_cap = DiemAccount::extract_withdraw_capability(account); // send the coins to the preburn area. market cap should not be affected, but the preburn // bucket should increase in size by 100 - LibraAccount::preburn(account, &with_cap, 100); - assert(Libra::market_cap() == old_market_cap, 8002); - assert(Libra::preburn_value() == 100, 8003); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::preburn(account, &with_cap, 100); + assert(Diem::market_cap() == old_market_cap, 8002); + assert(Diem::preburn_value() == 100, 8003); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: PreburnEvent @@ -87,15 +87,15 @@ fun main(account: &signer) { // second (concurrent) preburn disallowed //! new-transaction //! sender: dd -//! gas-currency: Coin1 +//! gas-currency: XUS script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; + use 0x1::XUS::XUS; + use 0x1::DiemAccount; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); + let with_cap = DiemAccount::extract_withdraw_capability(account); // Preburn area already occupied, aborts - LibraAccount::preburn(account, &with_cap, 200); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::preburn(account, &with_cap, 200); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(ABORTED { code: 769," @@ -104,14 +104,14 @@ script { //! new-transaction //! sender: blessed script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - let old_market_cap = Libra::market_cap(); + let old_market_cap = Diem::market_cap(); // do the burn. the market cap should now decrease, and the preburn area should be empty - Libra::burn(account, {{dd}}); - assert(Libra::market_cap() == old_market_cap - 100, 8004); - assert(Libra::preburn_value() == 0, 8005); + Diem::burn(account, {{dd}}); + assert(Diem::market_cap() == old_market_cap - 100, 8004); + assert(Diem::preburn_value() == 0, 8005); } } @@ -121,15 +121,15 @@ fun main(account: &signer) { // Preburn allowed but larger than balance //! new-transaction //! sender: dd -//! gas-currency: Coin1 +//! gas-currency: XUS script { - use 0x1::Coin1::Coin1; - // use 0x1::Libra; - use 0x1::LibraAccount; + use 0x1::XUS::XUS; + // use 0x1::Diem; + use 0x1::DiemAccount; fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::preburn(account, &with_cap, 501); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::preburn(account, &with_cap, 501); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(ABORTED { code: 1288," @@ -138,10 +138,10 @@ script { //! new-transaction //! sender: blessed script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - Libra::burn(account, {{default}}); + Diem::burn(account, {{default}}); } } // check: "Keep(ABORTED { code: 517," @@ -149,10 +149,10 @@ fun main(account: &signer) { // Try to burn on an account that doesn't have a burn capability //! new-transaction script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - Libra::burn(account, {{default}}); + Diem::burn(account, {{default}}); } } // check: "Keep(ABORTED { code: 4," @@ -160,10 +160,10 @@ fun main(account: &signer) { // Try to cancel burn on an account that doesn't have a burn capability //! new-transaction script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - Libra::destroy_zero(Libra::cancel_burn(account, {{dd}})); + Diem::destroy_zero(Diem::cancel_burn(account, {{dd}})); } } // check: "Keep(ABORTED { code: 4," @@ -171,11 +171,11 @@ fun main(account: &signer) { // Try to preburn to an account that doesn't have a preburn resource //! new-transaction script { -use 0x1::Coin1::Coin1; -use 0x1::Libra; +use 0x1::XUS::XUS; +use 0x1::Diem; fun main(account: &signer) { - let coin = Libra::zero(); - Libra::preburn_to(account, coin) + let coin = Diem::zero(); + Diem::preburn_to(account, coin) } } // check: "Keep(ABORTED { code: 1539," @@ -183,10 +183,10 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::LBR::LBR; +use 0x1::DiemAccount; +use 0x1::XDX::XDX; fun main(account: &signer) { - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, {{baddd}}, {{baddd::auth_key}}, @@ -219,15 +219,15 @@ module Holder { //! new-transaction //! sender: blessed script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; use {{default}}::Holder; fun main(account: &signer) { let u64_max = 18446744073709551615; Holder::hold( account, - Libra::mint(account, u64_max), - Libra::mint(account, u64_max) + Diem::mint(account, u64_max), + Diem::mint(account, u64_max) ); } } @@ -237,13 +237,13 @@ fun main(account: &signer) { //! new-transaction //! sender: dd script { -use 0x1::Libra::{Self, Libra}; -use 0x1::Coin1::Coin1; +use 0x1::Diem::{Self, Diem}; +use 0x1::XUS::XUS; use {{default}}::Holder; fun main(account: &signer) { - let (coin1_tmp, coin2) = Holder::get>({{blessed}}); - Libra::preburn_to(account, coin1_tmp); - Libra::preburn_to(account, coin2); + let (xus, coin2) = Holder::get>({{blessed}}); + Diem::preburn_to(account, xus); + Diem::preburn_to(account, coin2); } } // check: "Keep(ABORTED { code: 769," @@ -252,11 +252,11 @@ fun main(account: &signer) { //! new-transaction //! sender: dd script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; fun main(account: &signer) { - let coin = Libra::zero(); - Libra::preburn_to(account, coin); + let coin = Diem::zero(); + Diem::preburn_to(account, coin); } } // check: "Keep(EXECUTED)" @@ -265,22 +265,22 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; fun main(account: &signer) { - Libra::burn(account, {{dd}}); + Diem::burn(account, {{dd}}); } } // check: "Keep(ABORTED { code: 1025," //! new-transaction script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; fun main(account: &signer) { - Libra::publish_burn_capability( + Diem::publish_burn_capability( account, - Libra::remove_burn_capability(account) + Diem::remove_burn_capability(account) ); } } diff --git a/language/move-lang/functional-tests/tests/libra/libra/stop_minting.move b/language/move-lang/functional-tests/tests/diem/diem/stop_minting.move similarity index 52% rename from language/move-lang/functional-tests/tests/libra/libra/stop_minting.move rename to language/move-lang/functional-tests/tests/diem/diem/stop_minting.move index fbec92b0ca..2b7e2a2cf3 100644 --- a/language/move-lang/functional-tests/tests/libra/libra/stop_minting.move +++ b/language/move-lang/functional-tests/tests/diem/diem/stop_minting.move @@ -5,12 +5,12 @@ // BEGIN: registration of a currency //! new-transaction -//! sender: libraroot +//! sender: diemroot // Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } // check: "Keep(EXECUTED)" @@ -21,20 +21,20 @@ fun main(config: &signer) { //! new-transaction -//! sender: libraroot +//! sender: diemroot address 0x1 { module COIN { use 0x1::FixedPoint32; - use 0x1::Libra; + use 0x1::Diem; struct COIN { } - public fun initialize(lr_account: &signer, tc_account: &signer) { + public fun initialize(dr_account: &signer, tc_account: &signer) { // Register the COIN currency. - Libra::register_SCS_currency( - lr_account, + Diem::register_SCS_currency( + dr_account, tc_account, - FixedPoint32::create_from_rational(1, 2), // exchange rate to LBR + FixedPoint32::create_from_rational(1, 2), // exchange rate to XDX 1000000, // scaling_factor = 10^6 100, // fractional_part = 10^2 b"COIN", @@ -49,13 +49,13 @@ module COIN { //! block-time: 4 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: blessed script { use 0x1::TransactionFee; use 0x1::COIN::{Self, COIN}; -fun main(lr_account: &signer, tc_account: &signer) { - COIN::initialize(lr_account, tc_account); +fun main(dr_account: &signer, tc_account: &signer) { + COIN::initialize(dr_account, tc_account); TransactionFee::add_txn_fee_currency(tc_account); } } @@ -66,43 +66,43 @@ fun main(lr_account: &signer, tc_account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use 0x1::COIN::COIN; -use 0x1::Libra; +use 0x1::Diem; // register dd(1|2) as a preburner fun main(account: &signer) { - let prev_mcap1 = Libra::market_cap(); - let prev_mcap2 = Libra::market_cap(); - LibraAccount::create_designated_dealer( + let prev_mcap1 = Diem::market_cap(); + let prev_mcap2 = Diem::market_cap(); + DiemAccount::create_designated_dealer( account, {{dd1}}, {{dd1::auth_key}}, x"", false, ); - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, {{dd2}}, {{dd2::auth_key}}, x"", false, ); - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( account, {{dd1}}, 10, 0, ); - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( account, {{dd2}}, 100, 0, ); - assert(Libra::market_cap() - prev_mcap1 == 10, 7); - assert(Libra::market_cap() - prev_mcap2 == 100, 8); + assert(Diem::market_cap() - prev_mcap1 == 10, 7); + assert(Diem::market_cap() - prev_mcap2 == 100, 8); } } // check: "Keep(EXECUTED)" @@ -110,14 +110,14 @@ fun main(account: &signer) { //! new-transaction //! sender: dd1 script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; // do some preburning fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::preburn(account, &with_cap, 10); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::preburn(account, &with_cap, 10); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" @@ -126,13 +126,13 @@ fun main(account: &signer) { //! sender: dd2 script { use 0x1::COIN::COIN; -use 0x1::LibraAccount; +use 0x1::DiemAccount; // do some preburning fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::preburn(account, &with_cap, 100); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::preburn(account, &with_cap, 100); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" @@ -142,17 +142,17 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; use 0x1::COIN::COIN; fun main(account: &signer) { - let prev_mcap1 = Libra::market_cap(); - let prev_mcap2 = Libra::market_cap(); - Libra::burn(account, {{dd1}}); - Libra::burn(account, {{dd2}}); - assert(prev_mcap1 - Libra::market_cap() == 10, 9); - assert(prev_mcap2 - Libra::market_cap() == 100, 10); + let prev_mcap1 = Diem::market_cap(); + let prev_mcap2 = Diem::market_cap(); + Diem::burn(account, {{dd1}}); + Diem::burn(account, {{dd2}}); + assert(prev_mcap1 - Diem::market_cap() == 10, 9); + assert(prev_mcap2 - Diem::market_cap() == 100, 10); } } // check: "Keep(EXECUTED)" @@ -161,13 +161,13 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::XUS::XUS; fun main(account: &signer) { - Libra::update_minting_ability(account, false); - let coin = Libra::mint(account, 10); // will abort here - Libra::destroy_zero(coin); + Diem::update_minting_ability(account, false); + let coin = Diem::mint(account, 10); // will abort here + Diem::destroy_zero(coin); } } // check: "Keep(ABORTED { code: 1281," diff --git a/language/move-lang/functional-tests/tests/diem/diem/xus.move b/language/move-lang/functional-tests/tests/diem/diem/xus.move new file mode 100644 index 0000000000..cd1f024750 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem/xus.move @@ -0,0 +1,16 @@ +//! new-transaction +//! sender: blessed +script { +use 0x1::Diem; +use 0x1::XUS::XUS; +use 0x1::FixedPoint32; +fun main(account: &signer) { + assert(Diem::approx_xdx_for_value(10) == 10, 1); + assert(Diem::scaling_factor() == 1000000, 2); + assert(Diem::fractional_part() == 100, 3); + Diem::update_xdx_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); + assert(Diem::approx_xdx_for_value(10) == 3, 4); +} +} +// check: ToXDXExchangeRateUpdateEvent +// check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/add_currency.move b/language/move-lang/functional-tests/tests/diem/diem_account/add_currency.move similarity index 66% rename from language/move-lang/functional-tests/tests/libra/libra_account/add_currency.move rename to language/move-lang/functional-tests/tests/diem/diem_account/add_currency.move index 355e69341d..f9276c502e 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/add_currency.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/add_currency.move @@ -8,12 +8,12 @@ // BEGIN: registration of a currency //! new-transaction -//! sender: libraroot +//! sender: diemroot // Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } // check: "Keep(EXECUTED)" @@ -24,20 +24,20 @@ fun main(config: &signer) { //! new-transaction -//! sender: libraroot +//! sender: diemroot address 0x1 { module COIN { use 0x1::FixedPoint32; - use 0x1::Libra; + use 0x1::Diem; struct COIN { } - public fun initialize(lr_account: &signer, tc_account: &signer) { + public fun initialize(dr_account: &signer, tc_account: &signer) { // Register the COIN currency. - Libra::register_SCS_currency( - lr_account, + Diem::register_SCS_currency( + dr_account, tc_account, - FixedPoint32::create_from_rational(1, 2), // exchange rate to LBR + FixedPoint32::create_from_rational(1, 2), // exchange rate to XDX 1000000, // scaling_factor = 10^6 100, // fractional_part = 10^2 b"COIN", @@ -52,13 +52,13 @@ module COIN { //! block-time: 4 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: blessed script { use 0x1::TransactionFee; use 0x1::COIN::{Self, COIN}; -fun main(lr_account: &signer, tc_account: &signer) { - COIN::initialize(lr_account, tc_account); +fun main(dr_account: &signer, tc_account: &signer) { + COIN::initialize(dr_account, tc_account); TransactionFee::add_txn_fee_currency(tc_account); } } @@ -66,14 +66,14 @@ fun main(lr_account: &signer, tc_account: &signer) { // END: registration of a currency -// LibraRoot should not be able to add a balance +// DiemRoot should not be able to add a balance //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 1031," @@ -82,10 +82,10 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 1031," @@ -93,12 +93,12 @@ fun main(account: &signer) { // Validators and ValidatorOperators should not be able to add a balance //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::create_validator_account(account, {{vivian}}, {{vivian::auth_key}}, b"owner_name"); - LibraAccount::create_validator_operator_account(account, {{otto}}, {{otto::auth_key}}, b"operator_name") + DiemAccount::create_validator_account(account, {{vivian}}, {{vivian::auth_key}}, b"owner_name"); + DiemAccount::create_validator_operator_account(account, {{otto}}, {{otto::auth_key}}, b"operator_name") } } @@ -108,10 +108,10 @@ fun main(account: &signer) { //! new-transaction //! sender: vivian script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 1031," @@ -120,17 +120,17 @@ fun main(account: &signer) { //! new-transaction //! sender: otto script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } } // check: "Keep(ABORTED { code: 1031," //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{vasp}}, {{vasp::auth_key}}, b"bob", false stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" @@ -148,9 +148,9 @@ stdlib_script::add_currency_to_account stdlib_script::create_child_vasp_account // check: "Keep(EXECUTED)" -// can't add a balance of LBR right now +// can't add a balance of XDX right now //! new-transaction //! sender: child -//! type-args: 0x1::LBR::LBR +//! type-args: 0x1::XDX::XDX stdlib_script::add_currency_to_account // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/diem/diem_account/basics.move b/language/move-lang/functional-tests/tests/diem/diem_account/basics.move new file mode 100644 index 0000000000..8a6c61d933 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem_account/basics.move @@ -0,0 +1,197 @@ +//! account: bob, 10000XDX +//! account: alice, 0XDX +//! account: abby, 0, 0, address +//! account: doris, 0XUS, 0 + +module Holder { + use 0x1::Signer; + + resource struct Hold { + x: T + } + + public fun hold(account: &signer, x: T) { + move_to(account, Hold{x}) + } + + public fun get(account: &signer): T + acquires Hold { + let Hold {x} = move_from>(Signer::address_of(account)); + x + } +} + +//! new-transaction +script { + use 0x1::DiemAccount; + fun main(sender: &signer) { + DiemAccount::initialize(sender, x"00000000000000000000000000000000"); + } +} +// check: "Keep(ABORTED { code: 1," + +//! new-transaction +//! sender: bob +script { + use 0x1::XDX::XDX; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: bob +script { + use 0x1::XDX::XDX; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{abby}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(ABORTED { code: 4357," + +//! new-transaction +//! sender: bob +script { + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{abby}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(ABORTED { code: 4869," + +//! new-transaction +//! sender: bob +script { + use 0x1::XDX::XDX; + use 0x1::DiemAccount; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{doris}}, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(ABORTED { code: 4615," + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + fun main(account: &signer) { + let rot_cap = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&rot_cap, x"123abc"); + DiemAccount::restore_key_rotation_capability(rot_cap); + } +} +// check: "Keep(ABORTED { code: 2055," + +//! new-transaction +script { + use 0x1::DiemAccount; + use {{default}}::Holder; + fun main(account: &signer) { + Holder::hold( + account, + DiemAccount::extract_key_rotation_capability(account) + ); + Holder::hold( + account, + DiemAccount::extract_key_rotation_capability(account) + ); + } +} +// check: "Keep(ABORTED { code: 2305," + +//! new-transaction +script { + use 0x1::DiemAccount; + use 0x1::Signer; + fun main(sender: &signer) { + let cap = DiemAccount::extract_key_rotation_capability(sender); + assert( + *DiemAccount::key_rotation_capability_address(&cap) == Signer::address_of(sender), 0 + ); + DiemAccount::restore_key_rotation_capability(cap); + let with_cap = DiemAccount::extract_withdraw_capability(sender); + + assert( + *DiemAccount::withdraw_capability_address(&with_cap) == Signer::address_of(sender), + 0 + ); + DiemAccount::restore_withdraw_capability(with_cap); + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: bob +script { + use 0x1::DiemAccount; + use 0x1::XDX::XDX; + fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 10000, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + assert(DiemAccount::balance({{alice}}) == 10000, 60) + } +} +// check: "Keep(EXECUTED)" + +//! new-transaction +//! sender: blessed +//! type-args: 0x1::XUS::XUS +//! args: 0, 0x0, {{bob::auth_key}}, b"bob", true +stdlib_script::create_parent_vasp_account +// check: "Keep(ABORTED { code: 2567," + +//! new-transaction +//! sender: blessed +//! type-args: 0x1::XUS::XUS +//! args: 0, {{abby}}, x"", b"bob", true +stdlib_script::create_parent_vasp_account +// check: "Keep(ABORTED { code: 2055," + +//! new-transaction +script { +use 0x1::DiemAccount; +fun main() { + DiemAccount::sequence_number(0x1); +} +} +// check: "Keep(ABORTED { code: 5," + +//! new-transaction +script { +use 0x1::DiemAccount; +fun main() { + DiemAccount::authentication_key(0x1); +} +} +// check: "Keep(ABORTED { code: 5," + +//! new-transaction +script { +use 0x1::DiemAccount; +fun main() { + DiemAccount::delegated_key_rotation_capability(0x1); +} +} +// check: "Keep(ABORTED { code: 5," + +//! new-transaction +script { +use 0x1::DiemAccount; +fun main() { + DiemAccount::delegated_withdraw_capability(0x1); +} +} +// check: "Keep(ABORTED { code: 5," diff --git a/language/move-lang/functional-tests/tests/diem/diem_account/create_account.move b/language/move-lang/functional-tests/tests/diem/diem_account/create_account.move new file mode 100644 index 0000000000..f37634b5f3 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem_account/create_account.move @@ -0,0 +1,25 @@ +//! sender: blessed +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::LCS; +fun main(account: &signer) { + let addr: address = 0x111101; + assert(!DiemAccount::exists_at(addr), 83); + DiemAccount::create_parent_vasp_account(account, addr, LCS::to_bytes(&addr), x"aa", false); +} +} + +//! new-transaction +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +fun main(account: &signer) { + let addr: address = 0x111101; + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, addr, 10, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + assert(DiemAccount::balance(addr) == 10, 84); + assert(DiemAccount::sequence_number(addr) == 0, 84); +} +} diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/create_reserved.move b/language/move-lang/functional-tests/tests/diem/diem_account/create_reserved.move similarity index 66% rename from language/move-lang/functional-tests/tests/libra/libra_account/create_reserved.move rename to language/move-lang/functional-tests/tests/diem/diem_account/create_reserved.move index d494bf327a..7f0d67b512 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/create_reserved.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/create_reserved.move @@ -4,22 +4,22 @@ //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( account, 0x0, x"00000000000000000000000000000000", x"", false); } } // check: "Keep(ABORTED { code: 2567," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( account, 0x0, x"00000000000000000000000000000000", x"", false); } } @@ -28,22 +28,22 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::LBR::LBR; +use 0x1::DiemAccount; +use 0x1::XDX::XDX; fun main(account: &signer) { - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( account, 0x1, x"00000000000000000000000000000000", x"", false); } } // check: "Keep(ABORTED { code: 6151," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; -use 0x1::LBR::LBR; +use 0x1::DiemAccount; +use 0x1::XDX::XDX; fun main(account: &signer) { - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( account, 0x1, x"00000000000000000000000000000000", x"", false); } } diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/delegate_rotation_capability.move b/language/move-lang/functional-tests/tests/diem/diem_account/delegate_rotation_capability.move similarity index 74% rename from language/move-lang/functional-tests/tests/libra/libra_account/delegate_rotation_capability.move rename to language/move-lang/functional-tests/tests/diem/diem_account/delegate_rotation_capability.move index 2c03514f3d..3c8942d8ac 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/delegate_rotation_capability.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/delegate_rotation_capability.move @@ -6,19 +6,19 @@ // allows a different address `master_key_address` to rotate the auth key. This is useful for // implementing (e.g.) a hot wallet with a cold recovery key. module SharedKeyRotation { - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; resource struct T { // cap.address can rotate the auth key for cap.address - cap: LibraAccount::KeyRotationCapability, + cap: DiemAccount::KeyRotationCapability, // master_key_address can also rotate the auth key for cap.address master_key_address: address, } // Publish a SharedRotation resource for the account `cap.address` with master key // `master_key_address` under the sender's account - public fun publish(account: &signer, cap: LibraAccount::KeyRotationCapability, master_key_address: address) { + public fun publish(account: &signer, cap: DiemAccount::KeyRotationCapability, master_key_address: address) { move_to(account, T { cap, master_key_address }); } @@ -27,9 +27,9 @@ module SharedKeyRotation { public fun rotate(account: &signer, wallet_address: address, new_key: vector) acquires T { let wallet_ref = borrow_global_mut(wallet_address); let sender = Signer::address_of(account); - let cap_addr = *LibraAccount::key_rotation_capability_address(&wallet_ref.cap); + let cap_addr = *DiemAccount::key_rotation_capability_address(&wallet_ref.cap); assert((wallet_ref.master_key_address == sender) || (cap_addr == sender), 77); - LibraAccount::rotate_authentication_key(&wallet_ref.cap, new_key); + DiemAccount::rotate_authentication_key(&wallet_ref.cap, new_key); } } @@ -37,11 +37,11 @@ module SharedKeyRotation { //! sender: alice script { use {{alice}}::SharedKeyRotation; -use 0x1::LibraAccount; +use 0x1::DiemAccount; // create a SharedKeyRotation for Alice's account with Bob's account key as the master key fun main(account: &signer) { - assert(LibraAccount::sequence_number({{alice}}) == 1, 77); - SharedKeyRotation::publish(account, LibraAccount::extract_key_rotation_capability(account), {{bob}}); + assert(DiemAccount::sequence_number({{alice}}) == 1, 77); + SharedKeyRotation::publish(account, DiemAccount::extract_key_rotation_capability(account), {{bob}}); } } @@ -49,10 +49,10 @@ fun main(account: &signer) { //! sender: alice script { use {{alice}}::SharedKeyRotation; -use 0x1::LibraAccount; +use 0x1::DiemAccount; // Alice can rotate her key. Here, she rotates it to its original value fun main(account: &signer) { - assert(LibraAccount::sequence_number({{alice}}) == 2, 78); + assert(DiemAccount::sequence_number({{alice}}) == 2, 78); SharedKeyRotation::rotate( account, {{alice}}, @@ -65,10 +65,10 @@ fun main(account: &signer) { //! sender: bob script { use {{alice}}::SharedKeyRotation; -use 0x1::LibraAccount; +use 0x1::DiemAccount; // Bob can too. Here, he zeroes it out to stop Alice from sending any transactions fun main(account: &signer) { - assert(LibraAccount::sequence_number({{alice}}) == 3, 78); + assert(DiemAccount::sequence_number({{alice}}) == 3, 78); SharedKeyRotation::rotate( account, {{alice}}, @@ -91,13 +91,13 @@ fun main() { script { use {{alice}}::SharedKeyRotation; use 0x1::LCS; -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::Vector; // Bob now rotates the key back to its old value fun main(account: &signer) { - assert(LibraAccount::sequence_number({{alice}}) == 3, 78); + assert(DiemAccount::sequence_number({{alice}}) == 3, 78); // simulates how an auth_key is created - // details to be found in LibraAccount::make_account + // details to be found in DiemAccount::make_account let newkey = Vector::empty(); Vector::append(&mut newkey, {{alice::auth_key}}); Vector::append(&mut newkey, LCS::to_bytes(&{{alice}})); @@ -109,8 +109,8 @@ fun main(account: &signer) { //! sender: alice // And then Alice should be able to send a tx once again script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main() { - assert(LibraAccount::sequence_number({{alice}}) == 3, 79); + assert(DiemAccount::sequence_number({{alice}}) == 3, 79); } } diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/delegate_withdrawal_capability.move b/language/move-lang/functional-tests/tests/diem/diem_account/delegate_withdrawal_capability.move similarity index 51% rename from language/move-lang/functional-tests/tests/libra/libra_account/delegate_withdrawal_capability.move rename to language/move-lang/functional-tests/tests/diem/diem_account/delegate_withdrawal_capability.move index 9a19ec4a07..937dda0c64 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/delegate_withdrawal_capability.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/delegate_withdrawal_capability.move @@ -4,26 +4,26 @@ //! sender: alice module SillyColdWallet { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - use 0x1::Libra; + use 0x1::XUS::XUS; + use 0x1::DiemAccount; + use 0x1::Diem; use 0x1::Signer; resource struct T { - cap: LibraAccount::WithdrawCapability, + cap: DiemAccount::WithdrawCapability, owner: address, } - public fun publish(account: &signer, cap: LibraAccount::WithdrawCapability, owner: address) { + public fun publish(account: &signer, cap: DiemAccount::WithdrawCapability, owner: address) { move_to(account, T { cap, owner }); } - public fun withdraw(account: &signer, wallet_address: address, _amount: u64): Libra::Libra acquires T { + public fun withdraw(account: &signer, wallet_address: address, _amount: u64): Diem::Diem acquires T { let wallet_ref = borrow_global_mut(wallet_address); let sender = Signer::address_of(account); assert(wallet_ref.owner == sender, 77); - // TODO: the withdraw_from API is no longer exposed in LibraAccount - Libra::zero() + // TODO: the withdraw_from API is no longer exposed in DiemAccount + Diem::zero() } } @@ -31,11 +31,11 @@ module SillyColdWallet { //! sender: alice script { use {{alice}}::SillyColdWallet; -use 0x1::LibraAccount; +use 0x1::DiemAccount; // create a cold wallet for Bob that withdraws from Alice's account fun main(sender: &signer) { - let cap = LibraAccount::extract_withdraw_capability(sender); + let cap = DiemAccount::extract_withdraw_capability(sender); SillyColdWallet::publish(sender, cap, {{bob}}); } } @@ -44,15 +44,15 @@ fun main(sender: &signer) { //! new-transaction //! sender: alice script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; // check that Alice can no longer withdraw from her account fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); + let with_cap = DiemAccount::extract_withdraw_capability(account); // should fail with withdrawal capability already extracted - LibraAccount::pay_from(&with_cap, {{alice}}, 1000, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::pay_from(&with_cap, {{alice}}, 1000, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(ABORTED { code: 1793," @@ -60,27 +60,27 @@ fun main(account: &signer) { //! new-transaction //! sender: bob script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; // check that Bob can still withdraw from his normal account fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 1000, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 1000, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } //! new-transaction //! sender: carol script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; // check that other users can still pay into Alice's account in the normal way fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1000, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, 1000, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/different_currency.move b/language/move-lang/functional-tests/tests/diem/diem_account/different_currency.move similarity index 66% rename from language/move-lang/functional-tests/tests/libra/libra_account/different_currency.move rename to language/move-lang/functional-tests/tests/diem/diem_account/different_currency.move index 67cb9befb6..f3e5e9bcd2 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/different_currency.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/different_currency.move @@ -1,9 +1,9 @@ -//! account: bob, 10000Coin1 +//! account: bob, 10000XUS //! new-transaction //! sender: bob //! gas-price: 0 -//! gas-currency: Coin1 +//! gas-currency: XUS script { fun main() { } diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/failure_epilogue_limit_exceeded.move b/language/move-lang/functional-tests/tests/diem/diem_account/failure_epilogue_limit_exceeded.move similarity index 70% rename from language/move-lang/functional-tests/tests/libra/libra_account/failure_epilogue_limit_exceeded.move rename to language/move-lang/functional-tests/tests/diem/diem_account/failure_epilogue_limit_exceeded.move index 8fd1e74726..3d72d4ecfb 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/failure_epilogue_limit_exceeded.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/failure_epilogue_limit_exceeded.move @@ -2,22 +2,22 @@ //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice", false stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: alice script { use 0x1::AccountLimits; -use 0x1::Coin1; +use 0x1::XUS; use 0x1::Signer; -fun main(lr_account: &signer, vasp: &signer) { - AccountLimits::publish_unrestricted_limits(vasp); - AccountLimits::publish_window( - lr_account, +fun main(dr_account: &signer, vasp: &signer) { + AccountLimits::publish_unrestricted_limits(vasp); + AccountLimits::publish_window( + dr_account, vasp, Signer::address_of(vasp) ); @@ -27,7 +27,7 @@ fun main(lr_account: &signer, vasp: &signer) { //! new-transaction //! sender: testnetdd -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: {{alice}}, 1000000, b"", b"" stdlib_script::peer_to_peer_with_metadata // check: "Keep(EXECUTED)" @@ -36,10 +36,10 @@ stdlib_script::peer_to_peer_with_metadata //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1; +use 0x1::XUS; fun main(account: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( account, {{alice}}, 0, @@ -54,7 +54,7 @@ fun main(account: &signer) { //! new-transaction //! sender: alice //! gas-price: 150 -//! gas-currency: Coin1 +//! gas-currency: XUS //! max-gas: 700 script { fun main() { diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/freezing.move b/language/move-lang/functional-tests/tests/diem/diem_account/freezing.move similarity index 82% rename from language/move-lang/functional-tests/tests/libra/libra_account/freezing.move rename to language/move-lang/functional-tests/tests/diem/diem_account/freezing.move index e4d308f35c..c626908a85 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/freezing.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/freezing.move @@ -14,7 +14,7 @@ fun main() { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountFreezing; // A special association privilege is needed for freezing an account @@ -72,7 +72,7 @@ fun main() { } script { use 0x1::AccountFreezing::{Self}; fun main(account: &signer) { - AccountFreezing::freeze_account(account, {{libraroot}}); + AccountFreezing::freeze_account(account, {{diemroot}}); } } // check: "Keep(ABORTED { code: 775," @@ -82,11 +82,11 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; -fun main(lr_account: &signer) { - LibraAccount::create_parent_vasp_account( - lr_account, +use 0x1::DiemAccount; +use 0x1::XUS::XUS; +fun main(dr_account: &signer) { + DiemAccount::create_parent_vasp_account( + dr_account, {{vasp}}, {{vasp::auth_key}}, x"A", @@ -100,11 +100,11 @@ fun main(lr_account: &signer) { //! new-transaction //! sender: vasp script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(parent_vasp: &signer) { let dummy_auth_key_prefix = x"00000000000000000000000000000000"; - LibraAccount::create_child_vasp_account(parent_vasp, 0xAA, dummy_auth_key_prefix, false); + DiemAccount::create_child_vasp_account(parent_vasp, 0xAA, dummy_auth_key_prefix, false); } } // check: "Keep(EXECUTED)" @@ -134,7 +134,7 @@ fun main(account: &signer) { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountFreezing; fun main(account: &signer) { @@ -144,7 +144,7 @@ script { // check: "Keep(ABORTED { code: 258," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountFreezing; fun main(account: &signer) { @@ -158,7 +158,7 @@ script { script { use 0x1::AccountFreezing; fun main(account: &signer) { - AccountFreezing::freeze_account(account, {{libraroot}}); + AccountFreezing::freeze_account(account, {{diemroot}}); } } // check: "Keep(ABORTED { code: 775," @@ -174,7 +174,7 @@ script { // check: "Keep(ABORTED { code: 1031," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountFreezing; fun main(account: &signer) { @@ -184,7 +184,7 @@ script { // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::AccountFreezing; fun main() { @@ -211,10 +211,10 @@ module Holder { //! new-transaction //! sender: vasp script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use {{default}}::Holder; fun main(account: &signer) { - let cap = LibraAccount::extract_withdraw_capability(account); + let cap = DiemAccount::extract_withdraw_capability(account); Holder::hold(account, cap); } } @@ -244,7 +244,7 @@ script { //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{alice}}, {{alice::auth_key}}, b"bob", true stdlib_script::create_parent_vasp_account //! check: "Keep(EXECUTED)" @@ -253,11 +253,11 @@ stdlib_script::create_parent_vasp_account //! sender: blessed script { use {{default}}::Holder; - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(account: &signer) { - let cap = Holder::get({{vasp}}); - LibraAccount::pay_from(&cap, {{alice}}, 0, x"", x""); + let cap = Holder::get({{vasp}}); + DiemAccount::pay_from(&cap, {{alice}}, 0, x"", x""); Holder::hold(account, cap); } } @@ -266,12 +266,12 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(account: &signer) { - let cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&cap, {{vasp}}, 0, x"", x""); - LibraAccount::restore_withdraw_capability(cap); + let cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&cap, {{vasp}}, 0, x"", x""); + DiemAccount::restore_withdraw_capability(cap); } } // check: "Keep(ABORTED { code: 1281," @@ -279,12 +279,12 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; + use 0x1::DiemAccount; + use 0x1::XUS::XUS; fun main(account: &signer) { - let cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&cap, {{vasp}}, 0, x"", x""); - LibraAccount::restore_withdraw_capability(cap); + let cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&cap, {{vasp}}, 0, x"", x""); + DiemAccount::restore_withdraw_capability(cap); } } // check: "Keep(ABORTED { code: 1281," diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/pay_with_capability.move b/language/move-lang/functional-tests/tests/diem/diem_account/pay_with_capability.move similarity index 58% rename from language/move-lang/functional-tests/tests/libra/libra_account/pay_with_capability.move rename to language/move-lang/functional-tests/tests/diem/diem_account/pay_with_capability.move index d8e977efe8..60af0e8f30 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/pay_with_capability.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/pay_with_capability.move @@ -4,22 +4,22 @@ //! sender: alice module AlicePays { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; + use 0x1::XUS::XUS; + use 0x1::DiemAccount; resource struct T { - cap: LibraAccount::WithdrawCapability, + cap: DiemAccount::WithdrawCapability, } public fun create(sender: &signer) { move_to(sender, T { - cap: LibraAccount::extract_withdraw_capability(sender), + cap: DiemAccount::extract_withdraw_capability(sender), }) } public fun pay(payee: address, amount: u64) acquires T { let t = borrow_global({{alice}}); - LibraAccount::pay_from( + DiemAccount::pay_from( &t.cap, payee, amount, @@ -46,15 +46,15 @@ fun main(sender: &signer) { //! sender: bob script { use {{alice}}::AlicePays; -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; fun main() { - let carol_prev_balance = LibraAccount::balance({{carol}}); - let alice_prev_balance = LibraAccount::balance({{alice}}); + let carol_prev_balance = DiemAccount::balance({{carol}}); + let alice_prev_balance = DiemAccount::balance({{alice}}); AlicePays::pay({{carol}}, 10); - assert(carol_prev_balance + 10 == LibraAccount::balance({{carol}}), 0); - assert(alice_prev_balance - 10 == LibraAccount::balance({{alice}}), 1); + assert(carol_prev_balance + 10 == DiemAccount::balance({{carol}}), 0); + assert(alice_prev_balance - 10 == DiemAccount::balance({{alice}}), 1); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/payment_metadata.move b/language/move-lang/functional-tests/tests/diem/diem_account/payment_metadata.move similarity index 58% rename from language/move-lang/functional-tests/tests/libra/libra_account/payment_metadata.move rename to language/move-lang/functional-tests/tests/diem/diem_account/payment_metadata.move index 60e5ced6ef..6f82f69b43 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/payment_metadata.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/payment_metadata.move @@ -3,13 +3,13 @@ //! sender: alice script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; // send a transaction with metadata and make sure we see it in the PaymentReceivedEvent fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 1000, x"deadbeef", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 1000, x"deadbeef", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } @@ -22,19 +22,19 @@ fun main(account: &signer) { //! new-transaction //! sender: alice script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; // same thing, but using "deposit_with_metadata" API fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from( + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from( &with_cap, {{bob}}, 100, x"deadbeef", x"" ); - LibraAccount::restore_withdraw_capability(with_cap); + DiemAccount::restore_withdraw_capability(with_cap); } } diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/prologue_invalid_gas_currency.move b/language/move-lang/functional-tests/tests/diem/diem_account/prologue_invalid_gas_currency.move similarity index 71% rename from language/move-lang/functional-tests/tests/libra/libra_account/prologue_invalid_gas_currency.move rename to language/move-lang/functional-tests/tests/diem/diem_account/prologue_invalid_gas_currency.move index a6682d0cff..802f3c85a8 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/prologue_invalid_gas_currency.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/prologue_invalid_gas_currency.move @@ -2,22 +2,22 @@ //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice", false stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: alice script { use 0x1::AccountLimits; -use 0x1::Coin1; +use 0x1::XUS; use 0x1::Signer; -fun main(lr_account: &signer, vasp: &signer) { - AccountLimits::publish_unrestricted_limits(vasp); - AccountLimits::publish_window( - lr_account, +fun main(dr_account: &signer, vasp: &signer) { + AccountLimits::publish_unrestricted_limits(vasp); + AccountLimits::publish_window( + dr_account, vasp, Signer::address_of(vasp) ); @@ -27,7 +27,7 @@ fun main(lr_account: &signer, vasp: &signer) { //! new-transaction //! sender: testnetdd -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: {{alice}}, 1000000, b"", b"" stdlib_script::peer_to_peer_with_metadata // check: "Keep(EXECUTED)" @@ -37,7 +37,7 @@ stdlib_script::peer_to_peer_with_metadata //! sender: alice //! gas-price: 1 //! max-gas: 1000 -//! gas-currency: LBR +//! gas-currency: XDX script { fun main() { } diff --git a/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_rotation_capability.move b/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_rotation_capability.move new file mode 100644 index 0000000000..26d1e2f9df --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_rotation_capability.move @@ -0,0 +1,40 @@ +script { +use 0x1::DiemAccount; +use 0x1::Signer; +fun main(account: &signer) { + let sender = Signer::address_of(account); + let old_auth_key = DiemAccount::authentication_key(sender); + + // by default, an account has not delegated its key rotation capability + assert(!DiemAccount::delegated_key_rotation_capability(sender), 50); + + // extracting the capability should flip the flag + let cap = DiemAccount::extract_key_rotation_capability(account); + assert(DiemAccount::delegated_key_rotation_capability(sender), 51); + + // and the sender should be able to rotate + DiemAccount::rotate_authentication_key(&cap, old_auth_key); + + // restoring the capability should flip the flag back + DiemAccount::restore_key_rotation_capability(cap); + assert(!DiemAccount::delegated_key_rotation_capability(sender), 52); +} +} +// check: "Keep(EXECUTED)" + +// Extracting the capability should preclude rotation +//! new-transaction +script { +use 0x1::DiemAccount; +fun main(account: &signer) { + let cap = DiemAccount::extract_key_rotation_capability(account); + let cap2 = DiemAccount::extract_key_rotation_capability(account); + + // should fail + DiemAccount::rotate_authentication_key(&cap2, x"00"); + DiemAccount::restore_key_rotation_capability(cap); + DiemAccount::restore_key_rotation_capability(cap2); +} +} +// check: "Keep(ABORTED { code: 2305," +// check: location: ::DiemAccount diff --git a/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_withdrawal_capability.move b/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_withdrawal_capability.move new file mode 100644 index 0000000000..a9b2353bf7 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/diem_account/remove_then_replace_withdrawal_capability.move @@ -0,0 +1,22 @@ +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::Signer; +fun main(account: &signer) { + let sender = Signer::address_of(account); + + // by default, an account has not delegated its withdrawal capability + assert(!DiemAccount::delegated_withdraw_capability(sender), 50); + + // make sure we report that the capability has been extracted + let cap = DiemAccount::extract_withdraw_capability(account); + assert(DiemAccount::delegated_withdraw_capability(sender), 51); + + // and the sender should be able to withdraw with this cap + DiemAccount::pay_from(&cap, sender, 100, x"", x""); + + // restoring the capability should flip the flag back + DiemAccount::restore_withdraw_capability(cap); + assert(!DiemAccount::delegated_withdraw_capability(sender), 52); +} +} diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/success_epilogue_limit_exceeded.move b/language/move-lang/functional-tests/tests/diem/diem_account/success_epilogue_limit_exceeded.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/libra_account/success_epilogue_limit_exceeded.move rename to language/move-lang/functional-tests/tests/diem/diem_account/success_epilogue_limit_exceeded.move index 113eedb610..1acb605dd4 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_account/success_epilogue_limit_exceeded.move +++ b/language/move-lang/functional-tests/tests/diem/diem_account/success_epilogue_limit_exceeded.move @@ -2,22 +2,22 @@ //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice", false stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: alice script { use 0x1::AccountLimits; -use 0x1::Coin1; +use 0x1::XUS; use 0x1::Signer; -fun main(lr_account: &signer, vasp: &signer) { - AccountLimits::publish_unrestricted_limits(vasp); - AccountLimits::publish_window( - lr_account, +fun main(dr_account: &signer, vasp: &signer) { + AccountLimits::publish_unrestricted_limits(vasp); + AccountLimits::publish_window( + dr_account, vasp, Signer::address_of(vasp) ); @@ -27,7 +27,7 @@ fun main(lr_account: &signer, vasp: &signer) { //! new-transaction //! sender: testnetdd -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: {{alice}}, 1000000, b"", b"" stdlib_script::peer_to_peer_with_metadata // check: "Keep(EXECUTED)" @@ -36,10 +36,10 @@ stdlib_script::peer_to_peer_with_metadata //! sender: blessed script { use 0x1::AccountLimits; -use 0x1::Coin1; +use 0x1::XUS; fun main(account: &signer) { - AccountLimits::update_limits_definition( + AccountLimits::update_limits_definition( account, {{alice}}, 0, @@ -54,7 +54,7 @@ fun main(account: &signer) { //! new-transaction //! sender: alice //! gas-price: 150 -//! gas-currency: Coin1 +//! gas-currency: XUS //! max-gas: 700 script { fun main() { diff --git a/language/move-lang/functional-tests/tests/libra/libra_timestamp/basic.move b/language/move-lang/functional-tests/tests/diem/diem_timestamp/basic.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/libra_timestamp/basic.move rename to language/move-lang/functional-tests/tests/diem/diem_timestamp/basic.move index 1ed4338fb2..1fbdcb7c45 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_timestamp/basic.move +++ b/language/move-lang/functional-tests/tests/diem/diem_timestamp/basic.move @@ -12,19 +12,19 @@ //! new-transaction script { - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; fun main(account: &signer) { - LibraTimestamp::set_time_has_started(account); + DiemTimestamp::set_time_has_started(account); } } // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; fun main(account: &signer) { - LibraTimestamp::set_time_has_started(account); + DiemTimestamp::set_time_has_started(account); } } // check: "Keep(ABORTED { code: 1," diff --git a/language/move-lang/functional-tests/tests/libra/libra_version/tests.move b/language/move-lang/functional-tests/tests/diem/diem_version/tests.move similarity index 59% rename from language/move-lang/functional-tests/tests/libra/libra_version/tests.move rename to language/move-lang/functional-tests/tests/diem/diem_version/tests.move index 90f3821ac6..1ce46305f7 100644 --- a/language/move-lang/functional-tests/tests/libra/libra_version/tests.move +++ b/language/move-lang/functional-tests/tests/diem/diem_version/tests.move @@ -1,27 +1,27 @@ //! new-transaction script{ -use 0x1::LibraVersion; +use 0x1::DiemVersion; fun main(account: &signer) { - LibraVersion::initialize(account); + DiemVersion::initialize(account); } } // check: "Keep(ABORTED { code: 1," //! new-transaction script{ -use 0x1::LibraVersion; +use 0x1::DiemVersion; fun main(account: &signer) { - LibraVersion::set(account, 0); + DiemVersion::set(account, 0); } } // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ -use 0x1::LibraVersion; +use 0x1::DiemVersion; fun main(account: &signer) { - LibraVersion::set(account, 0); + DiemVersion::set(account, 0); } } // check: "Keep(ABORTED { code: 7," diff --git a/language/move-lang/functional-tests/tests/libra/dual_attestation/tests.move b/language/move-lang/functional-tests/tests/diem/dual_attestation/tests.move similarity index 89% rename from language/move-lang/functional-tests/tests/libra/dual_attestation/tests.move rename to language/move-lang/functional-tests/tests/diem/dual_attestation/tests.move index 0fbdb56214..fe9c5c881b 100644 --- a/language/move-lang/functional-tests/tests/libra/dual_attestation/tests.move +++ b/language/move-lang/functional-tests/tests/diem/dual_attestation/tests.move @@ -6,7 +6,7 @@ script{ use 0x1::DualAttestation; fun main() { - DualAttestation::get_cur_microlibra_limit(); + DualAttestation::get_cur_microdiem_limit(); } } // check: "Keep(EXECUTED)" @@ -15,7 +15,7 @@ script{ script{ use 0x1::DualAttestation::{Self}; fun main(not_blessed: &signer) { - DualAttestation::set_microlibra_limit(not_blessed, 99); + DualAttestation::set_microdiem_limit(not_blessed, 99); } } // check: "Keep(ABORTED { code: 258," @@ -25,7 +25,7 @@ script{ script{ use 0x1::DualAttestation::{Self}; fun main(not_blessed: &signer) { - DualAttestation::set_microlibra_limit(not_blessed, 1001); + DualAttestation::set_microdiem_limit(not_blessed, 1001); } } // check: "Keep(EXECUTED)" @@ -52,7 +52,7 @@ script{ //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{bob}}, {{bob::auth_key}}, b"bob", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" @@ -130,13 +130,13 @@ script{ // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: freddymac script{ use 0x1::DualAttestation; -fun main(lr_account: &signer, freddy: &signer) { - DualAttestation::publish_credential(freddy, lr_account, b"freddy"); - DualAttestation::publish_credential(freddy, lr_account, b"freddy"); +fun main(dr_account: &signer, freddy: &signer) { + DualAttestation::publish_credential(freddy, dr_account, b"freddy"); + DualAttestation::publish_credential(freddy, dr_account, b"freddy"); } } // check: "Discard(INVALID_WRITE_SET)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/charge_less_gas_for_less_work.move b/language/move-lang/functional-tests/tests/diem/epilogue/charge_less_gas_for_less_work.move similarity index 61% rename from language/move-lang/functional-tests/tests/libra/epilogue/charge_less_gas_for_less_work.move rename to language/move-lang/functional-tests/tests/diem/epilogue/charge_less_gas_for_less_work.move index 3f67b8cb7a..0bafe0aaee 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/charge_less_gas_for_less_work.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/charge_less_gas_for_less_work.move @@ -1,10 +1,10 @@ -//! account: alice, 10000Coin1 -//! account: bob, 10000Coin1 +//! account: alice, 10000XUS +//! account: bob, 10000XUS //! new-transaction //! sender: alice //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS script { fun main() { } @@ -14,7 +14,7 @@ fun main() { //! new-transaction //! sender: bob //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS script { fun main() { let x = 1; @@ -25,11 +25,11 @@ fun main() { //! new-transaction script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main() { // Alice did less work than bob so she should pay less gas. - assert(LibraAccount::balance({{bob}}) < LibraAccount::balance({{alice}}), 42); + assert(DiemAccount::balance({{bob}}) < DiemAccount::balance({{alice}}), 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/dont_increment_sequence_number_on_sequence_number_too_new.move b/language/move-lang/functional-tests/tests/diem/epilogue/dont_increment_sequence_number_on_sequence_number_too_new.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/epilogue/dont_increment_sequence_number_on_sequence_number_too_new.move rename to language/move-lang/functional-tests/tests/diem/epilogue/dont_increment_sequence_number_on_sequence_number_too_new.move diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/dont_increment_sequence_number_on_sequence_number_too_old.move b/language/move-lang/functional-tests/tests/diem/epilogue/dont_increment_sequence_number_on_sequence_number_too_old.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/epilogue/dont_increment_sequence_number_on_sequence_number_too_old.move rename to language/move-lang/functional-tests/tests/diem/epilogue/dont_increment_sequence_number_on_sequence_number_too_old.move diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move b/language/move-lang/functional-tests/tests/diem/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move similarity index 63% rename from language/move-lang/functional-tests/tests/libra/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move rename to language/move-lang/functional-tests/tests/diem/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move index beab3ae4d5..e509a97f36 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/good_transaction_consumes_gas_less_than_or_equal_to_set_maximum.move @@ -1,9 +1,9 @@ -//! account: default, 10000Coin1 +//! account: default, 10000XUS //! new-transaction //! gas-price: 1 //! max-gas: 5000 -//! gas-currency: Coin1 +//! gas-currency: XUS script { fun main() { } @@ -12,16 +12,16 @@ fun main() { //! new-transaction script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); // Ensures that the account was deducted for the gas fee. - assert(LibraAccount::balance(sender) < 10000, 42); + assert(DiemAccount::balance(sender) < 10000, 42); // Ensures that we are not just charging max_gas for the transaction. - assert(LibraAccount::balance(sender) >= 5000, 42); + assert(DiemAccount::balance(sender) >= 5000, 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_failure.move b/language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_failure.move similarity index 80% rename from language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_failure.move rename to language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_failure.move index af31252856..24cde881e2 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_failure.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_failure.move @@ -11,12 +11,12 @@ fun main() { //! new-transaction script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); - assert(LibraAccount::sequence_number(sender) == 1, 42); + assert(DiemAccount::sequence_number(sender) == 1, 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_success.move b/language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_success.move similarity index 74% rename from language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_success.move rename to language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_success.move index 5d4ad07de5..10a99b2a8e 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/increment_sequence_number_on_tx_script_success.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/increment_sequence_number_on_tx_script_success.move @@ -10,12 +10,12 @@ fun main() { //! new-transaction script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); - assert(LibraAccount::sequence_number(sender) == 1, 42); + assert(DiemAccount::sequence_number(sender) == 1, 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/loop_out_of_gas.move b/language/move-lang/functional-tests/tests/diem/epilogue/loop_out_of_gas.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/epilogue/loop_out_of_gas.move rename to language/move-lang/functional-tests/tests/diem/epilogue/loop_out_of_gas.move index a7a04cf0b9..85c2358898 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/loop_out_of_gas.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/loop_out_of_gas.move @@ -1,8 +1,8 @@ -//! account: default, 100000Coin1 +//! account: default, 100000XUS //! new-transaction //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS //! max-gas: 700 //! sender: default script { @@ -17,13 +17,13 @@ fun main() { //! new-transaction //! sender: default script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); - assert(LibraAccount::balance(sender) == 100000 - 700, 42); + assert(DiemAccount::balance(sender) == 100000 - 700, 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/recursion_out_of_gas.move b/language/move-lang/functional-tests/tests/diem/epilogue/recursion_out_of_gas.move similarity index 88% rename from language/move-lang/functional-tests/tests/libra/epilogue/recursion_out_of_gas.move rename to language/move-lang/functional-tests/tests/diem/epilogue/recursion_out_of_gas.move index dd503aae91..1490ecda8b 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/recursion_out_of_gas.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/recursion_out_of_gas.move @@ -1,4 +1,4 @@ -//! account: default, 50000Coin1 +//! account: default, 50000XUS module M { public fun rec(x: u64) { diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move b/language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move similarity index 56% rename from language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move rename to language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move index 4de66b50c6..0a718a462e 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failed_epilogue.move @@ -1,6 +1,6 @@ -//! account: alice, 1000000Coin1 -//! account: bob, 1000000Coin1 -//! account: carol, 0Coin1 +//! account: alice, 1000000XUS +//! account: bob, 1000000XUS +//! account: carol, 0XUS // Transfer all of the Alice's funds to Carol. this script will execute successfully, but @@ -10,16 +10,16 @@ //! new-transaction //! sender: alice //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS //! args: 1000000 script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer, amount: u64) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{carol}}, amount, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{carol}}, amount, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(ABORTED { code: 257288," @@ -31,16 +31,16 @@ fun main(account: &signer, amount: u64) { //! new-transaction //! sender: bob //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS //! args: 1000 script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer, amount: u64) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{carol}}, amount, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{carol}}, amount, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); } } // check: "Keep(EXECUTED)" @@ -52,12 +52,12 @@ fun main(account: &signer, amount: u64) { //! new-transaction script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main() { - assert(LibraAccount::balance({{carol}}) == 1000, 42); - assert(LibraAccount::balance({{alice}}) == LibraAccount::balance({{bob}}) + 1000, 43) + assert(DiemAccount::balance({{carol}}) == 1000, 42); + assert(DiemAccount::balance({{alice}}) == DiemAccount::balance({{bob}}) + 1000, 43) } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failure.move b/language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failure.move new file mode 100644 index 0000000000..992a4340a4 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/epilogue/revert_tx_script_state_changes_after_failure.move @@ -0,0 +1,28 @@ +//! account: alice, 1000000 +//! account: bob, 1000000 + +//! sender: alice +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; + +fun main(account: &signer) { + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{bob}}, 514, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + assert(false, 42); +} +} +// check: "Keep(ABORTED { code: 42," + + +//! new-transaction +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; + +fun main() { + assert(DiemAccount::balance({{bob}}) == 1000000, 43); +} +} +// check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/while_out_of_gas.move b/language/move-lang/functional-tests/tests/diem/epilogue/while_out_of_gas.move similarity index 70% rename from language/move-lang/functional-tests/tests/libra/epilogue/while_out_of_gas.move rename to language/move-lang/functional-tests/tests/diem/epilogue/while_out_of_gas.move index ca0407a7cc..ffb05391e4 100644 --- a/language/move-lang/functional-tests/tests/libra/epilogue/while_out_of_gas.move +++ b/language/move-lang/functional-tests/tests/diem/epilogue/while_out_of_gas.move @@ -1,8 +1,8 @@ -//! account: default, 100000Coin1 +//! account: default, 100000XUS //! new-transaction //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS //! max-gas: 700 //! sender: default script { @@ -17,13 +17,13 @@ fun main() { //! new-transaction //! sender: default script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); - assert(LibraAccount::balance(sender) == 100000 - 700, 42); + assert(DiemAccount::balance(sender) == 100000 - 700, 42); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/errors/basic.move b/language/move-lang/functional-tests/tests/diem/errors/basic.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/errors/basic.move rename to language/move-lang/functional-tests/tests/diem/errors/basic.move diff --git a/language/move-lang/functional-tests/tests/libra/genesis/genesis_account_sequence_numbers.move b/language/move-lang/functional-tests/tests/diem/genesis/genesis_account_sequence_numbers.move similarity index 60% rename from language/move-lang/functional-tests/tests/libra/genesis/genesis_account_sequence_numbers.move rename to language/move-lang/functional-tests/tests/diem/genesis/genesis_account_sequence_numbers.move index 4292c364aa..934eb50d39 100644 --- a/language/move-lang/functional-tests/tests/libra/genesis/genesis_account_sequence_numbers.move +++ b/language/move-lang/functional-tests/tests/diem/genesis/genesis_account_sequence_numbers.move @@ -1,10 +1,10 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::CoreAddresses; fun main() { // check that the sequence number of the Association account (which sent the genesis txn) has been // incremented... - assert(LibraAccount::sequence_number(CoreAddresses::LIBRA_ROOT_ADDRESS()) == 1, 66); + assert(DiemAccount::sequence_number(CoreAddresses::DIEM_ROOT_ADDRESS()) == 1, 66); } } diff --git a/language/move-lang/functional-tests/tests/libra/natives/event_emit_struct.move b/language/move-lang/functional-tests/tests/diem/natives/event_emit_struct.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/event_emit_struct.move rename to language/move-lang/functional-tests/tests/diem/natives/event_emit_struct.move diff --git a/language/move-lang/functional-tests/tests/libra/natives/event_emit_struct_with_type_params.move b/language/move-lang/functional-tests/tests/diem/natives/event_emit_struct_with_type_params.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/event_emit_struct_with_type_params.move rename to language/move-lang/functional-tests/tests/diem/natives/event_emit_struct_with_type_params.move diff --git a/language/move-lang/functional-tests/tests/libra/natives/event_emit_u64.move b/language/move-lang/functional-tests/tests/diem/natives/event_emit_u64.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/event_emit_u64.move rename to language/move-lang/functional-tests/tests/diem/natives/event_emit_u64.move diff --git a/language/move-lang/functional-tests/tests/libra/natives/lcs.move b/language/move-lang/functional-tests/tests/diem/natives/lcs.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/lcs.move rename to language/move-lang/functional-tests/tests/diem/natives/lcs.move diff --git a/language/move-lang/functional-tests/tests/libra/natives/lcs_large_value.move b/language/move-lang/functional-tests/tests/diem/natives/lcs_large_value.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/lcs_large_value.move rename to language/move-lang/functional-tests/tests/diem/natives/lcs_large_value.move diff --git a/language/move-lang/functional-tests/tests/libra/natives/signature.move b/language/move-lang/functional-tests/tests/diem/natives/signature.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/natives/signature.move rename to language/move-lang/functional-tests/tests/diem/natives/signature.move diff --git a/language/move-lang/functional-tests/tests/libra/on_chain_config/basic.move b/language/move-lang/functional-tests/tests/diem/on_chain_config/basic.move similarity index 58% rename from language/move-lang/functional-tests/tests/libra/on_chain_config/basic.move rename to language/move-lang/functional-tests/tests/diem/on_chain_config/basic.move index 9ae46ada93..c995ded058 100644 --- a/language/move-lang/functional-tests/tests/libra/on_chain_config/basic.move +++ b/language/move-lang/functional-tests/tests/diem/on_chain_config/basic.move @@ -1,35 +1,35 @@ //! new-transaction script { - use 0x1::LibraConfig::{Self}; + use 0x1::DiemConfig::{Self}; fun main(account: &signer) { - LibraConfig::initialize(account); + DiemConfig::initialize(account); } } // check: "Keep(ABORTED { code: 1," //! new-transaction script { - use 0x1::LibraConfig; + use 0x1::DiemConfig; fun main() { - let _x = LibraConfig::get(); + let _x = DiemConfig::get(); } } // check: "Keep(ABORTED { code: 261," //! new-transaction script { - use 0x1::LibraConfig; + use 0x1::DiemConfig; fun main(account: &signer) { - LibraConfig::set(account, 0); + DiemConfig::set(account, 0); } } // check: "Keep(ABORTED { code: 516," //! new-transaction script { - use 0x1::LibraConfig::{Self}; + use 0x1::DiemConfig::{Self}; fun main(account: &signer) { - LibraConfig::publish_new_config(account, 0); + DiemConfig::publish_new_config(account, 0); } } // check: "Keep(ABORTED { code: 1," diff --git a/language/move-lang/functional-tests/tests/libra/on_chain_config/change_script_allowlist.move b/language/move-lang/functional-tests/tests/diem/on_chain_config/change_script_allowlist.move similarity index 59% rename from language/move-lang/functional-tests/tests/libra/on_chain_config/change_script_allowlist.move rename to language/move-lang/functional-tests/tests/diem/on_chain_config/change_script_allowlist.move index c78e4a3577..3038631059 100644 --- a/language/move-lang/functional-tests/tests/libra/on_chain_config/change_script_allowlist.move +++ b/language/move-lang/functional-tests/tests/diem/on_chain_config/change_script_allowlist.move @@ -18,39 +18,39 @@ module FooConfig { //! new-transaction script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { - assert(LibraTransactionPublishingOption::is_script_allowed(account, &x""), 0); + assert(DiemTransactionPublishingOption::is_script_allowed(account, &x""), 0); } } // check: "Keep(EXECUTED)" //! new-transaction script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { - LibraTransactionPublishingOption::set_open_script(account) + DiemTransactionPublishingOption::set_open_script(account) } } // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { - LibraTransactionPublishingOption::set_open_script(account) + DiemTransactionPublishingOption::set_open_script(account) } } // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { let x = x"0000000000000000000000000000000000000000000000000000000000000001"; - LibraTransactionPublishingOption::add_to_script_allow_list(account, x); + DiemTransactionPublishingOption::add_to_script_allow_list(account, x); } } // check: "Keep(EXECUTED)" @@ -63,33 +63,33 @@ fun main() { // check: "Discard(UNKNOWN_SCRIPT)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { - LibraTransactionPublishingOption::set_open_script(account) + DiemTransactionPublishingOption::set_open_script(account) } } // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { let x = x"0000000000000000000000000000000000000000000000000000000000000001"; - LibraTransactionPublishingOption::add_to_script_allow_list(account, *&x); - LibraTransactionPublishingOption::add_to_script_allow_list(account, x); + DiemTransactionPublishingOption::add_to_script_allow_list(account, *&x); + DiemTransactionPublishingOption::add_to_script_allow_list(account, x); } } // check: "Keep(ABORTED { code: 263," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(account: &signer) { - LibraTransactionPublishingOption::add_to_script_allow_list(account, x""); + DiemTransactionPublishingOption::add_to_script_allow_list(account, x""); } } // check: "Keep(ABORTED { code: 7," @@ -99,13 +99,13 @@ fun main(account: &signer) { //! block-time: 2 //! new-transaction -//! sender: libraroot +//! sender: diemroot // Step 2: Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } diff --git a/language/move-lang/functional-tests/tests/libra/on_chain_config/is_genesis.move b/language/move-lang/functional-tests/tests/diem/on_chain_config/is_genesis.move similarity index 67% rename from language/move-lang/functional-tests/tests/libra/on_chain_config/is_genesis.move rename to language/move-lang/functional-tests/tests/diem/on_chain_config/is_genesis.move index 99a043256c..563ed48cd1 100644 --- a/language/move-lang/functional-tests/tests/libra/on_chain_config/is_genesis.move +++ b/language/move-lang/functional-tests/tests/diem/on_chain_config/is_genesis.move @@ -6,9 +6,9 @@ //! new-transaction script { -use 0x1::LibraTimestamp; +use 0x1::DiemTimestamp; fun main() { - assert(!LibraTimestamp::is_genesis(), 10) + assert(!DiemTimestamp::is_genesis(), 10) } } diff --git a/language/move-lang/functional-tests/tests/diem/payment/cant_overdraft.move b/language/move-lang/functional-tests/tests/diem/payment/cant_overdraft.move new file mode 100644 index 0000000000..b2e565dfbb --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/payment/cant_overdraft.move @@ -0,0 +1,20 @@ +//! account: alice, 0, 0, 0XUS + +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::Signer; + +fun main(account: &signer) { + let addr = Signer::address_of(account); + let sender_balance = DiemAccount::balance(addr); + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, {{alice}}, sender_balance, x"", x""); + + assert(DiemAccount::balance(addr) == 0, 42); + + DiemAccount::pay_from(&with_cap, {{alice}}, sender_balance, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); +} +} +// check: "Keep(ABORTED { code: 1288," diff --git a/language/move-lang/functional-tests/tests/diem/payment/cant_recreate_market_cap.move b/language/move-lang/functional-tests/tests/diem/payment/cant_recreate_market_cap.move new file mode 100644 index 0000000000..7df5cbdd0b --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/payment/cant_recreate_market_cap.move @@ -0,0 +1,9 @@ +script { +use 0x1::XUS; + +fun main(account: &signer) { + // This will fail because XUS has already been initialized + XUS::initialize(account, account); +} +} +// check: Keep(ABORTED { code: 1, location: 00000000000000000000000000000001::DiemTimestamp }) diff --git a/language/move-lang/functional-tests/tests/libra/payment/check_balance.move b/language/move-lang/functional-tests/tests/diem/payment/check_balance.move similarity index 57% rename from language/move-lang/functional-tests/tests/libra/payment/check_balance.move rename to language/move-lang/functional-tests/tests/diem/payment/check_balance.move index 52032b49e8..011ed38eb2 100644 --- a/language/move-lang/functional-tests/tests/libra/payment/check_balance.move +++ b/language/move-lang/functional-tests/tests/diem/payment/check_balance.move @@ -1,11 +1,11 @@ script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; use 0x1::Signer; fun main(account: &signer) { let addr = Signer::address_of(account); - let balance = LibraAccount::balance(addr); + let balance = DiemAccount::balance(addr); assert(balance > 10, 77); } } diff --git a/language/move-lang/functional-tests/tests/diem/payment/peer_to_peer_payment.move b/language/move-lang/functional-tests/tests/diem/payment/peer_to_peer_payment.move new file mode 100644 index 0000000000..bd9aada221 --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/payment/peer_to_peer_payment.move @@ -0,0 +1,22 @@ +//! account: bob, 1000000 + +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::Signer; + +fun main(sender: &signer) { + let sender_addr = Signer::address_of(sender); + let recipient_addr = {{bob}}; + let sender_original_balance = DiemAccount::balance(sender_addr); + let recipient_original_balance = DiemAccount::balance(recipient_addr); + let with_cap = DiemAccount::extract_withdraw_capability(sender); + DiemAccount::pay_from(&with_cap, recipient_addr, 5, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + + let sender_new_balance = DiemAccount::balance(sender_addr); + let recipient_new_balance = DiemAccount::balance(recipient_addr); + assert(sender_new_balance == sender_original_balance - 5, 77); + assert(recipient_new_balance == recipient_original_balance + 5, 77); +} +} diff --git a/language/move-lang/functional-tests/tests/libra/payment/print_counterfeit_money.move b/language/move-lang/functional-tests/tests/diem/payment/print_counterfeit_money.move similarity index 79% rename from language/move-lang/functional-tests/tests/libra/payment/print_counterfeit_money.move rename to language/move-lang/functional-tests/tests/diem/payment/print_counterfeit_money.move index 4c7036c8d1..6057fc2cc9 100644 --- a/language/move-lang/functional-tests/tests/libra/payment/print_counterfeit_money.move +++ b/language/move-lang/functional-tests/tests/diem/payment/print_counterfeit_money.move @@ -1,8 +1,8 @@ //! account: default, 100000 module M { - use 0x1::Coin1::Coin1; - use 0x1::Libra; + use 0x1::XUS::XUS; + use 0x1::Diem; use 0x1::Signer; resource struct R { x: T } @@ -25,20 +25,20 @@ module M { public fun become_rich(account: &signer) acquires R { let fake = FakeCoin { value: 400000 }; let real = transmute(account, fake); - Libra::destroy_zero(real); + Diem::destroy_zero(real); } } //! new-transaction script { use {{default}}::M; -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; use 0x1::Signer; fun main(account: &signer) { M::become_rich(account); - assert(LibraAccount::balance(Signer::address_of(account)) == 500000, 42); + assert(DiemAccount::balance(Signer::address_of(account)) == 500000, 42); } } // check: MISSING_DATA diff --git a/language/move-lang/functional-tests/tests/diem/payment/zero_payment.move b/language/move-lang/functional-tests/tests/diem/payment/zero_payment.move new file mode 100644 index 0000000000..50e6d7ec2a --- /dev/null +++ b/language/move-lang/functional-tests/tests/diem/payment/zero_payment.move @@ -0,0 +1,17 @@ +script { +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::Signer; + +fun main(account: &signer) { + let addr = Signer::address_of(account); + let old_balance = DiemAccount::balance(addr); + + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, addr, 0, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + + assert(DiemAccount::balance(addr) == old_balance, 42); +} +} +// check: "Keep(ABORTED { code: 519," diff --git a/language/move-lang/functional-tests/tests/libra/prologue/can_run_with_good_sequence_number.move b/language/move-lang/functional-tests/tests/diem/prologue/can_run_with_good_sequence_number.move similarity index 59% rename from language/move-lang/functional-tests/tests/libra/prologue/can_run_with_good_sequence_number.move rename to language/move-lang/functional-tests/tests/diem/prologue/can_run_with_good_sequence_number.move index d64c99cb2b..2e3e41aaa5 100644 --- a/language/move-lang/functional-tests/tests/libra/prologue/can_run_with_good_sequence_number.move +++ b/language/move-lang/functional-tests/tests/diem/prologue/can_run_with_good_sequence_number.move @@ -3,10 +3,10 @@ //! sequence-number: 10 //! sender: alice script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main() { - assert(LibraAccount::sequence_number({{alice}}) == 10, 72); + assert(DiemAccount::sequence_number({{alice}}) == 10, 72); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/prologue/cant_run_with_future_sequence_number.move b/language/move-lang/functional-tests/tests/diem/prologue/cant_run_with_future_sequence_number.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/prologue/cant_run_with_future_sequence_number.move rename to language/move-lang/functional-tests/tests/diem/prologue/cant_run_with_future_sequence_number.move diff --git a/language/move-lang/functional-tests/tests/libra/prologue/cant_run_with_stale_sequence_number.move b/language/move-lang/functional-tests/tests/diem/prologue/cant_run_with_stale_sequence_number.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/prologue/cant_run_with_stale_sequence_number.move rename to language/move-lang/functional-tests/tests/diem/prologue/cant_run_with_stale_sequence_number.move diff --git a/language/move-lang/functional-tests/tests/libra/prologue/fail_if_cant_pay_deposit.move b/language/move-lang/functional-tests/tests/diem/prologue/fail_if_cant_pay_deposit.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/prologue/fail_if_cant_pay_deposit.move rename to language/move-lang/functional-tests/tests/diem/prologue/fail_if_cant_pay_deposit.move diff --git a/language/move-lang/functional-tests/tests/libra/prologue/fail_if_max_gas_below_minimum.move b/language/move-lang/functional-tests/tests/diem/prologue/fail_if_max_gas_below_minimum.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/prologue/fail_if_max_gas_below_minimum.move rename to language/move-lang/functional-tests/tests/diem/prologue/fail_if_max_gas_below_minimum.move diff --git a/language/move-lang/functional-tests/tests/libra/reconfiguration/reconfiguration.move b/language/move-lang/functional-tests/tests/diem/reconfiguration/reconfiguration.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/reconfiguration/reconfiguration.move rename to language/move-lang/functional-tests/tests/diem/reconfiguration/reconfiguration.move index fd537745a5..c1648451a0 100644 --- a/language/move-lang/functional-tests/tests/libra/reconfiguration/reconfiguration.move +++ b/language/move-lang/functional-tests/tests/diem/reconfiguration/reconfiguration.move @@ -7,25 +7,25 @@ //! block-time: 2 //! new-transaction -// Reconfiguration can only be invoked by the libra root. +// Reconfiguration can only be invoked by the diem root. script { -use 0x1::LibraConfig; +use 0x1::DiemConfig; fun main(account: &signer) { - LibraConfig::reconfigure(account); + DiemConfig::reconfigure(account); } } // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraConfig; +use 0x1::DiemConfig; fun main(account: &signer) { - LibraConfig::reconfigure(account); - LibraConfig::reconfigure(account); + DiemConfig::reconfigure(account); + DiemConfig::reconfigure(account); } } // check: NewEpochEvent @@ -38,12 +38,12 @@ fun main(account: &signer) { // Make sure two reconfigurations will only trigger one reconfiguration event. //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraConfig; +use 0x1::DiemConfig; fun main(account: &signer) { - LibraConfig::reconfigure(account); + DiemConfig::reconfigure(account); } } // check: NewEpochEvent diff --git a/language/move-lang/functional-tests/tests/libra/recovery_address/basics.move b/language/move-lang/functional-tests/tests/diem/recovery_address/basics.move similarity index 78% rename from language/move-lang/functional-tests/tests/libra/recovery_address/basics.move rename to language/move-lang/functional-tests/tests/diem/recovery_address/basics.move index 35269d8cd3..d2ad553b0e 100644 --- a/language/move-lang/functional-tests/tests/libra/recovery_address/basics.move +++ b/language/move-lang/functional-tests/tests/diem/recovery_address/basics.move @@ -13,12 +13,12 @@ //! new-transaction //! sender: blessed script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; fun main(tc_account: &signer) { let add_all_currencies = false; - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( tc_account, {{parent1}}, {{parent1::auth_key}}, @@ -26,7 +26,7 @@ fun main(tc_account: &signer) { add_all_currencies, ); - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( tc_account, {{parent2}}, {{parent2::auth_key}}, @@ -42,11 +42,11 @@ fun main(tc_account: &signer) { //! new-transaction //! sender: parent1 script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::create_child_vasp_account(account, {{child1}}, {{child1::auth_key}}, false); - LibraAccount::create_child_vasp_account(account, {{child2}}, {{child2::auth_key}}, false) + DiemAccount::create_child_vasp_account(account, {{child1}}, {{child1::auth_key}}, false); + DiemAccount::create_child_vasp_account(account, {{child2}}, {{child2::auth_key}}, false) } } // check: "Keep(EXECUTED)" @@ -57,10 +57,10 @@ fun main(account: &signer) { //! new-transaction //! sender: child1 script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; fun main(account: &signer) { - RecoveryAddress::publish(account, LibraAccount::extract_key_rotation_capability(account)) + RecoveryAddress::publish(account, DiemAccount::extract_key_rotation_capability(account)) } } // check: "Keep(EXECUTED)" @@ -69,11 +69,11 @@ fun main(account: &signer) { //! new-transaction //! sender: parent1 script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; fun main(account: &signer) { RecoveryAddress::add_rotation_capability( - LibraAccount::extract_key_rotation_capability(account), {{child1}} + DiemAccount::extract_key_rotation_capability(account), {{child1}} ); } } @@ -85,11 +85,11 @@ fun main(account: &signer) { //! new-transaction //! sender: parent2 script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; fun main(account: &signer) { RecoveryAddress::add_rotation_capability( - LibraAccount::extract_key_rotation_capability(account), {{child1}} + DiemAccount::extract_key_rotation_capability(account), {{child1}} ) } } @@ -99,11 +99,11 @@ fun main(account: &signer) { //! new-transaction //! sender: parent2 script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; fun main(account: &signer) { RecoveryAddress::add_rotation_capability( - LibraAccount::extract_key_rotation_capability(account), 0x3333 + DiemAccount::extract_key_rotation_capability(account), 0x3333 ) } } @@ -152,9 +152,9 @@ fun main(account: &signer) { //! sender: blessed script { use 0x1::RecoveryAddress; -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - RecoveryAddress::publish(account, LibraAccount::extract_key_rotation_capability(account)) + RecoveryAddress::publish(account, DiemAccount::extract_key_rotation_capability(account)) } } // check: "ABORTED { code: 7," @@ -175,14 +175,14 @@ module Holder { //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{vasp1}}, {{vasp1::auth_key}}, b"bob", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{vasp2}}, {{vasp2::auth_key}}, b"bob", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" @@ -191,9 +191,9 @@ stdlib_script::create_parent_vasp_account //! sender: vasp1 script { use {{default}}::Holder; -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - Holder::hold(account, LibraAccount::extract_key_rotation_capability(account)); + Holder::hold(account, DiemAccount::extract_key_rotation_capability(account)); } } // check: "Keep(EXECUTED)" @@ -204,9 +204,9 @@ fun main(account: &signer) { script { use 0x1::RecoveryAddress; use {{default}}::Holder; -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - let cap = Holder::get({{vasp1}}); + let cap = Holder::get({{vasp1}}); RecoveryAddress::publish(account, cap); } } diff --git a/language/move-lang/functional-tests/tests/libra/registered_currencies/basic.move b/language/move-lang/functional-tests/tests/diem/registered_currencies/basic.move similarity index 83% rename from language/move-lang/functional-tests/tests/libra/registered_currencies/basic.move rename to language/move-lang/functional-tests/tests/diem/registered_currencies/basic.move index be1302bfc1..45dcec02b8 100644 --- a/language/move-lang/functional-tests/tests/libra/registered_currencies/basic.move +++ b/language/move-lang/functional-tests/tests/diem/registered_currencies/basic.move @@ -8,7 +8,7 @@ script { // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::RegisteredCurrencies; fun main(account: &signer) { @@ -18,11 +18,11 @@ script { // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::RegisteredCurrencies; fun main(account: &signer) { - RegisteredCurrencies::add_currency_code(account, b"LBR"); + RegisteredCurrencies::add_currency_code(account, b"XDX"); } } // check: "Keep(ABORTED { code: 7," diff --git a/language/move-lang/functional-tests/tests/libra/roles/basic.move b/language/move-lang/functional-tests/tests/diem/roles/basic.move similarity index 82% rename from language/move-lang/functional-tests/tests/libra/roles/basic.move rename to language/move-lang/functional-tests/tests/diem/roles/basic.move index 2947856cc6..b51d615da1 100644 --- a/language/move-lang/functional-tests/tests/libra/roles/basic.move +++ b/language/move-lang/functional-tests/tests/diem/roles/basic.move @@ -3,17 +3,17 @@ //! account: alice, 0, 0, address //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { - Roles::grant_libra_root_role(account); + Roles::grant_diem_root_role(account); } } // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -23,7 +23,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 1," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -33,7 +33,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 258," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -43,12 +43,12 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 258," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( account, {{bob}}, {{bob::auth_key}}, @@ -62,9 +62,9 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::create_validator_account( + DiemAccount::create_validator_account( account, {{bob}}, {{bob::auth_key}}, @@ -75,7 +75,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -87,9 +87,9 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(account: &signer) { - LibraAccount::create_validator_operator_account( + DiemAccount::create_validator_operator_account( account, {{bob}}, {{bob::auth_key}}, @@ -100,7 +100,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -110,12 +110,12 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 6," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( account, {{bob}}, {{bob::auth_key}}, @@ -139,10 +139,10 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; fun main(account: &signer) { - LibraAccount::create_child_vasp_account( + DiemAccount::create_child_vasp_account( account, {{bob}}, {{bob::auth_key}}, @@ -154,7 +154,7 @@ fun main(account: &signer) { //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{vasp}}, {{vasp::auth_key}}, b"vasp", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" @@ -170,7 +170,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 6," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; fun main(account: &signer) { @@ -180,7 +180,7 @@ fun main(account: &signer) { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::Roles; use 0x1::Signer; diff --git a/language/move-lang/functional-tests/tests/libra/shared_ed25519_public_key/shared_key.move b/language/move-lang/functional-tests/tests/diem/shared_ed25519_public_key/shared_key.move similarity index 91% rename from language/move-lang/functional-tests/tests/libra/shared_ed25519_public_key/shared_key.move rename to language/move-lang/functional-tests/tests/diem/shared_ed25519_public_key/shared_key.move index a5ea2237cb..855c73eb90 100644 --- a/language/move-lang/functional-tests/tests/libra/shared_ed25519_public_key/shared_key.move +++ b/language/move-lang/functional-tests/tests/diem/shared_ed25519_public_key/shared_key.move @@ -6,21 +6,21 @@ //! account: bob script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SharedEd25519PublicKey; fun main(account: &signer) { - let old_auth_key = LibraAccount::authentication_key({{default}}); + let old_auth_key = DiemAccount::authentication_key({{default}}); // from RFC 8032 let pubkey1 = x"3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c"; SharedEd25519PublicKey::publish(account, copy pubkey1); - let new_auth_key = LibraAccount::authentication_key({{default}}); + let new_auth_key = DiemAccount::authentication_key({{default}}); // check that publishing worked assert(SharedEd25519PublicKey::exists_at({{default}}), 3000); assert(SharedEd25519PublicKey::key({{default}}) == pubkey1, 3001); // publishing should extract the sender's key rotation capability - assert(LibraAccount::delegated_key_rotation_capability({{default}}), 3002); + assert(DiemAccount::delegated_key_rotation_capability({{default}}), 3002); // make sure the sender's auth key has changed assert(copy new_auth_key != old_auth_key, 3003); @@ -30,7 +30,7 @@ fun main(account: &signer) { SharedEd25519PublicKey::rotate_key(account, copy pubkey2); assert(SharedEd25519PublicKey::key({{default}}) == pubkey2, 3004); // make sure the auth key changed again - assert(new_auth_key != LibraAccount::authentication_key({{default}}), 3005); + assert(new_auth_key != DiemAccount::authentication_key({{default}}), 3005); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/sliding_nonce/basics.exp b/language/move-lang/functional-tests/tests/diem/sliding_nonce/basics.exp similarity index 100% rename from language/move-lang/functional-tests/tests/libra/sliding_nonce/basics.exp rename to language/move-lang/functional-tests/tests/diem/sliding_nonce/basics.exp diff --git a/language/move-lang/functional-tests/tests/libra/sliding_nonce/basics.move b/language/move-lang/functional-tests/tests/diem/sliding_nonce/basics.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/sliding_nonce/basics.move rename to language/move-lang/functional-tests/tests/diem/sliding_nonce/basics.move diff --git a/language/move-lang/functional-tests/tests/libra/sliding_nonce/test.move b/language/move-lang/functional-tests/tests/diem/sliding_nonce/test.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/sliding_nonce/test.move rename to language/move-lang/functional-tests/tests/diem/sliding_nonce/test.move diff --git a/language/move-lang/functional-tests/tests/libra/smoke_tests/approved_payment.move b/language/move-lang/functional-tests/tests/diem/smoke_tests/approved_payment.move similarity index 92% rename from language/move-lang/functional-tests/tests/libra/smoke_tests/approved_payment.move rename to language/move-lang/functional-tests/tests/diem/smoke_tests/approved_payment.move index a08e5509dd..7ede790d2a 100644 --- a/language/move-lang/functional-tests/tests/libra/smoke_tests/approved_payment.move +++ b/language/move-lang/functional-tests/tests/diem/smoke_tests/approved_payment.move @@ -7,7 +7,7 @@ // a hurdle that must be cleared for all payments to the payee. In addition, approved payments do // not have replay protection. module ApprovedPayment { - use 0x1::Libra::{Self, Libra}; + use 0x1::Diem::{Self, Diem}; use 0x1::Signature; use 0x1::Signer; use 0x1::Vector; @@ -16,7 +16,7 @@ module ApprovedPayment { resource struct T { // 32 byte single Ed25519 public key whose counterpart must be used to sign the payment // metadata. Note that this is different (and simpler) than the `authentication_key` used in - // LibraAccount, which is a hash of a public key + signature scheme identifier. + // DiemAccount, which is a hash of a public key + signature scheme identifier. public_key: vector, // TODO: events? } @@ -27,7 +27,7 @@ module ApprovedPayment { _payer: &signer, approved_payment: &T, _payee: address, - coin: Libra, + coin: Diem, metadata: vector, signature: vector ) { @@ -42,9 +42,9 @@ module ApprovedPayment { ), 9002, // TODO: proper error code ); - //LibraAccount::deposit_with_metadata(payer, payee, coin, metadata, x"") - // TODO: LibraAccount APIs no longer support depositing a coin stored in a local - Libra::destroy_zero(coin); + //DiemAccount::deposit_with_metadata(payer, payee, coin, metadata, x"") + // TODO: DiemAccount APIs no longer support depositing a coin stored in a local + Diem::destroy_zero(coin); } // Wrapper of `deposit` that withdraw's from the sender's balance and uses the top-level @@ -60,9 +60,9 @@ module ApprovedPayment { payer, borrow_global(payee), payee, - // TODO: LibraAccount APIs no longer support withdrawing a coin into a local - //LibraAccount::withdraw_from(&with_cap, amount), - Libra::zero(), + // TODO: DiemAccount APIs no longer support withdrawing a coin into a local + //DiemAccount::withdraw_from(&with_cap, amount), + Diem::zero(), metadata, signature ); @@ -206,11 +206,11 @@ fun main(account: &signer) { //! sender: bob2 script { use {{default}}::ApprovedPayment; -use 0x1::LBR::LBR; +use 0x1::XDX::XDX; fun main(account: &signer) { let payment_id = x"0000000000000000000000000000000000000000000000000000000000000000"; let signature = x"62d6be393b8ec77fb2c12ff44ca8b5bd8bba83b805171bc99f0af3bdc619b20b8bd529452fe62dac022c80752af2af02fb610c20f01fb67a4d72789db2b8b703"; - ApprovedPayment::deposit_to_payee(account, {{alice2}}, 1000, payment_id, signature); + ApprovedPayment::deposit_to_payee(account, {{alice2}}, 1000, payment_id, signature); } } // check: "Keep(EXECUTED)" @@ -261,11 +261,11 @@ fun main(account: &signer) { //! sender: bob3 script { use {{default}}::ApprovedPayment; -use 0x1::LBR::LBR; +use 0x1::XDX::XDX; fun main(account: &signer) { let payment_id = x"0000000000000000000000000000000000000000000000000000000000000000"; let signature = x"62d6be393b8ec77fb2c12ff44ca8b5bd8bba83b805171bc99f0af3bdc619b20b8bd529452fe62dac022c80752af2af02fb610c20f01fb67a4d72789db2b8b703"; - ApprovedPayment::deposit_to_payee(account, {{alice3}}, 1000, payment_id, signature); + ApprovedPayment::deposit_to_payee(account, {{alice3}}, 1000, payment_id, signature); } } // check: "Keep(EXECUTED)" @@ -276,11 +276,11 @@ fun main(account: &signer) { //! sender: bob3 script { use {{default}}::ApprovedPayment; -use 0x1::LBR::LBR; +use 0x1::XDX::XDX; fun main(account: &signer) { let payment_id = x"0000000000000000000000000000000000000000000000000000000000000000"; let signature = x""; - ApprovedPayment::deposit_to_payee(account, {{alice}}, 1000, payment_id, signature); + ApprovedPayment::deposit_to_payee(account, {{alice}}, 1000, payment_id, signature); } } @@ -292,11 +292,11 @@ fun main(account: &signer) { //! sender: bob3 script { use {{default}}::ApprovedPayment; -use 0x1::LBR::LBR; +use 0x1::XDX::XDX; fun main(account: &signer) { let payment_id = x"7"; let signature = x"62d6be393b8ec77fb2c12ff44ca8b5bd8bba83b805171bc99f0af3bdc619b20b8bd529452fe62dac022c80752af2af02fb610c20f01fb67a4d72789db2b8b703"; - ApprovedPayment::deposit_to_payee(account, {{alice3}}, 1000, payment_id, signature); + ApprovedPayment::deposit_to_payee(account, {{alice3}}, 1000, payment_id, signature); } } // check: "Keep(ABORTED { code: 9002," diff --git a/language/move-lang/functional-tests/tests/libra/stdlib_scripts/create_parent_vasp_account.move b/language/move-lang/functional-tests/tests/diem/stdlib_scripts/create_parent_vasp_account.move similarity index 86% rename from language/move-lang/functional-tests/tests/libra/stdlib_scripts/create_parent_vasp_account.move rename to language/move-lang/functional-tests/tests/diem/stdlib_scripts/create_parent_vasp_account.move index f8c4b1fa24..9c00e3a1b5 100644 --- a/language/move-lang/functional-tests/tests/libra/stdlib_scripts/create_parent_vasp_account.move +++ b/language/move-lang/functional-tests/tests/diem/stdlib_scripts/create_parent_vasp_account.move @@ -4,21 +4,21 @@ //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: 0, {{bob}}, {{bob::auth_key}}, b"bob", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" //! new-transaction //! sender: bob -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS //! args: {{child}}, {{child::auth_key}}, true, 0 stdlib_script::create_child_vasp_account // check: "Keep(EXECUTED)" //! new-transaction //! sender: blessed -//! type-args: 0x1::LBR::LBR +//! type-args: 0x1::XDX::XDX //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice", true stdlib_script::create_parent_vasp_account // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/stdlib_scripts/update_libra_version.move b/language/move-lang/functional-tests/tests/diem/stdlib_scripts/update_diem_version.move similarity index 52% rename from language/move-lang/functional-tests/tests/libra/stdlib_scripts/update_libra_version.move rename to language/move-lang/functional-tests/tests/diem/stdlib_scripts/update_diem_version.move index 787ad66013..c77e524fe3 100644 --- a/language/move-lang/functional-tests/tests/libra/stdlib_scripts/update_libra_version.move +++ b/language/move-lang/functional-tests/tests/diem/stdlib_scripts/update_diem_version.move @@ -1,5 +1,5 @@ //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, 13 -stdlib_script::update_libra_version +stdlib_script::update_diem_version // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/transaction_fee/add_transaction_fee_currency.move b/language/move-lang/functional-tests/tests/diem/transaction_fee/add_transaction_fee_currency.move similarity index 73% rename from language/move-lang/functional-tests/tests/libra/transaction_fee/add_transaction_fee_currency.move rename to language/move-lang/functional-tests/tests/diem/transaction_fee/add_transaction_fee_currency.move index 62426cde32..f90a257929 100644 --- a/language/move-lang/functional-tests/tests/libra/transaction_fee/add_transaction_fee_currency.move +++ b/language/move-lang/functional-tests/tests/diem/transaction_fee/add_transaction_fee_currency.move @@ -1,14 +1,14 @@ //! account: vivian, 1000000, 0, validator //! account: dd, 0, 0, address -//! account: bob, 0Coin1, 0, vasp +//! account: bob, 0XUS, 0, vasp //! new-transaction -//! sender: libraroot +//! sender: diemroot // Change option to CustomModule script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; fun main(config: &signer) { - LibraTransactionPublishingOption::set_open_module(config, false) + DiemTransactionPublishingOption::set_open_module(config, false) } } // check: "Keep(EXECUTED)" @@ -20,20 +20,20 @@ fun main(config: &signer) { // BEGIN: registration of a currency //! new-transaction -//! sender: libraroot +//! sender: diemroot address 0x1 { module COIN { use 0x1::FixedPoint32; - use 0x1::Libra; + use 0x1::Diem; struct COIN { } - public fun initialize(lr_account: &signer, tc_account: &signer) { + public fun initialize(dr_account: &signer, tc_account: &signer) { // Register the COIN currency. - Libra::register_SCS_currency( - lr_account, + Diem::register_SCS_currency( + dr_account, tc_account, - FixedPoint32::create_from_rational(1, 2), // exchange rate to LBR + FixedPoint32::create_from_rational(1, 2), // exchange rate to XDX 1000000, // scaling_factor = 10^6 100, // fractional_part = 10^2 b"COIN", @@ -48,12 +48,12 @@ module COIN { //! block-time: 4 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: blessed script { use 0x1::COIN; -fun main(lr_account: &signer, tc_account: &signer) { - COIN::initialize(lr_account, tc_account); +fun main(dr_account: &signer, tc_account: &signer) { + COIN::initialize(dr_account, tc_account); } } // check: "Keep(EXECUTED)" @@ -62,10 +62,10 @@ fun main(lr_account: &signer, tc_account: &signer) { //! new-transaction script { use 0x1::TransactionFee; -use 0x1::Libra; +use 0x1::Diem; use 0x1::COIN::COIN; fun main() { - TransactionFee::pay_fee(Libra::zero()); + TransactionFee::pay_fee(Diem::zero()); } } // check: "Keep(ABORTED { code: 5," @@ -110,10 +110,10 @@ fun main(tc_account: &signer) { //! sender: blessed script { use 0x1::TransactionFee; -use 0x1::LBR::LBR; +use 0x1::XDX::XDX; fun main(tc: &signer) { - TransactionFee::add_txn_fee_currency(tc); - TransactionFee::burn_fees(tc); + TransactionFee::add_txn_fee_currency(tc); + TransactionFee::burn_fees(tc); } } // check: "Keep(ABORTED { code: 1," diff --git a/language/move-lang/functional-tests/tests/libra/transaction_fee/burn_collected_fees.move b/language/move-lang/functional-tests/tests/diem/transaction_fee/burn_collected_fees.move similarity index 86% rename from language/move-lang/functional-tests/tests/libra/transaction_fee/burn_collected_fees.move rename to language/move-lang/functional-tests/tests/diem/transaction_fee/burn_collected_fees.move index c65d6ab6a9..dd86a725f0 100644 --- a/language/move-lang/functional-tests/tests/libra/transaction_fee/burn_collected_fees.move +++ b/language/move-lang/functional-tests/tests/diem/transaction_fee/burn_collected_fees.move @@ -1,10 +1,10 @@ -//! account: bob, 10000Coin1 +//! account: bob, 10000XUS //! new-transaction //! sender: bob //! max-gas: 700 //! gas-price: 1 -//! gas-currency: Coin1 +//! gas-currency: XUS script { fun main() { while (true) {} } } @@ -14,7 +14,7 @@ script { //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS script { use 0x1::TransactionFee; fun burn_txn_fees(blessed_account: &signer) { @@ -29,7 +29,7 @@ fun burn_txn_fees(blessed_account: &signer) { //! new-transaction //! sender: blessed -//! type-args: 0x1::Coin1::Coin1 +//! type-args: 0x1::XUS::XUS script { use 0x1::TransactionFee; fun burn_txn_fees(blessed_account: &signer) { diff --git a/language/move-lang/functional-tests/tests/libra/transaction_fee/initialization.move b/language/move-lang/functional-tests/tests/diem/transaction_fee/initialization.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/transaction_fee/initialization.move rename to language/move-lang/functional-tests/tests/diem/transaction_fee/initialization.move diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/add_one_rotate_by_delegate.move b/language/move-lang/functional-tests/tests/diem/validator_set/add_one_rotate_by_delegate.move similarity index 87% rename from language/move-lang/functional-tests/tests/libra/validator_set/add_one_rotate_by_delegate.move rename to language/move-lang/functional-tests/tests/diem/validator_set/add_one_rotate_by_delegate.move index a404216b89..c11d75a363 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/add_one_rotate_by_delegate.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/add_one_rotate_by_delegate.move @@ -6,7 +6,7 @@ //! account: carrol, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -65,19 +65,19 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main(account: &signer) { ValidatorConfig::set_config(account, {{bob}}, x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", x"", x""); // the local validator's key is now different from the one in the validator set - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{bob}})) != + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{bob}})) != ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{bob}})), 99); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); // the local validator's key is now the same as the key in the validator set - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{bob}})) == + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{bob}})) == ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{bob}})), 99); // check bob's public key is updated - let validator_config = LibraSystem::get_validator_config({{bob}}); + let validator_config = DiemSystem::get_validator_config({{bob}}); assert(*ValidatorConfig::get_consensus_pubkey(&validator_config) == x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", 99); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/add_two_rotate_by_delegate.move b/language/move-lang/functional-tests/tests/diem/validator_set/add_two_rotate_by_delegate.move similarity index 98% rename from language/move-lang/functional-tests/tests/libra/validator_set/add_two_rotate_by_delegate.move rename to language/move-lang/functional-tests/tests/diem/validator_set/add_two_rotate_by_delegate.move index c201fb0a28..809b21e159 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/add_two_rotate_by_delegate.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/add_two_rotate_by_delegate.move @@ -10,7 +10,7 @@ //! account: carrol, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/add_validator.move b/language/move-lang/functional-tests/tests/diem/validator_set/add_validator.move similarity index 73% rename from language/move-lang/functional-tests/tests/libra/validator_set/add_validator.move rename to language/move-lang/functional-tests/tests/diem/validator_set/add_validator.move index fc94a500cb..191618b8cf 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/add_validator.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/add_validator.move @@ -1,28 +1,28 @@ -// Add simple validator to LibraSystem's validator set. +// Add simple validator to DiemSystem's validator set. //! account: bob, 1000000, 0, validator //! account: alex, 0, 0, address //! sender: bob script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main() { // test bob is a validator assert(ValidatorConfig::is_valid({{bob}}) == true, 98); - assert(LibraSystem::is_validator({{bob}}) == true, 98); + assert(DiemSystem::is_validator({{bob}}) == true, 98); } } // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; fun main(creator: &signer) { -// LibraAccount::create_validator_account( +// DiemAccount::create_validator_account( // creator, &r, 0xAA, x"00000000000000000000000000000000" - LibraAccount::create_validator_account( + DiemAccount::create_validator_account( creator, 0xAA, x"00000000000000000000000000000000", b"owner_name" ); @@ -31,18 +31,18 @@ fun main(creator: &signer) { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alex}}, {{alex::auth_key}}, b"alex" stdlib_script::create_validator_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: alex script { use 0x1::ValidatorConfig; -fun main(lr_account: &signer, alex_signer: &signer) { - ValidatorConfig::publish(alex_signer, lr_account, b"alex"); +fun main(dr_account: &signer, alex_signer: &signer) { + ValidatorConfig::publish(alex_signer, dr_account, b"alex"); } } // check: "Discard(INVALID_WRITE_SET)" diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/basics.move b/language/move-lang/functional-tests/tests/diem/validator_set/basics.move similarity index 88% rename from language/move-lang/functional-tests/tests/libra/validator_set/basics.move rename to language/move-lang/functional-tests/tests/diem/validator_set/basics.move index 871a8f67ef..b71c127d93 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/basics.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/basics.move @@ -5,34 +5,34 @@ //! new-transaction script { -use 0x1::LibraSystem; +use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::initialize_validator_set(account); + DiemSystem::initialize_validator_set(account); } } // check: "Keep(ABORTED { code: 1," //! new-transaction script { -use 0x1::LibraSystem; +use 0x1::DiemSystem; fun main() { - let len = LibraSystem::validator_set_size(); - LibraSystem::get_ith_validator_address(len); + let len = DiemSystem::validator_set_size(); + DiemSystem::get_ith_validator_address(len); } } // check: "Keep(ABORTED { code: 1287," //! new-transaction script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } // check: "Keep(ABORTED { code: 2051," //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: CreateAccountEvent @@ -163,18 +163,18 @@ script { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alex}}, {{alex::auth_key}}, b"alex" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! execute-as: alex script { use 0x1::ValidatorOperatorConfig; -fun main(lr_account: &signer, alex_signer: &signer) { - ValidatorOperatorConfig::publish(alex_signer, lr_account, b"alex"); +fun main(dr_account: &signer, alex_signer: &signer) { + ValidatorOperatorConfig::publish(alex_signer, dr_account, b"alex"); } } // check: "Discard(INVALID_WRITE_SET)" diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/multiple_reconfigurations_at_once.move b/language/move-lang/functional-tests/tests/diem/validator_set/multiple_reconfigurations_at_once.move similarity index 67% rename from language/move-lang/functional-tests/tests/libra/validator_set/multiple_reconfigurations_at_once.move rename to language/move-lang/functional-tests/tests/diem/validator_set/multiple_reconfigurations_at_once.move index 8cd7e10458..758e8698cf 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/multiple_reconfigurations_at_once.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/multiple_reconfigurations_at_once.move @@ -9,13 +9,13 @@ //! block-time: 2 //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{bob}}, {{bob::auth_key}}, b"bob" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{dave}}, {{dave::auth_key}}, b"dave" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -45,19 +45,19 @@ script { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; // Decertify two validators to make sure we can remove both // from the set and trigger reconfiguration fun main(account: &signer) { - assert(LibraSystem::is_validator({{alice}}) == true, 98); - assert(LibraSystem::is_validator({{vivian}}) == true, 99); - assert(LibraSystem::is_validator({{viola}}) == true, 100); - LibraSystem::remove_validator(account, {{vivian}}); - assert(LibraSystem::is_validator({{alice}}) == true, 101); - assert(LibraSystem::is_validator({{vivian}}) == false, 102); - assert(LibraSystem::is_validator({{viola}}) == true, 103); + assert(DiemSystem::is_validator({{alice}}) == true, 98); + assert(DiemSystem::is_validator({{vivian}}) == true, 99); + assert(DiemSystem::is_validator({{viola}}) == true, 100); + DiemSystem::remove_validator(account, {{vivian}}); + assert(DiemSystem::is_validator({{alice}}) == true, 101); + assert(DiemSystem::is_validator({{vivian}}) == false, 102); + assert(DiemSystem::is_validator({{viola}}) == true, 103); } } @@ -73,24 +73,24 @@ script{ //! new-transaction //! sender: dave script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; // Two reconfigurations cannot happen in the same block fun main(account: &signer) { // the local validator's key was the same as the key in the validator set - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{viola}})) == + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{viola}})) == ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{viola}})), 99); ValidatorConfig::set_config(account, {{viola}}, x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", x"", x""); // the local validator's key is now different from the one in the validator set - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{viola}})) != + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{viola}})) != ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{viola}})), 99); - let old_num_validators = LibraSystem::validator_set_size(); - LibraSystem::update_config_and_reconfigure(account, {{viola}}); - assert(old_num_validators == LibraSystem::validator_set_size(), 98); + let old_num_validators = DiemSystem::validator_set_size(); + DiemSystem::update_config_and_reconfigure(account, {{viola}}); + assert(old_num_validators == DiemSystem::validator_set_size(), 98); // the local validator's key is now the same as the key in the validator set - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{viola}})) == + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{viola}})) == ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{viola}})), 99); } } @@ -101,9 +101,9 @@ script{ //! new-transaction //! sender: bob script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::update_config_and_reconfigure(account, {{viola}}); + DiemSystem::update_config_and_reconfigure(account, {{viola}}); } } @@ -113,13 +113,13 @@ script{ //! sender: blessed // freezing does not cause changes to the set script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::AccountFreezing; fun main(tc_account: &signer) { - assert(LibraSystem::is_validator({{alice}}) == true, 101); + assert(DiemSystem::is_validator({{alice}}) == true, 101); AccountFreezing::freeze_account(tc_account, {{alice}}); assert(AccountFreezing::account_is_frozen({{alice}}), 1); - assert(LibraSystem::is_validator({{alice}}) == true, 102); + assert(DiemSystem::is_validator({{alice}}) == true, 102); } } // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_rate_limiting.move b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_rate_limiting.move similarity index 67% rename from language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_rate_limiting.move rename to language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_rate_limiting.move index cb92f3bfcc..0205b1b667 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_rate_limiting.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_rate_limiting.move @@ -3,7 +3,7 @@ //! account: carrol, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -16,10 +16,10 @@ stdlib_script::create_validator_operator_account //! new-transaction //! sender: bob script { - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::ValidatorConfig; fun main(account: &signer) { - assert(LibraTimestamp::now_microseconds() == 0, 999); + assert(DiemTimestamp::now_microseconds() == 0, 999); // register alice as bob's delegate ValidatorConfig::set_operator(account, {{alice}}); } @@ -44,10 +44,10 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { // update is too soon, will fail - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -62,12 +62,12 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; fun main(account: &signer) { // update is too soon, will not trigger the reconfiguration - assert(LibraTimestamp::now_microseconds() == 300000000, 999); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + assert(DiemTimestamp::now_microseconds() == 300000000, 999); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -82,12 +82,12 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; fun main(account: &signer) { // update is in exactly 5 minutes and 1 microsecond, so will succeed - assert(LibraTimestamp::now_microseconds() == 300000001, 999); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + assert(DiemTimestamp::now_microseconds() == 300000001, 999); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -103,12 +103,12 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; fun main(account: &signer) { // too soon to reconfig, but validator have not changed, should succeed but not reconfigure - assert(LibraTimestamp::now_microseconds() == 600000000, 999); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + assert(DiemTimestamp::now_microseconds() == 600000000, 999); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -124,16 +124,16 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main(account: &signer) { // good to reconfig - assert(LibraTimestamp::now_microseconds() == 600000002, 999); + assert(DiemTimestamp::now_microseconds() == 600000002, 999); ValidatorConfig::set_config(account, {{bob}}, x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -147,13 +147,13 @@ script { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{bob}}); - assert(!LibraSystem::is_validator({{bob}}), 77); - assert(LibraSystem::is_validator({{carrol}}), 78); + DiemSystem::remove_validator(account, {{bob}}); + assert(!DiemSystem::is_validator({{bob}}), 77); + assert(DiemSystem::is_validator({{carrol}}), 78); } } @@ -167,16 +167,16 @@ script{ // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; fun main(account: &signer) { // add validator back - assert(LibraTimestamp::now_microseconds() == 600000004, 999); - LibraSystem::add_validator(account, {{bob}}); - assert(LibraSystem::is_validator({{bob}}), 79); - assert(LibraSystem::is_validator({{carrol}}), 80); + assert(DiemTimestamp::now_microseconds() == 600000004, 999); + DiemSystem::add_validator(account, {{bob}}); + assert(DiemSystem::is_validator({{bob}}), 79); + assert(DiemSystem::is_validator({{carrol}}), 80); } } // check: NewEpochEvent @@ -191,16 +191,16 @@ script{ //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main(account: &signer) { // update too soon - assert(LibraTimestamp::now_microseconds() == 900000004, 999); + assert(DiemTimestamp::now_microseconds() == 900000004, 999); ValidatorConfig::set_config(account, {{bob}}, x"3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } @@ -215,16 +215,16 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraTimestamp; - use 0x1::LibraSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main(account: &signer) { // good to reconfigure - assert(LibraTimestamp::now_microseconds() == 900000005, 999); + assert(DiemTimestamp::now_microseconds() == 900000005, 999); ValidatorConfig::set_config(account, {{bob}}, x"3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_key_rotation.move b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_key_rotation.move similarity index 85% rename from language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_key_rotation.move rename to language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_key_rotation.move index 6cf0bee83e..399de7e5b9 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_key_rotation.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_key_rotation.move @@ -5,13 +5,13 @@ //! account: viola, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{bob}}, {{bob::auth_key}}, b"bob" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{dave}}, {{dave::auth_key}}, b"dave" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -63,16 +63,16 @@ script{ //! new-transaction //! sender: dave script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; // rotate vivian's pubkey and then run the block prologue. Now, reconfiguration should be triggered. fun main(account: &signer) { - assert(*ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{vivian}})) != + assert(*ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{vivian}})) != x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", 98); ValidatorConfig::set_config(account, {{vivian}}, x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{vivian}}); + DiemSystem::update_config_and_reconfigure(account, {{vivian}}); // check that the validator set contains Vivian's new key after reconfiguration - assert(*ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{vivian}})) == + assert(*ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{vivian}})) == x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", 99); } } @@ -89,12 +89,12 @@ script{ //! new-transaction //! sender: dave script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; // rotate vivian's pubkey to the same value does not trigger the reconfiguration. fun main(account: &signer) { ValidatorConfig::set_config(account, {{vivian}}, x"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{vivian}}); + DiemSystem::update_config_and_reconfigure(account, {{vivian}}); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_removal.move b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_removal.move similarity index 67% rename from language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_removal.move rename to language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_removal.move index 3817d2b1b6..9bc5dee0dd 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_removal.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_removal.move @@ -10,11 +10,11 @@ //! block-time: 2 //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{vivian}}); + DiemSystem::remove_validator(account, {{vivian}}); } } @@ -29,11 +29,11 @@ script{ // check that Vivian is no longer a validator, Alice is not, but Viola is still a // validator script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main() { - assert(!LibraSystem::is_validator({{vivian}}), 70); - assert(!LibraSystem::is_validator({{alice}}), 71); - assert(LibraSystem::is_validator({{viola}}), 72); + assert(!DiemSystem::is_validator({{vivian}}), 70); + assert(!DiemSystem::is_validator({{alice}}), 71); + assert(DiemSystem::is_validator({{viola}}), 72); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_validator_addition.move b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_validator_addition.move similarity index 52% rename from language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_validator_addition.move rename to language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_validator_addition.move index a53e00b875..442101c81c 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/reconfiguration_via_validator_addition.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/reconfiguration_via_validator_addition.move @@ -9,13 +9,13 @@ // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{alice}}); - assert(!LibraSystem::is_validator({{alice}}), 77); - assert(LibraSystem::is_validator({{bob}}), 78); + DiemSystem::remove_validator(account, {{alice}}); + assert(!DiemSystem::is_validator({{alice}}), 77); + assert(DiemSystem::is_validator({{bob}}), 78); } } // check: NewEpochEvent @@ -29,11 +29,11 @@ script{ //! new-transaction //! sender: bob -// bob cannot remove itself, only the libra root account can remove validators from the set +// bob cannot remove itself, only the diem root account can remove validators from the set script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{bob}}); + DiemSystem::remove_validator(account, {{bob}}); } } // check: "ABORTED { code: 2" @@ -46,43 +46,43 @@ script{ //! new-transaction script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::add_validator(account, {{alice}}); + DiemSystem::add_validator(account, {{alice}}); } } // check: "ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::add_validator(account, {{invalidvalidator}}); + DiemSystem::add_validator(account, {{invalidvalidator}}); } } // check: "ABORTED { code: 263," //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::add_validator(account, {{alice}}); + DiemSystem::add_validator(account, {{alice}}); - assert(LibraSystem::is_validator({{alice}}), 77); - assert(LibraSystem::is_validator({{bob}}), 78); + assert(DiemSystem::is_validator({{alice}}), 77); + assert(DiemSystem::is_validator({{bob}}), 78); } } // check: NewEpochEvent // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::add_validator(account, {{alice}}); + DiemSystem::add_validator(account, {{alice}}); } } // check: "ABORTED { code: 519," diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/reconfigure_twice_in_transaction.move b/language/move-lang/functional-tests/tests/diem/validator_set/reconfigure_twice_in_transaction.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/validator_set/reconfigure_twice_in_transaction.move rename to language/move-lang/functional-tests/tests/diem/validator_set/reconfigure_twice_in_transaction.move index f7f73fd2ff..3df37a18b2 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/reconfigure_twice_in_transaction.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/reconfigure_twice_in_transaction.move @@ -10,12 +10,12 @@ //! block-time: 2 //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{alice}}); - LibraSystem::remove_validator(account, {{bob}}); + DiemSystem::remove_validator(account, {{alice}}); + DiemSystem::remove_validator(account, {{bob}}); } } @@ -27,11 +27,11 @@ script { //! block-time: 3 //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{bob}}); + DiemSystem::remove_validator(account, {{bob}}); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/register_validator.move b/language/move-lang/functional-tests/tests/diem/validator_set/register_validator.move similarity index 67% rename from language/move-lang/functional-tests/tests/libra/validator_set/register_validator.move rename to language/move-lang/functional-tests/tests/diem/validator_set/register_validator.move index 907159ddff..7ab638d9f5 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/register_validator.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/register_validator.move @@ -4,19 +4,19 @@ // check that the validator account config works script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::Signer; fun main(account: &signer) { let sender = Signer::address_of(account); - assert(!LibraSystem::is_validator(sender), 1); - assert(!LibraSystem::is_validator({{alice}}), 2); - assert(LibraSystem::is_validator({{vivian}}), 3); - assert(LibraSystem::is_validator({{viola}}), 4); + assert(!DiemSystem::is_validator(sender), 1); + assert(!DiemSystem::is_validator({{alice}}), 2); + assert(DiemSystem::is_validator({{vivian}}), 3); + assert(DiemSystem::is_validator({{viola}}), 4); // number of validators should equal the number we declared - assert(LibraSystem::validator_set_size() == 2, 5); - assert(LibraSystem::get_ith_validator_address(1) == {{vivian}}, 6); - assert(LibraSystem::get_ith_validator_address(0) == {{viola}}, 7); + assert(DiemSystem::validator_set_size() == 2, 5); + assert(DiemSystem::get_ith_validator_address(1) == {{vivian}}, 6); + assert(DiemSystem::get_ith_validator_address(0) == {{viola}}, 7); } } @@ -25,26 +25,26 @@ script{ //! new-transaction //! sender: vivian script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::Signer; // check that sending from validator accounts works fun main(account: &signer) { let sender = Signer::address_of(account); - assert(LibraSystem::is_validator(sender), 8); + assert(DiemSystem::is_validator(sender), 8); } } // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script{ - use 0x1::LibraAccount; + use 0x1::DiemAccount; // register Alice as a validator candidate fun main(creator: &signer) { - LibraAccount::create_validator_account( + DiemAccount::create_validator_account( creator, 0xAA, x"00000000000000000000000000000000", b"owner_name" ); } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/remove_nonvalidator.move b/language/move-lang/functional-tests/tests/diem/validator_set/remove_nonvalidator.move similarity index 69% rename from language/move-lang/functional-tests/tests/libra/validator_set/remove_nonvalidator.move rename to language/move-lang/functional-tests/tests/diem/validator_set/remove_nonvalidator.move index f5e10946e7..799bace755 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/remove_nonvalidator.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/remove_nonvalidator.move @@ -5,10 +5,10 @@ //! sender: alice script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { // alice cannot remove herself - LibraSystem::remove_validator(account, {{alice}}); + DiemSystem::remove_validator(account, {{alice}}); } } @@ -17,10 +17,10 @@ script { //! new-transaction //! sender: alice script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { // alice cannot remove bob - LibraSystem::remove_validator(account, {{bob}}); + DiemSystem::remove_validator(account, {{bob}}); } } @@ -29,10 +29,10 @@ script { //! new-transaction //! sender: bob script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { // bob cannot remove alice - LibraSystem::remove_validator(account, {{alice}}); + DiemSystem::remove_validator(account, {{alice}}); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/remove_validator.move b/language/move-lang/functional-tests/tests/diem/validator_set/remove_validator.move similarity index 68% rename from language/move-lang/functional-tests/tests/libra/validator_set/remove_validator.move rename to language/move-lang/functional-tests/tests/diem/validator_set/remove_validator.move index 3916198117..93966651a3 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/remove_validator.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/remove_validator.move @@ -9,12 +9,12 @@ //! block-time: 3 //! new-transaction -//! sender: libraroot +//! sender: diemroot // remove_validator cannot be called on a non-validator script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{alice}}); + DiemSystem::remove_validator(account, {{alice}}); } } @@ -24,21 +24,21 @@ script{ //! new-transaction //! sender: alice script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{vivian}}); + DiemSystem::remove_validator(account, {{vivian}}); } } // check: "Keep(ABORTED { code: 2," //! new-transaction -//! sender: libraroot +//! sender: diemroot // should work because Vivian is a validator script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{vivian}}); + DiemSystem::remove_validator(account, {{vivian}}); } } @@ -46,12 +46,12 @@ script{ // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot // double-removing Vivian should fail script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{vivian}}); + DiemSystem::remove_validator(account, {{vivian}}); } } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/rotate_and_reconfigure.move b/language/move-lang/functional-tests/tests/diem/validator_set/rotate_and_reconfigure.move similarity index 75% rename from language/move-lang/functional-tests/tests/libra/validator_set/rotate_and_reconfigure.move rename to language/move-lang/functional-tests/tests/diem/validator_set/rotate_and_reconfigure.move index 1f448b6142..6e94b2fe4d 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/rotate_and_reconfigure.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/rotate_and_reconfigure.move @@ -1,12 +1,12 @@ // Make sure bob can rotate his key locally. -// The libra root account may trigger bulk update to incorporate +// The diem root account may trigger bulk update to incorporate // bob's key key into the validator set. //! account: alice, 0, 0, address //! account: bob, 0, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -15,14 +15,14 @@ stdlib_script::create_validator_operator_account //! sender: bob script { use 0x1::ValidatorConfig; - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { // register alice as bob's delegate ValidatorConfig::set_operator(account, {{alice}}); // assert bob is a validator assert(ValidatorConfig::is_valid({{bob}}) == true, 98); - assert(LibraSystem::is_validator({{bob}}) == true, 98); + assert(DiemSystem::is_validator({{bob}}) == true, 98); } } @@ -38,23 +38,23 @@ script { //! sender: alice // rotate bob's key script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; use 0x1::ValidatorConfig; fun main(account: &signer) { // assert bob is a validator assert(ValidatorConfig::is_valid({{bob}}) == true, 98); - assert(LibraSystem::is_validator({{bob}}) == true, 98); + assert(DiemSystem::is_validator({{bob}}) == true, 98); - assert(ValidatorConfig::get_consensus_pubkey(&LibraSystem::get_validator_config({{bob}})) == + assert(ValidatorConfig::get_consensus_pubkey(&DiemSystem::get_validator_config({{bob}})) == ValidatorConfig::get_consensus_pubkey(&ValidatorConfig::get_config({{bob}})), 99); // alice rotates bob's public key ValidatorConfig::set_config(account, {{bob}}, x"3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c", x"", x""); - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); // check bob's public key - let validator_config = LibraSystem::get_validator_config({{bob}}); + let validator_config = DiemSystem::get_validator_config({{bob}}); assert(*ValidatorConfig::get_consensus_pubkey(&validator_config) == x"3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c", 99); } diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/rotate_to_invalid.move b/language/move-lang/functional-tests/tests/diem/validator_set/rotate_to_invalid.move similarity index 98% rename from language/move-lang/functional-tests/tests/libra/validator_set/rotate_to_invalid.move rename to language/move-lang/functional-tests/tests/diem/validator_set/rotate_to_invalid.move index 2501998cef..083973f68b 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/rotate_to_invalid.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/rotate_to_invalid.move @@ -2,7 +2,7 @@ //! account: alice, 0, 0, address //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/update_and_reconfigure_with_removed_validator.move b/language/move-lang/functional-tests/tests/diem/validator_set/update_and_reconfigure_with_removed_validator.move similarity index 82% rename from language/move-lang/functional-tests/tests/libra/validator_set/update_and_reconfigure_with_removed_validator.move rename to language/move-lang/functional-tests/tests/diem/validator_set/update_and_reconfigure_with_removed_validator.move index ca7bbd5bf8..f02294e317 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/update_and_reconfigure_with_removed_validator.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/update_and_reconfigure_with_removed_validator.move @@ -6,7 +6,7 @@ //! account: carrol, 1000000, 0, validator //! new-transaction -//! sender: libraroot +//! sender: diemroot //! args: 0, {{alice}}, {{alice::auth_key}}, b"alice" stdlib_script::create_validator_operator_account // check: "Keep(EXECUTED)" @@ -23,12 +23,12 @@ script { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot // remove_validator cannot be called on a non-validator script{ - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::remove_validator(account, {{bob}}); + DiemSystem::remove_validator(account, {{bob}}); } } // check: "Keep(EXECUTED)" @@ -43,9 +43,9 @@ script{ //! sender: alice //! expiration-time: 3 script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - LibraSystem::update_config_and_reconfigure(account, {{bob}}); + DiemSystem::update_config_and_reconfigure(account, {{bob}}); } } // check: "ABORTED { code: 775," diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/validator_operator_config.move b/language/move-lang/functional-tests/tests/diem/validator_set/validator_operator_config.move similarity index 100% rename from language/move-lang/functional-tests/tests/libra/validator_set/validator_operator_config.move rename to language/move-lang/functional-tests/tests/diem/validator_set/validator_operator_config.move diff --git a/language/move-lang/functional-tests/tests/libra/validator_set/zero_validators.move b/language/move-lang/functional-tests/tests/diem/validator_set/zero_validators.move similarity index 53% rename from language/move-lang/functional-tests/tests/libra/validator_set/zero_validators.move rename to language/move-lang/functional-tests/tests/diem/validator_set/zero_validators.move index 776e52413c..f8bd547ab5 100644 --- a/language/move-lang/functional-tests/tests/libra/validator_set/zero_validators.move +++ b/language/move-lang/functional-tests/tests/diem/validator_set/zero_validators.move @@ -5,26 +5,26 @@ //! block-time: 3 //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main() { - LibraSystem::get_validator_config({{vivian}}); + DiemSystem::get_validator_config({{vivian}}); } } // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main(account: &signer) { - let num_validators = LibraSystem::validator_set_size(); + let num_validators = DiemSystem::validator_set_size(); assert(num_validators == 1, 98); let index = 0; while (index < num_validators) { - let addr = LibraSystem::get_ith_validator_address(index); - LibraSystem::remove_validator(account, addr); + let addr = DiemSystem::get_ith_validator_address(index); + DiemSystem::remove_validator(account, addr); index = index + 1; }; } @@ -32,11 +32,11 @@ script { // check: "Keep(EXECUTED)" //! new-transaction -//! sender: libraroot +//! sender: diemroot script { - use 0x1::LibraSystem; + use 0x1::DiemSystem; fun main() { - LibraSystem::get_validator_config({{vivian}}); + DiemSystem::get_validator_config({{vivian}}); } } // check: "Keep(ABORTED { code: 775," diff --git a/language/move-lang/functional-tests/tests/libra/vasps/vasps.move b/language/move-lang/functional-tests/tests/diem/vasps/vasps.move similarity index 89% rename from language/move-lang/functional-tests/tests/libra/vasps/vasps.move rename to language/move-lang/functional-tests/tests/diem/vasps/vasps.move index f31ec60c1c..2794d7ea08 100644 --- a/language/move-lang/functional-tests/tests/libra/vasps/vasps.move +++ b/language/move-lang/functional-tests/tests/diem/vasps/vasps.move @@ -6,15 +6,15 @@ //! sender: blessed script { use 0x1::DualAttestation; -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::LibraTimestamp; +use 0x1::XUS::XUS; +use 0x1::DiemAccount; +use 0x1::DiemTimestamp; use 0x1::VASP; -fun main(lr_account: &signer) { +fun main(dr_account: &signer) { let add_all_currencies = false; - LibraAccount::create_parent_vasp_account( - lr_account, + DiemAccount::create_parent_vasp_account( + dr_account, {{parent}}, {{parent::auth_key}}, x"A1", @@ -30,7 +30,7 @@ fun main(lr_account: &signer) { assert(DualAttestation::human_name({{parent}}) == x"A1", 2007); assert(DualAttestation::base_url({{parent}}) == x"", 2008); assert( - DualAttestation::expiration_date({{parent}}) > LibraTimestamp::now_microseconds(), + DualAttestation::expiration_date({{parent}}) > DiemTimestamp::now_microseconds(), 2009 ); @@ -43,19 +43,19 @@ fun main(lr_account: &signer) { //! new-transaction //! sender: parent script { -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use 0x1::VASP; fun main(parent_vasp: &signer) { let dummy_auth_key_prefix = x"00000000000000000000000000000000"; let add_all_currencies = false; assert(VASP::num_children({{parent}}) == 0, 2010); - LibraAccount::create_child_vasp_account( + DiemAccount::create_child_vasp_account( parent_vasp, 0xAA, copy dummy_auth_key_prefix, add_all_currencies ); assert(VASP::num_children({{parent}}) == 1, 2011); assert(VASP::parent_address(0xAA) == {{parent}}, 2012); - LibraAccount::create_child_vasp_account( + DiemAccount::create_child_vasp_account( parent_vasp, 0xBB, dummy_auth_key_prefix, add_all_currencies ); assert(VASP::num_children({{parent}}) == 2, 2013); @@ -103,7 +103,7 @@ fun main(account: &signer) { // check: "Keep(ABORTED { code: 771," //! new-transaction -//! sender: libraroot +//! sender: diemroot script { use 0x1::VASP; fun main(account: &signer) { diff --git a/language/move-lang/functional-tests/tests/libra/wallet/wallet_module.move b/language/move-lang/functional-tests/tests/diem/wallet/wallet_module.move similarity index 89% rename from language/move-lang/functional-tests/tests/libra/wallet/wallet_module.move rename to language/move-lang/functional-tests/tests/diem/wallet/wallet_module.move index 1b9bef778e..a5509aca5f 100644 --- a/language/move-lang/functional-tests/tests/libra/wallet/wallet_module.move +++ b/language/move-lang/functional-tests/tests/diem/wallet/wallet_module.move @@ -59,16 +59,16 @@ module ApprovalGroup { //! new-transaction module ColdWallet { - use 0x1::Coin1::Coin1; + use 0x1::XUS::XUS; use 0x1::Hash; use 0x1::LCS; - use 0x1::Libra; + use 0x1::Diem; use 0x1::Vector; use 0x1::Signer; use {{default}}::ApprovalGroup; resource struct ColdWallet { - balance: Libra::Libra, + balance: Diem::Diem, sequence_num: u64, genesis_group: ApprovalGroup::ApprovalGroup, } @@ -78,7 +78,7 @@ module ColdWallet { struct Transaction { // The address that is going to be paid payee: address, - // The amount of Libra sent + // The amount of Diem sent amount: u64 } @@ -87,7 +87,7 @@ module ColdWallet { account: &signer, genesis_group: ApprovalGroup::ApprovalGroup, ) { - let zero_balance = Libra::zero(); + let zero_balance = Diem::zero(); let wallet = ColdWallet { balance: zero_balance, sequence_num: 0, @@ -103,12 +103,12 @@ module ColdWallet { // deposit money into a payee's cold wallet public fun deposit( payee: address, - to_deposit: Libra::Libra, + to_deposit: Diem::Diem, ) acquires ColdWallet { // Load the payee's account let payee_wallet_ref = borrow_global_mut(payee); // Deposit the `to_deposit` coin - Libra::deposit(&mut payee_wallet_ref.balance, to_deposit); + Diem::deposit(&mut payee_wallet_ref.balance, to_deposit); } // helper to get the expected serialization of a transaction @@ -141,7 +141,7 @@ module ColdWallet { // withdraw money from this wallet, and send to a payee account // Note that this implementation moves the fund into the payee's - // Libra account, without assuming there's a cold wallet module + // Diem account, without assuming there's a cold wallet module // under that account public fun withdraw_from_payer( payer_: &signer, @@ -154,7 +154,7 @@ module ColdWallet { ) acquires ColdWallet { let payer = Signer::address_of(payer_); let payer_ref = borrow_global_mut(payer); - let account_balance = Libra::value(&payer_ref.balance); + let account_balance = Diem::value(&payer_ref.balance); assert(amount <= account_balance, 1001); // obtain the expected serialization of the transaction struct @@ -180,10 +180,10 @@ module ColdWallet { // bump the sequence number payer_ref.sequence_num = payer_ref.sequence_num + 1; - let withdraw_amount = Libra::withdraw(&mut payer_ref.balance, amount); - // LibraAccount no longer has this API - //LibraAccount::deposit(payer_, payee, withdraw_amount); - Libra::destroy_zero(withdraw_amount); + let withdraw_amount = Diem::withdraw(&mut payer_ref.balance, amount); + // DiemAccount no longer has this API + //DiemAccount::deposit(payer_, payee, withdraw_amount); + Diem::destroy_zero(withdraw_amount); }; } } diff --git a/language/move-lang/functional-tests/tests/functional_testsuite.rs b/language/move-lang/functional-tests/tests/functional_testsuite.rs index e44a26411a..3e5c64bc0f 100644 --- a/language/move-lang/functional-tests/tests/functional_testsuite.rs +++ b/language/move-lang/functional-tests/tests/functional_testsuite.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; +use diem_types::account_address::AccountAddress as DiemAddress; use functional_tests::{ compiler::{Compiler, ScriptOrModule}, testsuite, }; -use libra_types::account_address::AccountAddress as LibraAddress; use move_lang::{ command_line::read_bool_env_var, compiled_unit::CompiledUnit, move_compile, shared::Address, }; @@ -46,7 +46,7 @@ impl Compiler for MoveSourceCompiler { fn compile( &mut self, _log: Logger, - address: LibraAddress, + address: DiemAddress, input: &str, ) -> Result { let cur_file = NamedTempFile::new()?; diff --git a/language/move-lang/functional-tests/tests/libra/account_limits/test.move b/language/move-lang/functional-tests/tests/libra/account_limits/test.move deleted file mode 100644 index f87d70e8e6..0000000000 --- a/language/move-lang/functional-tests/tests/libra/account_limits/test.move +++ /dev/null @@ -1,249 +0,0 @@ -//! account: validatorvivian, 10000000Coin1, 0, validator -//! account: bob, 100000000Coin1, 0 -//! account: alice, 100000000Coin1, 0 -//! account: otherblessed, 0Coin1, 0 -//! account: otherbob, 0Coin1, 0, address - -//! account: moneybags, 1000000000000Coin1 - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// TODO: fix -// chec: ABORTED -// chec: 10048 - -//! new-transaction -//! sender: moneybags -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{otherblessed}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap) -} -} -// TODO: fix -// chec: ABORTED -// chec: 10047 - -// ----- Blessed updates max_inflow for unhosted wallet - -//! new-transaction -//! sender: blessed -script { - use 0x1::AccountLimits; - use 0x1::CoreAddresses; - use 0x1::LBR::LBR; - fun main(tc_account: &signer) { - AccountLimits::update_limits_definition(tc_account, CoreAddresses::LIBRA_ROOT_ADDRESS(), 2, 2, 0, 0); - } -} - -// check: "Keep(EXECUTED)" - -// ------ try and mint to unhosted bob, but inflow is higher than total flow - -//! new-transaction -//! sender: moneybags -script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 3, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap) - } -} - -// TODO fix (should ABORT) - update unhosted //! account directive, and flow/balance updates for accounts -// check: "Keep(EXECUTED)" - - -// --- increase limits limits - -//! new-transaction -//! sender: blessed -script { - use 0x1::AccountLimits; - use 0x1::CoreAddresses; - use 0x1::LBR::LBR; - fun main(tc_account: &signer) { - AccountLimits::update_limits_definition(tc_account, CoreAddresses::LIBRA_ROOT_ADDRESS(), 1000, 1000, 1000, 0); - } -} - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - // Since we directly wrote into this account using fake data store, we - // don't actually know that the balance is greater than 0 in the - // account limits code, but it is. - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: moneybags -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{otherblessed}}, 2, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); -} -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: otherblessed -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: moneybags -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 2, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); -} -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// TODO: fix -// chec: ABORTED -// chec: 1 - -//! block-prologue -//! proposer: validatorvivian -//! block-time: 40001 - -//! new-transaction -//! sender: moneybags -script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 100, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: moneybags -script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// TODO: fix -// chec: ABORTED -// check: 9 - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 101, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// chec: ABORTED -// check: 11 - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::Coin1::Coin1; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// TODO: fix -// chec: ABORTED -// chec: 1 - -//! new-transaction -//! sender: moneybags -script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 1, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// TODO: fix -// chec: ABORTED -// chec: 1 - -//! new-transaction -//! sender: blessed -//! type-args: 0x1::Coin1::Coin1 -//! args: 0, {{otherbob}}, {{otherbob::auth_key}}, b"bob", true -stdlib_script::create_parent_vasp_account -//! check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/block/get_block_height.move b/language/move-lang/functional-tests/tests/libra/block/get_block_height.move deleted file mode 100644 index 9c73908dc6..0000000000 --- a/language/move-lang/functional-tests/tests/libra/block/get_block_height.move +++ /dev/null @@ -1,40 +0,0 @@ -//! account: vivian, 1000000, 0, validator -//! new-transaction - -script{ -use 0x1::LibraBlock; -fun main() { - // check that the height of the initial block is zero - assert(LibraBlock::get_current_block_height() == 0, 77); -} -} - -//! block-prologue -//! proposer: vivian -//! block-time: 100000000 - -//! new-transaction -script{ -use 0x1::LibraBlock; -use 0x1::LibraTimestamp; - -fun main() { - assert(LibraBlock::get_current_block_height() == 1, 76); - assert(LibraTimestamp::now_microseconds() == 100000000, 80); -} -} - -//! block-prologue -//! proposer: vivian -//! block-time: 101000000 - -//! new-transaction -script{ -use 0x1::LibraBlock; -use 0x1::LibraTimestamp; - -fun main() { - assert(LibraBlock::get_current_block_height() == 2, 76); - assert(LibraTimestamp::now_microseconds() == 101000000, 80); -} -} diff --git a/language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failure.move b/language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failure.move deleted file mode 100644 index 138035a401..0000000000 --- a/language/move-lang/functional-tests/tests/libra/epilogue/revert_tx_script_state_changes_after_failure.move +++ /dev/null @@ -1,28 +0,0 @@ -//! account: alice, 1000000 -//! account: bob, 1000000 - -//! sender: alice -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; - -fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 514, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - assert(false, 42); -} -} -// check: "Keep(ABORTED { code: 42," - - -//! new-transaction -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; - -fun main() { - assert(LibraAccount::balance({{bob}}) == 1000000, 43); -} -} -// check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra/coin1.move b/language/move-lang/functional-tests/tests/libra/libra/coin1.move deleted file mode 100644 index 812486c61f..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra/coin1.move +++ /dev/null @@ -1,16 +0,0 @@ -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -use 0x1::FixedPoint32; -fun main(account: &signer) { - assert(Libra::approx_lbr_for_value(10) == 10, 1); - assert(Libra::scaling_factor() == 1000000, 2); - assert(Libra::fractional_part() == 100, 3); - Libra::update_lbr_exchange_rate(account, FixedPoint32::create_from_rational(1, 3)); - assert(Libra::approx_lbr_for_value(10) == 3, 4); -} -} -// check: ToLBRExchangeRateUpdateEvent -// check: "Keep(EXECUTED)" diff --git a/language/move-lang/functional-tests/tests/libra/libra/functionality.move b/language/move-lang/functional-tests/tests/libra/libra/functionality.move deleted file mode 100644 index 7466dc3975..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra/functionality.move +++ /dev/null @@ -1,232 +0,0 @@ -//! account: bob, 0Coin1 - -module Holder { - resource struct Holder { x: T } - public fun hold(account: &signer, x: T) { - move_to(account, Holder { x }) - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -use {{default}}::Holder; -fun main(account: &signer) { - let coin1_tmp = Libra::mint(account, 10000); - assert(Libra::value(&coin1_tmp) == 10000, 0); - - let (coin1_tmp1, coin1_tmp2) = Libra::split(coin1_tmp, 5000); - assert(Libra::value(&coin1_tmp1) == 5000 , 0); - assert(Libra::value(&coin1_tmp2) == 5000 , 2); - let tmp = Libra::withdraw(&mut coin1_tmp1, 1000); - assert(Libra::value(&coin1_tmp1) == 4000 , 4); - assert(Libra::value(&tmp) == 1000 , 5); - Libra::deposit(&mut coin1_tmp1, tmp); - assert(Libra::value(&coin1_tmp1) == 5000 , 6); - let coin1_tmp = Libra::join(coin1_tmp1, coin1_tmp2); - assert(Libra::value(&coin1_tmp) == 10000, 7); - Holder::hold(account, coin1_tmp); - - Libra::destroy_zero(Libra::zero()); -} -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -fun main(account: &signer) { - Libra::destroy_zero(Libra::mint(account, 1)); -} -} -// check: "Keep(ABORTED { code: 2055," - -//! new-transaction -//! sender: bob -//! gas-currency: Coin1 -script { - use 0x1::Libra; - use 0x1::Coin1::Coin1; - fun main() { - let coins = Libra::zero(); - Libra::approx_lbr_for_coin(&coins); - Libra::destroy_zero(coins); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -script { - use 0x1::Libra; - fun main() { - Libra::destroy_zero( - Libra::zero() - ); - } -} -// check: "Keep(ABORTED { code: 261" - -//! new-transaction -script { - use 0x1::Libra; - use 0x1::LBR::LBR; - use 0x1::Coin1::Coin1; - fun main() { - assert(!Libra::is_synthetic_currency(), 9); - assert(Libra::is_synthetic_currency(), 10); - assert(!Libra::is_synthetic_currency(), 11); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: blessed -script { - use 0x1::Libra; - use 0x1::Coin1::Coin1; - use {{default}}::Holder; - fun main(account: &signer) { - Holder::hold( - account, - Libra::remove_burn_capability(account) - ); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: libraroot -script { -use 0x1::Libra; -use 0x1::FixedPoint32; -use {{default}}::Holder; -fun main(account: &signer) { - let (mint_cap, burn_cap) = Libra::register_currency( - account, FixedPoint32::create_from_rational(1, 1), true, 10, 10, b"wat" - ); - Libra::publish_burn_capability(account, burn_cap); - Holder::hold(account, mint_cap); -} -} -// check: "Keep(ABORTED { code: 258," - -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::FixedPoint32; -use {{default}}::Holder; -fun main(account: &signer) { - let (mint_cap, burn_cap) = Libra::register_currency( - account, FixedPoint32::create_from_rational(1, 1), true, 10, 10, b"wat" - ); - Holder::hold(account, mint_cap); - Holder::hold(account, burn_cap); -} -} -// check: "Keep(ABORTED { code: 2," - -//! new-transaction -//! sender: libraroot -script { -use 0x1::Libra; -use 0x1::FixedPoint32; -fun main(account: &signer) { - Libra::register_SCS_currency( - account, account, FixedPoint32::create_from_rational(1, 1), 10, 10, b"wat" - ); -} -} -// check: "Keep(ABORTED { code: 258," - -//! new-transaction -//! sender: libraroot -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -use {{default}}::Holder; -fun main(account: &signer) { - Holder::hold(account, Libra::create_preburn(account)); -} -} -// check: "Keep(ABORTED { code: 258,") - -//! new-transaction -//! sender: libraroot -script { -use 0x1::Libra; -use 0x1::LBR::LBR; -fun main(account: &signer) { - Libra::publish_preburn_to_account(account, account); -} -} -// check: "Keep(ABORTED { code: 1539,") - -//! new-transaction -//! sender: libraroot -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -fun main(account: &signer) { - Libra::publish_preburn_to_account(account, account); -} -} -// check: "Keep(ABORTED { code: 1539,") - -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -fun main(account: &signer) { - let coin1_tmp = Libra::mint(account, 1); - let tmp = Libra::withdraw(&mut coin1_tmp, 10); - Libra::destroy_zero(tmp); - Libra::destroy_zero(coin1_tmp); -} -} -// check: "Keep(ABORTED { code: 2568," - -//! new-transaction -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -use 0x1::LBR::LBR; -fun main() { - assert(Libra::is_SCS_currency(), 99); - assert(!Libra::is_SCS_currency(), 98); - assert(!Libra::is_synthetic_currency(), 97); - assert(Libra::is_synthetic_currency(), 96); -} -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: blessed -script { -use 0x1::CoreAddresses; -fun main(account: &signer) { - CoreAddresses::assert_currency_info(account) -} -} -// check: "Keep(ABORTED { code: 770," - -//! new-transaction -//! sender: blessed -script { -use 0x1::Libra; -use 0x1::Coin1::Coin1; -fun main(tc_account: &signer) { - let max_u64 = 18446744073709551615; - let coin1 = Libra::mint(tc_account, max_u64); - let coin2 = Libra::mint(tc_account, 1); - Libra::deposit(&mut coin1, coin2); - Libra::destroy_zero(coin1); -} -} -// check: "Keep(ABORTED { code: 1800," diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/basics.move b/language/move-lang/functional-tests/tests/libra/libra_account/basics.move deleted file mode 100644 index df38b4a452..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra_account/basics.move +++ /dev/null @@ -1,197 +0,0 @@ -//! account: bob, 10000LBR -//! account: alice, 0LBR -//! account: abby, 0, 0, address -//! account: doris, 0Coin1, 0 - -module Holder { - use 0x1::Signer; - - resource struct Hold { - x: T - } - - public fun hold(account: &signer, x: T) { - move_to(account, Hold{x}) - } - - public fun get(account: &signer): T - acquires Hold { - let Hold {x} = move_from>(Signer::address_of(account)); - x - } -} - -//! new-transaction -script { - use 0x1::LibraAccount; - fun main(sender: &signer) { - LibraAccount::initialize(sender, x"00000000000000000000000000000000"); - } -} -// check: "Keep(ABORTED { code: 1," - -//! new-transaction -//! sender: bob -script { - use 0x1::LBR::LBR; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{bob}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: bob -script { - use 0x1::LBR::LBR; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{abby}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(ABORTED { code: 4357," - -//! new-transaction -//! sender: bob -script { - use 0x1::Coin1::Coin1; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{abby}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(ABORTED { code: 4869," - -//! new-transaction -//! sender: bob -script { - use 0x1::LBR::LBR; - use 0x1::LibraAccount; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{doris}}, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(ABORTED { code: 4615," - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - fun main(account: &signer) { - let rot_cap = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&rot_cap, x"123abc"); - LibraAccount::restore_key_rotation_capability(rot_cap); - } -} -// check: "Keep(ABORTED { code: 2055," - -//! new-transaction -script { - use 0x1::LibraAccount; - use {{default}}::Holder; - fun main(account: &signer) { - Holder::hold( - account, - LibraAccount::extract_key_rotation_capability(account) - ); - Holder::hold( - account, - LibraAccount::extract_key_rotation_capability(account) - ); - } -} -// check: "Keep(ABORTED { code: 2305," - -//! new-transaction -script { - use 0x1::LibraAccount; - use 0x1::Signer; - fun main(sender: &signer) { - let cap = LibraAccount::extract_key_rotation_capability(sender); - assert( - *LibraAccount::key_rotation_capability_address(&cap) == Signer::address_of(sender), 0 - ); - LibraAccount::restore_key_rotation_capability(cap); - let with_cap = LibraAccount::extract_withdraw_capability(sender); - - assert( - *LibraAccount::withdraw_capability_address(&with_cap) == Signer::address_of(sender), - 0 - ); - LibraAccount::restore_withdraw_capability(with_cap); - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: bob -script { - use 0x1::LibraAccount; - use 0x1::LBR::LBR; - fun main(account: &signer) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, 10000, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - assert(LibraAccount::balance({{alice}}) == 10000, 60) - } -} -// check: "Keep(EXECUTED)" - -//! new-transaction -//! sender: blessed -//! type-args: 0x1::Coin1::Coin1 -//! args: 0, 0x0, {{bob::auth_key}}, b"bob", true -stdlib_script::create_parent_vasp_account -// check: "Keep(ABORTED { code: 2567," - -//! new-transaction -//! sender: blessed -//! type-args: 0x1::Coin1::Coin1 -//! args: 0, {{abby}}, x"", b"bob", true -stdlib_script::create_parent_vasp_account -// check: "Keep(ABORTED { code: 2055," - -//! new-transaction -script { -use 0x1::LibraAccount; -fun main() { - LibraAccount::sequence_number(0x1); -} -} -// check: "Keep(ABORTED { code: 5," - -//! new-transaction -script { -use 0x1::LibraAccount; -fun main() { - LibraAccount::authentication_key(0x1); -} -} -// check: "Keep(ABORTED { code: 5," - -//! new-transaction -script { -use 0x1::LibraAccount; -fun main() { - LibraAccount::delegated_key_rotation_capability(0x1); -} -} -// check: "Keep(ABORTED { code: 5," - -//! new-transaction -script { -use 0x1::LibraAccount; -fun main() { - LibraAccount::delegated_withdraw_capability(0x1); -} -} -// check: "Keep(ABORTED { code: 5," diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/create_account.move b/language/move-lang/functional-tests/tests/libra/libra_account/create_account.move deleted file mode 100644 index 7187761739..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra_account/create_account.move +++ /dev/null @@ -1,25 +0,0 @@ -//! sender: blessed -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::LCS; -fun main(account: &signer) { - let addr: address = 0x111101; - assert(!LibraAccount::exists_at(addr), 83); - LibraAccount::create_parent_vasp_account(account, addr, LCS::to_bytes(&addr), x"aa", false); -} -} - -//! new-transaction -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -fun main(account: &signer) { - let addr: address = 0x111101; - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, addr, 10, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - assert(LibraAccount::balance(addr) == 10, 84); - assert(LibraAccount::sequence_number(addr) == 0, 84); -} -} diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_rotation_capability.move b/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_rotation_capability.move deleted file mode 100644 index 32367919bc..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_rotation_capability.move +++ /dev/null @@ -1,40 +0,0 @@ -script { -use 0x1::LibraAccount; -use 0x1::Signer; -fun main(account: &signer) { - let sender = Signer::address_of(account); - let old_auth_key = LibraAccount::authentication_key(sender); - - // by default, an account has not delegated its key rotation capability - assert(!LibraAccount::delegated_key_rotation_capability(sender), 50); - - // extracting the capability should flip the flag - let cap = LibraAccount::extract_key_rotation_capability(account); - assert(LibraAccount::delegated_key_rotation_capability(sender), 51); - - // and the sender should be able to rotate - LibraAccount::rotate_authentication_key(&cap, old_auth_key); - - // restoring the capability should flip the flag back - LibraAccount::restore_key_rotation_capability(cap); - assert(!LibraAccount::delegated_key_rotation_capability(sender), 52); -} -} -// check: "Keep(EXECUTED)" - -// Extracting the capability should preclude rotation -//! new-transaction -script { -use 0x1::LibraAccount; -fun main(account: &signer) { - let cap = LibraAccount::extract_key_rotation_capability(account); - let cap2 = LibraAccount::extract_key_rotation_capability(account); - - // should fail - LibraAccount::rotate_authentication_key(&cap2, x"00"); - LibraAccount::restore_key_rotation_capability(cap); - LibraAccount::restore_key_rotation_capability(cap2); -} -} -// check: "Keep(ABORTED { code: 2305," -// check: location: ::LibraAccount diff --git a/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_withdrawal_capability.move b/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_withdrawal_capability.move deleted file mode 100644 index 3ddab3d54e..0000000000 --- a/language/move-lang/functional-tests/tests/libra/libra_account/remove_then_replace_withdrawal_capability.move +++ /dev/null @@ -1,22 +0,0 @@ -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::Signer; -fun main(account: &signer) { - let sender = Signer::address_of(account); - - // by default, an account has not delegated its withdrawal capability - assert(!LibraAccount::delegated_withdraw_capability(sender), 50); - - // make sure we report that the capability has been extracted - let cap = LibraAccount::extract_withdraw_capability(account); - assert(LibraAccount::delegated_withdraw_capability(sender), 51); - - // and the sender should be able to withdraw with this cap - LibraAccount::pay_from(&cap, sender, 100, x"", x""); - - // restoring the capability should flip the flag back - LibraAccount::restore_withdraw_capability(cap); - assert(!LibraAccount::delegated_withdraw_capability(sender), 52); -} -} diff --git a/language/move-lang/functional-tests/tests/libra/payment/cant_overdraft.move b/language/move-lang/functional-tests/tests/libra/payment/cant_overdraft.move deleted file mode 100644 index 0d6c588f75..0000000000 --- a/language/move-lang/functional-tests/tests/libra/payment/cant_overdraft.move +++ /dev/null @@ -1,20 +0,0 @@ -//! account: alice, 0, 0, 0Coin1 - -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::Signer; - -fun main(account: &signer) { - let addr = Signer::address_of(account); - let sender_balance = LibraAccount::balance(addr); - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, {{alice}}, sender_balance, x"", x""); - - assert(LibraAccount::balance(addr) == 0, 42); - - LibraAccount::pay_from(&with_cap, {{alice}}, sender_balance, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); -} -} -// check: "Keep(ABORTED { code: 1288," diff --git a/language/move-lang/functional-tests/tests/libra/payment/cant_recreate_market_cap.move b/language/move-lang/functional-tests/tests/libra/payment/cant_recreate_market_cap.move deleted file mode 100644 index 1e80bb3796..0000000000 --- a/language/move-lang/functional-tests/tests/libra/payment/cant_recreate_market_cap.move +++ /dev/null @@ -1,9 +0,0 @@ -script { -use 0x1::Coin1; - -fun main(account: &signer) { - // This will fail because Coin1 has already been initialized - Coin1::initialize(account, account); -} -} -// check: Keep(ABORTED { code: 1, location: 00000000000000000000000000000001::LibraTimestamp }) diff --git a/language/move-lang/functional-tests/tests/libra/payment/peer_to_peer_payment.move b/language/move-lang/functional-tests/tests/libra/payment/peer_to_peer_payment.move deleted file mode 100644 index 9d4453b4ec..0000000000 --- a/language/move-lang/functional-tests/tests/libra/payment/peer_to_peer_payment.move +++ /dev/null @@ -1,22 +0,0 @@ -//! account: bob, 1000000 - -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::Signer; - -fun main(sender: &signer) { - let sender_addr = Signer::address_of(sender); - let recipient_addr = {{bob}}; - let sender_original_balance = LibraAccount::balance(sender_addr); - let recipient_original_balance = LibraAccount::balance(recipient_addr); - let with_cap = LibraAccount::extract_withdraw_capability(sender); - LibraAccount::pay_from(&with_cap, recipient_addr, 5, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - - let sender_new_balance = LibraAccount::balance(sender_addr); - let recipient_new_balance = LibraAccount::balance(recipient_addr); - assert(sender_new_balance == sender_original_balance - 5, 77); - assert(recipient_new_balance == recipient_original_balance + 5, 77); -} -} diff --git a/language/move-lang/functional-tests/tests/libra/payment/zero_payment.move b/language/move-lang/functional-tests/tests/libra/payment/zero_payment.move deleted file mode 100644 index 269590a11a..0000000000 --- a/language/move-lang/functional-tests/tests/libra/payment/zero_payment.move +++ /dev/null @@ -1,17 +0,0 @@ -script { -use 0x1::Coin1::Coin1; -use 0x1::LibraAccount; -use 0x1::Signer; - -fun main(account: &signer) { - let addr = Signer::address_of(account); - let old_balance = LibraAccount::balance(addr); - - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, addr, 0, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - - assert(LibraAccount::balance(addr) == old_balance, 42); -} -} -// check: "Keep(ABORTED { code: 519," diff --git a/language/move-lang/functional-tests/tests/move/parser/byte_string.move b/language/move-lang/functional-tests/tests/move/parser/byte_string.move index 7270984b25..5ef1c86677 100644 --- a/language/move-lang/functional-tests/tests/move/parser/byte_string.move +++ b/language/move-lang/functional-tests/tests/move/parser/byte_string.move @@ -2,8 +2,7 @@ script { fun main() { assert(b"" == x"", 0); - assert(b"Libra" == x"4c69627261", 1); + assert(b"Diem" == x"4469656D", 1); assert(b"\x4c\x69\x62\x72\x61" == x"4c69627261", 2); - assert(b"\"Hello\tlibra.\"\n \r \\Null=\0" == x"2248656c6c6f096c696272612e220a200d205c4e756c6c3d00", 3); } } diff --git a/language/move-lang/functional-tests/tests/testing-infra/show_all_optional_info.exp b/language/move-lang/functional-tests/tests/testing-infra/show_all_optional_info.exp index 4cba1b7196..15413f0d26 100644 --- a/language/move-lang/functional-tests/tests/testing-infra/show_all_optional_info.exp +++ b/language/move-lang/functional-tests/tests/testing-infra/show_all_optional_info.exp @@ -2,11 +2,11 @@ [1] Move VM Status: EXECUTED [2] Transaction Status: Keep(EXECUTED) [3] Gas Used: 16 -[4] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500100000000000000))] }) +[4] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500100000000000000))] }) [5] Events: [] [6] Transaction(1) [7] Move VM Status: EXECUTION_FAILURE { status_code: ARITHMETIC_ERROR, location: Script, function_definition: 0, code_offset: 2 } [8] Transaction Status: Keep(EXECUTION_FAILURE { location: Script, function_definition: 0, code_offset: 2 }) [9] Gas Used: 1 -[10] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500200000000000000))] }) +[10] Write Set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a4a46d1b1421502568a4a6ac326d7250, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20975741f6b37b591141e96e0c60a57ce8a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d725001a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500000000000000000180000000000000000a4a46d1b1421502568a4a6ac326d72500200000000000000))] }) [11] Events: [] diff --git a/language/move-lang/src/bin/ir-file-translation.rs b/language/move-lang/src/bin/ir-file-translation.rs index d338b39873..c7354f6f75 100644 --- a/language/move-lang/src/bin/ir-file-translation.rs +++ b/language/move-lang/src/bin/ir-file-translation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-lang/src/bin/ir-test-translation.rs b/language/move-lang/src/bin/ir-test-translation.rs index 5c9514cddd..2e9532036a 100644 --- a/language/move-lang/src/bin/ir-test-translation.rs +++ b/language/move-lang/src/bin/ir-test-translation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-lang/src/bin/move-build.rs b/language/move-lang/src/bin/move-build.rs index 14486d45e0..f64d692ea3 100644 --- a/language/move-lang/src/bin/move-build.rs +++ b/language/move-lang/src/bin/move-build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-lang/src/bin/move-check.rs b/language/move-lang/src/bin/move-check.rs index 5a9c3e1230..9fe8272d4b 100644 --- a/language/move-lang/src/bin/move-check.rs +++ b/language/move-lang/src/bin/move-check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-lang/src/cfgir/absint.rs b/language/move-lang/src/cfgir/absint.rs index 9b95b5414c..e4147d125a 100644 --- a/language/move-lang/src/cfgir/absint.rs +++ b/language/move-lang/src/cfgir/absint.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::cfg::CFG; diff --git a/language/move-lang/src/cfgir/ast.rs b/language/move-lang/src/cfgir/ast.rs index cf14724a3a..f247b7eed7 100644 --- a/language/move-lang/src/cfgir/ast.rs +++ b/language/move-lang/src/cfgir/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/cfgir/borrows/mod.rs b/language/move-lang/src/cfgir/borrows/mod.rs index 87e01373c2..bb0c537426 100644 --- a/language/move-lang/src/cfgir/borrows/mod.rs +++ b/language/move-lang/src/cfgir/borrows/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod state; diff --git a/language/move-lang/src/cfgir/borrows/state.rs b/language/move-lang/src/cfgir/borrows/state.rs index dfb46ca699..495bf7deda 100644 --- a/language/move-lang/src/cfgir/borrows/state.rs +++ b/language/move-lang/src/cfgir/borrows/state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //************************************************************************************************** diff --git a/language/move-lang/src/cfgir/cfg.rs b/language/move-lang/src/cfgir/cfg.rs index 6014341b55..89a0198122 100644 --- a/language/move-lang/src/cfgir/cfg.rs +++ b/language/move-lang/src/cfgir/cfg.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/cfgir/constant_fold.rs b/language/move-lang/src/cfgir/constant_fold.rs index 0cddeb417b..6feb375a0c 100644 --- a/language/move-lang/src/cfgir/constant_fold.rs +++ b/language/move-lang/src/cfgir/constant_fold.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::cfg::BlockCFG; diff --git a/language/move-lang/src/cfgir/eliminate_locals.rs b/language/move-lang/src/cfgir/eliminate_locals.rs index af9ba173d4..a0f0c61d47 100644 --- a/language/move-lang/src/cfgir/eliminate_locals.rs +++ b/language/move-lang/src/cfgir/eliminate_locals.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::cfg::BlockCFG; diff --git a/language/move-lang/src/cfgir/inline_blocks.rs b/language/move-lang/src/cfgir/inline_blocks.rs index f67d94a2a4..10272a3795 100644 --- a/language/move-lang/src/cfgir/inline_blocks.rs +++ b/language/move-lang/src/cfgir/inline_blocks.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::cfg::{BlockCFG, CFG}; diff --git a/language/move-lang/src/cfgir/liveness/mod.rs b/language/move-lang/src/cfgir/liveness/mod.rs index 640fca8105..95b9072796 100644 --- a/language/move-lang/src/cfgir/liveness/mod.rs +++ b/language/move-lang/src/cfgir/liveness/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod state; diff --git a/language/move-lang/src/cfgir/liveness/state.rs b/language/move-lang/src/cfgir/liveness/state.rs index c59235c0a1..e45875a8e7 100644 --- a/language/move-lang/src/cfgir/liveness/state.rs +++ b/language/move-lang/src/cfgir/liveness/state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //************************************************************************************************** diff --git a/language/move-lang/src/cfgir/locals/mod.rs b/language/move-lang/src/cfgir/locals/mod.rs index 69cd03e51c..81183d3a9e 100644 --- a/language/move-lang/src/cfgir/locals/mod.rs +++ b/language/move-lang/src/cfgir/locals/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod state; diff --git a/language/move-lang/src/cfgir/locals/state.rs b/language/move-lang/src/cfgir/locals/state.rs index 36c9fac69c..c6405df1ef 100644 --- a/language/move-lang/src/cfgir/locals/state.rs +++ b/language/move-lang/src/cfgir/locals/state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/cfgir/mod.rs b/language/move-lang/src/cfgir/mod.rs index 1419de6f8e..12ad3eab52 100644 --- a/language/move-lang/src/cfgir/mod.rs +++ b/language/move-lang/src/cfgir/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod absint; diff --git a/language/move-lang/src/cfgir/remove_no_ops.rs b/language/move-lang/src/cfgir/remove_no_ops.rs index a3bb221599..d89d2a34a5 100644 --- a/language/move-lang/src/cfgir/remove_no_ops.rs +++ b/language/move-lang/src/cfgir/remove_no_ops.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{ast::*, cfg::BlockCFG}; diff --git a/language/move-lang/src/cfgir/simplify_jumps.rs b/language/move-lang/src/cfgir/simplify_jumps.rs index 016c1e6a0b..49d93fe98d 100644 --- a/language/move-lang/src/cfgir/simplify_jumps.rs +++ b/language/move-lang/src/cfgir/simplify_jumps.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::cfg::BlockCFG; diff --git a/language/move-lang/src/cfgir/translate.rs b/language/move-lang/src/cfgir/translate.rs index e8bb3e3dc2..4355aac5f2 100644 --- a/language/move-lang/src/cfgir/translate.rs +++ b/language/move-lang/src/cfgir/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,7 +13,7 @@ use crate::{ parser::ast::{ConstantName, FunctionName, ModuleIdent, StructName, Var}, shared::unique_map::UniqueMap, }; -use libra_types::account_address::AccountAddress as LibraAddress; +use diem_types::account_address::AccountAddress as DiemAddress; use move_core_types::value::MoveValue; use move_ir_types::location::*; use std::{ @@ -277,7 +277,7 @@ fn move_value_from_value(sp!(_, v_): Value) -> MoveValue { use MoveValue as MV; use Value_ as V; match v_ { - V::Address(a) => MV::Address(LibraAddress::new(a.to_u8())), + V::Address(a) => MV::Address(DiemAddress::new(a.to_u8())), V::U8(u) => MV::U8(u), V::U64(u) => MV::U64(u), V::U128(u) => MV::U128(u), diff --git a/language/move-lang/src/command_line/mod.rs b/language/move-lang/src/command_line/mod.rs index d97215efe2..a834117c57 100644 --- a/language/move-lang/src/command_line/mod.rs +++ b/language/move-lang/src/command_line/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::shared::*; diff --git a/language/move-lang/src/compiled_unit.rs b/language/move-lang/src/compiled_unit.rs index fd6eda006f..2af4659d02 100644 --- a/language/move-lang/src/compiled_unit.rs +++ b/language/move-lang/src/compiled_unit.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/errors/mod.rs b/language/move-lang/src/errors/mod.rs index 929b95077c..9344fc0329 100644 --- a/language/move-lang/src/errors/mod.rs +++ b/language/move-lang/src/errors/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::command_line::{read_env_var, COLOR_MODE_ENV_VAR}; diff --git a/language/move-lang/src/expansion/aliases.rs b/language/move-lang/src/expansion/aliases.rs index 90a04dbb59..225f56f35a 100644 --- a/language/move-lang/src/expansion/aliases.rs +++ b/language/move-lang/src/expansion/aliases.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/expansion/ast.rs b/language/move-lang/src/expansion/ast.rs index 0772e862e6..cd9d92ac15 100644 --- a/language/move-lang/src/expansion/ast.rs +++ b/language/move-lang/src/expansion/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/expansion/byte_string.rs b/language/move-lang/src/expansion/byte_string.rs index 876503ad2e..22927e1e10 100644 --- a/language/move-lang/src/expansion/byte_string.rs +++ b/language/move-lang/src/expansion/byte_string.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{errors::*, parser::syntax::make_loc}; diff --git a/language/move-lang/src/expansion/hex_string.rs b/language/move-lang/src/expansion/hex_string.rs index a0117643ae..ef7d39507f 100644 --- a/language/move-lang/src/expansion/hex_string.rs +++ b/language/move-lang/src/expansion/hex_string.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{errors::*, parser::syntax::make_loc}; diff --git a/language/move-lang/src/expansion/mod.rs b/language/move-lang/src/expansion/mod.rs index c865b00b1f..e9a96efa90 100644 --- a/language/move-lang/src/expansion/mod.rs +++ b/language/move-lang/src/expansion/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod aliases; diff --git a/language/move-lang/src/expansion/translate.rs b/language/move-lang/src/expansion/translate.rs index 7ac8f8cdee..1aab591131 100644 --- a/language/move-lang/src/expansion/translate.rs +++ b/language/move-lang/src/expansion/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -214,7 +214,7 @@ fn set_sender_address(context: &mut Context, loc: Loc, sender: Option
) crate::command_line::SENDER ); context.error(vec![(loc, msg)]); - Address::LIBRA_CORE + Address::DIEM_CORE } }) } diff --git a/language/move-lang/src/hlir/ast.rs b/language/move-lang/src/hlir/ast.rs index 1ecd308ddf..67a66265ed 100644 --- a/language/move-lang/src/hlir/ast.rs +++ b/language/move-lang/src/hlir/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/hlir/mod.rs b/language/move-lang/src/hlir/mod.rs index 86ccf735ca..79bf63f7ea 100644 --- a/language/move-lang/src/hlir/mod.rs +++ b/language/move-lang/src/hlir/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod ast; diff --git a/language/move-lang/src/hlir/translate.rs b/language/move-lang/src/hlir/translate.rs index 9950578825..b456bd20ac 100644 --- a/language/move-lang/src/hlir/translate.rs +++ b/language/move-lang/src/hlir/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/interface_generator.rs b/language/move-lang/src/interface_generator.rs index 47e861ff57..7de206878c 100644 --- a/language/move-lang/src/interface_generator.rs +++ b/language/move-lang/src/interface_generator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::shared::Address; diff --git a/language/move-lang/src/ir_translation.rs b/language/move-lang/src/ir_translation.rs index cff4d235a3..a0351f349b 100644 --- a/language/move-lang/src/ir_translation.rs +++ b/language/move-lang/src/ir_translation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use regex::{Captures, NoExpand, Regex}; diff --git a/language/move-lang/src/lib.rs b/language/move-lang/src/lib.rs index 8aaebcbfa0..991ea1fab2 100644 --- a/language/move-lang/src/lib.rs +++ b/language/move-lang/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -361,12 +361,12 @@ fn has_compiled_module_magic_number(path: &str) -> bool { Err(_) => return false, Ok(f) => f, }; - let mut magic = [0u8; BinaryConstants::LIBRA_MAGIC_SIZE]; + let mut magic = [0u8; BinaryConstants::DIEM_MAGIC_SIZE]; let num_bytes_read = match file.read(&mut magic) { Err(_) => return false, Ok(n) => n, }; - num_bytes_read == BinaryConstants::LIBRA_MAGIC_SIZE && magic == BinaryConstants::LIBRA_MAGIC + num_bytes_read == BinaryConstants::DIEM_MAGIC_SIZE && magic == BinaryConstants::DIEM_MAGIC } pub fn path_to_string(path: &Path) -> anyhow::Result { diff --git a/language/move-lang/src/naming/ast.rs b/language/move-lang/src/naming/ast.rs index d98933f42e..43a7da330f 100644 --- a/language/move-lang/src/naming/ast.rs +++ b/language/move-lang/src/naming/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/naming/mod.rs b/language/move-lang/src/naming/mod.rs index fee56c30e0..65c8f1119f 100644 --- a/language/move-lang/src/naming/mod.rs +++ b/language/move-lang/src/naming/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod ast; diff --git a/language/move-lang/src/naming/translate.rs b/language/move-lang/src/naming/translate.rs index 367ab8d402..712ca8aaef 100644 --- a/language/move-lang/src/naming/translate.rs +++ b/language/move-lang/src/naming/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/naming/uses.rs b/language/move-lang/src/naming/uses.rs index 7c7ca7058a..5d09839ef2 100644 --- a/language/move-lang/src/naming/uses.rs +++ b/language/move-lang/src/naming/uses.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/parser/ast.rs b/language/move-lang/src/parser/ast.rs index 423d085d46..851a1cc664 100644 --- a/language/move-lang/src/parser/ast.rs +++ b/language/move-lang/src/parser/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::shared::{ast_debug::*, Address, Identifier, Name, TName}; diff --git a/language/move-lang/src/parser/lexer.rs b/language/move-lang/src/parser/lexer.rs index 59750249d6..b5b774a6d5 100644 --- a/language/move-lang/src/parser/lexer.rs +++ b/language/move-lang/src/parser/lexer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{errors::*, parser::syntax::make_loc, FileCommentMap, MatchedFileCommentMap}; diff --git a/language/move-lang/src/parser/mod.rs b/language/move-lang/src/parser/mod.rs index 38e98caae8..218febe015 100644 --- a/language/move-lang/src/parser/mod.rs +++ b/language/move-lang/src/parser/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod lexer; diff --git a/language/move-lang/src/parser/syntax.rs b/language/move-lang/src/parser/syntax.rs index a12dd878ff..55897d8fe6 100644 --- a/language/move-lang/src/parser/syntax.rs +++ b/language/move-lang/src/parser/syntax.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use codespan::{ByteIndex, Span}; diff --git a/language/move-lang/src/shared/ast_debug.rs b/language/move-lang/src/shared/ast_debug.rs index 0282ffdfde..2d5bdc10c1 100644 --- a/language/move-lang/src/shared/ast_debug.rs +++ b/language/move-lang/src/shared/ast_debug.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// Simple trait used for pretty printing the various AST diff --git a/language/move-lang/src/shared/mod.rs b/language/move-lang/src/shared/mod.rs index 037f6756b3..b06a5123b6 100644 --- a/language/move-lang/src/shared/mod.rs +++ b/language/move-lang/src/shared/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_ir_types::location::*; @@ -24,7 +24,7 @@ pub const ADDRESS_LENGTH: usize = 16; pub struct Address([u8; ADDRESS_LENGTH]); impl Address { - pub const LIBRA_CORE: Address = Address::new([ + pub const DIEM_CORE: Address = Address::new([ 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, ]); diff --git a/language/move-lang/src/shared/remembering_unique_map.rs b/language/move-lang/src/shared/remembering_unique_map.rs index e1a1bdba48..4eb2bfb9ed 100644 --- a/language/move-lang/src/shared/remembering_unique_map.rs +++ b/language/move-lang/src/shared/remembering_unique_map.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{unique_map::UniqueMap, *}; diff --git a/language/move-lang/src/shared/unique_map.rs b/language/move-lang/src/shared/unique_map.rs index c801f9bb2f..9a1e5aa398 100644 --- a/language/move-lang/src/shared/unique_map.rs +++ b/language/move-lang/src/shared/unique_map.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/language/move-lang/src/test_utils/mod.rs b/language/move-lang/src/test_utils/mod.rs index ac1206533e..af8bc2817c 100644 --- a/language/move-lang/src/test_utils/mod.rs +++ b/language/move-lang/src/test_utils/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::Path; diff --git a/language/move-lang/src/to_bytecode/context.rs b/language/move-lang/src/to_bytecode/context.rs index ae6335796e..dc6b6b8803 100644 --- a/language/move-lang/src/to_bytecode/context.rs +++ b/language/move-lang/src/to_bytecode/context.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,7 +8,7 @@ use crate::{ ConstantName, FunctionName, ModuleIdent, ModuleIdent_, ModuleName, StructName, Var, }, }; -use libra_types::account_address::AccountAddress as LibraAddress; +use diem_types::account_address::AccountAddress as DiemAddress; use move_ir_types::ast as IR; use std::{ clone::Clone, @@ -218,7 +218,7 @@ impl<'a> Context<'a> { let name = Self::translate_module_name(name); IR::ModuleIdent::Qualified(IR::QualifiedModuleIdent::new( name, - LibraAddress::new(address.to_u8()), + DiemAddress::new(address.to_u8()), )) } diff --git a/language/move-lang/src/to_bytecode/mod.rs b/language/move-lang/src/to_bytecode/mod.rs index 71f2c6de0a..f81a56f13e 100644 --- a/language/move-lang/src/to_bytecode/mod.rs +++ b/language/move-lang/src/to_bytecode/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[macro_use] diff --git a/language/move-lang/src/to_bytecode/remove_fallthrough_jumps.rs b/language/move-lang/src/to_bytecode/remove_fallthrough_jumps.rs index 99c301ae0c..2a2c91d862 100644 --- a/language/move-lang/src/to_bytecode/remove_fallthrough_jumps.rs +++ b/language/move-lang/src/to_bytecode/remove_fallthrough_jumps.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_ir_types::ast as IR; diff --git a/language/move-lang/src/to_bytecode/translate.rs b/language/move-lang/src/to_bytecode/translate.rs index a53026907d..ff0c1b407b 100644 --- a/language/move-lang/src/to_bytecode/translate.rs +++ b/language/move-lang/src/to_bytecode/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{context::*, remove_fallthrough_jumps}; @@ -19,7 +19,7 @@ use crate::{ shared::{unique_map::UniqueMap, *}, }; use bytecode_source_map::source_map::SourceMap; -use libra_types::account_address::AccountAddress as LibraAddress; +use diem_types::account_address::AccountAddress as DiemAddress; use move_ir_types::{ast as IR, location::*}; use move_vm::file_format as F; use std::collections::{BTreeMap, BTreeSet, HashMap}; @@ -136,7 +136,7 @@ fn module( }) .collect(); - let addr = LibraAddress::new(ident.0.value.address.to_u8()); + let addr = DiemAddress::new(ident.0.value.address.to_u8()); let mname = ident.0.value.name.clone(); let (imports, explicit_dependency_declarations) = context.materialize( dependency_orderings, @@ -789,7 +789,7 @@ fn exp_(context: &mut Context, code: &mut IR::BytecodeBlock, e: H::Exp) { code.push(sp( loc, match v.value { - V::Address(a) => B::LdAddr(LibraAddress::new(a.to_u8())), + V::Address(a) => B::LdAddr(DiemAddress::new(a.to_u8())), V::Bytearray(bytes) => B::LdByteArray(bytes), V::U8(u) => B::LdU8(u), V::U64(u) => B::LdU64(u), diff --git a/language/move-lang/src/typing/ast.rs b/language/move-lang/src/typing/ast.rs index 0d1b111d29..2df2071a92 100644 --- a/language/move-lang/src/typing/ast.rs +++ b/language/move-lang/src/typing/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/typing/core.rs b/language/move-lang/src/typing/core.rs index a823ed6717..e8cd06ed0d 100644 --- a/language/move-lang/src/typing/core.rs +++ b/language/move-lang/src/typing/core.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/typing/expand.rs b/language/move-lang/src/typing/expand.rs index 4ee9cc9d73..dfd8c265f3 100644 --- a/language/move-lang/src/typing/expand.rs +++ b/language/move-lang/src/typing/expand.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::core::{self, Context}; diff --git a/language/move-lang/src/typing/globals.rs b/language/move-lang/src/typing/globals.rs index 8725814c4a..a8a153549a 100644 --- a/language/move-lang/src/typing/globals.rs +++ b/language/move-lang/src/typing/globals.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::core::{self, Context, Subst}; diff --git a/language/move-lang/src/typing/infinite_instantiations.rs b/language/move-lang/src/typing/infinite_instantiations.rs index fbe3b987e1..a7a326d6da 100644 --- a/language/move-lang/src/typing/infinite_instantiations.rs +++ b/language/move-lang/src/typing/infinite_instantiations.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::core::{self, Subst, TParamSubst}; diff --git a/language/move-lang/src/typing/mod.rs b/language/move-lang/src/typing/mod.rs index 5e518edba6..0647740df2 100644 --- a/language/move-lang/src/typing/mod.rs +++ b/language/move-lang/src/typing/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod ast; diff --git a/language/move-lang/src/typing/recursive_structs.rs b/language/move-lang/src/typing/recursive_structs.rs index 0c39b6c32c..539770ed6a 100644 --- a/language/move-lang/src/typing/recursive_structs.rs +++ b/language/move-lang/src/typing/recursive_structs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-lang/src/typing/translate.rs b/language/move-lang/src/typing/translate.rs index e8c7b4e9c5..cac42c60d7 100644 --- a/language/move-lang/src/typing/translate.rs +++ b/language/move-lang/src/typing/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{ diff --git a/language/move-lang/tests/ir_test_coverage.rs b/language/move-lang/tests/ir_test_coverage.rs index b5e36cca94..ff99c42244 100644 --- a/language/move-lang/tests/ir_test_coverage.rs +++ b/language/move-lang/tests/ir_test_coverage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_lang::test_utils::*; diff --git a/language/move-lang/tests/move_check/examples/multi_pool_money_market_token.move b/language/move-lang/tests/move_check/examples/multi_pool_money_market_token.move index 4b46f32cdb..3fbc72bce0 100644 --- a/language/move-lang/tests/move_check/examples/multi_pool_money_market_token.move +++ b/language/move-lang/tests/move_check/examples/multi_pool_money_market_token.move @@ -47,9 +47,9 @@ module Token { Coin { type: *&coin.type, value: amount } } - public fun join(coin1_tmp: Coin, coin2: Coin): Coin { - deposit(&mut coin1_tmp, coin2); - coin1_tmp + public fun join(xus: Coin, coin2: Coin): Coin { + deposit(&mut xus, coin2); + xus } public fun deposit(coin: &mut Coin, check: Coin) { diff --git a/language/move-lang/tests/move_check/examples/simple_money_market_token.move b/language/move-lang/tests/move_check/examples/simple_money_market_token.move index b8ae22ebc6..657df5d72e 100644 --- a/language/move-lang/tests/move_check/examples/simple_money_market_token.move +++ b/language/move-lang/tests/move_check/examples/simple_money_market_token.move @@ -27,9 +27,9 @@ module Token { Coin { type: *&coin.type, value: amount } } - public fun join(coin1_tmp: Coin, coin2: Coin): Coin { - deposit(&mut coin1_tmp, coin2); - coin1_tmp + public fun join(xus: Coin, coin2: Coin): Coin { + deposit(&mut xus, coin2); + xus } public fun deposit(coin: &mut Coin, check: Coin) { diff --git a/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.exp b/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.exp index 7ac10c600f..c7be93f70f 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.exp +++ b/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.exp @@ -1,8 +1,8 @@ error: - ┌── tests/move_check/parser/byte_string_invalid_hex.move:3:19 ─── + ┌── tests/move_check/parser/byte_string_invalid_hex.move:3:18 ─── │ - 3 │ b"libra \xG0" - │ ^ Invalid hexadecimal character: 'G' + 3 │ b"diem \xG0" + │ ^ Invalid hexadecimal character: 'G' │ diff --git a/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.move b/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.move index e797f6ffb1..09f94cd43f 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.move +++ b/language/move-lang/tests/move_check/parser/byte_string_invalid_hex.move @@ -1,5 +1,5 @@ module M { public fun bad_value(): vector { - b"libra \xG0" + b"diem \xG0" } } diff --git a/language/move-lang/tests/move_check/parser/byte_string_success.move b/language/move-lang/tests/move_check/parser/byte_string_success.move index 8b76ec0ab6..d9cdec4b5c 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_success.move +++ b/language/move-lang/tests/move_check/parser/byte_string_success.move @@ -1,12 +1,12 @@ module M { public fun byte_string(): vector { - b"Libra" + b"Diem" } public fun byte_string_with_quotes(): vector { - b"\"Libra\"" + b"\"Diem\"" } public fun byte_string_with_escaped_sequence(): vector { - b"Hello\n libra. \n Newline; \r Carriage return; \t Tab; \\ Backslash; \0 Null" + b"Hello\n diem. \n Newline; \r Carriage return; \t Tab; \\ Backslash; \0 Null" } public fun empty_byte_string(): vector { b"" diff --git a/language/move-lang/tests/move_check/parser/byte_string_token_eof1.exp b/language/move-lang/tests/move_check/parser/byte_string_token_eof1.exp index b8b4b7ff91..215dbd1d97 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_token_eof1.exp +++ b/language/move-lang/tests/move_check/parser/byte_string_token_eof1.exp @@ -2,7 +2,7 @@ error: ┌── tests/move_check/parser/byte_string_token_eof1.move:3:9 ─── │ - 3 │ b"libra\" - │ ^^^^^^^^^ Missing closing quote (") after byte string + 3 │ b"diem\" + │ ^^^^^^^^ Missing closing quote (") after byte string │ diff --git a/language/move-lang/tests/move_check/parser/byte_string_token_eof1.move b/language/move-lang/tests/move_check/parser/byte_string_token_eof1.move index 2e5c28f5ee..642d99d9e2 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_token_eof1.move +++ b/language/move-lang/tests/move_check/parser/byte_string_token_eof1.move @@ -1,5 +1,5 @@ module M { public fun bad_value(): vector { - b"libra\" + b"diem\" } } diff --git a/language/move-lang/tests/move_check/parser/byte_string_token_eof2.exp b/language/move-lang/tests/move_check/parser/byte_string_token_eof2.exp index 2e0ee328f6..bcf96ede63 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_token_eof2.exp +++ b/language/move-lang/tests/move_check/parser/byte_string_token_eof2.exp @@ -2,7 +2,7 @@ error: ┌── tests/move_check/parser/byte_string_token_eof2.move:3:9 ─── │ - 3 │ b"Libra - │ ^^^^^^^ Missing closing quote (") after byte string + 3 │ b"Diem + │ ^^^^^^ Missing closing quote (") after byte string │ diff --git a/language/move-lang/tests/move_check/parser/byte_string_token_eof2.move b/language/move-lang/tests/move_check/parser/byte_string_token_eof2.move index d01a03bb53..eaed8acdaf 100644 --- a/language/move-lang/tests/move_check/parser/byte_string_token_eof2.move +++ b/language/move-lang/tests/move_check/parser/byte_string_token_eof2.move @@ -1,5 +1,5 @@ module M { public fun bad_value(): vector { - b"Libra + b"Diem } } diff --git a/language/move-lang/tests/move_check/parser/comments_ok.move b/language/move-lang/tests/move_check/parser/comments_ok.move index 29413b4750..da9c82abe5 100644 --- a/language/move-lang/tests/move_check/parser/comments_ok.move +++ b/language/move-lang/tests/move_check/parser/comments_ok.move @@ -14,7 +14,7 @@ module M { // Comments in strings are not comments at all. fun str(): vector { - b"http://libra.org" + b"http://diem.com" } // This is a regular comment which appears where a doc comment would not be allowed. diff --git a/language/move-lang/tests/move_check/parser/doc_comments_placement.move b/language/move-lang/tests/move_check/parser/doc_comments_placement.move index aaee49c4d5..ae354817c4 100644 --- a/language/move-lang/tests/move_check/parser/doc_comments_placement.move +++ b/language/move-lang/tests/move_check/parser/doc_comments_placement.move @@ -4,7 +4,7 @@ /** They may use different limiters. */ module M { /** There can be no doc comment on uses. */ - use 0x1::LibraAccount; + use 0x1::DiemAccount; /// This is f. fun f() { } diff --git a/language/move-lang/tests/move_check_testsuite.rs b/language/move-lang/tests/move_check_testsuite.rs index 677535a75f..ea4723dbf1 100644 --- a/language/move-lang/tests/move_check_testsuite.rs +++ b/language/move-lang/tests/move_check_testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_lang::{command_line::read_bool_env_var, move_compile, shared::Address}; diff --git a/language/move-lang/tests/stdlib_sanity_check.rs b/language/move-lang/tests/stdlib_sanity_check.rs index 0d17e95347..6d2fa2e972 100644 --- a/language/move-lang/tests/stdlib_sanity_check.rs +++ b/language/move-lang/tests/stdlib_sanity_check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_lang::{command_line::read_bool_env_var, move_compile, shared::Address}; @@ -23,7 +23,7 @@ fn sanity_check_testsuite_impl( } else { deps.push(std_lib_dir) } - let sender = Some(Address::LIBRA_CORE); + let sender = Some(Address::DIEM_CORE); let out_path = path.with_extension(OUT_EXT); diff --git a/language/move-prover/Cargo.toml b/language/move-prover/Cargo.toml index f6336bb397..9f5521625c 100644 --- a/language/move-prover/Cargo.toml +++ b/language/move-prover/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "move-prover" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -# libra dependencies +# diem dependencies move-lang = { path = "../move-lang", version = "0.0.1" } spec-lang = { path = "spec-lang", version = "0.1.0" } docgen = { path = "docgen", version = "0.1.0" } @@ -15,9 +15,9 @@ abigen = { path = "abigen", version = "0.1.0" } errmapgen = { path = "errmapgen", version = "0.1.0" } bytecode = { path = "bytecode", version = "0.1.0"} vm = { path = "../vm", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } bytecode-source-map = { path = "../compiler/bytecode-source-map", version = "0.1.0" } move-ir-types = { path = "../move-ir/types", version = "0.1.0" } diff --git a/language/move-prover/README.md b/language/move-prover/README.md index a685e2bc85..d5900f8444 100644 --- a/language/move-prover/README.md +++ b/language/move-prover/README.md @@ -6,7 +6,7 @@ custom_edit_url: https://github.com/libra/libra/edit/master/language/move-prover -## Code under this subtree is experimental. It is out of scope for [the Libra Bug Bounty](https://hackerone.com/libra) until it is no longer marked experimental. +## Code under this subtree is experimental. It is out of scope for [the Diem Bug Bounty](https://hackerone.com/diem) until it is no longer marked experimental. # The Move Prover @@ -14,7 +14,7 @@ The Move Prover supports formal specification and verification of Move code. It logical properties of Move smart contracts, while providing a user experience similar to a type checker or linter. It's purpose is to make contracts more *trustworthy*, specifically: -- Protect massive assets managed by the Libra blockchain from smart contract bugs +- Protect massive assets managed by the Diem blockchain from smart contract bugs - Protect against well-resourced adversaries - Anticipate justified regulator scrutiny and compliance requirements - Allow domain experts with mathematical background, but not necessarily software engineering background, to diff --git a/language/move-prover/abigen/Cargo.toml b/language/move-prover/abigen/Cargo.toml index a1407c85e9..2c5ffc4ca1 100644 --- a/language/move-prover/abigen/Cargo.toml +++ b/language/move-prover/abigen/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "abigen" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -# libra dependencies +# diem dependencies spec-lang = { path = "../spec-lang", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } @@ -25,7 +25,7 @@ codespan-reporting = "0.8.0" move-prover = { path = "..", version = "0.1.0" } datatest-stable = { path = "../../../common/datatest-stable", version = "0.1.0" } test-utils = { path = "../test-utils", version = "0.1.0" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } [[test]] name = "testsuite" diff --git a/language/move-prover/abigen/src/abigen.rs b/language/move-prover/abigen/src/abigen.rs index 100029201b..17e03581b6 100644 --- a/language/move-prover/abigen/src/abigen.rs +++ b/language/move-prover/abigen/src/abigen.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[allow(unused_imports)] use log::{debug, info, warn}; use anyhow::bail; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use heck::SnakeCase; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde::{Deserialize, Serialize}; use spec_lang::{ diff --git a/language/move-prover/abigen/src/lib.rs b/language/move-prover/abigen/src/lib.rs index af73147760..8161bd8cf4 100644 --- a/language/move-prover/abigen/src/lib.rs +++ b/language/move-prover/abigen/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/abigen/tests/sources/libra.move b/language/move-prover/abigen/tests/sources/diem.move similarity index 65% rename from language/move-prover/abigen/tests/sources/libra.move rename to language/move-prover/abigen/tests/sources/diem.move index 1fcb604021..c0e0fb89f1 100644 --- a/language/move-prover/abigen/tests/sources/libra.move +++ b/language/move-prover/abigen/tests/sources/diem.move @@ -1,6 +1,6 @@ address 0x1 { /// Some test module. -module LibraDocTest { +module DiemDocTest { } } diff --git a/language/move-prover/abigen/tests/testsuite.rs b/language/move-prover/abigen/tests/testsuite.rs index 1d369e5bab..1e9fb2d385 100644 --- a/language/move-prover/abigen/tests/testsuite.rs +++ b/language/move-prover/abigen/tests/testsuite.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::Path; use codespan_reporting::term::termcolor::Buffer; -use libra_temppath::TempPath; +use diem_temppath::TempPath; use move_prover::{cli::Options, run_move_prover}; use std::path::PathBuf; use test_utils::baseline_test::verify_or_update_baseline; diff --git a/language/move-prover/bytecode/Cargo.toml b/language/move-prover/bytecode/Cargo.toml index e6131e23df..d267fb5493 100644 --- a/language/move-prover/bytecode/Cargo.toml +++ b/language/move-prover/bytecode/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "bytecode" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra stackless bytecode generator" +authors = ["Diem Association "] +description = "Diem stackless bytecode generator" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,10 +15,10 @@ vm = { path = "../../vm", version = "0.1.0" } bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } borrow-graph = { path = "../../borrow-graph", version = "0.0.1" } ir-to-bytecode = { path = "../../compiler/ir-to-bytecode", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } num = "0.3.0" itertools = "0.9.0" -libra-types = { path = "../../../types", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } log = "0.4.11" @@ -27,7 +27,7 @@ datatest-stable = { path = "../../../common/datatest-stable", version = "0.1.0" test-utils = { path = "../test-utils", version = "0.1.0" } codespan = "0.8.0" codespan-reporting = "0.8.0" -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } anyhow = "1.0.34" [[test]] diff --git a/language/move-prover/bytecode/src/annotations.rs b/language/move-prover/bytecode/src/annotations.rs index c036789737..2aa8d12f22 100644 --- a/language/move-prover/bytecode/src/annotations.rs +++ b/language/move-prover/bytecode/src/annotations.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{ diff --git a/language/move-prover/bytecode/src/borrow_analysis.rs b/language/move-prover/bytecode/src/borrow_analysis.rs index 0accee9114..d4c927afe1 100644 --- a/language/move-prover/bytecode/src/borrow_analysis.rs +++ b/language/move-prover/bytecode/src/borrow_analysis.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Data flow analysis computing borrow information for preparation of memory_instrumentation. diff --git a/language/move-prover/bytecode/src/clean_and_optimize.rs b/language/move-prover/bytecode/src/clean_and_optimize.rs index 2886998ad5..80970ed5d0 100644 --- a/language/move-prover/bytecode/src/clean_and_optimize.rs +++ b/language/move-prover/bytecode/src/clean_and_optimize.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Final phase of cleanup and optimization. diff --git a/language/move-prover/bytecode/src/dataflow_analysis.rs b/language/move-prover/bytecode/src/dataflow_analysis.rs index 14f079ef0f..13860fc1b9 100644 --- a/language/move-prover/bytecode/src/dataflow_analysis.rs +++ b/language/move-prover/bytecode/src/dataflow_analysis.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Adapted from AbstractInterpreter for Bytecode, this module defines the data-flow analysis diff --git a/language/move-prover/bytecode/src/eliminate_imm_refs.rs b/language/move-prover/bytecode/src/eliminate_imm_refs.rs index 3e835b3bd2..c9307bcaa4 100644 --- a/language/move-prover/bytecode/src/eliminate_imm_refs.rs +++ b/language/move-prover/bytecode/src/eliminate_imm_refs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/eliminate_mut_refs.rs b/language/move-prover/bytecode/src/eliminate_mut_refs.rs index 0a0ba391a9..a33a364796 100644 --- a/language/move-prover/bytecode/src/eliminate_mut_refs.rs +++ b/language/move-prover/bytecode/src/eliminate_mut_refs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/function_target.rs b/language/move-prover/bytecode/src/function_target.rs index 4c23c069f9..e292746d0a 100644 --- a/language/move-prover/bytecode/src/function_target.rs +++ b/language/move-prover/bytecode/src/function_target.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/function_target_pipeline.rs b/language/move-prover/bytecode/src/function_target_pipeline.rs index db0c81e3f8..4a3723a2da 100644 --- a/language/move-prover/bytecode/src/function_target_pipeline.rs +++ b/language/move-prover/bytecode/src/function_target_pipeline.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -115,13 +115,13 @@ impl FunctionTargetPipeline { // 1. callees is empty (common case) // 2. callees is nonempty and mid is part of a recursive or mutually recursive // intra-module call cycle (possible in theory, but doesn't happen in the current - // implementation of the Libra framework). + // implementation of the Diem framework). to_remove.push(call_id); let func_env = env.get_function(call_id); if !callees.is_empty() { // The right long-term thing to do here is to allow analysis in case (2) and ask the // analysis processors to deal gracefully with the absence of summaries. But for - // now, we intentionally fail because recursion is not expected in Libra Framework + // now, we intentionally fail because recursion is not expected in Diem Framework // code unimplemented!("Recursion or mutual recursion detected in {:?}. Make sure that all analyses in self.processors are prepared to handle recursion", func_env.get_identifier()); } diff --git a/language/move-prover/bytecode/src/graph.rs b/language/move-prover/bytecode/src/graph.rs index 81e0314bc3..7a10f8f162 100644 --- a/language/move-prover/bytecode/src/graph.rs +++ b/language/move-prover/bytecode/src/graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // This module implements a technique to compute the natural loops of a graph. diff --git a/language/move-prover/bytecode/src/lib.rs b/language/move-prover/bytecode/src/lib.rs index 34163deff2..24adbc60af 100644 --- a/language/move-prover/bytecode/src/lib.rs +++ b/language/move-prover/bytecode/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/bytecode/src/livevar_analysis.rs b/language/move-prover/bytecode/src/livevar_analysis.rs index 15ead8c439..1ccace9e66 100644 --- a/language/move-prover/bytecode/src/livevar_analysis.rs +++ b/language/move-prover/bytecode/src/livevar_analysis.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Live variable analysis with subsequent dead assignment elimination and diff --git a/language/move-prover/bytecode/src/memory_instrumentation.rs b/language/move-prover/bytecode/src/memory_instrumentation.rs index 99f454cdc6..e305994394 100644 --- a/language/move-prover/bytecode/src/memory_instrumentation.rs +++ b/language/move-prover/bytecode/src/memory_instrumentation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/reaching_def_analysis.rs b/language/move-prover/bytecode/src/reaching_def_analysis.rs index 9e94792f96..bfe11ac58e 100644 --- a/language/move-prover/bytecode/src/reaching_def_analysis.rs +++ b/language/move-prover/bytecode/src/reaching_def_analysis.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Reaching definition analysis with subsequent copy propagation. diff --git a/language/move-prover/bytecode/src/stackless_bytecode.rs b/language/move-prover/bytecode/src/stackless_bytecode.rs index 1f17e22ac8..66ae71efe0 100644 --- a/language/move-prover/bytecode/src/stackless_bytecode.rs +++ b/language/move-prover/bytecode/src/stackless_bytecode.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::function_target::FunctionTarget; diff --git a/language/move-prover/bytecode/src/stackless_bytecode_generator.rs b/language/move-prover/bytecode/src/stackless_bytecode_generator.rs index d8abe16a82..19843cea83 100644 --- a/language/move-prover/bytecode/src/stackless_bytecode_generator.rs +++ b/language/move-prover/bytecode/src/stackless_bytecode_generator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/stackless_control_flow_graph.rs b/language/move-prover/bytecode/src/stackless_control_flow_graph.rs index f6724a2824..da2599ce7d 100644 --- a/language/move-prover/bytecode/src/stackless_control_flow_graph.rs +++ b/language/move-prover/bytecode/src/stackless_control_flow_graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Adapted from control_flow_graph for Bytecode, this module defines the control-flow graph on diff --git a/language/move-prover/bytecode/src/test_instrumenter.rs b/language/move-prover/bytecode/src/test_instrumenter.rs index 5c3489d4ad..e242c4b0c9 100644 --- a/language/move-prover/bytecode/src/test_instrumenter.rs +++ b/language/move-prover/bytecode/src/test_instrumenter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-prover/bytecode/src/unit_tests.rs b/language/move-prover/bytecode/src/unit_tests.rs index 22841ebef9..d53397ea96 100644 --- a/language/move-prover/bytecode/src/unit_tests.rs +++ b/language/move-prover/bytecode/src/unit_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::graph::{Graph, Reducible}; diff --git a/language/move-prover/bytecode/src/usage_analysis.rs b/language/move-prover/bytecode/src/usage_analysis.rs index 71f0773d06..8edeb0e3b0 100644 --- a/language/move-prover/bytecode/src/usage_analysis.rs +++ b/language/move-prover/bytecode/src/usage_analysis.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ function_target_pipeline::{FunctionTargetProcessor, FunctionTargetsHolder}, stackless_bytecode::{Bytecode, Operation}, }; -use libra_types::account_config; +use diem_types::account_config; use move_core_types::language_storage::{StructTag, TypeTag}; use spec_lang::{ env::{FunctionEnv, GlobalEnv, QualifiedId, StructId}, @@ -36,10 +36,10 @@ pub fn get_modified_memory<'env>( /// Get all closed types that may be packed by (1) genesis and (2) all transaction scripts. /// This makes some simplifying assumptions that are not correct in general, but hold for the -/// current Libra Framework: +/// current Diem Framework: /// - Transaction scripts have at most 1 type argument -/// - The only values that can be bound to a transaction script type argument are Coin1 and -/// LBR. Passing any other values will lead to an aborted transaction. +/// - The only values that can be bound to a transaction script type argument are XUS and +/// XDX. Passing any other values will lead to an aborted transaction. /// The first assumption is checked and will trigger an assert failure if violated. The second /// is unchecked, but would be a nice property for the prover. pub fn get_packed_types(env: &GlobalEnv, targets: &FunctionTargetsHolder) -> BTreeSet { @@ -57,19 +57,17 @@ pub fn get_packed_types(env: &GlobalEnv, targets: &FunctionTargetsHolder) -> BTr "Invariant violation: usage analysis should be run before calling this", ); packed_types.extend(annotation.closed_types.clone()); - // instantiate the tx script open types with Coin1, LBR + // instantiate the tx script open types with XUS, XDX if is_script { let num_type_parameters = func_env.get_type_parameters().len(); assert!(num_type_parameters <= 1, "Assuming that transaction scripts have <= 1 type parameters for simplicity. If there can be >1 type parameter, the code here must account for all permutations of type params"); if num_type_parameters == 1 { - let coin_types: Vec = vec![ - account_config::coin1_tmp_tag(), - account_config::lbr_type_tag(), - ] - .into_iter() - .map(|t| Type::from_type_tag(t, env)) - .collect(); + let coin_types: Vec = + vec![account_config::xus_tag(), account_config::xdx_type_tag()] + .into_iter() + .map(|t| Type::from_type_tag(t, env)) + .collect(); for open_ty in &annotation.open_types { for coin_ty in &coin_types { match open_ty.instantiate(vec![coin_ty.clone()].as_slice()).into_type_tag(env) { diff --git a/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.exp b/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.exp index 7599edb050..2b69a11604 100644 --- a/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.exp +++ b/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.exp @@ -434,91 +434,91 @@ pub fun Signer::borrow_address(s: &signer): &address { } -pub fun Libra::market_cap<$tv0>(): u128 { +pub fun Diem::market_cap<$tv0>(): u128 { var $t0: address - var $t1: &Libra::Info<#0> + var $t1: &Diem::Info<#0> var $t2: &u128 var $t3: u128 0: $t0 := 0xa550c18 - 1: $t1 := borrow_global>($t0) - 2: $t2 := borrow_field>.total_value($t1) + 1: $t1 := borrow_global>($t0) + 2: $t2 := borrow_field>.total_value($t1) 3: $t3 := read_ref($t2) 4: return $t3 } -pub fun Libra::preburn<$tv0>(preburn_ref: &mut Libra::Preburn<#0>, coin: Libra::T<#0>) { +pub fun Diem::preburn<$tv0>(preburn_ref: &mut Diem::Preburn<#0>, coin: Diem::T<#0>) { var coin_value: u64 - var market_cap: &mut Libra::Info<#0> - var $t4: &Libra::T<#0> + var market_cap: &mut Diem::Info<#0> + var $t4: &Diem::T<#0> var $t5: u64 - var $t6: &mut Libra::Preburn<#0> - var $t7: &mut vector> - var $t8: Libra::T<#0> + var $t6: &mut Diem::Preburn<#0> + var $t7: &mut vector> + var $t8: Diem::T<#0> var $t9: address - var $t10: &mut Libra::Info<#0> - var $t11: &mut Libra::Info<#0> + var $t10: &mut Diem::Info<#0> + var $t11: &mut Diem::Info<#0> var $t12: &u64 var $t13: u64 var $t14: u64 var $t15: u64 - var $t16: &mut Libra::Info<#0> + var $t16: &mut Diem::Info<#0> var $t17: &mut u64 0: $t4 := borrow_local(coin) - 1: $t5 := Libra::value<#0>($t4) + 1: $t5 := Diem::value<#0>($t4) 2: coin_value := $t5 3: $t6 := move(preburn_ref) - 4: $t7 := borrow_field>.requests($t6) + 4: $t7 := borrow_field>.requests($t6) 5: $t8 := move(coin) - 6: Vector::push_back>($t7, $t8) + 6: Vector::push_back>($t7, $t8) 7: $t9 := 0xa550c18 - 8: $t10 := borrow_global>($t9) + 8: $t10 := borrow_global>($t9) 9: market_cap := $t10 10: $t11 := copy(market_cap) - 11: $t12 := borrow_field>.preburn_value($t11) + 11: $t12 := borrow_field>.preburn_value($t11) 12: $t13 := read_ref($t12) 13: $t14 := copy(coin_value) 14: $t15 := +($t13, $t14) 15: $t16 := move(market_cap) - 16: $t17 := borrow_field>.preburn_value($t16) + 16: $t17 := borrow_field>.preburn_value($t16) 17: write_ref($t17, $t15) 18: return () } -pub fun Libra::preburn_to<$tv0>(account: &signer, coin: Libra::T<#0>) { +pub fun Diem::preburn_to<$tv0>(account: &signer, coin: Diem::T<#0>) { var $t2: &signer var $t3: address - var $t4: &mut Libra::Preburn<#0> - var $t5: Libra::T<#0> + var $t4: &mut Diem::Preburn<#0> + var $t5: Diem::T<#0> 0: $t2 := move(account) 1: $t3 := Signer::address_of($t2) - 2: $t4 := borrow_global>($t3) + 2: $t4 := borrow_global>($t3) 3: $t5 := move(coin) - 4: Libra::preburn<#0>($t4, $t5) + 4: Diem::preburn<#0>($t4, $t5) 5: return () } -pub fun Libra::preburn_value<$tv0>(): u64 { +pub fun Diem::preburn_value<$tv0>(): u64 { var $t0: address - var $t1: &Libra::Info<#0> + var $t1: &Diem::Info<#0> var $t2: &u64 var $t3: u64 0: $t0 := 0xa550c18 - 1: $t1 := borrow_global>($t0) - 2: $t2 := borrow_field>.preburn_value($t1) + 1: $t1 := borrow_global>($t0) + 2: $t2 := borrow_field>.preburn_value($t1) 3: $t3 := read_ref($t2) 4: return $t3 } -pub fun Libra::value<$tv0>(coin_ref: &Libra::T<#0>): u64 { - var $t1: &Libra::T<#0> +pub fun Diem::value<$tv0>(coin_ref: &Diem::T<#0>): u64 { + var $t1: &Diem::T<#0> var $t2: &u64 var $t3: u64 0: $t1 := move(coin_ref) - 1: $t2 := borrow_field>.value($t1) + 1: $t2 := borrow_field>.value($t1) 2: $t3 := read_ref($t2) 3: return $t3 } diff --git a/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.move b/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.move index 10ef3476d8..e3381692b9 100644 --- a/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.move +++ b/language/move-prover/bytecode/tests/from_move/regression_generic_and_native_type.move @@ -5,7 +5,7 @@ address 0x1 { -module Libra { +module Diem { use 0x1::Signer; use 0x1::Vector; diff --git a/language/move-prover/bytecode/tests/testsuite.rs b/language/move-prover/bytecode/tests/testsuite.rs index 1adea00f06..1c458b8f31 100644 --- a/language/move-prover/bytecode/tests/testsuite.rs +++ b/language/move-prover/bytecode/tests/testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; diff --git a/language/move-prover/diagen/Cargo.toml b/language/move-prover/diagen/Cargo.toml index 02932d4d65..e8fa72ff62 100644 --- a/language/move-prover/diagen/Cargo.toml +++ b/language/move-prover/diagen/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "diagen" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] edition = "2018" license = "Apache-2.0" publish = false @@ -10,8 +10,8 @@ publish = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -# libra dependencies -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +# diem dependencies +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } # external dependencies anyhow = "1.0.34" diff --git a/language/move-prover/diagen/README.md b/language/move-prover/diagen/README.md index 3a88ad9e92..caaf6eb962 100644 --- a/language/move-prover/diagen/README.md +++ b/language/move-prover/diagen/README.md @@ -9,7 +9,7 @@ The command to run is: ``` cargo run -p diagen ``` -Note that this command can be run anywhere in the `libra` repo because it will automatically locate `language/stdlib/modules` (i.e., input directory) and `language/move-prover/diagen/diagrams` (i.e., output directory). +Note that this command can be run anywhere in the `diem` repo because it will automatically locate `language/stdlib/modules` (i.e., input directory) and `language/move-prover/diagen/diagrams` (i.e., output directory). To convert `.dot` into `.pdf`, run the following command: ``` diff --git a/language/move-prover/diagen/diagrams/convert_all_dot_to_pdf.sh b/language/move-prover/diagen/diagrams/convert_all_dot_to_pdf.sh index abc50e04ad..60efb39d40 100755 --- a/language/move-prover/diagen/diagrams/convert_all_dot_to_pdf.sh +++ b/language/move-prover/diagen/diagrams/convert_all_dot_to_pdf.sh @@ -1,4 +1,4 @@ -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 #!/bin/sh diff --git a/language/move-prover/diagen/diagrams/convert_all_dot_to_svg.sh b/language/move-prover/diagen/diagrams/convert_all_dot_to_svg.sh index 033120f903..462e622956 100755 --- a/language/move-prover/diagen/diagrams/convert_all_dot_to_svg.sh +++ b/language/move-prover/diagen/diagrams/convert_all_dot_to_svg.sh @@ -1,4 +1,4 @@ -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 #!/bin/sh diff --git a/language/move-prover/diagen/src/main.rs b/language/move-prover/diagen/src/main.rs index ecb4dce222..82eb780122 100644 --- a/language/move-prover/diagen/src/main.rs +++ b/language/move-prover/diagen/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use regex::Regex; diff --git a/language/move-prover/doc/user/docgen.md b/language/move-prover/doc/user/docgen.md index f19099e3b5..2a5ccd5bc7 100644 --- a/language/move-prover/doc/user/docgen.md +++ b/language/move-prover/doc/user/docgen.md @@ -10,7 +10,7 @@ results in the generated docs. ## Calling the Generator -The generator is called from within the Libra tree as such: +The generator is called from within the Diem tree as such: ```shell script > cargo run -p move-prover -- --docgen .. @@ -84,7 +84,7 @@ Github). One can also use section headers in documentation comments; those heade the context in which they are included in the overall doc. For example: ```move -/// This is the Libra account module +/// This is the Diem account module /// /// # Overview /// @@ -94,7 +94,7 @@ the context in which they are included in the overall doc. For example: /// /// The following details need to be considered: /// ... -module LibraAccount { +module DiemAccount { ... } ``` @@ -103,9 +103,9 @@ If the module documentation is included in a larger context, the section tags wi doc: ```move -# Module `0x1::LibraAccount` +# Module `0x1::DiemAccount` -This is the Libra account module. +This is the Diem account module. ## Overview ... @@ -124,8 +124,8 @@ decorated as follows: positives, as the generator does not analyze the syntax right now. - Identifiers are attempted to resolve against the documented code and on success, hyperlinked to the declaration. - For example, within the `LibraAccount` module, all occurences of `T`, `Self::T`, `LibraAccount::T`, and - `0x1::LibraAccount:T` will resolve into a link to the declaration. This resolution is heuristic and may have + For example, within the `DiemAccount` module, all occurences of `T`, `Self::T`, `DiemAccount::T`, and + `0x1::DiemAccount:T` will resolve into a link to the declaration. This resolution is heuristic and may have positive and negative false positives. Specifically, it currently does not consider aliases and use-declarations. If you use a simple name in code comments. like `foo`, it will not resolve against a function `foo` in the current diff --git a/language/move-prover/doc/user/install.md b/language/move-prover/doc/user/install.md index 00f5db5aac..2a1b721aaf 100644 --- a/language/move-prover/doc/user/install.md +++ b/language/move-prover/doc/user/install.md @@ -3,8 +3,8 @@ If you have used one of the older installation methods for the prover tools, read the next section first, then continue here. -If you already have a Libra development environment running, and just want to add prover tools, -run (in the Libra root directory): +If you already have a Diem development environment running, and just want to add prover tools, +run (in the Diem root directory): ```shell script ./scripts/dev_setup.sh -yp @@ -17,8 +17,8 @@ Notice that you have to include environment variable definitions in `~/.profile` setup, the `~/.profile` may be already automatically loaded for each login shell, or it may not. If not, you may need to add `. ~/.profile` to your `~/.bash_profile` or other shell configuration manually. -The `dev-setup.sh` command can be used to set up other parts of the Libra tool chain; use `-h` for more information. -Specifically, if you have a fresh Libra enlistment and machine, you can use the following to install basic build +The `dev-setup.sh` command can be used to set up other parts of the Diem tool chain; use `-h` for more information. +Specifically, if you have a fresh Diem enlistment and machine, you can use the following to install basic build tools like Rust together with prover tools: ```shell script diff --git a/language/move-prover/doc/user/prover-guide.md b/language/move-prover/doc/user/prover-guide.md index f500e93648..10134cd754 100644 --- a/language/move-prover/doc/user/prover-guide.md +++ b/language/move-prover/doc/user/prover-guide.md @@ -3,11 +3,11 @@ This is the user guide for the Move prover. This document does not describe the [Move specification language](spec-lang.md), but accompanies it. -This guide is currently specific for the usage of the prover within the Libra repo. +This guide is currently specific for the usage of the prover within the Diem repo. ## Running the Prover -To run the Move prover while working in the Libra tree, we recommend to use `cargo run`. You can define an alias +To run the Move prover while working in the Diem tree, we recommend to use `cargo run`. You can define an alias as below in your `.bashrc` (or other shell configuration) to simplify this: ```shell script @@ -45,7 +45,7 @@ set an environment variable which contains a path to the default configuration f for example, to let the prover automatically find dependencies to the Move standard library, as shown below: ```shell script -> echo "move_deps = [\"/language/stdlib/modules\"]" > ~/.mvprc +> echo "move_deps = [\"/language/stdlib/modules\"]" > ~/.mvprc > export MOVE_PROVER_CONFIG=~/.mvprc ``` diff --git a/language/move-prover/doc/user/spec-lang.md b/language/move-prover/doc/user/spec-lang.md index 2fb69b16cd..9746240e42 100644 --- a/language/move-prover/doc/user/spec-lang.md +++ b/language/move-prover/doc/user/spec-lang.md @@ -21,7 +21,7 @@ quality assurance, where it is continuously improved for evolving objectives. This document describes the language only; see [here][PROVER_USAGE] for how to use the Move prover tool. The reader is expected to have basic knowledge of the Move language, as well as basic principles of pre/post condition specifications -(see e.g. [this article][PRE_POST_REFERENCE]). For examples of specifications, we refer to the [Libra +(see e.g. [this article][PRE_POST_REFERENCE]). For examples of specifications, we refer to the [Diem framework documentation][FRAMEWORK] which has specifications embedded. diff --git a/language/move-prover/docgen/Cargo.toml b/language/move-prover/docgen/Cargo.toml index bd006f139a..e163467e9d 100644 --- a/language/move-prover/docgen/Cargo.toml +++ b/language/move-prover/docgen/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "docgen" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -# libra dependencies +# diem dependencies spec-lang = { path = "../spec-lang", version = "0.1.0" } bytecode = { path = "../bytecode", version = "0.1.0"} -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } # external dependencies codespan = "0.8.0" @@ -27,7 +27,7 @@ once_cell = "1.4.1" move-prover = { path = "..", version = "0.1.0" } datatest-stable = { path = "../../../common/datatest-stable", version = "0.1.0" } test-utils = { path = "../test-utils", version = "0.1.0" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } [[test]] name = "testsuite" diff --git a/language/move-prover/docgen/src/docgen.rs b/language/move-prover/docgen/src/docgen.rs index eacc4adb7c..a4497918ef 100644 --- a/language/move-prover/docgen/src/docgen.rs +++ b/language/move-prover/docgen/src/docgen.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[allow(unused_imports)] diff --git a/language/move-prover/docgen/src/lib.rs b/language/move-prover/docgen/src/lib.rs index 2153bb23c1..52a5e26483 100644 --- a/language/move-prover/docgen/src/lib.rs +++ b/language/move-prover/docgen/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/docgen/tests/sources/LibraTest.move b/language/move-prover/docgen/tests/sources/DiemTest.move similarity index 85% rename from language/move-prover/docgen/tests/sources/LibraTest.move rename to language/move-prover/docgen/tests/sources/DiemTest.move index 75eadade57..fde6116afc 100644 --- a/language/move-prover/docgen/tests/sources/LibraTest.move +++ b/language/move-prover/docgen/tests/sources/DiemTest.move @@ -1,27 +1,27 @@ address 0x1 { -/// The `Libra` module describes the concept of a coin in the Libra framework. It introduces the -/// resource `Libra::Libra`, representing a coin of given coin type. +/// The `Diem` module describes the concept of a coin in the Diem framework. It introduces the +/// resource `Diem::Diem`, representing a coin of given coin type. /// The module defines functions operating on coins as well as functionality like /// minting and burning of coins. -module LibraTest { +module DiemTest { use 0x1::CoreAddresses; use 0x1::Event::{Self, EventHandle}; use 0x1::FixedPoint32::{Self, FixedPoint32}; use 0x1::RegisteredCurrencies; use 0x1::Signer; use 0x1::Roles; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; resource struct RegisterNewCurrency {} - /// The `Libra` resource defines the Libra coin for each currency in - /// Libra. Each "coin" is coupled with a type `CoinType` specifying the + /// The `Diem` resource defines the Diem coin for each currency in + /// Diem. Each "coin" is coupled with a type `CoinType` specifying the /// currency of the coin, and a `value` field specifying the value /// of the coin (in the base units of the currency `CoinType` /// and specified in the `CurrencyInfo` resource for that `CoinType` /// published under the `CoreAddresses::CURRENCY_INFO_ADDRESS()` account address). - resource struct Libra { + resource struct Diem { /// The value of this coin in the base units for `CoinType` value: u64 } @@ -29,20 +29,20 @@ module LibraTest { /// The `MintCapability` resource defines a capability to allow minting /// of coins of `CoinType` currency by the holder of this capability. /// This capability is held only either by the `CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()` - /// account or the `0x1::LBR` module (and `CoreAddresses::LIBRA_ROOT_ADDRESS()` in testnet). + /// account or the `0x1::XDX` module (and `CoreAddresses::DIEM_ROOT_ADDRESS()` in testnet). resource struct MintCapability { } /// The `BurnCapability` resource defines a capability to allow coins /// of `CoinType` currency to be burned by the holder of the - /// and the `0x1::LBR` module (and `CoreAddresses::LIBRA_ROOT_ADDRESS()` in testnet). + /// and the `0x1::XDX` module (and `CoreAddresses::DIEM_ROOT_ADDRESS()` in testnet). resource struct BurnCapability { } /// The `CurrencyRegistrationCapability` is a singleton resource - /// published under the `CoreAddresses::LIBRA_ROOT_ADDRESS()` and grants - /// the capability to the `0x1::Libra` module to add currencies to the + /// published under the `CoreAddresses::DIEM_ROOT_ADDRESS()` and grants + /// the capability to the `0x1::Diem` module to add currencies to the /// `0x1::RegisteredCurrencies` on-chain config. - /// A `MintEvent` is emitted every time a Libra coin is minted. This + /// A `MintEvent` is emitted every time a Diem coin is minted. This /// contains the `amount` minted (in base units of the currency being /// minted) along with the `currency_code` for the coin(s) being /// minted, and that is defined in the `currency_code` field of the @@ -50,11 +50,11 @@ module LibraTest { struct MintEvent { /// Funds added to the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, } - /// A `BurnEvent` is emitted every time a non-synthetic[1] Libra coin is + /// A `BurnEvent` is emitted every time a non-synthetic[1] Diem coin is /// burned. It contains the `amount` burned in base units for the /// currency, along with the `currency_code` for the coins being burned /// (and as defined in the `CurrencyInfo` resource for that currency). @@ -65,7 +65,7 @@ module LibraTest { struct BurnEvent { /// Funds removed from the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address with the `Preburn` resource that stored the now-burned funds preburn_address: address, @@ -77,7 +77,7 @@ module LibraTest { struct PreburnEvent { /// The amount of funds waiting to be removed (burned) from the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address with the `Preburn` resource that now holds the funds preburn_address: address, @@ -90,21 +90,21 @@ module LibraTest { struct CancelBurnEvent { /// The amount of funds returned amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address of the `Preburn` resource that held the now-returned funds. preburn_address: address, } - /// An `ToLBRExchangeRateUpdateEvent` is emitted every time the to-LBR exchange + /// An `ToXDXExchangeRateUpdateEvent` is emitted every time the to-XDX exchange /// rate for the currency given by `currency_code` is updated. - struct ToLBRExchangeRateUpdateEvent { + struct ToXDXExchangeRateUpdateEvent { /// The currency code of the currency whose exchange rate was updated. currency_code: vector, - /// The new on-chain to-LBR exchange rate between the - /// `currency_code` currency and LBR. Represented in conversion - /// between the (on-chain) base-units for the currency and microlibra. - new_to_lbr_exchange_rate: u64, + /// The new on-chain to-XDX exchange rate between the + /// `currency_code` currency and XDX. Represented in conversion + /// between the (on-chain) base-units for the currency and microdiem. + new_to_xdx_exchange_rate: u64, } /// The `CurrencyInfo` resource stores the various @@ -120,24 +120,24 @@ module LibraTest { total_value: u128, /// Value of funds that are in the process of being burned. Mutable. preburn_value: u64, - /// The (rough) exchange rate from `CoinType` to `LBR`. Mutable. - to_lbr_exchange_rate: FixedPoint32, + /// The (rough) exchange rate from `CoinType` to `XDX`. Mutable. + to_xdx_exchange_rate: FixedPoint32, /// Holds whether or not this currency is synthetic (contributes to the /// off-chain reserve) or not. An example of such a synthetic - ///currency would be the LBR. + ///currency would be the XDX. is_synthetic: bool, /// The scaling factor for the coin (i.e. the amount to multiply by /// to get to the human-readable representation for this currency). - /// e.g. 10^6 for `Coin1` + /// e.g. 10^6 for `XUS` /// /// > TODO(wrwg): should the above be "to divide by"? scaling_factor: u64, /// The smallest fractional part (number of decimal places) to be /// used in the human-readable representation for the currency (e.g. - /// 10^2 for `Coin1` cents) + /// 10^2 for `XUS` cents) fractional_part: u64, /// The code symbol for this `CoinType`. ASCII encoded. - /// e.g. for "LBR" this is x"4C4252". No character limit. + /// e.g. for "XDX" this is x"4C4252". No character limit. currency_code: vector, /// We may want to disable the ability to mint further coins of a /// currency while that currency is still around. This allows us to @@ -155,7 +155,7 @@ module LibraTest { /// `CoinType`. cancel_burn_events: EventHandle, /// Event stream for emiting exchange rate change events - exchange_rate_update_events: EventHandle, + exchange_rate_update_events: EventHandle, } // TODO (dd): It would be great to be able to prove this, but requires more work. @@ -174,7 +174,7 @@ module LibraTest { resource struct Preburn { /// A single pending burn amount. /// There is no pending burn request if the value in to_burn is 0 - to_burn: Libra, + to_burn: Diem, } const ENOT_GENESIS: u64 = 0; @@ -186,7 +186,7 @@ module LibraTest { const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6; const ENOT_A_REGISTERED_CURRENCY: u64 = 7; const ENOT_AN_SCS_CURRENCY: u64 = 8; - const EDOES_NOT_HAVE_LIBRA_ROOT_ROLE: u64 = 9; + const EDOES_NOT_HAVE_DIEM_ROOT_ROLE: u64 = 9; const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10; /////////////////////////////////////////////////////////////////////////// @@ -200,17 +200,17 @@ module LibraTest { // public fun grant_privileges(account: &signer) { // } - /// Initialization of the `Libra` module; initializes the set of + /// Initialization of the `Diem` module; initializes the set of /// registered currencies in the `0x1::RegisteredCurrencies` on-chain /// config, and publishes the `CurrencyRegistrationCapability` under the - /// `CoreAddresses::LIBRA_ROOT_ADDRESS()`. This can only be called from genesis. + /// `CoreAddresses::DIEM_ROOT_ADDRESS()`. This can only be called from genesis. public fun initialize( config_account: &signer, ) { - assert(LibraTimestamp::is_genesis(), ENOT_GENESIS); + assert(DiemTimestamp::is_genesis(), ENOT_GENESIS); // Operational constraint assert( - Signer::address_of(config_account) == CoreAddresses::LIBRA_ROOT_ADDRESS(), + Signer::address_of(config_account) == CoreAddresses::DIEM_ROOT_ADDRESS(), EINVALID_SINGLETON_ADDRESS ); RegisteredCurrencies::initialize(config_account); @@ -233,7 +233,7 @@ module LibraTest { /// Mints `amount` coins. The `account` must hold a /// `MintCapability` at the top-level in order for this call /// to be successful, and will fail with `MISSING_DATA` otherwise. - public fun mint(account: &signer, value: u64): Libra + public fun mint(account: &signer, value: u64): Diem acquires CurrencyInfo, MintCapability { mint_with_capability( value, @@ -272,21 +272,21 @@ module LibraTest { public fun cancel_burn( account: &signer, preburn_address: address - ): Libra acquires BurnCapability, CurrencyInfo, Preburn { + ): Diem acquires BurnCapability, CurrencyInfo, Preburn { cancel_burn_with_capability( preburn_address, borrow_global>(Signer::address_of(account)) ) } - /// Mint a new `Libra` coin of `CoinType` currency worth `value`. The + /// Mint a new `Diem` coin of `CoinType` currency worth `value`. The /// caller must have a reference to a `MintCapability`. Only - /// the treasury compliance account or the `0x1::LBR` module can acquire such a + /// the treasury compliance account or the `0x1::XDX` module can acquire such a /// reference. public fun mint_with_capability( value: u64, _capability: &MintCapability - ): Libra acquires CurrencyInfo { + ): Diem acquires CurrencyInfo { assert_is_currency(); let currency_code = currency_code(); // update market cap resource to reflect minting @@ -304,7 +304,7 @@ module LibraTest { ); }; - Libra { value } + Diem { value } } spec fun mint_with_capability { include MintAbortsIf; @@ -318,7 +318,7 @@ module LibraTest { } spec schema MintEnsures { value: u64; - result: Libra; + result: Diem; ensures spec_currency_info().total_value == old(spec_currency_info().total_value) + value; ensures result.value == value; @@ -331,7 +331,7 @@ module LibraTest { /// `CoinType` passed in. However, if the currency being preburned is /// `synthetic` then no `PreburnEvent` event will be emitted. public fun preburn_with_resource( - coin: Libra, + coin: Diem, preburn: &mut Preburn, preburn_address: address, ) acquires CurrencyInfo { @@ -362,13 +362,13 @@ module LibraTest { include PreburnEnsures; } spec schema PreburnAbortsIf { - coin: Libra; + coin: Diem; aborts_if !spec_is_currency(); aborts_if spec_currency_info().preburn_value + coin.value > max_u64(); } // TODO change - Move prover spec schema PreburnEnsures { - coin: Libra; + coin: Diem; preburn: Preburn; // ensures Vector::eq_push_back(preburn.requests, old(preburn.requests), coin); ensures spec_currency_info().preburn_value @@ -409,7 +409,7 @@ module LibraTest { /// Calls to this function will fail if `account` does not have a /// `Preburn` resource published under it. public fun preburn_to( - account: &signer, coin: Libra) acquires CurrencyInfo, Preburn { + account: &signer, coin: Diem) acquires CurrencyInfo, Preburn { let sender = Signer::address_of(account); preburn_with_resource(coin, borrow_global_mut>(sender), sender); } @@ -459,7 +459,7 @@ module LibraTest { // Abort if no coin present in preburn area assert(preburn.to_burn.value > 0, 7); // destroy the coin in Preburn area - let Libra { value } = withdraw_all(&mut preburn.to_burn); + let Diem { value } = withdraw_all(&mut preburn.to_burn); // update the market cap let info = borrow_global_mut>(CoreAddresses::CURRENCY_INFO_ADDRESS()); info.total_value = info.total_value - (value as u128); @@ -507,7 +507,7 @@ module LibraTest { public fun cancel_burn_with_capability( preburn_address: address, _capability: &BurnCapability - ): Libra acquires CurrencyInfo, Preburn { + ): Diem acquires CurrencyInfo, Preburn { // destroy the coin in the preburn area let preburn = borrow_global_mut>(preburn_address); let coin = withdraw_all(&mut preburn.to_burn); @@ -540,7 +540,7 @@ module LibraTest { move_from>(Signer::address_of(account)) } - /// Returns the total value of `Libra` that is waiting to be + /// Returns the total value of `Diem` that is waiting to be /// burned throughout the system (i.e. the sum of all outstanding /// preburn requests across all preburn resources for the `CoinType` /// currency). @@ -548,24 +548,24 @@ module LibraTest { borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value } - /// Create a new `Libra` with a value of `0`. Anyone can call + /// Create a new `Diem` with a value of `0`. Anyone can call /// this and it will be successful as long as `CoinType` is a registered currency. - public fun zero(): Libra { + public fun zero(): Diem { assert_is_currency(); - Libra { value: 0 } + Diem { value: 0 } } /// Returns the `value` of the passed in `coin`. The value is /// represented in the base units for the currency represented by /// `CoinType`. - public fun value(coin: &Libra): u64 { + public fun value(coin: &Diem): u64 { coin.value } /// Removes `amount` of value from the passed in `coin`. Returns the /// remaining balance of the passed in `coin`, along with another coin - /// with value equal to `amount`. Calls will fail if `amount > Libra::value(&coin)`. - public fun split(coin: Libra, amount: u64): (Libra, Libra) { + /// with value equal to `amount`. Calls will fail if `amount > Diem::value(&coin)`. + public fun split(coin: Diem, amount: u64): (Diem, Diem) { let other = withdraw(&mut coin, amount); (coin, other) } @@ -581,11 +581,11 @@ module LibraTest { /// `value = original_value - amount`, and the new coin will have a `value = amount`. /// Calls will abort if the passed-in `amount` is greater than the /// value of the passed-in `coin`. - public fun withdraw(coin: &mut Libra, amount: u64): Libra { + public fun withdraw(coin: &mut Diem, amount: u64): Diem { // Check that `amount` is less than the coin's value assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE); coin.value = coin.value - amount; - Libra { value: amount } + Diem { value: amount } } spec fun withdraw { aborts_if coin.value < amount; @@ -593,9 +593,9 @@ module LibraTest { ensures result.value == amount; } - /// Return a `Libra` worth `coin.value` and reduces the `value` of the input `coin` to + /// Return a `Diem` worth `coin.value` and reduces the `value` of the input `coin` to /// zero. Does not abort. - public fun withdraw_all(coin: &mut Libra): Libra { + public fun withdraw_all(coin: &mut Diem): Diem { let val = coin.value; withdraw(coin, val) } @@ -606,29 +606,29 @@ module LibraTest { } /// and returns a new coin whose value is equal to the sum of the two inputs. - public fun join(coin1_tmp: Libra, coin2: Libra): Libra { - deposit(&mut coin1_tmp, coin2); - coin1_tmp + public fun join(xus: Diem, coin2: Diem): Diem { + deposit(&mut xus, coin2); + xus } spec fun join { - aborts_if coin1_tmp.value + coin2.value > max_u64(); - ensures result.value == coin1_tmp.value + coin2.value; + aborts_if xus.value + coin2.value > max_u64(); + ensures result.value == xus.value + coin2.value; } /// "Merges" the two coins. /// The coin passed in by reference will have a value equal to the sum of the two coins /// The `check` coin is consumed in the process - public fun deposit(coin: &mut Libra, check: Libra) { - let Libra { value } = check; + public fun deposit(coin: &mut Diem, check: Diem) { + let Diem { value } = check; coin.value = coin.value + value; } /// Destroy a zero-value coin. Calls will fail if the `value` in the passed-in `coin` is non-zero - /// so you cannot "burn" any non-zero amount of `Libra` without having + /// so you cannot "burn" any non-zero amount of `Diem` without having /// a `BurnCapability` for the specific `CoinType`. - public fun destroy_zero(coin: Libra) { - let Libra { value } = coin; + public fun destroy_zero(coin: Diem) { + let Diem { value } = coin; assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN) } spec fun destroy_zero { @@ -640,9 +640,9 @@ module LibraTest { /////////////////////////////////////////////////////////////////////////// /// Register the type `CoinType` as a currency. Until the type is - /// registered as a currency it cannot be used as a coin/currency unit in Libra. - /// The passed-in `lr_account` must be a specific address (`CoreAddresses::CURRENCY_INFO_ADDRESS()`) and - /// `lr_account` must also have the correct `RegisterNewCurrency` capability. + /// registered as a currency it cannot be used as a coin/currency unit in Diem. + /// The passed-in `dr_account` must be a specific address (`CoreAddresses::CURRENCY_INFO_ADDRESS()`) and + /// `dr_account` must also have the correct `RegisterNewCurrency` capability. /// After the first registration of `CoinType` as a /// currency, additional attempts to register `CoinType` as a currency /// will abort. @@ -651,60 +651,60 @@ module LibraTest { /// adds the currency to the set of `RegisteredCurrencies`. It returns /// `MintCapability` and `BurnCapability` resources. public fun register_currency( - lr_account: &signer, - to_lbr_exchange_rate: FixedPoint32, + dr_account: &signer, + to_xdx_exchange_rate: FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector, ): (MintCapability, BurnCapability) { - Roles::assert_libra_root(lr_account); + Roles::assert_diem_root(dr_account); // Operational constraint that it must be stored under a specific address. assert( - Signer::address_of(lr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(), + Signer::address_of(dr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(), EINVALID_SINGLETON_ADDRESS ); - move_to(lr_account, CurrencyInfo { + move_to(dr_account, CurrencyInfo { total_value: 0, preburn_value: 0, - to_lbr_exchange_rate, + to_xdx_exchange_rate, is_synthetic, scaling_factor, fractional_part, currency_code: copy currency_code, can_mint: true, - mint_events: Event::new_event_handle(lr_account), - burn_events: Event::new_event_handle(lr_account), - preburn_events: Event::new_event_handle(lr_account), - cancel_burn_events: Event::new_event_handle(lr_account), - exchange_rate_update_events: Event::new_event_handle(lr_account) + mint_events: Event::new_event_handle(dr_account), + burn_events: Event::new_event_handle(dr_account), + preburn_events: Event::new_event_handle(dr_account), + cancel_burn_events: Event::new_event_handle(dr_account), + exchange_rate_update_events: Event::new_event_handle(dr_account) }); RegisteredCurrencies::add_currency_code( - lr_account, + dr_account, currency_code, ); (MintCapability{}, BurnCapability{}) } spec fun register_currency { - aborts_if !Roles::spec_has_libra_root_role_addr(Signer::spec_address_of(lr_account)); - aborts_if Signer::spec_address_of(lr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS(); - aborts_if exists>(Signer::spec_address_of(lr_account)); + aborts_if !Roles::spec_has_diem_root_role_addr(Signer::spec_address_of(dr_account)); + aborts_if Signer::spec_address_of(dr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS(); + aborts_if exists>(Signer::spec_address_of(dr_account)); aborts_if spec_is_currency(); include RegisteredCurrencies::AddCurrencyCodeAbortsIf; } /// Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. /// Resources are published on two distinct - /// accounts: The CoinInfo is published on the Libra root account, and the mint and + /// accounts: The CoinInfo is published on the Diem root account, and the mint and /// burn capabilities are published on a treasury compliance account. /// This code allows different currencies to have different treasury compliance /// accounts. public fun register_SCS_currency( - lr_account: &signer, + dr_account: &signer, tc_account: &signer, - to_lbr_exchange_rate: FixedPoint32, + to_xdx_exchange_rate: FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector, @@ -712,8 +712,8 @@ module LibraTest { Roles::assert_treasury_compliance(tc_account); let (mint_cap, burn_cap) = register_currency( - lr_account, - to_lbr_exchange_rate, + dr_account, + to_xdx_exchange_rate, false, // is_synthetic scaling_factor, fractional_part, @@ -737,22 +737,22 @@ module LibraTest { borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value } - /// Returns the value of the coin in the `FromCoinType` currency in LBR. + /// Returns the value of the coin in the `FromCoinType` currency in XDX. /// This should only be used where a _rough_ approximation of the exchange /// rate is needed. - public fun approx_lbr_for_value(from_value: u64): u64 + public fun approx_xdx_for_value(from_value: u64): u64 acquires CurrencyInfo { - let lbr_exchange_rate = lbr_exchange_rate(); - FixedPoint32::multiply_u64(from_value, lbr_exchange_rate) + let xdx_exchange_rate = xdx_exchange_rate(); + FixedPoint32::multiply_u64(from_value, xdx_exchange_rate) } - /// Returns the value of the coin in the `FromCoinType` currency in LBR. + /// Returns the value of the coin in the `FromCoinType` currency in XDX. /// This should only be used where a rough approximation of the exchange /// rate is needed. - public fun approx_lbr_for_coin(coin: &Libra): u64 + public fun approx_xdx_for_coin(coin: &Diem): u64 acquires CurrencyInfo { let from_value = value(coin); - approx_lbr_for_value(from_value) + approx_xdx_for_value(from_value) } /// Returns `true` if the type `CoinType` is a registered currency. @@ -797,30 +797,30 @@ module LibraTest { *&borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code } - /// Updates the `to_lbr_exchange_rate` held in the `CurrencyInfo` for - /// `FromCoinType` to the new passed-in `lbr_exchange_rate`. - public fun update_lbr_exchange_rate( + /// Updates the `to_xdx_exchange_rate` held in the `CurrencyInfo` for + /// `FromCoinType` to the new passed-in `xdx_exchange_rate`. + public fun update_xdx_exchange_rate( tr_account: &signer, - lbr_exchange_rate: FixedPoint32 + xdx_exchange_rate: FixedPoint32 ) acquires CurrencyInfo { assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE); assert_is_currency(); let currency_info = borrow_global_mut>(CoreAddresses::CURRENCY_INFO_ADDRESS()); - currency_info.to_lbr_exchange_rate = lbr_exchange_rate; + currency_info.to_xdx_exchange_rate = xdx_exchange_rate; Event::emit_event( &mut currency_info.exchange_rate_update_events, - ToLBRExchangeRateUpdateEvent { + ToXDXExchangeRateUpdateEvent { currency_code: *¤cy_info.currency_code, - new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate), + new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate), } ); } - /// Returns the (rough) exchange rate between `CoinType` and `LBR` - public fun lbr_exchange_rate(): FixedPoint32 + /// Returns the (rough) exchange rate between `CoinType` and `XDX` + public fun xdx_exchange_rate(): FixedPoint32 acquires CurrencyInfo { - *&borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate + *&borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate } /// There may be situations in which we disallow the further minting of @@ -878,11 +878,11 @@ module LibraTest { global>(CoreAddresses::CURRENCY_INFO_ADDRESS()) } - /// Specification version of `Self::approx_lbr_for_value`. - define spec_approx_lbr_for_value(value: num): num { + /// Specification version of `Self::approx_xdx_for_value`. + define spec_approx_xdx_for_value(value: num): num { FixedPoint32::spec_multiply_u64( value, - global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate + global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate ) } @@ -947,8 +947,8 @@ module LibraTest { global sum_of_coin_values: num; } - /// Account for updating `sum_of_coin_values` when a `Libra` is packed or unpacked. - spec struct Libra { + /// Account for updating `sum_of_coin_values` when a `Diem` is packed or unpacked. + spec struct Diem { invariant pack sum_of_coin_values = sum_of_coin_values + value; invariant unpack sum_of_coin_values = sum_of_coin_values - value; } diff --git a/language/move-prover/docgen/tests/sources/DiemTest.spec_inline.md b/language/move-prover/docgen/tests/sources/DiemTest.spec_inline.md new file mode 100644 index 0000000000..37f1e7dc98 --- /dev/null +++ b/language/move-prover/docgen/tests/sources/DiemTest.spec_inline.md @@ -0,0 +1,2409 @@ + + + +# Module `0x1::DiemTest` + +The Diem module describes the concept of a coin in the Diem framework. It introduces the +resource Diem::Diem<CoinType>, representing a coin of given coin type. +The module defines functions operating on coins as well as functionality like +minting and burning of coins. + + +- [Resource `RegisterNewCurrency`](#0x1_DiemTest_RegisterNewCurrency) +- [Resource `Diem`](#0x1_DiemTest_Diem) +- [Resource `MintCapability`](#0x1_DiemTest_MintCapability) +- [Resource `BurnCapability`](#0x1_DiemTest_BurnCapability) +- [Struct `MintEvent`](#0x1_DiemTest_MintEvent) +- [Struct `BurnEvent`](#0x1_DiemTest_BurnEvent) +- [Struct `PreburnEvent`](#0x1_DiemTest_PreburnEvent) +- [Struct `CancelBurnEvent`](#0x1_DiemTest_CancelBurnEvent) +- [Struct `ToXDXExchangeRateUpdateEvent`](#0x1_DiemTest_ToXDXExchangeRateUpdateEvent) +- [Resource `CurrencyInfo`](#0x1_DiemTest_CurrencyInfo) +- [Resource `Preburn`](#0x1_DiemTest_Preburn) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemTest_initialize) +- [Function `publish_burn_capability`](#0x1_DiemTest_publish_burn_capability) +- [Function `mint`](#0x1_DiemTest_mint) +- [Function `burn`](#0x1_DiemTest_burn) +- [Function `cancel_burn`](#0x1_DiemTest_cancel_burn) +- [Function `mint_with_capability`](#0x1_DiemTest_mint_with_capability) +- [Function `preburn_with_resource`](#0x1_DiemTest_preburn_with_resource) +- [Function `create_preburn`](#0x1_DiemTest_create_preburn) +- [Function `publish_preburn_to_account`](#0x1_DiemTest_publish_preburn_to_account) +- [Function `preburn_to`](#0x1_DiemTest_preburn_to) +- [Function `burn_with_capability`](#0x1_DiemTest_burn_with_capability) +- [Function `burn_with_resource_cap`](#0x1_DiemTest_burn_with_resource_cap) +- [Function `cancel_burn_with_capability`](#0x1_DiemTest_cancel_burn_with_capability) +- [Function `remove_burn_capability`](#0x1_DiemTest_remove_burn_capability) +- [Function `preburn_value`](#0x1_DiemTest_preburn_value) +- [Function `zero`](#0x1_DiemTest_zero) +- [Function `value`](#0x1_DiemTest_value) +- [Function `split`](#0x1_DiemTest_split) +- [Function `withdraw`](#0x1_DiemTest_withdraw) +- [Function `withdraw_all`](#0x1_DiemTest_withdraw_all) +- [Function `join`](#0x1_DiemTest_join) +- [Function `deposit`](#0x1_DiemTest_deposit) +- [Function `destroy_zero`](#0x1_DiemTest_destroy_zero) +- [Function `register_currency`](#0x1_DiemTest_register_currency) +- [Function `register_SCS_currency`](#0x1_DiemTest_register_SCS_currency) +- [Function `market_cap`](#0x1_DiemTest_market_cap) +- [Function `approx_xdx_for_value`](#0x1_DiemTest_approx_xdx_for_value) +- [Function `approx_xdx_for_coin`](#0x1_DiemTest_approx_xdx_for_coin) +- [Function `is_currency`](#0x1_DiemTest_is_currency) +- [Function `is_SCS_currency`](#0x1_DiemTest_is_SCS_currency) +- [Function `is_synthetic_currency`](#0x1_DiemTest_is_synthetic_currency) +- [Function `scaling_factor`](#0x1_DiemTest_scaling_factor) +- [Function `fractional_part`](#0x1_DiemTest_fractional_part) +- [Function `currency_code`](#0x1_DiemTest_currency_code) +- [Function `update_xdx_exchange_rate`](#0x1_DiemTest_update_xdx_exchange_rate) +- [Function `xdx_exchange_rate`](#0x1_DiemTest_xdx_exchange_rate) +- [Function `update_minting_ability`](#0x1_DiemTest_update_minting_ability) +- [Function `assert_is_currency`](#0x1_DiemTest_assert_is_currency) +- [Function `assert_is_SCS_currency`](#0x1_DiemTest_assert_is_SCS_currency) +- [Module Specification](#@Module_Specification_1) + - [Module Specification](#@Module_Specification_2) + - [Minting](#@Minting_3) + - [Conservation of currency](#@Conservation_of_currency_4) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
+use 0x1::Event;
+use 0x1::FixedPoint32;
+use 0x1::RegisteredCurrencies;
+use 0x1::Roles;
+use 0x1::Signer;
+
+ + + + + +## Resource `RegisterNewCurrency` + + + +
resource struct RegisterNewCurrency
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `Diem` + +The Diem resource defines the Diem coin for each currency in +Diem. Each "coin" is coupled with a type CoinType specifying the +currency of the coin, and a value field specifying the value +of the coin (in the base units of the currency CoinType +and specified in the CurrencyInfo resource for that CoinType +published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). + + +
resource struct Diem<CoinType>
+
+ + + +
+Fields + + +
+
+value: u64 +
+
+ The value of this coin in the base units for CoinType +
+
+ + +
+ +
+Specification + +Account for updating sum_of_coin_values when a Diem is packed or unpacked. + + +
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
+invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
+
+ + + +
+ + + +## Resource `MintCapability` + +The MintCapability resource defines a capability to allow minting +of coins of CoinType currency by the holder of this capability. +This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() +account or the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct MintCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `BurnCapability` + +The BurnCapability resource defines a capability to allow coins +of CoinType currency to be burned by the holder of the +and the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct BurnCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Struct `MintEvent` + +The CurrencyRegistrationCapability is a singleton resource +published under the CoreAddresses::DIEM_ROOT_ADDRESS() and grants +the capability to the 0x1::Diem module to add currencies to the +0x1::RegisteredCurrencies on-chain config. +A MintEvent is emitted every time a Diem coin is minted. This +contains the amount minted (in base units of the currency being +minted) along with the currency_code for the coin(s) being +minted, and that is defined in the currency_code field of the +CurrencyInfo resource for the currency. + + +
struct MintEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds added to the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+ + +
+ + + +## Struct `BurnEvent` + +A BurnEvent is emitted every time a non-synthetic[1] Diem coin is +burned. It contains the amount burned in base units for the +currency, along with the currency_code for the coins being burned +(and as defined in the CurrencyInfo resource for that currency). +It also contains the preburn_address from which the coin is +extracted for burning. +[1] As defined by the is_synthetic field in the CurrencyInfo +for that currency. + + +
struct BurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds removed from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that stored the now-burned funds +
+
+ + +
+ + + +## Struct `PreburnEvent` + +A PreburnEvent is emitted every time an amount of funds with +a coin type currency_code are moved to a Preburn resource under +the account at the address preburn_address. + + +
struct PreburnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds waiting to be removed (burned) from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that now holds the funds +
+
+ + +
+ + + +## Struct `CancelBurnEvent` + +A CancelBurnEvent is emitted every time funds of amount in a Preburn +resource at preburn_address is canceled (removed from the +preburn, but not burned). The currency of the funds is given by the +currency_code as defined in the CurrencyInfo for that currency. + + +
struct CancelBurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds returned +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address of the Preburn resource that held the now-returned funds. +
+
+ + +
+ + + +## Struct `ToXDXExchangeRateUpdateEvent` + +An ToXDXExchangeRateUpdateEvent is emitted every time the to-XDX exchange +rate for the currency given by currency_code is updated. + + +
struct ToXDXExchangeRateUpdateEvent
+
+ + + +
+Fields + + +
+
+currency_code: vector<u8> +
+
+ The currency code of the currency whose exchange rate was updated. +
+
+new_to_xdx_exchange_rate: u64 +
+
+ The new on-chain to-XDX exchange rate between the + currency_code currency and XDX. Represented in conversion + between the (on-chain) base-units for the currency and microdiem. +
+
+ + +
+ + + +## Resource `CurrencyInfo` + +The CurrencyInfo<CoinType> resource stores the various +pieces of information needed for a currency (CoinType) that is +registered on-chain. This resource _must_ be published under the +address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of +CoinType as a recognized currency on-chain to be successful. At +the time of registration the MintCapability<CoinType> and +BurnCapability<CoinType> capabilities are returned to the caller. +Unless they are specified otherwise the fields in this resource are immutable. + + +
resource struct CurrencyInfo<CoinType>
+
+ + + +
+Fields + + +
+
+total_value: u128 +
+
+ The total value for the currency represented by CoinType. Mutable. +
+
+preburn_value: u64 +
+
+ Value of funds that are in the process of being burned. Mutable. +
+
+to_xdx_exchange_rate: FixedPoint32::FixedPoint32 +
+
+ The (rough) exchange rate from CoinType to XDX. Mutable. +
+
+is_synthetic: bool +
+
+ Holds whether or not this currency is synthetic (contributes to the + off-chain reserve) or not. An example of such a synthetic +currency would be the XDX. +
+
+scaling_factor: u64 +
+
+ The scaling factor for the coin (i.e. the amount to multiply by + to get to the human-readable representation for this currency). + e.g. 10^6 for XUS + + > TODO(wrwg): should the above be "to divide by"? +
+
+fractional_part: u64 +
+
+ The smallest fractional part (number of decimal places) to be + used in the human-readable representation for the currency (e.g. + 10^2 for XUS cents) +
+
+currency_code: vector<u8> +
+
+ The code symbol for this CoinType. ASCII encoded. + e.g. for "XDX" this is x"4C4252". No character limit. +
+
+can_mint: bool +
+
+ We may want to disable the ability to mint further coins of a + currency while that currency is still around. This allows us to + keep the currency in circulation while disallowing further + creation of coins in the CoinType currency. Mutable. +
+
+mint_events: Event::EventHandle<DiemTest::MintEvent> +
+
+ Event stream for minting and where MintEvents will be emitted. +
+
+burn_events: Event::EventHandle<DiemTest::BurnEvent> +
+
+ Event stream for burning, and where BurnEvents will be emitted. +
+
+preburn_events: Event::EventHandle<DiemTest::PreburnEvent> +
+
+ Event stream for preburn requests, and where all + PreburnEvents for this CoinType will be emitted. +
+
+cancel_burn_events: Event::EventHandle<DiemTest::CancelBurnEvent> +
+
+ Event stream for all cancelled preburn requests for this + CoinType. +
+
+exchange_rate_update_events: Event::EventHandle<DiemTest::ToXDXExchangeRateUpdateEvent> +
+
+ Event stream for emiting exchange rate change events +
+
+ + +
+ + + +## Resource `Preburn` + +A holding area where funds that will subsequently be burned wait while their underlying +assets are moved off-chain. +This resource can only be created by the holder of a BurnCapability. An account that +contains this address has the authority to initiate a burn request. A burn request can be +resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) +returning the funds to the account that initiated the burn request. +Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. + + +
resource struct Preburn<CoinType>
+
+ + + +
+Fields + + +
+
+to_burn: DiemTest::Diem<CoinType> +
+
+ A single pending burn amount. + There is no pending burn request if the value in to_burn is 0 +
+
+ + +
+ + + +## Constants + + + + + + +
const ENOT_GENESIS: u64 = 0;
+
+ + + + + + + +
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
+
+ + + + + + + +
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
+
+ + + + + + + +
const EDOES_NOT_HAVE_DIEM_ROOT_ROLE: u64 = 9;
+
+ + + + + + + +
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
+
+ + + + + + + +
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
+
+ + + + + + + +
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
+
+ + + + + + + +
const EMINTING_NOT_ALLOWED: u64 = 3;
+
+ + + + + + + +
const ENOT_AN_SCS_CURRENCY: u64 = 8;
+
+ + + + + + + +
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
+
+ + + + + + + +
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
+
+ + + + + +## Function `initialize` + +Grants the RegisterNewCurrency privilege to +the calling account as long as it has the correct role (TC). +Aborts if account does not have a RoleId that corresponds with +the treacury compliance role. +Initialization of the Diem module; initializes the set of +registered currencies in the 0x1::RegisteredCurrencies on-chain +config, and publishes the CurrencyRegistrationCapability under the +CoreAddresses::DIEM_ROOT_ADDRESS(). This can only be called from genesis. + + +
public fun initialize(config_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    config_account: &signer,
+) {
+    assert(DiemTimestamp::is_genesis(), ENOT_GENESIS);
+    // Operational constraint
+    assert(
+        Signer::address_of(config_account) == CoreAddresses::DIEM_ROOT_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+    RegisteredCurrencies::initialize(config_account);
+}
+
+ + + +
+ + + +## Function `publish_burn_capability` + +Publishes the BurnCapability cap for the CoinType currency under account. CoinType +must be a registered currency type. +The caller must pass a TreasuryComplianceRole capability. +TODO (dd): I think there is a multiple signer problem here. + + +
public fun publish_burn_capability<CoinType>(account: &signer, cap: DiemTest::BurnCapability<CoinType>, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun publish_burn_capability<CoinType>(
+    account: &signer,
+    cap: BurnCapability<CoinType>,
+    tc_account: &signer,
+) {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    move_to(account, cap)
+}
+
+ + + +
+ + + +## Function `mint` + +Mints amount coins. The account must hold a +MintCapability<CoinType> at the top-level in order for this call +to be successful, and will fail with MISSING_DATA otherwise. + + +
public fun mint<CoinType>(account: &signer, value: u64): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint<CoinType>(account: &signer, value: u64): Diem<CoinType>
+acquires CurrencyInfo, MintCapability {
+    mint_with_capability(
+        value,
+        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
+include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + +
+ + + +## Function `burn` + +Burns the coins currently held in the Preburn resource held under preburn_address. +Calls to this functions will fail if the account does not have a +published BurnCapability for the CoinType published under it. + + +
public fun burn<CoinType>(account: &signer, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+) acquires BurnCapability, CurrencyInfo, Preburn {
+    burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ +
+Specification + + + +
pragma verify=false;
+aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
+
+ + + +
+ + + +## Function `cancel_burn` + +Cancels the current burn request in the Preburn resource held +under the preburn_address, and returns the coins. +Calls to this will fail if the sender does not have a published +BurnCapability<CoinType>, or if there is no preburn request +outstanding in the Preburn resource under preburn_address. + + +
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+): Diem<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
+    cancel_burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ + + +## Function `mint_with_capability` + +Mint a new Diem coin of CoinType currency worth value. The +caller must have a reference to a MintCapability<CoinType>. Only +the treasury compliance account or the 0x1::XDX module can acquire such a +reference. + + +
public fun mint_with_capability<CoinType>(value: u64, _capability: &DiemTest::MintCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint_with_capability<CoinType>(
+    value: u64,
+    _capability: &MintCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    let currency_code = currency_code<CoinType>();
+    // update market cap resource to reflect minting
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(info.can_mint, EMINTING_NOT_ALLOWED);
+    info.total_value = info.total_value + (value as u128);
+    // don't emit mint events for synthetic currenices
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.mint_events,
+            MintEvent{
+                amount: value,
+                currency_code,
+            }
+        );
+    };
+
+    Diem<CoinType> { value }
+}
+
+ + + +
+ +
+Specification + + + +
include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + + + +
schema MintAbortsIf<CoinType> {
+    value: u64;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if !spec_currency_info<CoinType>().can_mint;
+    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
+}
+
+ + + + + + + +
schema MintEnsures<CoinType> {
+    value: u64;
+    result: Diem<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+                == old(spec_currency_info<CoinType>().total_value) + value;
+    ensures result.value == value;
+}
+
+ + + +
+ + + +## Function `preburn_with_resource` + +Add the coin to the preburn to_burn field in the Preburn resource +held at the address preburn_address if it is empty, otherwise raise +a PendingPreburn Error (code 6). Emits a PreburnEvent to +the preburn_events event stream in the CurrencyInfo for the +CoinType passed in. However, if the currency being preburned is +synthetic then no PreburnEvent event will be emitted. + + +
public fun preburn_with_resource<CoinType>(coin: DiemTest::Diem<CoinType>, preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun preburn_with_resource<CoinType>(
+    coin: Diem<CoinType>,
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+) acquires CurrencyInfo {
+    let coin_value = value(&coin);
+    // Throw if already occupied
+    assert(value(&preburn.to_burn) == 0, 6);
+    deposit(&mut preburn.to_burn, coin);
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.preburn_value = info.preburn_value + coin_value;
+    // don't emit preburn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.preburn_events,
+            PreburnEvent{
+                amount: coin_value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ +
+Specification + + + +
pragma aborts_if_is_partial = true;
+include PreburnAbortsIf<CoinType>;
+aborts_if preburn.to_burn.value != 0;
+include PreburnEnsures<CoinType>;
+
+ + + + + + + +
schema PreburnAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
+}
+
+ + + + + + + +
schema PreburnEnsures<CoinType> {
+    coin: Diem<CoinType>;
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().preburn_value
+                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
+}
+
+ + + +
+ + + +## Function `create_preburn` + +Create a Preburn<CoinType> resource + + +
public fun create_preburn<CoinType>(tc_account: &signer): DiemTest::Preburn<CoinType>
+
+ + + +
+Implementation + + +
public fun create_preburn<CoinType>(
+    tc_account: &signer
+): Preburn<CoinType> {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
+    // I don't think it can happen, but that may be difficult to prove.
+    Preburn<CoinType> { to_burn: zero<CoinType>() }
+}
+
+ + + +
+ + + +## Function `publish_preburn_to_account` + +Publishes a Preburn resource under account. This function is +used for bootstrapping the designated dealer at account-creation +time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating +this resource for the designated dealer. + + +
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun publish_preburn_to_account<CoinType>(
+    account: &signer,
+    tc_account: &signer
+) acquires CurrencyInfo {
+    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
+    move_to(account, create_preburn<CoinType>(tc_account))
+}
+
+ + + +
+ + + +## Function `preburn_to` + +Sends coin to the preburn queue for account, where it will wait to either be burned +or returned to the balance of account. +Calls to this function will fail if account does not have a +Preburn<CoinType> resource published under it. + + +
public fun preburn_to<CoinType>(account: &signer, coin: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun preburn_to<CoinType>(
+    account: &signer, coin: Diem<CoinType>) acquires CurrencyInfo, Preburn {
+    let sender = Signer::address_of(account);
+    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
+}
+
+ + + +
+ +
+Specification + + + +
pragma aborts_if_is_partial = true;
+aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
+include PreburnAbortsIf<CoinType>;
+include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
+
+ + + +
+ + + +## Function `burn_with_capability` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_with_capability<CoinType>(
+    preburn_address: address,
+    capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn to_burn area
+    burn_with_resource_cap(
+        borrow_global_mut<Preburn<CoinType>>(preburn_address),
+        preburn_address,
+        capability
+    )
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if !exists<Preburn<CoinType>>(preburn_address);
+include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+
+ + + +
+ + + +## Function `burn_with_resource_cap` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_resource_cap<CoinType>(preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_with_resource_cap<CoinType>(
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo {
+    let currency_code = currency_code<CoinType>();
+    // Abort if no coin present in preburn area
+    assert(preburn.to_burn.value > 0, 7);
+    // destroy the coin in Preburn area
+    let Diem { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.total_value = info.total_value - (value as u128);
+    info.preburn_value = info.preburn_value - value;
+    // don't emit burn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.burn_events,
+            BurnEvent {
+                amount: value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ +
+Specification + + + +
include BurnAbortsIf<CoinType>;
+include BurnEnsures<CoinType>;
+
+ + + + + + + +
schema BurnAbortsIf<CoinType> {
+    preburn: Preburn<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if preburn.to_burn.value == 0;
+    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
+    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
+}
+
+ + + + + + + +
schema BurnEnsures<CoinType> {
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
+    ensures spec_currency_info<CoinType>().preburn_value
+            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
+}
+
+ + + +
+ + + +## Function `cancel_burn_with_capability` + +Cancels the burn request in the Preburn resource stored at preburn_address and +return the coins to the caller. +This function can only be called by the holder of a +BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource +at preburn_address does not contain a pending burn request. + + +
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn_with_capability<CoinType>(
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn area
+    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
+    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    let amount = value(&coin);
+    info.preburn_value = info.preburn_value - amount;
+    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
+    // for synthetics in the first place
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.cancel_burn_events,
+            CancelBurnEvent {
+                amount,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+
+    coin
+}
+
+ + + +
+ + + +## Function `remove_burn_capability` + +Removes and returns the BurnCapability<CoinType> from account. +Calls to this function will fail if account does not have a +published BurnCapability<CoinType> resource at the top-level. + + +
public fun remove_burn_capability<CoinType>(account: &signer): DiemTest::BurnCapability<CoinType>
+
+ + + +
+Implementation + + +
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
+acquires BurnCapability {
+    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
+}
+
+ + + +
+ + + +## Function `preburn_value` + +Returns the total value of Diem<CoinType> that is waiting to be +burned throughout the system (i.e. the sum of all outstanding +preburn requests across all preburn resources for the CoinType +currency). + + +
public fun preburn_value<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
+}
+
+ + + +
+ + + +## Function `zero` + +Create a new Diem<CoinType> with a value of 0. Anyone can call +this and it will be successful as long as CoinType is a registered currency. + + +
public fun zero<CoinType>(): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun zero<CoinType>(): Diem<CoinType> {
+    assert_is_currency<CoinType>();
+    Diem<CoinType> { value: 0 }
+}
+
+ + + +
+ + + +## Function `value` + +Returns the value of the passed in coin. The value is +represented in the base units for the currency represented by +CoinType. + + +
public fun value<CoinType>(coin: &DiemTest::Diem<CoinType>): u64
+
+ + + +
+Implementation + + +
public fun value<CoinType>(coin: &Diem<CoinType>): u64 {
+    coin.value
+}
+
+ + + +
+ + + +## Function `split` + +Removes amount of value from the passed in coin. Returns the +remaining balance of the passed in coin, along with another coin +with value equal to amount. Calls will fail if amount > Diem::value(&coin). + + +
public fun split<CoinType>(coin: DiemTest::Diem<CoinType>, amount: u64): (DiemTest::Diem<CoinType>, DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun split<CoinType>(coin: Diem<CoinType>, amount: u64): (Diem<CoinType>, Diem<CoinType>) {
+    let other = withdraw(&mut coin, amount);
+    (coin, other)
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if coin.value < amount;
+ensures result_1.value == coin.value - amount;
+ensures result_2.value == amount;
+
+ + + +
+ + + +## Function `withdraw` + +Withdraw amount from the passed-in coin, where the original coin is modified in place. +After this function is executed, the original coin will have +value = original_value - amount, and the new coin will have a value = amount. +Calls will abort if the passed-in amount is greater than the +value of the passed-in coin. + + +
public fun withdraw<CoinType>(coin: &mut DiemTest::Diem<CoinType>, amount: u64): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw<CoinType>(coin: &mut Diem<CoinType>, amount: u64): Diem<CoinType> {
+    // Check that `amount` is less than the coin's value
+    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
+    coin.value = coin.value - amount;
+    Diem { value: amount }
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if coin.value < amount;
+ensures coin.value == old(coin.value) - amount;
+ensures result.value == amount;
+
+ + + +
+ + + +## Function `withdraw_all` + +Return a Diem<CoinType> worth coin.value and reduces the value of the input coin to +zero. Does not abort. + + +
public fun withdraw_all<CoinType>(coin: &mut DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw_all<CoinType>(coin: &mut Diem<CoinType>): Diem<CoinType> {
+    let val = coin.value;
+    withdraw(coin, val)
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if false;
+ensures result.value == old(coin.value);
+ensures coin.value == 0;
+
+ + + +
+ + + +## Function `join` + +and returns a new coin whose value is equal to the sum of the two inputs. + + +
public fun join<CoinType>(xus: DiemTest::Diem<CoinType>, coin2: DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun join<CoinType>(xus: Diem<CoinType>, coin2: Diem<CoinType>): Diem<CoinType>  {
+    deposit(&mut xus, coin2);
+    xus
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if xus.value + coin2.value > max_u64();
+ensures result.value == xus.value + coin2.value;
+
+ + + +
+ + + +## Function `deposit` + +"Merges" the two coins. +The coin passed in by reference will have a value equal to the sum of the two coins +The check coin is consumed in the process + + +
public fun deposit<CoinType>(coin: &mut DiemTest::Diem<CoinType>, check: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun deposit<CoinType>(coin: &mut Diem<CoinType>, check: Diem<CoinType>) {
+    let Diem { value } = check;
+    coin.value = coin.value + value;
+}
+
+ + + +
+ + + +## Function `destroy_zero` + +Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero +so you cannot "burn" any non-zero amount of Diem without having +a BurnCapability for the specific CoinType. + + +
public fun destroy_zero<CoinType>(coin: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun destroy_zero<CoinType>(coin: Diem<CoinType>) {
+    let Diem { value } = coin;
+    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if coin.value > 0;
+
+ + + +
+ + + +## Function `register_currency` + +Register the type CoinType as a currency. Until the type is +registered as a currency it cannot be used as a coin/currency unit in Diem. +The passed-in dr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and +dr_account must also have the correct RegisterNewCurrency capability. +After the first registration of CoinType as a +currency, additional attempts to register CoinType as a currency +will abort. +When the CoinType is registered it publishes the +CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and +adds the currency to the set of RegisteredCurrencies. It returns +MintCapability<CoinType> and BurnCapability<CoinType> resources. + + +
public fun register_currency<CoinType>(dr_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (DiemTest::MintCapability<CoinType>, DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun register_currency<CoinType>(
+    dr_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    is_synthetic: bool,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+): (MintCapability<CoinType>, BurnCapability<CoinType>)
+{
+    Roles::assert_diem_root(dr_account);
+    // Operational constraint that it must be stored under a specific address.
+    assert(
+        Signer::address_of(dr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+
+    move_to(dr_account, CurrencyInfo<CoinType> {
+        total_value: 0,
+        preburn_value: 0,
+        to_xdx_exchange_rate,
+        is_synthetic,
+        scaling_factor,
+        fractional_part,
+        currency_code: copy currency_code,
+        can_mint: true,
+        mint_events: Event::new_event_handle<MintEvent>(dr_account),
+        burn_events: Event::new_event_handle<BurnEvent>(dr_account),
+        preburn_events: Event::new_event_handle<PreburnEvent>(dr_account),
+        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(dr_account),
+        exchange_rate_update_events: Event::new_event_handle<ToXDXExchangeRateUpdateEvent>(dr_account)
+    });
+    RegisteredCurrencies::add_currency_code(
+        dr_account,
+        currency_code,
+    );
+    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if !Roles::spec_has_diem_root_role_addr(Signer::spec_address_of(dr_account));
+aborts_if Signer::spec_address_of(dr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
+aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(dr_account));
+aborts_if spec_is_currency<CoinType>();
+include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
+
+ + + +
+ + + +## Function `register_SCS_currency` + +Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. +Resources are published on two distinct +accounts: The CoinInfo is published on the Diem root account, and the mint and +burn capabilities are published on a treasury compliance account. +This code allows different currencies to have different treasury compliance +accounts. + + +
public fun register_SCS_currency<CoinType>(dr_account: &signer, tc_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
+
+ + + +
+Implementation + + +
public fun register_SCS_currency<CoinType>(
+    dr_account: &signer,
+    tc_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+) {
+    Roles::assert_treasury_compliance(tc_account);
+    let (mint_cap, burn_cap) =
+        register_currency<CoinType>(
+            dr_account,
+            to_xdx_exchange_rate,
+            false,   // is_synthetic
+            scaling_factor,
+            fractional_part,
+            currency_code,
+        );
+    // DD: converted to move_to because of problems proving invariant.
+    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
+    move_to(tc_account, mint_cap);
+    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
+}
+
+ + + +
+ +
+Specification + + + +
pragma aborts_if_is_partial = true;
+ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
+
+ + + +
+ + + +## Function `market_cap` + +Returns the total amount of currency minted of type CoinType. + + +
public fun market_cap<CoinType>(): u128
+
+ + + +
+Implementation + + +
public fun market_cap<CoinType>(): u128
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_value` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a _rough_ approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+acquires CurrencyInfo {
+    let xdx_exchange_rate = xdx_exchange_rate<FromCoinType>();
+    FixedPoint32::multiply_u64(from_value, xdx_exchange_rate)
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_coin` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a rough approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &DiemTest::Diem<FromCoinType>): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &Diem<FromCoinType>): u64
+acquires CurrencyInfo {
+    let from_value = value(coin);
+    approx_xdx_for_value<FromCoinType>(from_value)
+}
+
+ + + +
+ + + +## Function `is_currency` + +Returns true if the type CoinType is a registered currency. +Returns false otherwise. + + +
public fun is_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + + +
+ + + +## Function `is_SCS_currency` + + + +
public fun is_SCS_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
+    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    !info.is_synthetic
+}
+
+ + + +
+ + + +## Function `is_synthetic_currency` + +Returns true if CoinType is a synthetic currency as defined in +its CurrencyInfo. Returns false otherwise. + + +
public fun is_synthetic_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_synthetic_currency<CoinType>(): bool
+acquires CurrencyInfo {
+    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
+    exists<CurrencyInfo<CoinType>>(addr) &&
+        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
+}
+
+ + + +
+ + + +## Function `scaling_factor` + +Returns the scaling factor for the CoinType currency as defined +in its CurrencyInfo. + + +
public fun scaling_factor<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun scaling_factor<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
+}
+
+ + + +
+ + + +## Function `fractional_part` + +Returns the representable (i.e. real-world) fractional part for the +CoinType currency as defined in its CurrencyInfo. + + +
public fun fractional_part<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun fractional_part<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
+}
+
+ + + +
+ + + +## Function `currency_code` + +Returns the currency code for the registered currency as defined in +its CurrencyInfo resource. + + +
public fun currency_code<CoinType>(): vector<u8>
+
+ + + +
+Implementation + + +
public fun currency_code<CoinType>(): vector<u8>
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
+}
+
+ + + +
+ + + +## Function `update_xdx_exchange_rate` + +Updates the to_xdx_exchange_rate held in the CurrencyInfo for +FromCoinType to the new passed-in xdx_exchange_rate. + + +
public fun update_xdx_exchange_rate<FromCoinType>(tr_account: &signer, xdx_exchange_rate: FixedPoint32::FixedPoint32)
+
+ + + +
+Implementation + + +
public fun update_xdx_exchange_rate<FromCoinType>(
+    tr_account: &signer,
+    xdx_exchange_rate: FixedPoint32
+) acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<FromCoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.to_xdx_exchange_rate = xdx_exchange_rate;
+    Event::emit_event(
+        &mut currency_info.exchange_rate_update_events,
+        ToXDXExchangeRateUpdateEvent {
+            currency_code: *¤cy_info.currency_code,
+            new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate),
+        }
+    );
+
+}
+
+ + + +
+ + + +## Function `xdx_exchange_rate` + +Returns the (rough) exchange rate between CoinType and XDX + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
+
+ + + +
+Implementation + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+}
+
+ + + +
+ + + +## Function `update_minting_ability` + +There may be situations in which we disallow the further minting of +coins in the system without removing the currency. This function +allows the association TC account to control whether or not further coins of +CoinType can be minted or not. If this is called with can_mint = +true, then minting is allowed, if can_mint = false then minting is +disallowed until it is turned back on via this function. All coins +start out in the default state of can_mint = true. + + +
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
+
+ + + +
+Implementation + + +
public fun update_minting_ability<CoinType>(
+    tr_account: &signer,
+    can_mint: bool,
+    )
+acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.can_mint = can_mint;
+}
+
+ + + +
+ + + +## Function `assert_is_currency` + +Asserts that CoinType is a registered currency. + + +
fun assert_is_currency<CoinType>()
+
+ + + +
+Implementation + + +
fun assert_is_currency<CoinType>() {
+    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
+}
+
+ + + +
+ + + +## Function `assert_is_SCS_currency` + + + +
fun assert_is_SCS_currency<CoinType>()
+
+ + + +
+Implementation + + +
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
+    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
+}
+
+ + + +
+ + + +## Module Specification + +**************** MODULE SPECIFICATION **************** + + + + +### Module Specification + + +Verify all functions in this module. +> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions +> about coin balance. + + +
pragma verify = true;
+
+ + + +Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. + + + + + +
define spec_is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Returns currency information. + + + + + +
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
+    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Specification version of Self::approx_xdx_for_value. + + + + + +
define spec_approx_xdx_for_value<CoinType>(value: num):  num {
+    FixedPoint32::spec_multiply_u64(
+        value,
+        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+    )
+}
+
+define spec_is_SCS_currency<CoinType>(): bool {
+    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
+}
+
+ + +Checks whether the currency has a mint capability. This is only relevant for +SCS coins + + + + + +
define spec_has_mint_capability<CoinType>(addr1: address): bool {
+    exists<MintCapability<CoinType>>(addr1)
+}
+
+ + + + + +#### Minting + +For an SCS coin, the mint capability cannot move or disappear. +TODO: Specify that they're published at the one true treasurycompliance address? + + + + +If an address has a mint capability, it is an SCS currency. + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type
+                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
+                              spec_is_SCS_currency<coin_type>();
+}
+
+ + +If there is a pending offer for a mint capability, the coin_type is an SCS currency and +there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type :
+                              spec_is_SCS_currency<coin_type>()
+                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
+    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
+        forall addr1: address, addr2: address
+             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
+                  addr1 == addr2;
+    ensures forall coin_type: type:
+        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
+            exists<MintCapability<coin_type>>(addr1);
+}
+
+ + + + +
apply MintCapabilitySpecs to *<T>, *;
+
+ + + + + +#### Conservation of currency + + +Maintain a spec variable representing the sum of +all coins of a currency type. + + + + + +
global sum_of_coin_values<CoinType>: num;
+
diff --git a/language/move-prover/docgen/tests/sources/DiemTest.spec_inline_no_fold.md b/language/move-prover/docgen/tests/sources/DiemTest.spec_inline_no_fold.md new file mode 100644 index 0000000000..edbf58ec3d --- /dev/null +++ b/language/move-prover/docgen/tests/sources/DiemTest.spec_inline_no_fold.md @@ -0,0 +1,2214 @@ + + + +# Module `0x1::DiemTest` + +The Diem module describes the concept of a coin in the Diem framework. It introduces the +resource Diem::Diem<CoinType>, representing a coin of given coin type. +The module defines functions operating on coins as well as functionality like +minting and burning of coins. + + +- [Resource `RegisterNewCurrency`](#0x1_DiemTest_RegisterNewCurrency) +- [Resource `Diem`](#0x1_DiemTest_Diem) +- [Resource `MintCapability`](#0x1_DiemTest_MintCapability) +- [Resource `BurnCapability`](#0x1_DiemTest_BurnCapability) +- [Struct `MintEvent`](#0x1_DiemTest_MintEvent) +- [Struct `BurnEvent`](#0x1_DiemTest_BurnEvent) +- [Struct `PreburnEvent`](#0x1_DiemTest_PreburnEvent) +- [Struct `CancelBurnEvent`](#0x1_DiemTest_CancelBurnEvent) +- [Struct `ToXDXExchangeRateUpdateEvent`](#0x1_DiemTest_ToXDXExchangeRateUpdateEvent) +- [Resource `CurrencyInfo`](#0x1_DiemTest_CurrencyInfo) +- [Resource `Preburn`](#0x1_DiemTest_Preburn) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemTest_initialize) +- [Function `publish_burn_capability`](#0x1_DiemTest_publish_burn_capability) +- [Function `mint`](#0x1_DiemTest_mint) +- [Function `burn`](#0x1_DiemTest_burn) +- [Function `cancel_burn`](#0x1_DiemTest_cancel_burn) +- [Function `mint_with_capability`](#0x1_DiemTest_mint_with_capability) +- [Function `preburn_with_resource`](#0x1_DiemTest_preburn_with_resource) +- [Function `create_preburn`](#0x1_DiemTest_create_preburn) +- [Function `publish_preburn_to_account`](#0x1_DiemTest_publish_preburn_to_account) +- [Function `preburn_to`](#0x1_DiemTest_preburn_to) +- [Function `burn_with_capability`](#0x1_DiemTest_burn_with_capability) +- [Function `burn_with_resource_cap`](#0x1_DiemTest_burn_with_resource_cap) +- [Function `cancel_burn_with_capability`](#0x1_DiemTest_cancel_burn_with_capability) +- [Function `remove_burn_capability`](#0x1_DiemTest_remove_burn_capability) +- [Function `preburn_value`](#0x1_DiemTest_preburn_value) +- [Function `zero`](#0x1_DiemTest_zero) +- [Function `value`](#0x1_DiemTest_value) +- [Function `split`](#0x1_DiemTest_split) +- [Function `withdraw`](#0x1_DiemTest_withdraw) +- [Function `withdraw_all`](#0x1_DiemTest_withdraw_all) +- [Function `join`](#0x1_DiemTest_join) +- [Function `deposit`](#0x1_DiemTest_deposit) +- [Function `destroy_zero`](#0x1_DiemTest_destroy_zero) +- [Function `register_currency`](#0x1_DiemTest_register_currency) +- [Function `register_SCS_currency`](#0x1_DiemTest_register_SCS_currency) +- [Function `market_cap`](#0x1_DiemTest_market_cap) +- [Function `approx_xdx_for_value`](#0x1_DiemTest_approx_xdx_for_value) +- [Function `approx_xdx_for_coin`](#0x1_DiemTest_approx_xdx_for_coin) +- [Function `is_currency`](#0x1_DiemTest_is_currency) +- [Function `is_SCS_currency`](#0x1_DiemTest_is_SCS_currency) +- [Function `is_synthetic_currency`](#0x1_DiemTest_is_synthetic_currency) +- [Function `scaling_factor`](#0x1_DiemTest_scaling_factor) +- [Function `fractional_part`](#0x1_DiemTest_fractional_part) +- [Function `currency_code`](#0x1_DiemTest_currency_code) +- [Function `update_xdx_exchange_rate`](#0x1_DiemTest_update_xdx_exchange_rate) +- [Function `xdx_exchange_rate`](#0x1_DiemTest_xdx_exchange_rate) +- [Function `update_minting_ability`](#0x1_DiemTest_update_minting_ability) +- [Function `assert_is_currency`](#0x1_DiemTest_assert_is_currency) +- [Function `assert_is_SCS_currency`](#0x1_DiemTest_assert_is_SCS_currency) +- [Module Specification](#@Module_Specification_1) + - [Module Specification](#@Module_Specification_2) + - [Minting](#@Minting_3) + - [Conservation of currency](#@Conservation_of_currency_4) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
+use 0x1::Event;
+use 0x1::FixedPoint32;
+use 0x1::RegisteredCurrencies;
+use 0x1::Roles;
+use 0x1::Signer;
+
+ + + + + +## Resource `RegisterNewCurrency` + + + +
resource struct RegisterNewCurrency
+
+ + + +##### Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + + + +## Resource `Diem` + +The Diem resource defines the Diem coin for each currency in +Diem. Each "coin" is coupled with a type CoinType specifying the +currency of the coin, and a value field specifying the value +of the coin (in the base units of the currency CoinType +and specified in the CurrencyInfo resource for that CoinType +published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). + + +
resource struct Diem<CoinType>
+
+ + + +##### Fields + + +
+
+value: u64 +
+
+ The value of this coin in the base units for CoinType +
+
+ + +##### Specification + +Account for updating sum_of_coin_values when a Diem is packed or unpacked. + + +
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
+invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
+
+ + + + + +## Resource `MintCapability` + +The MintCapability resource defines a capability to allow minting +of coins of CoinType currency by the holder of this capability. +This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() +account or the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct MintCapability<CoinType>
+
+ + + +##### Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + + + +## Resource `BurnCapability` + +The BurnCapability resource defines a capability to allow coins +of CoinType currency to be burned by the holder of the +and the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct BurnCapability<CoinType>
+
+ + + +##### Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + + + +## Struct `MintEvent` + +The CurrencyRegistrationCapability is a singleton resource +published under the CoreAddresses::DIEM_ROOT_ADDRESS() and grants +the capability to the 0x1::Diem module to add currencies to the +0x1::RegisteredCurrencies on-chain config. +A MintEvent is emitted every time a Diem coin is minted. This +contains the amount minted (in base units of the currency being +minted) along with the currency_code for the coin(s) being +minted, and that is defined in the currency_code field of the +CurrencyInfo resource for the currency. + + +
struct MintEvent
+
+ + + +##### Fields + + +
+
+amount: u64 +
+
+ Funds added to the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+ + + + +## Struct `BurnEvent` + +A BurnEvent is emitted every time a non-synthetic[1] Diem coin is +burned. It contains the amount burned in base units for the +currency, along with the currency_code for the coins being burned +(and as defined in the CurrencyInfo resource for that currency). +It also contains the preburn_address from which the coin is +extracted for burning. +[1] As defined by the is_synthetic field in the CurrencyInfo +for that currency. + + +
struct BurnEvent
+
+ + + +##### Fields + + +
+
+amount: u64 +
+
+ Funds removed from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that stored the now-burned funds +
+
+ + + + +## Struct `PreburnEvent` + +A PreburnEvent is emitted every time an amount of funds with +a coin type currency_code are moved to a Preburn resource under +the account at the address preburn_address. + + +
struct PreburnEvent
+
+ + + +##### Fields + + +
+
+amount: u64 +
+
+ The amount of funds waiting to be removed (burned) from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that now holds the funds +
+
+ + + + +## Struct `CancelBurnEvent` + +A CancelBurnEvent is emitted every time funds of amount in a Preburn +resource at preburn_address is canceled (removed from the +preburn, but not burned). The currency of the funds is given by the +currency_code as defined in the CurrencyInfo for that currency. + + +
struct CancelBurnEvent
+
+ + + +##### Fields + + +
+
+amount: u64 +
+
+ The amount of funds returned +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address of the Preburn resource that held the now-returned funds. +
+
+ + + + +## Struct `ToXDXExchangeRateUpdateEvent` + +An ToXDXExchangeRateUpdateEvent is emitted every time the to-XDX exchange +rate for the currency given by currency_code is updated. + + +
struct ToXDXExchangeRateUpdateEvent
+
+ + + +##### Fields + + +
+
+currency_code: vector<u8> +
+
+ The currency code of the currency whose exchange rate was updated. +
+
+new_to_xdx_exchange_rate: u64 +
+
+ The new on-chain to-XDX exchange rate between the + currency_code currency and XDX. Represented in conversion + between the (on-chain) base-units for the currency and microdiem. +
+
+ + + + +## Resource `CurrencyInfo` + +The CurrencyInfo<CoinType> resource stores the various +pieces of information needed for a currency (CoinType) that is +registered on-chain. This resource _must_ be published under the +address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of +CoinType as a recognized currency on-chain to be successful. At +the time of registration the MintCapability<CoinType> and +BurnCapability<CoinType> capabilities are returned to the caller. +Unless they are specified otherwise the fields in this resource are immutable. + + +
resource struct CurrencyInfo<CoinType>
+
+ + + +##### Fields + + +
+
+total_value: u128 +
+
+ The total value for the currency represented by CoinType. Mutable. +
+
+preburn_value: u64 +
+
+ Value of funds that are in the process of being burned. Mutable. +
+
+to_xdx_exchange_rate: FixedPoint32::FixedPoint32 +
+
+ The (rough) exchange rate from CoinType to XDX. Mutable. +
+
+is_synthetic: bool +
+
+ Holds whether or not this currency is synthetic (contributes to the + off-chain reserve) or not. An example of such a synthetic +currency would be the XDX. +
+
+scaling_factor: u64 +
+
+ The scaling factor for the coin (i.e. the amount to multiply by + to get to the human-readable representation for this currency). + e.g. 10^6 for XUS + + > TODO(wrwg): should the above be "to divide by"? +
+
+fractional_part: u64 +
+
+ The smallest fractional part (number of decimal places) to be + used in the human-readable representation for the currency (e.g. + 10^2 for XUS cents) +
+
+currency_code: vector<u8> +
+
+ The code symbol for this CoinType. ASCII encoded. + e.g. for "XDX" this is x"4C4252". No character limit. +
+
+can_mint: bool +
+
+ We may want to disable the ability to mint further coins of a + currency while that currency is still around. This allows us to + keep the currency in circulation while disallowing further + creation of coins in the CoinType currency. Mutable. +
+
+mint_events: Event::EventHandle<DiemTest::MintEvent> +
+
+ Event stream for minting and where MintEvents will be emitted. +
+
+burn_events: Event::EventHandle<DiemTest::BurnEvent> +
+
+ Event stream for burning, and where BurnEvents will be emitted. +
+
+preburn_events: Event::EventHandle<DiemTest::PreburnEvent> +
+
+ Event stream for preburn requests, and where all + PreburnEvents for this CoinType will be emitted. +
+
+cancel_burn_events: Event::EventHandle<DiemTest::CancelBurnEvent> +
+
+ Event stream for all cancelled preburn requests for this + CoinType. +
+
+exchange_rate_update_events: Event::EventHandle<DiemTest::ToXDXExchangeRateUpdateEvent> +
+
+ Event stream for emiting exchange rate change events +
+
+ + + + +## Resource `Preburn` + +A holding area where funds that will subsequently be burned wait while their underlying +assets are moved off-chain. +This resource can only be created by the holder of a BurnCapability. An account that +contains this address has the authority to initiate a burn request. A burn request can be +resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) +returning the funds to the account that initiated the burn request. +Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. + + +
resource struct Preburn<CoinType>
+
+ + + +##### Fields + + +
+
+to_burn: DiemTest::Diem<CoinType> +
+
+ A single pending burn amount. + There is no pending burn request if the value in to_burn is 0 +
+
+ + + + +## Constants + + + + + + +
const ENOT_GENESIS: u64 = 0;
+
+ + + + + + + +
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
+
+ + + + + + + +
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
+
+ + + + + + + +
const EDOES_NOT_HAVE_DIEM_ROOT_ROLE: u64 = 9;
+
+ + + + + + + +
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
+
+ + + + + + + +
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
+
+ + + + + + + +
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
+
+ + + + + + + +
const EMINTING_NOT_ALLOWED: u64 = 3;
+
+ + + + + + + +
const ENOT_AN_SCS_CURRENCY: u64 = 8;
+
+ + + + + + + +
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
+
+ + + + + + + +
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
+
+ + + + + +## Function `initialize` + +Grants the RegisterNewCurrency privilege to +the calling account as long as it has the correct role (TC). +Aborts if account does not have a RoleId that corresponds with +the treacury compliance role. +Initialization of the Diem module; initializes the set of +registered currencies in the 0x1::RegisteredCurrencies on-chain +config, and publishes the CurrencyRegistrationCapability under the +CoreAddresses::DIEM_ROOT_ADDRESS(). This can only be called from genesis. + + +
public fun initialize(config_account: &signer)
+
+ + + +##### Implementation + + +
public fun initialize(
+    config_account: &signer,
+) {
+    assert(DiemTimestamp::is_genesis(), ENOT_GENESIS);
+    // Operational constraint
+    assert(
+        Signer::address_of(config_account) == CoreAddresses::DIEM_ROOT_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+    RegisteredCurrencies::initialize(config_account);
+}
+
+ + + + + +## Function `publish_burn_capability` + +Publishes the BurnCapability cap for the CoinType currency under account. CoinType +must be a registered currency type. +The caller must pass a TreasuryComplianceRole capability. +TODO (dd): I think there is a multiple signer problem here. + + +
public fun publish_burn_capability<CoinType>(account: &signer, cap: DiemTest::BurnCapability<CoinType>, tc_account: &signer)
+
+ + + +##### Implementation + + +
public fun publish_burn_capability<CoinType>(
+    account: &signer,
+    cap: BurnCapability<CoinType>,
+    tc_account: &signer,
+) {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    move_to(account, cap)
+}
+
+ + + + + +## Function `mint` + +Mints amount coins. The account must hold a +MintCapability<CoinType> at the top-level in order for this call +to be successful, and will fail with MISSING_DATA otherwise. + + +
public fun mint<CoinType>(account: &signer, value: u64): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun mint<CoinType>(account: &signer, value: u64): Diem<CoinType>
+acquires CurrencyInfo, MintCapability {
+    mint_with_capability(
+        value,
+        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +##### Specification + + + +
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
+include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + +## Function `burn` + +Burns the coins currently held in the Preburn resource held under preburn_address. +Calls to this functions will fail if the account does not have a +published BurnCapability for the CoinType published under it. + + +
public fun burn<CoinType>(account: &signer, preburn_address: address)
+
+ + + +##### Implementation + + +
public fun burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+) acquires BurnCapability, CurrencyInfo, Preburn {
+    burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +##### Specification + + + +
pragma verify=false;
+aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
+
+ + + + + +## Function `cancel_burn` + +Cancels the current burn request in the Preburn resource held +under the preburn_address, and returns the coins. +Calls to this will fail if the sender does not have a published +BurnCapability<CoinType>, or if there is no preburn request +outstanding in the Preburn resource under preburn_address. + + +
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun cancel_burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+): Diem<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
+    cancel_burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + + + +## Function `mint_with_capability` + +Mint a new Diem coin of CoinType currency worth value. The +caller must have a reference to a MintCapability<CoinType>. Only +the treasury compliance account or the 0x1::XDX module can acquire such a +reference. + + +
public fun mint_with_capability<CoinType>(value: u64, _capability: &DiemTest::MintCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun mint_with_capability<CoinType>(
+    value: u64,
+    _capability: &MintCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    let currency_code = currency_code<CoinType>();
+    // update market cap resource to reflect minting
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(info.can_mint, EMINTING_NOT_ALLOWED);
+    info.total_value = info.total_value + (value as u128);
+    // don't emit mint events for synthetic currenices
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.mint_events,
+            MintEvent{
+                amount: value,
+                currency_code,
+            }
+        );
+    };
+
+    Diem<CoinType> { value }
+}
+
+ + + +##### Specification + + + +
include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + + + +
schema MintAbortsIf<CoinType> {
+    value: u64;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if !spec_currency_info<CoinType>().can_mint;
+    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
+}
+
+ + + + + + + +
schema MintEnsures<CoinType> {
+    value: u64;
+    result: Diem<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+                == old(spec_currency_info<CoinType>().total_value) + value;
+    ensures result.value == value;
+}
+
+ + + + + +## Function `preburn_with_resource` + +Add the coin to the preburn to_burn field in the Preburn resource +held at the address preburn_address if it is empty, otherwise raise +a PendingPreburn Error (code 6). Emits a PreburnEvent to +the preburn_events event stream in the CurrencyInfo for the +CoinType passed in. However, if the currency being preburned is +synthetic then no PreburnEvent event will be emitted. + + +
public fun preburn_with_resource<CoinType>(coin: DiemTest::Diem<CoinType>, preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address)
+
+ + + +##### Implementation + + +
public fun preburn_with_resource<CoinType>(
+    coin: Diem<CoinType>,
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+) acquires CurrencyInfo {
+    let coin_value = value(&coin);
+    // Throw if already occupied
+    assert(value(&preburn.to_burn) == 0, 6);
+    deposit(&mut preburn.to_burn, coin);
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.preburn_value = info.preburn_value + coin_value;
+    // don't emit preburn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.preburn_events,
+            PreburnEvent{
+                amount: coin_value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +##### Specification + + + +
pragma aborts_if_is_partial = true;
+include PreburnAbortsIf<CoinType>;
+aborts_if preburn.to_burn.value != 0;
+include PreburnEnsures<CoinType>;
+
+ + + + + + + +
schema PreburnAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
+}
+
+ + + + + + + +
schema PreburnEnsures<CoinType> {
+    coin: Diem<CoinType>;
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().preburn_value
+                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
+}
+
+ + + + + +## Function `create_preburn` + +Create a Preburn<CoinType> resource + + +
public fun create_preburn<CoinType>(tc_account: &signer): DiemTest::Preburn<CoinType>
+
+ + + +##### Implementation + + +
public fun create_preburn<CoinType>(
+    tc_account: &signer
+): Preburn<CoinType> {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
+    // I don't think it can happen, but that may be difficult to prove.
+    Preburn<CoinType> { to_burn: zero<CoinType>() }
+}
+
+ + + + + +## Function `publish_preburn_to_account` + +Publishes a Preburn resource under account. This function is +used for bootstrapping the designated dealer at account-creation +time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating +this resource for the designated dealer. + + +
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
+
+ + + +##### Implementation + + +
public fun publish_preburn_to_account<CoinType>(
+    account: &signer,
+    tc_account: &signer
+) acquires CurrencyInfo {
+    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
+    move_to(account, create_preburn<CoinType>(tc_account))
+}
+
+ + + + + +## Function `preburn_to` + +Sends coin to the preburn queue for account, where it will wait to either be burned +or returned to the balance of account. +Calls to this function will fail if account does not have a +Preburn<CoinType> resource published under it. + + +
public fun preburn_to<CoinType>(account: &signer, coin: DiemTest::Diem<CoinType>)
+
+ + + +##### Implementation + + +
public fun preburn_to<CoinType>(
+    account: &signer, coin: Diem<CoinType>) acquires CurrencyInfo, Preburn {
+    let sender = Signer::address_of(account);
+    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
+}
+
+ + + +##### Specification + + + +
pragma aborts_if_is_partial = true;
+aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
+include PreburnAbortsIf<CoinType>;
+include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
+
+ + + + + +## Function `burn_with_capability` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +##### Implementation + + +
public fun burn_with_capability<CoinType>(
+    preburn_address: address,
+    capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn to_burn area
+    burn_with_resource_cap(
+        borrow_global_mut<Preburn<CoinType>>(preburn_address),
+        preburn_address,
+        capability
+    )
+}
+
+ + + +##### Specification + + + +
aborts_if !exists<Preburn<CoinType>>(preburn_address);
+include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+
+ + + + + +## Function `burn_with_resource_cap` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_resource_cap<CoinType>(preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +##### Implementation + + +
public fun burn_with_resource_cap<CoinType>(
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo {
+    let currency_code = currency_code<CoinType>();
+    // Abort if no coin present in preburn area
+    assert(preburn.to_burn.value > 0, 7);
+    // destroy the coin in Preburn area
+    let Diem { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.total_value = info.total_value - (value as u128);
+    info.preburn_value = info.preburn_value - value;
+    // don't emit burn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.burn_events,
+            BurnEvent {
+                amount: value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +##### Specification + + + +
include BurnAbortsIf<CoinType>;
+include BurnEnsures<CoinType>;
+
+ + + + + + + +
schema BurnAbortsIf<CoinType> {
+    preburn: Preburn<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if preburn.to_burn.value == 0;
+    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
+    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
+}
+
+ + + + + + + +
schema BurnEnsures<CoinType> {
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
+    ensures spec_currency_info<CoinType>().preburn_value
+            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
+}
+
+ + + + + +## Function `cancel_burn_with_capability` + +Cancels the burn request in the Preburn resource stored at preburn_address and +return the coins to the caller. +This function can only be called by the holder of a +BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource +at preburn_address does not contain a pending burn request. + + +
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun cancel_burn_with_capability<CoinType>(
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn area
+    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
+    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    let amount = value(&coin);
+    info.preburn_value = info.preburn_value - amount;
+    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
+    // for synthetics in the first place
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.cancel_burn_events,
+            CancelBurnEvent {
+                amount,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+
+    coin
+}
+
+ + + + + +## Function `remove_burn_capability` + +Removes and returns the BurnCapability<CoinType> from account. +Calls to this function will fail if account does not have a +published BurnCapability<CoinType> resource at the top-level. + + +
public fun remove_burn_capability<CoinType>(account: &signer): DiemTest::BurnCapability<CoinType>
+
+ + + +##### Implementation + + +
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
+acquires BurnCapability {
+    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
+}
+
+ + + + + +## Function `preburn_value` + +Returns the total value of Diem<CoinType> that is waiting to be +burned throughout the system (i.e. the sum of all outstanding +preburn requests across all preburn resources for the CoinType +currency). + + +
public fun preburn_value<CoinType>(): u64
+
+ + + +##### Implementation + + +
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
+}
+
+ + + + + +## Function `zero` + +Create a new Diem<CoinType> with a value of 0. Anyone can call +this and it will be successful as long as CoinType is a registered currency. + + +
public fun zero<CoinType>(): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun zero<CoinType>(): Diem<CoinType> {
+    assert_is_currency<CoinType>();
+    Diem<CoinType> { value: 0 }
+}
+
+ + + + + +## Function `value` + +Returns the value of the passed in coin. The value is +represented in the base units for the currency represented by +CoinType. + + +
public fun value<CoinType>(coin: &DiemTest::Diem<CoinType>): u64
+
+ + + +##### Implementation + + +
public fun value<CoinType>(coin: &Diem<CoinType>): u64 {
+    coin.value
+}
+
+ + + + + +## Function `split` + +Removes amount of value from the passed in coin. Returns the +remaining balance of the passed in coin, along with another coin +with value equal to amount. Calls will fail if amount > Diem::value(&coin). + + +
public fun split<CoinType>(coin: DiemTest::Diem<CoinType>, amount: u64): (DiemTest::Diem<CoinType>, DiemTest::Diem<CoinType>)
+
+ + + +##### Implementation + + +
public fun split<CoinType>(coin: Diem<CoinType>, amount: u64): (Diem<CoinType>, Diem<CoinType>) {
+    let other = withdraw(&mut coin, amount);
+    (coin, other)
+}
+
+ + + +##### Specification + + + +
aborts_if coin.value < amount;
+ensures result_1.value == coin.value - amount;
+ensures result_2.value == amount;
+
+ + + + + +## Function `withdraw` + +Withdraw amount from the passed-in coin, where the original coin is modified in place. +After this function is executed, the original coin will have +value = original_value - amount, and the new coin will have a value = amount. +Calls will abort if the passed-in amount is greater than the +value of the passed-in coin. + + +
public fun withdraw<CoinType>(coin: &mut DiemTest::Diem<CoinType>, amount: u64): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun withdraw<CoinType>(coin: &mut Diem<CoinType>, amount: u64): Diem<CoinType> {
+    // Check that `amount` is less than the coin's value
+    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
+    coin.value = coin.value - amount;
+    Diem { value: amount }
+}
+
+ + + +##### Specification + + + +
aborts_if coin.value < amount;
+ensures coin.value == old(coin.value) - amount;
+ensures result.value == amount;
+
+ + + + + +## Function `withdraw_all` + +Return a Diem<CoinType> worth coin.value and reduces the value of the input coin to +zero. Does not abort. + + +
public fun withdraw_all<CoinType>(coin: &mut DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun withdraw_all<CoinType>(coin: &mut Diem<CoinType>): Diem<CoinType> {
+    let val = coin.value;
+    withdraw(coin, val)
+}
+
+ + + +##### Specification + + + +
aborts_if false;
+ensures result.value == old(coin.value);
+ensures coin.value == 0;
+
+ + + + + +## Function `join` + +and returns a new coin whose value is equal to the sum of the two inputs. + + +
public fun join<CoinType>(xus: DiemTest::Diem<CoinType>, coin2: DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +##### Implementation + + +
public fun join<CoinType>(xus: Diem<CoinType>, coin2: Diem<CoinType>): Diem<CoinType>  {
+    deposit(&mut xus, coin2);
+    xus
+}
+
+ + + +##### Specification + + + +
aborts_if xus.value + coin2.value > max_u64();
+ensures result.value == xus.value + coin2.value;
+
+ + + + + +## Function `deposit` + +"Merges" the two coins. +The coin passed in by reference will have a value equal to the sum of the two coins +The check coin is consumed in the process + + +
public fun deposit<CoinType>(coin: &mut DiemTest::Diem<CoinType>, check: DiemTest::Diem<CoinType>)
+
+ + + +##### Implementation + + +
public fun deposit<CoinType>(coin: &mut Diem<CoinType>, check: Diem<CoinType>) {
+    let Diem { value } = check;
+    coin.value = coin.value + value;
+}
+
+ + + + + +## Function `destroy_zero` + +Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero +so you cannot "burn" any non-zero amount of Diem without having +a BurnCapability for the specific CoinType. + + +
public fun destroy_zero<CoinType>(coin: DiemTest::Diem<CoinType>)
+
+ + + +##### Implementation + + +
public fun destroy_zero<CoinType>(coin: Diem<CoinType>) {
+    let Diem { value } = coin;
+    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
+}
+
+ + + +##### Specification + + + +
aborts_if coin.value > 0;
+
+ + + + + +## Function `register_currency` + +Register the type CoinType as a currency. Until the type is +registered as a currency it cannot be used as a coin/currency unit in Diem. +The passed-in dr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and +dr_account must also have the correct RegisterNewCurrency capability. +After the first registration of CoinType as a +currency, additional attempts to register CoinType as a currency +will abort. +When the CoinType is registered it publishes the +CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and +adds the currency to the set of RegisteredCurrencies. It returns +MintCapability<CoinType> and BurnCapability<CoinType> resources. + + +
public fun register_currency<CoinType>(dr_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (DiemTest::MintCapability<CoinType>, DiemTest::BurnCapability<CoinType>)
+
+ + + +##### Implementation + + +
public fun register_currency<CoinType>(
+    dr_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    is_synthetic: bool,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+): (MintCapability<CoinType>, BurnCapability<CoinType>)
+{
+    Roles::assert_diem_root(dr_account);
+    // Operational constraint that it must be stored under a specific address.
+    assert(
+        Signer::address_of(dr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+
+    move_to(dr_account, CurrencyInfo<CoinType> {
+        total_value: 0,
+        preburn_value: 0,
+        to_xdx_exchange_rate,
+        is_synthetic,
+        scaling_factor,
+        fractional_part,
+        currency_code: copy currency_code,
+        can_mint: true,
+        mint_events: Event::new_event_handle<MintEvent>(dr_account),
+        burn_events: Event::new_event_handle<BurnEvent>(dr_account),
+        preburn_events: Event::new_event_handle<PreburnEvent>(dr_account),
+        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(dr_account),
+        exchange_rate_update_events: Event::new_event_handle<ToXDXExchangeRateUpdateEvent>(dr_account)
+    });
+    RegisteredCurrencies::add_currency_code(
+        dr_account,
+        currency_code,
+    );
+    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
+}
+
+ + + +##### Specification + + + +
aborts_if !Roles::spec_has_diem_root_role_addr(Signer::spec_address_of(dr_account));
+aborts_if Signer::spec_address_of(dr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
+aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(dr_account));
+aborts_if spec_is_currency<CoinType>();
+include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
+
+ + + + + +## Function `register_SCS_currency` + +Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. +Resources are published on two distinct +accounts: The CoinInfo is published on the Diem root account, and the mint and +burn capabilities are published on a treasury compliance account. +This code allows different currencies to have different treasury compliance +accounts. + + +
public fun register_SCS_currency<CoinType>(dr_account: &signer, tc_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
+
+ + + +##### Implementation + + +
public fun register_SCS_currency<CoinType>(
+    dr_account: &signer,
+    tc_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+) {
+    Roles::assert_treasury_compliance(tc_account);
+    let (mint_cap, burn_cap) =
+        register_currency<CoinType>(
+            dr_account,
+            to_xdx_exchange_rate,
+            false,   // is_synthetic
+            scaling_factor,
+            fractional_part,
+            currency_code,
+        );
+    // DD: converted to move_to because of problems proving invariant.
+    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
+    move_to(tc_account, mint_cap);
+    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
+}
+
+ + + +##### Specification + + + +
pragma aborts_if_is_partial = true;
+ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
+
+ + + + + +## Function `market_cap` + +Returns the total amount of currency minted of type CoinType. + + +
public fun market_cap<CoinType>(): u128
+
+ + + +##### Implementation + + +
public fun market_cap<CoinType>(): u128
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
+}
+
+ + + + + +## Function `approx_xdx_for_value` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a _rough_ approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+
+ + + +##### Implementation + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+acquires CurrencyInfo {
+    let xdx_exchange_rate = xdx_exchange_rate<FromCoinType>();
+    FixedPoint32::multiply_u64(from_value, xdx_exchange_rate)
+}
+
+ + + + + +## Function `approx_xdx_for_coin` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a rough approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &DiemTest::Diem<FromCoinType>): u64
+
+ + + +##### Implementation + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &Diem<FromCoinType>): u64
+acquires CurrencyInfo {
+    let from_value = value(coin);
+    approx_xdx_for_value<FromCoinType>(from_value)
+}
+
+ + + + + +## Function `is_currency` + +Returns true if the type CoinType is a registered currency. +Returns false otherwise. + + +
public fun is_currency<CoinType>(): bool
+
+ + + +##### Implementation + + +
public fun is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + + + + +## Function `is_SCS_currency` + + + +
public fun is_SCS_currency<CoinType>(): bool
+
+ + + +##### Implementation + + +
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
+    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    !info.is_synthetic
+}
+
+ + + + + +## Function `is_synthetic_currency` + +Returns true if CoinType is a synthetic currency as defined in +its CurrencyInfo. Returns false otherwise. + + +
public fun is_synthetic_currency<CoinType>(): bool
+
+ + + +##### Implementation + + +
public fun is_synthetic_currency<CoinType>(): bool
+acquires CurrencyInfo {
+    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
+    exists<CurrencyInfo<CoinType>>(addr) &&
+        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
+}
+
+ + + + + +## Function `scaling_factor` + +Returns the scaling factor for the CoinType currency as defined +in its CurrencyInfo. + + +
public fun scaling_factor<CoinType>(): u64
+
+ + + +##### Implementation + + +
public fun scaling_factor<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
+}
+
+ + + + + +## Function `fractional_part` + +Returns the representable (i.e. real-world) fractional part for the +CoinType currency as defined in its CurrencyInfo. + + +
public fun fractional_part<CoinType>(): u64
+
+ + + +##### Implementation + + +
public fun fractional_part<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
+}
+
+ + + + + +## Function `currency_code` + +Returns the currency code for the registered currency as defined in +its CurrencyInfo resource. + + +
public fun currency_code<CoinType>(): vector<u8>
+
+ + + +##### Implementation + + +
public fun currency_code<CoinType>(): vector<u8>
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
+}
+
+ + + + + +## Function `update_xdx_exchange_rate` + +Updates the to_xdx_exchange_rate held in the CurrencyInfo for +FromCoinType to the new passed-in xdx_exchange_rate. + + +
public fun update_xdx_exchange_rate<FromCoinType>(tr_account: &signer, xdx_exchange_rate: FixedPoint32::FixedPoint32)
+
+ + + +##### Implementation + + +
public fun update_xdx_exchange_rate<FromCoinType>(
+    tr_account: &signer,
+    xdx_exchange_rate: FixedPoint32
+) acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<FromCoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.to_xdx_exchange_rate = xdx_exchange_rate;
+    Event::emit_event(
+        &mut currency_info.exchange_rate_update_events,
+        ToXDXExchangeRateUpdateEvent {
+            currency_code: *¤cy_info.currency_code,
+            new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate),
+        }
+    );
+
+}
+
+ + + + + +## Function `xdx_exchange_rate` + +Returns the (rough) exchange rate between CoinType and XDX + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
+
+ + + +##### Implementation + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+}
+
+ + + + + +## Function `update_minting_ability` + +There may be situations in which we disallow the further minting of +coins in the system without removing the currency. This function +allows the association TC account to control whether or not further coins of +CoinType can be minted or not. If this is called with can_mint = +true, then minting is allowed, if can_mint = false then minting is +disallowed until it is turned back on via this function. All coins +start out in the default state of can_mint = true. + + +
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
+
+ + + +##### Implementation + + +
public fun update_minting_ability<CoinType>(
+    tr_account: &signer,
+    can_mint: bool,
+    )
+acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.can_mint = can_mint;
+}
+
+ + + + + +## Function `assert_is_currency` + +Asserts that CoinType is a registered currency. + + +
fun assert_is_currency<CoinType>()
+
+ + + +##### Implementation + + +
fun assert_is_currency<CoinType>() {
+    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
+}
+
+ + + + + +## Function `assert_is_SCS_currency` + + + +
fun assert_is_SCS_currency<CoinType>()
+
+ + + +##### Implementation + + +
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
+    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
+}
+
+ + + + + +## Module Specification + +**************** MODULE SPECIFICATION **************** + + + + +### Module Specification + + +Verify all functions in this module. +> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions +> about coin balance. + + +
pragma verify = true;
+
+ + + +Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. + + + + + +
define spec_is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Returns currency information. + + + + + +
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
+    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Specification version of Self::approx_xdx_for_value. + + + + + +
define spec_approx_xdx_for_value<CoinType>(value: num):  num {
+    FixedPoint32::spec_multiply_u64(
+        value,
+        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+    )
+}
+
+define spec_is_SCS_currency<CoinType>(): bool {
+    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
+}
+
+ + +Checks whether the currency has a mint capability. This is only relevant for +SCS coins + + + + + +
define spec_has_mint_capability<CoinType>(addr1: address): bool {
+    exists<MintCapability<CoinType>>(addr1)
+}
+
+ + + + + +#### Minting + +For an SCS coin, the mint capability cannot move or disappear. +TODO: Specify that they're published at the one true treasurycompliance address? + + + + +If an address has a mint capability, it is an SCS currency. + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type
+                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
+                              spec_is_SCS_currency<coin_type>();
+}
+
+ + +If there is a pending offer for a mint capability, the coin_type is an SCS currency and +there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type :
+                              spec_is_SCS_currency<coin_type>()
+                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
+    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
+        forall addr1: address, addr2: address
+             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
+                  addr1 == addr2;
+    ensures forall coin_type: type:
+        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
+            exists<MintCapability<coin_type>>(addr1);
+}
+
+ + + + +
apply MintCapabilitySpecs to *<T>, *;
+
+ + + + + +#### Conservation of currency + + +Maintain a spec variable representing the sum of +all coins of a currency type. + + + + + +
global sum_of_coin_values<CoinType>: num;
+
diff --git a/language/move-prover/docgen/tests/sources/DiemTest.spec_separate.md b/language/move-prover/docgen/tests/sources/DiemTest.spec_separate.md new file mode 100644 index 0000000000..532506f42c --- /dev/null +++ b/language/move-prover/docgen/tests/sources/DiemTest.spec_separate.md @@ -0,0 +1,2494 @@ + + + +# Module `0x1::DiemTest` + +The Diem module describes the concept of a coin in the Diem framework. It introduces the +resource Diem::Diem<CoinType>, representing a coin of given coin type. +The module defines functions operating on coins as well as functionality like +minting and burning of coins. + + +- [Resource `RegisterNewCurrency`](#0x1_DiemTest_RegisterNewCurrency) +- [Resource `Diem`](#0x1_DiemTest_Diem) +- [Resource `MintCapability`](#0x1_DiemTest_MintCapability) +- [Resource `BurnCapability`](#0x1_DiemTest_BurnCapability) +- [Struct `MintEvent`](#0x1_DiemTest_MintEvent) +- [Struct `BurnEvent`](#0x1_DiemTest_BurnEvent) +- [Struct `PreburnEvent`](#0x1_DiemTest_PreburnEvent) +- [Struct `CancelBurnEvent`](#0x1_DiemTest_CancelBurnEvent) +- [Struct `ToXDXExchangeRateUpdateEvent`](#0x1_DiemTest_ToXDXExchangeRateUpdateEvent) +- [Resource `CurrencyInfo`](#0x1_DiemTest_CurrencyInfo) +- [Resource `Preburn`](#0x1_DiemTest_Preburn) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemTest_initialize) +- [Function `publish_burn_capability`](#0x1_DiemTest_publish_burn_capability) +- [Function `mint`](#0x1_DiemTest_mint) +- [Function `burn`](#0x1_DiemTest_burn) +- [Function `cancel_burn`](#0x1_DiemTest_cancel_burn) +- [Function `mint_with_capability`](#0x1_DiemTest_mint_with_capability) +- [Function `preburn_with_resource`](#0x1_DiemTest_preburn_with_resource) +- [Function `create_preburn`](#0x1_DiemTest_create_preburn) +- [Function `publish_preburn_to_account`](#0x1_DiemTest_publish_preburn_to_account) +- [Function `preburn_to`](#0x1_DiemTest_preburn_to) +- [Function `burn_with_capability`](#0x1_DiemTest_burn_with_capability) +- [Function `burn_with_resource_cap`](#0x1_DiemTest_burn_with_resource_cap) +- [Function `cancel_burn_with_capability`](#0x1_DiemTest_cancel_burn_with_capability) +- [Function `remove_burn_capability`](#0x1_DiemTest_remove_burn_capability) +- [Function `preburn_value`](#0x1_DiemTest_preburn_value) +- [Function `zero`](#0x1_DiemTest_zero) +- [Function `value`](#0x1_DiemTest_value) +- [Function `split`](#0x1_DiemTest_split) +- [Function `withdraw`](#0x1_DiemTest_withdraw) +- [Function `withdraw_all`](#0x1_DiemTest_withdraw_all) +- [Function `join`](#0x1_DiemTest_join) +- [Function `deposit`](#0x1_DiemTest_deposit) +- [Function `destroy_zero`](#0x1_DiemTest_destroy_zero) +- [Function `register_currency`](#0x1_DiemTest_register_currency) +- [Function `register_SCS_currency`](#0x1_DiemTest_register_SCS_currency) +- [Function `market_cap`](#0x1_DiemTest_market_cap) +- [Function `approx_xdx_for_value`](#0x1_DiemTest_approx_xdx_for_value) +- [Function `approx_xdx_for_coin`](#0x1_DiemTest_approx_xdx_for_coin) +- [Function `is_currency`](#0x1_DiemTest_is_currency) +- [Function `is_SCS_currency`](#0x1_DiemTest_is_SCS_currency) +- [Function `is_synthetic_currency`](#0x1_DiemTest_is_synthetic_currency) +- [Function `scaling_factor`](#0x1_DiemTest_scaling_factor) +- [Function `fractional_part`](#0x1_DiemTest_fractional_part) +- [Function `currency_code`](#0x1_DiemTest_currency_code) +- [Function `update_xdx_exchange_rate`](#0x1_DiemTest_update_xdx_exchange_rate) +- [Function `xdx_exchange_rate`](#0x1_DiemTest_xdx_exchange_rate) +- [Function `update_minting_ability`](#0x1_DiemTest_update_minting_ability) +- [Function `assert_is_currency`](#0x1_DiemTest_assert_is_currency) +- [Function `assert_is_SCS_currency`](#0x1_DiemTest_assert_is_SCS_currency) +- [Specification](#@Specification_1) + - [Module Specification](#@Module_Specification_2) + - [Minting](#@Minting_3) + - [Conservation of currency](#@Conservation_of_currency_4) + - [Resource `Diem`](#@Specification_1_Diem) + - [Function `mint`](#@Specification_1_mint) + - [Function `burn`](#@Specification_1_burn) + - [Function `mint_with_capability`](#@Specification_1_mint_with_capability) + - [Function `preburn_with_resource`](#@Specification_1_preburn_with_resource) + - [Function `preburn_to`](#@Specification_1_preburn_to) + - [Function `burn_with_capability`](#@Specification_1_burn_with_capability) + - [Function `burn_with_resource_cap`](#@Specification_1_burn_with_resource_cap) + - [Function `split`](#@Specification_1_split) + - [Function `withdraw`](#@Specification_1_withdraw) + - [Function `withdraw_all`](#@Specification_1_withdraw_all) + - [Function `join`](#@Specification_1_join) + - [Function `destroy_zero`](#@Specification_1_destroy_zero) + - [Function `register_currency`](#@Specification_1_register_currency) + - [Function `register_SCS_currency`](#@Specification_1_register_SCS_currency) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
+use 0x1::Event;
+use 0x1::FixedPoint32;
+use 0x1::RegisteredCurrencies;
+use 0x1::Roles;
+use 0x1::Signer;
+
+ + + + + +## Resource `RegisterNewCurrency` + + + +
resource struct RegisterNewCurrency
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `Diem` + +The Diem resource defines the Diem coin for each currency in +Diem. Each "coin" is coupled with a type CoinType specifying the +currency of the coin, and a value field specifying the value +of the coin (in the base units of the currency CoinType +and specified in the CurrencyInfo resource for that CoinType +published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). + + +
resource struct Diem<CoinType>
+
+ + + +
+Fields + + +
+
+value: u64 +
+
+ The value of this coin in the base units for CoinType +
+
+ + +
+ + + +## Resource `MintCapability` + +The MintCapability resource defines a capability to allow minting +of coins of CoinType currency by the holder of this capability. +This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() +account or the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct MintCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `BurnCapability` + +The BurnCapability resource defines a capability to allow coins +of CoinType currency to be burned by the holder of the +and the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct BurnCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Struct `MintEvent` + +The CurrencyRegistrationCapability is a singleton resource +published under the CoreAddresses::DIEM_ROOT_ADDRESS() and grants +the capability to the 0x1::Diem module to add currencies to the +0x1::RegisteredCurrencies on-chain config. +A MintEvent is emitted every time a Diem coin is minted. This +contains the amount minted (in base units of the currency being +minted) along with the currency_code for the coin(s) being +minted, and that is defined in the currency_code field of the +CurrencyInfo resource for the currency. + + +
struct MintEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds added to the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+ + +
+ + + +## Struct `BurnEvent` + +A BurnEvent is emitted every time a non-synthetic[1] Diem coin is +burned. It contains the amount burned in base units for the +currency, along with the currency_code for the coins being burned +(and as defined in the CurrencyInfo resource for that currency). +It also contains the preburn_address from which the coin is +extracted for burning. +[1] As defined by the is_synthetic field in the CurrencyInfo +for that currency. + + +
struct BurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds removed from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that stored the now-burned funds +
+
+ + +
+ + + +## Struct `PreburnEvent` + +A PreburnEvent is emitted every time an amount of funds with +a coin type currency_code are moved to a Preburn resource under +the account at the address preburn_address. + + +
struct PreburnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds waiting to be removed (burned) from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that now holds the funds +
+
+ + +
+ + + +## Struct `CancelBurnEvent` + +A CancelBurnEvent is emitted every time funds of amount in a Preburn +resource at preburn_address is canceled (removed from the +preburn, but not burned). The currency of the funds is given by the +currency_code as defined in the CurrencyInfo for that currency. + + +
struct CancelBurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds returned +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address of the Preburn resource that held the now-returned funds. +
+
+ + +
+ + + +## Struct `ToXDXExchangeRateUpdateEvent` + +An ToXDXExchangeRateUpdateEvent is emitted every time the to-XDX exchange +rate for the currency given by currency_code is updated. + + +
struct ToXDXExchangeRateUpdateEvent
+
+ + + +
+Fields + + +
+
+currency_code: vector<u8> +
+
+ The currency code of the currency whose exchange rate was updated. +
+
+new_to_xdx_exchange_rate: u64 +
+
+ The new on-chain to-XDX exchange rate between the + currency_code currency and XDX. Represented in conversion + between the (on-chain) base-units for the currency and microdiem. +
+
+ + +
+ + + +## Resource `CurrencyInfo` + +The CurrencyInfo<CoinType> resource stores the various +pieces of information needed for a currency (CoinType) that is +registered on-chain. This resource _must_ be published under the +address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of +CoinType as a recognized currency on-chain to be successful. At +the time of registration the MintCapability<CoinType> and +BurnCapability<CoinType> capabilities are returned to the caller. +Unless they are specified otherwise the fields in this resource are immutable. + + +
resource struct CurrencyInfo<CoinType>
+
+ + + +
+Fields + + +
+
+total_value: u128 +
+
+ The total value for the currency represented by CoinType. Mutable. +
+
+preburn_value: u64 +
+
+ Value of funds that are in the process of being burned. Mutable. +
+
+to_xdx_exchange_rate: FixedPoint32::FixedPoint32 +
+
+ The (rough) exchange rate from CoinType to XDX. Mutable. +
+
+is_synthetic: bool +
+
+ Holds whether or not this currency is synthetic (contributes to the + off-chain reserve) or not. An example of such a synthetic +currency would be the XDX. +
+
+scaling_factor: u64 +
+
+ The scaling factor for the coin (i.e. the amount to multiply by + to get to the human-readable representation for this currency). + e.g. 10^6 for XUS + + > TODO(wrwg): should the above be "to divide by"? +
+
+fractional_part: u64 +
+
+ The smallest fractional part (number of decimal places) to be + used in the human-readable representation for the currency (e.g. + 10^2 for XUS cents) +
+
+currency_code: vector<u8> +
+
+ The code symbol for this CoinType. ASCII encoded. + e.g. for "XDX" this is x"4C4252". No character limit. +
+
+can_mint: bool +
+
+ We may want to disable the ability to mint further coins of a + currency while that currency is still around. This allows us to + keep the currency in circulation while disallowing further + creation of coins in the CoinType currency. Mutable. +
+
+mint_events: Event::EventHandle<DiemTest::MintEvent> +
+
+ Event stream for minting and where MintEvents will be emitted. +
+
+burn_events: Event::EventHandle<DiemTest::BurnEvent> +
+
+ Event stream for burning, and where BurnEvents will be emitted. +
+
+preburn_events: Event::EventHandle<DiemTest::PreburnEvent> +
+
+ Event stream for preburn requests, and where all + PreburnEvents for this CoinType will be emitted. +
+
+cancel_burn_events: Event::EventHandle<DiemTest::CancelBurnEvent> +
+
+ Event stream for all cancelled preburn requests for this + CoinType. +
+
+exchange_rate_update_events: Event::EventHandle<DiemTest::ToXDXExchangeRateUpdateEvent> +
+
+ Event stream for emiting exchange rate change events +
+
+ + +
+ + + +## Resource `Preburn` + +A holding area where funds that will subsequently be burned wait while their underlying +assets are moved off-chain. +This resource can only be created by the holder of a BurnCapability. An account that +contains this address has the authority to initiate a burn request. A burn request can be +resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) +returning the funds to the account that initiated the burn request. +Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. + + +
resource struct Preburn<CoinType>
+
+ + + +
+Fields + + +
+
+to_burn: DiemTest::Diem<CoinType> +
+
+ A single pending burn amount. + There is no pending burn request if the value in to_burn is 0 +
+
+ + +
+ + + +## Constants + + + + + + +
const ENOT_GENESIS: u64 = 0;
+
+ + + + + + + +
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
+
+ + + + + + + +
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
+
+ + + + + + + +
const EDOES_NOT_HAVE_DIEM_ROOT_ROLE: u64 = 9;
+
+ + + + + + + +
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
+
+ + + + + + + +
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
+
+ + + + + + + +
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
+
+ + + + + + + +
const EMINTING_NOT_ALLOWED: u64 = 3;
+
+ + + + + + + +
const ENOT_AN_SCS_CURRENCY: u64 = 8;
+
+ + + + + + + +
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
+
+ + + + + + + +
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
+
+ + + + + +## Function `initialize` + +Grants the RegisterNewCurrency privilege to +the calling account as long as it has the correct role (TC). +Aborts if account does not have a RoleId that corresponds with +the treacury compliance role. +Initialization of the Diem module; initializes the set of +registered currencies in the 0x1::RegisteredCurrencies on-chain +config, and publishes the CurrencyRegistrationCapability under the +CoreAddresses::DIEM_ROOT_ADDRESS(). This can only be called from genesis. + + +
public fun initialize(config_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    config_account: &signer,
+) {
+    assert(DiemTimestamp::is_genesis(), ENOT_GENESIS);
+    // Operational constraint
+    assert(
+        Signer::address_of(config_account) == CoreAddresses::DIEM_ROOT_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+    RegisteredCurrencies::initialize(config_account);
+}
+
+ + + +
+ + + +## Function `publish_burn_capability` + +Publishes the BurnCapability cap for the CoinType currency under account. CoinType +must be a registered currency type. +The caller must pass a TreasuryComplianceRole capability. +TODO (dd): I think there is a multiple signer problem here. + + +
public fun publish_burn_capability<CoinType>(account: &signer, cap: DiemTest::BurnCapability<CoinType>, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun publish_burn_capability<CoinType>(
+    account: &signer,
+    cap: BurnCapability<CoinType>,
+    tc_account: &signer,
+) {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    move_to(account, cap)
+}
+
+ + + +
+ + + +## Function `mint` + +Mints amount coins. The account must hold a +MintCapability<CoinType> at the top-level in order for this call +to be successful, and will fail with MISSING_DATA otherwise. + + +
public fun mint<CoinType>(account: &signer, value: u64): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint<CoinType>(account: &signer, value: u64): Diem<CoinType>
+acquires CurrencyInfo, MintCapability {
+    mint_with_capability(
+        value,
+        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ + + +## Function `burn` + +Burns the coins currently held in the Preburn resource held under preburn_address. +Calls to this functions will fail if the account does not have a +published BurnCapability for the CoinType published under it. + + +
public fun burn<CoinType>(account: &signer, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+) acquires BurnCapability, CurrencyInfo, Preburn {
+    burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ + + +## Function `cancel_burn` + +Cancels the current burn request in the Preburn resource held +under the preburn_address, and returns the coins. +Calls to this will fail if the sender does not have a published +BurnCapability<CoinType>, or if there is no preburn request +outstanding in the Preburn resource under preburn_address. + + +
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+): Diem<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
+    cancel_burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
+    )
+}
+
+ + + +
+ + + +## Function `mint_with_capability` + +Mint a new Diem coin of CoinType currency worth value. The +caller must have a reference to a MintCapability<CoinType>. Only +the treasury compliance account or the 0x1::XDX module can acquire such a +reference. + + +
public fun mint_with_capability<CoinType>(value: u64, _capability: &DiemTest::MintCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint_with_capability<CoinType>(
+    value: u64,
+    _capability: &MintCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    let currency_code = currency_code<CoinType>();
+    // update market cap resource to reflect minting
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(info.can_mint, EMINTING_NOT_ALLOWED);
+    info.total_value = info.total_value + (value as u128);
+    // don't emit mint events for synthetic currenices
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.mint_events,
+            MintEvent{
+                amount: value,
+                currency_code,
+            }
+        );
+    };
+
+    Diem<CoinType> { value }
+}
+
+ + + +
+ + + +## Function `preburn_with_resource` + +Add the coin to the preburn to_burn field in the Preburn resource +held at the address preburn_address if it is empty, otherwise raise +a PendingPreburn Error (code 6). Emits a PreburnEvent to +the preburn_events event stream in the CurrencyInfo for the +CoinType passed in. However, if the currency being preburned is +synthetic then no PreburnEvent event will be emitted. + + +
public fun preburn_with_resource<CoinType>(coin: DiemTest::Diem<CoinType>, preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun preburn_with_resource<CoinType>(
+    coin: Diem<CoinType>,
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+) acquires CurrencyInfo {
+    let coin_value = value(&coin);
+    // Throw if already occupied
+    assert(value(&preburn.to_burn) == 0, 6);
+    deposit(&mut preburn.to_burn, coin);
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.preburn_value = info.preburn_value + coin_value;
+    // don't emit preburn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.preburn_events,
+            PreburnEvent{
+                amount: coin_value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ + + +## Function `create_preburn` + +Create a Preburn<CoinType> resource + + +
public fun create_preburn<CoinType>(tc_account: &signer): DiemTest::Preburn<CoinType>
+
+ + + +
+Implementation + + +
public fun create_preburn<CoinType>(
+    tc_account: &signer
+): Preburn<CoinType> {
+    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
+    // I don't think it can happen, but that may be difficult to prove.
+    Preburn<CoinType> { to_burn: zero<CoinType>() }
+}
+
+ + + +
+ + + +## Function `publish_preburn_to_account` + +Publishes a Preburn resource under account. This function is +used for bootstrapping the designated dealer at account-creation +time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating +this resource for the designated dealer. + + +
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun publish_preburn_to_account<CoinType>(
+    account: &signer,
+    tc_account: &signer
+) acquires CurrencyInfo {
+    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
+    move_to(account, create_preburn<CoinType>(tc_account))
+}
+
+ + + +
+ + + +## Function `preburn_to` + +Sends coin to the preburn queue for account, where it will wait to either be burned +or returned to the balance of account. +Calls to this function will fail if account does not have a +Preburn<CoinType> resource published under it. + + +
public fun preburn_to<CoinType>(account: &signer, coin: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun preburn_to<CoinType>(
+    account: &signer, coin: Diem<CoinType>) acquires CurrencyInfo, Preburn {
+    let sender = Signer::address_of(account);
+    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
+}
+
+ + + +
+ + + +## Function `burn_with_capability` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_with_capability<CoinType>(
+    preburn_address: address,
+    capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn to_burn area
+    burn_with_resource_cap(
+        borrow_global_mut<Preburn<CoinType>>(preburn_address),
+        preburn_address,
+        capability
+    )
+}
+
+ + + +
+ + + +## Function `burn_with_resource_cap` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
public fun burn_with_resource_cap<CoinType>(preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_with_resource_cap<CoinType>(
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo {
+    let currency_code = currency_code<CoinType>();
+    // Abort if no coin present in preburn area
+    assert(preburn.to_burn.value > 0, 7);
+    // destroy the coin in Preburn area
+    let Diem { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    info.total_value = info.total_value - (value as u128);
+    info.preburn_value = info.preburn_value - value;
+    // don't emit burn events for synthetic currencies
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.burn_events,
+            BurnEvent {
+                amount: value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ + + +## Function `cancel_burn_with_capability` + +Cancels the burn request in the Preburn resource stored at preburn_address and +return the coins to the caller. +This function can only be called by the holder of a +BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource +at preburn_address does not contain a pending burn request. + + +
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn_with_capability<CoinType>(
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn area
+    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
+    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    let amount = value(&coin);
+    info.preburn_value = info.preburn_value - amount;
+    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
+    // for synthetics in the first place
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.cancel_burn_events,
+            CancelBurnEvent {
+                amount,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+
+    coin
+}
+
+ + + +
+ + + +## Function `remove_burn_capability` + +Removes and returns the BurnCapability<CoinType> from account. +Calls to this function will fail if account does not have a +published BurnCapability<CoinType> resource at the top-level. + + +
public fun remove_burn_capability<CoinType>(account: &signer): DiemTest::BurnCapability<CoinType>
+
+ + + +
+Implementation + + +
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
+acquires BurnCapability {
+    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
+}
+
+ + + +
+ + + +## Function `preburn_value` + +Returns the total value of Diem<CoinType> that is waiting to be +burned throughout the system (i.e. the sum of all outstanding +preburn requests across all preburn resources for the CoinType +currency). + + +
public fun preburn_value<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
+}
+
+ + + +
+ + + +## Function `zero` + +Create a new Diem<CoinType> with a value of 0. Anyone can call +this and it will be successful as long as CoinType is a registered currency. + + +
public fun zero<CoinType>(): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun zero<CoinType>(): Diem<CoinType> {
+    assert_is_currency<CoinType>();
+    Diem<CoinType> { value: 0 }
+}
+
+ + + +
+ + + +## Function `value` + +Returns the value of the passed in coin. The value is +represented in the base units for the currency represented by +CoinType. + + +
public fun value<CoinType>(coin: &DiemTest::Diem<CoinType>): u64
+
+ + + +
+Implementation + + +
public fun value<CoinType>(coin: &Diem<CoinType>): u64 {
+    coin.value
+}
+
+ + + +
+ + + +## Function `split` + +Removes amount of value from the passed in coin. Returns the +remaining balance of the passed in coin, along with another coin +with value equal to amount. Calls will fail if amount > Diem::value(&coin). + + +
public fun split<CoinType>(coin: DiemTest::Diem<CoinType>, amount: u64): (DiemTest::Diem<CoinType>, DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun split<CoinType>(coin: Diem<CoinType>, amount: u64): (Diem<CoinType>, Diem<CoinType>) {
+    let other = withdraw(&mut coin, amount);
+    (coin, other)
+}
+
+ + + +
+ + + +## Function `withdraw` + +Withdraw amount from the passed-in coin, where the original coin is modified in place. +After this function is executed, the original coin will have +value = original_value - amount, and the new coin will have a value = amount. +Calls will abort if the passed-in amount is greater than the +value of the passed-in coin. + + +
public fun withdraw<CoinType>(coin: &mut DiemTest::Diem<CoinType>, amount: u64): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw<CoinType>(coin: &mut Diem<CoinType>, amount: u64): Diem<CoinType> {
+    // Check that `amount` is less than the coin's value
+    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
+    coin.value = coin.value - amount;
+    Diem { value: amount }
+}
+
+ + + +
+ + + +## Function `withdraw_all` + +Return a Diem<CoinType> worth coin.value and reduces the value of the input coin to +zero. Does not abort. + + +
public fun withdraw_all<CoinType>(coin: &mut DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw_all<CoinType>(coin: &mut Diem<CoinType>): Diem<CoinType> {
+    let val = coin.value;
+    withdraw(coin, val)
+}
+
+ + + +
+ + + +## Function `join` + +and returns a new coin whose value is equal to the sum of the two inputs. + + +
public fun join<CoinType>(xus: DiemTest::Diem<CoinType>, coin2: DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun join<CoinType>(xus: Diem<CoinType>, coin2: Diem<CoinType>): Diem<CoinType>  {
+    deposit(&mut xus, coin2);
+    xus
+}
+
+ + + +
+ + + +## Function `deposit` + +"Merges" the two coins. +The coin passed in by reference will have a value equal to the sum of the two coins +The check coin is consumed in the process + + +
public fun deposit<CoinType>(coin: &mut DiemTest::Diem<CoinType>, check: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun deposit<CoinType>(coin: &mut Diem<CoinType>, check: Diem<CoinType>) {
+    let Diem { value } = check;
+    coin.value = coin.value + value;
+}
+
+ + + +
+ + + +## Function `destroy_zero` + +Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero +so you cannot "burn" any non-zero amount of Diem without having +a BurnCapability for the specific CoinType. + + +
public fun destroy_zero<CoinType>(coin: DiemTest::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun destroy_zero<CoinType>(coin: Diem<CoinType>) {
+    let Diem { value } = coin;
+    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
+}
+
+ + + +
+ + + +## Function `register_currency` + +Register the type CoinType as a currency. Until the type is +registered as a currency it cannot be used as a coin/currency unit in Diem. +The passed-in dr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and +dr_account must also have the correct RegisterNewCurrency capability. +After the first registration of CoinType as a +currency, additional attempts to register CoinType as a currency +will abort. +When the CoinType is registered it publishes the +CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and +adds the currency to the set of RegisteredCurrencies. It returns +MintCapability<CoinType> and BurnCapability<CoinType> resources. + + +
public fun register_currency<CoinType>(dr_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (DiemTest::MintCapability<CoinType>, DiemTest::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun register_currency<CoinType>(
+    dr_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    is_synthetic: bool,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+): (MintCapability<CoinType>, BurnCapability<CoinType>)
+{
+    Roles::assert_diem_root(dr_account);
+    // Operational constraint that it must be stored under a specific address.
+    assert(
+        Signer::address_of(dr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
+        EINVALID_SINGLETON_ADDRESS
+    );
+
+    move_to(dr_account, CurrencyInfo<CoinType> {
+        total_value: 0,
+        preburn_value: 0,
+        to_xdx_exchange_rate,
+        is_synthetic,
+        scaling_factor,
+        fractional_part,
+        currency_code: copy currency_code,
+        can_mint: true,
+        mint_events: Event::new_event_handle<MintEvent>(dr_account),
+        burn_events: Event::new_event_handle<BurnEvent>(dr_account),
+        preburn_events: Event::new_event_handle<PreburnEvent>(dr_account),
+        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(dr_account),
+        exchange_rate_update_events: Event::new_event_handle<ToXDXExchangeRateUpdateEvent>(dr_account)
+    });
+    RegisteredCurrencies::add_currency_code(
+        dr_account,
+        currency_code,
+    );
+    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
+}
+
+ + + +
+ + + +## Function `register_SCS_currency` + +Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. +Resources are published on two distinct +accounts: The CoinInfo is published on the Diem root account, and the mint and +burn capabilities are published on a treasury compliance account. +This code allows different currencies to have different treasury compliance +accounts. + + +
public fun register_SCS_currency<CoinType>(dr_account: &signer, tc_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
+
+ + + +
+Implementation + + +
public fun register_SCS_currency<CoinType>(
+    dr_account: &signer,
+    tc_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+) {
+    Roles::assert_treasury_compliance(tc_account);
+    let (mint_cap, burn_cap) =
+        register_currency<CoinType>(
+            dr_account,
+            to_xdx_exchange_rate,
+            false,   // is_synthetic
+            scaling_factor,
+            fractional_part,
+            currency_code,
+        );
+    // DD: converted to move_to because of problems proving invariant.
+    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
+    move_to(tc_account, mint_cap);
+    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
+}
+
+ + + +
+ + + +## Function `market_cap` + +Returns the total amount of currency minted of type CoinType. + + +
public fun market_cap<CoinType>(): u128
+
+ + + +
+Implementation + + +
public fun market_cap<CoinType>(): u128
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_value` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a _rough_ approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+acquires CurrencyInfo {
+    let xdx_exchange_rate = xdx_exchange_rate<FromCoinType>();
+    FixedPoint32::multiply_u64(from_value, xdx_exchange_rate)
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_coin` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a rough approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &DiemTest::Diem<FromCoinType>): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &Diem<FromCoinType>): u64
+acquires CurrencyInfo {
+    let from_value = value(coin);
+    approx_xdx_for_value<FromCoinType>(from_value)
+}
+
+ + + +
+ + + +## Function `is_currency` + +Returns true if the type CoinType is a registered currency. +Returns false otherwise. + + +
public fun is_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + + +
+ + + +## Function `is_SCS_currency` + + + +
public fun is_SCS_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
+    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    !info.is_synthetic
+}
+
+ + + +
+ + + +## Function `is_synthetic_currency` + +Returns true if CoinType is a synthetic currency as defined in +its CurrencyInfo. Returns false otherwise. + + +
public fun is_synthetic_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_synthetic_currency<CoinType>(): bool
+acquires CurrencyInfo {
+    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
+    exists<CurrencyInfo<CoinType>>(addr) &&
+        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
+}
+
+ + + +
+ + + +## Function `scaling_factor` + +Returns the scaling factor for the CoinType currency as defined +in its CurrencyInfo. + + +
public fun scaling_factor<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun scaling_factor<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
+}
+
+ + + +
+ + + +## Function `fractional_part` + +Returns the representable (i.e. real-world) fractional part for the +CoinType currency as defined in its CurrencyInfo. + + +
public fun fractional_part<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun fractional_part<CoinType>(): u64
+acquires CurrencyInfo {
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
+}
+
+ + + +
+ + + +## Function `currency_code` + +Returns the currency code for the registered currency as defined in +its CurrencyInfo resource. + + +
public fun currency_code<CoinType>(): vector<u8>
+
+ + + +
+Implementation + + +
public fun currency_code<CoinType>(): vector<u8>
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
+}
+
+ + + +
+ + + +## Function `update_xdx_exchange_rate` + +Updates the to_xdx_exchange_rate held in the CurrencyInfo for +FromCoinType to the new passed-in xdx_exchange_rate. + + +
public fun update_xdx_exchange_rate<FromCoinType>(tr_account: &signer, xdx_exchange_rate: FixedPoint32::FixedPoint32)
+
+ + + +
+Implementation + + +
public fun update_xdx_exchange_rate<FromCoinType>(
+    tr_account: &signer,
+    xdx_exchange_rate: FixedPoint32
+) acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<FromCoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.to_xdx_exchange_rate = xdx_exchange_rate;
+    Event::emit_event(
+        &mut currency_info.exchange_rate_update_events,
+        ToXDXExchangeRateUpdateEvent {
+            currency_code: *¤cy_info.currency_code,
+            new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate),
+        }
+    );
+
+}
+
+ + + +
+ + + +## Function `xdx_exchange_rate` + +Returns the (rough) exchange rate between CoinType and XDX + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
+
+ + + +
+Implementation + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32
+acquires CurrencyInfo {
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+}
+
+ + + +
+ + + +## Function `update_minting_ability` + +There may be situations in which we disallow the further minting of +coins in the system without removing the currency. This function +allows the association TC account to control whether or not further coins of +CoinType can be minted or not. If this is called with can_mint = +true, then minting is allowed, if can_mint = false then minting is +disallowed until it is turned back on via this function. All coins +start out in the default state of can_mint = true. + + +
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
+
+ + + +
+Implementation + + +
public fun update_minting_ability<CoinType>(
+    tr_account: &signer,
+    can_mint: bool,
+    )
+acquires CurrencyInfo {
+    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
+    assert_is_currency<CoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.can_mint = can_mint;
+}
+
+ + + +
+ + + +## Function `assert_is_currency` + +Asserts that CoinType is a registered currency. + + +
fun assert_is_currency<CoinType>()
+
+ + + +
+Implementation + + +
fun assert_is_currency<CoinType>() {
+    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
+}
+
+ + + +
+ + + +## Function `assert_is_SCS_currency` + + + +
fun assert_is_SCS_currency<CoinType>()
+
+ + + +
+Implementation + + +
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
+    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
+}
+
+ + + +
+ + + +## Specification + +**************** MODULE SPECIFICATION **************** + + + + +### Module Specification + + +Verify all functions in this module. +> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions +> about coin balance. + + +
pragma verify = true;
+
+ + + +Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. + + + + + +
define spec_is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Returns currency information. + + + + + +
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
+    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Specification version of Self::approx_xdx_for_value. + + + + + +
define spec_approx_xdx_for_value<CoinType>(value: num):  num {
+    FixedPoint32::spec_multiply_u64(
+        value,
+        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+    )
+}
+
+define spec_is_SCS_currency<CoinType>(): bool {
+    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
+}
+
+ + +Checks whether the currency has a mint capability. This is only relevant for +SCS coins + + + + + +
define spec_has_mint_capability<CoinType>(addr1: address): bool {
+    exists<MintCapability<CoinType>>(addr1)
+}
+
+ + + + + +#### Minting + +For an SCS coin, the mint capability cannot move or disappear. +TODO: Specify that they're published at the one true treasurycompliance address? + + + + +If an address has a mint capability, it is an SCS currency. + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type
+                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
+                              spec_is_SCS_currency<coin_type>();
+}
+
+ + +If there is a pending offer for a mint capability, the coin_type is an SCS currency and +there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) + + +
schema MintCapabilitySpecs {
+    invariant module forall coin_type: type :
+                              spec_is_SCS_currency<coin_type>()
+                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
+    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
+        forall addr1: address, addr2: address
+             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
+                  addr1 == addr2;
+    ensures forall coin_type: type:
+        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
+            exists<MintCapability<coin_type>>(addr1);
+}
+
+ + + + +
apply MintCapabilitySpecs to *<T>, *;
+
+ + + + + +#### Conservation of currency + + +Maintain a spec variable representing the sum of +all coins of a currency type. + + + + + +
global sum_of_coin_values<CoinType>: num;
+
+ + + + + +### Resource `Diem` + + +
resource struct Diem<CoinType>
+
+ + + +
+
+value: u64 +
+
+ The value of this coin in the base units for CoinType +
+
+ +Account for updating sum_of_coin_values when a Diem is packed or unpacked. + + +
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
+invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
+
+ + + + + +### Function `mint` + + +
public fun mint<CoinType>(account: &signer, value: u64): DiemTest::Diem<CoinType>
+
+ + + + +
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
+include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + +### Function `burn` + + +
public fun burn<CoinType>(account: &signer, preburn_address: address)
+
+ + + + +
pragma verify=false;
+aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
+
+ + + + + +### Function `mint_with_capability` + + +
public fun mint_with_capability<CoinType>(value: u64, _capability: &DiemTest::MintCapability<CoinType>): DiemTest::Diem<CoinType>
+
+ + + + +
include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + + + +
schema MintAbortsIf<CoinType> {
+    value: u64;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if !spec_currency_info<CoinType>().can_mint;
+    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
+}
+
+ + + + + + + +
schema MintEnsures<CoinType> {
+    value: u64;
+    result: Diem<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+                == old(spec_currency_info<CoinType>().total_value) + value;
+    ensures result.value == value;
+}
+
+ + + + + +### Function `preburn_with_resource` + + +
public fun preburn_with_resource<CoinType>(coin: DiemTest::Diem<CoinType>, preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address)
+
+ + + + +
pragma aborts_if_is_partial = true;
+include PreburnAbortsIf<CoinType>;
+aborts_if preburn.to_burn.value != 0;
+include PreburnEnsures<CoinType>;
+
+ + + + + + + +
schema PreburnAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
+}
+
+ + + + + + + +
schema PreburnEnsures<CoinType> {
+    coin: Diem<CoinType>;
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().preburn_value
+                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
+}
+
+ + + + + +### Function `preburn_to` + + +
public fun preburn_to<CoinType>(account: &signer, coin: DiemTest::Diem<CoinType>)
+
+ + + + +
pragma aborts_if_is_partial = true;
+aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
+include PreburnAbortsIf<CoinType>;
+include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
+
+ + + + + +### Function `burn_with_capability` + + +
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + + +
aborts_if !exists<Preburn<CoinType>>(preburn_address);
+include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+
+ + + + + +### Function `burn_with_resource_cap` + + +
public fun burn_with_resource_cap<CoinType>(preburn: &mut DiemTest::Preburn<CoinType>, preburn_address: address, _capability: &DiemTest::BurnCapability<CoinType>)
+
+ + + + +
include BurnAbortsIf<CoinType>;
+include BurnEnsures<CoinType>;
+
+ + + + + + + +
schema BurnAbortsIf<CoinType> {
+    preburn: Preburn<CoinType>;
+    aborts_if !spec_is_currency<CoinType>();
+    aborts_if preburn.to_burn.value == 0;
+    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
+    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
+}
+
+ + + + + + + +
schema BurnEnsures<CoinType> {
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
+    ensures spec_currency_info<CoinType>().preburn_value
+            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
+}
+
+ + + + + +### Function `split` + + +
public fun split<CoinType>(coin: DiemTest::Diem<CoinType>, amount: u64): (DiemTest::Diem<CoinType>, DiemTest::Diem<CoinType>)
+
+ + + + +
aborts_if coin.value < amount;
+ensures result_1.value == coin.value - amount;
+ensures result_2.value == amount;
+
+ + + + + +### Function `withdraw` + + +
public fun withdraw<CoinType>(coin: &mut DiemTest::Diem<CoinType>, amount: u64): DiemTest::Diem<CoinType>
+
+ + + + +
aborts_if coin.value < amount;
+ensures coin.value == old(coin.value) - amount;
+ensures result.value == amount;
+
+ + + + + +### Function `withdraw_all` + + +
public fun withdraw_all<CoinType>(coin: &mut DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + + +
aborts_if false;
+ensures result.value == old(coin.value);
+ensures coin.value == 0;
+
+ + + + + +### Function `join` + + +
public fun join<CoinType>(xus: DiemTest::Diem<CoinType>, coin2: DiemTest::Diem<CoinType>): DiemTest::Diem<CoinType>
+
+ + + + +
aborts_if xus.value + coin2.value > max_u64();
+ensures result.value == xus.value + coin2.value;
+
+ + + + + +### Function `destroy_zero` + + +
public fun destroy_zero<CoinType>(coin: DiemTest::Diem<CoinType>)
+
+ + + + +
aborts_if coin.value > 0;
+
+ + + + + +### Function `register_currency` + + +
public fun register_currency<CoinType>(dr_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (DiemTest::MintCapability<CoinType>, DiemTest::BurnCapability<CoinType>)
+
+ + + + +
aborts_if !Roles::spec_has_diem_root_role_addr(Signer::spec_address_of(dr_account));
+aborts_if Signer::spec_address_of(dr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
+aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(dr_account));
+aborts_if spec_is_currency<CoinType>();
+include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
+
+ + + + + +### Function `register_SCS_currency` + + +
public fun register_SCS_currency<CoinType>(dr_account: &signer, tc_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
+
+ + + + +
pragma aborts_if_is_partial = true;
+ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
+
diff --git a/language/move-prover/docgen/tests/sources/LibraTest.spec_inline.md b/language/move-prover/docgen/tests/sources/LibraTest.spec_inline.md deleted file mode 100644 index ec5d415491..0000000000 --- a/language/move-prover/docgen/tests/sources/LibraTest.spec_inline.md +++ /dev/null @@ -1,2409 +0,0 @@ - - - -# Module `0x1::LibraTest` - -The Libra module describes the concept of a coin in the Libra framework. It introduces the -resource Libra::Libra<CoinType>, representing a coin of given coin type. -The module defines functions operating on coins as well as functionality like -minting and burning of coins. - - -- [Resource `RegisterNewCurrency`](#0x1_LibraTest_RegisterNewCurrency) -- [Resource `Libra`](#0x1_LibraTest_Libra) -- [Resource `MintCapability`](#0x1_LibraTest_MintCapability) -- [Resource `BurnCapability`](#0x1_LibraTest_BurnCapability) -- [Struct `MintEvent`](#0x1_LibraTest_MintEvent) -- [Struct `BurnEvent`](#0x1_LibraTest_BurnEvent) -- [Struct `PreburnEvent`](#0x1_LibraTest_PreburnEvent) -- [Struct `CancelBurnEvent`](#0x1_LibraTest_CancelBurnEvent) -- [Struct `ToLBRExchangeRateUpdateEvent`](#0x1_LibraTest_ToLBRExchangeRateUpdateEvent) -- [Resource `CurrencyInfo`](#0x1_LibraTest_CurrencyInfo) -- [Resource `Preburn`](#0x1_LibraTest_Preburn) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraTest_initialize) -- [Function `publish_burn_capability`](#0x1_LibraTest_publish_burn_capability) -- [Function `mint`](#0x1_LibraTest_mint) -- [Function `burn`](#0x1_LibraTest_burn) -- [Function `cancel_burn`](#0x1_LibraTest_cancel_burn) -- [Function `mint_with_capability`](#0x1_LibraTest_mint_with_capability) -- [Function `preburn_with_resource`](#0x1_LibraTest_preburn_with_resource) -- [Function `create_preburn`](#0x1_LibraTest_create_preburn) -- [Function `publish_preburn_to_account`](#0x1_LibraTest_publish_preburn_to_account) -- [Function `preburn_to`](#0x1_LibraTest_preburn_to) -- [Function `burn_with_capability`](#0x1_LibraTest_burn_with_capability) -- [Function `burn_with_resource_cap`](#0x1_LibraTest_burn_with_resource_cap) -- [Function `cancel_burn_with_capability`](#0x1_LibraTest_cancel_burn_with_capability) -- [Function `remove_burn_capability`](#0x1_LibraTest_remove_burn_capability) -- [Function `preburn_value`](#0x1_LibraTest_preburn_value) -- [Function `zero`](#0x1_LibraTest_zero) -- [Function `value`](#0x1_LibraTest_value) -- [Function `split`](#0x1_LibraTest_split) -- [Function `withdraw`](#0x1_LibraTest_withdraw) -- [Function `withdraw_all`](#0x1_LibraTest_withdraw_all) -- [Function `join`](#0x1_LibraTest_join) -- [Function `deposit`](#0x1_LibraTest_deposit) -- [Function `destroy_zero`](#0x1_LibraTest_destroy_zero) -- [Function `register_currency`](#0x1_LibraTest_register_currency) -- [Function `register_SCS_currency`](#0x1_LibraTest_register_SCS_currency) -- [Function `market_cap`](#0x1_LibraTest_market_cap) -- [Function `approx_lbr_for_value`](#0x1_LibraTest_approx_lbr_for_value) -- [Function `approx_lbr_for_coin`](#0x1_LibraTest_approx_lbr_for_coin) -- [Function `is_currency`](#0x1_LibraTest_is_currency) -- [Function `is_SCS_currency`](#0x1_LibraTest_is_SCS_currency) -- [Function `is_synthetic_currency`](#0x1_LibraTest_is_synthetic_currency) -- [Function `scaling_factor`](#0x1_LibraTest_scaling_factor) -- [Function `fractional_part`](#0x1_LibraTest_fractional_part) -- [Function `currency_code`](#0x1_LibraTest_currency_code) -- [Function `update_lbr_exchange_rate`](#0x1_LibraTest_update_lbr_exchange_rate) -- [Function `lbr_exchange_rate`](#0x1_LibraTest_lbr_exchange_rate) -- [Function `update_minting_ability`](#0x1_LibraTest_update_minting_ability) -- [Function `assert_is_currency`](#0x1_LibraTest_assert_is_currency) -- [Function `assert_is_SCS_currency`](#0x1_LibraTest_assert_is_SCS_currency) -- [Module Specification](#@Module_Specification_1) - - [Module Specification](#@Module_Specification_2) - - [Minting](#@Minting_3) - - [Conservation of currency](#@Conservation_of_currency_4) - - -
use 0x1::CoreAddresses;
-use 0x1::Event;
-use 0x1::FixedPoint32;
-use 0x1::LibraTimestamp;
-use 0x1::RegisteredCurrencies;
-use 0x1::Roles;
-use 0x1::Signer;
-
- - - - - -## Resource `RegisterNewCurrency` - - - -
resource struct RegisterNewCurrency
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `Libra` - -The Libra resource defines the Libra coin for each currency in -Libra. Each "coin" is coupled with a type CoinType specifying the -currency of the coin, and a value field specifying the value -of the coin (in the base units of the currency CoinType -and specified in the CurrencyInfo resource for that CoinType -published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). - - -
resource struct Libra<CoinType>
-
- - - -
-Fields - - -
-
-value: u64 -
-
- The value of this coin in the base units for CoinType -
-
- - -
- -
-Specification - -Account for updating sum_of_coin_values when a Libra is packed or unpacked. - - -
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
-invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
-
- - - -
- - - -## Resource `MintCapability` - -The MintCapability resource defines a capability to allow minting -of coins of CoinType currency by the holder of this capability. -This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() -account or the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct MintCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `BurnCapability` - -The BurnCapability resource defines a capability to allow coins -of CoinType currency to be burned by the holder of the -and the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct BurnCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Struct `MintEvent` - -The CurrencyRegistrationCapability is a singleton resource -published under the CoreAddresses::LIBRA_ROOT_ADDRESS() and grants -the capability to the 0x1::Libra module to add currencies to the -0x1::RegisteredCurrencies on-chain config. -A MintEvent is emitted every time a Libra coin is minted. This -contains the amount minted (in base units of the currency being -minted) along with the currency_code for the coin(s) being -minted, and that is defined in the currency_code field of the -CurrencyInfo resource for the currency. - - -
struct MintEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds added to the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
- - -
- - - -## Struct `BurnEvent` - -A BurnEvent is emitted every time a non-synthetic[1] Libra coin is -burned. It contains the amount burned in base units for the -currency, along with the currency_code for the coins being burned -(and as defined in the CurrencyInfo resource for that currency). -It also contains the preburn_address from which the coin is -extracted for burning. -[1] As defined by the is_synthetic field in the CurrencyInfo -for that currency. - - -
struct BurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds removed from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that stored the now-burned funds -
-
- - -
- - - -## Struct `PreburnEvent` - -A PreburnEvent is emitted every time an amount of funds with -a coin type currency_code are moved to a Preburn resource under -the account at the address preburn_address. - - -
struct PreburnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds waiting to be removed (burned) from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that now holds the funds -
-
- - -
- - - -## Struct `CancelBurnEvent` - -A CancelBurnEvent is emitted every time funds of amount in a Preburn -resource at preburn_address is canceled (removed from the -preburn, but not burned). The currency of the funds is given by the -currency_code as defined in the CurrencyInfo for that currency. - - -
struct CancelBurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds returned -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address of the Preburn resource that held the now-returned funds. -
-
- - -
- - - -## Struct `ToLBRExchangeRateUpdateEvent` - -An ToLBRExchangeRateUpdateEvent is emitted every time the to-LBR exchange -rate for the currency given by currency_code is updated. - - -
struct ToLBRExchangeRateUpdateEvent
-
- - - -
-Fields - - -
-
-currency_code: vector<u8> -
-
- The currency code of the currency whose exchange rate was updated. -
-
-new_to_lbr_exchange_rate: u64 -
-
- The new on-chain to-LBR exchange rate between the - currency_code currency and LBR. Represented in conversion - between the (on-chain) base-units for the currency and microlibra. -
-
- - -
- - - -## Resource `CurrencyInfo` - -The CurrencyInfo<CoinType> resource stores the various -pieces of information needed for a currency (CoinType) that is -registered on-chain. This resource _must_ be published under the -address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of -CoinType as a recognized currency on-chain to be successful. At -the time of registration the MintCapability<CoinType> and -BurnCapability<CoinType> capabilities are returned to the caller. -Unless they are specified otherwise the fields in this resource are immutable. - - -
resource struct CurrencyInfo<CoinType>
-
- - - -
-Fields - - -
-
-total_value: u128 -
-
- The total value for the currency represented by CoinType. Mutable. -
-
-preburn_value: u64 -
-
- Value of funds that are in the process of being burned. Mutable. -
-
-to_lbr_exchange_rate: FixedPoint32::FixedPoint32 -
-
- The (rough) exchange rate from CoinType to LBR. Mutable. -
-
-is_synthetic: bool -
-
- Holds whether or not this currency is synthetic (contributes to the - off-chain reserve) or not. An example of such a synthetic -currency would be the LBR. -
-
-scaling_factor: u64 -
-
- The scaling factor for the coin (i.e. the amount to multiply by - to get to the human-readable representation for this currency). - e.g. 10^6 for Coin1 - - > TODO(wrwg): should the above be "to divide by"? -
-
-fractional_part: u64 -
-
- The smallest fractional part (number of decimal places) to be - used in the human-readable representation for the currency (e.g. - 10^2 for Coin1 cents) -
-
-currency_code: vector<u8> -
-
- The code symbol for this CoinType. ASCII encoded. - e.g. for "LBR" this is x"4C4252". No character limit. -
-
-can_mint: bool -
-
- We may want to disable the ability to mint further coins of a - currency while that currency is still around. This allows us to - keep the currency in circulation while disallowing further - creation of coins in the CoinType currency. Mutable. -
-
-mint_events: Event::EventHandle<LibraTest::MintEvent> -
-
- Event stream for minting and where MintEvents will be emitted. -
-
-burn_events: Event::EventHandle<LibraTest::BurnEvent> -
-
- Event stream for burning, and where BurnEvents will be emitted. -
-
-preburn_events: Event::EventHandle<LibraTest::PreburnEvent> -
-
- Event stream for preburn requests, and where all - PreburnEvents for this CoinType will be emitted. -
-
-cancel_burn_events: Event::EventHandle<LibraTest::CancelBurnEvent> -
-
- Event stream for all cancelled preburn requests for this - CoinType. -
-
-exchange_rate_update_events: Event::EventHandle<LibraTest::ToLBRExchangeRateUpdateEvent> -
-
- Event stream for emiting exchange rate change events -
-
- - -
- - - -## Resource `Preburn` - -A holding area where funds that will subsequently be burned wait while their underlying -assets are moved off-chain. -This resource can only be created by the holder of a BurnCapability. An account that -contains this address has the authority to initiate a burn request. A burn request can be -resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) -returning the funds to the account that initiated the burn request. -Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. - - -
resource struct Preburn<CoinType>
-
- - - -
-Fields - - -
-
-to_burn: LibraTest::Libra<CoinType> -
-
- A single pending burn amount. - There is no pending burn request if the value in to_burn is 0 -
-
- - -
- - - -## Constants - - - - - - -
const ENOT_GENESIS: u64 = 0;
-
- - - - - - - -
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
-
- - - - - - - -
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
-
- - - - - - - -
const EDOES_NOT_HAVE_LIBRA_ROOT_ROLE: u64 = 9;
-
- - - - - - - -
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
-
- - - - - - - -
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
-
- - - - - - - -
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
-
- - - - - - - -
const EMINTING_NOT_ALLOWED: u64 = 3;
-
- - - - - - - -
const ENOT_AN_SCS_CURRENCY: u64 = 8;
-
- - - - - - - -
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
-
- - - - - - - -
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
-
- - - - - -## Function `initialize` - -Grants the RegisterNewCurrency privilege to -the calling account as long as it has the correct role (TC). -Aborts if account does not have a RoleId that corresponds with -the treacury compliance role. -Initialization of the Libra module; initializes the set of -registered currencies in the 0x1::RegisteredCurrencies on-chain -config, and publishes the CurrencyRegistrationCapability under the -CoreAddresses::LIBRA_ROOT_ADDRESS(). This can only be called from genesis. - - -
public fun initialize(config_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    config_account: &signer,
-) {
-    assert(LibraTimestamp::is_genesis(), ENOT_GENESIS);
-    // Operational constraint
-    assert(
-        Signer::address_of(config_account) == CoreAddresses::LIBRA_ROOT_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-    RegisteredCurrencies::initialize(config_account);
-}
-
- - - -
- - - -## Function `publish_burn_capability` - -Publishes the BurnCapability cap for the CoinType currency under account. CoinType -must be a registered currency type. -The caller must pass a TreasuryComplianceRole capability. -TODO (dd): I think there is a multiple signer problem here. - - -
public fun publish_burn_capability<CoinType>(account: &signer, cap: LibraTest::BurnCapability<CoinType>, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun publish_burn_capability<CoinType>(
-    account: &signer,
-    cap: BurnCapability<CoinType>,
-    tc_account: &signer,
-) {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    move_to(account, cap)
-}
-
- - - -
- - - -## Function `mint` - -Mints amount coins. The account must hold a -MintCapability<CoinType> at the top-level in order for this call -to be successful, and will fail with MISSING_DATA otherwise. - - -
public fun mint<CoinType>(account: &signer, value: u64): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint<CoinType>(account: &signer, value: u64): Libra<CoinType>
-acquires CurrencyInfo, MintCapability {
-    mint_with_capability(
-        value,
-        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- -
-Specification - - - -
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
-include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - -
- - - -## Function `burn` - -Burns the coins currently held in the Preburn resource held under preburn_address. -Calls to this functions will fail if the account does not have a -published BurnCapability for the CoinType published under it. - - -
public fun burn<CoinType>(account: &signer, preburn_address: address)
-
- - - -
-Implementation - - -
public fun burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-) acquires BurnCapability, CurrencyInfo, Preburn {
-    burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- -
-Specification - - - -
pragma verify=false;
-aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
-
- - - -
- - - -## Function `cancel_burn` - -Cancels the current burn request in the Preburn resource held -under the preburn_address, and returns the coins. -Calls to this will fail if the sender does not have a published -BurnCapability<CoinType>, or if there is no preburn request -outstanding in the Preburn resource under preburn_address. - - -
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-): Libra<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
-    cancel_burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- - - -## Function `mint_with_capability` - -Mint a new Libra coin of CoinType currency worth value. The -caller must have a reference to a MintCapability<CoinType>. Only -the treasury compliance account or the 0x1::LBR module can acquire such a -reference. - - -
public fun mint_with_capability<CoinType>(value: u64, _capability: &LibraTest::MintCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint_with_capability<CoinType>(
-    value: u64,
-    _capability: &MintCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    let currency_code = currency_code<CoinType>();
-    // update market cap resource to reflect minting
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(info.can_mint, EMINTING_NOT_ALLOWED);
-    info.total_value = info.total_value + (value as u128);
-    // don't emit mint events for synthetic currenices
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.mint_events,
-            MintEvent{
-                amount: value,
-                currency_code,
-            }
-        );
-    };
-
-    Libra<CoinType> { value }
-}
-
- - - -
- -
-Specification - - - -
include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - - - -
schema MintAbortsIf<CoinType> {
-    value: u64;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if !spec_currency_info<CoinType>().can_mint;
-    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
-}
-
- - - - - - - -
schema MintEnsures<CoinType> {
-    value: u64;
-    result: Libra<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-                == old(spec_currency_info<CoinType>().total_value) + value;
-    ensures result.value == value;
-}
-
- - - -
- - - -## Function `preburn_with_resource` - -Add the coin to the preburn to_burn field in the Preburn resource -held at the address preburn_address if it is empty, otherwise raise -a PendingPreburn Error (code 6). Emits a PreburnEvent to -the preburn_events event stream in the CurrencyInfo for the -CoinType passed in. However, if the currency being preburned is -synthetic then no PreburnEvent event will be emitted. - - -
public fun preburn_with_resource<CoinType>(coin: LibraTest::Libra<CoinType>, preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address)
-
- - - -
-Implementation - - -
public fun preburn_with_resource<CoinType>(
-    coin: Libra<CoinType>,
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-) acquires CurrencyInfo {
-    let coin_value = value(&coin);
-    // Throw if already occupied
-    assert(value(&preburn.to_burn) == 0, 6);
-    deposit(&mut preburn.to_burn, coin);
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.preburn_value = info.preburn_value + coin_value;
-    // don't emit preburn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.preburn_events,
-            PreburnEvent{
-                amount: coin_value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- -
-Specification - - - -
pragma aborts_if_is_partial = true;
-include PreburnAbortsIf<CoinType>;
-aborts_if preburn.to_burn.value != 0;
-include PreburnEnsures<CoinType>;
-
- - - - - - - -
schema PreburnAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
-}
-
- - - - - - - -
schema PreburnEnsures<CoinType> {
-    coin: Libra<CoinType>;
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().preburn_value
-                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
-}
-
- - - -
- - - -## Function `create_preburn` - -Create a Preburn<CoinType> resource - - -
public fun create_preburn<CoinType>(tc_account: &signer): LibraTest::Preburn<CoinType>
-
- - - -
-Implementation - - -
public fun create_preburn<CoinType>(
-    tc_account: &signer
-): Preburn<CoinType> {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
-    // I don't think it can happen, but that may be difficult to prove.
-    Preburn<CoinType> { to_burn: zero<CoinType>() }
-}
-
- - - -
- - - -## Function `publish_preburn_to_account` - -Publishes a Preburn resource under account. This function is -used for bootstrapping the designated dealer at account-creation -time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating -this resource for the designated dealer. - - -
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun publish_preburn_to_account<CoinType>(
-    account: &signer,
-    tc_account: &signer
-) acquires CurrencyInfo {
-    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
-    move_to(account, create_preburn<CoinType>(tc_account))
-}
-
- - - -
- - - -## Function `preburn_to` - -Sends coin to the preburn queue for account, where it will wait to either be burned -or returned to the balance of account. -Calls to this function will fail if account does not have a -Preburn<CoinType> resource published under it. - - -
public fun preburn_to<CoinType>(account: &signer, coin: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun preburn_to<CoinType>(
-    account: &signer, coin: Libra<CoinType>) acquires CurrencyInfo, Preburn {
-    let sender = Signer::address_of(account);
-    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
-}
-
- - - -
- -
-Specification - - - -
pragma aborts_if_is_partial = true;
-aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
-include PreburnAbortsIf<CoinType>;
-include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
-
- - - -
- - - -## Function `burn_with_capability` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_with_capability<CoinType>(
-    preburn_address: address,
-    capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn to_burn area
-    burn_with_resource_cap(
-        borrow_global_mut<Preburn<CoinType>>(preburn_address),
-        preburn_address,
-        capability
-    )
-}
-
- - - -
- -
-Specification - - - -
aborts_if !exists<Preburn<CoinType>>(preburn_address);
-include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-
- - - -
- - - -## Function `burn_with_resource_cap` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_resource_cap<CoinType>(preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_with_resource_cap<CoinType>(
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo {
-    let currency_code = currency_code<CoinType>();
-    // Abort if no coin present in preburn area
-    assert(preburn.to_burn.value > 0, 7);
-    // destroy the coin in Preburn area
-    let Libra { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.total_value = info.total_value - (value as u128);
-    info.preburn_value = info.preburn_value - value;
-    // don't emit burn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.burn_events,
-            BurnEvent {
-                amount: value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- -
-Specification - - - -
include BurnAbortsIf<CoinType>;
-include BurnEnsures<CoinType>;
-
- - - - - - - -
schema BurnAbortsIf<CoinType> {
-    preburn: Preburn<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if preburn.to_burn.value == 0;
-    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
-    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
-}
-
- - - - - - - -
schema BurnEnsures<CoinType> {
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
-    ensures spec_currency_info<CoinType>().preburn_value
-            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
-}
-
- - - -
- - - -## Function `cancel_burn_with_capability` - -Cancels the burn request in the Preburn resource stored at preburn_address and -return the coins to the caller. -This function can only be called by the holder of a -BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource -at preburn_address does not contain a pending burn request. - - -
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn_with_capability<CoinType>(
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn area
-    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
-    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    let amount = value(&coin);
-    info.preburn_value = info.preburn_value - amount;
-    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
-    // for synthetics in the first place
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.cancel_burn_events,
-            CancelBurnEvent {
-                amount,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-
-    coin
-}
-
- - - -
- - - -## Function `remove_burn_capability` - -Removes and returns the BurnCapability<CoinType> from account. -Calls to this function will fail if account does not have a -published BurnCapability<CoinType> resource at the top-level. - - -
public fun remove_burn_capability<CoinType>(account: &signer): LibraTest::BurnCapability<CoinType>
-
- - - -
-Implementation - - -
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
-acquires BurnCapability {
-    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
-}
-
- - - -
- - - -## Function `preburn_value` - -Returns the total value of Libra<CoinType> that is waiting to be -burned throughout the system (i.e. the sum of all outstanding -preburn requests across all preburn resources for the CoinType -currency). - - -
public fun preburn_value<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
-}
-
- - - -
- - - -## Function `zero` - -Create a new Libra<CoinType> with a value of 0. Anyone can call -this and it will be successful as long as CoinType is a registered currency. - - -
public fun zero<CoinType>(): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun zero<CoinType>(): Libra<CoinType> {
-    assert_is_currency<CoinType>();
-    Libra<CoinType> { value: 0 }
-}
-
- - - -
- - - -## Function `value` - -Returns the value of the passed in coin. The value is -represented in the base units for the currency represented by -CoinType. - - -
public fun value<CoinType>(coin: &LibraTest::Libra<CoinType>): u64
-
- - - -
-Implementation - - -
public fun value<CoinType>(coin: &Libra<CoinType>): u64 {
-    coin.value
-}
-
- - - -
- - - -## Function `split` - -Removes amount of value from the passed in coin. Returns the -remaining balance of the passed in coin, along with another coin -with value equal to amount. Calls will fail if amount > Libra::value(&coin). - - -
public fun split<CoinType>(coin: LibraTest::Libra<CoinType>, amount: u64): (LibraTest::Libra<CoinType>, LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun split<CoinType>(coin: Libra<CoinType>, amount: u64): (Libra<CoinType>, Libra<CoinType>) {
-    let other = withdraw(&mut coin, amount);
-    (coin, other)
-}
-
- - - -
- -
-Specification - - - -
aborts_if coin.value < amount;
-ensures result_1.value == coin.value - amount;
-ensures result_2.value == amount;
-
- - - -
- - - -## Function `withdraw` - -Withdraw amount from the passed-in coin, where the original coin is modified in place. -After this function is executed, the original coin will have -value = original_value - amount, and the new coin will have a value = amount. -Calls will abort if the passed-in amount is greater than the -value of the passed-in coin. - - -
public fun withdraw<CoinType>(coin: &mut LibraTest::Libra<CoinType>, amount: u64): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw<CoinType>(coin: &mut Libra<CoinType>, amount: u64): Libra<CoinType> {
-    // Check that `amount` is less than the coin's value
-    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
-    coin.value = coin.value - amount;
-    Libra { value: amount }
-}
-
- - - -
- -
-Specification - - - -
aborts_if coin.value < amount;
-ensures coin.value == old(coin.value) - amount;
-ensures result.value == amount;
-
- - - -
- - - -## Function `withdraw_all` - -Return a Libra<CoinType> worth coin.value and reduces the value of the input coin to -zero. Does not abort. - - -
public fun withdraw_all<CoinType>(coin: &mut LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw_all<CoinType>(coin: &mut Libra<CoinType>): Libra<CoinType> {
-    let val = coin.value;
-    withdraw(coin, val)
-}
-
- - - -
- -
-Specification - - - -
aborts_if false;
-ensures result.value == old(coin.value);
-ensures coin.value == 0;
-
- - - -
- - - -## Function `join` - -and returns a new coin whose value is equal to the sum of the two inputs. - - -
public fun join<CoinType>(coin1_tmp: LibraTest::Libra<CoinType>, coin2: LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun join<CoinType>(coin1_tmp: Libra<CoinType>, coin2: Libra<CoinType>): Libra<CoinType>  {
-    deposit(&mut coin1_tmp, coin2);
-    coin1_tmp
-}
-
- - - -
- -
-Specification - - - -
aborts_if coin1_tmp.value + coin2.value > max_u64();
-ensures result.value == coin1_tmp.value + coin2.value;
-
- - - -
- - - -## Function `deposit` - -"Merges" the two coins. -The coin passed in by reference will have a value equal to the sum of the two coins -The check coin is consumed in the process - - -
public fun deposit<CoinType>(coin: &mut LibraTest::Libra<CoinType>, check: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun deposit<CoinType>(coin: &mut Libra<CoinType>, check: Libra<CoinType>) {
-    let Libra { value } = check;
-    coin.value = coin.value + value;
-}
-
- - - -
- - - -## Function `destroy_zero` - -Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero -so you cannot "burn" any non-zero amount of Libra without having -a BurnCapability for the specific CoinType. - - -
public fun destroy_zero<CoinType>(coin: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun destroy_zero<CoinType>(coin: Libra<CoinType>) {
-    let Libra { value } = coin;
-    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
-}
-
- - - -
- -
-Specification - - - -
aborts_if coin.value > 0;
-
- - - -
- - - -## Function `register_currency` - -Register the type CoinType as a currency. Until the type is -registered as a currency it cannot be used as a coin/currency unit in Libra. -The passed-in lr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and -lr_account must also have the correct RegisterNewCurrency capability. -After the first registration of CoinType as a -currency, additional attempts to register CoinType as a currency -will abort. -When the CoinType is registered it publishes the -CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and -adds the currency to the set of RegisteredCurrencies. It returns -MintCapability<CoinType> and BurnCapability<CoinType> resources. - - -
public fun register_currency<CoinType>(lr_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (LibraTest::MintCapability<CoinType>, LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun register_currency<CoinType>(
-    lr_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    is_synthetic: bool,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-): (MintCapability<CoinType>, BurnCapability<CoinType>)
-{
-    Roles::assert_libra_root(lr_account);
-    // Operational constraint that it must be stored under a specific address.
-    assert(
-        Signer::address_of(lr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-
-    move_to(lr_account, CurrencyInfo<CoinType> {
-        total_value: 0,
-        preburn_value: 0,
-        to_lbr_exchange_rate,
-        is_synthetic,
-        scaling_factor,
-        fractional_part,
-        currency_code: copy currency_code,
-        can_mint: true,
-        mint_events: Event::new_event_handle<MintEvent>(lr_account),
-        burn_events: Event::new_event_handle<BurnEvent>(lr_account),
-        preburn_events: Event::new_event_handle<PreburnEvent>(lr_account),
-        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(lr_account),
-        exchange_rate_update_events: Event::new_event_handle<ToLBRExchangeRateUpdateEvent>(lr_account)
-    });
-    RegisteredCurrencies::add_currency_code(
-        lr_account,
-        currency_code,
-    );
-    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
-}
-
- - - -
- -
-Specification - - - -
aborts_if !Roles::spec_has_libra_root_role_addr(Signer::spec_address_of(lr_account));
-aborts_if Signer::spec_address_of(lr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
-aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(lr_account));
-aborts_if spec_is_currency<CoinType>();
-include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
-
- - - -
- - - -## Function `register_SCS_currency` - -Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. -Resources are published on two distinct -accounts: The CoinInfo is published on the Libra root account, and the mint and -burn capabilities are published on a treasury compliance account. -This code allows different currencies to have different treasury compliance -accounts. - - -
public fun register_SCS_currency<CoinType>(lr_account: &signer, tc_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
-
- - - -
-Implementation - - -
public fun register_SCS_currency<CoinType>(
-    lr_account: &signer,
-    tc_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-) {
-    Roles::assert_treasury_compliance(tc_account);
-    let (mint_cap, burn_cap) =
-        register_currency<CoinType>(
-            lr_account,
-            to_lbr_exchange_rate,
-            false,   // is_synthetic
-            scaling_factor,
-            fractional_part,
-            currency_code,
-        );
-    // DD: converted to move_to because of problems proving invariant.
-    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
-    move_to(tc_account, mint_cap);
-    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
-}
-
- - - -
- -
-Specification - - - -
pragma aborts_if_is_partial = true;
-ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
-
- - - -
- - - -## Function `market_cap` - -Returns the total amount of currency minted of type CoinType. - - -
public fun market_cap<CoinType>(): u128
-
- - - -
-Implementation - - -
public fun market_cap<CoinType>(): u128
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
-}
-
- - - -
- - - -## Function `approx_lbr_for_value` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a _rough_ approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-acquires CurrencyInfo {
-    let lbr_exchange_rate = lbr_exchange_rate<FromCoinType>();
-    FixedPoint32::multiply_u64(from_value, lbr_exchange_rate)
-}
-
- - - -
- - - -## Function `approx_lbr_for_coin` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a rough approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &LibraTest::Libra<FromCoinType>): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &Libra<FromCoinType>): u64
-acquires CurrencyInfo {
-    let from_value = value(coin);
-    approx_lbr_for_value<FromCoinType>(from_value)
-}
-
- - - -
- - - -## Function `is_currency` - -Returns true if the type CoinType is a registered currency. -Returns false otherwise. - - -
public fun is_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - - -
- - - -## Function `is_SCS_currency` - - - -
public fun is_SCS_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
-    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    !info.is_synthetic
-}
-
- - - -
- - - -## Function `is_synthetic_currency` - -Returns true if CoinType is a synthetic currency as defined in -its CurrencyInfo. Returns false otherwise. - - -
public fun is_synthetic_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_synthetic_currency<CoinType>(): bool
-acquires CurrencyInfo {
-    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
-    exists<CurrencyInfo<CoinType>>(addr) &&
-        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
-}
-
- - - -
- - - -## Function `scaling_factor` - -Returns the scaling factor for the CoinType currency as defined -in its CurrencyInfo. - - -
public fun scaling_factor<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun scaling_factor<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
-}
-
- - - -
- - - -## Function `fractional_part` - -Returns the representable (i.e. real-world) fractional part for the -CoinType currency as defined in its CurrencyInfo. - - -
public fun fractional_part<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun fractional_part<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
-}
-
- - - -
- - - -## Function `currency_code` - -Returns the currency code for the registered currency as defined in -its CurrencyInfo resource. - - -
public fun currency_code<CoinType>(): vector<u8>
-
- - - -
-Implementation - - -
public fun currency_code<CoinType>(): vector<u8>
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
-}
-
- - - -
- - - -## Function `update_lbr_exchange_rate` - -Updates the to_lbr_exchange_rate held in the CurrencyInfo for -FromCoinType to the new passed-in lbr_exchange_rate. - - -
public fun update_lbr_exchange_rate<FromCoinType>(tr_account: &signer, lbr_exchange_rate: FixedPoint32::FixedPoint32)
-
- - - -
-Implementation - - -
public fun update_lbr_exchange_rate<FromCoinType>(
-    tr_account: &signer,
-    lbr_exchange_rate: FixedPoint32
-) acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<FromCoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.to_lbr_exchange_rate = lbr_exchange_rate;
-    Event::emit_event(
-        &mut currency_info.exchange_rate_update_events,
-        ToLBRExchangeRateUpdateEvent {
-            currency_code: *¤cy_info.currency_code,
-            new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate),
-        }
-    );
-
-}
-
- - - -
- - - -## Function `lbr_exchange_rate` - -Returns the (rough) exchange rate between CoinType and LBR - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
-
- - - -
-Implementation - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-}
-
- - - -
- - - -## Function `update_minting_ability` - -There may be situations in which we disallow the further minting of -coins in the system without removing the currency. This function -allows the association TC account to control whether or not further coins of -CoinType can be minted or not. If this is called with can_mint = -true, then minting is allowed, if can_mint = false then minting is -disallowed until it is turned back on via this function. All coins -start out in the default state of can_mint = true. - - -
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
-
- - - -
-Implementation - - -
public fun update_minting_ability<CoinType>(
-    tr_account: &signer,
-    can_mint: bool,
-    )
-acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.can_mint = can_mint;
-}
-
- - - -
- - - -## Function `assert_is_currency` - -Asserts that CoinType is a registered currency. - - -
fun assert_is_currency<CoinType>()
-
- - - -
-Implementation - - -
fun assert_is_currency<CoinType>() {
-    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
-}
-
- - - -
- - - -## Function `assert_is_SCS_currency` - - - -
fun assert_is_SCS_currency<CoinType>()
-
- - - -
-Implementation - - -
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
-    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
-}
-
- - - -
- - - -## Module Specification - -**************** MODULE SPECIFICATION **************** - - - - -### Module Specification - - -Verify all functions in this module. -> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions -> about coin balance. - - -
pragma verify = true;
-
- - - -Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. - - - - - -
define spec_is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Returns currency information. - - - - - -
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
-    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Specification version of Self::approx_lbr_for_value. - - - - - -
define spec_approx_lbr_for_value<CoinType>(value: num):  num {
-    FixedPoint32::spec_multiply_u64(
-        value,
-        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-    )
-}
-
-define spec_is_SCS_currency<CoinType>(): bool {
-    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
-}
-
- - -Checks whether the currency has a mint capability. This is only relevant for -SCS coins - - - - - -
define spec_has_mint_capability<CoinType>(addr1: address): bool {
-    exists<MintCapability<CoinType>>(addr1)
-}
-
- - - - - -#### Minting - -For an SCS coin, the mint capability cannot move or disappear. -TODO: Specify that they're published at the one true treasurycompliance address? - - - - -If an address has a mint capability, it is an SCS currency. - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type
-                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
-                              spec_is_SCS_currency<coin_type>();
-}
-
- - -If there is a pending offer for a mint capability, the coin_type is an SCS currency and -there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type :
-                              spec_is_SCS_currency<coin_type>()
-                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
-    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
-        forall addr1: address, addr2: address
-             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
-                  addr1 == addr2;
-    ensures forall coin_type: type:
-        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
-            exists<MintCapability<coin_type>>(addr1);
-}
-
- - - - -
apply MintCapabilitySpecs to *<T>, *;
-
- - - - - -#### Conservation of currency - - -Maintain a spec variable representing the sum of -all coins of a currency type. - - - - - -
global sum_of_coin_values<CoinType>: num;
-
diff --git a/language/move-prover/docgen/tests/sources/LibraTest.spec_inline_no_fold.md b/language/move-prover/docgen/tests/sources/LibraTest.spec_inline_no_fold.md deleted file mode 100644 index e0cb9a82be..0000000000 --- a/language/move-prover/docgen/tests/sources/LibraTest.spec_inline_no_fold.md +++ /dev/null @@ -1,2214 +0,0 @@ - - - -# Module `0x1::LibraTest` - -The Libra module describes the concept of a coin in the Libra framework. It introduces the -resource Libra::Libra<CoinType>, representing a coin of given coin type. -The module defines functions operating on coins as well as functionality like -minting and burning of coins. - - -- [Resource `RegisterNewCurrency`](#0x1_LibraTest_RegisterNewCurrency) -- [Resource `Libra`](#0x1_LibraTest_Libra) -- [Resource `MintCapability`](#0x1_LibraTest_MintCapability) -- [Resource `BurnCapability`](#0x1_LibraTest_BurnCapability) -- [Struct `MintEvent`](#0x1_LibraTest_MintEvent) -- [Struct `BurnEvent`](#0x1_LibraTest_BurnEvent) -- [Struct `PreburnEvent`](#0x1_LibraTest_PreburnEvent) -- [Struct `CancelBurnEvent`](#0x1_LibraTest_CancelBurnEvent) -- [Struct `ToLBRExchangeRateUpdateEvent`](#0x1_LibraTest_ToLBRExchangeRateUpdateEvent) -- [Resource `CurrencyInfo`](#0x1_LibraTest_CurrencyInfo) -- [Resource `Preburn`](#0x1_LibraTest_Preburn) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraTest_initialize) -- [Function `publish_burn_capability`](#0x1_LibraTest_publish_burn_capability) -- [Function `mint`](#0x1_LibraTest_mint) -- [Function `burn`](#0x1_LibraTest_burn) -- [Function `cancel_burn`](#0x1_LibraTest_cancel_burn) -- [Function `mint_with_capability`](#0x1_LibraTest_mint_with_capability) -- [Function `preburn_with_resource`](#0x1_LibraTest_preburn_with_resource) -- [Function `create_preburn`](#0x1_LibraTest_create_preburn) -- [Function `publish_preburn_to_account`](#0x1_LibraTest_publish_preburn_to_account) -- [Function `preburn_to`](#0x1_LibraTest_preburn_to) -- [Function `burn_with_capability`](#0x1_LibraTest_burn_with_capability) -- [Function `burn_with_resource_cap`](#0x1_LibraTest_burn_with_resource_cap) -- [Function `cancel_burn_with_capability`](#0x1_LibraTest_cancel_burn_with_capability) -- [Function `remove_burn_capability`](#0x1_LibraTest_remove_burn_capability) -- [Function `preburn_value`](#0x1_LibraTest_preburn_value) -- [Function `zero`](#0x1_LibraTest_zero) -- [Function `value`](#0x1_LibraTest_value) -- [Function `split`](#0x1_LibraTest_split) -- [Function `withdraw`](#0x1_LibraTest_withdraw) -- [Function `withdraw_all`](#0x1_LibraTest_withdraw_all) -- [Function `join`](#0x1_LibraTest_join) -- [Function `deposit`](#0x1_LibraTest_deposit) -- [Function `destroy_zero`](#0x1_LibraTest_destroy_zero) -- [Function `register_currency`](#0x1_LibraTest_register_currency) -- [Function `register_SCS_currency`](#0x1_LibraTest_register_SCS_currency) -- [Function `market_cap`](#0x1_LibraTest_market_cap) -- [Function `approx_lbr_for_value`](#0x1_LibraTest_approx_lbr_for_value) -- [Function `approx_lbr_for_coin`](#0x1_LibraTest_approx_lbr_for_coin) -- [Function `is_currency`](#0x1_LibraTest_is_currency) -- [Function `is_SCS_currency`](#0x1_LibraTest_is_SCS_currency) -- [Function `is_synthetic_currency`](#0x1_LibraTest_is_synthetic_currency) -- [Function `scaling_factor`](#0x1_LibraTest_scaling_factor) -- [Function `fractional_part`](#0x1_LibraTest_fractional_part) -- [Function `currency_code`](#0x1_LibraTest_currency_code) -- [Function `update_lbr_exchange_rate`](#0x1_LibraTest_update_lbr_exchange_rate) -- [Function `lbr_exchange_rate`](#0x1_LibraTest_lbr_exchange_rate) -- [Function `update_minting_ability`](#0x1_LibraTest_update_minting_ability) -- [Function `assert_is_currency`](#0x1_LibraTest_assert_is_currency) -- [Function `assert_is_SCS_currency`](#0x1_LibraTest_assert_is_SCS_currency) -- [Module Specification](#@Module_Specification_1) - - [Module Specification](#@Module_Specification_2) - - [Minting](#@Minting_3) - - [Conservation of currency](#@Conservation_of_currency_4) - - -
use 0x1::CoreAddresses;
-use 0x1::Event;
-use 0x1::FixedPoint32;
-use 0x1::LibraTimestamp;
-use 0x1::RegisteredCurrencies;
-use 0x1::Roles;
-use 0x1::Signer;
-
- - - - - -## Resource `RegisterNewCurrency` - - - -
resource struct RegisterNewCurrency
-
- - - -##### Fields - - -
-
-dummy_field: bool -
-
- -
-
- - - - -## Resource `Libra` - -The Libra resource defines the Libra coin for each currency in -Libra. Each "coin" is coupled with a type CoinType specifying the -currency of the coin, and a value field specifying the value -of the coin (in the base units of the currency CoinType -and specified in the CurrencyInfo resource for that CoinType -published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). - - -
resource struct Libra<CoinType>
-
- - - -##### Fields - - -
-
-value: u64 -
-
- The value of this coin in the base units for CoinType -
-
- - -##### Specification - -Account for updating sum_of_coin_values when a Libra is packed or unpacked. - - -
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
-invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
-
- - - - - -## Resource `MintCapability` - -The MintCapability resource defines a capability to allow minting -of coins of CoinType currency by the holder of this capability. -This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() -account or the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct MintCapability<CoinType>
-
- - - -##### Fields - - -
-
-dummy_field: bool -
-
- -
-
- - - - -## Resource `BurnCapability` - -The BurnCapability resource defines a capability to allow coins -of CoinType currency to be burned by the holder of the -and the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct BurnCapability<CoinType>
-
- - - -##### Fields - - -
-
-dummy_field: bool -
-
- -
-
- - - - -## Struct `MintEvent` - -The CurrencyRegistrationCapability is a singleton resource -published under the CoreAddresses::LIBRA_ROOT_ADDRESS() and grants -the capability to the 0x1::Libra module to add currencies to the -0x1::RegisteredCurrencies on-chain config. -A MintEvent is emitted every time a Libra coin is minted. This -contains the amount minted (in base units of the currency being -minted) along with the currency_code for the coin(s) being -minted, and that is defined in the currency_code field of the -CurrencyInfo resource for the currency. - - -
struct MintEvent
-
- - - -##### Fields - - -
-
-amount: u64 -
-
- Funds added to the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
- - - - -## Struct `BurnEvent` - -A BurnEvent is emitted every time a non-synthetic[1] Libra coin is -burned. It contains the amount burned in base units for the -currency, along with the currency_code for the coins being burned -(and as defined in the CurrencyInfo resource for that currency). -It also contains the preburn_address from which the coin is -extracted for burning. -[1] As defined by the is_synthetic field in the CurrencyInfo -for that currency. - - -
struct BurnEvent
-
- - - -##### Fields - - -
-
-amount: u64 -
-
- Funds removed from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that stored the now-burned funds -
-
- - - - -## Struct `PreburnEvent` - -A PreburnEvent is emitted every time an amount of funds with -a coin type currency_code are moved to a Preburn resource under -the account at the address preburn_address. - - -
struct PreburnEvent
-
- - - -##### Fields - - -
-
-amount: u64 -
-
- The amount of funds waiting to be removed (burned) from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that now holds the funds -
-
- - - - -## Struct `CancelBurnEvent` - -A CancelBurnEvent is emitted every time funds of amount in a Preburn -resource at preburn_address is canceled (removed from the -preburn, but not burned). The currency of the funds is given by the -currency_code as defined in the CurrencyInfo for that currency. - - -
struct CancelBurnEvent
-
- - - -##### Fields - - -
-
-amount: u64 -
-
- The amount of funds returned -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address of the Preburn resource that held the now-returned funds. -
-
- - - - -## Struct `ToLBRExchangeRateUpdateEvent` - -An ToLBRExchangeRateUpdateEvent is emitted every time the to-LBR exchange -rate for the currency given by currency_code is updated. - - -
struct ToLBRExchangeRateUpdateEvent
-
- - - -##### Fields - - -
-
-currency_code: vector<u8> -
-
- The currency code of the currency whose exchange rate was updated. -
-
-new_to_lbr_exchange_rate: u64 -
-
- The new on-chain to-LBR exchange rate between the - currency_code currency and LBR. Represented in conversion - between the (on-chain) base-units for the currency and microlibra. -
-
- - - - -## Resource `CurrencyInfo` - -The CurrencyInfo<CoinType> resource stores the various -pieces of information needed for a currency (CoinType) that is -registered on-chain. This resource _must_ be published under the -address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of -CoinType as a recognized currency on-chain to be successful. At -the time of registration the MintCapability<CoinType> and -BurnCapability<CoinType> capabilities are returned to the caller. -Unless they are specified otherwise the fields in this resource are immutable. - - -
resource struct CurrencyInfo<CoinType>
-
- - - -##### Fields - - -
-
-total_value: u128 -
-
- The total value for the currency represented by CoinType. Mutable. -
-
-preburn_value: u64 -
-
- Value of funds that are in the process of being burned. Mutable. -
-
-to_lbr_exchange_rate: FixedPoint32::FixedPoint32 -
-
- The (rough) exchange rate from CoinType to LBR. Mutable. -
-
-is_synthetic: bool -
-
- Holds whether or not this currency is synthetic (contributes to the - off-chain reserve) or not. An example of such a synthetic -currency would be the LBR. -
-
-scaling_factor: u64 -
-
- The scaling factor for the coin (i.e. the amount to multiply by - to get to the human-readable representation for this currency). - e.g. 10^6 for Coin1 - - > TODO(wrwg): should the above be "to divide by"? -
-
-fractional_part: u64 -
-
- The smallest fractional part (number of decimal places) to be - used in the human-readable representation for the currency (e.g. - 10^2 for Coin1 cents) -
-
-currency_code: vector<u8> -
-
- The code symbol for this CoinType. ASCII encoded. - e.g. for "LBR" this is x"4C4252". No character limit. -
-
-can_mint: bool -
-
- We may want to disable the ability to mint further coins of a - currency while that currency is still around. This allows us to - keep the currency in circulation while disallowing further - creation of coins in the CoinType currency. Mutable. -
-
-mint_events: Event::EventHandle<LibraTest::MintEvent> -
-
- Event stream for minting and where MintEvents will be emitted. -
-
-burn_events: Event::EventHandle<LibraTest::BurnEvent> -
-
- Event stream for burning, and where BurnEvents will be emitted. -
-
-preburn_events: Event::EventHandle<LibraTest::PreburnEvent> -
-
- Event stream for preburn requests, and where all - PreburnEvents for this CoinType will be emitted. -
-
-cancel_burn_events: Event::EventHandle<LibraTest::CancelBurnEvent> -
-
- Event stream for all cancelled preburn requests for this - CoinType. -
-
-exchange_rate_update_events: Event::EventHandle<LibraTest::ToLBRExchangeRateUpdateEvent> -
-
- Event stream for emiting exchange rate change events -
-
- - - - -## Resource `Preburn` - -A holding area where funds that will subsequently be burned wait while their underlying -assets are moved off-chain. -This resource can only be created by the holder of a BurnCapability. An account that -contains this address has the authority to initiate a burn request. A burn request can be -resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) -returning the funds to the account that initiated the burn request. -Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. - - -
resource struct Preburn<CoinType>
-
- - - -##### Fields - - -
-
-to_burn: LibraTest::Libra<CoinType> -
-
- A single pending burn amount. - There is no pending burn request if the value in to_burn is 0 -
-
- - - - -## Constants - - - - - - -
const ENOT_GENESIS: u64 = 0;
-
- - - - - - - -
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
-
- - - - - - - -
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
-
- - - - - - - -
const EDOES_NOT_HAVE_LIBRA_ROOT_ROLE: u64 = 9;
-
- - - - - - - -
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
-
- - - - - - - -
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
-
- - - - - - - -
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
-
- - - - - - - -
const EMINTING_NOT_ALLOWED: u64 = 3;
-
- - - - - - - -
const ENOT_AN_SCS_CURRENCY: u64 = 8;
-
- - - - - - - -
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
-
- - - - - - - -
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
-
- - - - - -## Function `initialize` - -Grants the RegisterNewCurrency privilege to -the calling account as long as it has the correct role (TC). -Aborts if account does not have a RoleId that corresponds with -the treacury compliance role. -Initialization of the Libra module; initializes the set of -registered currencies in the 0x1::RegisteredCurrencies on-chain -config, and publishes the CurrencyRegistrationCapability under the -CoreAddresses::LIBRA_ROOT_ADDRESS(). This can only be called from genesis. - - -
public fun initialize(config_account: &signer)
-
- - - -##### Implementation - - -
public fun initialize(
-    config_account: &signer,
-) {
-    assert(LibraTimestamp::is_genesis(), ENOT_GENESIS);
-    // Operational constraint
-    assert(
-        Signer::address_of(config_account) == CoreAddresses::LIBRA_ROOT_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-    RegisteredCurrencies::initialize(config_account);
-}
-
- - - - - -## Function `publish_burn_capability` - -Publishes the BurnCapability cap for the CoinType currency under account. CoinType -must be a registered currency type. -The caller must pass a TreasuryComplianceRole capability. -TODO (dd): I think there is a multiple signer problem here. - - -
public fun publish_burn_capability<CoinType>(account: &signer, cap: LibraTest::BurnCapability<CoinType>, tc_account: &signer)
-
- - - -##### Implementation - - -
public fun publish_burn_capability<CoinType>(
-    account: &signer,
-    cap: BurnCapability<CoinType>,
-    tc_account: &signer,
-) {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    move_to(account, cap)
-}
-
- - - - - -## Function `mint` - -Mints amount coins. The account must hold a -MintCapability<CoinType> at the top-level in order for this call -to be successful, and will fail with MISSING_DATA otherwise. - - -
public fun mint<CoinType>(account: &signer, value: u64): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun mint<CoinType>(account: &signer, value: u64): Libra<CoinType>
-acquires CurrencyInfo, MintCapability {
-    mint_with_capability(
-        value,
-        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -##### Specification - - - -
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
-include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - -## Function `burn` - -Burns the coins currently held in the Preburn resource held under preburn_address. -Calls to this functions will fail if the account does not have a -published BurnCapability for the CoinType published under it. - - -
public fun burn<CoinType>(account: &signer, preburn_address: address)
-
- - - -##### Implementation - - -
public fun burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-) acquires BurnCapability, CurrencyInfo, Preburn {
-    burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -##### Specification - - - -
pragma verify=false;
-aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
-
- - - - - -## Function `cancel_burn` - -Cancels the current burn request in the Preburn resource held -under the preburn_address, and returns the coins. -Calls to this will fail if the sender does not have a published -BurnCapability<CoinType>, or if there is no preburn request -outstanding in the Preburn resource under preburn_address. - - -
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun cancel_burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-): Libra<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
-    cancel_burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - - - -## Function `mint_with_capability` - -Mint a new Libra coin of CoinType currency worth value. The -caller must have a reference to a MintCapability<CoinType>. Only -the treasury compliance account or the 0x1::LBR module can acquire such a -reference. - - -
public fun mint_with_capability<CoinType>(value: u64, _capability: &LibraTest::MintCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun mint_with_capability<CoinType>(
-    value: u64,
-    _capability: &MintCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    let currency_code = currency_code<CoinType>();
-    // update market cap resource to reflect minting
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(info.can_mint, EMINTING_NOT_ALLOWED);
-    info.total_value = info.total_value + (value as u128);
-    // don't emit mint events for synthetic currenices
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.mint_events,
-            MintEvent{
-                amount: value,
-                currency_code,
-            }
-        );
-    };
-
-    Libra<CoinType> { value }
-}
-
- - - -##### Specification - - - -
include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - - - -
schema MintAbortsIf<CoinType> {
-    value: u64;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if !spec_currency_info<CoinType>().can_mint;
-    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
-}
-
- - - - - - - -
schema MintEnsures<CoinType> {
-    value: u64;
-    result: Libra<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-                == old(spec_currency_info<CoinType>().total_value) + value;
-    ensures result.value == value;
-}
-
- - - - - -## Function `preburn_with_resource` - -Add the coin to the preburn to_burn field in the Preburn resource -held at the address preburn_address if it is empty, otherwise raise -a PendingPreburn Error (code 6). Emits a PreburnEvent to -the preburn_events event stream in the CurrencyInfo for the -CoinType passed in. However, if the currency being preburned is -synthetic then no PreburnEvent event will be emitted. - - -
public fun preburn_with_resource<CoinType>(coin: LibraTest::Libra<CoinType>, preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address)
-
- - - -##### Implementation - - -
public fun preburn_with_resource<CoinType>(
-    coin: Libra<CoinType>,
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-) acquires CurrencyInfo {
-    let coin_value = value(&coin);
-    // Throw if already occupied
-    assert(value(&preburn.to_burn) == 0, 6);
-    deposit(&mut preburn.to_burn, coin);
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.preburn_value = info.preburn_value + coin_value;
-    // don't emit preburn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.preburn_events,
-            PreburnEvent{
-                amount: coin_value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -##### Specification - - - -
pragma aborts_if_is_partial = true;
-include PreburnAbortsIf<CoinType>;
-aborts_if preburn.to_burn.value != 0;
-include PreburnEnsures<CoinType>;
-
- - - - - - - -
schema PreburnAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
-}
-
- - - - - - - -
schema PreburnEnsures<CoinType> {
-    coin: Libra<CoinType>;
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().preburn_value
-                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
-}
-
- - - - - -## Function `create_preburn` - -Create a Preburn<CoinType> resource - - -
public fun create_preburn<CoinType>(tc_account: &signer): LibraTest::Preburn<CoinType>
-
- - - -##### Implementation - - -
public fun create_preburn<CoinType>(
-    tc_account: &signer
-): Preburn<CoinType> {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
-    // I don't think it can happen, but that may be difficult to prove.
-    Preburn<CoinType> { to_burn: zero<CoinType>() }
-}
-
- - - - - -## Function `publish_preburn_to_account` - -Publishes a Preburn resource under account. This function is -used for bootstrapping the designated dealer at account-creation -time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating -this resource for the designated dealer. - - -
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
-
- - - -##### Implementation - - -
public fun publish_preburn_to_account<CoinType>(
-    account: &signer,
-    tc_account: &signer
-) acquires CurrencyInfo {
-    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
-    move_to(account, create_preburn<CoinType>(tc_account))
-}
-
- - - - - -## Function `preburn_to` - -Sends coin to the preburn queue for account, where it will wait to either be burned -or returned to the balance of account. -Calls to this function will fail if account does not have a -Preburn<CoinType> resource published under it. - - -
public fun preburn_to<CoinType>(account: &signer, coin: LibraTest::Libra<CoinType>)
-
- - - -##### Implementation - - -
public fun preburn_to<CoinType>(
-    account: &signer, coin: Libra<CoinType>) acquires CurrencyInfo, Preburn {
-    let sender = Signer::address_of(account);
-    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
-}
-
- - - -##### Specification - - - -
pragma aborts_if_is_partial = true;
-aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
-include PreburnAbortsIf<CoinType>;
-include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
-
- - - - - -## Function `burn_with_capability` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -##### Implementation - - -
public fun burn_with_capability<CoinType>(
-    preburn_address: address,
-    capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn to_burn area
-    burn_with_resource_cap(
-        borrow_global_mut<Preburn<CoinType>>(preburn_address),
-        preburn_address,
-        capability
-    )
-}
-
- - - -##### Specification - - - -
aborts_if !exists<Preburn<CoinType>>(preburn_address);
-include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-
- - - - - -## Function `burn_with_resource_cap` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_resource_cap<CoinType>(preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -##### Implementation - - -
public fun burn_with_resource_cap<CoinType>(
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo {
-    let currency_code = currency_code<CoinType>();
-    // Abort if no coin present in preburn area
-    assert(preburn.to_burn.value > 0, 7);
-    // destroy the coin in Preburn area
-    let Libra { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.total_value = info.total_value - (value as u128);
-    info.preburn_value = info.preburn_value - value;
-    // don't emit burn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.burn_events,
-            BurnEvent {
-                amount: value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -##### Specification - - - -
include BurnAbortsIf<CoinType>;
-include BurnEnsures<CoinType>;
-
- - - - - - - -
schema BurnAbortsIf<CoinType> {
-    preburn: Preburn<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if preburn.to_burn.value == 0;
-    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
-    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
-}
-
- - - - - - - -
schema BurnEnsures<CoinType> {
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
-    ensures spec_currency_info<CoinType>().preburn_value
-            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
-}
-
- - - - - -## Function `cancel_burn_with_capability` - -Cancels the burn request in the Preburn resource stored at preburn_address and -return the coins to the caller. -This function can only be called by the holder of a -BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource -at preburn_address does not contain a pending burn request. - - -
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun cancel_burn_with_capability<CoinType>(
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn area
-    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
-    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    let amount = value(&coin);
-    info.preburn_value = info.preburn_value - amount;
-    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
-    // for synthetics in the first place
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.cancel_burn_events,
-            CancelBurnEvent {
-                amount,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-
-    coin
-}
-
- - - - - -## Function `remove_burn_capability` - -Removes and returns the BurnCapability<CoinType> from account. -Calls to this function will fail if account does not have a -published BurnCapability<CoinType> resource at the top-level. - - -
public fun remove_burn_capability<CoinType>(account: &signer): LibraTest::BurnCapability<CoinType>
-
- - - -##### Implementation - - -
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
-acquires BurnCapability {
-    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
-}
-
- - - - - -## Function `preburn_value` - -Returns the total value of Libra<CoinType> that is waiting to be -burned throughout the system (i.e. the sum of all outstanding -preburn requests across all preburn resources for the CoinType -currency). - - -
public fun preburn_value<CoinType>(): u64
-
- - - -##### Implementation - - -
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
-}
-
- - - - - -## Function `zero` - -Create a new Libra<CoinType> with a value of 0. Anyone can call -this and it will be successful as long as CoinType is a registered currency. - - -
public fun zero<CoinType>(): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun zero<CoinType>(): Libra<CoinType> {
-    assert_is_currency<CoinType>();
-    Libra<CoinType> { value: 0 }
-}
-
- - - - - -## Function `value` - -Returns the value of the passed in coin. The value is -represented in the base units for the currency represented by -CoinType. - - -
public fun value<CoinType>(coin: &LibraTest::Libra<CoinType>): u64
-
- - - -##### Implementation - - -
public fun value<CoinType>(coin: &Libra<CoinType>): u64 {
-    coin.value
-}
-
- - - - - -## Function `split` - -Removes amount of value from the passed in coin. Returns the -remaining balance of the passed in coin, along with another coin -with value equal to amount. Calls will fail if amount > Libra::value(&coin). - - -
public fun split<CoinType>(coin: LibraTest::Libra<CoinType>, amount: u64): (LibraTest::Libra<CoinType>, LibraTest::Libra<CoinType>)
-
- - - -##### Implementation - - -
public fun split<CoinType>(coin: Libra<CoinType>, amount: u64): (Libra<CoinType>, Libra<CoinType>) {
-    let other = withdraw(&mut coin, amount);
-    (coin, other)
-}
-
- - - -##### Specification - - - -
aborts_if coin.value < amount;
-ensures result_1.value == coin.value - amount;
-ensures result_2.value == amount;
-
- - - - - -## Function `withdraw` - -Withdraw amount from the passed-in coin, where the original coin is modified in place. -After this function is executed, the original coin will have -value = original_value - amount, and the new coin will have a value = amount. -Calls will abort if the passed-in amount is greater than the -value of the passed-in coin. - - -
public fun withdraw<CoinType>(coin: &mut LibraTest::Libra<CoinType>, amount: u64): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun withdraw<CoinType>(coin: &mut Libra<CoinType>, amount: u64): Libra<CoinType> {
-    // Check that `amount` is less than the coin's value
-    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
-    coin.value = coin.value - amount;
-    Libra { value: amount }
-}
-
- - - -##### Specification - - - -
aborts_if coin.value < amount;
-ensures coin.value == old(coin.value) - amount;
-ensures result.value == amount;
-
- - - - - -## Function `withdraw_all` - -Return a Libra<CoinType> worth coin.value and reduces the value of the input coin to -zero. Does not abort. - - -
public fun withdraw_all<CoinType>(coin: &mut LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun withdraw_all<CoinType>(coin: &mut Libra<CoinType>): Libra<CoinType> {
-    let val = coin.value;
-    withdraw(coin, val)
-}
-
- - - -##### Specification - - - -
aborts_if false;
-ensures result.value == old(coin.value);
-ensures coin.value == 0;
-
- - - - - -## Function `join` - -and returns a new coin whose value is equal to the sum of the two inputs. - - -
public fun join<CoinType>(coin1_tmp: LibraTest::Libra<CoinType>, coin2: LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -##### Implementation - - -
public fun join<CoinType>(coin1_tmp: Libra<CoinType>, coin2: Libra<CoinType>): Libra<CoinType>  {
-    deposit(&mut coin1_tmp, coin2);
-    coin1_tmp
-}
-
- - - -##### Specification - - - -
aborts_if coin1_tmp.value + coin2.value > max_u64();
-ensures result.value == coin1_tmp.value + coin2.value;
-
- - - - - -## Function `deposit` - -"Merges" the two coins. -The coin passed in by reference will have a value equal to the sum of the two coins -The check coin is consumed in the process - - -
public fun deposit<CoinType>(coin: &mut LibraTest::Libra<CoinType>, check: LibraTest::Libra<CoinType>)
-
- - - -##### Implementation - - -
public fun deposit<CoinType>(coin: &mut Libra<CoinType>, check: Libra<CoinType>) {
-    let Libra { value } = check;
-    coin.value = coin.value + value;
-}
-
- - - - - -## Function `destroy_zero` - -Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero -so you cannot "burn" any non-zero amount of Libra without having -a BurnCapability for the specific CoinType. - - -
public fun destroy_zero<CoinType>(coin: LibraTest::Libra<CoinType>)
-
- - - -##### Implementation - - -
public fun destroy_zero<CoinType>(coin: Libra<CoinType>) {
-    let Libra { value } = coin;
-    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
-}
-
- - - -##### Specification - - - -
aborts_if coin.value > 0;
-
- - - - - -## Function `register_currency` - -Register the type CoinType as a currency. Until the type is -registered as a currency it cannot be used as a coin/currency unit in Libra. -The passed-in lr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and -lr_account must also have the correct RegisterNewCurrency capability. -After the first registration of CoinType as a -currency, additional attempts to register CoinType as a currency -will abort. -When the CoinType is registered it publishes the -CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and -adds the currency to the set of RegisteredCurrencies. It returns -MintCapability<CoinType> and BurnCapability<CoinType> resources. - - -
public fun register_currency<CoinType>(lr_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (LibraTest::MintCapability<CoinType>, LibraTest::BurnCapability<CoinType>)
-
- - - -##### Implementation - - -
public fun register_currency<CoinType>(
-    lr_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    is_synthetic: bool,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-): (MintCapability<CoinType>, BurnCapability<CoinType>)
-{
-    Roles::assert_libra_root(lr_account);
-    // Operational constraint that it must be stored under a specific address.
-    assert(
-        Signer::address_of(lr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-
-    move_to(lr_account, CurrencyInfo<CoinType> {
-        total_value: 0,
-        preburn_value: 0,
-        to_lbr_exchange_rate,
-        is_synthetic,
-        scaling_factor,
-        fractional_part,
-        currency_code: copy currency_code,
-        can_mint: true,
-        mint_events: Event::new_event_handle<MintEvent>(lr_account),
-        burn_events: Event::new_event_handle<BurnEvent>(lr_account),
-        preburn_events: Event::new_event_handle<PreburnEvent>(lr_account),
-        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(lr_account),
-        exchange_rate_update_events: Event::new_event_handle<ToLBRExchangeRateUpdateEvent>(lr_account)
-    });
-    RegisteredCurrencies::add_currency_code(
-        lr_account,
-        currency_code,
-    );
-    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
-}
-
- - - -##### Specification - - - -
aborts_if !Roles::spec_has_libra_root_role_addr(Signer::spec_address_of(lr_account));
-aborts_if Signer::spec_address_of(lr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
-aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(lr_account));
-aborts_if spec_is_currency<CoinType>();
-include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
-
- - - - - -## Function `register_SCS_currency` - -Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. -Resources are published on two distinct -accounts: The CoinInfo is published on the Libra root account, and the mint and -burn capabilities are published on a treasury compliance account. -This code allows different currencies to have different treasury compliance -accounts. - - -
public fun register_SCS_currency<CoinType>(lr_account: &signer, tc_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
-
- - - -##### Implementation - - -
public fun register_SCS_currency<CoinType>(
-    lr_account: &signer,
-    tc_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-) {
-    Roles::assert_treasury_compliance(tc_account);
-    let (mint_cap, burn_cap) =
-        register_currency<CoinType>(
-            lr_account,
-            to_lbr_exchange_rate,
-            false,   // is_synthetic
-            scaling_factor,
-            fractional_part,
-            currency_code,
-        );
-    // DD: converted to move_to because of problems proving invariant.
-    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
-    move_to(tc_account, mint_cap);
-    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
-}
-
- - - -##### Specification - - - -
pragma aborts_if_is_partial = true;
-ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
-
- - - - - -## Function `market_cap` - -Returns the total amount of currency minted of type CoinType. - - -
public fun market_cap<CoinType>(): u128
-
- - - -##### Implementation - - -
public fun market_cap<CoinType>(): u128
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
-}
-
- - - - - -## Function `approx_lbr_for_value` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a _rough_ approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-
- - - -##### Implementation - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-acquires CurrencyInfo {
-    let lbr_exchange_rate = lbr_exchange_rate<FromCoinType>();
-    FixedPoint32::multiply_u64(from_value, lbr_exchange_rate)
-}
-
- - - - - -## Function `approx_lbr_for_coin` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a rough approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &LibraTest::Libra<FromCoinType>): u64
-
- - - -##### Implementation - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &Libra<FromCoinType>): u64
-acquires CurrencyInfo {
-    let from_value = value(coin);
-    approx_lbr_for_value<FromCoinType>(from_value)
-}
-
- - - - - -## Function `is_currency` - -Returns true if the type CoinType is a registered currency. -Returns false otherwise. - - -
public fun is_currency<CoinType>(): bool
-
- - - -##### Implementation - - -
public fun is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - - - - -## Function `is_SCS_currency` - - - -
public fun is_SCS_currency<CoinType>(): bool
-
- - - -##### Implementation - - -
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
-    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    !info.is_synthetic
-}
-
- - - - - -## Function `is_synthetic_currency` - -Returns true if CoinType is a synthetic currency as defined in -its CurrencyInfo. Returns false otherwise. - - -
public fun is_synthetic_currency<CoinType>(): bool
-
- - - -##### Implementation - - -
public fun is_synthetic_currency<CoinType>(): bool
-acquires CurrencyInfo {
-    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
-    exists<CurrencyInfo<CoinType>>(addr) &&
-        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
-}
-
- - - - - -## Function `scaling_factor` - -Returns the scaling factor for the CoinType currency as defined -in its CurrencyInfo. - - -
public fun scaling_factor<CoinType>(): u64
-
- - - -##### Implementation - - -
public fun scaling_factor<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
-}
-
- - - - - -## Function `fractional_part` - -Returns the representable (i.e. real-world) fractional part for the -CoinType currency as defined in its CurrencyInfo. - - -
public fun fractional_part<CoinType>(): u64
-
- - - -##### Implementation - - -
public fun fractional_part<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
-}
-
- - - - - -## Function `currency_code` - -Returns the currency code for the registered currency as defined in -its CurrencyInfo resource. - - -
public fun currency_code<CoinType>(): vector<u8>
-
- - - -##### Implementation - - -
public fun currency_code<CoinType>(): vector<u8>
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
-}
-
- - - - - -## Function `update_lbr_exchange_rate` - -Updates the to_lbr_exchange_rate held in the CurrencyInfo for -FromCoinType to the new passed-in lbr_exchange_rate. - - -
public fun update_lbr_exchange_rate<FromCoinType>(tr_account: &signer, lbr_exchange_rate: FixedPoint32::FixedPoint32)
-
- - - -##### Implementation - - -
public fun update_lbr_exchange_rate<FromCoinType>(
-    tr_account: &signer,
-    lbr_exchange_rate: FixedPoint32
-) acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<FromCoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.to_lbr_exchange_rate = lbr_exchange_rate;
-    Event::emit_event(
-        &mut currency_info.exchange_rate_update_events,
-        ToLBRExchangeRateUpdateEvent {
-            currency_code: *¤cy_info.currency_code,
-            new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate),
-        }
-    );
-
-}
-
- - - - - -## Function `lbr_exchange_rate` - -Returns the (rough) exchange rate between CoinType and LBR - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
-
- - - -##### Implementation - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-}
-
- - - - - -## Function `update_minting_ability` - -There may be situations in which we disallow the further minting of -coins in the system without removing the currency. This function -allows the association TC account to control whether or not further coins of -CoinType can be minted or not. If this is called with can_mint = -true, then minting is allowed, if can_mint = false then minting is -disallowed until it is turned back on via this function. All coins -start out in the default state of can_mint = true. - - -
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
-
- - - -##### Implementation - - -
public fun update_minting_ability<CoinType>(
-    tr_account: &signer,
-    can_mint: bool,
-    )
-acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.can_mint = can_mint;
-}
-
- - - - - -## Function `assert_is_currency` - -Asserts that CoinType is a registered currency. - - -
fun assert_is_currency<CoinType>()
-
- - - -##### Implementation - - -
fun assert_is_currency<CoinType>() {
-    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
-}
-
- - - - - -## Function `assert_is_SCS_currency` - - - -
fun assert_is_SCS_currency<CoinType>()
-
- - - -##### Implementation - - -
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
-    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
-}
-
- - - - - -## Module Specification - -**************** MODULE SPECIFICATION **************** - - - - -### Module Specification - - -Verify all functions in this module. -> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions -> about coin balance. - - -
pragma verify = true;
-
- - - -Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. - - - - - -
define spec_is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Returns currency information. - - - - - -
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
-    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Specification version of Self::approx_lbr_for_value. - - - - - -
define spec_approx_lbr_for_value<CoinType>(value: num):  num {
-    FixedPoint32::spec_multiply_u64(
-        value,
-        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-    )
-}
-
-define spec_is_SCS_currency<CoinType>(): bool {
-    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
-}
-
- - -Checks whether the currency has a mint capability. This is only relevant for -SCS coins - - - - - -
define spec_has_mint_capability<CoinType>(addr1: address): bool {
-    exists<MintCapability<CoinType>>(addr1)
-}
-
- - - - - -#### Minting - -For an SCS coin, the mint capability cannot move or disappear. -TODO: Specify that they're published at the one true treasurycompliance address? - - - - -If an address has a mint capability, it is an SCS currency. - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type
-                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
-                              spec_is_SCS_currency<coin_type>();
-}
-
- - -If there is a pending offer for a mint capability, the coin_type is an SCS currency and -there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type :
-                              spec_is_SCS_currency<coin_type>()
-                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
-    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
-        forall addr1: address, addr2: address
-             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
-                  addr1 == addr2;
-    ensures forall coin_type: type:
-        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
-            exists<MintCapability<coin_type>>(addr1);
-}
-
- - - - -
apply MintCapabilitySpecs to *<T>, *;
-
- - - - - -#### Conservation of currency - - -Maintain a spec variable representing the sum of -all coins of a currency type. - - - - - -
global sum_of_coin_values<CoinType>: num;
-
diff --git a/language/move-prover/docgen/tests/sources/LibraTest.spec_separate.md b/language/move-prover/docgen/tests/sources/LibraTest.spec_separate.md deleted file mode 100644 index 29bc1d887d..0000000000 --- a/language/move-prover/docgen/tests/sources/LibraTest.spec_separate.md +++ /dev/null @@ -1,2494 +0,0 @@ - - - -# Module `0x1::LibraTest` - -The Libra module describes the concept of a coin in the Libra framework. It introduces the -resource Libra::Libra<CoinType>, representing a coin of given coin type. -The module defines functions operating on coins as well as functionality like -minting and burning of coins. - - -- [Resource `RegisterNewCurrency`](#0x1_LibraTest_RegisterNewCurrency) -- [Resource `Libra`](#0x1_LibraTest_Libra) -- [Resource `MintCapability`](#0x1_LibraTest_MintCapability) -- [Resource `BurnCapability`](#0x1_LibraTest_BurnCapability) -- [Struct `MintEvent`](#0x1_LibraTest_MintEvent) -- [Struct `BurnEvent`](#0x1_LibraTest_BurnEvent) -- [Struct `PreburnEvent`](#0x1_LibraTest_PreburnEvent) -- [Struct `CancelBurnEvent`](#0x1_LibraTest_CancelBurnEvent) -- [Struct `ToLBRExchangeRateUpdateEvent`](#0x1_LibraTest_ToLBRExchangeRateUpdateEvent) -- [Resource `CurrencyInfo`](#0x1_LibraTest_CurrencyInfo) -- [Resource `Preburn`](#0x1_LibraTest_Preburn) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraTest_initialize) -- [Function `publish_burn_capability`](#0x1_LibraTest_publish_burn_capability) -- [Function `mint`](#0x1_LibraTest_mint) -- [Function `burn`](#0x1_LibraTest_burn) -- [Function `cancel_burn`](#0x1_LibraTest_cancel_burn) -- [Function `mint_with_capability`](#0x1_LibraTest_mint_with_capability) -- [Function `preburn_with_resource`](#0x1_LibraTest_preburn_with_resource) -- [Function `create_preburn`](#0x1_LibraTest_create_preburn) -- [Function `publish_preburn_to_account`](#0x1_LibraTest_publish_preburn_to_account) -- [Function `preburn_to`](#0x1_LibraTest_preburn_to) -- [Function `burn_with_capability`](#0x1_LibraTest_burn_with_capability) -- [Function `burn_with_resource_cap`](#0x1_LibraTest_burn_with_resource_cap) -- [Function `cancel_burn_with_capability`](#0x1_LibraTest_cancel_burn_with_capability) -- [Function `remove_burn_capability`](#0x1_LibraTest_remove_burn_capability) -- [Function `preburn_value`](#0x1_LibraTest_preburn_value) -- [Function `zero`](#0x1_LibraTest_zero) -- [Function `value`](#0x1_LibraTest_value) -- [Function `split`](#0x1_LibraTest_split) -- [Function `withdraw`](#0x1_LibraTest_withdraw) -- [Function `withdraw_all`](#0x1_LibraTest_withdraw_all) -- [Function `join`](#0x1_LibraTest_join) -- [Function `deposit`](#0x1_LibraTest_deposit) -- [Function `destroy_zero`](#0x1_LibraTest_destroy_zero) -- [Function `register_currency`](#0x1_LibraTest_register_currency) -- [Function `register_SCS_currency`](#0x1_LibraTest_register_SCS_currency) -- [Function `market_cap`](#0x1_LibraTest_market_cap) -- [Function `approx_lbr_for_value`](#0x1_LibraTest_approx_lbr_for_value) -- [Function `approx_lbr_for_coin`](#0x1_LibraTest_approx_lbr_for_coin) -- [Function `is_currency`](#0x1_LibraTest_is_currency) -- [Function `is_SCS_currency`](#0x1_LibraTest_is_SCS_currency) -- [Function `is_synthetic_currency`](#0x1_LibraTest_is_synthetic_currency) -- [Function `scaling_factor`](#0x1_LibraTest_scaling_factor) -- [Function `fractional_part`](#0x1_LibraTest_fractional_part) -- [Function `currency_code`](#0x1_LibraTest_currency_code) -- [Function `update_lbr_exchange_rate`](#0x1_LibraTest_update_lbr_exchange_rate) -- [Function `lbr_exchange_rate`](#0x1_LibraTest_lbr_exchange_rate) -- [Function `update_minting_ability`](#0x1_LibraTest_update_minting_ability) -- [Function `assert_is_currency`](#0x1_LibraTest_assert_is_currency) -- [Function `assert_is_SCS_currency`](#0x1_LibraTest_assert_is_SCS_currency) -- [Specification](#@Specification_1) - - [Module Specification](#@Module_Specification_2) - - [Minting](#@Minting_3) - - [Conservation of currency](#@Conservation_of_currency_4) - - [Resource `Libra`](#@Specification_1_Libra) - - [Function `mint`](#@Specification_1_mint) - - [Function `burn`](#@Specification_1_burn) - - [Function `mint_with_capability`](#@Specification_1_mint_with_capability) - - [Function `preburn_with_resource`](#@Specification_1_preburn_with_resource) - - [Function `preburn_to`](#@Specification_1_preburn_to) - - [Function `burn_with_capability`](#@Specification_1_burn_with_capability) - - [Function `burn_with_resource_cap`](#@Specification_1_burn_with_resource_cap) - - [Function `split`](#@Specification_1_split) - - [Function `withdraw`](#@Specification_1_withdraw) - - [Function `withdraw_all`](#@Specification_1_withdraw_all) - - [Function `join`](#@Specification_1_join) - - [Function `destroy_zero`](#@Specification_1_destroy_zero) - - [Function `register_currency`](#@Specification_1_register_currency) - - [Function `register_SCS_currency`](#@Specification_1_register_SCS_currency) - - -
use 0x1::CoreAddresses;
-use 0x1::Event;
-use 0x1::FixedPoint32;
-use 0x1::LibraTimestamp;
-use 0x1::RegisteredCurrencies;
-use 0x1::Roles;
-use 0x1::Signer;
-
- - - - - -## Resource `RegisterNewCurrency` - - - -
resource struct RegisterNewCurrency
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `Libra` - -The Libra resource defines the Libra coin for each currency in -Libra. Each "coin" is coupled with a type CoinType specifying the -currency of the coin, and a value field specifying the value -of the coin (in the base units of the currency CoinType -and specified in the CurrencyInfo resource for that CoinType -published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). - - -
resource struct Libra<CoinType>
-
- - - -
-Fields - - -
-
-value: u64 -
-
- The value of this coin in the base units for CoinType -
-
- - -
- - - -## Resource `MintCapability` - -The MintCapability resource defines a capability to allow minting -of coins of CoinType currency by the holder of this capability. -This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() -account or the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct MintCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `BurnCapability` - -The BurnCapability resource defines a capability to allow coins -of CoinType currency to be burned by the holder of the -and the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct BurnCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Struct `MintEvent` - -The CurrencyRegistrationCapability is a singleton resource -published under the CoreAddresses::LIBRA_ROOT_ADDRESS() and grants -the capability to the 0x1::Libra module to add currencies to the -0x1::RegisteredCurrencies on-chain config. -A MintEvent is emitted every time a Libra coin is minted. This -contains the amount minted (in base units of the currency being -minted) along with the currency_code for the coin(s) being -minted, and that is defined in the currency_code field of the -CurrencyInfo resource for the currency. - - -
struct MintEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds added to the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
- - -
- - - -## Struct `BurnEvent` - -A BurnEvent is emitted every time a non-synthetic[1] Libra coin is -burned. It contains the amount burned in base units for the -currency, along with the currency_code for the coins being burned -(and as defined in the CurrencyInfo resource for that currency). -It also contains the preburn_address from which the coin is -extracted for burning. -[1] As defined by the is_synthetic field in the CurrencyInfo -for that currency. - - -
struct BurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds removed from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that stored the now-burned funds -
-
- - -
- - - -## Struct `PreburnEvent` - -A PreburnEvent is emitted every time an amount of funds with -a coin type currency_code are moved to a Preburn resource under -the account at the address preburn_address. - - -
struct PreburnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds waiting to be removed (burned) from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that now holds the funds -
-
- - -
- - - -## Struct `CancelBurnEvent` - -A CancelBurnEvent is emitted every time funds of amount in a Preburn -resource at preburn_address is canceled (removed from the -preburn, but not burned). The currency of the funds is given by the -currency_code as defined in the CurrencyInfo for that currency. - - -
struct CancelBurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds returned -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address of the Preburn resource that held the now-returned funds. -
-
- - -
- - - -## Struct `ToLBRExchangeRateUpdateEvent` - -An ToLBRExchangeRateUpdateEvent is emitted every time the to-LBR exchange -rate for the currency given by currency_code is updated. - - -
struct ToLBRExchangeRateUpdateEvent
-
- - - -
-Fields - - -
-
-currency_code: vector<u8> -
-
- The currency code of the currency whose exchange rate was updated. -
-
-new_to_lbr_exchange_rate: u64 -
-
- The new on-chain to-LBR exchange rate between the - currency_code currency and LBR. Represented in conversion - between the (on-chain) base-units for the currency and microlibra. -
-
- - -
- - - -## Resource `CurrencyInfo` - -The CurrencyInfo<CoinType> resource stores the various -pieces of information needed for a currency (CoinType) that is -registered on-chain. This resource _must_ be published under the -address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of -CoinType as a recognized currency on-chain to be successful. At -the time of registration the MintCapability<CoinType> and -BurnCapability<CoinType> capabilities are returned to the caller. -Unless they are specified otherwise the fields in this resource are immutable. - - -
resource struct CurrencyInfo<CoinType>
-
- - - -
-Fields - - -
-
-total_value: u128 -
-
- The total value for the currency represented by CoinType. Mutable. -
-
-preburn_value: u64 -
-
- Value of funds that are in the process of being burned. Mutable. -
-
-to_lbr_exchange_rate: FixedPoint32::FixedPoint32 -
-
- The (rough) exchange rate from CoinType to LBR. Mutable. -
-
-is_synthetic: bool -
-
- Holds whether or not this currency is synthetic (contributes to the - off-chain reserve) or not. An example of such a synthetic -currency would be the LBR. -
-
-scaling_factor: u64 -
-
- The scaling factor for the coin (i.e. the amount to multiply by - to get to the human-readable representation for this currency). - e.g. 10^6 for Coin1 - - > TODO(wrwg): should the above be "to divide by"? -
-
-fractional_part: u64 -
-
- The smallest fractional part (number of decimal places) to be - used in the human-readable representation for the currency (e.g. - 10^2 for Coin1 cents) -
-
-currency_code: vector<u8> -
-
- The code symbol for this CoinType. ASCII encoded. - e.g. for "LBR" this is x"4C4252". No character limit. -
-
-can_mint: bool -
-
- We may want to disable the ability to mint further coins of a - currency while that currency is still around. This allows us to - keep the currency in circulation while disallowing further - creation of coins in the CoinType currency. Mutable. -
-
-mint_events: Event::EventHandle<LibraTest::MintEvent> -
-
- Event stream for minting and where MintEvents will be emitted. -
-
-burn_events: Event::EventHandle<LibraTest::BurnEvent> -
-
- Event stream for burning, and where BurnEvents will be emitted. -
-
-preburn_events: Event::EventHandle<LibraTest::PreburnEvent> -
-
- Event stream for preburn requests, and where all - PreburnEvents for this CoinType will be emitted. -
-
-cancel_burn_events: Event::EventHandle<LibraTest::CancelBurnEvent> -
-
- Event stream for all cancelled preburn requests for this - CoinType. -
-
-exchange_rate_update_events: Event::EventHandle<LibraTest::ToLBRExchangeRateUpdateEvent> -
-
- Event stream for emiting exchange rate change events -
-
- - -
- - - -## Resource `Preburn` - -A holding area where funds that will subsequently be burned wait while their underlying -assets are moved off-chain. -This resource can only be created by the holder of a BurnCapability. An account that -contains this address has the authority to initiate a burn request. A burn request can be -resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) -returning the funds to the account that initiated the burn request. -Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. - - -
resource struct Preburn<CoinType>
-
- - - -
-Fields - - -
-
-to_burn: LibraTest::Libra<CoinType> -
-
- A single pending burn amount. - There is no pending burn request if the value in to_burn is 0 -
-
- - -
- - - -## Constants - - - - - - -
const ENOT_GENESIS: u64 = 0;
-
- - - - - - - -
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 5;
-
- - - - - - - -
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 6;
-
- - - - - - - -
const EDOES_NOT_HAVE_LIBRA_ROOT_ROLE: u64 = 9;
-
- - - - - - - -
const EDOES_NOT_HAVE_TREASURY_COMPLIANCE_ROLE: u64 = 10;
-
- - - - - - - -
const EINVALID_SINGLETON_ADDRESS: u64 = 1;
-
- - - - - - - -
const EIS_SYNTHETIC_CURRENCY: u64 = 4;
-
- - - - - - - -
const EMINTING_NOT_ALLOWED: u64 = 3;
-
- - - - - - - -
const ENOT_AN_SCS_CURRENCY: u64 = 8;
-
- - - - - - - -
const ENOT_A_REGISTERED_CURRENCY: u64 = 7;
-
- - - - - - - -
const ENOT_TREASURY_COMPLIANCE: u64 = 2;
-
- - - - - -## Function `initialize` - -Grants the RegisterNewCurrency privilege to -the calling account as long as it has the correct role (TC). -Aborts if account does not have a RoleId that corresponds with -the treacury compliance role. -Initialization of the Libra module; initializes the set of -registered currencies in the 0x1::RegisteredCurrencies on-chain -config, and publishes the CurrencyRegistrationCapability under the -CoreAddresses::LIBRA_ROOT_ADDRESS(). This can only be called from genesis. - - -
public fun initialize(config_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    config_account: &signer,
-) {
-    assert(LibraTimestamp::is_genesis(), ENOT_GENESIS);
-    // Operational constraint
-    assert(
-        Signer::address_of(config_account) == CoreAddresses::LIBRA_ROOT_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-    RegisteredCurrencies::initialize(config_account);
-}
-
- - - -
- - - -## Function `publish_burn_capability` - -Publishes the BurnCapability cap for the CoinType currency under account. CoinType -must be a registered currency type. -The caller must pass a TreasuryComplianceRole capability. -TODO (dd): I think there is a multiple signer problem here. - - -
public fun publish_burn_capability<CoinType>(account: &signer, cap: LibraTest::BurnCapability<CoinType>, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun publish_burn_capability<CoinType>(
-    account: &signer,
-    cap: BurnCapability<CoinType>,
-    tc_account: &signer,
-) {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    move_to(account, cap)
-}
-
- - - -
- - - -## Function `mint` - -Mints amount coins. The account must hold a -MintCapability<CoinType> at the top-level in order for this call -to be successful, and will fail with MISSING_DATA otherwise. - - -
public fun mint<CoinType>(account: &signer, value: u64): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint<CoinType>(account: &signer, value: u64): Libra<CoinType>
-acquires CurrencyInfo, MintCapability {
-    mint_with_capability(
-        value,
-        borrow_global<MintCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- - - -## Function `burn` - -Burns the coins currently held in the Preburn resource held under preburn_address. -Calls to this functions will fail if the account does not have a -published BurnCapability for the CoinType published under it. - - -
public fun burn<CoinType>(account: &signer, preburn_address: address)
-
- - - -
-Implementation - - -
public fun burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-) acquires BurnCapability, CurrencyInfo, Preburn {
-    burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- - - -## Function `cancel_burn` - -Cancels the current burn request in the Preburn resource held -under the preburn_address, and returns the coins. -Calls to this will fail if the sender does not have a published -BurnCapability<CoinType>, or if there is no preburn request -outstanding in the Preburn resource under preburn_address. - - -
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-): Libra<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
-    cancel_burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(Signer::address_of(account))
-    )
-}
-
- - - -
- - - -## Function `mint_with_capability` - -Mint a new Libra coin of CoinType currency worth value. The -caller must have a reference to a MintCapability<CoinType>. Only -the treasury compliance account or the 0x1::LBR module can acquire such a -reference. - - -
public fun mint_with_capability<CoinType>(value: u64, _capability: &LibraTest::MintCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint_with_capability<CoinType>(
-    value: u64,
-    _capability: &MintCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    let currency_code = currency_code<CoinType>();
-    // update market cap resource to reflect minting
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(info.can_mint, EMINTING_NOT_ALLOWED);
-    info.total_value = info.total_value + (value as u128);
-    // don't emit mint events for synthetic currenices
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.mint_events,
-            MintEvent{
-                amount: value,
-                currency_code,
-            }
-        );
-    };
-
-    Libra<CoinType> { value }
-}
-
- - - -
- - - -## Function `preburn_with_resource` - -Add the coin to the preburn to_burn field in the Preburn resource -held at the address preburn_address if it is empty, otherwise raise -a PendingPreburn Error (code 6). Emits a PreburnEvent to -the preburn_events event stream in the CurrencyInfo for the -CoinType passed in. However, if the currency being preburned is -synthetic then no PreburnEvent event will be emitted. - - -
public fun preburn_with_resource<CoinType>(coin: LibraTest::Libra<CoinType>, preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address)
-
- - - -
-Implementation - - -
public fun preburn_with_resource<CoinType>(
-    coin: Libra<CoinType>,
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-) acquires CurrencyInfo {
-    let coin_value = value(&coin);
-    // Throw if already occupied
-    assert(value(&preburn.to_burn) == 0, 6);
-    deposit(&mut preburn.to_burn, coin);
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.preburn_value = info.preburn_value + coin_value;
-    // don't emit preburn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.preburn_events,
-            PreburnEvent{
-                amount: coin_value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- - - -## Function `create_preburn` - -Create a Preburn<CoinType> resource - - -
public fun create_preburn<CoinType>(tc_account: &signer): LibraTest::Preburn<CoinType>
-
- - - -
-Implementation - - -
public fun create_preburn<CoinType>(
-    tc_account: &signer
-): Preburn<CoinType> {
-    assert(Roles::has_treasury_compliance_role(tc_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    // TODO (dd): consider adding an assertion here that to_burn <= info.total_value
-    // I don't think it can happen, but that may be difficult to prove.
-    Preburn<CoinType> { to_burn: zero<CoinType>() }
-}
-
- - - -
- - - -## Function `publish_preburn_to_account` - -Publishes a Preburn resource under account. This function is -used for bootstrapping the designated dealer at account-creation -time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating -this resource for the designated dealer. - - -
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun publish_preburn_to_account<CoinType>(
-    account: &signer,
-    tc_account: &signer
-) acquires CurrencyInfo {
-    assert(!is_synthetic_currency<CoinType>(), EIS_SYNTHETIC_CURRENCY);
-    move_to(account, create_preburn<CoinType>(tc_account))
-}
-
- - - -
- - - -## Function `preburn_to` - -Sends coin to the preburn queue for account, where it will wait to either be burned -or returned to the balance of account. -Calls to this function will fail if account does not have a -Preburn<CoinType> resource published under it. - - -
public fun preburn_to<CoinType>(account: &signer, coin: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun preburn_to<CoinType>(
-    account: &signer, coin: Libra<CoinType>) acquires CurrencyInfo, Preburn {
-    let sender = Signer::address_of(account);
-    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
-}
-
- - - -
- - - -## Function `burn_with_capability` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_with_capability<CoinType>(
-    preburn_address: address,
-    capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn to_burn area
-    burn_with_resource_cap(
-        borrow_global_mut<Preburn<CoinType>>(preburn_address),
-        preburn_address,
-        capability
-    )
-}
-
- - - -
- - - -## Function `burn_with_resource_cap` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
public fun burn_with_resource_cap<CoinType>(preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_with_resource_cap<CoinType>(
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo {
-    let currency_code = currency_code<CoinType>();
-    // Abort if no coin present in preburn area
-    assert(preburn.to_burn.value > 0, 7);
-    // destroy the coin in Preburn area
-    let Libra { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    info.total_value = info.total_value - (value as u128);
-    info.preburn_value = info.preburn_value - value;
-    // don't emit burn events for synthetic currencies
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.burn_events,
-            BurnEvent {
-                amount: value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- - - -## Function `cancel_burn_with_capability` - -Cancels the burn request in the Preburn resource stored at preburn_address and -return the coins to the caller. -This function can only be called by the holder of a -BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource -at preburn_address does not contain a pending burn request. - - -
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn_with_capability<CoinType>(
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn area
-    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
-    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    let amount = value(&coin);
-    info.preburn_value = info.preburn_value - amount;
-    // Don't emit cancel burn events for synthetic currencies. cancel burn shouldn't be be used
-    // for synthetics in the first place
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.cancel_burn_events,
-            CancelBurnEvent {
-                amount,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-
-    coin
-}
-
- - - -
- - - -## Function `remove_burn_capability` - -Removes and returns the BurnCapability<CoinType> from account. -Calls to this function will fail if account does not have a -published BurnCapability<CoinType> resource at the top-level. - - -
public fun remove_burn_capability<CoinType>(account: &signer): LibraTest::BurnCapability<CoinType>
-
- - - -
-Implementation - - -
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
-acquires BurnCapability {
-    move_from<BurnCapability<CoinType>>(Signer::address_of(account))
-}
-
- - - -
- - - -## Function `preburn_value` - -Returns the total value of Libra<CoinType> that is waiting to be -burned throughout the system (i.e. the sum of all outstanding -preburn requests across all preburn resources for the CoinType -currency). - - -
public fun preburn_value<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
-}
-
- - - -
- - - -## Function `zero` - -Create a new Libra<CoinType> with a value of 0. Anyone can call -this and it will be successful as long as CoinType is a registered currency. - - -
public fun zero<CoinType>(): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun zero<CoinType>(): Libra<CoinType> {
-    assert_is_currency<CoinType>();
-    Libra<CoinType> { value: 0 }
-}
-
- - - -
- - - -## Function `value` - -Returns the value of the passed in coin. The value is -represented in the base units for the currency represented by -CoinType. - - -
public fun value<CoinType>(coin: &LibraTest::Libra<CoinType>): u64
-
- - - -
-Implementation - - -
public fun value<CoinType>(coin: &Libra<CoinType>): u64 {
-    coin.value
-}
-
- - - -
- - - -## Function `split` - -Removes amount of value from the passed in coin. Returns the -remaining balance of the passed in coin, along with another coin -with value equal to amount. Calls will fail if amount > Libra::value(&coin). - - -
public fun split<CoinType>(coin: LibraTest::Libra<CoinType>, amount: u64): (LibraTest::Libra<CoinType>, LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun split<CoinType>(coin: Libra<CoinType>, amount: u64): (Libra<CoinType>, Libra<CoinType>) {
-    let other = withdraw(&mut coin, amount);
-    (coin, other)
-}
-
- - - -
- - - -## Function `withdraw` - -Withdraw amount from the passed-in coin, where the original coin is modified in place. -After this function is executed, the original coin will have -value = original_value - amount, and the new coin will have a value = amount. -Calls will abort if the passed-in amount is greater than the -value of the passed-in coin. - - -
public fun withdraw<CoinType>(coin: &mut LibraTest::Libra<CoinType>, amount: u64): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw<CoinType>(coin: &mut Libra<CoinType>, amount: u64): Libra<CoinType> {
-    // Check that `amount` is less than the coin's value
-    assert(coin.value >= amount, EAMOUNT_EXCEEDS_COIN_VALUE);
-    coin.value = coin.value - amount;
-    Libra { value: amount }
-}
-
- - - -
- - - -## Function `withdraw_all` - -Return a Libra<CoinType> worth coin.value and reduces the value of the input coin to -zero. Does not abort. - - -
public fun withdraw_all<CoinType>(coin: &mut LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw_all<CoinType>(coin: &mut Libra<CoinType>): Libra<CoinType> {
-    let val = coin.value;
-    withdraw(coin, val)
-}
-
- - - -
- - - -## Function `join` - -and returns a new coin whose value is equal to the sum of the two inputs. - - -
public fun join<CoinType>(coin1_tmp: LibraTest::Libra<CoinType>, coin2: LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun join<CoinType>(coin1_tmp: Libra<CoinType>, coin2: Libra<CoinType>): Libra<CoinType>  {
-    deposit(&mut coin1_tmp, coin2);
-    coin1_tmp
-}
-
- - - -
- - - -## Function `deposit` - -"Merges" the two coins. -The coin passed in by reference will have a value equal to the sum of the two coins -The check coin is consumed in the process - - -
public fun deposit<CoinType>(coin: &mut LibraTest::Libra<CoinType>, check: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun deposit<CoinType>(coin: &mut Libra<CoinType>, check: Libra<CoinType>) {
-    let Libra { value } = check;
-    coin.value = coin.value + value;
-}
-
- - - -
- - - -## Function `destroy_zero` - -Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero -so you cannot "burn" any non-zero amount of Libra without having -a BurnCapability for the specific CoinType. - - -
public fun destroy_zero<CoinType>(coin: LibraTest::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun destroy_zero<CoinType>(coin: Libra<CoinType>) {
-    let Libra { value } = coin;
-    assert(value == 0, EDESTRUCTION_OF_NONZERO_COIN)
-}
-
- - - -
- - - -## Function `register_currency` - -Register the type CoinType as a currency. Until the type is -registered as a currency it cannot be used as a coin/currency unit in Libra. -The passed-in lr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and -lr_account must also have the correct RegisterNewCurrency capability. -After the first registration of CoinType as a -currency, additional attempts to register CoinType as a currency -will abort. -When the CoinType is registered it publishes the -CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and -adds the currency to the set of RegisteredCurrencies. It returns -MintCapability<CoinType> and BurnCapability<CoinType> resources. - - -
public fun register_currency<CoinType>(lr_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (LibraTest::MintCapability<CoinType>, LibraTest::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun register_currency<CoinType>(
-    lr_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    is_synthetic: bool,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-): (MintCapability<CoinType>, BurnCapability<CoinType>)
-{
-    Roles::assert_libra_root(lr_account);
-    // Operational constraint that it must be stored under a specific address.
-    assert(
-        Signer::address_of(lr_account) == CoreAddresses::CURRENCY_INFO_ADDRESS(),
-        EINVALID_SINGLETON_ADDRESS
-    );
-
-    move_to(lr_account, CurrencyInfo<CoinType> {
-        total_value: 0,
-        preburn_value: 0,
-        to_lbr_exchange_rate,
-        is_synthetic,
-        scaling_factor,
-        fractional_part,
-        currency_code: copy currency_code,
-        can_mint: true,
-        mint_events: Event::new_event_handle<MintEvent>(lr_account),
-        burn_events: Event::new_event_handle<BurnEvent>(lr_account),
-        preburn_events: Event::new_event_handle<PreburnEvent>(lr_account),
-        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(lr_account),
-        exchange_rate_update_events: Event::new_event_handle<ToLBRExchangeRateUpdateEvent>(lr_account)
-    });
-    RegisteredCurrencies::add_currency_code(
-        lr_account,
-        currency_code,
-    );
-    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
-}
-
- - - -
- - - -## Function `register_SCS_currency` - -Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. -Resources are published on two distinct -accounts: The CoinInfo is published on the Libra root account, and the mint and -burn capabilities are published on a treasury compliance account. -This code allows different currencies to have different treasury compliance -accounts. - - -
public fun register_SCS_currency<CoinType>(lr_account: &signer, tc_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
-
- - - -
-Implementation - - -
public fun register_SCS_currency<CoinType>(
-    lr_account: &signer,
-    tc_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-) {
-    Roles::assert_treasury_compliance(tc_account);
-    let (mint_cap, burn_cap) =
-        register_currency<CoinType>(
-            lr_account,
-            to_lbr_exchange_rate,
-            false,   // is_synthetic
-            scaling_factor,
-            fractional_part,
-            currency_code,
-        );
-    // DD: converted to move_to because of problems proving invariant.
-    // publish_mint_capability<CoinType>(tc_account, mint_cap, tc_account);
-    move_to(tc_account, mint_cap);
-    publish_burn_capability<CoinType>(tc_account, burn_cap, tc_account);
-}
-
- - - -
- - - -## Function `market_cap` - -Returns the total amount of currency minted of type CoinType. - - -
public fun market_cap<CoinType>(): u128
-
- - - -
-Implementation - - -
public fun market_cap<CoinType>(): u128
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
-}
-
- - - -
- - - -## Function `approx_lbr_for_value` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a _rough_ approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-acquires CurrencyInfo {
-    let lbr_exchange_rate = lbr_exchange_rate<FromCoinType>();
-    FixedPoint32::multiply_u64(from_value, lbr_exchange_rate)
-}
-
- - - -
- - - -## Function `approx_lbr_for_coin` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a rough approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &LibraTest::Libra<FromCoinType>): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &Libra<FromCoinType>): u64
-acquires CurrencyInfo {
-    let from_value = value(coin);
-    approx_lbr_for_value<FromCoinType>(from_value)
-}
-
- - - -
- - - -## Function `is_currency` - -Returns true if the type CoinType is a registered currency. -Returns false otherwise. - - -
public fun is_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - - -
- - - -## Function `is_SCS_currency` - - - -
public fun is_SCS_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
-    let info = borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    !info.is_synthetic
-}
-
- - - -
- - - -## Function `is_synthetic_currency` - -Returns true if CoinType is a synthetic currency as defined in -its CurrencyInfo. Returns false otherwise. - - -
public fun is_synthetic_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_synthetic_currency<CoinType>(): bool
-acquires CurrencyInfo {
-    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
-    exists<CurrencyInfo<CoinType>>(addr) &&
-        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
-}
-
- - - -
- - - -## Function `scaling_factor` - -Returns the scaling factor for the CoinType currency as defined -in its CurrencyInfo. - - -
public fun scaling_factor<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun scaling_factor<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
-}
-
- - - -
- - - -## Function `fractional_part` - -Returns the representable (i.e. real-world) fractional part for the -CoinType currency as defined in its CurrencyInfo. - - -
public fun fractional_part<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun fractional_part<CoinType>(): u64
-acquires CurrencyInfo {
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
-}
-
- - - -
- - - -## Function `currency_code` - -Returns the currency code for the registered currency as defined in -its CurrencyInfo resource. - - -
public fun currency_code<CoinType>(): vector<u8>
-
- - - -
-Implementation - - -
public fun currency_code<CoinType>(): vector<u8>
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
-}
-
- - - -
- - - -## Function `update_lbr_exchange_rate` - -Updates the to_lbr_exchange_rate held in the CurrencyInfo for -FromCoinType to the new passed-in lbr_exchange_rate. - - -
public fun update_lbr_exchange_rate<FromCoinType>(tr_account: &signer, lbr_exchange_rate: FixedPoint32::FixedPoint32)
-
- - - -
-Implementation - - -
public fun update_lbr_exchange_rate<FromCoinType>(
-    tr_account: &signer,
-    lbr_exchange_rate: FixedPoint32
-) acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<FromCoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.to_lbr_exchange_rate = lbr_exchange_rate;
-    Event::emit_event(
-        &mut currency_info.exchange_rate_update_events,
-        ToLBRExchangeRateUpdateEvent {
-            currency_code: *¤cy_info.currency_code,
-            new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate),
-        }
-    );
-
-}
-
- - - -
- - - -## Function `lbr_exchange_rate` - -Returns the (rough) exchange rate between CoinType and LBR - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
-
- - - -
-Implementation - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32
-acquires CurrencyInfo {
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-}
-
- - - -
- - - -## Function `update_minting_ability` - -There may be situations in which we disallow the further minting of -coins in the system without removing the currency. This function -allows the association TC account to control whether or not further coins of -CoinType can be minted or not. If this is called with can_mint = -true, then minting is allowed, if can_mint = false then minting is -disallowed until it is turned back on via this function. All coins -start out in the default state of can_mint = true. - - -
public fun update_minting_ability<CoinType>(tr_account: &signer, can_mint: bool)
-
- - - -
-Implementation - - -
public fun update_minting_ability<CoinType>(
-    tr_account: &signer,
-    can_mint: bool,
-    )
-acquires CurrencyInfo {
-    assert(Roles::has_treasury_compliance_role(tr_account), ENOT_TREASURY_COMPLIANCE);
-    assert_is_currency<CoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.can_mint = can_mint;
-}
-
- - - -
- - - -## Function `assert_is_currency` - -Asserts that CoinType is a registered currency. - - -
fun assert_is_currency<CoinType>()
-
- - - -
-Implementation - - -
fun assert_is_currency<CoinType>() {
-    assert(is_currency<CoinType>(), ENOT_A_REGISTERED_CURRENCY);
-}
-
- - - -
- - - -## Function `assert_is_SCS_currency` - - - -
fun assert_is_SCS_currency<CoinType>()
-
- - - -
-Implementation - - -
fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
-    assert(is_SCS_currency<CoinType>(), ENOT_AN_SCS_CURRENCY);
-}
-
- - - -
- - - -## Specification - -**************** MODULE SPECIFICATION **************** - - - - -### Module Specification - - -Verify all functions in this module. -> TODO(wrwg): temporarily deactivated as a recent PR destroyed assumptions -> about coin balance. - - -
pragma verify = true;
-
- - - -Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. - - - - - -
define spec_is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Returns currency information. - - - - - -
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
-    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Specification version of Self::approx_lbr_for_value. - - - - - -
define spec_approx_lbr_for_value<CoinType>(value: num):  num {
-    FixedPoint32::spec_multiply_u64(
-        value,
-        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-    )
-}
-
-define spec_is_SCS_currency<CoinType>(): bool {
-    spec_is_currency<CoinType>() && !spec_currency_info<CoinType>().is_synthetic
-}
-
- - -Checks whether the currency has a mint capability. This is only relevant for -SCS coins - - - - - -
define spec_has_mint_capability<CoinType>(addr1: address): bool {
-    exists<MintCapability<CoinType>>(addr1)
-}
-
- - - - - -#### Minting - -For an SCS coin, the mint capability cannot move or disappear. -TODO: Specify that they're published at the one true treasurycompliance address? - - - - -If an address has a mint capability, it is an SCS currency. - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type
-                         where (exists addr3: address : spec_has_mint_capability<coin_type>(addr3)) :
-                              spec_is_SCS_currency<coin_type>();
-}
-
- - -If there is a pending offer for a mint capability, the coin_type is an SCS currency and -there are no published Mint Capabilities. (This is the state after register_SCS_currency_start) - - -
schema MintCapabilitySpecs {
-    invariant module forall coin_type: type :
-                              spec_is_SCS_currency<coin_type>()
-                              && (forall addr3: address : !spec_has_mint_capability<coin_type>(addr3));
-    invariant module forall coin_type: type where spec_is_SCS_currency<coin_type>():
-        forall addr1: address, addr2: address
-             where exists<MintCapability<coin_type>>(addr1) && exists<MintCapability<coin_type>>(addr2):
-                  addr1 == addr2;
-    ensures forall coin_type: type:
-        forall addr1: address where old(exists<MintCapability<coin_type>>(addr1)):
-            exists<MintCapability<coin_type>>(addr1);
-}
-
- - - - -
apply MintCapabilitySpecs to *<T>, *;
-
- - - - - -#### Conservation of currency - - -Maintain a spec variable representing the sum of -all coins of a currency type. - - - - - -
global sum_of_coin_values<CoinType>: num;
-
- - - - - -### Resource `Libra` - - -
resource struct Libra<CoinType>
-
- - - -
-
-value: u64 -
-
- The value of this coin in the base units for CoinType -
-
- -Account for updating sum_of_coin_values when a Libra is packed or unpacked. - - -
invariant pack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> + value;
-invariant unpack sum_of_coin_values<CoinType> = sum_of_coin_values<CoinType> - value;
-
- - - - - -### Function `mint` - - -
public fun mint<CoinType>(account: &signer, value: u64): LibraTest::Libra<CoinType>
-
- - - - -
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account));
-include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - -### Function `burn` - - -
public fun burn<CoinType>(account: &signer, preburn_address: address)
-
- - - - -
pragma verify=false;
-aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account));
-
- - - - - -### Function `mint_with_capability` - - -
public fun mint_with_capability<CoinType>(value: u64, _capability: &LibraTest::MintCapability<CoinType>): LibraTest::Libra<CoinType>
-
- - - - -
include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - - - -
schema MintAbortsIf<CoinType> {
-    value: u64;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if !spec_currency_info<CoinType>().can_mint;
-    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128();
-}
-
- - - - - - - -
schema MintEnsures<CoinType> {
-    value: u64;
-    result: Libra<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-                == old(spec_currency_info<CoinType>().total_value) + value;
-    ensures result.value == value;
-}
-
- - - - - -### Function `preburn_with_resource` - - -
public fun preburn_with_resource<CoinType>(coin: LibraTest::Libra<CoinType>, preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address)
-
- - - - -
pragma aborts_if_is_partial = true;
-include PreburnAbortsIf<CoinType>;
-aborts_if preburn.to_burn.value != 0;
-include PreburnEnsures<CoinType>;
-
- - - - - - - -
schema PreburnAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if spec_currency_info<CoinType>().preburn_value + coin.value > max_u64();
-}
-
- - - - - - - -
schema PreburnEnsures<CoinType> {
-    coin: Libra<CoinType>;
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().preburn_value
-                == old(spec_currency_info<CoinType>().preburn_value) + coin.value;
-}
-
- - - - - -### Function `preburn_to` - - -
public fun preburn_to<CoinType>(account: &signer, coin: LibraTest::Libra<CoinType>)
-
- - - - -
pragma aborts_if_is_partial = true;
-aborts_if !exists<Preburn<CoinType>>(Signer::spec_address_of(account));
-include PreburnAbortsIf<CoinType>;
-include PreburnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(Signer::spec_address_of(account))};
-
- - - - - -### Function `burn_with_capability` - - -
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &LibraTest::BurnCapability<CoinType>)
-
- - - - -
aborts_if !exists<Preburn<CoinType>>(preburn_address);
-include BurnAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-include BurnEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-
- - - - - -### Function `burn_with_resource_cap` - - -
public fun burn_with_resource_cap<CoinType>(preburn: &mut LibraTest::Preburn<CoinType>, preburn_address: address, _capability: &LibraTest::BurnCapability<CoinType>)
-
- - - - -
include BurnAbortsIf<CoinType>;
-include BurnEnsures<CoinType>;
-
- - - - - - - -
schema BurnAbortsIf<CoinType> {
-    preburn: Preburn<CoinType>;
-    aborts_if !spec_is_currency<CoinType>();
-    aborts_if preburn.to_burn.value == 0;
-    aborts_if spec_currency_info<CoinType>().preburn_value - preburn.to_burn.value < 0;
-    aborts_if spec_currency_info<CoinType>().total_value - preburn.to_burn.value < 0;
-}
-
- - - - - - - -
schema BurnEnsures<CoinType> {
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
-    ensures spec_currency_info<CoinType>().preburn_value
-            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
-}
-
- - - - - -### Function `split` - - -
public fun split<CoinType>(coin: LibraTest::Libra<CoinType>, amount: u64): (LibraTest::Libra<CoinType>, LibraTest::Libra<CoinType>)
-
- - - - -
aborts_if coin.value < amount;
-ensures result_1.value == coin.value - amount;
-ensures result_2.value == amount;
-
- - - - - -### Function `withdraw` - - -
public fun withdraw<CoinType>(coin: &mut LibraTest::Libra<CoinType>, amount: u64): LibraTest::Libra<CoinType>
-
- - - - -
aborts_if coin.value < amount;
-ensures coin.value == old(coin.value) - amount;
-ensures result.value == amount;
-
- - - - - -### Function `withdraw_all` - - -
public fun withdraw_all<CoinType>(coin: &mut LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - - -
aborts_if false;
-ensures result.value == old(coin.value);
-ensures coin.value == 0;
-
- - - - - -### Function `join` - - -
public fun join<CoinType>(coin1_tmp: LibraTest::Libra<CoinType>, coin2: LibraTest::Libra<CoinType>): LibraTest::Libra<CoinType>
-
- - - - -
aborts_if coin1_tmp.value + coin2.value > max_u64();
-ensures result.value == coin1_tmp.value + coin2.value;
-
- - - - - -### Function `destroy_zero` - - -
public fun destroy_zero<CoinType>(coin: LibraTest::Libra<CoinType>)
-
- - - - -
aborts_if coin.value > 0;
-
- - - - - -### Function `register_currency` - - -
public fun register_currency<CoinType>(lr_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (LibraTest::MintCapability<CoinType>, LibraTest::BurnCapability<CoinType>)
-
- - - - -
aborts_if !Roles::spec_has_libra_root_role_addr(Signer::spec_address_of(lr_account));
-aborts_if Signer::spec_address_of(lr_account) != CoreAddresses::CURRENCY_INFO_ADDRESS();
-aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(lr_account));
-aborts_if spec_is_currency<CoinType>();
-include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
-
- - - - - -### Function `register_SCS_currency` - - -
public fun register_SCS_currency<CoinType>(lr_account: &signer, tc_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
-
- - - - -
pragma aborts_if_is_partial = true;
-ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
-
diff --git a/language/move-prover/docgen/tests/testsuite.rs b/language/move-prover/docgen/tests/testsuite.rs index 39135417d6..08c9cf0c0e 100644 --- a/language/move-prover/docgen/tests/testsuite.rs +++ b/language/move-prover/docgen/tests/testsuite.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::Path; use codespan_reporting::term::termcolor::Buffer; -use libra_temppath::TempPath; +use diem_temppath::TempPath; use move_prover::{cli::Options, run_move_prover}; use std::path::PathBuf; use test_utils::baseline_test::verify_or_update_baseline; diff --git a/language/move-prover/errmapgen/Cargo.toml b/language/move-prover/errmapgen/Cargo.toml index 7c6f000c03..86cf816c84 100644 --- a/language/move-prover/errmapgen/Cargo.toml +++ b/language/move-prover/errmapgen/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "errmapgen" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -# libra dependencies +# diem dependencies spec-lang = { path = "../spec-lang", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/move-prover/errmapgen/src/errmapgen.rs b/language/move-prover/errmapgen/src/errmapgen.rs index 374515ce6a..a30b03494c 100644 --- a/language/move-prover/errmapgen/src/errmapgen.rs +++ b/language/move-prover/errmapgen/src/errmapgen.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/errmapgen/src/lib.rs b/language/move-prover/errmapgen/src/lib.rs index 99da241a11..1056f3bc36 100644 --- a/language/move-prover/errmapgen/src/lib.rs +++ b/language/move-prover/errmapgen/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/scripts/install-boogie.sh b/language/move-prover/scripts/install-boogie.sh index 33f4429428..33f4572082 100755 --- a/language/move-prover/scripts/install-boogie.sh +++ b/language/move-prover/scripts/install-boogie.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 dotnet tool update --global Boogie --version 2.7.30 diff --git a/language/move-prover/scripts/install-cvc4.sh b/language/move-prover/scripts/install-cvc4.sh index b7bcd63374..38fa325663 100755 --- a/language/move-prover/scripts/install-cvc4.sh +++ b/language/move-prover/scripts/install-cvc4.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 curl -L0 https://cvc4.cs.stanford.edu/downloads/builds/macos/cvc4-25-09-20.zip -o cvc4-25-09-20.zip diff --git a/language/move-prover/scripts/install-dotnet-centos.sh b/language/move-prover/scripts/install-dotnet-centos.sh index c416763bb2..7c1f5d4128 100755 --- a/language/move-prover/scripts/install-dotnet-centos.sh +++ b/language/move-prover/scripts/install-dotnet-centos.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 sudo dnf install dotnet-runtime-3.1 diff --git a/language/move-prover/scripts/install-dotnet-ubuntu.sh b/language/move-prover/scripts/install-dotnet-ubuntu.sh index 3916d9e03d..3d9a67b333 100755 --- a/language/move-prover/scripts/install-dotnet-ubuntu.sh +++ b/language/move-prover/scripts/install-dotnet-ubuntu.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb diff --git a/language/move-prover/scripts/install-dotnet.sh b/language/move-prover/scripts/install-dotnet.sh index 5a8cbdb7c3..a7853d0efd 100755 --- a/language/move-prover/scripts/install-dotnet.sh +++ b/language/move-prover/scripts/install-dotnet.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 brew tap isen-ng/dotnet-sdk-versions diff --git a/language/move-prover/scripts/install-z3-ubuntu.sh b/language/move-prover/scripts/install-z3-ubuntu.sh index 28f640facd..f99cf36507 100755 --- a/language/move-prover/scripts/install-z3-ubuntu.sh +++ b/language/move-prover/scripts/install-z3-ubuntu.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 PKG=z3-4.8.9-x64-ubuntu-16.04 diff --git a/language/move-prover/scripts/install-z3.sh b/language/move-prover/scripts/install-z3.sh index fc936029ce..fca295d42a 100755 --- a/language/move-prover/scripts/install-z3.sh +++ b/language/move-prover/scripts/install-z3.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 curl -LO https://github.com/Z3Prover/z3/releases/download/z3-4.8.9/z3-4.8.9-x64-osx-10.14.6.zip diff --git a/language/move-prover/spec-lang/Cargo.toml b/language/move-prover/spec-lang/Cargo.toml index 70cd5ac0ef..83d9860f73 100644 --- a/language/move-prover/spec-lang/Cargo.toml +++ b/language/move-prover/spec-lang/Cargo.toml @@ -1,18 +1,18 @@ [package] name = "spec-lang" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] publish = false edition = "2018" license = "Apache-2.0" [dependencies] -# libra dependencies +# diem dependencies move-lang = { path = "../../move-lang", version = "0.0.1" } bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } bytecode-source-map = { path = "../../compiler/bytecode-source-map", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } diff --git a/language/move-prover/spec-lang/src/ast.rs b/language/move-prover/spec-lang/src/ast.rs index 11825fad46..7e9f8be319 100644 --- a/language/move-prover/spec-lang/src/ast.rs +++ b/language/move-prover/spec-lang/src/ast.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Contains AST definitions for the specification language fragments of the Move language. diff --git a/language/move-prover/spec-lang/src/code_writer.rs b/language/move-prover/spec-lang/src/code_writer.rs index bcef1cde35..f85beba705 100644 --- a/language/move-prover/spec-lang/src/code_writer.rs +++ b/language/move-prover/spec-lang/src/code_writer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::collections::{BTreeMap, Bound}; diff --git a/language/move-prover/spec-lang/src/env.rs b/language/move-prover/spec-lang/src/env.rs index da2c00854d..32fbd2bad4 100644 --- a/language/move-prover/spec-lang/src/env.rs +++ b/language/move-prover/spec-lang/src/env.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Provides an environment -- global state -- for translation, including helper functions diff --git a/language/move-prover/spec-lang/src/lib.rs b/language/move-prover/spec-lang/src/lib.rs index 889121d98e..b335a6d2ed 100644 --- a/language/move-prover/spec-lang/src/lib.rs +++ b/language/move-prover/spec-lang/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/spec-lang/src/symbol.rs b/language/move-prover/spec-lang/src/symbol.rs index 5c9b3853a5..0e5866fb52 100644 --- a/language/move-prover/spec-lang/src/symbol.rs +++ b/language/move-prover/spec-lang/src/symbol.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Contains definitions of symbols -- internalized strings which support fast hashing and diff --git a/language/move-prover/spec-lang/src/translate.rs b/language/move-prover/spec-lang/src/translate.rs index e31960f01d..f5faf4b5c9 100644 --- a/language/move-prover/spec-lang/src/translate.rs +++ b/language/move-prover/spec-lang/src/translate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Translates and validates specification language fragments as they are output from the Move diff --git a/language/move-prover/spec-lang/src/ty.rs b/language/move-prover/spec-lang/src/ty.rs index 957d705392..4b0093fecb 100644 --- a/language/move-prover/spec-lang/src/ty.rs +++ b/language/move-prover/spec-lang/src/ty.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Contains types and related functions. diff --git a/language/move-prover/spec-lang/tests/testsuite.rs b/language/move-prover/spec-lang/tests/testsuite.rs index fffdf8bb97..28bf3ec571 100644 --- a/language/move-prover/spec-lang/tests/testsuite.rs +++ b/language/move-prover/spec-lang/tests/testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::Path; diff --git a/language/move-prover/src/boogie_helpers.rs b/language/move-prover/src/boogie_helpers.rs index 70bebfd2e2..89db3b6f65 100644 --- a/language/move-prover/src/boogie_helpers.rs +++ b/language/move-prover/src/boogie_helpers.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Helpers for emitting Boogie code. @@ -53,7 +53,7 @@ pub fn boogie_function_name(env: &FunctionEnv<'_>) -> String { // TODO: hack to deal with similar native functions in old/new library. We identify // whether the old or new version of the function is referenced by the number of type // parameters. - if name == "$LibraAccount_save_account" && env.get_type_parameters().len() == 1 { + if name == "$DiemAccount_save_account" && env.get_type_parameters().len() == 1 { name + "_OLD" } else { name diff --git a/language/move-prover/src/boogie_wrapper.rs b/language/move-prover/src/boogie_wrapper.rs index 8871db3a53..fed3d62768 100644 --- a/language/move-prover/src/boogie_wrapper.rs +++ b/language/move-prover/src/boogie_wrapper.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Wrapper around the boogie program. Allows to call boogie and analyze the output. @@ -559,8 +559,8 @@ impl<'env> BoogieWrapper<'env> { /// output.bpl(2964,1): Related location: This is the postcondition that might not hold. /// Execution trace: /// output.bpl(3068,5): anon0 - /// output.bpl(2960,23): inline$LibraAccount_pay_from_sender_with_metadata$0$Entry - /// output.bpl(2989,5): inline$LibraAccount_pay_from_sender_with_metadata$0$anon0 + /// output.bpl(2960,23): inline$DiemAccount_pay_from_sender_with_metadata$0$Entry + /// output.bpl(2989,5): inline$DiemAccount_pay_from_sender_with_metadata$0$anon0 /// ... /// ``` fn extract_verification_errors(&self, out: &str) -> Vec { diff --git a/language/move-prover/src/bytecode_translator.rs b/language/move-prover/src/bytecode_translator.rs index 836bb63f29..f91600bafa 100644 --- a/language/move-prover/src/bytecode_translator.rs +++ b/language/move-prover/src/bytecode_translator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module translates the bytecode of a module to Boogie code. diff --git a/language/move-prover/src/cli.rs b/language/move-prover/src/cli.rs index 6c0a29f7ad..190cba28a5 100644 --- a/language/move-prover/src/cli.rs +++ b/language/move-prover/src/cli.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -271,7 +271,7 @@ impl Options { let cli = App::new("mvp") .version("0.1.0") .about("The Move Prover") - .author("The Libra Core Contributors") + .author("The Diem Core Contributors") .arg( Arg::with_name("config") .short("c") diff --git a/language/move-prover/src/lib.rs b/language/move-prover/src/lib.rs index 222f417d8e..faf77da83d 100644 --- a/language/move-prover/src/lib.rs +++ b/language/move-prover/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/src/main.rs b/language/move-prover/src/main.rs index e1d31eb004..b2999f7043 100644 --- a/language/move-prover/src/main.rs +++ b/language/move-prover/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-prover/src/prelude.bpl b/language/move-prover/src/prelude.bpl index a57d41510e..b7f9c213a3 100644 --- a/language/move-prover/src/prelude.bpl +++ b/language/move-prover/src/prelude.bpl @@ -1293,16 +1293,16 @@ function {:inline} $Hash_$sha3_256(val: $Value): $Value { } // ================================================================================== -// Native libra_account +// Native diem_account -procedure {:inline 1} $LibraAccount_create_signer( +procedure {:inline 1} $DiemAccount_create_signer( addr: $Value ) returns (signer: $Value) { // A signer is currently identical to an address. signer := addr; } -procedure {:inline 1} $LibraAccount_destroy_signer( +procedure {:inline 1} $DiemAccount_destroy_signer( signer: $Value ) { return; diff --git a/language/move-prover/src/prelude_template_helpers.rs b/language/move-prover/src/prelude_template_helpers.rs index 068539fe73..8f9fc735c3 100644 --- a/language/move-prover/src/prelude_template_helpers.rs +++ b/language/move-prover/src/prelude_template_helpers.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use handlebars::{ diff --git a/language/move-prover/src/prover_task_runner.rs b/language/move-prover/src/prover_task_runner.rs index e4a4855b51..a5168a01d1 100644 --- a/language/move-prover/src/prover_task_runner.rs +++ b/language/move-prover/src/prover_task_runner.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Prover task runner that runs multiple instances of the prover task and returns diff --git a/language/move-prover/src/spec_translator.rs b/language/move-prover/src/spec_translator.rs index 1370f2a99b..fc55adf92c 100644 --- a/language/move-prover/src/spec_translator.rs +++ b/language/move-prover/src/spec_translator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module translates specification conditions to Boogie code. diff --git a/language/move-prover/test-utils/Cargo.toml b/language/move-prover/test-utils/Cargo.toml index 71ba383917..44d88215d1 100644 --- a/language/move-prover/test-utils/Cargo.toml +++ b/language/move-prover/test-utils/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "test-utils" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] edition = "2018" license = "Apache-2.0" @@ -9,4 +9,4 @@ license = "Apache-2.0" prettydiff = "0.3.1" anyhow = "1.0.34" regex = "1.4.2" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } diff --git a/language/move-prover/test-utils/src/baseline_test.rs b/language/move-prover/test-utils/src/baseline_test.rs index 00e0b03240..c79d035197 100644 --- a/language/move-prover/test-utils/src/baseline_test.rs +++ b/language/move-prover/test-utils/src/baseline_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! A module supporting baseline (golden) tests. diff --git a/language/move-prover/test-utils/src/lib.rs b/language/move-prover/test-utils/src/lib.rs index ea6d921868..02cfc6b4d9 100644 --- a/language/move-prover/test-utils/src/lib.rs +++ b/language/move-prover/test-utils/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use regex::Regex; diff --git a/language/move-prover/tests/README.md b/language/move-prover/tests/README.md index b9400db4b2..d1eefcbf4a 100644 --- a/language/move-prover/tests/README.md +++ b/language/move-prover/tests/README.md @@ -1,7 +1,7 @@ # Tests for Move Prover This directory contains the tests for Move Prover. The tests are defined by the `.move` files in this tree, -as well as all the `.move` files in the [Libra framework](../../stdlib). +as well as all the `.move` files in the [Diem framework](../../stdlib). *Note*: in order to run these tests locally, you must have installed tools and setup a few environment variables. See [`../doc/user/install.md`](../doc/user/install.md) for details. If the environment variables for @@ -42,8 +42,8 @@ MVP_TEST_FLAGS="-T=20" cargo test -p move-prover ## Code coverage -Analyzing the test coverage of the libra repo is regularly done in CI, and the result updates the online report at -* https://ci-artifacts.libra.org/coverage/unit-coverage/latest/index.html +Analyzing the test coverage of the diem repo is regularly done in CI, and the result updates the online report at +* https://ci-artifacts.diem.com/coverage/unit-coverage/latest/index.html * https://codecov.io/gh/libra/libra (reports significantly less coverage due to panic unwinding being considered a branch) Note that this report is based on the the coverage test when the environment variable `BOOGIE_EXE` is not set. @@ -53,4 +53,4 @@ during the test. To run the coverage test locally, one can use `cargo xtest html-cov-dir="/some/dir"`. Keep in mind what is compiled and run when targeting a single crate is not the same as is run/built with multiple crates due to cargo's feature unification. -For any questions regarding code coverage, please use the Calibra slack channel "#code_coverage". +For any questions regarding code coverage, please use the Cadiem slack channel "#code_coverage". diff --git a/language/move-prover/tests/sources/functional/marketcap.move b/language/move-prover/tests/sources/functional/marketcap.move index cf25be17b5..09d35bc67e 100644 --- a/language/move-prover/tests/sources/functional/marketcap.move +++ b/language/move-prover/tests/sources/functional/marketcap.move @@ -16,7 +16,7 @@ module TestMarketCap { invariant global(0xA550C18).total_value == sum_of_coins; } - // A resource representing the Libra coin + // A resource representing the Diem coin resource struct T { // The value of the coin. May be zero value: u64, @@ -28,7 +28,7 @@ module TestMarketCap { } resource struct MarketCap { - // The sum of the values of all LibraCoin::T resources in the system + // The sum of the values of all DiemCoin::T resources in the system total_value: u128, } diff --git a/language/move-prover/tests/sources/functional/marketcap_as_schema.move b/language/move-prover/tests/sources/functional/marketcap_as_schema.move index d852561bd8..cb48131aef 100644 --- a/language/move-prover/tests/sources/functional/marketcap_as_schema.move +++ b/language/move-prover/tests/sources/functional/marketcap_as_schema.move @@ -16,7 +16,7 @@ module TestMarketCapWithSchemas { invariant module global(0xA550C18).total_value == sum_of_coins; } - // A resource representing the Libra coin + // A resource representing the Diem coin resource struct T { // The value of the coin. May be zero value: u64, @@ -32,7 +32,7 @@ module TestMarketCapWithSchemas { resource struct MarketCap { - // The sum of the values of all LibraCoin::T resources in the system + // The sum of the values of all DiemCoin::T resources in the system total_value: u128, } diff --git a/language/move-prover/tests/sources/functional/marketcap_as_schema_apply.move b/language/move-prover/tests/sources/functional/marketcap_as_schema_apply.move index 66e823b7c9..5342a4c841 100644 --- a/language/move-prover/tests/sources/functional/marketcap_as_schema_apply.move +++ b/language/move-prover/tests/sources/functional/marketcap_as_schema_apply.move @@ -23,7 +23,7 @@ module TestMarketCapWithSchemas { apply SumOfCoinsModuleInvariant to public *deposit* except excepted_*; } - // A resource representing the Libra coin + // A resource representing the Diem coin resource struct T { // The value of the coin. May be zero value: u64, @@ -34,7 +34,7 @@ module TestMarketCapWithSchemas { } resource struct MarketCap { - // The sum of the values of all LibraCoin::T resources in the system + // The sum of the values of all DiemCoin::T resources in the system total_value: u128, } diff --git a/language/move-prover/tests/sources/functional/marketcap_generic.move b/language/move-prover/tests/sources/functional/marketcap_generic.move index 1839500b9d..c9ad29b115 100644 --- a/language/move-prover/tests/sources/functional/marketcap_generic.move +++ b/language/move-prover/tests/sources/functional/marketcap_generic.move @@ -23,7 +23,7 @@ module TestMarketCapGeneric { } } - // A resource representing the Libra coin + // A resource representing the Diem coin resource struct T { // The value of the coin. May be zero value: u64, @@ -35,7 +35,7 @@ module TestMarketCapGeneric { } resource struct MarketCap { - // The sum of the values of all LibraCoin::T resources in the system + // The sum of the values of all DiemCoin::T resources in the system total_value: u128, } diff --git a/language/move-prover/tests/sources/functional/pure_function_call.move b/language/move-prover/tests/sources/functional/pure_function_call.move index ff08d0cc4a..5738473d05 100644 --- a/language/move-prover/tests/sources/functional/pure_function_call.move +++ b/language/move-prover/tests/sources/functional/pure_function_call.move @@ -7,16 +7,16 @@ module TestPureFun { x: u64, } - public fun init(lr_account: &signer): bool { - assert(Signer::address_of(lr_account) == 0xA550C18, 0); - move_to(lr_account, T { x: 2 }); + public fun init(dr_account: &signer): bool { + assert(Signer::address_of(dr_account) == 0xA550C18, 0); + move_to(dr_account, T { x: 2 }); false } spec fun init { - aborts_if Signer::spec_address_of(lr_account) != CoreAddresses::LIBRA_ROOT_ADDRESS(); - aborts_if exists(Signer::spec_address_of(lr_account)); - ensures lr_x() == pure_f_2(); + aborts_if Signer::spec_address_of(dr_account) != CoreAddresses::DIEM_ROOT_ADDRESS(); + aborts_if exists(Signer::spec_address_of(dr_account)); + ensures dr_x() == pure_f_2(); } public fun get_x(addr: address): u64 acquires T { @@ -61,8 +61,8 @@ module TestPureFun { } spec module { - define lr_x(): u64 { - get_x(CoreAddresses::LIBRA_ROOT_ADDRESS()) + define dr_x(): u64 { + get_x(CoreAddresses::DIEM_ROOT_ADDRESS()) } } diff --git a/language/move-prover/tests/sources/functional/pure_function_call_incorrect.move b/language/move-prover/tests/sources/functional/pure_function_call_incorrect.move index 4b711167a9..1a69d9d5fb 100644 --- a/language/move-prover/tests/sources/functional/pure_function_call_incorrect.move +++ b/language/move-prover/tests/sources/functional/pure_function_call_incorrect.move @@ -63,8 +63,8 @@ module TestPureFun { impure_f_2() } - define lr_x(): u64 { - get_x(CoreAddresses::LIBRA_ROOT_ADDRESS()) + define dr_x(): u64 { + get_x(CoreAddresses::DIEM_ROOT_ADDRESS()) } } diff --git a/language/move-prover/tests/sources/functional/txn.move b/language/move-prover/tests/sources/functional/txn.move index 7e53308212..871e1160d3 100644 --- a/language/move-prover/tests/sources/functional/txn.move +++ b/language/move-prover/tests/sources/functional/txn.move @@ -2,8 +2,8 @@ address 0x1 { module TestTransaction { use 0x1::Signer; - use 0x1::LibraAccount; - use 0x1::LibraTimestamp; + use 0x1::DiemAccount; + use 0x1::DiemTimestamp; spec module { pragma verify = true; @@ -28,14 +28,14 @@ module TestTransaction { } fun exists_account(account: &signer) { - LibraTimestamp::assert_operating(); - assert(LibraAccount::exists_at(Signer::address_of(account)), 1); + DiemTimestamp::assert_operating(); + assert(DiemAccount::exists_at(Signer::address_of(account)), 1); } spec fun exists_account { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; // TODO: we can remove the following line once we have the feature to inject // the postconditions of the "prologue" functions as invariants - aborts_if !exists(Signer::spec_address_of(account)); + aborts_if !exists(Signer::spec_address_of(account)); } } } diff --git a/language/move-prover/tests/sources/regression/generic_invariant200518.move b/language/move-prover/tests/sources/regression/generic_invariant200518.move index 22a36e0e3d..a100f3bdd0 100644 --- a/language/move-prover/tests/sources/regression/generic_invariant200518.move +++ b/language/move-prover/tests/sources/regression/generic_invariant200518.move @@ -19,7 +19,7 @@ module GenericBug { } // Remove the `Privilege` from the address at `addr`. The sender must - // be the libra root account. + // be the diem root account. public fun remove_privilege(sender: &signer, addr: address) acquires PrivilegedCapability { assert(Signer::address_of(sender) == root_address(), 1001); diff --git a/language/move-prover/tests/sources/regression/z3/z3_termination_problem.smt b/language/move-prover/tests/sources/regression/z3/z3_termination_problem.smt index 2e915a5b5a..61efcba7ec 100644 --- a/language/move-prover/tests/sources/regression/z3/z3_termination_problem.smt +++ b/language/move-prover/tests/sources/regression/z3/z3_termination_problem.smt @@ -416,7 +416,7 @@ (declare-fun call0formal@ta@0@@0 () T@TypeValue) (declare-fun call1formal@v@0@@0 () T@Value) (declare-fun $local_counter@4 () Int) -(declare-fun $LibraAccount_T_type_value () T@TypeValue) +(declare-fun $DiemAccount_T_type_value () T@TypeValue) (declare-fun inline$$CopyOrMoveValue$16$local@0 () T@Value) (declare-fun $m@43 () T@Memory) (declare-fun inline$$Test_new_event_handle_impl$1$$tmp@1 () T@Value) @@ -832,7 +832,7 @@ :skolemid |17| :pattern ( (|Select_[$int]Value| (|v#ValueArray| va@@26) x@@26)) )))))) (= (|l#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@44) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) 1)) (and (and (is-Integer (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@44) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) (>= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@44) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) 0)) (<= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@44) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) MAX_U64))) (and (=> (= (ControlFlow 0 21623) 23809) inline$$Test_fresh_guid$1$anon23_Then_correct) (=> (= (ControlFlow 0 21623) 21629) inline$$Test_fresh_guid$1$anon23_Else_correct))))))) -(let ((inline$$Test_fresh_guid$1$Entry_correct (=> (= inline$$Test_fresh_guid$1$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@44) (Local (+ $local_counter@2 4)))) (and (=> (= (ControlFlow 0 21605) (- 0 32870)) (|Select_[Location]$bool| (|domain#Memory| $m@44) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@44) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 21605) 21623) inline$$Test_fresh_guid$1$anon0_correct)))))) +(let ((inline$$Test_fresh_guid$1$Entry_correct (=> (= inline$$Test_fresh_guid$1$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@44) (Local (+ $local_counter@2 4)))) (and (=> (= (ControlFlow 0 21605) (- 0 32870)) (|Select_[Location]$bool| (|domain#Memory| $m@44) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@44) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 21605) 21623) inline$$Test_fresh_guid$1$anon0_correct)))))) (let ((inline$$Test_new_event_handle_impl$1$anon4$2_correct (=> (is-Address inline$$CopyOrMoveValue$16$local@0) (=> (and (= $m@44 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@43) (Local (+ $local_counter@2 4)) true) (|Store_[Location]Value| (|contents#Memory| $m@43) (Local (+ $local_counter@2 4)) inline$$CopyOrMoveValue$16$local@0))) (= (ControlFlow 0 23937) 21605)) inline$$Test_fresh_guid$1$Entry_correct)))) (let ((inline$$CopyOrMoveValue$16$Entry_correct (=> (and (= inline$$CopyOrMoveValue$16$local@0 (|Select_[Location]Value| (|contents#Memory| $m@43) (Local (+ $local_counter@2 1)))) (= (ControlFlow 0 20400) 23937)) inline$$Test_new_event_handle_impl$1$anon4$2_correct))) (let ((inline$$Test_new_event_handle_impl$1$anon4_correct (=> (and (and (= $local_counter@3 (+ $local_counter@2 7)) (= inline$$Test_new_event_handle_impl$1$$tmp@1 (Integer 0))) (and (= $m@43 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@42) (Local (+ $local_counter@2 2)) true) (|Store_[Location]Value| (|contents#Memory| $m@42) (Local (+ $local_counter@2 2)) inline$$Test_new_event_handle_impl$1$$tmp@1))) (= (ControlFlow 0 20369) 20400))) inline$$CopyOrMoveValue$16$Entry_correct))) @@ -848,7 +848,7 @@ :skolemid |17| :pattern ( (|Select_[$int]Value| (|v#ValueArray| va@@27) x@@27)) )))))) (= (|l#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@41) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) 1)) (and (and (is-Integer (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@41) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) (>= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@41) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) 0)) (<= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@41) (|l#Reference| inline$$BorrowLoc$3$dst@1))))) $Test_EventHandleGenerator_counter)) MAX_U64))) (and (=> (= (ControlFlow 0 20284) 24390) inline$$Test_new_event_handle_impl$1$anon11_Then_correct) (=> (= (ControlFlow 0 20284) 20290) inline$$Test_new_event_handle_impl$1$anon11_Else_correct))))))) -(let ((inline$$Test_new_event_handle_impl$1$Entry_correct (=> (and (= inline$$Test_new_event_handle_impl$1$$tv0@0 $Test_Event2_type_value) (= inline$$Test_new_event_handle_impl$1$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@41) (Local (+ 0 22))))) (and (=> (= (ControlFlow 0 20266) (- 0 32677)) (|Select_[Location]$bool| (|domain#Memory| $m@41) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@41) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 20266) 20284) inline$$Test_new_event_handle_impl$1$anon0_correct)))))) +(let ((inline$$Test_new_event_handle_impl$1$Entry_correct (=> (and (= inline$$Test_new_event_handle_impl$1$$tv0@0 $Test_Event2_type_value) (= inline$$Test_new_event_handle_impl$1$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@41) (Local (+ 0 22))))) (and (=> (= (ControlFlow 0 20266) (- 0 32677)) (|Select_[Location]$bool| (|domain#Memory| $m@41) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@41) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 20266) 20284) inline$$Test_new_event_handle_impl$1$anon0_correct)))))) (let ((inline$$Test_create$0$anon39_Else$2_correct (=> (is-Address inline$$CopyOrMoveValue$15$local@0) (=> (and (= $m@41 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@40) (Local (+ 0 22)) true) (|Store_[Location]Value| (|contents#Memory| $m@40) (Local (+ 0 22)) inline$$CopyOrMoveValue$15$local@0))) (= (ControlFlow 0 24544) 20266)) inline$$Test_new_event_handle_impl$1$Entry_correct)))) (let ((inline$$CopyOrMoveValue$15$Entry_correct (=> (and (= inline$$CopyOrMoveValue$15$local@0 (|Select_[Location]Value| (|contents#Memory| $m@40) (Local (+ 0 0)))) (= (ControlFlow 0 19670) 24544)) inline$$Test_create$0$anon39_Else$2_correct))) (let ((inline$$Test_create$0$anon39_Else$1_correct (=> (and (and (and (and (is-Vector ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@40) (|l#Reference| inline$$BorrowLoc$3$dst@1)))) (let ((va@@28 (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$3$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@40) (|l#Reference| inline$$BorrowLoc$3$dst@1)))))) @@ -1067,7 +1067,7 @@ :skolemid |17| :pattern ( (|Select_[$int]Value| (|v#ValueArray| va@@42) x@@42)) )))))) (= (|l#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@20) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) 1)) (and (and (is-Integer (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@20) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) (>= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@20) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) 0)) (<= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@20) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) MAX_U64))) (and (=> (= (ControlFlow 0 16639) 18825) inline$$Test_fresh_guid$0$anon23_Then_correct) (=> (= (ControlFlow 0 16639) 16645) inline$$Test_fresh_guid$0$anon23_Else_correct))))))) -(let ((inline$$Test_fresh_guid$0$Entry_correct (=> (= inline$$Test_fresh_guid$0$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@20) (Local (+ $local_counter@0 4)))) (and (=> (= (ControlFlow 0 16621) (- 0 30374)) (|Select_[Location]$bool| (|domain#Memory| $m@20) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@20) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 16621) 16639) inline$$Test_fresh_guid$0$anon0_correct)))))) +(let ((inline$$Test_fresh_guid$0$Entry_correct (=> (= inline$$Test_fresh_guid$0$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@20) (Local (+ $local_counter@0 4)))) (and (=> (= (ControlFlow 0 16621) (- 0 30374)) (|Select_[Location]$bool| (|domain#Memory| $m@20) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@20) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 16621) 16639) inline$$Test_fresh_guid$0$anon0_correct)))))) (let ((inline$$Test_new_event_handle_impl$0$anon4$2_correct (=> (is-Address inline$$CopyOrMoveValue$8$local@0) (=> (and (= $m@20 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@19) (Local (+ $local_counter@0 4)) true) (|Store_[Location]Value| (|contents#Memory| $m@19) (Local (+ $local_counter@0 4)) inline$$CopyOrMoveValue$8$local@0))) (= (ControlFlow 0 18953) 16621)) inline$$Test_fresh_guid$0$Entry_correct)))) (let ((inline$$CopyOrMoveValue$8$Entry_correct (=> (and (= inline$$CopyOrMoveValue$8$local@0 (|Select_[Location]Value| (|contents#Memory| $m@19) (Local (+ $local_counter@0 1)))) (= (ControlFlow 0 15416) 18953)) inline$$Test_new_event_handle_impl$0$anon4$2_correct))) (let ((inline$$Test_new_event_handle_impl$0$anon4_correct (=> (and (and (= $local_counter@1 (+ $local_counter@0 7)) (= inline$$Test_new_event_handle_impl$0$$tmp@1 (Integer 0))) (and (= $m@19 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@18) (Local (+ $local_counter@0 2)) true) (|Store_[Location]Value| (|contents#Memory| $m@18) (Local (+ $local_counter@0 2)) inline$$Test_new_event_handle_impl$0$$tmp@1))) (= (ControlFlow 0 15385) 15416))) inline$$CopyOrMoveValue$8$Entry_correct))) @@ -1083,7 +1083,7 @@ :skolemid |17| :pattern ( (|Select_[$int]Value| (|v#ValueArray| va@@43) x@@43)) )))))) (= (|l#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@17) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) 1)) (and (and (is-Integer (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@17) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) (>= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@17) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) 0)) (<= (|i#Integer| (|Select_[$int]Value| (|v#ValueArray| (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@17) (|l#Reference| inline$$BorrowLoc$1$dst@1))))) $Test_EventHandleGenerator_counter)) MAX_U64))) (and (=> (= (ControlFlow 0 15300) 19406) inline$$Test_new_event_handle_impl$0$anon11_Then_correct) (=> (= (ControlFlow 0 15300) 15306) inline$$Test_new_event_handle_impl$0$anon11_Else_correct))))))) -(let ((inline$$Test_new_event_handle_impl$0$Entry_correct (=> (and (= inline$$Test_new_event_handle_impl$0$$tv0@0 $Test_Event1_type_value) (= inline$$Test_new_event_handle_impl$0$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@17) (Local (+ 0 19))))) (and (=> (= (ControlFlow 0 15282) (- 0 30181)) (|Select_[Location]$bool| (|domain#Memory| $m@17) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@17) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 15282) 15300) inline$$Test_new_event_handle_impl$0$anon0_correct)))))) +(let ((inline$$Test_new_event_handle_impl$0$Entry_correct (=> (and (= inline$$Test_new_event_handle_impl$0$$tv0@0 $Test_Event1_type_value) (= inline$$Test_new_event_handle_impl$0$sender@0 (|Select_[Location]Value| (|contents#Memory| $m@17) (Local (+ 0 19))))) (and (=> (= (ControlFlow 0 15282) (- 0 30181)) (|Select_[Location]$bool| (|domain#Memory| $m@17) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m@17) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 15282) 15300) inline$$Test_new_event_handle_impl$0$anon0_correct)))))) (let ((inline$$Test_create$0$anon37_Then$2_correct (=> (is-Address inline$$CopyOrMoveValue$7$local@0) (=> (and (= $m@17 (Memory (|Store_[Location]$bool| (|domain#Memory| $m@15) (Local (+ 0 19)) true) (|Store_[Location]Value| (|contents#Memory| $m@15) (Local (+ 0 19)) inline$$CopyOrMoveValue$7$local@0))) (= (ControlFlow 0 19560) 15282)) inline$$Test_new_event_handle_impl$0$Entry_correct)))) (let ((inline$$CopyOrMoveValue$7$Entry_correct (=> (and (= inline$$CopyOrMoveValue$7$local@0 (|Select_[Location]Value| (|contents#Memory| $m@15) (Local (+ 0 0)))) (= (ControlFlow 0 14686) 19560)) inline$$Test_create$0$anon37_Then$2_correct))) (let ((inline$$Test_create$0$anon37_Then$1_correct (=> (and (and (and (and (is-Vector ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@15) (|l#Reference| inline$$BorrowLoc$1$dst@1)))) (let ((va@@44 (|v#Vector| ($ReadValue_stratified (|p#Reference| inline$$BorrowLoc$1$dst@1) (|Select_[Location]Value| (|contents#Memory| $m@15) (|l#Reference| inline$$BorrowLoc$1$dst@1)))))) @@ -1224,8 +1224,8 @@ (let ((inline$$Test_create$0$anon29_Else_correct (=> (and (not true) (= (ControlFlow 0 13209) 13269)) inline$$Test_create$0$anon2_correct))) (let ((inline$$Test_create$0$anon29_Then_correct (=> (and ($DebugTrackLocal 3 1866 0 fresh_address) (= (ControlFlow 0 25196) 13269)) inline$$Test_create$0$anon2_correct))) (let ((inline$$Test_create$0$anon0_correct (and (=> (= (ControlFlow 0 13203) (- 0 28901)) (not false)) (=> (not false) (=> (and (is-Address fresh_address) (= $m@0 (Memory (|Store_[Location]$bool| (|domain#Memory| $m) (Local (+ 0 0)) true) (|Store_[Location]Value| (|contents#Memory| $m) (Local (+ 0 0)) fresh_address)))) (and (=> (= (ControlFlow 0 13203) 25196) inline$$Test_create$0$anon29_Then_correct) (=> (= (ControlFlow 0 13203) 13209) inline$$Test_create$0$anon29_Else_correct))))))) -(let ((inline$$Test_create$0$Entry_correct (and (=> (= (ControlFlow 0 13177) (- 0 28855)) (|Select_[Location]$bool| (|domain#Memory| $m) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 13177) 13203) inline$$Test_create$0$anon0_correct))))) -(let ((anon0$1_correct (=> (and (|Select_[Location]$bool| (|domain#Memory| $m) (Global $LibraAccount_T_type_value (|sender#Transaction| $txn))) (= (ControlFlow 0 25442) 13177)) inline$$Test_create$0$Entry_correct))) +(let ((inline$$Test_create$0$Entry_correct (and (=> (= (ControlFlow 0 13177) (- 0 28855)) (|Select_[Location]$bool| (|domain#Memory| $m) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn)))) (=> (|Select_[Location]$bool| (|domain#Memory| $m) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (=> (= (ControlFlow 0 13177) 13203) inline$$Test_create$0$anon0_correct))))) +(let ((anon0$1_correct (=> (and (|Select_[Location]$bool| (|domain#Memory| $m) (Global $DiemAccount_T_type_value (|sender#Transaction| $txn))) (= (ControlFlow 0 25442) 13177)) inline$$Test_create$0$Entry_correct))) (let ((anon0_correct (=> (= (ControlFlow 0 27784) 25442) anon0$1_correct))) anon0_correct))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )) diff --git a/language/move-prover/tests/sources/stdlib/modules/libra_account.move.legacy b/language/move-prover/tests/sources/stdlib/modules/diem_account.move.legacy similarity index 92% rename from language/move-prover/tests/sources/stdlib/modules/libra_account.move.legacy rename to language/move-prover/tests/sources/stdlib/modules/diem_account.move.legacy index 9fc9e70d7c..a94aac9914 100644 --- a/language/move-prover/tests/sources/stdlib/modules/libra_account.move.legacy +++ b/language/move-prover/tests/sources/stdlib/modules/diem_account.move.legacy @@ -1,13 +1,13 @@ address 0x1 { -// The module for the account resource that governs every Libra account -module LibraAccount { +// The module for the account resource that governs every Diem account +module DiemAccount { use 0x1::Transaction; use 0x1::Hash; - use 0x1::LBR; + use 0x1::XDX; use 0x1::LCS; - use 0x1::Libra; - use 0x1::LibraTransactionTimeout; + use 0x1::Diem; + use 0x1::DiemTransactionTimeout; use 0x1::Vector; spec module { @@ -16,7 +16,7 @@ module LibraAccount { pragma verify=false; } - // Every Libra account has a LibraAccount::T resource + // Every Diem account has a DiemAccount::T resource resource struct T { // The current authentication key. // This can be different than the key used to create the account @@ -38,18 +38,18 @@ module LibraAccount { // A resource that holds the coins stored in this account resource struct Balance { - coin: Libra::T, + coin: Diem::T, } - // The holder of WithdrawalCapability for account_address can withdraw Libra from - // account_address/LibraAccount::T/balance. + // The holder of WithdrawalCapability for account_address can withdraw Diem from + // account_address/DiemAccount::T/balance. // There is at most one WithdrawalCapability in existence for a given address. resource struct WithdrawalCapability { account_address: address, } // The holder of KeyRotationCapability for account_address can rotate the authentication key for - // account_address (i.e., write to account_address/LibraAccount::T/authentication_key). + // account_address (i.e., write to account_address/DiemAccount::T/authentication_key). // There is at most one KeyRotationCapability in existence for a given address. resource struct KeyRotationCapability { account_address: address, @@ -57,7 +57,7 @@ module LibraAccount { // Message for sent events struct SentPaymentEvent { - // The amount of Libra::T sent + // The amount of Diem::T sent amount: u64, // The address that was paid payee: address, @@ -67,7 +67,7 @@ module LibraAccount { // Message for received events struct ReceivedPaymentEvent { - // The amount of Libra::T received + // The amount of Diem::T received amount: u64, // The address that sent the coin payer: address, @@ -94,7 +94,7 @@ module LibraAccount { } // Deposits the `to_deposit` coin into the `payee`'s account balance - public fun deposit(payee: address, to_deposit: Libra::T) acquires T, Balance { + public fun deposit(payee: address, to_deposit: Diem::T) acquires T, Balance { // Since we don't have vector literals in the source language at // the moment. deposit_with_metadata(payee, to_deposit, x"") @@ -113,7 +113,7 @@ module LibraAccount { } // Deposits the `to_deposit` coin into the sender's account balance - public fun deposit_to_sender(to_deposit: Libra::T) acquires T, Balance { + public fun deposit_to_sender(to_deposit: Diem::T) acquires T, Balance { deposit(Transaction::sender(), to_deposit) } spec fun deposit_to_sender { @@ -131,7 +131,7 @@ module LibraAccount { // Deposits the `to_deposit` coin into the `payee`'s account balance with the attached `metadata` public fun deposit_with_metadata( payee: address, - to_deposit: Libra::T, + to_deposit: Diem::T, metadata: vector ) acquires T, Balance { deposit_with_sender_and_metadata( @@ -159,11 +159,11 @@ module LibraAccount { fun deposit_with_sender_and_metadata( payee: address, sender: address, - to_deposit: Libra::T, + to_deposit: Diem::T, metadata: vector ) acquires T, Balance { // Check that the `to_deposit` coin is non-zero - let deposit_value = Libra::value(&to_deposit); + let deposit_value = Diem::value(&to_deposit); assert(deposit_value > 0, 7); // Load the sender's account @@ -182,7 +182,7 @@ module LibraAccount { let payee_account_ref = borrow_global_mut(payee); let payee_balance = borrow_global_mut>(payee); // Deposit the `to_deposit` coin - Libra::deposit(&mut payee_balance.coin, to_deposit); + Diem::deposit(&mut payee_balance.coin, to_deposit); // Log a received event emit_event( &mut payee_account_ref.received_events, @@ -206,7 +206,7 @@ module LibraAccount { ensures global>(payee).coin.value == old(global>(payee).coin.value) + to_deposit.value; } - // mint_to_address can only be called by accounts with MintCapability (see Libra) + // mint_to_address can only be called by accounts with MintCapability (see Diem) // and those accounts will be charged for gas. If those accounts don't have enough gas to pay // for the transaction cost they will fail minting. // However those account can also mint to themselves so that is a decent workaround @@ -220,12 +220,12 @@ module LibraAccount { create_account(payee, auth_key_prefix); }; // Mint and deposit the coin - deposit(payee, Libra::mint(amount)); + deposit(payee, Diem::mint(amount)); } spec module { - define to_return(preburn_address: address): Libra::T { - global>(preburn_address).requests[0] + define to_return(preburn_address: address): Diem::T { + global>(preburn_address).requests[0] } } @@ -234,16 +234,16 @@ module LibraAccount { public fun cancel_burn( preburn_address: address, ) acquires T, Balance { - let to_return = Libra::cancel_burn(preburn_address); + let to_return = Diem::cancel_burn(preburn_address); deposit(preburn_address, to_return) } spec fun cancel_burn { - // derived from Libra::cancel_burn - aborts_if !exists>(sender()); - aborts_if !exists>(preburn_address); - aborts_if len(global>(preburn_address).requests) == 0; - aborts_if !exists>(0xA550C18); - aborts_if global>(0xA550C18).preburn_value < global>(preburn_address).requests[0].value; + // derived from Diem::cancel_burn + aborts_if !exists>(sender()); + aborts_if !exists>(preburn_address); + aborts_if len(global>(preburn_address).requests) == 0; + aborts_if !exists>(0xA550C18); + aborts_if global>(0xA550C18).preburn_value < global>(preburn_address).requests[0].value; // derived from Self::deposit aborts_if to_return(preburn_address).value == 0; @@ -259,14 +259,14 @@ module LibraAccount { ensures global(preburn_address).received_events.counter == old(global(preburn_address).received_events.counter) + 1; ensures global>(preburn_address).coin.value == old(global>(preburn_address).coin.value) + old(to_return(preburn_address).value); - // derived from Libra::CancelBurn - ensures Vector::eq_pop_front(global>(preburn_address).requests, old(global>(preburn_address).requests)); - ensures global>(0xA550C18).preburn_value == old(global>(0xA550C18).preburn_value) - old(global>(preburn_address).requests[0].value); + // derived from Diem::CancelBurn + ensures Vector::eq_pop_front(global>(preburn_address).requests, old(global>(preburn_address).requests)); + ensures global>(0xA550C18).preburn_value == old(global>(0xA550C18).preburn_value) - old(global>(preburn_address).requests[0].value); } - // Helper to withdraw `amount` from the given account balance and return the withdrawn Libra::T - fun withdraw_from_balance(balance: &mut Balance, amount: u64): Libra::T { - Libra::withdraw(&mut balance.coin, amount) + // Helper to withdraw `amount` from the given account balance and return the withdrawn Diem::T + fun withdraw_from_balance(balance: &mut Balance, amount: u64): Diem::T { + Diem::withdraw(&mut balance.coin, amount) } spec fun withdraw_from_balance { aborts_if balance.coin.value < amount; @@ -274,8 +274,8 @@ module LibraAccount { ensures result.value == amount; } - // Withdraw `amount` Libra::T from the transaction sender's account balance - public fun withdraw_from_sender(amount: u64): Libra::T acquires T, Balance { + // Withdraw `amount` Diem::T from the transaction sender's account balance + public fun withdraw_from_sender(amount: u64): Diem::T acquires T, Balance { let sender_account = borrow_global_mut(Transaction::sender()); let sender_balance = borrow_global_mut>(Transaction::sender()); // The sender has delegated the privilege to withdraw from her account elsewhere--abort. @@ -292,10 +292,10 @@ module LibraAccount { ensures result.value == amount; } - // Withdraw `amount` Libra::T from the account under cap.account_address + // Withdraw `amount` Diem::T from the account under cap.account_address public fun withdraw_with_capability( cap: &WithdrawalCapability, amount: u64 - ): Libra::T acquires Balance { + ): Diem::T acquires Balance { let balance = borrow_global_mut>(cap.account_address); withdraw_from_balance(balance , amount) } @@ -340,7 +340,7 @@ module LibraAccount { ensures global(cap.account_address).delegated_withdrawal_capability == false; } - // Withdraws `amount` Libra::T using the passed in WithdrawalCapability, and deposits it + // Withdraws `amount` Diem::T using the passed in WithdrawalCapability, and deposits it // into the `payee`'s account balance. Creates the `payee` account if it doesn't exist. public fun pay_from_capability( payee: address, @@ -360,7 +360,7 @@ module LibraAccount { ); } - // Withdraw `amount` Libra::T from the transaction sender's + // Withdraw `amount` Diem::T from the transaction sender's // account balance and send the coin to the `payee` address with the // attached `metadata` Creates the `payee` account if it does not exist public fun pay_from_sender_with_metadata( @@ -382,7 +382,7 @@ module LibraAccount { // derived from create_account aborts_if !exists(payee) && len(LCS::serialize(payee)) + len(auth_key_prefix) != 32; // modified aborts_if !exists(payee) && exists>(payee); // modified - aborts_if !exists(payee) && !exists>(0xA550C18); // modified + aborts_if !exists(payee) && !exists>(0xA550C18); // modified // derived from withdraw_from_sender aborts_if sender() != payee && !exists(sender()); // modified aborts_if sender() != payee && !exists>(sender()); // modified @@ -418,7 +418,7 @@ module LibraAccount { } - // Withdraw `amount` Libra::T from the transaction sender's + // Withdraw `amount` Diem::T from the transaction sender's // account balance and send the coin to the `payee` address // Creates the `payee` account if it does not exist public fun pay_from_sender( @@ -432,7 +432,7 @@ module LibraAccount { // derived from create_account aborts_if !exists(payee) && len(LCS::serialize(payee)) + len(auth_key_prefix) != 32; // modified aborts_if !exists(payee) && exists>(payee); // modified - aborts_if !exists(payee) && !exists>(0xA550C18); // modified + aborts_if !exists(payee) && !exists>(0xA550C18); // modified // derived from withdraw_from_sender aborts_if sender() != payee && !exists(sender()); // modified aborts_if sender() != payee && !exists>(sender()); // modified @@ -555,7 +555,7 @@ module LibraAccount { save_account( Balance{ - coin: Libra::zero() + coin: Diem::zero() }, T { authentication_key, @@ -573,7 +573,7 @@ module LibraAccount { aborts_if len(LCS::serialize(fresh_address)) + len(auth_key_prefix) != 32; aborts_if exists>(fresh_address); aborts_if exists(fresh_address); - aborts_if !exists>(0xA550C18); + aborts_if !exists>(0xA550C18); ensures exists>(fresh_address); ensures global>(fresh_address).coin.value == 0; ensures exists(fresh_address); @@ -609,7 +609,7 @@ module LibraAccount { aborts_if len(LCS::serialize(fresh_address)) + len(auth_key_prefix) != 32; aborts_if exists>(fresh_address); aborts_if exists(fresh_address); - aborts_if !exists>(0xA550C18); + aborts_if !exists>(0xA550C18); // derived from withdraw_from_sender aborts_if initial_balance > 0 && !exists(sender()); // modified aborts_if initial_balance > 0 && !exists>(sender()); // modified @@ -647,7 +647,7 @@ module LibraAccount { // Helper to return the u64 value of the `balance` for `account` fun balance_for(balance: &Balance): u64 { - Libra::value(&balance.coin) + Diem::value(&balance.coin) } spec fun balance_for { ensures result == balance.coin.value; @@ -759,13 +759,13 @@ module LibraAccount { // Check that the account has enough balance for all of the gas let max_transaction_fee = txn_gas_price * txn_max_gas_units; - let balance_amount = balance(transaction_sender); + let balance_amount = balance(transaction_sender); assert(balance_amount >= max_transaction_fee, 6); // Check that the transaction sequence number matches the sequence number of the account assert(txn_sequence_number >= sender_account.sequence_number, 3); assert(txn_sequence_number == sender_account.sequence_number, 4); - assert(LibraTransactionTimeout::is_valid_transaction_timestamp(txn_expiration_time), 7); + assert(DiemTransactionTimeout::is_valid_transaction_timestamp(txn_expiration_time), 7); } // The epilogue is invoked at the end of transactions. @@ -778,7 +778,7 @@ module LibraAccount { ) acquires T, Balance { // Load the transaction sender's account and balance resources let sender_account = borrow_global_mut(Transaction::sender()); - let sender_balance = borrow_global_mut>(Transaction::sender()); + let sender_balance = borrow_global_mut>(Transaction::sender()); // Charge for gas let transaction_fee_amount = txn_gas_price * (txn_max_gas_units - gas_units_remaining); @@ -794,8 +794,8 @@ module LibraAccount { // Bump the sequence number sender_account.sequence_number = txn_sequence_number + 1; // Pay the transaction fee into the transaction fee balance - let transaction_fee_balance = borrow_global_mut>(0xFEE); - Libra::deposit(&mut transaction_fee_balance.coin, transaction_fee); + let transaction_fee_balance = borrow_global_mut>(0xFEE); + Diem::deposit(&mut transaction_fee_balance.coin, transaction_fee); } /// Events diff --git a/language/move-prover/tests/sources/stdlib/modules/libra_transaction_timeout.move.legacy b/language/move-prover/tests/sources/stdlib/modules/diem_transaction_timeout.move.legacy similarity index 75% rename from language/move-prover/tests/sources/stdlib/modules/libra_transaction_timeout.move.legacy rename to language/move-prover/tests/sources/stdlib/modules/diem_transaction_timeout.move.legacy index e3b3a4939a..bb779e3c82 100644 --- a/language/move-prover/tests/sources/stdlib/modules/libra_transaction_timeout.move.legacy +++ b/language/move-prover/tests/sources/stdlib/modules/diem_transaction_timeout.move.legacy @@ -1,8 +1,8 @@ address 0x1 { -module LibraTransactionTimeout { +module DiemTransactionTimeout { use 0x1::Transaction; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; resource struct TTL { // Only transactions with timestamp in between block time and block time + duration would be accepted. @@ -41,24 +41,24 @@ module LibraTransactionTimeout { return false }; - let current_block_time = LibraTimestamp::now_microseconds(); + let current_block_time = DiemTimestamp::now_microseconds(); let timeout = borrow_global(0xA550C18).duration_microseconds; let _max_txn_time = current_block_time + timeout; let txn_time_microseconds = timestamp * 1000000; - // TODO: Add LibraTimestamp::is_before_exclusive(&txn_time_microseconds, &max_txn_time) + // TODO: Add DiemTimestamp::is_before_exclusive(&txn_time_microseconds, &max_txn_time) // This is causing flaky test right now. The reason is that we will use this logic for AC, where its wall // clock time might be out of sync with the real block time stored in StateStore. // See details in issue #2346. current_block_time < txn_time_microseconds } spec fun is_valid_transaction_timestamp { - aborts_if timestamp <= 9223372036854 && !exists(0xA550C18); + aborts_if timestamp <= 9223372036854 && !exists(0xA550C18); aborts_if timestamp <= 9223372036854 && !exists(0xA550C18); - aborts_if timestamp <= 9223372036854 && global(0xA550C18).microseconds + global(0xA550C18).duration_microseconds > max_u64(); + aborts_if timestamp <= 9223372036854 && global(0xA550C18).microseconds + global(0xA550C18).duration_microseconds > max_u64(); aborts_if timestamp <= 9223372036854 && timestamp * 1000000 > max_u64(); ensures timestamp > 9223372036854 ==> result == false; - ensures timestamp <= 9223372036854 ==> result == (global(0xA550C18).microseconds < timestamp * 1000000); + ensures timestamp <= 9223372036854 ==> result == (global(0xA550C18).microseconds < timestamp * 1000000); } } } diff --git a/language/move-prover/tests/testsuite.rs b/language/move-prover/tests/testsuite.rs index 8752aff9ad..630a37820d 100644 --- a/language/move-prover/tests/testsuite.rs +++ b/language/move-prover/tests/testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::path::{Path, PathBuf}; @@ -6,8 +6,8 @@ use std::path::{Path, PathBuf}; use codespan_reporting::term::termcolor::Buffer; use anyhow::anyhow; +use diem_temppath::TempPath; use itertools::Itertools; -use libra_temppath::TempPath; use move_prover::{cli::Options, run_move_prover}; use test_utils::{baseline_test::verify_or_update_baseline, extract_test_directives, read_env_var}; diff --git a/language/move-vm/integration-tests/Cargo.toml b/language/move-vm/integration-tests/Cargo.toml index 509fdc5392..578730e500 100644 --- a/language/move-vm/integration-tests/Cargo.toml +++ b/language/move-vm/integration-tests/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-vm-integration-tests" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Move VM Integration Tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,7 +15,7 @@ edition = "2018" anyhow = "1.0.34" tempfile = "3.1.0" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = {path = "../../move-core/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } move-lang = { path = "../../move-lang", version = "0.0.1" } diff --git a/language/move-vm/integration-tests/src/compiler.rs b/language/move-vm/integration-tests/src/compiler.rs index 40b3741c6e..6a1aa3f9c6 100644 --- a/language/move-vm/integration-tests/src/compiler.rs +++ b/language/move-vm/integration-tests/src/compiler.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; diff --git a/language/move-vm/integration-tests/src/lib.rs b/language/move-vm/integration-tests/src/lib.rs index c2dc10ce1e..198a07cbc9 100644 --- a/language/move-vm/integration-tests/src/lib.rs +++ b/language/move-vm/integration-tests/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![cfg(test)] diff --git a/language/move-vm/integration-tests/src/tests/bad_entry_point_tests.rs b/language/move-vm/integration-tests/src/tests/bad_entry_point_tests.rs index 5f75c3adab..78a5dc6d22 100644 --- a/language/move-vm/integration-tests/src/tests/bad_entry_point_tests.rs +++ b/language/move-vm/integration-tests/src/tests/bad_entry_point_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::compiler::{as_module, compile_units}; diff --git a/language/move-vm/integration-tests/src/tests/bad_storage_tests.rs b/language/move-vm/integration-tests/src/tests/bad_storage_tests.rs index 844b815429..42ffac419d 100644 --- a/language/move-vm/integration-tests/src/tests/bad_storage_tests.rs +++ b/language/move-vm/integration-tests/src/tests/bad_storage_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::compiler::{as_module, as_script, compile_units}; diff --git a/language/move-vm/integration-tests/src/tests/loader_tests.rs b/language/move-vm/integration-tests/src/tests/loader_tests.rs index c53a7fce1c..631a90e52f 100644 --- a/language/move-vm/integration-tests/src/tests/loader_tests.rs +++ b/language/move-vm/integration-tests/src/tests/loader_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::compiler::compile_modules_in_file; diff --git a/language/move-vm/integration-tests/src/tests/mod.rs b/language/move-vm/integration-tests/src/tests/mod.rs index e6e80571b8..657fca09f8 100644 --- a/language/move-vm/integration-tests/src/tests/mod.rs +++ b/language/move-vm/integration-tests/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod bad_entry_point_tests; diff --git a/language/move-vm/natives/Cargo.toml b/language/move-vm/natives/Cargo.toml index 6d1011b72a..a2c46d68e6 100644 --- a/language/move-vm/natives/Cargo.toml +++ b/language/move-vm/natives/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-vm-natives" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Move VM native functions" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,8 +16,8 @@ once_cell = "1.4.1" mirai-annotations = "1.10.1" sha2 = "0.9.2" -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-types = { path = "../types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } diff --git a/language/move-vm/natives/src/account.rs b/language/move-vm/natives/src/account.rs index 9c7b62798f..82dd4f0c1f 100644 --- a/language/move-vm/natives/src/account.rs +++ b/language/move-vm/natives/src/account.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::account_address::AccountAddress; diff --git a/language/move-vm/natives/src/debug.rs b/language/move-vm/natives/src/debug.rs index 6b01f40035..bbd09b3c55 100644 --- a/language/move-vm/natives/src/debug.rs +++ b/language/move-vm/natives/src/debug.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::gas_schedule::ONE_GAS_UNIT; diff --git a/language/move-vm/natives/src/event.rs b/language/move-vm/natives/src/event.rs index 0e1baad70d..87f14ca2a0 100644 --- a/language/move-vm/natives/src/event.rs +++ b/language/move-vm/natives/src/event.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::gas_schedule::GasAlgebra; diff --git a/language/move-vm/natives/src/hash.rs b/language/move-vm/natives/src/hash.rs index dbf456cae9..6add0798ea 100644 --- a/language/move-vm/natives/src/hash.rs +++ b/language/move-vm/natives/src/hash.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::HashValue; +use diem_crypto::HashValue; use move_vm_types::{ gas_schedule::NativeCostIndex, loaded_data::runtime_types::Type, diff --git a/language/move-vm/natives/src/lcs.rs b/language/move-vm/natives/src/lcs.rs index 5d38624e46..d7be2b4029 100644 --- a/language/move-vm/natives/src/lcs.rs +++ b/language/move-vm/natives/src/lcs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::vm_status::sub_status::NFE_LCS_SERIALIZATION_FAILURE; diff --git a/language/move-vm/natives/src/lib.rs b/language/move-vm/natives/src/lib.rs index fa6408664e..2a00b65fc5 100644 --- a/language/move-vm/natives/src/lib.rs +++ b/language/move-vm/natives/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[macro_use] diff --git a/language/move-vm/natives/src/signature.rs b/language/move-vm/natives/src/signature.rs index 80acf86239..012f36402b 100644 --- a/language/move-vm/natives/src/signature.rs +++ b/language/move-vm/natives/src/signature.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ed25519, traits::*}; +use diem_crypto::{ed25519, traits::*}; use move_vm_types::{ gas_schedule::NativeCostIndex, loaded_data::runtime_types::Type, diff --git a/language/move-vm/natives/src/signer.rs b/language/move-vm/natives/src/signer.rs index 76e493132c..55a97bd116 100644 --- a/language/move-vm/natives/src/signer.rs +++ b/language/move-vm/natives/src/signer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_vm_types::{ diff --git a/language/move-vm/natives/src/vector.rs b/language/move-vm/natives/src/vector.rs index b3aff7e413..c02f08d0e5 100644 --- a/language/move-vm/natives/src/vector.rs +++ b/language/move-vm/natives/src/vector.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::gas_schedule::GasAlgebra; diff --git a/language/move-vm/runtime/Cargo.toml b/language/move-vm/runtime/Cargo.toml index a1b2a0536d..e6bc6ea53c 100644 --- a/language/move-vm/runtime/Cargo.toml +++ b/language/move-vm/runtime/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-vm-runtime" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Core Move execution logic" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,10 +17,10 @@ mirai-annotations = "1.10.1" once_cell = "1.4.1" bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../../../common/logger", version = "0.1.0" } -libra-infallible = { path = "../../../common/infallible", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../../../common/logger", version = "0.1.0" } +diem-infallible = { path = "../../../common/infallible", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-natives = { path = "../natives", version = "0.1.0" } move-vm-types = { path = "../types", version = "0.1.0" } @@ -32,7 +32,7 @@ hex = "0.4.2" proptest = "0.10.1" compiler = { path = "../../compiler", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } move-lang = { path = "../../move-lang", version = "0.0.1" } [features] diff --git a/language/move-vm/runtime/src/data_cache.rs b/language/move-vm/runtime/src/data_cache.rs index ae8fa642e8..d3dc4812aa 100644 --- a/language/move-vm/runtime/src/data_cache.rs +++ b/language/move-vm/runtime/src/data_cache.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::loader::Loader; diff --git a/language/move-vm/runtime/src/debug.rs b/language/move-vm/runtime/src/debug.rs index 1f3b2d3abe..99ec532cc6 100644 --- a/language/move-vm/runtime/src/debug.rs +++ b/language/move-vm/runtime/src/debug.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-vm/runtime/src/interpreter.rs b/language/move-vm/runtime/src/interpreter.rs index 515adf54a7..c5726afce4 100644 --- a/language/move-vm/runtime/src/interpreter.rs +++ b/language/move-vm/runtime/src/interpreter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,8 +7,8 @@ use crate::{ native_functions::FunctionContext, trace, }; +use diem_logger::prelude::*; use fail::fail_point; -use libra_logger::prelude::*; use move_core_types::{ account_address::AccountAddress, gas_schedule::{AbstractMemorySize, GasAlgebra, GasCarrier}, diff --git a/language/move-vm/runtime/src/lib.rs b/language/move-vm/runtime/src/lib.rs index 8209dc2945..dfe2fd290e 100644 --- a/language/move-vm/runtime/src/lib.rs +++ b/language/move-vm/runtime/src/lib.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] //! The core Move VM logic. //! -//! It is a design goal for the Move VM to be independent of the Libra blockchain, so that +//! It is a design goal for the Move VM to be independent of the Diem blockchain, so that //! other blockchains can use it as well. The VM isn't there yet, but hopefully will be there //! soon. diff --git a/language/move-vm/runtime/src/loader.rs b/language/move-vm/runtime/src/loader.rs index 8fb5b896b6..5952bfe962 100644 --- a/language/move-vm/runtime/src/loader.rs +++ b/language/move-vm/runtime/src/loader.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{logging::LogContext, native_functions::NativeFunction}; @@ -7,9 +7,9 @@ use bytecode_verifier::{ CodeUnitVerifier, DependencyChecker, DuplicationChecker, InstructionConsistency, RecursiveStructDefChecker, ResourceTransitiveChecker, SignatureChecker, }; -use libra_crypto::HashValue; -use libra_infallible::Mutex; -use libra_logger::prelude::*; +use diem_crypto::HashValue; +use diem_infallible::Mutex; +use diem_logger::prelude::*; use move_core_types::{ identifier::{IdentStr, Identifier}, language_storage::{ModuleId, StructTag, TypeTag}, diff --git a/language/move-vm/runtime/src/logging.rs b/language/move-vm/runtime/src/logging.rs index ff2cce2a9e..8fbec4e825 100644 --- a/language/move-vm/runtime/src/logging.rs +++ b/language/move-vm/runtime/src/logging.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_logger::Schema; +use diem_logger::Schema; // Trait used by the VM to log interesting data. // Clients are responsible for the implementation of alert. diff --git a/language/move-vm/runtime/src/move_vm.rs b/language/move-vm/runtime/src/move_vm.rs index 3f421b7f79..5f81b0d914 100644 --- a/language/move-vm/runtime/src/move_vm.rs +++ b/language/move-vm/runtime/src/move_vm.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{data_cache::RemoteCache, runtime::VMRuntime, session::Session}; diff --git a/language/move-vm/runtime/src/native_functions.rs b/language/move-vm/runtime/src/native_functions.rs index 7e7b2d01a9..f8f2dace2a 100644 --- a/language/move-vm/runtime/src/native_functions.rs +++ b/language/move-vm/runtime/src/native_functions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{interpreter::Interpreter, loader::Resolver, logging::LogContext}; @@ -70,8 +70,8 @@ impl NativeFunction { (&CORE_CODE_ADDRESS, "Vector", "destroy_empty") => VectorDestroyEmpty, (&CORE_CODE_ADDRESS, "Vector", "swap") => VectorSwap, (&CORE_CODE_ADDRESS, "Event", "write_to_event_store") => AccountWriteEvent, - (&CORE_CODE_ADDRESS, "LibraAccount", "create_signer") => CreateSigner, - (&CORE_CODE_ADDRESS, "LibraAccount", "destroy_signer") => DestroySigner, + (&CORE_CODE_ADDRESS, "DiemAccount", "create_signer") => CreateSigner, + (&CORE_CODE_ADDRESS, "DiemAccount", "destroy_signer") => DestroySigner, (&CORE_CODE_ADDRESS, "Debug", "print") => DebugPrint, (&CORE_CODE_ADDRESS, "Debug", "print_stack_trace") => DebugPrintStackTrace, (&CORE_CODE_ADDRESS, "Signer", "borrow_address") => SignerBorrowAddress, diff --git a/language/move-vm/runtime/src/runtime.rs b/language/move-vm/runtime/src/runtime.rs index 6f9ad8c717..4609ddc24e 100644 --- a/language/move-vm/runtime/src/runtime.rs +++ b/language/move-vm/runtime/src/runtime.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,7 +8,7 @@ use crate::{ logging::LogContext, session::Session, }; -use libra_logger::prelude::*; +use diem_logger::prelude::*; use move_core_types::{ account_address::AccountAddress, identifier::IdentStr, diff --git a/language/move-vm/runtime/src/session.rs b/language/move-vm/runtime/src/session.rs index 67e7b101bb..5dec6c8af5 100644 --- a/language/move-vm/runtime/src/session.rs +++ b/language/move-vm/runtime/src/session.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-vm/runtime/src/tracing.rs b/language/move-vm/runtime/src/tracing.rs index 8707f639c0..217b497ad8 100644 --- a/language/move-vm/runtime/src/tracing.rs +++ b/language/move-vm/runtime/src/tracing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(debug_assertions)] @@ -6,7 +6,7 @@ use crate::debug::DebugContext; #[cfg(debug_assertions)] use ::{ - libra_infallible::Mutex, + diem_infallible::Mutex, move_vm_types::values::Locals, once_cell::sync::Lazy, std::{ diff --git a/language/move-vm/runtime/src/unit_tests/mod.rs b/language/move-vm/runtime/src/unit_tests/mod.rs index 5503735880..1e19c42ae3 100644 --- a/language/move-vm/runtime/src/unit_tests/mod.rs +++ b/language/move-vm/runtime/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod vm_arguments_tests; diff --git a/language/move-vm/runtime/src/unit_tests/vm_arguments_tests.rs b/language/move-vm/runtime/src/unit_tests/vm_arguments_tests.rs index fbd9065fa4..db6b391e8f 100644 --- a/language/move-vm/runtime/src/unit_tests/vm_arguments_tests.rs +++ b/language/move-vm/runtime/src/unit_tests/vm_arguments_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{data_cache::RemoteCache, logging::NoContextLog, move_vm::MoveVM}; diff --git a/language/move-vm/test-utils/Cargo.toml b/language/move-vm/test-utils/Cargo.toml index 64ec09fe49..d953f32ef7 100644 --- a/language/move-vm/test-utils/Cargo.toml +++ b/language/move-vm/test-utils/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-vm-test-utils" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Move VM Test Utils" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,7 +14,7 @@ edition = "2018" [dependencies] anyhow = "1.0.34" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-vm-runtime = { path = "../runtime", version = "0.1.0" } move-core-types = {path = "../../move-core/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } diff --git a/language/move-vm/test-utils/src/effects.rs b/language/move-vm/test-utils/src/effects.rs index bec24b424b..5254fa2e92 100644 --- a/language/move-vm/test-utils/src/effects.rs +++ b/language/move-vm/test-utils/src/effects.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Error, Result}; diff --git a/language/move-vm/test-utils/src/lib.rs b/language/move-vm/test-utils/src/lib.rs index 39f63cbc5d..aa3096f221 100644 --- a/language/move-vm/test-utils/src/lib.rs +++ b/language/move-vm/test-utils/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::new_without_default)] diff --git a/language/move-vm/test-utils/src/misc.rs b/language/move-vm/test-utils/src/misc.rs index 1e42ab9b87..b9808ebd3e 100644 --- a/language/move-vm/test-utils/src/misc.rs +++ b/language/move-vm/test-utils/src/misc.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; diff --git a/language/move-vm/test-utils/src/storage.rs b/language/move-vm/test-utils/src/storage.rs index 1d575d3cd2..42b0e203a8 100644 --- a/language/move-vm/test-utils/src/storage.rs +++ b/language/move-vm/test-utils/src/storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; diff --git a/language/move-vm/types/Cargo.toml b/language/move-vm/types/Cargo.toml index 4da473a73e..dadd56b346 100644 --- a/language/move-vm/types/Cargo.toml +++ b/language/move-vm/types/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-vm-types" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "Types for Move VM" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,8 +17,8 @@ sha2 = "0.9.2" serde = { version = "1.0.117", features = ["derive", "rc"] } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0"} -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0"} +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } diff --git a/language/move-vm/types/src/data_store.rs b/language/move-vm/types/src/data_store.rs index 0321fb8269..36401d9697 100644 --- a/language/move-vm/types/src/data_store.rs +++ b/language/move-vm/types/src/data_store.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/move-vm/types/src/gas_schedule.rs b/language/move-vm/types/src/gas_schedule.rs index 52cef7f395..2e31ab488c 100644 --- a/language/move-vm/types/src/gas_schedule.rs +++ b/language/move-vm/types/src/gas_schedule.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module lays out the basic abstract costing schedule for bytecode instructions. diff --git a/language/move-vm/types/src/lib.rs b/language/move-vm/types/src/lib.rs index f9528ede56..c604ba1ae7 100644 --- a/language/move-vm/types/src/lib.rs +++ b/language/move-vm/types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/move-vm/types/src/loaded_data/mod.rs b/language/move-vm/types/src/loaded_data/mod.rs index f2d17a1c62..82483a27b4 100644 --- a/language/move-vm/types/src/loaded_data/mod.rs +++ b/language/move-vm/types/src/loaded_data/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Loaded definition of code data used in runtime. //! diff --git a/language/move-vm/types/src/loaded_data/runtime_types.rs b/language/move-vm/types/src/loaded_data/runtime_types.rs index 00a7f2c4e8..9a7a51ba65 100644 --- a/language/move-vm/types/src/loaded_data/runtime_types.rs +++ b/language/move-vm/types/src/loaded_data/runtime_types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::{identifier::Identifier, language_storage::ModuleId, vm_status::StatusCode}; diff --git a/language/move-vm/types/src/natives/function.rs b/language/move-vm/types/src/natives/function.rs index c2e51fa19f..dcf302e4af 100644 --- a/language/move-vm/types/src/natives/function.rs +++ b/language/move-vm/types/src/natives/function.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Native Function Support diff --git a/language/move-vm/types/src/natives/mod.rs b/language/move-vm/types/src/natives/mod.rs index 9d0b280e74..d580203b2a 100644 --- a/language/move-vm/types/src/natives/mod.rs +++ b/language/move-vm/types/src/natives/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod function; diff --git a/language/move-vm/types/src/unit_tests/identifier_prop_tests.rs b/language/move-vm/types/src/unit_tests/identifier_prop_tests.rs index e0e2881b78..cd21991a0b 100644 --- a/language/move-vm/types/src/unit_tests/identifier_prop_tests.rs +++ b/language/move-vm/types/src/unit_tests/identifier_prop_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proptest::prelude::*; diff --git a/language/move-vm/types/src/unit_tests/mod.rs b/language/move-vm/types/src/unit_tests/mod.rs index 0ca1ebc2fc..e7dada26a2 100644 --- a/language/move-vm/types/src/unit_tests/mod.rs +++ b/language/move-vm/types/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(feature = "fuzzing")] diff --git a/language/move-vm/types/src/values/mod.rs b/language/move-vm/types/src/values/mod.rs index c6b3546801..62134c3714 100644 --- a/language/move-vm/types/src/values/mod.rs +++ b/language/move-vm/types/src/values/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod values_impl; diff --git a/language/move-vm/types/src/values/value_prop_tests.rs b/language/move-vm/types/src/values/value_prop_tests.rs index abd796a301..eb1e89f5ba 100644 --- a/language/move-vm/types/src/values/value_prop_tests.rs +++ b/language/move-vm/types/src/values/value_prop_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::values::{prop::layout_kinfo_and_value_strategy, Value}; diff --git a/language/move-vm/types/src/values/value_tests.rs b/language/move-vm/types/src/values/value_tests.rs index e024f69452..162bea522c 100644 --- a/language/move-vm/types/src/values/value_tests.rs +++ b/language/move-vm/types/src/values/value_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::values::*; diff --git a/language/move-vm/types/src/values/values_impl.rs b/language/move-vm/types/src/values/values_impl.rs index 29ac0bcdcb..6e71ff3575 100644 --- a/language/move-vm/types/src/values/values_impl.rs +++ b/language/move-vm/types/src/values/values_impl.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::natives::function::NativeResult; diff --git a/language/stdlib/CONTRIBUTING.md b/language/stdlib/CONTRIBUTING.md index 8214de1e78..bc89e0d6e9 100644 --- a/language/stdlib/CONTRIBUTING.md +++ b/language/stdlib/CONTRIBUTING.md @@ -4,14 +4,14 @@ This guide describes the process for adding, removing, and changing the Move mod ## Overview -Every state change in the Libra blockchain occurs via executing a Move *transaction script* embedded in a [SignedTransaction](../../types/src/transaction/mod.rs). A transaction script invokes procedures of Move *modules* that update published *resources*. The Move standard library consists of: +Every state change in the Diem blockchain occurs via executing a Move *transaction script* embedded in a [SignedTransaction](../../types/src/transaction/mod.rs). A transaction script invokes procedures of Move *modules* that update published *resources*. The Move standard library consists of: 1. The [modules](modules/) published in the genesis transaction. -2. The authorized [transaction scripts](transaction_scripts/) that can be included in a Libra transaction. A transaction with an unauthorized script will be discarded by validators. +2. The authorized [transaction scripts](transaction_scripts/) that can be included in a Diem transaction. A transaction with an unauthorized script will be discarded by validators. ## Environment Setup -Start by following the general Libra setup advice [here](../../CONTRIBUTING.md). Nothing else is strictly required, but you may want to consider a Move syntax highlighter for your editor (asking it to interpret `.move` files as Rust source is a decent start). +Start by following the general Diem setup advice [here](../../CONTRIBUTING.md). Nothing else is strictly required, but you may want to consider a Move syntax highlighter for your editor (asking it to interpret `.move` files as Rust source is a decent start). @@ -27,7 +27,7 @@ inside `stdlib` to compile all of the standard library modules, transaction scri Most tests for the standard library live [here](../move-lang/functional-tests) and can be run with `cargo test`. -These tests use the Move functional testing framework, which we will briefly explain here (more details can be found in this [blog post](https://developers.libra.org/blog/2020/03/06/how-to-use-the-end-to-end-tests-framework-in-move). +These tests use the Move functional testing framework, which we will briefly explain here (more details can be found in this [blog post](https://developers.diem.com/blog/2020/03/06/how-to-use-the-end-to-end-tests-framework-in-move). A functional test is a sequence of Move transaction scripts that are executed against the genesis state of the blockchain. Tests typically call functions of the module under test and then use `assert`s to check that the call had the expected effect. The framework includes directives for checking that a transaction executed successfully (`// check: EXECUTED`) or aborted (e.g., `// check: ABORTED`). In addition, there are configuration macros (written `//!`) for creating accounts with human-readable names (`//! account: alice`), begining a new transaction (`//! new-transaction`), and setting the sender of a transaction (`//! sender: alice`). @@ -54,12 +54,12 @@ The functional testing framework is very convenient, but can't express all of th ## Coding conventions ### Naming -- **Module names**: are camel case e.g., `LibraAccount`, `Libra` +- **Module names**: are camel case e.g., `DiemAccount`, `Diem` - **Type names**: are camel case e.g., `WithdrawalCapability`, `KeyRotationCapability` - **Function names**: are lower snake case e.g., `register_currency` - **Constant names**: are upper snake case e.g., `TREASURY_COMPLIANCE_ADDRESS` -- Generic types should be descriptive, or anti-descriptive where appropriate (e.g. `T` for the Vector generic type parameter, `LibraAccount` for the core `LibraAccount` resource, `deposit(t: CoinType)` for depositing a token in the `Libra` module). Most of the time the "main" type in a module should be the same name as the module e.g., `Libra::Libra`, `LibraAccount::LibraAccount`. -- **Module file names**: are the same as the module name e.g., `LibraAccount.move` +- Generic types should be descriptive, or anti-descriptive where appropriate (e.g. `T` for the Vector generic type parameter, `DiemAccount` for the core `DiemAccount` resource, `deposit(t: CoinType)` for depositing a token in the `Diem` module). Most of the time the "main" type in a module should be the same name as the module e.g., `Diem::Diem`, `DiemAccount::DiemAccount`. +- **Module file names**: are the same as the module name e.g., `DiemAccount.move` - **Script file names**: should be lower snake case and named after the name of the “main” function in the script. - **Mixed file names**: If the file contains multiple modules and/or scripts, the file name should be lower_snake_case, where the name does not match any particular module/script inside. diff --git a/language/stdlib/Cargo.toml b/language/stdlib/Cargo.toml index 0495703c24..4b984ec44c 100644 --- a/language/stdlib/Cargo.toml +++ b/language/stdlib/Cargo.toml @@ -2,10 +2,10 @@ name = "stdlib" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra stdlib" +authors = ["Diem Association "] +description = "Diem stdlib" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -14,9 +14,9 @@ anyhow = "1.0.34" bytecode-verifier = { path = "../bytecode-verifier", version = "0.1.0" } move-lang = { path = "../move-lang" } move-prover = { path = "../move-prover" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } datatest-stable = { path = "../../common/datatest-stable", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } vm = { path = "../vm", version = "0.1.0" } @@ -29,4 +29,4 @@ sha2 = "0.9.2" [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/stdlib/README.md b/language/stdlib/README.md index 69fb97cf8a..df4ea374fb 100644 --- a/language/stdlib/README.md +++ b/language/stdlib/README.md @@ -1,13 +1,13 @@ --- -id: libra-framework -title: Libra Framework +id: diem-framework +title: Diem Framework custom_edit_url: https://github.com/libra/libra/edit/master/language/stdlib/README.md --- -## The Libra Framework +## The Diem Framework -The Libra Framework defines the standard actions that can be performed on-chain -both by the Libra VM---through the various prologue/epilogue functions---and by +The Diem Framework defines the standard actions that can be performed on-chain +both by the Diem VM---through the various prologue/epilogue functions---and by users of the blockchain---through the allowed set of transactions. This directory contains different directories that hold the source Move modules and transaction scripts, along with a framework for generation of @@ -16,15 +16,15 @@ files. See the [Layout](#layout) section for a more detailed overview of the str ## Documentation -Each of the main components of the Libra Framework and contributing guidelines are documented separately. Particularly: +Each of the main components of the Diem Framework and contributing guidelines are documented separately. Particularly: * Documentation for the set of allowed transaction script can be found in [transaction_scripts/doc/transaction_script_documentation.md](transaction_scripts/doc/transaction_script_documentation.md). * The overview documentation for the Move modules can be found in [modules/doc/overview.md](modules/doc/overview.md). * An overview of the approach to formal verification of the framework can be found in [transaction_scripts/doc/spec_documentation.md](transaction_scripts/doc/spec_documentation.md). -* Contributing guidelines and basic coding standards for the Libra Framework can be found in [CONTRIBUTING.md](CONTRIBUTING.md). +* Contributing guidelines and basic coding standards for the Diem Framework can be found in [CONTRIBUTING.md](CONTRIBUTING.md). ## Compilation and Generation -Recompilation of the Libra Framework and the regeneration of the documents, +Recompilation of the Diem Framework and the regeneration of the documents, ABIs, and error information can be performed by running `cargo run` from this directory. There are a number of different options available and these are explained in the help for this command by running `cargo run -- --help` in this @@ -32,21 +32,21 @@ directory. Compilation and generation will be much faster if run in release mode (`cargo run --release`). ## Layout -The overall structure of the Libra Framework is as follows: +The overall structure of the Diem Framework is as follows: ``` -├── compiled # Generated files and public rust interface to the Libra Framework +├── compiled # Generated files and public rust interface to the Diem Framework │   ├── error_descriptions/*.errmap # Generated error descriptions for use by the Move Explain tool -│   ├── src # External Rust interface/library to use the Libra Framework -│   ├── stdlib # The compiled Move bytecode of the Libra Framework source modules +│   ├── src # External Rust interface/library to use the Diem Framework +│   ├── stdlib # The compiled Move bytecode of the Diem Framework source modules │   └── transaction_scripts # Generated ABIs and bytecode for each transaction script in the allowlist │   ├── abi/*.abi # Directory containing generated ABIs │   └── *.mv -├── modules # Libra Framework source modules and generated documentation +├── modules # Diem Framework source modules and generated documentation │   ├── *.move -│   └── doc/*.md # Generated documentation for the Libra Framework modules +│   └── doc/*.md # Generated documentation for the Diem Framework modules ├── nursery/*.move # Move modules that are not published on-chain, but are used for testing and debugging locally -├── src # Compilation and generation of information from Move source files in the Libra Framework. Not designed to be used as a Rust library +├── src # Compilation and generation of information from Move source files in the Diem Framework. Not designed to be used as a Rust library ├── tests └── transaction_scripts/*.move # Move source files for allowed transaction scripts └── doc/*.md # Generated documentation for allowed transaction scripts diff --git a/language/stdlib/compiled/Cargo.toml b/language/stdlib/compiled/Cargo.toml index 7e02378cd7..f4963e4478 100644 --- a/language/stdlib/compiled/Cargo.toml +++ b/language/stdlib/compiled/Cargo.toml @@ -2,19 +2,19 @@ name = "compiled-stdlib" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra stdlib" +authors = ["Diem Association "] +description = "Diem stdlib" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false [dependencies] anyhow = "1.0.34" bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } vm = { path = "../../vm", version = "0.1.0" } stdlib = { path = "../../stdlib", version = "0.1.0" } @@ -24,4 +24,4 @@ sha2 = "0.9.2" [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/stdlib/compiled/error_descriptions/error_descriptions.errmap b/language/stdlib/compiled/error_descriptions/error_descriptions.errmap index 688f59d1b2..32ea76e215 100644 Binary files a/language/stdlib/compiled/error_descriptions/error_descriptions.errmap and b/language/stdlib/compiled/error_descriptions/error_descriptions.errmap differ diff --git a/language/stdlib/compiled/packed_types/packed_types.txt b/language/stdlib/compiled/packed_types/packed_types.txt index fba3a0db4e..2d3dac610b 100644 --- a/language/stdlib/compiled/packed_types/packed_types.txt +++ b/language/stdlib/compiled/packed_types/packed_types.txt @@ -1,16 +1,34 @@ [ [ - "01020cedee4ec99c20a4db3488d5ffc714bdffc0afc8d40f98f752882f4f36acea", + "010189eb756f028218f6dd01088ae20c5d0660aa1249dd4314bae8dff6dc02bed9", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "Preburn", + "module": "DiemTransactionPublishingOption", + "name": "DiemTransactionPublishingOption", + "type_params": [] + } + ], + [ + "0102592aa78482a2a45f70dd470227fdccfbc7f1593e4779cd7caf7753d9fd9b85", + { + "address": "00000000000000000000000000000001", + "module": "DiemAccount", + "name": "CreateAccountEvent", + "type_params": [] + } + ], + [ + "01044daa839af0cc67586b2d72102660de9804307118f78660d328412dcdc36491", + { + "address": "00000000000000000000000000000001", + "module": "Option", + "name": "Option", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "DiemAccount", + "name": "KeyRotationCapability", "type_params": [] } } @@ -18,64 +36,80 @@ } ], [ - "0102d613cb0da978524f76091d31b4e8fcc39dfeeced892018cc6c676eaa602bd1", + "0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7", { "address": "00000000000000000000000000000001", - "module": "Option", - "name": "Option", - "type_params": [ - "U64" - ] + "module": "Roles", + "name": "RoleId", + "type_params": [] } ], [ - "0103db96f01bcf7ff5102545b9adca4e1459426299a93e1e5bd5e2b615c89e68ed", + "01074ab55935496cc500c4213ad4a64a5f86c4591915fc08069e9475a9111edfb0", { "address": "00000000000000000000000000000001", - "module": "LibraTransactionPublishingOption", - "name": "LibraTransactionPublishingOption", + "module": "AccountFreezing", + "name": "FreezeAccountEvent", "type_params": [] } ], [ - "0104d053f08c7af753b09e723c26b943c1528ecf5712e4e493a34c0de8c7cd4d17", + "010cf812caa08e3b91d8f1b3f16950d257a435b929b74b3ee997d51aa555af2a8a", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "WithdrawCapability", + "module": "ValidatorConfig", + "name": "Config", "type_params": [] } ], [ - "010d2f17f3620b93ea63907fdfe33d9d1aea2d5324a8e3ddbe27241f02282f11c1", + "0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811", { "address": "00000000000000000000000000000001", - "module": "LibraVMConfig", - "name": "GasConstants", - "type_params": [] + "module": "TransactionFee", + "name": "TransactionFee", + "type_params": [ + { + "Struct": { + "address": "00000000000000000000000000000001", + "module": "XUS", + "name": "XUS", + "type_params": [] + } + } + ] } ], [ - "010ee20def5ea5259e1e49f3ec33db727f7edd48e595759dc9b37ef2b45bd71f67", + "0117f27d1c2e56cd2e47dfb5517450adce789a24ad711e734d3210ff8254801af0", { "address": "00000000000000000000000000000001", - "module": "RecoveryAddress", - "name": "RecoveryAddress", - "type_params": [] + "module": "Diem", + "name": "BurnCapability", + "type_params": [ + { + "Struct": { + "address": "00000000000000000000000000000001", + "module": "XUS", + "name": "XUS", + "type_params": [] + } + } + ] } ], [ - "010f2a1f8fdfd70d8aa505f5c2fd3024baba4ca14635c0a4d4398acb0f5b6a3967", + "011a35c11d36eb0f85db8dc7c7f2b4e3d1af60c2271d5aee0ac86c97e607e3bbdc", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "Libra", + "module": "DiemConfig", + "name": "ModifyConfigCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "RegisteredCurrencies", + "name": "RegisteredCurrencies", "type_params": [] } } @@ -83,17 +117,17 @@ } ], [ - "01123f3746147847a98608e80d193d84d01fe6dd9a41d3dec1ac45ae5d62b8f074", + "011a9c40c64d16154570770496ad7c53b755682b25a3e020b951570c86ec704b0f", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "ModifyConfigCapability", + "module": "DiemConfig", + "name": "DiemConfig", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraTransactionPublishingOption", - "name": "LibraTransactionPublishingOption", + "module": "RegisteredCurrencies", + "name": "RegisteredCurrencies", "type_params": [] } } @@ -101,35 +135,62 @@ } ], [ - "0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079", + "011b6fd2b29c20f5f779d150d47ccdab6f3b4a6ebe0dcf306886bf2194ef6bb89e", { "address": "00000000000000000000000000000001", - "module": "VASP", - "name": "ChildVASP", + "module": "DualAttestation", + "name": "Limit", "type_params": [] } ], [ - "011a3c18d19411e76ac7acc442296296225ae5b5644bef0ab21f7efa2986fd9017", + "011f6eeb55f1885003c71186e7bbf80b393bfb9604ab5027153d16617730c3e255", { "address": "00000000000000000000000000000001", - "module": "AccountFreezing", - "name": "FreezeEventsHolder", + "module": "AccountLimits", + "name": "AccountLimitMutationCapability", "type_params": [] } ], [ - "011b046b3b7b3c4a79ea4e4beed0f3265f95052c1e655a903e525c39f5c488bb8d", + "01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44", { "address": "00000000000000000000000000000001", - "module": "Option", - "name": "Option", + "module": "DiemAccount", + "name": "DiemWriteSetManager", + "type_params": [] + } + ], + [ + "0128c7f7b83054cfbb9bf0e7eca7f2b5a40bf59741e89f6cac68fe21522eefecc5", + { + "address": "00000000000000000000000000000001", + "module": "Diem", + "name": "PreburnEvent", + "type_params": [] + } + ], + [ + "012b60b912ee076aac0a04ed019d3c966b4c8248c68ffe912b7cf0322eda86aca1", + { + "address": "00000000000000000000000000000001", + "module": "DiemVersion", + "name": "DiemVersion", + "type_params": [] + } + ], + [ + "012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0", + { + "address": "00000000000000000000000000000001", + "module": "DesignatedDealer", + "name": "TierInfo", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "WithdrawCapability", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -137,17 +198,17 @@ } ], [ - "011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175", + "012c3324513ca6159f7845daac8dcda8f8c46a64992fbdf7efe0c836030d7df457", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "LibraConfig", + "module": "DesignatedDealer", + "name": "TierInfo", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraSystem", - "name": "LibraSystem", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -155,80 +216,71 @@ } ], [ - "011e6638ce73bd5b7ef5abe3ffefec658212ec0acb5fb0cf58e11054c7429cb92c", + "0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0", { "address": "00000000000000000000000000000001", - "module": "LibraSystem", - "name": "LibraSystem", + "module": "VASP", + "name": "ParentVASP", "type_params": [] } ], [ - "011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a", + "0132c94d998fee0b20c6df77a1e3d8c5da53bbd3ecac519dca6fc2a92e72ba46f8", { "address": "00000000000000000000000000000001", "module": "DesignatedDealer", - "name": "Dealer", - "type_params": [] - } - ], - [ - "0122494956c1923748f8b8b9bb1565668856b62cb7ec87267af01b52b977c3060f", - { - "address": "00000000000000000000000000000001", - "module": "ChainId", - "name": "ChainId", + "name": "ReceivedMintEvent", "type_params": [] } ], [ - "012282c1c0f4af2341a820c732505236a1150ebb7989fca567922796fa8e2e853a", + "0135c112e3c9918f6539c4d2cee3f4f2f82fae09a2c6bb60a630e6c01c6c38ee7b", { "address": "00000000000000000000000000000001", - "module": "RegisteredCurrencies", - "name": "RegisteredCurrencies", + "module": "DiemSystem", + "name": "DiemSystem", "type_params": [] } ], [ - "0125f9de45a06fbafa9cadfd8f442e44a935c085e6b79478b53fc08bc98a0c2d78", + "0139bf86a870228cd9e9a0744833bcf8c2593fa594861259a095ab0fa2a0dde09f", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "MintEvent", + "module": "ChainId", + "name": "ChainId", "type_params": [] } ], [ - "01300b60ad038217de8098fc6b15d664981142462d23ac740932e656e21d36417b", + "013dda847a1d16c0fad3c88a1b5677c0dc79fc4df0e3a02a55437dac5ea92125a2", { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "Reserve", + "module": "DiemAccount", + "name": "KeyRotationCapability", "type_params": [] } ], [ - "01368c921b1e4a3b117f1be9f349983f71ff624f0a7c92a718989942cca2d0e97c", + "014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "NewEpochEvent", + "module": "DiemBlock", + "name": "BlockMetadata", "type_params": [] } ], [ - "013b6f6edb9947ebdb990ac372fdec1258e3617ee93a2505ddeafecd78f08188ce", + "01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "ModifyConfigCapability", + "module": "DiemAccount", + "name": "Balance", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraVMConfig", - "name": "LibraVMConfig", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -236,17 +288,26 @@ } ], [ - "013cef395cd7d2b797acaec9fc848ecd2e13cf2e46fff19ec0855c0583f438d8e2", + "0145a88b0bd5bfa89a7c07e9669a6164debb4a1c39a89d6e87a879976dd55b56a5", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "MintCapability", + "module": "AccountFreezing", + "name": "FreezeEventsHolder", + "type_params": [] + } + ], + [ + "0145fc95ae78a6f9a65188248168d7efa4c238039c960a3cf645a27d8e3da28437", + { + "address": "00000000000000000000000000000001", + "module": "Diem", + "name": "Diem", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -254,35 +315,35 @@ } ], [ - "013e931be30d1bbe123a84793a5b502b30386db08f7720ea02e3ff0bd5a76cb4ca", + "014b6dbad8c551b1f036aa86a468f44509f3366f672a970e0866daa14eaf1f372a", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "ReceivedPaymentEvent", + "module": "DiemConfig", + "name": "NewEpochEvent", "type_params": [] } ], [ - "013ff106f0f16155e14bde37e33ce8f2647e6cd9bf19bc3d0adbee70f9a1784e20", + "014b7b431bf5fe453da111b256e27e11b83dd19545bd723703c24a21d92504b575", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "PreburnEvent", + "module": "DiemVMConfig", + "name": "DiemVMConfig", "type_params": [] } ], [ - "0145dfea169804cc69483167aed1ca32f5a77c46a8226ecb1559c52196f9023ff7", + "01537af6bfd1a9cd0c23f3d7289b361836a34d389817fbe5d4b908609ab14cb8fb", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "LibraConfig", + "module": "AccountLimits", + "name": "LimitsDefinition", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraVMConfig", - "name": "LibraVMConfig", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -290,7 +351,7 @@ } ], [ - "014b290fa2a17ee05d69077e10a8bdfcb15bb5c850b97c4c876b706f54434dceba", + "015b7ec2145ac79fd76df48a56f52168761a8a7f93cdd4bcf0693600ce6a0fde6b", { "address": "00000000000000000000000000000001", "module": "Option", @@ -299,8 +360,8 @@ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "KeyRotationCapability", + "module": "ValidatorConfig", + "name": "Config", "type_params": [] } } @@ -308,17 +369,26 @@ } ], [ - "0151e7c9d282e4b36f91f3d752caba7708ff0129d8d84fd839553d905b9e975b61", + "015e40cd7b9c6127c1e3f4a0ecbd49b061a7fe06a206691468d26287f738abbb33", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "BurnCapability", + "module": "DiemVMConfig", + "name": "GasConstants", + "type_params": [] + } + ], + [ + "015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be", + { + "address": "00000000000000000000000000000001", + "module": "DiemConfig", + "name": "DiemConfig", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "DiemSystem", + "name": "DiemSystem", "type_params": [] } } @@ -326,80 +396,80 @@ } ], [ - "01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92", + "0163829849cd5e781a5e9de942dfc2d2d0ec3b70154af59e6f8c74e6226366c617", { "address": "00000000000000000000000000000001", - "module": "DualAttestation", - "name": "Credential", + "module": "RegisteredCurrencies", + "name": "RegisteredCurrencies", "type_params": [] } ], [ - "015bf62b742bf0eb38d698cf8fa2c1df4f9ed11258f104a37cf4f85d84ae6ece47", + "0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131", { "address": "00000000000000000000000000000001", - "module": "LibraSystem", - "name": "ValidatorInfo", + "module": "ValidatorConfig", + "name": "ValidatorConfig", "type_params": [] } ], [ - "015f3c18dce32e917db89b0f4cf80827de529b030a455ec5af5160450ecbc9bb89", + "01657a36a94a4463465ad9abffbf3f317c42bcb92deafd22091eb0c8409e16a69b", { "address": "00000000000000000000000000000001", - "module": "DualAttestation", - "name": "ComplianceKeyRotationEvent", + "module": "DiemAccount", + "name": "ReceivedPaymentEvent", "type_params": [] } ], [ - "016051bdf564da377f22f5b440e1abb277e1d661a2f599da60451352c214eba727", + "01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893", { "address": "00000000000000000000000000000001", - "module": "FixedPoint32", - "name": "FixedPoint32", + "module": "DiemAccount", + "name": "DiemAccount", "type_params": [] } ], [ - "0160c969b574ca075b5ca97c28ae5615078df45b6d493336ab64ec5e3a079e8f70", + "0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7", { "address": "00000000000000000000000000000001", - "module": "AccountLimits", - "name": "AccountLimitMutationCapability", + "module": "SlidingNonce", + "name": "SlidingNonce", "type_params": [] } ], [ - "0164fb33270e34819179c0740359e0e188dd65b86c451d01306e0165b07d84ffe3", + "016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "ToLBRExchangeRateUpdateEvent", + "module": "DualAttestation", + "name": "Credential", "type_params": [] } ], [ - "0166cef2a6c8f9101a1bb6bb9586d6ba6bf2b940f8d94c845aa420ee3b24de9121", + "016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83", { "address": "00000000000000000000000000000001", - "module": "ValidatorConfig", - "name": "Config", + "module": "DiemConfig", + "name": "Configuration", "type_params": [] } ], [ - "016d1a969de68e60aa351ee444667b00564618e8eddeed57ec39e4f50528ee290c", + "0173b513a3c85b52f7d770b697d8ccc1d679611e19b90e335697f4381510412efc", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "ModifyConfigCapability", + "module": "DiemConfig", + "name": "DiemConfig", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraSystem", - "name": "LibraSystem", + "module": "DiemTransactionPublishingOption", + "name": "DiemTransactionPublishingOption", "type_params": [] } } @@ -407,80 +477,44 @@ } ], [ - "0170df01a050acd0d46afb601ffe53534889aced22334f647611ff713279e57a73", + "017c7f53aef4842736d325e7995ab9f7973b6784e6b9dd7a63afd80bd570ec8a81", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "CreateAccountEvent", + "module": "FixedPoint32", + "name": "FixedPoint32", "type_params": [] } ], [ - "0171dbab2f46fa3f82943b2c4cfd58073dc82b19a7612082843de3781cc69c2442", - { - "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "Preburn", - "type_params": [ - { - "Struct": { - "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", - "type_params": [] - } - } - ] - } - ], - [ - "0171fbda992516e5fe261089fbfbe3699518ad6a81f087b042e8eecd36a5c50e76", + "017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6", { "address": "00000000000000000000000000000001", - "module": "AccountLimits", - "name": "LimitsDefinition", - "type_params": [ - { - "Struct": { - "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", - "type_params": [] - } - } - ] + "module": "DiemTimestamp", + "name": "CurrentTimeMicroseconds", + "type_params": [] } ], [ - "0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3", + "01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96", { "address": "00000000000000000000000000000001", - "module": "DesignatedDealer", - "name": "TierInfo", - "type_params": [ - { - "Struct": { - "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", - "type_params": [] - } - } - ] + "module": "AccountFreezing", + "name": "FreezingBit", + "type_params": [] } ], [ - "017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95", + "0181b1db4c5e92724faf83deb41a7fd6fd39d5fe8dc2dac372b41b0aa4f7101ee5", { "address": "00000000000000000000000000000001", - "module": "TransactionFee", - "name": "TransactionFee", + "module": "Diem", + "name": "MintCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -488,89 +522,89 @@ } ], [ - "0175bac5067e333e1f7890330cb33c5beac74ff38f899c0d94f9d4022ea15322a6", + "018456b30729656e73150a265806e0fcf1457040f69b268f1e6bd305fe2e6f01da", { "address": "00000000000000000000000000000001", - "module": "AccountFreezing", - "name": "UnfreezeAccountEvent", + "module": "DiemSystem", + "name": "ValidatorInfo", "type_params": [] } ], [ - "01766a2b1e03f7d08a39838c5329f9b093112bc5a5de8f0a1f37c5922ff188d5ad", + "018768c92914f9179f86ad3f08ad9e004ad144edc2923bb5eabc3eacdbc6438f92", { "address": "00000000000000000000000000000001", - "module": "LibraVersion", - "name": "LibraVersion", + "module": "XDX", + "name": "Reserve", "type_params": [] } ], [ - "01794ef83d60ee66878154ab293b9fae46b70729ea0793d3ae4097616530869ef1", + "018837e691e2dfad61a86a752a81dda51b10a823b4a9b92b4734080bd1646638b9", { "address": "00000000000000000000000000000001", - "module": "LibraVMConfig", - "name": "LibraVMConfig", + "module": "DiemAccount", + "name": "SentPaymentEvent", "type_params": [] } ], [ - "017cff1dfeb627167d0578945b489e6e9b5082be4a48a4b1f75b156baec658eb15", + "01898aa4792429d7cb13161b12e80d178397e06552ffdfe4b87d9afea851f60914", { "address": "00000000000000000000000000000001", - "module": "Libra", + "module": "Diem", "name": "BurnEvent", "type_params": [] } ], [ - "0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9", - { - "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "LibraAccount", - "type_params": [] - } - ], - [ - "018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97", + "0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e", { "address": "00000000000000000000000000000001", - "module": "ValidatorConfig", - "name": "ValidatorConfig", - "type_params": [] - } - ], - [ - "01909ace5cff20a5be39701b1766c8ed16e4d4b7c6bc01582dc148991c7abcb06b", - { - "address": "00000000000000000000000000000001", - "module": "DualAttestation", - "name": "BaseUrlRotationEvent", - "type_params": [] + "module": "AccountLimits", + "name": "LimitsDefinition", + "type_params": [ + { + "Struct": { + "address": "00000000000000000000000000000001", + "module": "XUS", + "name": "XUS", + "type_params": [] + } + } + ] } ], [ - "0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5", + "018a5ad82e5ae58b4d744ab5c78007373ce8b950414b38a3f67df97ee64d7d5261", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "AccountOperationsCapability", - "type_params": [] + "module": "Diem", + "name": "Preburn", + "type_params": [ + { + "Struct": { + "address": "00000000000000000000000000000001", + "module": "XDX", + "name": "XDX", + "type_params": [] + } + } + ] } ], [ - "0192ed623a2d06d2cb84217bae54cec5ad0cba966b8933e2bf808b2dc69ff16d50", + "01908b866fff71b42be665e55f2104d7936e0c443811df00113d5292d271604731", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", + "module": "DiemConfig", "name": "ModifyConfigCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "RegisteredCurrencies", - "name": "RegisteredCurrencies", + "module": "DiemSystem", + "name": "DiemSystem", "type_params": [] } } @@ -578,35 +612,17 @@ } ], [ - "019796b03ec6a44e423209eb9e81fed035d0a0806068bf22e73e2d913334d054aa", - { - "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "CancelBurnEvent", - "type_params": [] - } - ], - [ - "019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2", + "01930bfce316538b494e279ccb03cbff937ca0416c3c6d1334fe8597fdba30d6b3", { "address": "00000000000000000000000000000001", - "module": "VASP", - "name": "ParentVASP", - "type_params": [] - } - ], - [ - "0199677a497d5061ef2881b702b5ffdd5b02614888d416ae315d66d84b39ffe1af", - { - "address": "00000000000000000000000000000001", - "module": "LibraConfig", + "module": "DiemConfig", "name": "ModifyConfigCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraVersion", - "name": "LibraVersion", + "module": "DiemTransactionPublishingOption", + "name": "DiemTransactionPublishingOption", "type_params": [] } } @@ -614,26 +630,26 @@ } ], [ - "019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50", + "0194539a59aa3cc35aa76618e8c7296730906b040db2c1bb5978942a3cdf865ace", { "address": "00000000000000000000000000000001", - "module": "AccountFreezing", - "name": "FreezingBit", + "module": "DiemSystem", + "name": "CapabilityHolder", "type_params": [] } ], [ - "01a13858f5493a029359d2126b3aef98e9dace1d86a71be3a514a98b3bd253c847", + "0194ff005657e4cd22d938a381796224e911acc64ea7b0bedadeabbdc903784b91", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "BurnCapability", + "module": "Diem", + "name": "CurrencyInfo", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -641,44 +657,44 @@ } ], [ - "01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2", + "019a06aba5ed3867bc24396156b7e1796b58d08bd1809b672adcbf6e87df6ef2eb", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "LibraWriteSetManager", + "module": "DualAttestation", + "name": "BaseUrlRotationEvent", "type_params": [] } ], [ - "01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683", + "019b1af31db39ebeed2a66437c15ce4fab3101b68624f6307d0ccd2af3c4083d9c", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "Configuration", + "module": "DualAttestation", + "name": "ComplianceKeyRotationEvent", "type_params": [] } ], [ - "01a917cd907e9e09e4c44b003624c5817513bb8b3c979f325a223d2f7d51c5d2d9", + "019cefc537069ba839778cac48c315a42201c179d94af85e6a617b656e7a3556f5", { "address": "00000000000000000000000000000001", - "module": "LibraSystem", - "name": "CapabilityHolder", + "module": "Diem", + "name": "MintEvent", "type_params": [] } ], [ - "01ab426b82b34f64869cb07ec0df0a58908cb9058043b0c5113e4f703862d6d619", + "019e0e78c176ed6538bfeb8a879f1ad9c1b63271f0ea8ab7857d8b3e69d8d8e9b4", { "address": "00000000000000000000000000000001", - "module": "Option", - "name": "Option", + "module": "Diem", + "name": "Diem", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "ValidatorConfig", - "name": "Config", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -686,17 +702,26 @@ } ], [ - "01b40c7f1f369e8653c1df137967c45c0c368668fa8dad040a8d8ceec212e155d7", + "019e80593be66d1a3fd3718d62e0e6e9898dd176a11f8a1b6e6c418af16d3bb744", { "address": "00000000000000000000000000000001", - "module": "DesignatedDealer", - "name": "TierInfo", + "module": "AccountFreezing", + "name": "UnfreezeAccountEvent", + "type_params": [] + } + ], + [ + "019fd5d4533093f1e7bcc14590f73e6fab02295bc7c8698849b6c261931e7ab547", + { + "address": "00000000000000000000000000000001", + "module": "Diem", + "name": "MintCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -704,46 +729,26 @@ } ], [ - "01b5d92429a8648f99bcf93f1db0f38ab8a255bd9c68083471f8da5d7f35af0d1c", - { - "address": "00000000000000000000000000000001", - "module": "SharedEd25519PublicKey", - "name": "SharedEd25519PublicKey", - "type_params": [] - } - ], - [ - "01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5", + "01a2448d5d1f048102c1e4c2d326199cd8e6a29b056a5fb560425fc3efacea5927", { "address": "00000000000000000000000000000001", - "module": "Roles", - "name": "RoleId", + "module": "DiemVMConfig", + "name": "GasSchedule", "type_params": [] } ], [ - "01c2c4723b0bd92ffc1deb11516a1b982543a814d0e53bb31fcc92b074db73c12a", + "01a3408195082b97046d08ab4047eed60ba5231aa6c1c9ef715ecdefab88aef9d3", { "address": "00000000000000000000000000000001", - "module": "Option", - "name": "Option", - "type_params": [ - "Address" - ] - } - ], - [ - "01c57e4b1f2f0b310e31551b209d95863037d5d549f41f62d324aeabb6f44e0baf", - { - "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "LibraConfig", + "module": "DiemConfig", + "name": "DiemConfig", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraTransactionPublishingOption", - "name": "LibraTransactionPublishingOption", + "module": "DiemVersion", + "name": "DiemVersion", "type_params": [] } } @@ -751,17 +756,17 @@ } ], [ - "01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7", + "01a40541b31f8b5153ccc1920ba1a6d8635b5ae642401864c2c68ddc6b6760eb9a", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "Balance", + "module": "DiemConfig", + "name": "ModifyConfigCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "DiemVersion", + "name": "DiemVersion", "type_params": [] } } @@ -769,17 +774,17 @@ } ], [ - "01c6ea1327bfe3956aea6f64fdba62c720ef9c1e63d498391ac0b1cfacc0e48125", + "01a6125799e83e2caf942dbfee0e2b4b54d62379039911c3b80912123960a53d63", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "CurrencyInfo", + "module": "Diem", + "name": "BurnCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -787,53 +792,44 @@ } ], [ - "01c9ccc5aba203c7a5a0fa74f1e5d94d97b414b86f5086a0a8f6c0ea0e52e7f138", - { - "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "SentPaymentEvent", - "type_params": [] - } - ], - [ - "01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7", + "01a796582f423d4875cbb4f438dcd7c27584622b08752b27aa0c64fe38148f7078", { "address": "00000000000000000000000000000001", - "module": "LibraBlock", - "name": "BlockMetadata", + "module": "DiemAccount", + "name": "WithdrawCapability", "type_params": [] } ], [ - "01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d", + "01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c", { "address": "00000000000000000000000000000001", - "module": "LibraTimestamp", - "name": "CurrentTimeMicroseconds", + "module": "DesignatedDealer", + "name": "Dealer", "type_params": [] } ], [ - "01ccf44896b2d4ffb26fd7318d744385a4c17c2ef345bd9bcb4988768201372b2b", + "01b8de352f67a89de82bb0a21f8ee4b924e9f5600368e95c893171a63733f463fb", { "address": "00000000000000000000000000000001", - "module": "DualAttestation", - "name": "Limit", + "module": "SharedEd25519PublicKey", + "name": "SharedEd25519PublicKey", "type_params": [] } ], [ - "01d6e6cfb8152b64de92443d0187c2f2ba78c18d20243d1bde105270b6992ca952", + "01bc6970344f7b2bbcb5e059a3b4c8ff2c4fdedf01c0e24769d57d19a7b6dd803d", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "LibraConfig", + "module": "Option", + "name": "Option", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LibraVersion", - "name": "LibraVersion", + "module": "DiemAccount", + "name": "WithdrawCapability", "type_params": [] } } @@ -841,17 +837,17 @@ } ], [ - "01d974fad033f08bd036183fe96e6e80ef392ba3c94662f64e19a445540b381ff9", + "01bd2244c73ffd3886d5ce2f76d36f5050372d54a61cffa39d1e4fae2e4d11f3c4", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "MintCapability", + "module": "Diem", + "name": "CurrencyInfo", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -859,17 +855,26 @@ } ], [ - "01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a", + "01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759", { "address": "00000000000000000000000000000001", - "module": "AccountLimits", - "name": "LimitsDefinition", + "module": "ValidatorOperatorConfig", + "name": "ValidatorOperatorConfig", + "type_params": [] + } + ], + [ + "01c5abee902997bc51723cdbf3b7ad66d2a334d14ba21ae983c3693406385b19e2", + { + "address": "00000000000000000000000000000001", + "module": "DiemConfig", + "name": "ModifyConfigCapability", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", + "module": "DiemVMConfig", + "name": "DiemVMConfig", "type_params": [] } } @@ -877,26 +882,17 @@ } ], [ - "01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934", + "01d54c5a7dcfd5f668d359375bccdd04bd77d79f4dc4c76d939f80bd062a3c7743", { "address": "00000000000000000000000000000001", - "module": "SlidingNonce", - "name": "SlidingNonce", - "type_params": [] - } - ], - [ - "01e1148a58a0a3d06f43d4114f9ac4711cf8431987a3845d09a63f3b9593bcc279", - { - "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "Libra", + "module": "DiemConfig", + "name": "DiemConfig", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "DiemVMConfig", + "name": "DiemVMConfig", "type_params": [] } } @@ -904,53 +900,55 @@ } ], [ - "01e2d51827c76b70cc9f91a1fc28d14edac68d9ff9d7d10466326102dd463f922a", + "01d9bdbb5aa40ff8cffd2be2f9eeff2bdb983e58cb7532c68339a320d648681d66", { "address": "00000000000000000000000000000001", - "module": "AccountFreezing", - "name": "FreezeAccountEvent", + "module": "Diem", + "name": "ToXDXExchangeRateUpdateEvent", "type_params": [] } ], [ - "01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4", + "01da1de5726ee78b137ff0df4ad9bc3381c754fd48a6d2a9e4fac07fa8803601bb", { "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "Balance", + "module": "Option", + "name": "Option", "type_params": [ - { - "Struct": { - "address": "00000000000000000000000000000001", - "module": "Coin1", - "name": "Coin1", - "type_params": [] - } - } + "U64" ] } ], [ - "01e7ae84f992d29f92e4944c66bbca887bd08035dc29877ba98fd164b2f55074de", + "01e8af9e59348c99e9bedd90059e125d1059f80271dcfa4362b02f7e263ce6ec72", { "address": "00000000000000000000000000000001", - "module": "DesignatedDealer", - "name": "ReceivedMintEvent", + "module": "RecoveryAddress", + "name": "RecoveryAddress", "type_params": [] } ], [ - "01f093293c23e7acf8fa7b5d6007a807502b1260aab343e20d0f55fd8f9b9c4ae2", + "01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304", { "address": "00000000000000000000000000000001", - "module": "LibraConfig", - "name": "LibraConfig", + "module": "DiemAccount", + "name": "AccountOperationsCapability", + "type_params": [] + } + ], + [ + "01f2a133f96cac512c6f2f3207542cd069a431efe3891378d20ca775cf3b3b8eeb", + { + "address": "00000000000000000000000000000001", + "module": "Diem", + "name": "Preburn", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "RegisteredCurrencies", - "name": "RegisteredCurrencies", + "module": "XUS", + "name": "XUS", "type_params": [] } } @@ -958,26 +956,35 @@ } ], [ - "01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406", + "01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb", { "address": "00000000000000000000000000000001", - "module": "ValidatorOperatorConfig", - "name": "ValidatorOperatorConfig", + "module": "VASP", + "name": "ChildVASP", "type_params": [] } ], [ - "01f6da005e1e1e308bec9ccb8d97140f5567924290f0bb24024ca345cf14f82ceb", + "01fbe5c36611247aa1b2f8331e45f5ad3e97b6670b6605546e841ed54808a85d0a", { "address": "00000000000000000000000000000001", - "module": "Libra", - "name": "CurrencyInfo", + "module": "Diem", + "name": "CancelBurnEvent", + "type_params": [] + } + ], + [ + "01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c", + { + "address": "00000000000000000000000000000001", + "module": "DiemAccount", + "name": "Balance", "type_params": [ { "Struct": { "address": "00000000000000000000000000000001", - "module": "LBR", - "name": "LBR", + "module": "XDX", + "name": "XDX", "type_params": [] } } @@ -985,21 +992,14 @@ } ], [ - "01f6e6015dfdc87abb890b5e2eec18bda87af6c3a12ac8372c65b232ec94a68675", + "01fefd700bb0bd41336f2bb7803ae998fabf19cf2b64a89170f3a9b1bcd0f0d65b", { "address": "00000000000000000000000000000001", - "module": "LibraVMConfig", - "name": "GasSchedule", - "type_params": [] - } - ], - [ - "01fc85b89061cb030636b232a20908bda195c8fa7f78e18e51e2dc446c760a2573", - { - "address": "00000000000000000000000000000001", - "module": "LibraAccount", - "name": "KeyRotationCapability", - "type_params": [] + "module": "Option", + "name": "Option", + "type_params": [ + "Address" + ] } ] ] diff --git a/language/stdlib/compiled/src/lib.rs b/language/stdlib/compiled/src/lib.rs index 483a347865..94b2e5fb72 100644 --- a/language/stdlib/compiled/src/lib.rs +++ b/language/stdlib/compiled/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/stdlib/compiled/src/transaction_scripts.rs b/language/stdlib/compiled/src/transaction_scripts.rs index 381b843be9..8719cfbec8 100644 --- a/language/stdlib/compiled/src/transaction_scripts.rs +++ b/language/stdlib/compiled/src/transaction_scripts.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Rust representation of a Move transaction script that can be executed on the Libra blockchain. -//! Libra does not allow arbitrary transaction scripts; only scripts whose hashes are present in +//! Rust representation of a Move transaction script that can be executed on the Diem blockchain. +//! Diem does not allow arbitrary transaction scripts; only scripts whose hashes are present in //! the on-chain script allowlist. The genesis allowlist is derived from this file, and the //! `Stdlib` script enum will be modified to reflect changes in the on-chain allowlist as time goes //! on. use anyhow::{anyhow, Error, Result}; +use diem_crypto::HashValue; +use diem_types::transaction::{ScriptABI, SCRIPT_HASH_LENGTH}; use include_dir::{include_dir, Dir}; -use libra_crypto::HashValue; -use libra_types::transaction::{ScriptABI, SCRIPT_HASH_LENGTH}; use std::{convert::TryFrom, fmt, path::PathBuf}; // This includes the script ABIs as binaries. We must use this hack to work around @@ -18,7 +18,7 @@ use std::{convert::TryFrom, fmt, path::PathBuf}; // produce these binaries at runtime. const TXN_SCRIPTS_ABI_DIR: Dir = include_dir!("transaction_scripts/abi"); -/// All of the Move transaction scripts that can be executed on the Libra blockchain +/// All of the Move transaction scripts that can be executed on the Diem blockchain #[derive(Clone, Copy, Eq, PartialEq)] pub enum StdlibScript { AddCurrencyToAccount, @@ -52,7 +52,7 @@ pub enum StdlibScript { TieredMint, UnfreezeAccount, UpdateExchangeRate, - UpdateLibraVersion, + UpdateDiemVersion, UpdateMintingAbility, UpdateDualAttestationLimit, // ...add new scripts here @@ -95,7 +95,7 @@ impl StdlibScript { TieredMint, UnfreezeAccount, UpdateExchangeRate, - UpdateLibraVersion, + UpdateDiemVersion, UpdateMintingAbility, UpdateDualAttestationLimit, // ...add new scripts here @@ -103,7 +103,7 @@ impl StdlibScript { } /// Construct the allowlist of script hashes used to determine whether a transaction script can - /// be executed on the Libra blockchain + /// be executed on the Diem blockchain pub fn allowlist() -> Vec<[u8; SCRIPT_HASH_LENGTH]> { StdlibScript::all() .iter() @@ -220,7 +220,7 @@ impl fmt::Display for StdlibScript { TieredMint => "tiered_mint", UpdateDualAttestationLimit => "update_dual_attestation_limit", UnfreezeAccount => "unfreeze_account", - UpdateLibraVersion => "update_libra_version", + UpdateDiemVersion => "update_diem_version", UpdateExchangeRate => "update_exchange_rate", UpdateMintingAbility => "update_minting_ability", } diff --git a/language/stdlib/compiled/stdlib/002_CoreAddresses.mv b/language/stdlib/compiled/stdlib/002_CoreAddresses.mv index 4f0d016f71..ae2b92fdcf 100644 Binary files a/language/stdlib/compiled/stdlib/002_CoreAddresses.mv and b/language/stdlib/compiled/stdlib/002_CoreAddresses.mv differ diff --git a/language/stdlib/compiled/stdlib/003_LibraTimestamp.mv b/language/stdlib/compiled/stdlib/003_DiemTimestamp.mv similarity index 63% rename from language/stdlib/compiled/stdlib/003_LibraTimestamp.mv rename to language/stdlib/compiled/stdlib/003_DiemTimestamp.mv index 6b19c04083..f7c2f39c62 100644 Binary files a/language/stdlib/compiled/stdlib/003_LibraTimestamp.mv and b/language/stdlib/compiled/stdlib/003_DiemTimestamp.mv differ diff --git a/language/stdlib/compiled/stdlib/004_Roles.mv b/language/stdlib/compiled/stdlib/004_Roles.mv index 8882aaf8da..b691080685 100644 Binary files a/language/stdlib/compiled/stdlib/004_Roles.mv and b/language/stdlib/compiled/stdlib/004_Roles.mv differ diff --git a/language/stdlib/compiled/stdlib/008_AccountFreezing.mv b/language/stdlib/compiled/stdlib/008_AccountFreezing.mv index 4406aa3108..d27c7ea506 100644 Binary files a/language/stdlib/compiled/stdlib/008_AccountFreezing.mv and b/language/stdlib/compiled/stdlib/008_AccountFreezing.mv differ diff --git a/language/stdlib/compiled/stdlib/009_AccountLimits.mv b/language/stdlib/compiled/stdlib/009_AccountLimits.mv index a3c8f246ae..8faf1939d7 100644 Binary files a/language/stdlib/compiled/stdlib/009_AccountLimits.mv and b/language/stdlib/compiled/stdlib/009_AccountLimits.mv differ diff --git a/language/stdlib/compiled/stdlib/012_ChainId.mv b/language/stdlib/compiled/stdlib/012_ChainId.mv index 5ad7ec9b1c..3534610beb 100644 Binary files a/language/stdlib/compiled/stdlib/012_ChainId.mv and b/language/stdlib/compiled/stdlib/012_ChainId.mv differ diff --git a/language/stdlib/compiled/stdlib/015_FixedPoint32.mv b/language/stdlib/compiled/stdlib/013_FixedPoint32.mv similarity index 100% rename from language/stdlib/compiled/stdlib/015_FixedPoint32.mv rename to language/stdlib/compiled/stdlib/013_FixedPoint32.mv diff --git a/language/stdlib/compiled/stdlib/013_LibraConfig.mv b/language/stdlib/compiled/stdlib/014_DiemConfig.mv similarity index 62% rename from language/stdlib/compiled/stdlib/013_LibraConfig.mv rename to language/stdlib/compiled/stdlib/014_DiemConfig.mv index 7c9189dee1..5edbb6acb9 100644 Binary files a/language/stdlib/compiled/stdlib/013_LibraConfig.mv and b/language/stdlib/compiled/stdlib/014_DiemConfig.mv differ diff --git a/language/stdlib/compiled/stdlib/014_RegisteredCurrencies.mv b/language/stdlib/compiled/stdlib/014_RegisteredCurrencies.mv deleted file mode 100644 index a7b6e46b72..0000000000 Binary files a/language/stdlib/compiled/stdlib/014_RegisteredCurrencies.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/015_RegisteredCurrencies.mv b/language/stdlib/compiled/stdlib/015_RegisteredCurrencies.mv new file mode 100644 index 0000000000..74d0d1eacd Binary files /dev/null and b/language/stdlib/compiled/stdlib/015_RegisteredCurrencies.mv differ diff --git a/language/stdlib/compiled/stdlib/016_Diem.mv b/language/stdlib/compiled/stdlib/016_Diem.mv new file mode 100644 index 0000000000..9ce688aada Binary files /dev/null and b/language/stdlib/compiled/stdlib/016_Diem.mv differ diff --git a/language/stdlib/compiled/stdlib/016_Libra.mv b/language/stdlib/compiled/stdlib/016_Libra.mv deleted file mode 100644 index 02b73fac9b..0000000000 Binary files a/language/stdlib/compiled/stdlib/016_Libra.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/017_Coin1.mv b/language/stdlib/compiled/stdlib/017_Coin1.mv deleted file mode 100644 index 7ca63db1a2..0000000000 Binary files a/language/stdlib/compiled/stdlib/017_Coin1.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/017_XUS.mv b/language/stdlib/compiled/stdlib/017_XUS.mv new file mode 100644 index 0000000000..6e86571ec2 Binary files /dev/null and b/language/stdlib/compiled/stdlib/017_XUS.mv differ diff --git a/language/stdlib/compiled/stdlib/018_DesignatedDealer.mv b/language/stdlib/compiled/stdlib/018_DesignatedDealer.mv index cecab185a8..cfab027d40 100644 Binary files a/language/stdlib/compiled/stdlib/018_DesignatedDealer.mv and b/language/stdlib/compiled/stdlib/018_DesignatedDealer.mv differ diff --git a/language/stdlib/compiled/stdlib/019_XDX.mv b/language/stdlib/compiled/stdlib/019_XDX.mv new file mode 100644 index 0000000000..61bc3c8bc7 Binary files /dev/null and b/language/stdlib/compiled/stdlib/019_XDX.mv differ diff --git a/language/stdlib/compiled/stdlib/020_ValidatorOperatorConfig.mv b/language/stdlib/compiled/stdlib/020_ValidatorOperatorConfig.mv new file mode 100644 index 0000000000..7220409985 Binary files /dev/null and b/language/stdlib/compiled/stdlib/020_ValidatorOperatorConfig.mv differ diff --git a/language/stdlib/compiled/stdlib/021_LBR.mv b/language/stdlib/compiled/stdlib/021_LBR.mv deleted file mode 100644 index 7ee3d49090..0000000000 Binary files a/language/stdlib/compiled/stdlib/021_LBR.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/020_Signature.mv b/language/stdlib/compiled/stdlib/021_Signature.mv similarity index 100% rename from language/stdlib/compiled/stdlib/020_Signature.mv rename to language/stdlib/compiled/stdlib/021_Signature.mv diff --git a/language/stdlib/compiled/stdlib/022_DualAttestation.mv b/language/stdlib/compiled/stdlib/022_DualAttestation.mv deleted file mode 100644 index fdbd267001..0000000000 Binary files a/language/stdlib/compiled/stdlib/022_DualAttestation.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/028_Option.mv b/language/stdlib/compiled/stdlib/022_Option.mv similarity index 100% rename from language/stdlib/compiled/stdlib/028_Option.mv rename to language/stdlib/compiled/stdlib/022_Option.mv diff --git a/language/stdlib/compiled/stdlib/023_TransactionFee.mv b/language/stdlib/compiled/stdlib/023_TransactionFee.mv deleted file mode 100644 index ecf030fd09..0000000000 Binary files a/language/stdlib/compiled/stdlib/023_TransactionFee.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/029_ValidatorConfig.mv b/language/stdlib/compiled/stdlib/023_ValidatorConfig.mv similarity index 60% rename from language/stdlib/compiled/stdlib/029_ValidatorConfig.mv rename to language/stdlib/compiled/stdlib/023_ValidatorConfig.mv index d91bfd6233..68a3a3af81 100644 Binary files a/language/stdlib/compiled/stdlib/029_ValidatorConfig.mv and b/language/stdlib/compiled/stdlib/023_ValidatorConfig.mv differ diff --git a/language/stdlib/compiled/stdlib/024_LibraVersion.mv b/language/stdlib/compiled/stdlib/024_LibraVersion.mv deleted file mode 100644 index e15162e58b..0000000000 Binary files a/language/stdlib/compiled/stdlib/024_LibraVersion.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/019_VASP.mv b/language/stdlib/compiled/stdlib/024_VASP.mv similarity index 80% rename from language/stdlib/compiled/stdlib/019_VASP.mv rename to language/stdlib/compiled/stdlib/024_VASP.mv index ab19797736..2a03b26808 100644 Binary files a/language/stdlib/compiled/stdlib/019_VASP.mv and b/language/stdlib/compiled/stdlib/024_VASP.mv differ diff --git a/language/stdlib/compiled/stdlib/025_LibraVMConfig.mv b/language/stdlib/compiled/stdlib/025_LibraVMConfig.mv deleted file mode 100644 index 2b0c48b115..0000000000 Binary files a/language/stdlib/compiled/stdlib/025_LibraVMConfig.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/025_TransactionFee.mv b/language/stdlib/compiled/stdlib/025_TransactionFee.mv new file mode 100644 index 0000000000..147b21d8b7 Binary files /dev/null and b/language/stdlib/compiled/stdlib/025_TransactionFee.mv differ diff --git a/language/stdlib/compiled/stdlib/032_SlidingNonce.mv b/language/stdlib/compiled/stdlib/026_SlidingNonce.mv similarity index 100% rename from language/stdlib/compiled/stdlib/032_SlidingNonce.mv rename to language/stdlib/compiled/stdlib/026_SlidingNonce.mv diff --git a/language/stdlib/compiled/stdlib/027_DualAttestation.mv b/language/stdlib/compiled/stdlib/027_DualAttestation.mv new file mode 100644 index 0000000000..0c71d54419 Binary files /dev/null and b/language/stdlib/compiled/stdlib/027_DualAttestation.mv differ diff --git a/language/stdlib/compiled/stdlib/027_ValidatorOperatorConfig.mv b/language/stdlib/compiled/stdlib/027_ValidatorOperatorConfig.mv deleted file mode 100644 index 73773e7d5d..0000000000 Binary files a/language/stdlib/compiled/stdlib/027_ValidatorOperatorConfig.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/026_LibraTransactionPublishingOption.mv b/language/stdlib/compiled/stdlib/028_DiemTransactionPublishingOption.mv similarity index 58% rename from language/stdlib/compiled/stdlib/026_LibraTransactionPublishingOption.mv rename to language/stdlib/compiled/stdlib/028_DiemTransactionPublishingOption.mv index bdea148484..81148582d4 100644 Binary files a/language/stdlib/compiled/stdlib/026_LibraTransactionPublishingOption.mv and b/language/stdlib/compiled/stdlib/028_DiemTransactionPublishingOption.mv differ diff --git a/language/stdlib/compiled/stdlib/029_DiemAccount.mv b/language/stdlib/compiled/stdlib/029_DiemAccount.mv new file mode 100644 index 0000000000..c135d49eb1 Binary files /dev/null and b/language/stdlib/compiled/stdlib/029_DiemAccount.mv differ diff --git a/language/stdlib/compiled/stdlib/030_DiemSystem.mv b/language/stdlib/compiled/stdlib/030_DiemSystem.mv new file mode 100644 index 0000000000..596d5c2dbf Binary files /dev/null and b/language/stdlib/compiled/stdlib/030_DiemSystem.mv differ diff --git a/language/stdlib/compiled/stdlib/030_LibraSystem.mv b/language/stdlib/compiled/stdlib/030_LibraSystem.mv deleted file mode 100644 index 5c1edb754c..0000000000 Binary files a/language/stdlib/compiled/stdlib/030_LibraSystem.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/031_LibraBlock.mv b/language/stdlib/compiled/stdlib/031_DiemBlock.mv similarity index 53% rename from language/stdlib/compiled/stdlib/031_LibraBlock.mv rename to language/stdlib/compiled/stdlib/031_DiemBlock.mv index 4de8bb3147..0777ffa439 100644 Binary files a/language/stdlib/compiled/stdlib/031_LibraBlock.mv and b/language/stdlib/compiled/stdlib/031_DiemBlock.mv differ diff --git a/language/stdlib/compiled/stdlib/032_DiemVMConfig.mv b/language/stdlib/compiled/stdlib/032_DiemVMConfig.mv new file mode 100644 index 0000000000..9c3fca96e0 Binary files /dev/null and b/language/stdlib/compiled/stdlib/032_DiemVMConfig.mv differ diff --git a/language/stdlib/compiled/stdlib/033_DiemVersion.mv b/language/stdlib/compiled/stdlib/033_DiemVersion.mv new file mode 100644 index 0000000000..b4ec265842 Binary files /dev/null and b/language/stdlib/compiled/stdlib/033_DiemVersion.mv differ diff --git a/language/stdlib/compiled/stdlib/033_LibraAccount.mv b/language/stdlib/compiled/stdlib/033_LibraAccount.mv deleted file mode 100644 index 5cba70cba0..0000000000 Binary files a/language/stdlib/compiled/stdlib/033_LibraAccount.mv and /dev/null differ diff --git a/language/stdlib/compiled/stdlib/034_Genesis.mv b/language/stdlib/compiled/stdlib/034_Genesis.mv index 2e49abf559..cef5970384 100644 Binary files a/language/stdlib/compiled/stdlib/034_Genesis.mv and b/language/stdlib/compiled/stdlib/034_Genesis.mv differ diff --git a/language/stdlib/compiled/stdlib/035_RecoveryAddress.mv b/language/stdlib/compiled/stdlib/035_RecoveryAddress.mv index 07cdb90edd..227f4c0791 100644 Binary files a/language/stdlib/compiled/stdlib/035_RecoveryAddress.mv and b/language/stdlib/compiled/stdlib/035_RecoveryAddress.mv differ diff --git a/language/stdlib/compiled/stdlib/036_SharedEd25519PublicKey.mv b/language/stdlib/compiled/stdlib/036_SharedEd25519PublicKey.mv index 4bbc95d570..87fd262237 100644 Binary files a/language/stdlib/compiled/stdlib/036_SharedEd25519PublicKey.mv and b/language/stdlib/compiled/stdlib/036_SharedEd25519PublicKey.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/add_currency_to_account.abi b/language/stdlib/compiled/transaction_scripts/abi/add_currency_to_account.abi index d986c860d8..c8b3ff5dce 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/add_currency_to_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/add_currency_to_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/add_recovery_rotation_capability.abi b/language/stdlib/compiled/transaction_scripts/abi/add_recovery_rotation_capability.abi index 4ef29fc367..6d7bd787a0 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/add_recovery_rotation_capability.abi and b/language/stdlib/compiled/transaction_scripts/abi/add_recovery_rotation_capability.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/add_to_script_allow_list.abi b/language/stdlib/compiled/transaction_scripts/abi/add_to_script_allow_list.abi index 65b7449183..9c33facc46 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/add_to_script_allow_list.abi and b/language/stdlib/compiled/transaction_scripts/abi/add_to_script_allow_list.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/add_validator_and_reconfigure.abi b/language/stdlib/compiled/transaction_scripts/abi/add_validator_and_reconfigure.abi index 0136a6485b..93cea7c3fb 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/add_validator_and_reconfigure.abi and b/language/stdlib/compiled/transaction_scripts/abi/add_validator_and_reconfigure.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/burn.abi b/language/stdlib/compiled/transaction_scripts/abi/burn.abi index 8c5de59c29..66d0e217a7 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/burn.abi and b/language/stdlib/compiled/transaction_scripts/abi/burn.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/burn_txn_fees.abi b/language/stdlib/compiled/transaction_scripts/abi/burn_txn_fees.abi index 59d68651d0..1e7a660a21 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/burn_txn_fees.abi and b/language/stdlib/compiled/transaction_scripts/abi/burn_txn_fees.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/cancel_burn.abi b/language/stdlib/compiled/transaction_scripts/abi/cancel_burn.abi index b7fc519fd0..a2d629e2bb 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/cancel_burn.abi and b/language/stdlib/compiled/transaction_scripts/abi/cancel_burn.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_child_vasp_account.abi b/language/stdlib/compiled/transaction_scripts/abi/create_child_vasp_account.abi index 54d4259ac3..a2e1261243 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_child_vasp_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_child_vasp_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_designated_dealer.abi b/language/stdlib/compiled/transaction_scripts/abi/create_designated_dealer.abi index ff36fdeea1..c3129f9f48 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_designated_dealer.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_designated_dealer.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_parent_vasp_account.abi b/language/stdlib/compiled/transaction_scripts/abi/create_parent_vasp_account.abi index 82097328dd..d2e8187487 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_parent_vasp_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_parent_vasp_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_recovery_address.abi b/language/stdlib/compiled/transaction_scripts/abi/create_recovery_address.abi index 79551c76d4..bc9737e683 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_recovery_address.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_recovery_address.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_validator_account.abi b/language/stdlib/compiled/transaction_scripts/abi/create_validator_account.abi index a282426366..210fbf95e5 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_validator_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_validator_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/create_validator_operator_account.abi b/language/stdlib/compiled/transaction_scripts/abi/create_validator_operator_account.abi index b9b6146cc9..3fb5663350 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/create_validator_operator_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/create_validator_operator_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/freeze_account.abi b/language/stdlib/compiled/transaction_scripts/abi/freeze_account.abi index 761fedbe15..f6582673e7 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/freeze_account.abi and b/language/stdlib/compiled/transaction_scripts/abi/freeze_account.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/peer_to_peer_with_metadata.abi b/language/stdlib/compiled/transaction_scripts/abi/peer_to_peer_with_metadata.abi index f1967bb431..8189ff3be6 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/peer_to_peer_with_metadata.abi and b/language/stdlib/compiled/transaction_scripts/abi/peer_to_peer_with_metadata.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/preburn.abi b/language/stdlib/compiled/transaction_scripts/abi/preburn.abi index 63afbc9c27..ae88b34127 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/preburn.abi and b/language/stdlib/compiled/transaction_scripts/abi/preburn.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/publish_shared_ed25519_public_key.abi b/language/stdlib/compiled/transaction_scripts/abi/publish_shared_ed25519_public_key.abi index ec330bdcda..7b2cdee905 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/publish_shared_ed25519_public_key.abi and b/language/stdlib/compiled/transaction_scripts/abi/publish_shared_ed25519_public_key.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/register_validator_config.abi b/language/stdlib/compiled/transaction_scripts/abi/register_validator_config.abi index 356084e50c..5b9ff271d5 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/register_validator_config.abi and b/language/stdlib/compiled/transaction_scripts/abi/register_validator_config.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/remove_validator_and_reconfigure.abi b/language/stdlib/compiled/transaction_scripts/abi/remove_validator_and_reconfigure.abi index bc4b5c8b11..2e9380a827 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/remove_validator_and_reconfigure.abi and b/language/stdlib/compiled/transaction_scripts/abi/remove_validator_and_reconfigure.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key.abi b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key.abi index e9f6290b90..4c8c900d74 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key.abi and b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce.abi b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce.abi index cb47105cf1..f9b12527b2 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce.abi and b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce_admin.abi b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce_admin.abi index 8b08881bed..c74fe99202 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce_admin.abi and b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_nonce_admin.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_recovery_address.abi b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_recovery_address.abi index 5816b65b8f..22bdf1b62e 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_recovery_address.abi and b/language/stdlib/compiled/transaction_scripts/abi/rotate_authentication_key_with_recovery_address.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/set_validator_config_and_reconfigure.abi b/language/stdlib/compiled/transaction_scripts/abi/set_validator_config_and_reconfigure.abi index 9068b63698..85c46d7a23 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/set_validator_config_and_reconfigure.abi and b/language/stdlib/compiled/transaction_scripts/abi/set_validator_config_and_reconfigure.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator.abi b/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator.abi index 917cf9a64d..140116274b 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator.abi and b/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator_with_nonce_admin.abi b/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator_with_nonce_admin.abi index 522e219896..0f154f2604 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator_with_nonce_admin.abi and b/language/stdlib/compiled/transaction_scripts/abi/set_validator_operator_with_nonce_admin.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/tiered_mint.abi b/language/stdlib/compiled/transaction_scripts/abi/tiered_mint.abi index ad5fa39a20..f64f479551 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/tiered_mint.abi and b/language/stdlib/compiled/transaction_scripts/abi/tiered_mint.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/update_libra_version.abi b/language/stdlib/compiled/transaction_scripts/abi/update_diem_version.abi similarity index 70% rename from language/stdlib/compiled/transaction_scripts/abi/update_libra_version.abi rename to language/stdlib/compiled/transaction_scripts/abi/update_diem_version.abi index 3b36258a67..ef2e547136 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/update_libra_version.abi and b/language/stdlib/compiled/transaction_scripts/abi/update_diem_version.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/update_dual_attestation_limit.abi b/language/stdlib/compiled/transaction_scripts/abi/update_dual_attestation_limit.abi index f59312757d..9204016ab0 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/update_dual_attestation_limit.abi and b/language/stdlib/compiled/transaction_scripts/abi/update_dual_attestation_limit.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/update_exchange_rate.abi b/language/stdlib/compiled/transaction_scripts/abi/update_exchange_rate.abi index bb9b0e37fa..97739b5fdc 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/update_exchange_rate.abi and b/language/stdlib/compiled/transaction_scripts/abi/update_exchange_rate.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/abi/update_minting_ability.abi b/language/stdlib/compiled/transaction_scripts/abi/update_minting_ability.abi index 6166f4480b..1c9c34b888 100644 Binary files a/language/stdlib/compiled/transaction_scripts/abi/update_minting_ability.abi and b/language/stdlib/compiled/transaction_scripts/abi/update_minting_ability.abi differ diff --git a/language/stdlib/compiled/transaction_scripts/add_currency_to_account.mv b/language/stdlib/compiled/transaction_scripts/add_currency_to_account.mv index ca3cf3de3a..14dda0802f 100644 Binary files a/language/stdlib/compiled/transaction_scripts/add_currency_to_account.mv and b/language/stdlib/compiled/transaction_scripts/add_currency_to_account.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/add_recovery_rotation_capability.mv b/language/stdlib/compiled/transaction_scripts/add_recovery_rotation_capability.mv index 1d90d739c0..e399ed6efa 100644 Binary files a/language/stdlib/compiled/transaction_scripts/add_recovery_rotation_capability.mv and b/language/stdlib/compiled/transaction_scripts/add_recovery_rotation_capability.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/add_to_script_allow_list.mv b/language/stdlib/compiled/transaction_scripts/add_to_script_allow_list.mv index 9cfbd0769e..d224091328 100644 Binary files a/language/stdlib/compiled/transaction_scripts/add_to_script_allow_list.mv and b/language/stdlib/compiled/transaction_scripts/add_to_script_allow_list.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/add_validator_and_reconfigure.mv b/language/stdlib/compiled/transaction_scripts/add_validator_and_reconfigure.mv index d232867439..97bc0b2b70 100644 Binary files a/language/stdlib/compiled/transaction_scripts/add_validator_and_reconfigure.mv and b/language/stdlib/compiled/transaction_scripts/add_validator_and_reconfigure.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/burn.mv b/language/stdlib/compiled/transaction_scripts/burn.mv index 5f26deb8db..2a2874b369 100644 Binary files a/language/stdlib/compiled/transaction_scripts/burn.mv and b/language/stdlib/compiled/transaction_scripts/burn.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/cancel_burn.mv b/language/stdlib/compiled/transaction_scripts/cancel_burn.mv index fd78eae6f9..ab72ca9fcd 100644 Binary files a/language/stdlib/compiled/transaction_scripts/cancel_burn.mv and b/language/stdlib/compiled/transaction_scripts/cancel_burn.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_child_vasp_account.mv b/language/stdlib/compiled/transaction_scripts/create_child_vasp_account.mv index a3259a1ec2..2a88e968cb 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_child_vasp_account.mv and b/language/stdlib/compiled/transaction_scripts/create_child_vasp_account.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_designated_dealer.mv b/language/stdlib/compiled/transaction_scripts/create_designated_dealer.mv index 04c330ff25..410f94b858 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_designated_dealer.mv and b/language/stdlib/compiled/transaction_scripts/create_designated_dealer.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_parent_vasp_account.mv b/language/stdlib/compiled/transaction_scripts/create_parent_vasp_account.mv index dcf9e7da00..cc2588131b 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_parent_vasp_account.mv and b/language/stdlib/compiled/transaction_scripts/create_parent_vasp_account.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_recovery_address.mv b/language/stdlib/compiled/transaction_scripts/create_recovery_address.mv index b7bd937c56..6a766278d4 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_recovery_address.mv and b/language/stdlib/compiled/transaction_scripts/create_recovery_address.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_validator_account.mv b/language/stdlib/compiled/transaction_scripts/create_validator_account.mv index d4fb7241ea..d80fd7b93b 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_validator_account.mv and b/language/stdlib/compiled/transaction_scripts/create_validator_account.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/create_validator_operator_account.mv b/language/stdlib/compiled/transaction_scripts/create_validator_operator_account.mv index 6a6c8b9f73..91149a3c9b 100644 Binary files a/language/stdlib/compiled/transaction_scripts/create_validator_operator_account.mv and b/language/stdlib/compiled/transaction_scripts/create_validator_operator_account.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/peer_to_peer_with_metadata.mv b/language/stdlib/compiled/transaction_scripts/peer_to_peer_with_metadata.mv index 1e068d1b91..6b5f84af13 100644 Binary files a/language/stdlib/compiled/transaction_scripts/peer_to_peer_with_metadata.mv and b/language/stdlib/compiled/transaction_scripts/peer_to_peer_with_metadata.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/preburn.mv b/language/stdlib/compiled/transaction_scripts/preburn.mv index 9a06a061cc..7744d1ffec 100644 Binary files a/language/stdlib/compiled/transaction_scripts/preburn.mv and b/language/stdlib/compiled/transaction_scripts/preburn.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/remove_validator_and_reconfigure.mv b/language/stdlib/compiled/transaction_scripts/remove_validator_and_reconfigure.mv index fc28b5ca3d..7476133b83 100644 Binary files a/language/stdlib/compiled/transaction_scripts/remove_validator_and_reconfigure.mv and b/language/stdlib/compiled/transaction_scripts/remove_validator_and_reconfigure.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key.mv b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key.mv index 066d537a0b..e559953237 100644 Binary files a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key.mv and b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce.mv b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce.mv index cf5da3ecbf..d2452ca50c 100644 Binary files a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce.mv and b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce_admin.mv b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce_admin.mv index a757d98ab4..a059fc4ef2 100644 Binary files a/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce_admin.mv and b/language/stdlib/compiled/transaction_scripts/rotate_authentication_key_with_nonce_admin.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/set_validator_config_and_reconfigure.mv b/language/stdlib/compiled/transaction_scripts/set_validator_config_and_reconfigure.mv index cc1d7f6579..f7a02e41de 100644 Binary files a/language/stdlib/compiled/transaction_scripts/set_validator_config_and_reconfigure.mv and b/language/stdlib/compiled/transaction_scripts/set_validator_config_and_reconfigure.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/tiered_mint.mv b/language/stdlib/compiled/transaction_scripts/tiered_mint.mv index b7b7ae3e5d..72f4513f67 100644 Binary files a/language/stdlib/compiled/transaction_scripts/tiered_mint.mv and b/language/stdlib/compiled/transaction_scripts/tiered_mint.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/update_diem_version.mv b/language/stdlib/compiled/transaction_scripts/update_diem_version.mv new file mode 100644 index 0000000000..fde6e319f8 Binary files /dev/null and b/language/stdlib/compiled/transaction_scripts/update_diem_version.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/update_dual_attestation_limit.mv b/language/stdlib/compiled/transaction_scripts/update_dual_attestation_limit.mv index 1462a7fa39..13f98ce3a7 100644 Binary files a/language/stdlib/compiled/transaction_scripts/update_dual_attestation_limit.mv and b/language/stdlib/compiled/transaction_scripts/update_dual_attestation_limit.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/update_exchange_rate.mv b/language/stdlib/compiled/transaction_scripts/update_exchange_rate.mv index 33f6349e41..97df3339dc 100644 Binary files a/language/stdlib/compiled/transaction_scripts/update_exchange_rate.mv and b/language/stdlib/compiled/transaction_scripts/update_exchange_rate.mv differ diff --git a/language/stdlib/compiled/transaction_scripts/update_libra_version.mv b/language/stdlib/compiled/transaction_scripts/update_libra_version.mv deleted file mode 100644 index 743c2cc6a9..0000000000 Binary files a/language/stdlib/compiled/transaction_scripts/update_libra_version.mv and /dev/null differ diff --git a/language/stdlib/compiled/transaction_scripts/update_minting_ability.mv b/language/stdlib/compiled/transaction_scripts/update_minting_ability.mv index be0bd1c54e..7da4021840 100644 Binary files a/language/stdlib/compiled/transaction_scripts/update_minting_ability.mv and b/language/stdlib/compiled/transaction_scripts/update_minting_ability.mv differ diff --git a/language/stdlib/modules/AccountFreezing.move b/language/stdlib/modules/AccountFreezing.move index 77b41cb31e..a11505c485 100644 --- a/language/stdlib/modules/AccountFreezing.move +++ b/language/stdlib/modules/AccountFreezing.move @@ -4,7 +4,7 @@ address 0x1 { module AccountFreezing { use 0x1::Event::{Self, EventHandle}; use 0x1::Errors; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Signer; use 0x1::CoreAddresses; use 0x1::Roles; @@ -39,29 +39,29 @@ module AccountFreezing { const EFREEZE_EVENTS_HOLDER: u64 = 1; /// The `FreezingBit` resource is in an invalid state const EFREEZING_BIT: u64 = 2; - /// An attempt to freeze the Libra Root account was attempted - const ECANNOT_FREEZE_LIBRA_ROOT: u64 = 3; + /// An attempt to freeze the Diem Root account was attempted + const ECANNOT_FREEZE_DIEM_ROOT: u64 = 3; /// An attempt to freeze the Treasury & Compliance account was attempted const ECANNOT_FREEZE_TC: u64 = 4; /// The account is frozen const EACCOUNT_FROZEN: u64 = 5; - public fun initialize(lr_account: &signer) { - LibraTimestamp::assert_genesis(); - CoreAddresses::assert_libra_root(lr_account); + public fun initialize(dr_account: &signer) { + DiemTimestamp::assert_genesis(); + CoreAddresses::assert_diem_root(dr_account); assert( - !exists(Signer::address_of(lr_account)), + !exists(Signer::address_of(dr_account)), Errors::already_published(EFREEZE_EVENTS_HOLDER) ); - move_to(lr_account, FreezeEventsHolder { - freeze_event_handle: Event::new_event_handle(lr_account), - unfreeze_event_handle: Event::new_event_handle(lr_account), + move_to(dr_account, FreezeEventsHolder { + freeze_event_handle: Event::new_event_handle(dr_account), + unfreeze_event_handle: Event::new_event_handle(dr_account), }); } spec fun initialize { - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; - let addr = Signer::spec_address_of(lr_account); + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; + let addr = Signer::spec_address_of(dr_account); aborts_if exists(addr) with Errors::ALREADY_PUBLISHED; ensures exists(addr); } @@ -84,16 +84,16 @@ module AccountFreezing { frozen_address: address, ) acquires FreezingBit, FreezeEventsHolder { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_treasury_compliance(account); - // The libra root account and TC cannot be frozen - assert(frozen_address != CoreAddresses::LIBRA_ROOT_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_LIBRA_ROOT)); + // The diem root account and TC cannot be frozen + assert(frozen_address != CoreAddresses::DIEM_ROOT_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_DIEM_ROOT)); assert(frozen_address != CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_TC)); assert(exists(frozen_address), Errors::not_published(EFREEZING_BIT)); borrow_global_mut(frozen_address).is_frozen = true; let initiator_address = Signer::address_of(account); Event::emit_event( - &mut borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()).freeze_event_handle, + &mut borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()).freeze_event_handle, FreezeAccountEvent { initiator_address, frozen_address @@ -101,9 +101,9 @@ module AccountFreezing { ); } spec fun freeze_account { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include Roles::AbortsIfNotTreasuryCompliance; - aborts_if frozen_address == CoreAddresses::LIBRA_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT; + aborts_if frozen_address == CoreAddresses::DIEM_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT; aborts_if frozen_address == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() with Errors::INVALID_ARGUMENT; aborts_if !exists(frozen_address) with Errors::NOT_PUBLISHED; ensures spec_account_is_frozen(frozen_address); @@ -115,13 +115,13 @@ module AccountFreezing { unfrozen_address: address, ) acquires FreezingBit, FreezeEventsHolder { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_treasury_compliance(account); assert(exists(unfrozen_address), Errors::not_published(EFREEZING_BIT)); borrow_global_mut(unfrozen_address).is_frozen = false; let initiator_address = Signer::address_of(account); Event::emit_event( - &mut borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()).unfreeze_event_handle, + &mut borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()).unfreeze_event_handle, UnfreezeAccountEvent { initiator_address, unfrozen_address @@ -129,7 +129,7 @@ module AccountFreezing { ); } spec fun unfreeze_account { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include Roles::AbortsIfNotTreasuryCompliance; aborts_if !exists(unfrozen_address) with Errors::NOT_PUBLISHED; ensures !spec_account_is_frozen(unfrozen_address); @@ -168,27 +168,27 @@ module AccountFreezing { /// # Initialization spec module { /// `FreezeEventsHolder` always exists after genesis. - invariant [global] LibraTimestamp::is_operating() ==> - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + invariant [global] DiemTimestamp::is_operating() ==> + exists(CoreAddresses::DIEM_ROOT_ADDRESS()); } /// # Access Control spec module { - /// The account of LibraRoot is not freezable [[F1]][ROLE]. - /// After genesis, FreezingBit of LibraRoot is always false. - invariant [global] LibraTimestamp::is_operating() ==> - spec_account_is_not_frozen(CoreAddresses::LIBRA_ROOT_ADDRESS()); + /// The account of DiemRoot is not freezable [[F1]][ROLE]. + /// After genesis, FreezingBit of DiemRoot is always false. + invariant [global] DiemTimestamp::is_operating() ==> + spec_account_is_not_frozen(CoreAddresses::DIEM_ROOT_ADDRESS()); /// The account of TreasuryCompliance is not freezable [[F2]][ROLE]. /// After genesis, FreezingBit of TreasuryCompliance is always false. - invariant [global] LibraTimestamp::is_operating() ==> + invariant [global] DiemTimestamp::is_operating() ==> spec_account_is_not_frozen(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()); /// resource struct FreezingBit persists invariant update [global] forall addr: address where old(exists(addr)): exists(addr); /// resource struct FreezeEventsHolder is there forever after initialization - invariant update [global] LibraTimestamp::is_operating() ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + invariant update [global] DiemTimestamp::is_operating() ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); /// The permission "{Freeze,Unfreeze}Account" is granted to TreasuryCompliance only [[H7]][PERMISSION]. apply Roles::AbortsIfNotTreasuryCompliance to freeze_account, unfreeze_account; diff --git a/language/stdlib/modules/AccountLimits.move b/language/stdlib/modules/AccountLimits.move index 5c266ed14f..d2dd7fe349 100644 --- a/language/stdlib/modules/AccountLimits.move +++ b/language/stdlib/modules/AccountLimits.move @@ -4,7 +4,7 @@ address 0x1 { /// a given time period. module AccountLimits { use 0x1::Errors; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Roles; use 0x1::Signer; @@ -14,7 +14,7 @@ module AccountLimits { /// A resource specifying the account limits per-currency. There is a default /// "unlimited" `LimitsDefinition` resource for accounts published at - /// `CoreAddresses::LIBRA_ROOT_ADDRESS()`, but other accounts may have + /// `CoreAddresses::DIEM_ROOT_ADDRESS()`, but other accounts may have /// different account limit definitons. In such cases, they will have a /// `LimitsDefinition` published under their (root) account. resource struct LimitsDefinition { @@ -61,14 +61,14 @@ module AccountLimits { /// Grant a capability to call this module. This does not necessarily /// need to be a unique capability. - public fun grant_mutation_capability(lr_account: &signer): AccountLimitMutationCapability { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); + public fun grant_mutation_capability(dr_account: &signer): AccountLimitMutationCapability { + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); AccountLimitMutationCapability{} } spec fun grant_mutation_capability { - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; } /// Determines if depositing `amount` of `CoinType` coins into the @@ -140,11 +140,11 @@ module AccountLimits { /// Root accounts for multi-account entities will hold this resource at /// their root/parent account. public fun publish_window( - lr_account: &signer, + dr_account: &signer, to_limit: &signer, limit_address: address, ) { - Roles::assert_libra_root(lr_account); + Roles::assert_diem_root(dr_account); assert(exists>(limit_address), Errors::not_published(ELIMITS_DEFINITION)); Roles::assert_parent_vasp_or_child_vasp(to_limit); assert( @@ -166,13 +166,13 @@ module AccountLimits { include PublishWindowAbortsIf; } spec schema PublishWindowAbortsIf { - lr_account: signer; + dr_account: signer; to_limit: signer; limit_address: address; /// Only ParentVASP and ChildVASP can have the account limits [[E1]][ROLE][[E2]][ROLE][[E3]][ROLE][[E4]][ROLE][[E5]][ROLE][[E6]][ROLE][[E7]][ROLE]. include Roles::AbortsIfNotParentVaspOrChildVasp{account: to_limit}; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; aborts_if !exists>(limit_address) with Errors::NOT_PUBLISHED; aborts_if exists>(Signer::spec_address_of(to_limit)) with Errors::ALREADY_PUBLISHED; } @@ -266,7 +266,7 @@ module AccountLimits { /// `limits_definition.time_period` has elapsed, resets the window and /// the inflow and outflow records. fun reset_window(window: &mut Window, limits_definition: &LimitsDefinition) { - let current_time = LibraTimestamp::now_microseconds(); + let current_time = DiemTimestamp::now_microseconds(); assert(window.window_start <= MAX_U64 - limits_definition.time_period, Errors::limit_exceeded(EWINDOW)); if (current_time > window.window_start + limits_definition.time_period) { window.window_start = current_time; @@ -282,7 +282,7 @@ module AccountLimits { spec schema ResetWindowAbortsIf { window: Window; limits_definition: LimitsDefinition; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if window.window_start + limits_definition.time_period > max_u64() with Errors::LIMIT_EXCEEDED; } spec schema ResetWindowEnsures { @@ -295,7 +295,7 @@ module AccountLimits { window: Window, limits_definition: LimitsDefinition ): bool { - LibraTimestamp::spec_now_microseconds() > window.window_start + limits_definition.time_period + DiemTimestamp::spec_now_microseconds() > window.window_start + limits_definition.time_period } define spec_window_reset_with_limits( window: Window, @@ -305,7 +305,7 @@ module AccountLimits { Window{ limit_address: window.limit_address, tracked_balance: window.tracked_balance, - window_start: LibraTimestamp::spec_now_microseconds(), + window_start: DiemTimestamp::spec_now_microseconds(), window_inflow: 0, window_outflow: 0 } @@ -515,7 +515,7 @@ module AccountLimits { } fun current_time(): u64 { - if (LibraTimestamp::is_genesis()) 0 else LibraTimestamp::now_microseconds() + if (DiemTimestamp::is_genesis()) 0 else DiemTimestamp::now_microseconds() } // ================================================================= diff --git a/language/stdlib/modules/Authenticator.move b/language/stdlib/modules/Authenticator.move index 8663b6fff1..9b946034fa 100644 --- a/language/stdlib/modules/Authenticator.move +++ b/language/stdlib/modules/Authenticator.move @@ -1,6 +1,6 @@ address 0x1 { -/// Move representation of the authenticator types used in Libra. The supported types are Ed25519 (single-sig) +/// Move representation of the authenticator types used in Diem. The supported types are Ed25519 (single-sig) /// and MultiEd25519 (K-of-N multisig). module Authenticator { use 0x1::Errors; diff --git a/language/stdlib/modules/ChainId.move b/language/stdlib/modules/ChainId.move index a0a60a9551..ff99476d75 100644 --- a/language/stdlib/modules/ChainId.move +++ b/language/stdlib/modules/ChainId.move @@ -1,11 +1,11 @@ address 0x1 { -/// The chain id distinguishes between different chains (e.g., testnet and the main Libra network). +/// The chain id distinguishes between different chains (e.g., testnet and the main Diem network). /// One important role is to prevent transactions intended for one chain from being executed on another. /// This code provides a container for storing a chain id and functions to initialize and get it. module ChainId { use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Signer; resource struct ChainId { @@ -15,28 +15,28 @@ module ChainId { /// The `ChainId` resource was not in the required state const ECHAIN_ID: u64 = 0; - /// Publish the chain ID `id` of this Libra instance under the LibraRoot account - public fun initialize(lr_account: &signer, id: u8) { - LibraTimestamp::assert_genesis(); - CoreAddresses::assert_libra_root(lr_account); - assert(!exists(Signer::address_of(lr_account)), Errors::already_published(ECHAIN_ID)); - move_to(lr_account, ChainId { id }) + /// Publish the chain ID `id` of this Diem instance under the DiemRoot account + public fun initialize(dr_account: &signer, id: u8) { + DiemTimestamp::assert_genesis(); + CoreAddresses::assert_diem_root(dr_account); + assert(!exists(Signer::address_of(dr_account)), Errors::already_published(ECHAIN_ID)); + move_to(dr_account, ChainId { id }) } spec fun initialize { pragma opaque; - let lr_addr = Signer::address_of(lr_account); - modifies global(lr_addr); - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; - aborts_if exists(lr_addr) with Errors::ALREADY_PUBLISHED; - ensures exists(lr_addr); + let dr_addr = Signer::address_of(dr_account); + modifies global(dr_addr); + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; + aborts_if exists(dr_addr) with Errors::ALREADY_PUBLISHED; + ensures exists(dr_addr); } - /// Return the chain ID of this Libra instance + /// Return the chain ID of this Diem instance public fun get(): u8 acquires ChainId { - LibraTimestamp::assert_operating(); - borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).id + DiemTimestamp::assert_operating(); + borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).id } // ================================================================= @@ -47,8 +47,8 @@ module ChainId { /// # Initialization spec module { - /// When Libra is operating, the chain id is always available. - invariant [global] LibraTimestamp::is_operating() ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + /// When Diem is operating, the chain id is always available. + invariant [global] DiemTimestamp::is_operating() ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); // Could also specify that ChainId is not stored on any other address, but it doesn't matter. } @@ -56,7 +56,7 @@ module ChainId { /// # Helper Functions spec define spec_get_chain_id(): u8 { - global(CoreAddresses::LIBRA_ROOT_ADDRESS()).id + global(CoreAddresses::DIEM_ROOT_ADDRESS()).id } } } diff --git a/language/stdlib/modules/Coin1.move b/language/stdlib/modules/Coin1.move deleted file mode 100644 index 9520306e9b..0000000000 --- a/language/stdlib/modules/Coin1.move +++ /dev/null @@ -1,71 +0,0 @@ -address 0x1 { - -/// This module defines the coin type Coin1 and its initialization function. -module Coin1 { - use 0x1::AccountLimits; - use 0x1::Libra; - use 0x1::LibraTimestamp; - use 0x1::FixedPoint32; - - /// The type tag representing the `Coin1` currency on-chain. - struct Coin1 { } - - /// Registers the `Coin1` cointype. This can only be called from genesis. - public fun initialize( - lr_account: &signer, - tc_account: &signer, - ) { - LibraTimestamp::assert_genesis(); - Libra::register_SCS_currency( - lr_account, - tc_account, - FixedPoint32::create_from_rational(1, 1), // exchange rate to LBR - 1000000, // scaling_factor = 10^6 - 100, // fractional_part = 10^2 - b"Coin1" - ); - AccountLimits::publish_unrestricted_limits(lr_account); - } - spec fun initialize { - use 0x1::Roles; - include Libra::RegisterSCSCurrencyAbortsIf{ - currency_code: b"Coin1", - scaling_factor: 1000000 - }; - include AccountLimits::PublishUnrestrictedLimitsAbortsIf{publish_account: lr_account}; - include Libra::RegisterSCSCurrencyEnsures; - include AccountLimits::PublishUnrestrictedLimitsEnsures{publish_account: lr_account}; - /// Registering Coin1 can only be done in genesis. - include LibraTimestamp::AbortsIfNotGenesis; - /// Only the LibraRoot account can register a new currency [[H8]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - /// Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. - /// Moreover, only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. - include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; - } - - // ================================================================= - // Module Specification - - spec module {} // Switch to module documentation context - - /// # Persistence of Resources - spec module { - use 0x1::CoreAddresses; - - /// After genesis, Coin1 is registered. - invariant [global] LibraTimestamp::is_operating() ==> Libra::is_currency(); - - /// After genesis, `LimitsDefinition` is published at Libra root. It's published by - /// AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because - /// it does not hold for all types (but does hold for Coin1). - invariant [global] LibraTimestamp::is_operating() - ==> exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - - /// `LimitsDefinition` is not published at any other address - invariant [global] forall addr: address where exists>(addr): - addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); - - } -} -} diff --git a/language/stdlib/modules/CoreAddresses.move b/language/stdlib/modules/CoreAddresses.move index b53d9bb1b2..5f881ff570 100644 --- a/language/stdlib/modules/CoreAddresses.move +++ b/language/stdlib/modules/CoreAddresses.move @@ -2,24 +2,24 @@ address 0x1 { /// Module providing well-known addresses and related logic. /// -/// > Note: this module currently defines zero-argument functions like `Self::LIBRA_ROOT_ADDRESS()` using capitalization +/// > Note: this module currently defines zero-argument functions like `Self::DIEM_ROOT_ADDRESS()` using capitalization /// > in the name, following the convention for constants. Eventually, those functions are planned to become actual /// > global constants, once the Move language supports this feature. module CoreAddresses { use 0x1::Errors; use 0x1::Signer; - /// The address of the Libra root account. This account is + /// The address of the Diem root account. This account is /// created in genesis, and cannot be changed. This address has /// ultimate authority over the permissions granted (or removed) from /// accounts on-chain. - public fun LIBRA_ROOT_ADDRESS(): address { + public fun DIEM_ROOT_ADDRESS(): address { 0xA550C18 } - /// The (singleton) address under which the `0x1::Libra::CurrencyInfo` resource for + /// The (singleton) address under which the `0x1::Diem::CurrencyInfo` resource for /// every registered currency is published. This is the same as the - /// `LIBRA_ROOT_ADDRESS` but there is no requirement that it must + /// `DIEM_ROOT_ADDRESS` but there is no requirement that it must /// be this from an operational viewpoint, so this is why this is separated out. public fun CURRENCY_INFO_ADDRESS(): address { 0xA550C18 @@ -46,8 +46,8 @@ module CoreAddresses { 0x1 } - /// The operation can only be performed by the account at 0xA550C18 (Libra Root) - const ELIBRA_ROOT: u64 = 0; + /// The operation can only be performed by the account at 0xA550C18 (Diem Root) + const EDIEM_ROOT: u64 = 0; /// The operation can only be performed by the account at 0xB1E55ED (Treasury & Compliance) const ETREASURY_COMPLIANCE: u64 = 1; /// The operation can only be performed by the VM @@ -55,19 +55,19 @@ module CoreAddresses { /// The operation can only be performed by the account where currencies are registered const ECURRENCY_INFO: u64 = 3; - /// Assert that the account is the Libra root address. - public fun assert_libra_root(account: &signer) { - assert(Signer::address_of(account) == LIBRA_ROOT_ADDRESS(), Errors::requires_address(ELIBRA_ROOT)) + /// Assert that the account is the Diem root address. + public fun assert_diem_root(account: &signer) { + assert(Signer::address_of(account) == DIEM_ROOT_ADDRESS(), Errors::requires_address(EDIEM_ROOT)) } - spec fun assert_libra_root { + spec fun assert_diem_root { pragma opaque; - include AbortsIfNotLibraRoot; + include AbortsIfNotDiemRoot; } - /// Specifies that a function aborts if the account does not have the Libra root address. - spec schema AbortsIfNotLibraRoot { + /// Specifies that a function aborts if the account does not have the Diem root address. + spec schema AbortsIfNotDiemRoot { account: signer; - aborts_if Signer::spec_address_of(account) != LIBRA_ROOT_ADDRESS() + aborts_if Signer::spec_address_of(account) != DIEM_ROOT_ADDRESS() with Errors::REQUIRES_ADDRESS; } diff --git a/language/stdlib/modules/DesignatedDealer.move b/language/stdlib/modules/DesignatedDealer.move index fce406ca3c..e734dab55f 100644 --- a/language/stdlib/modules/DesignatedDealer.move +++ b/language/stdlib/modules/DesignatedDealer.move @@ -3,13 +3,13 @@ address 0x1 { /// Module providing functionality for designated dealers. module DesignatedDealer { use 0x1::Errors; - use 0x1::Libra; - use 0x1::LibraTimestamp; + use 0x1::Diem; + use 0x1::DiemTimestamp; use 0x1::Vector; use 0x1::Event; use 0x1::Roles; use 0x1::Signer; - use 0x1::Coin1::Coin1; + use 0x1::XUS::XUS; /// A `DesignatedDealer` always holds this `Dealer` resource regardless of the /// currencies it can hold. All `ReceivedMintEvent` events for all @@ -26,7 +26,7 @@ module DesignatedDealer { /// The `TierInfo` resource holds the information needed to track which /// tier a mint to a DD needs to be in. - // Preburn published at top level in Libra.move + // Preburn published at top level in Diem.move resource struct TierInfo { /// Time window start in microseconds window_start: u64, @@ -96,7 +96,7 @@ module DesignatedDealer { assert(!exists(Signer::address_of(dd)), Errors::already_published(EDEALER)); move_to(dd, Dealer { mint_event_handle: Event::new_event_handle(dd) }); if (add_all_currencies) { - add_currency(dd, tc_account); + add_currency(dd, tc_account); } else { add_currency(dd, tc_account); }; @@ -109,13 +109,13 @@ module DesignatedDealer { include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; include Roles::AbortsIfNotDesignatedDealer{account: dd}; aborts_if exists(dd_addr) with Errors::ALREADY_PUBLISHED; - include if (add_all_currencies) AddCurrencyAbortsIf{dd_addr: dd_addr} + include if (add_all_currencies) AddCurrencyAbortsIf{dd_addr: dd_addr} else AddCurrencyAbortsIf{dd_addr: dd_addr}; modifies global(dd_addr); ensures exists(dd_addr); - modifies global>(dd_addr), global>(dd_addr); - ensures if (add_all_currencies) exists>(dd_addr) else exists>(dd_addr); + modifies global>(dd_addr), global>(dd_addr); + ensures if (add_all_currencies) exists>(dd_addr) else exists>(dd_addr); } /////////////////////////////////////////////////////////////////////////// @@ -130,15 +130,15 @@ module DesignatedDealer { Roles::assert_treasury_compliance(tc_account); let dd_addr = Signer::address_of(dd); assert(exists_at(dd_addr), Errors::not_published(EDEALER)); - Libra::publish_preburn_to_account(dd, tc_account); + Diem::publish_preburn_to_account(dd, tc_account); assert(!exists>(dd_addr), Errors::already_published(EDEALER)); move_to(dd, TierInfo { - window_start: LibraTimestamp::now_microseconds(), + window_start: DiemTimestamp::now_microseconds(), window_inflow: 0, tiers: Vector::empty(), }); // Add tier amounts in base_units of CoinType - let coin_scaling_factor = Libra::scaling_factor(); + let coin_scaling_factor = Diem::scaling_factor(); add_tier(tc_account, dd_addr, TIER_0_DEFAULT * coin_scaling_factor); add_tier(tc_account, dd_addr, TIER_1_DEFAULT * coin_scaling_factor); add_tier(tc_account, dd_addr, TIER_2_DEFAULT * coin_scaling_factor); @@ -154,12 +154,12 @@ module DesignatedDealer { include AbortsIfNoDealer{dd_addr: dd_addr}; include AddCurrencyAbortsIf{dd_addr: dd_addr}; - modifies global>(dd_addr); + modifies global>(dd_addr); modifies global>(dd_addr); ensures exists>(dd_addr); ensures global>(dd_addr) == TierInfo { - window_start: LibraTimestamp::spec_now_microseconds(), + window_start: DiemTimestamp::spec_now_microseconds(), window_inflow: 0, tiers: global>(dd_addr).tiers, }; @@ -168,10 +168,10 @@ module DesignatedDealer { spec schema AddCurrencyAbortsIf { dd_addr: address; aborts_if exists>(dd_addr) with Errors::ALREADY_PUBLISHED; - include Libra::AbortsIfNoCurrency; - aborts_if Libra::is_synthetic_currency() with Errors::INVALID_ARGUMENT; - aborts_if exists>(dd_addr) with Errors::ALREADY_PUBLISHED; - include LibraTimestamp::AbortsIfNotOperating; + include Diem::AbortsIfNoCurrency; + aborts_if Diem::is_synthetic_currency() with Errors::INVALID_ARGUMENT; + aborts_if exists>(dd_addr) with Errors::ALREADY_PUBLISHED; + include DiemTimestamp::AbortsIfNotOperating; } fun add_tier( @@ -272,7 +272,7 @@ module DesignatedDealer { amount: u64, dd_addr: address, tier_index: u64, - ): Libra::Libra acquires Dealer, TierInfo { + ): Diem::Diem acquires Dealer, TierInfo { Roles::assert_treasury_compliance(tc_account); assert(amount > 0, Errors::invalid_argument(EINVALID_MINT_AMOUNT)); assert(exists_at(dd_addr), Errors::not_published(EDEALER)); @@ -283,12 +283,12 @@ module DesignatedDealer { Event::emit_event( &mut borrow_global_mut(dd_addr).mint_event_handle, ReceivedMintEvent { - currency_code: Libra::currency_code(), + currency_code: Diem::currency_code(), destination_address: dd_addr, amount: amount, }, ); - Libra::mint(tc_account, amount) + Diem::mint(tc_account, amount) } spec fun tiered_mint { use 0x1::CoreAddresses; @@ -296,14 +296,14 @@ module DesignatedDealer { include TieredMintAbortsIf; - modifies global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); - ensures exists>(CoreAddresses::CURRENCY_INFO_ADDRESS()); + modifies global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); + ensures exists>(CoreAddresses::CURRENCY_INFO_ADDRESS()); modifies global>(dd_addr); ensures exists>(dd_addr); ensures global>(dd_addr).tiers == old(global>(dd_addr).tiers); let dealer = global>(dd_addr); - let current_time = LibraTimestamp::spec_now_microseconds(); - let currency_info = global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); + let current_time = DiemTimestamp::spec_now_microseconds(); + let currency_info = global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); ensures old(dealer.window_start) <= dealer.window_start; ensures dealer.window_start == current_time && dealer.window_inflow == amount || @@ -325,11 +325,11 @@ module DesignatedDealer { include AbortsIfNoTierInfo; let tier_info = global>(dd_addr); aborts_if tier_index >= len(tier_info.tiers) with Errors::INVALID_ARGUMENT; - let new_amount = if (LibraTimestamp::spec_now_microseconds() <= tier_info.window_start + ONE_DAY) { tier_info.window_inflow + amount } else { amount }; + let new_amount = if (DiemTimestamp::spec_now_microseconds() <= tier_info.window_start + ONE_DAY) { tier_info.window_inflow + amount } else { amount }; aborts_if new_amount > tier_info.tiers[tier_index] with Errors::INVALID_ARGUMENT; - include LibraTimestamp::AbortsIfNotOperating; - aborts_if !exists>(Signer::spec_address_of(tc_account)) with Errors::REQUIRES_CAPABILITY; - include Libra::MintAbortsIf{value: amount}; + include DiemTimestamp::AbortsIfNotOperating; + aborts_if !exists>(Signer::spec_address_of(tc_account)) with Errors::REQUIRES_CAPABILITY; + include Diem::MintAbortsIf{value: amount}; } public fun exists_at(dd_addr: address): bool { @@ -365,7 +365,7 @@ module DesignatedDealer { // If the time window starting at `dealer.window_start` and lasting for // `ONE_DAY` has elapsed, resets the window and the inflow and outflow records. fun reset_window(tier_info: &mut TierInfo) { - let current_time = LibraTimestamp::now_microseconds(); + let current_time = DiemTimestamp::now_microseconds(); if (current_time > ONE_DAY && current_time - ONE_DAY > tier_info.window_start) { tier_info.window_start = current_time; tier_info.window_inflow = 0; @@ -373,8 +373,8 @@ module DesignatedDealer { } spec fun reset_window { pragma opaque; - include LibraTimestamp::AbortsIfNotOperating; - let current_time = LibraTimestamp::spec_now_microseconds(); + include DiemTimestamp::AbortsIfNotOperating; + let current_time = DiemTimestamp::spec_now_microseconds(); ensures if (current_time > ONE_DAY && current_time - ONE_DAY > old(tier_info).window_start) tier_info == update_field(update_field(old(tier_info), diff --git a/language/stdlib/modules/Libra.move b/language/stdlib/modules/Diem.move similarity index 88% rename from language/stdlib/modules/Libra.move rename to language/stdlib/modules/Diem.move index 4bd2afd0bd..1750abbbf8 100644 --- a/language/stdlib/modules/Libra.move +++ b/language/stdlib/modules/Diem.move @@ -1,10 +1,10 @@ address 0x1 { -/// The `Libra` module describes the concept of a coin in the Libra framework. It introduces the -/// resource `Libra::Libra`, representing a coin of given coin type. +/// The `Diem` module describes the concept of a coin in the Diem framework. It introduces the +/// resource `Diem::Diem`, representing a coin of given coin type. /// The module defines functions operating on coins as well as functionality like /// minting and burning of coins. -module Libra { +module Diem { use 0x1::CoreAddresses; use 0x1::Errors; use 0x1::Event::{Self, EventHandle}; @@ -12,15 +12,15 @@ module Libra { use 0x1::RegisteredCurrencies; use 0x1::Signer; use 0x1::Roles; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; - /// The `Libra` resource defines the Libra coin for each currency in - /// Libra. Each "coin" is coupled with a type `CoinType` specifying the + /// The `Diem` resource defines the Diem coin for each currency in + /// Diem. Each "coin" is coupled with a type `CoinType` specifying the /// currency of the coin, and a `value` field specifying the value /// of the coin (in the base units of the currency `CoinType` /// and specified in the `CurrencyInfo` resource for that `CoinType` /// published under the `CoreAddresses::CURRENCY_INFO_ADDRESS()` account address). - resource struct Libra { + resource struct Diem { /// The value of this coin in the base units for `CoinType` value: u64 } @@ -28,14 +28,14 @@ module Libra { /// The `MintCapability` resource defines a capability to allow minting /// of coins of `CoinType` currency by the holder of this capability. /// This capability is held only either by the `CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()` - /// account or the `0x1::LBR` module (and `CoreAddresses::LIBRA_ROOT_ADDRESS()` in testnet). + /// account or the `0x1::XDX` module (and `CoreAddresses::DIEM_ROOT_ADDRESS()` in testnet). resource struct MintCapability { } /// The `BurnCapability` resource defines a capability to allow coins /// of `CoinType` currency to be burned by the holder of it. resource struct BurnCapability { } - /// A `MintEvent` is emitted every time a Libra coin is minted. This + /// A `MintEvent` is emitted every time a Diem coin is minted. This /// contains the `amount` minted (in base units of the currency being /// minted) along with the `currency_code` for the coin(s) being /// minted, and that is defined in the `currency_code` field of the @@ -43,12 +43,12 @@ module Libra { struct MintEvent { /// Funds added to the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, } - /// A `BurnEvent` is emitted every time a non-synthetic Libra coin - /// (i.e., a Libra coin with false `is_synthetic` field) is + /// A `BurnEvent` is emitted every time a non-synthetic Diem coin + /// (i.e., a Diem coin with false `is_synthetic` field) is /// burned. It contains the `amount` burned in base units for the /// currency, along with the `currency_code` for the coins being burned /// (and as defined in the `CurrencyInfo` resource for that currency). @@ -57,7 +57,7 @@ module Libra { struct BurnEvent { /// Funds removed from the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address with the `Preburn` resource that stored the now-burned funds preburn_address: address, @@ -69,7 +69,7 @@ module Libra { struct PreburnEvent { /// The amount of funds waiting to be removed (burned) from the system amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address with the `Preburn` resource that now holds the funds preburn_address: address, @@ -82,21 +82,21 @@ module Libra { struct CancelBurnEvent { /// The amount of funds returned amount: u64, - /// ASCII encoded symbol for the coin type (e.g., "LBR") + /// ASCII encoded symbol for the coin type (e.g., "XDX") currency_code: vector, /// Address of the `Preburn` resource that held the now-returned funds. preburn_address: address, } - /// An `ToLBRExchangeRateUpdateEvent` is emitted every time the to-LBR exchange + /// An `ToXDXExchangeRateUpdateEvent` is emitted every time the to-XDX exchange /// rate for the currency given by `currency_code` is updated. - struct ToLBRExchangeRateUpdateEvent { + struct ToXDXExchangeRateUpdateEvent { /// The currency code of the currency whose exchange rate was updated. currency_code: vector, - /// The new on-chain to-LBR exchange rate between the - /// `currency_code` currency and LBR. Represented in conversion - /// between the (on-chain) base-units for the currency and microlibra. - new_to_lbr_exchange_rate: u64, + /// The new on-chain to-XDX exchange rate between the + /// `currency_code` currency and XDX. Represented in conversion + /// between the (on-chain) base-units for the currency and microdiem. + new_to_xdx_exchange_rate: u64, } /// The `CurrencyInfo` resource stores the various @@ -112,22 +112,22 @@ module Libra { total_value: u128, /// Value of funds that are in the process of being burned. Mutable. preburn_value: u64, - /// The (rough) exchange rate from `CoinType` to `LBR`. Mutable. - to_lbr_exchange_rate: FixedPoint32, + /// The (rough) exchange rate from `CoinType` to `XDX`. Mutable. + to_xdx_exchange_rate: FixedPoint32, /// Holds whether or not this currency is synthetic (contributes to the /// off-chain reserve) or not. An example of such a synthetic - ///currency would be the LBR. + ///currency would be the XDX. is_synthetic: bool, /// The scaling factor for the coin (i.e. the amount to divide by /// to get to the human-readable representation for this currency). - /// e.g. 10^6 for `Coin1` + /// e.g. 10^6 for `XUS` scaling_factor: u64, /// The smallest fractional part (number of decimal places) to be /// used in the human-readable representation for the currency (e.g. - /// 10^2 for `Coin1` cents) + /// 10^2 for `XUS` cents) fractional_part: u64, /// The code symbol for this `CoinType`. ASCII encoded. - /// e.g. for "LBR" this is x"4C4252". No character limit. + /// e.g. for "XDX" this is x"4C4252". No character limit. currency_code: vector, /// Minting of new currency of CoinType is allowed only if this field is true. /// We may want to disable the ability to mint further coins of a @@ -146,7 +146,7 @@ module Libra { /// `CoinType`. cancel_burn_events: EventHandle, /// Event stream for emiting exchange rate change events - exchange_rate_update_events: EventHandle, + exchange_rate_update_events: EventHandle, } /// The maximum value for `CurrencyInfo.scaling_factor` @@ -168,7 +168,7 @@ module Libra { resource struct Preburn { /// A single pending burn amount. /// There is no pending burn request if the value in `to_burn` is 0 - to_burn: Libra, + to_burn: Diem, } /// Maximum u64 value. @@ -199,21 +199,21 @@ module Libra { /// A withdrawal greater than the value of the coin was attempted. const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 10; - /// Initialization of the `Libra` module. Initializes the set of + /// Initialization of the `Diem` module. Initializes the set of /// registered currencies in the `0x1::RegisteredCurrencies` on-chain /// config, and publishes the `CurrencyRegistrationCapability` under the - /// `CoreAddresses::LIBRA_ROOT_ADDRESS()`. This can only be called from genesis. + /// `CoreAddresses::DIEM_ROOT_ADDRESS()`. This can only be called from genesis. public fun initialize( - lr_account: &signer, + dr_account: &signer, ) { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); // Operational constraint - CoreAddresses::assert_libra_root(lr_account); - RegisteredCurrencies::initialize(lr_account); + CoreAddresses::assert_diem_root(dr_account); + RegisteredCurrencies::initialize(dr_account); } spec fun initialize { - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; include RegisteredCurrencies::InitializeAbortsIf; include RegisteredCurrencies::InitializeEnsures; } @@ -251,7 +251,7 @@ module Libra { /// Mints `amount` of currency. The `account` must hold a /// `MintCapability` at the top-level in order for this call /// to be successful. - public fun mint(account: &signer, value: u64): Libra + public fun mint(account: &signer, value: u64): Diem acquires CurrencyInfo, MintCapability { let addr = Signer::address_of(account); assert(exists>(addr), Errors::requires_capability(EMINT_CAPABILITY)); @@ -317,7 +317,7 @@ module Libra { public fun cancel_burn( account: &signer, preburn_address: address - ): Libra acquires BurnCapability, CurrencyInfo, Preburn { + ): Diem acquires BurnCapability, CurrencyInfo, Preburn { let addr = Signer::address_of(account); assert(exists>(addr), Errors::requires_capability(EBURN_CAPABILITY)); cancel_burn_with_capability( @@ -332,14 +332,14 @@ module Libra { include CancelBurnWithCapEnsures; } - /// Mint a new `Libra` coin of `CoinType` currency worth `value`. The + /// Mint a new `Diem` coin of `CoinType` currency worth `value`. The /// caller must have a reference to a `MintCapability`. Only - /// the treasury compliance account or the `0x1::LBR` module can acquire such a + /// the treasury compliance account or the `0x1::XDX` module can acquire such a /// reference. public fun mint_with_capability( value: u64, _capability: &MintCapability - ): Libra acquires CurrencyInfo { + ): Diem acquires CurrencyInfo { assert_is_currency(); let currency_code = currency_code(); // update market cap resource to reflect minting @@ -359,7 +359,7 @@ module Libra { ); }; - Libra { value } + Diem { value } } spec fun mint_with_capability { pragma opaque; @@ -377,7 +377,7 @@ module Libra { } spec schema MintEnsures { value: u64; - result: Libra; + result: Diem; let currency_info = global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); ensures exists>(CoreAddresses::CURRENCY_INFO_ADDRESS()); ensures currency_info @@ -392,7 +392,7 @@ module Libra { /// `CoinType` passed in. However, if the currency being preburned has true /// `is_synthetic` then no `PreburnEvent` event will be emitted. public fun preburn_with_resource( - coin: Libra, + coin: Diem, preburn: &mut Preburn, preburn_address: address, ) acquires CurrencyInfo { @@ -499,7 +499,7 @@ module Libra { /// `Preburn` resource published under it. public fun preburn_to( account: &signer, - coin: Libra + coin: Diem ) acquires CurrencyInfo, Preburn { Roles::assert_designated_dealer(account); let sender = Signer::address_of(account); @@ -562,7 +562,7 @@ module Libra { // Abort if no coin present in preburn area assert(preburn.to_burn.value > 0, Errors::invalid_state(EPREBURN_EMPTY)); // destroy the coin in Preburn area - let Libra { value } = withdraw_all(&mut preburn.to_burn); + let Diem { value } = withdraw_all(&mut preburn.to_burn); // update the market cap assert_is_currency(); let info = borrow_global_mut>(CoreAddresses::CURRENCY_INFO_ADDRESS()); @@ -614,7 +614,7 @@ module Libra { public fun cancel_burn_with_capability( preburn_address: address, _capability: &BurnCapability - ): Libra acquires CurrencyInfo, Preburn { + ): Diem acquires CurrencyInfo, Preburn { // destroy the coin in the preburn area assert(exists>(preburn_address), Errors::not_published(EPREBURN)); let preburn = borrow_global_mut>(preburn_address); @@ -665,9 +665,9 @@ module Libra { } /// A shortcut for immediately burning a coin. This calls preburn followed by a subsequent burn, and is - /// used for administrative burns, like unpacking an LBR coin or charging fees. + /// used for administrative burns, like unpacking an XDX coin or charging fees. public fun burn_now( - coin: Libra, + coin: Diem, preburn: &mut Preburn, preburn_address: address, capability: &BurnCapability @@ -683,7 +683,7 @@ module Libra { ensures info.total_value == old(info.total_value) - coin.value; } spec schema BurnNowAbortsIf { - coin: Libra; + coin: Diem; preburn: Preburn; aborts_if coin.value == 0 with Errors::INVALID_ARGUMENT; include PreburnWithResourceAbortsIf{amount: coin.value}; @@ -709,7 +709,7 @@ module Libra { aborts_if !exists>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY; } - /// Returns the total value of `Libra` that is waiting to be + /// Returns the total value of `Diem` that is waiting to be /// burned throughout the system (i.e. the sum of all outstanding /// preburn requests across all preburn resources for the `CoinType` /// currency). @@ -718,24 +718,24 @@ module Libra { borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value } - /// Create a new `Libra` with a value of `0`. Anyone can call + /// Create a new `Diem` with a value of `0`. Anyone can call /// this and it will be successful as long as `CoinType` is a registered currency. - public fun zero(): Libra { + public fun zero(): Diem { assert_is_currency(); - Libra { value: 0 } + Diem { value: 0 } } /// Returns the `value` of the passed in `coin`. The value is /// represented in the base units for the currency represented by /// `CoinType`. - public fun value(coin: &Libra): u64 { + public fun value(coin: &Diem): u64 { coin.value } /// Removes `amount` of value from the passed in `coin`. Returns the /// remaining balance of the passed in `coin`, along with another coin - /// with value equal to `amount`. Calls will fail if `amount > Libra::value(&coin)`. - public fun split(coin: Libra, amount: u64): (Libra, Libra) { + /// with value equal to `amount`. Calls will fail if `amount > Diem::value(&coin)`. + public fun split(coin: Diem, amount: u64): (Diem, Diem) { let other = withdraw(&mut coin, amount); (coin, other) } @@ -751,11 +751,11 @@ module Libra { /// `value = original_value - amount`, and the new coin will have a `value = amount`. /// Calls will abort if the passed-in `amount` is greater than the /// value of the passed-in `coin`. - public fun withdraw(coin: &mut Libra, amount: u64): Libra { + public fun withdraw(coin: &mut Diem, amount: u64): Diem { // Check that `amount` is less than the coin's value assert(coin.value >= amount, Errors::limit_exceeded(EAMOUNT_EXCEEDS_COIN_VALUE)); coin.value = coin.value - amount; - Libra { value: amount } + Diem { value: amount } } spec fun withdraw { pragma opaque; @@ -764,14 +764,14 @@ module Libra { ensures result.value == amount; } spec schema WithdrawAbortsIf { - coin: Libra; + coin: Diem; amount: u64; aborts_if coin.value < amount with Errors::LIMIT_EXCEEDED; } - /// Return a `Libra` worth `coin.value` and reduces the `value` of the input `coin` to + /// Return a `Diem` worth `coin.value` and reduces the `value` of the input `coin` to /// zero. Does not abort. - public fun withdraw_all(coin: &mut Libra): Libra { + public fun withdraw_all(coin: &mut Diem): Diem { let val = coin.value; withdraw(coin, val) } @@ -784,7 +784,7 @@ module Libra { /// Takes two coins as input, returns a single coin with the total value of both coins. /// Destroys on of the input coins. - public fun join(coin1: Libra, coin2: Libra): Libra { + public fun join(coin1: Diem, coin2: Diem): Diem { deposit(&mut coin1, coin2); coin1 } @@ -798,8 +798,8 @@ module Libra { /// "Merges" the two coins. /// The coin passed in by reference will have a value equal to the sum of the two coins /// The `check` coin is consumed in the process - public fun deposit(coin: &mut Libra, check: Libra) { - let Libra { value } = check; + public fun deposit(coin: &mut Diem, check: Diem) { + let Diem { value } = check; assert(MAX_U64 - coin.value >= value, Errors::limit_exceeded(ECOIN)); coin.value = coin.value + value; } @@ -809,16 +809,16 @@ module Libra { ensures coin.value == old(coin.value) + check.value; } spec schema DepositAbortsIf { - coin: Libra; - check: Libra; + coin: Diem; + check: Diem; aborts_if coin.value + check.value > MAX_U64 with Errors::LIMIT_EXCEEDED; } /// Destroy a zero-value coin. Calls will fail if the `value` in the passed-in `coin` is non-zero - /// so it is impossible to "burn" any non-zero amount of `Libra` without having + /// so it is impossible to "burn" any non-zero amount of `Diem` without having /// a `BurnCapability` for the specific `CoinType`. - public fun destroy_zero(coin: Libra) { - let Libra { value } = coin; + public fun destroy_zero(coin: Diem) { + let Diem { value } = coin; assert(value == 0, Errors::invalid_argument(EDESTRUCTION_OF_NONZERO_COIN)) } spec fun destroy_zero { @@ -831,9 +831,9 @@ module Libra { /////////////////////////////////////////////////////////////////////////// /// Register the type `CoinType` as a currency. Until the type is - /// registered as a currency it cannot be used as a coin/currency unit in Libra. - /// The passed-in `lr_account` must be a specific address (`CoreAddresses::CURRENCY_INFO_ADDRESS()`) and - /// `lr_account` must also have the correct `LibraRoot` account role. + /// registered as a currency it cannot be used as a coin/currency unit in Diem. + /// The passed-in `dr_account` must be a specific address (`CoreAddresses::CURRENCY_INFO_ADDRESS()`) and + /// `dr_account` must also have the correct `DiemRoot` account role. /// After the first registration of `CoinType` as a /// currency, additional attempts to register `CoinType` as a currency /// will abort. @@ -842,39 +842,39 @@ module Libra { /// adds the currency to the set of `RegisteredCurrencies`. It returns /// `MintCapability` and `BurnCapability` resources. public fun register_currency( - lr_account: &signer, - to_lbr_exchange_rate: FixedPoint32, + dr_account: &signer, + to_xdx_exchange_rate: FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector, ): (MintCapability, BurnCapability) { - Roles::assert_libra_root(lr_account); + Roles::assert_diem_root(dr_account); // Operational constraint that it must be stored under a specific address. - CoreAddresses::assert_currency_info(lr_account); + CoreAddresses::assert_currency_info(dr_account); assert( - !exists>(Signer::address_of(lr_account)), + !exists>(Signer::address_of(dr_account)), Errors::already_published(ECURRENCY_INFO) ); assert(0 < scaling_factor && scaling_factor <= MAX_SCALING_FACTOR, Errors::invalid_argument(ECURRENCY_INFO)); - move_to(lr_account, CurrencyInfo { + move_to(dr_account, CurrencyInfo { total_value: 0, preburn_value: 0, - to_lbr_exchange_rate, + to_xdx_exchange_rate, is_synthetic, scaling_factor, fractional_part, currency_code: copy currency_code, can_mint: true, - mint_events: Event::new_event_handle(lr_account), - burn_events: Event::new_event_handle(lr_account), - preburn_events: Event::new_event_handle(lr_account), - cancel_burn_events: Event::new_event_handle(lr_account), - exchange_rate_update_events: Event::new_event_handle(lr_account) + mint_events: Event::new_event_handle(dr_account), + burn_events: Event::new_event_handle(dr_account), + preburn_events: Event::new_event_handle(dr_account), + cancel_burn_events: Event::new_event_handle(dr_account), + exchange_rate_update_events: Event::new_event_handle(dr_account) }); RegisteredCurrencies::add_currency_code( - lr_account, + dr_account, currency_code, ); (MintCapability{}, BurnCapability{}) @@ -885,16 +885,16 @@ module Libra { } spec schema RegisterCurrencyAbortsIf { - lr_account: signer; + dr_account: signer; currency_code: vector; scaling_factor: u64; - /// Must abort if the signer does not have the LibraRoot role [[H8]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Must abort if the signer does not have the DiemRoot role [[H8]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; aborts_if scaling_factor == 0 || scaling_factor > MAX_SCALING_FACTOR with Errors::INVALID_ARGUMENT; - include CoreAddresses::AbortsIfNotCurrencyInfo{account: lr_account}; - aborts_if exists>(Signer::spec_address_of(lr_account)) + include CoreAddresses::AbortsIfNotCurrencyInfo{account: dr_account}; + aborts_if exists>(Signer::spec_address_of(dr_account)) with Errors::ALREADY_PUBLISHED; include RegisteredCurrencies::AddCurrencyCodeAbortsIf; } @@ -906,14 +906,14 @@ module Libra { /// Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. /// Resources are published on two distinct - /// accounts: The `CoinInfo` is published on the Libra root account, and the mint and + /// accounts: The `CoinInfo` is published on the Diem root account, and the mint and /// burn capabilities are published on a treasury compliance account. /// This code allows different currencies to have different treasury compliance /// accounts. public fun register_SCS_currency( - lr_account: &signer, + dr_account: &signer, tc_account: &signer, - to_lbr_exchange_rate: FixedPoint32, + to_xdx_exchange_rate: FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector, @@ -921,8 +921,8 @@ module Libra { Roles::assert_treasury_compliance(tc_account); let (mint_cap, burn_cap) = register_currency( - lr_account, - to_lbr_exchange_rate, + dr_account, + to_xdx_exchange_rate, false, // is_synthetic scaling_factor, fractional_part, @@ -942,7 +942,7 @@ module Libra { } spec schema RegisterSCSCurrencyAbortsIf { tc_account: signer; - lr_account: signer; + dr_account: signer; currency_code: vector; scaling_factor: u64; @@ -971,33 +971,33 @@ module Libra { global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value } - /// Returns the value of the coin in the `FromCoinType` currency in LBR. + /// Returns the value of the coin in the `FromCoinType` currency in XDX. /// This should only be used where a _rough_ approximation of the exchange /// rate is needed. - public fun approx_lbr_for_value(from_value: u64): u64 + public fun approx_xdx_for_value(from_value: u64): u64 acquires CurrencyInfo { - let lbr_exchange_rate = lbr_exchange_rate(); - FixedPoint32::multiply_u64(from_value, lbr_exchange_rate) + let xdx_exchange_rate = xdx_exchange_rate(); + FixedPoint32::multiply_u64(from_value, xdx_exchange_rate) } - spec fun approx_lbr_for_value { + spec fun approx_xdx_for_value { pragma opaque; - include ApproxLbrForValueAbortsIf; - ensures result == spec_approx_lbr_for_value(from_value); + include ApproxXdmForValueAbortsIf; + ensures result == spec_approx_xdx_for_value(from_value); } - spec schema ApproxLbrForValueAbortsIf { + spec schema ApproxXdmForValueAbortsIf { from_value: num; include AbortsIfNoCurrency; - let lbr_exchange_rate = spec_lbr_exchange_rate(); - include FixedPoint32::MultiplyAbortsIf{val: from_value, multiplier: lbr_exchange_rate}; + let xdx_exchange_rate = spec_xdx_exchange_rate(); + include FixedPoint32::MultiplyAbortsIf{val: from_value, multiplier: xdx_exchange_rate}; } - /// Returns the value of the coin in the `FromCoinType` currency in LBR. + /// Returns the value of the coin in the `FromCoinType` currency in XDX. /// This should only be used where a rough approximation of the exchange /// rate is needed. - public fun approx_lbr_for_coin(coin: &Libra): u64 + public fun approx_xdx_for_coin(coin: &Diem): u64 acquires CurrencyInfo { let from_value = value(coin); - approx_lbr_for_value(from_value) + approx_xdx_for_value(from_value) } /// Returns `true` if the type `CoinType` is a registered currency. @@ -1053,45 +1053,45 @@ module Libra { ensures result == spec_currency_info().currency_code; } - /// Updates the `to_lbr_exchange_rate` held in the `CurrencyInfo` for - /// `FromCoinType` to the new passed-in `lbr_exchange_rate`. - public fun update_lbr_exchange_rate( + /// Updates the `to_xdx_exchange_rate` held in the `CurrencyInfo` for + /// `FromCoinType` to the new passed-in `xdx_exchange_rate`. + public fun update_xdx_exchange_rate( tc_account: &signer, - lbr_exchange_rate: FixedPoint32 + xdx_exchange_rate: FixedPoint32 ) acquires CurrencyInfo { Roles::assert_treasury_compliance(tc_account); assert_is_currency(); let currency_info = borrow_global_mut>(CoreAddresses::CURRENCY_INFO_ADDRESS()); - currency_info.to_lbr_exchange_rate = lbr_exchange_rate; + currency_info.to_xdx_exchange_rate = xdx_exchange_rate; Event::emit_event( &mut currency_info.exchange_rate_update_events, - ToLBRExchangeRateUpdateEvent { + ToXDXExchangeRateUpdateEvent { currency_code: *¤cy_info.currency_code, - new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate), + new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate), } ); } - spec fun update_lbr_exchange_rate { - include UpdateLBRExchangeRateAbortsIf; - include UpdateLBRExchangeRateEnsures; + spec fun update_xdx_exchange_rate { + include UpdateXDXExchangeRateAbortsIf; + include UpdateXDXExchangeRateEnsures; } - spec schema UpdateLBRExchangeRateAbortsIf { + spec schema UpdateXDXExchangeRateAbortsIf { tc_account: signer; /// Must abort if the account does not have the TreasuryCompliance Role [[H5]][PERMISSION]. include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; include AbortsIfNoCurrency; } - spec schema UpdateLBRExchangeRateEnsures { - lbr_exchange_rate: FixedPoint32; - ensures spec_currency_info().to_lbr_exchange_rate == lbr_exchange_rate; + spec schema UpdateXDXExchangeRateEnsures { + xdx_exchange_rate: FixedPoint32; + ensures spec_currency_info().to_xdx_exchange_rate == xdx_exchange_rate; } - /// Returns the (rough) exchange rate between `CoinType` and `LBR` - public fun lbr_exchange_rate(): FixedPoint32 + /// Returns the (rough) exchange rate between `CoinType` and `XDX` + public fun xdx_exchange_rate(): FixedPoint32 acquires CurrencyInfo { assert_is_currency(); - *&borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate + *&borrow_global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate } /// There may be situations in which we disallow the further minting of @@ -1321,9 +1321,9 @@ module Libra { apply PreservePreburnExistence to *; /// resource struct `CurrencyInfo` is persistent - invariant update [global] forall coin_type: type, lr_addr: address - where old(exists>(lr_addr)): - exists>(lr_addr); + invariant update [global] forall coin_type: type, dr_addr: address + where old(exists>(dr_addr)): + exists>(dr_addr); /// resource struct `Preburn` is persistent invariant update [global] forall coin_type: type, tc_addr: address @@ -1339,18 +1339,18 @@ module Libra { /// ## Update Exchange Rates spec schema ExchangeRateRemainsSame { - /// The exchange rate to LBR stays constant. + /// The exchange rate to XDX stays constant. ensures old(spec_is_currency()) - ==> spec_currency_info().to_lbr_exchange_rate - == old(spec_currency_info().to_lbr_exchange_rate); + ==> spec_currency_info().to_xdx_exchange_rate + == old(spec_currency_info().to_xdx_exchange_rate); } spec module { /// The permission "UpdateExchangeRate(type)" is granted to TreasuryCompliance [[H5]][PERMISSION]. - apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to update_lbr_exchange_rate; + apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to update_xdx_exchange_rate; - /// Only update_lbr_exchange_rate can change the exchange rate [[H5]][PERMISSION]. + /// Only update_xdx_exchange_rate can change the exchange rate [[H5]][PERMISSION]. apply ExchangeRateRemainsSame to * - except update_lbr_exchange_rate; + except update_xdx_exchange_rate; } /// # Helper Functions @@ -1366,13 +1366,13 @@ module Libra { global>(CoreAddresses::CURRENCY_INFO_ADDRESS()) } - /// Specification version of `Self::approx_lbr_for_value`. - define spec_approx_lbr_for_value(value: num): num { - FixedPoint32::spec_multiply_u64(value, spec_lbr_exchange_rate()) + /// Specification version of `Self::approx_xdx_for_value`. + define spec_approx_xdx_for_value(value: num): num { + FixedPoint32::spec_multiply_u64(value, spec_xdx_exchange_rate()) } - define spec_lbr_exchange_rate(): FixedPoint32 { - global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate + define spec_xdx_exchange_rate(): FixedPoint32 { + global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate } /// Checks whether the currency has a mint capability. This is only relevant for diff --git a/language/stdlib/modules/LibraAccount.move b/language/stdlib/modules/DiemAccount.move similarity index 82% rename from language/stdlib/modules/LibraAccount.move rename to language/stdlib/modules/DiemAccount.move index 3c4cb22455..f6b7a889b5 100644 --- a/language/stdlib/modules/LibraAccount.move +++ b/language/stdlib/modules/DiemAccount.move @@ -1,24 +1,24 @@ address 0x1 { -/// The `LibraAccount` module manages accounts. It defines the `LibraAccount` resource and +/// The `DiemAccount` module manages accounts. It defines the `DiemAccount` resource and /// numerous auxiliary data structures. It also defines the prolog and epilog that run /// before and after every transaction. -module LibraAccount { +module DiemAccount { use 0x1::AccountFreezing; use 0x1::CoreAddresses; use 0x1::ChainId; use 0x1::AccountLimits::{Self, AccountLimitMutationCapability}; - use 0x1::Coin1::Coin1; + use 0x1::XUS::XUS; use 0x1::DualAttestation; use 0x1::Errors; use 0x1::Event::{Self, EventHandle}; use 0x1::Hash; - use 0x1::LBR::LBR; + use 0x1::XDX::XDX; use 0x1::LCS; - use 0x1::LibraConfig; - use 0x1::LibraTimestamp; - use 0x1::LibraTransactionPublishingOption; + use 0x1::DiemConfig; + use 0x1::DiemTimestamp; + use 0x1::DiemTransactionPublishingOption; use 0x1::Signer; use 0x1::SlidingNonce; use 0x1::TransactionFee; @@ -27,12 +27,12 @@ module LibraAccount { use 0x1::VASP; use 0x1::Vector; use 0x1::DesignatedDealer; - use 0x1::Libra::{Self, Libra}; + use 0x1::Diem::{Self, Diem}; use 0x1::Option::{Self, Option}; use 0x1::Roles; - /// An `address` is a Libra Account iff it has a published LibraAccount resource. - resource struct LibraAccount { + /// An `address` is a Diem Account iff it has a published DiemAccount resource. + resource struct DiemAccount { /// The current authentication key. /// This can be different from the key used to create the account authentication_key: vector, @@ -66,11 +66,11 @@ module LibraAccount { /// Stores the value of the balance in its balance field. A coin has /// a `value` field. The amount of money in the balance is changed /// by modifying this field. - coin: Libra, + coin: Diem, } - /// The holder of WithdrawCapability for account_address can withdraw Libra from - /// account_address/LibraAccount/balance. + /// The holder of WithdrawCapability for account_address can withdraw Diem from + /// account_address/DiemAccount/balance. /// There is at most one WithdrawCapability in existence for a given address. resource struct WithdrawCapability { /// Address that WithdrawCapability was associated with when it was created. @@ -79,7 +79,7 @@ module LibraAccount { } /// The holder of KeyRotationCapability for account_address can rotate the authentication key for - /// account_address (i.e., write to account_address/LibraAccount/authentication_key). + /// account_address (i.e., write to account_address/DiemAccount/authentication_key). /// There is at most one KeyRotationCapability in existence for a given address. resource struct KeyRotationCapability { /// Address that KeyRotationCapability was associated with when it was created. @@ -95,14 +95,14 @@ module LibraAccount { } /// A resource that holds the event handle for all the past WriteSet transactions that have been committed on chain. - resource struct LibraWriteSetManager { + resource struct DiemWriteSetManager { upgrade_events: Event::EventHandle, } /// Message for sent events struct SentPaymentEvent { - /// The amount of Libra sent + /// The amount of Diem sent amount: u64, /// The code symbol for the currency that was sent currency_code: vector, @@ -114,7 +114,7 @@ module LibraAccount { /// Message for received events struct ReceivedPaymentEvent { - /// The amount of Libra received + /// The amount of Diem received amount: u64, /// The code symbol for the currency that was received currency_code: vector, @@ -140,7 +140,7 @@ module LibraAccount { const MAX_U64: u128 = 18446744073709551615; - /// The `LibraAccount` resource is not in the required state + /// The `DiemAccount` resource is not in the required state const EACCOUNT: u64 = 0; /// The account's sequence number has exceeded the maximum representable value const ESEQUENCE_NUMBER: u64 = 1; @@ -169,7 +169,7 @@ module LibraAccount { /// Attempted to send funds to an account that does not exist const EPAYEE_DOES_NOT_EXIST: u64 = 17; /// Attempted to send funds in a currency that the receiving account does not hold. - /// e.g., `Libra` to an account that exists, but does not have a `Balance` resource + /// e.g., `Diem` to an account that exists, but does not have a `Balance` resource const EPAYEE_CANT_ACCEPT_CURRENCY_TYPE: u64 = 18; /// Tried to withdraw funds in a currency that the account does hold const EPAYER_DOESNT_HOLD_CURRENCY: u64 = 19; @@ -177,7 +177,7 @@ module LibraAccount { const EGAS: u64 = 20; /// The `AccountOperationsCapability` was not in the required state const EACCOUNT_OPERATIONS_CAPABILITY: u64 = 22; - /// The `LibraWriteSetManager` was not in the required state + /// The `DiemWriteSetManager` was not in the required state const EWRITESET_MANAGER: u64 = 23; /// An account cannot be created at the reserved core code address of 0x1 const ECANNOT_CREATE_AT_CORE_CODE: u64 = 24; @@ -201,33 +201,33 @@ module LibraAccount { /// Initialize this module. This is only callable from genesis. public fun initialize( - lr_account: &signer, + dr_account: &signer, dummy_auth_key_prefix: vector, ) acquires AccountOperationsCapability { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); // Operational constraint, not a privilege constraint. - CoreAddresses::assert_libra_root(lr_account); + CoreAddresses::assert_diem_root(dr_account); - create_libra_root_account( + create_diem_root_account( copy dummy_auth_key_prefix, ); create_treasury_compliance_account( - lr_account, + dr_account, copy dummy_auth_key_prefix, ); } spec fun initialize { pragma opaque; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; - include CreateLibraRootAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix}; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; + include CreateDiemRootAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix}; include CreateTreasuryComplianceAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix}; aborts_if exists(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) with Errors::ALREADY_PUBLISHED; // modifies and ensures needed to make this function opaque. - include CreateLibraRootAccountModifies; - include CreateLibraRootAccountEnsures; + include CreateDiemRootAccountModifies; + include CreateDiemRootAccountEnsures; include CreateTreasuryComplianceAccountModifies; include CreateTreasuryComplianceAccountEnsures; } @@ -286,15 +286,15 @@ module LibraAccount { fun deposit( payer: address, payee: address, - to_deposit: Libra, + to_deposit: Diem, metadata: vector, metadata_signature: vector - ) acquires LibraAccount, Balance, AccountOperationsCapability { - LibraTimestamp::assert_operating(); + ) acquires DiemAccount, Balance, AccountOperationsCapability { + DiemTimestamp::assert_operating(); AccountFreezing::assert_not_frozen(payee); // Check that the `to_deposit` coin is non-zero - let deposit_value = Libra::value(&to_deposit); + let deposit_value = Diem::value(&to_deposit); assert(deposit_value > 0, Errors::invalid_argument(ECOIN_DEPOSIT_IS_ZERO)); // Check that an account exists at `payee` assert(exists_at(payee), Errors::not_published(EPAYEE_DOES_NOT_EXIST)); @@ -315,21 +315,21 @@ module LibraAccount { AccountLimits::update_deposit_limits( deposit_value, VASP::parent_address(payee), - &borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).limits_cap + &borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).limits_cap ), Errors::limit_exceeded(EDEPOSIT_EXCEEDS_LIMITS) ) }; // Deposit the `to_deposit` coin - Libra::deposit(&mut borrow_global_mut>(payee).coin, to_deposit); + Diem::deposit(&mut borrow_global_mut>(payee).coin, to_deposit); // Log a received event Event::emit_event( - &mut borrow_global_mut(payee).received_events, + &mut borrow_global_mut(payee).received_events, ReceivedPaymentEvent { amount: deposit_value, - currency_code: Libra::currency_code(), + currency_code: Diem::currency_code(), payer, metadata } @@ -338,12 +338,12 @@ module LibraAccount { spec fun deposit { pragma opaque; modifies global>(payee); - modifies global(payee); + modifies global(payee); modifies global>(VASP::spec_parent_address(payee)); - ensures exists(payee); + ensures exists(payee); ensures exists>(payee); - ensures global(payee).withdraw_capability - == old(global(payee).withdraw_capability); + ensures global(payee).withdraw_capability + == old(global(payee).withdraw_capability); include DepositAbortsIf{amount: to_deposit.value}; include DepositOverflowAbortsIf{amount: to_deposit.value}; include DepositEnsures{amount: to_deposit.value}; @@ -370,7 +370,7 @@ module LibraAccount { amount: u64; metadata_signature: vector; metadata: vector; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if amount == 0 with Errors::INVALID_ARGUMENT; include DualAttestation::AssertPaymentOkAbortsIf{value: amount}; include @@ -382,7 +382,7 @@ module LibraAccount { spec_should_track_limits_for_account(payer, payee, false) && !AccountLimits::spec_update_deposit_limits(amount, VASP::spec_parent_address(payee)) with Errors::LIMIT_EXCEEDED; - include Libra::AbortsIfNoCurrency; + include Diem::AbortsIfNoCurrency; } spec schema DepositEnsures { payee: address; @@ -398,7 +398,7 @@ module LibraAccount { designated_dealer_address: address, mint_amount: u64, tier_index: u64, - ) acquires LibraAccount, Balance, AccountOperationsCapability { + ) acquires DiemAccount, Balance, AccountOperationsCapability { let coin = DesignatedDealer::tiered_mint( tc_account, mint_amount, designated_dealer_address, tier_index ); @@ -410,7 +410,7 @@ module LibraAccount { spec fun tiered_mint { pragma opaque; modifies global>(designated_dealer_address); - modifies global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); + modifies global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); include TieredMintAbortsIf; include TieredMintEnsures; } @@ -430,7 +430,7 @@ module LibraAccount { designated_dealer_address: address; mint_amount: u64; let dealer_balance = global>(designated_dealer_address).coin.value; - let currency_info = global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); + let currency_info = global>(CoreAddresses::CURRENCY_INFO_ADDRESS()); /// Total value of the currency increases by `amount`. ensures currency_info == update_field(old(currency_info), total_value, old(currency_info.total_value) + mint_amount); /// The balance of designated dealer increases by `amount`. @@ -442,8 +442,8 @@ module LibraAccount { public fun cancel_burn( account: &signer, preburn_address: address, - ) acquires LibraAccount, Balance, AccountOperationsCapability { - let coin = Libra::cancel_burn(account, preburn_address); + ) acquires DiemAccount, Balance, AccountOperationsCapability { + let coin = Diem::cancel_burn(account, preburn_address); // record both sender and recipient as `preburn_address`: the coins are moving from // `preburn_address`'s `Preburn` resource to its balance deposit(preburn_address, preburn_address, coin, x"", x"") @@ -451,8 +451,8 @@ module LibraAccount { spec fun cancel_burn { include CancelBurnAbortsIf; - include Libra::CancelBurnWithCapEnsures; - let preburn_value_at_addr = global>(preburn_address).to_burn.value; + include Diem::CancelBurnWithCapEnsures; + let preburn_value_at_addr = global>(preburn_address).to_burn.value; let balance_at_addr = balance(preburn_address); ensures balance_at_addr == old(balance_at_addr) + old(preburn_value_at_addr); } @@ -460,10 +460,10 @@ module LibraAccount { spec schema CancelBurnAbortsIf { account: signer; preburn_address: address; - let amount = global>(preburn_address).to_burn.value; - aborts_if !exists>(Signer::spec_address_of(account)) + let amount = global>(preburn_address).to_burn.value; + aborts_if !exists>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY; - include Libra::CancelBurnWithCapAbortsIf; + include Diem::CancelBurnWithCapAbortsIf; include DepositAbortsIf{ payer: preburn_address, payee: preburn_address, @@ -474,14 +474,14 @@ module LibraAccount { include DepositOverflowAbortsIf{payee: preburn_address, amount: amount}; } - /// Helper to withdraw `amount` from the given account balance and return the withdrawn Libra + /// Helper to withdraw `amount` from the given account balance and return the withdrawn Diem fun withdraw_from_balance( payer: address, payee: address, balance: &mut Balance, amount: u64 - ): Libra acquires AccountOperationsCapability { - LibraTimestamp::assert_operating(); + ): Diem acquires AccountOperationsCapability { + DiemTimestamp::assert_operating(); AccountFreezing::assert_not_frozen(payer); // Make sure that this withdrawal is compliant with the limits on // the account if it's a inter-VASP transfer, @@ -489,14 +489,14 @@ module LibraAccount { let can_withdraw = AccountLimits::update_withdrawal_limits( amount, VASP::parent_address(payer), - &borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).limits_cap + &borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).limits_cap ); assert(can_withdraw, Errors::limit_exceeded(EWITHDRAWAL_EXCEEDS_LIMITS)); }; let coin = &mut balance.coin; // Abort if this withdrawal would make the `payer`'s balance go negative - assert(Libra::value(coin) >= amount, Errors::limit_exceeded(EINSUFFICIENT_BALANCE)); - Libra::withdraw(coin, amount) + assert(Diem::value(coin) >= amount, Errors::limit_exceeded(EINSUFFICIENT_BALANCE)); + Diem::withdraw(coin, amount) } spec fun withdraw_from_balance { modifies global>(VASP::spec_parent_address(payer)); @@ -526,37 +526,37 @@ module LibraAccount { payee: address; balance: Balance; amount: u64; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include AccountFreezing::AbortsIfFrozen{account: payer}; aborts_if balance.coin.value < amount with Errors::LIMIT_EXCEEDED; } spec schema WithdrawFromBalanceEnsures { balance: Balance; amount: u64; - result: Libra; + result: Diem; ensures balance.coin.value == old(balance.coin.value) - amount; ensures result.value == amount; } - /// Withdraw `amount` `Libra`'s from the account balance under + /// Withdraw `amount` `Diem`'s from the account balance under /// `cap.account_address` fun withdraw_from( cap: &WithdrawCapability, payee: address, amount: u64, metadata: vector, - ): Libra acquires Balance, AccountOperationsCapability, LibraAccount { - LibraTimestamp::assert_operating(); + ): Diem acquires Balance, AccountOperationsCapability, DiemAccount { + DiemTimestamp::assert_operating(); let payer = cap.account_address; assert(exists_at(payer), Errors::not_published(EACCOUNT)); assert(exists>(payer), Errors::not_published(EPAYER_DOESNT_HOLD_CURRENCY)); let account_balance = borrow_global_mut>(payer); // Load the payer's account and emit an event to record the withdrawal Event::emit_event( - &mut borrow_global_mut(payer).sent_events, + &mut borrow_global_mut(payer).sent_events, SentPaymentEvent { amount, - currency_code: Libra::currency_code(), + currency_code: Diem::currency_code(), payee, metadata }, @@ -567,10 +567,10 @@ module LibraAccount { spec fun withdraw_from { let payer = cap.account_address; modifies global>(payer); - modifies global(payer); - ensures exists(payer); - ensures global(payer).withdraw_capability - == old(global(payer).withdraw_capability); + modifies global(payer); + ensures exists(payer); + ensures global(payer).withdraw_capability + == old(global(payer).withdraw_capability); include WithdrawFromAbortsIf; include WithdrawFromBalanceEnsures{balance: global>(payer)}; include WithdrawOnlyFromCapAddress; @@ -581,8 +581,8 @@ module LibraAccount { payee: address; amount: u64; let payer = cap.account_address; - include LibraTimestamp::AbortsIfNotOperating; - include Libra::AbortsIfNoCurrency; + include DiemTimestamp::AbortsIfNotOperating; + include Diem::AbortsIfNoCurrency; include WithdrawFromBalanceAbortsIf{payer, balance: global>(payer)}; aborts_if !exists_at(payer) with Errors::NOT_PUBLISHED; aborts_if !exists>(payer) with Errors::NOT_PUBLISHED; @@ -596,25 +596,25 @@ module LibraAccount { balance(addr) == old(balance(addr)); } - /// Withdraw `amount` `Libra`'s from `cap.address` and send them to the `Preburn` + /// Withdraw `amount` `Diem`'s from `cap.address` and send them to the `Preburn` /// resource under `dd`. public fun preburn( dd: &signer, cap: &WithdrawCapability, amount: u64 - ) acquires Balance, AccountOperationsCapability, LibraAccount { - LibraTimestamp::assert_operating(); - Libra::preburn_to(dd, withdraw_from(cap, Signer::address_of(dd), amount, x"")) + ) acquires Balance, AccountOperationsCapability, DiemAccount { + DiemTimestamp::assert_operating(); + Diem::preburn_to(dd, withdraw_from(cap, Signer::address_of(dd), amount, x"")) } spec fun preburn { pragma opaque; let dd_addr = Signer::spec_address_of(dd); let payer = cap.account_address; - modifies global(payer); - ensures exists(payer); - ensures global(payer).withdraw_capability - == old(global(payer).withdraw_capability); + modifies global(payer); + ensures exists(payer); + ensures global(payer).withdraw_capability + == old(global(payer).withdraw_capability); include PreburnAbortsIf; include PreburnEnsures{dd_addr, payer}; } @@ -623,26 +623,26 @@ module LibraAccount { dd: signer; cap: WithdrawCapability; amount: u64; - include LibraTimestamp::AbortsIfNotOperating{}; + include DiemTimestamp::AbortsIfNotOperating{}; include WithdrawFromAbortsIf{payee: Signer::spec_address_of(dd)}; - include Libra::PreburnToAbortsIf{account: dd}; + include Diem::PreburnToAbortsIf{account: dd}; } spec schema PreburnEnsures { dd_addr: address; payer: address; let payer_balance = global>(payer).coin.value; - let preburn = global>(dd_addr); + let preburn = global>(dd_addr); /// The balance of payer decreases by `amount`. ensures payer_balance == old(payer_balance) - amount; /// The value of preburn at `dd_addr` increases by `amount`; - include Libra::PreburnEnsures{preburn: preburn}; + include Diem::PreburnEnsures{preburn: preburn}; } /// Return a unique capability granting permission to withdraw from the sender's account balance. public fun extract_withdraw_capability( sender: &signer - ): WithdrawCapability acquires LibraAccount { + ): WithdrawCapability acquires DiemAccount { let sender_addr = Signer::address_of(sender); // Abort if we already extracted the unique withdraw capability for this account. assert( @@ -650,18 +650,18 @@ module LibraAccount { Errors::invalid_state(EWITHDRAW_CAPABILITY_ALREADY_EXTRACTED) ); assert(exists_at(sender_addr), Errors::not_published(EACCOUNT)); - let account = borrow_global_mut(sender_addr); + let account = borrow_global_mut(sender_addr); Option::extract(&mut account.withdraw_capability) } spec fun extract_withdraw_capability { pragma opaque; let sender_addr = Signer::spec_address_of(sender); - modifies global(sender_addr); + modifies global(sender_addr); include ExtractWithdrawCapAbortsIf{sender_addr}; - ensures exists(sender_addr); + ensures exists(sender_addr); ensures result == old(spec_get_withdraw_cap(sender_addr)); - ensures global(sender_addr) == update_field(old(global(sender_addr)), + ensures global(sender_addr) == update_field(old(global(sender_addr)), withdraw_capability, Option::spec_none()); ensures result.account_address == sender_addr; } @@ -674,7 +674,7 @@ module LibraAccount { /// Return the withdraw capability to the account it originally came from public fun restore_withdraw_capability(cap: WithdrawCapability) - acquires LibraAccount { + acquires DiemAccount { assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT)); // Abort if the withdraw capability for this account is not extracted, // indicating that the withdraw capability is not unique. @@ -682,20 +682,20 @@ module LibraAccount { delegated_withdraw_capability(cap.account_address), Errors::invalid_state(EWITHDRAW_CAPABILITY_NOT_EXTRACTED) ); - let account = borrow_global_mut(cap.account_address); + let account = borrow_global_mut(cap.account_address); Option::fill(&mut account.withdraw_capability, cap) } spec fun restore_withdraw_capability { pragma opaque; let cap_addr = cap.account_address; - modifies global(cap_addr); + modifies global(cap_addr); aborts_if !exists_at(cap_addr) with Errors::NOT_PUBLISHED; aborts_if !delegated_withdraw_capability(cap_addr) with Errors::INVALID_STATE; ensures spec_holds_own_withdraw_cap(cap_addr); } - /// Withdraw `amount` Libra from the address embedded in `WithdrawCapability` and + /// Withdraw `amount` Diem from the address embedded in `WithdrawCapability` and /// deposits it into the `payee`'s account balance. /// The included `metadata` will appear in the `SentPaymentEvent` and `ReceivedPaymentEvent`. /// The `metadata_signature` will only be checked if this payment is subject to the dual @@ -706,7 +706,7 @@ module LibraAccount { amount: u64, metadata: vector, metadata_signature: vector - ) acquires LibraAccount, Balance, AccountOperationsCapability { + ) acquires DiemAccount, Balance, AccountOperationsCapability { deposit( *&cap.account_address, payee, @@ -719,16 +719,16 @@ module LibraAccount { spec fun pay_from { pragma opaque; let payer = cap.account_address; - modifies global(payer); - modifies global(payee); + modifies global(payer); + modifies global(payee); modifies global>(payer); modifies global>(payee); ensures exists_at(payer); ensures exists_at(payee); ensures exists>(payer); ensures exists>(payee); - ensures global(payer).withdraw_capability == - old(global(payer).withdraw_capability); + ensures global(payer).withdraw_capability == + old(global(payer).withdraw_capability); include PayFromAbortsIf; include PayFromEnsures{payer}; @@ -767,9 +767,9 @@ module LibraAccount { public fun rotate_authentication_key( cap: &KeyRotationCapability, new_authentication_key: vector, - ) acquires LibraAccount { + ) acquires DiemAccount { assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT)); - let sender_account_resource = borrow_global_mut(cap.account_address); + let sender_account_resource = borrow_global_mut(cap.account_address); // Don't allow rotating to clearly invalid key assert( Vector::length(&new_authentication_key) == 32, @@ -791,7 +791,7 @@ module LibraAccount { spec schema RotateAuthenticationKeyEnsures { addr: address; new_authentication_key: vector; - ensures global(addr).authentication_key == new_authentication_key; + ensures global(addr).authentication_key == new_authentication_key; } /// # Access Control @@ -799,12 +799,12 @@ module LibraAccount { cap: KeyRotationCapability; /// Can only rotate the authentication_key of cap.account_address [[H17]][PERMISSION]. ensures forall addr: address where addr != cap.account_address && old(exists_at(addr)): - global(addr).authentication_key == old(global(addr).authentication_key); + global(addr).authentication_key == old(global(addr).authentication_key); } /// Return a unique capability granting permission to rotate the sender's authentication key public fun extract_key_rotation_capability(account: &signer): KeyRotationCapability - acquires LibraAccount { + acquires DiemAccount { let account_address = Signer::address_of(account); // Abort if we already extracted the unique key rotation capability for this account. assert( @@ -812,7 +812,7 @@ module LibraAccount { Errors::invalid_state(EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED) ); assert(exists_at(account_address), Errors::not_published(EACCOUNT)); - let account = borrow_global_mut(account_address); + let account = borrow_global_mut(account_address); Option::extract(&mut account.key_rotation_capability) } spec fun extract_key_rotation_capability { @@ -836,9 +836,9 @@ module LibraAccount { /// Return the key rotation capability to the account it originally came from public fun restore_key_rotation_capability(cap: KeyRotationCapability) - acquires LibraAccount { + acquires DiemAccount { assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT)); - let account = borrow_global_mut(cap.account_address); + let account = borrow_global_mut(cap.account_address); Option::fill(&mut account.key_rotation_capability, cap) } spec fun restore_key_rotation_capability { @@ -864,11 +864,11 @@ module LibraAccount { let new_account_addr = Signer::address_of(new_account); add_currency(new_account); if (add_all_currencies) { - if (!exists>(new_account_addr)) { - add_currency(new_account); + if (!exists>(new_account_addr)) { + add_currency(new_account); }; - if (!exists>(new_account_addr)) { - add_currency(new_account); + if (!exists>(new_account_addr)) { + add_currency(new_account); }; }; } @@ -883,22 +883,22 @@ module LibraAccount { spec schema AddCurrencyForAccountAbortsIf { addr: address; add_all_currencies: bool; - include Libra::AbortsIfNoCurrency; + include Diem::AbortsIfNoCurrency; aborts_if exists>(addr) with Errors::ALREADY_PUBLISHED; - include add_all_currencies && !exists>(addr) - ==> Libra::AbortsIfNoCurrency; - include add_all_currencies && !exists>(addr) - ==> Libra::AbortsIfNoCurrency; + include add_all_currencies && !exists>(addr) + ==> Diem::AbortsIfNoCurrency; + include add_all_currencies && !exists>(addr) + ==> Diem::AbortsIfNoCurrency; } spec schema AddCurrencyForAccountEnsures { addr: address; add_all_currencies: bool; include AddCurrencyEnsures; - include add_all_currencies && !exists>(addr) - ==> AddCurrencyEnsures; - include add_all_currencies && !exists>(addr) - ==> AddCurrencyEnsures; + include add_all_currencies && !exists>(addr) + ==> AddCurrencyEnsures; + include add_all_currencies && !exists>(addr) + ==> AddCurrencyEnsures; } @@ -930,19 +930,19 @@ module LibraAccount { // The AccountOperationsCapability is published during Genesis, so it should // always exist. This is a sanity check. assert( - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), + exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(EACCOUNT_OPERATIONS_CAPABILITY) ); // Emit the CreateAccountEvent Event::emit_event( - &mut borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()).creation_events, + &mut borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()).creation_events, CreateAccountEvent { created: new_account_addr, role_id: Roles::get_role_id(new_account_addr) }, ); // Publishing the account resource last makes it possible to prove invariants that simplify // aborts_if's, etc. move_to( &new_account, - LibraAccount { + DiemAccount { authentication_key, withdraw_capability: Option::some( WithdrawCapability { @@ -963,16 +963,16 @@ module LibraAccount { spec fun make_account { pragma opaque; let new_account_addr = Signer::address_of(new_account); - modifies global(new_account_addr); + modifies global(new_account_addr); modifies global(new_account_addr); - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - ensures exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); + ensures exists(CoreAddresses::DIEM_ROOT_ADDRESS()); // Next requires is needed to prove invariant requires exists(new_account_addr); include MakeAccountAbortsIf{addr: new_account_addr}; ensures exists_at(new_account_addr); ensures AccountFreezing::spec_account_is_not_frozen(new_account_addr); - let account_ops_cap = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + let account_ops_cap = global(CoreAddresses::DIEM_ROOT_ADDRESS()); ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events); ensures spec_holds_own_key_rotation_cap(new_account_addr); ensures spec_holds_own_withdraw_cap(new_account_addr); @@ -985,8 +985,8 @@ module LibraAccount { aborts_if exists(addr) with Errors::ALREADY_PUBLISHED; // There is an invariant below that says that there is always an AccountOperationsCapability // after Genesis, so this can only abort during Genesis. - aborts_if LibraTimestamp::is_genesis() - && !exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + aborts_if DiemTimestamp::is_genesis() + && !exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::NOT_PUBLISHED; include CreateAuthenticationKeyAbortsIf; // We do not need to specify aborts_if if account already exists, because make_account will @@ -1025,83 +1025,83 @@ module LibraAccount { spec define spec_abstract_create_authentication_key(auth_key_prefix: vector): vector; - /// Creates the libra root account (during genesis). Publishes the Libra root role, + /// Creates the diem root account (during genesis). Publishes the Diem root role, /// Publishes a SlidingNonce resource, sets up event generator, publishes /// AccountOperationsCapability, WriteSetManager, and finally makes the account. - fun create_libra_root_account( + fun create_diem_root_account( auth_key_prefix: vector, ) acquires AccountOperationsCapability { - LibraTimestamp::assert_genesis(); - let lr_account = create_signer(CoreAddresses::LIBRA_ROOT_ADDRESS()); - CoreAddresses::assert_libra_root(&lr_account); - Roles::grant_libra_root_role(&lr_account); - SlidingNonce::publish(&lr_account); - Event::publish_generator(&lr_account); + DiemTimestamp::assert_genesis(); + let dr_account = create_signer(CoreAddresses::DIEM_ROOT_ADDRESS()); + CoreAddresses::assert_diem_root(&dr_account); + Roles::grant_diem_root_role(&dr_account); + SlidingNonce::publish(&dr_account); + Event::publish_generator(&dr_account); assert( - !exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), + !exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(EACCOUNT_OPERATIONS_CAPABILITY) ); move_to( - &lr_account, + &dr_account, AccountOperationsCapability { - limits_cap: AccountLimits::grant_mutation_capability(&lr_account), - creation_events: Event::new_event_handle(&lr_account), + limits_cap: AccountLimits::grant_mutation_capability(&dr_account), + creation_events: Event::new_event_handle(&dr_account), } ); assert( - !exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), + !exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(EWRITESET_MANAGER) ); move_to( - &lr_account, - LibraWriteSetManager { - upgrade_events: Event::new_event_handle(&lr_account), + &dr_account, + DiemWriteSetManager { + upgrade_events: Event::new_event_handle(&dr_account), } ); - make_account(lr_account, auth_key_prefix) + make_account(dr_account, auth_key_prefix) } - spec fun create_libra_root_account { + spec fun create_diem_root_account { pragma opaque; - include CreateLibraRootAccountModifies; - include CreateLibraRootAccountAbortsIf; - include CreateLibraRootAccountEnsures; + include CreateDiemRootAccountModifies; + include CreateDiemRootAccountAbortsIf; + include CreateDiemRootAccountEnsures; } - spec schema CreateLibraRootAccountModifies { - let lr_addr = CoreAddresses::LIBRA_ROOT_ADDRESS(); - modifies global(lr_addr); - modifies global(lr_addr); - modifies global(lr_addr); - modifies global(lr_addr); - modifies global(lr_addr); - modifies global(lr_addr); + spec schema CreateDiemRootAccountModifies { + let dr_addr = CoreAddresses::DIEM_ROOT_ADDRESS(); + modifies global(dr_addr); + modifies global(dr_addr); + modifies global(dr_addr); + modifies global(dr_addr); + modifies global(dr_addr); + modifies global(dr_addr); } - spec schema CreateLibraRootAccountAbortsIf { + spec schema CreateDiemRootAccountAbortsIf { auth_key_prefix: vector; - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::GrantRole{addr: CoreAddresses::LIBRA_ROOT_ADDRESS(), role_id: Roles::LIBRA_ROOT_ROLE_ID}; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::GrantRole{addr: CoreAddresses::DIEM_ROOT_ADDRESS(), role_id: Roles::DIEM_ROOT_ROLE_ID}; + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; include CreateAuthenticationKeyAbortsIf; } - spec schema CreateLibraRootAccountEnsures { - let lr_addr = CoreAddresses::LIBRA_ROOT_ADDRESS(); - ensures exists(lr_addr); - ensures exists(lr_addr); - ensures exists(lr_addr); - ensures Roles::spec_has_libra_root_role_addr(lr_addr); - ensures exists_at(lr_addr); - ensures AccountFreezing::spec_account_is_not_frozen(lr_addr); - ensures spec_holds_own_key_rotation_cap(lr_addr); - ensures spec_holds_own_withdraw_cap(lr_addr); + spec schema CreateDiemRootAccountEnsures { + let dr_addr = CoreAddresses::DIEM_ROOT_ADDRESS(); + ensures exists(dr_addr); + ensures exists(dr_addr); + ensures exists(dr_addr); + ensures Roles::spec_has_diem_root_role_addr(dr_addr); + ensures exists_at(dr_addr); + ensures AccountFreezing::spec_account_is_not_frozen(dr_addr); + ensures spec_holds_own_key_rotation_cap(dr_addr); + ensures spec_holds_own_withdraw_cap(dr_addr); } /// Create a treasury/compliance account at `new_account_address` with authentication key @@ -1109,14 +1109,14 @@ module LibraAccount { /// Also, publishes the treasury compliance role, the SlidingNonce resource, and /// event handle generator, then makes the account. fun create_treasury_compliance_account( - lr_account: &signer, + dr_account: &signer, auth_key_prefix: vector, ) acquires AccountOperationsCapability { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); let new_account_address = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); let new_account = create_signer(new_account_address); - Roles::grant_treasury_compliance_role(&new_account, lr_account); + Roles::grant_treasury_compliance_role(&new_account, dr_account); SlidingNonce::publish(&new_account); Event::publish_generator(&new_account); make_account(new_account, auth_key_prefix) @@ -1127,28 +1127,28 @@ module LibraAccount { let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); include CreateTreasuryComplianceAccountModifies; include CreateTreasuryComplianceAccountAbortsIf; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include MakeAccountAbortsIf{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()}; include CreateTreasuryComplianceAccountEnsures; - let account_ops_cap = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + let account_ops_cap = global(CoreAddresses::DIEM_ROOT_ADDRESS()); ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events); } spec schema CreateTreasuryComplianceAccountModifies { let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); - modifies global(tc_addr); + modifies global(tc_addr); modifies global(tc_addr); modifies global(tc_addr); modifies global(tc_addr); - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - ensures exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); + ensures exists(CoreAddresses::DIEM_ROOT_ADDRESS()); } spec schema CreateTreasuryComplianceAccountAbortsIf { - lr_account: signer; + dr_account: signer; auth_key_prefix: vector; - include LibraTimestamp::AbortsIfNotGenesis; + include DiemTimestamp::AbortsIfNotGenesis; include Roles::GrantRole{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), role_id: Roles::TREASURY_COMPLIANCE_ROLE_ID}; aborts_if exists(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) with Errors::ALREADY_PUBLISHED; @@ -1197,11 +1197,11 @@ module LibraAccount { new_account_address: address; auth_key_prefix: vector; add_all_currencies: bool; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include Roles::AbortsIfNotTreasuryCompliance{account: creator_account}; aborts_if exists(new_account_address) with Errors::ALREADY_PUBLISHED; aborts_if exists(new_account_address) with Errors::ALREADY_PUBLISHED; - include if (add_all_currencies) DesignatedDealer::AddCurrencyAbortsIf{dd_addr: new_account_address} + include if (add_all_currencies) DesignatedDealer::AddCurrencyAbortsIf{dd_addr: new_account_address} else DesignatedDealer::AddCurrencyAbortsIf{dd_addr: new_account_address}; include AddCurrencyForAccountAbortsIf{addr: new_account_address}; include MakeAccountAbortsIf{addr: new_account_address}; @@ -1247,7 +1247,7 @@ module LibraAccount { new_account_address: address; auth_key_prefix: vector; add_all_currencies: bool; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include Roles::AbortsIfNotTreasuryCompliance{account: creator_account}; aborts_if exists(new_account_address) with Errors::ALREADY_PUBLISHED; aborts_if VASP::is_vasp(new_account_address) with Errors::ALREADY_PUBLISHED; @@ -1323,7 +1323,7 @@ module LibraAccount { /// Helper to return the u64 value of the `balance` for `account` fun balance_for(balance: &Balance): u64 { - Libra::value(&balance.coin) + Diem::value(&balance.coin) } /// Return the current balance of the account at `addr`. @@ -1338,7 +1338,7 @@ module LibraAccount { /// Add a balance of `Token` type to the sending account public fun add_currency(account: &signer) { // aborts if `Token` is not a currency type in the system - Libra::assert_is_currency(); + Diem::assert_is_currency(); // Check that an account with this role is allowed to hold funds assert( Roles::can_hold_balance(account), @@ -1348,7 +1348,7 @@ module LibraAccount { let addr = Signer::address_of(account); assert(!exists>(addr), Errors::already_published(EADD_EXISTING_CURRENCY)); - move_to(account, Balance{ coin: Libra::zero() }) + move_to(account, Balance{ coin: Diem::zero() }) } spec fun add_currency { include AddCurrencyAbortsIf; @@ -1357,7 +1357,7 @@ module LibraAccount { spec schema AddCurrencyAbortsIf { account: signer; /// `Currency` must be valid - include Libra::AbortsIfNoCurrency; + include Diem::AbortsIfNoCurrency; /// `account` cannot have an existing balance in `Currency` aborts_if exists>(Signer::address_of(account)) with Errors::ALREADY_PUBLISHED; /// `account` must be allowed to hold balances. @@ -1369,7 +1369,7 @@ module LibraAccount { /// This publishes a `Balance` to the caller's account ensures exists>(addr); ensures global>(addr) - == Balance{ coin: Libra { value: 0 } }; + == Balance{ coin: Diem { value: 0 } }; } /// # Access Control @@ -1386,34 +1386,34 @@ module LibraAccount { } /// Helper to return the sequence number field for given `account` - fun sequence_number_for_account(account: &LibraAccount): u64 { + fun sequence_number_for_account(account: &DiemAccount): u64 { account.sequence_number } /// Return the current sequence number at `addr` - public fun sequence_number(addr: address): u64 acquires LibraAccount { + public fun sequence_number(addr: address): u64 acquires DiemAccount { assert(exists_at(addr), Errors::not_published(EACCOUNT)); - sequence_number_for_account(borrow_global(addr)) + sequence_number_for_account(borrow_global(addr)) } /// Return the authentication key for this account - public fun authentication_key(addr: address): vector acquires LibraAccount { + public fun authentication_key(addr: address): vector acquires DiemAccount { assert(exists_at(addr), Errors::not_published(EACCOUNT)); - *&borrow_global(addr).authentication_key + *&borrow_global(addr).authentication_key } /// Return true if the account at `addr` has delegated its key rotation capability public fun delegated_key_rotation_capability(addr: address): bool - acquires LibraAccount { + acquires DiemAccount { assert(exists_at(addr), Errors::not_published(EACCOUNT)); - Option::is_none(&borrow_global(addr).key_rotation_capability) + Option::is_none(&borrow_global(addr).key_rotation_capability) } /// Return true if the account at `addr` has delegated its withdraw capability public fun delegated_withdraw_capability(addr: address): bool - acquires LibraAccount { + acquires DiemAccount { assert(exists_at(addr), Errors::not_published(EACCOUNT)); - Option::is_none(&borrow_global(addr).withdraw_capability) + Option::is_none(&borrow_global(addr).withdraw_capability) } /// Return a reference to the address associated with the given withdraw capability @@ -1428,7 +1428,7 @@ module LibraAccount { /// Checks if an account exists at `check_addr` public fun exists_at(check_addr: address): bool { - exists(check_addr) + exists(check_addr) } /////////////////////////////////////////////////////////////////////////// @@ -1444,9 +1444,9 @@ module LibraAccount { txn_max_gas_units: u64, txn_expiration_time: u64, chain_id: u8, - ) acquires LibraAccount, Balance { + ) acquires DiemAccount, Balance { assert( - LibraTransactionPublishingOption::is_module_allowed(sender), + DiemTransactionPublishingOption::is_module_allowed(sender), Errors::invalid_state(PROLOGUE_EMODULE_NOT_ALLOWED), ); @@ -1486,9 +1486,9 @@ module LibraAccount { txn_expiration_time_seconds, }; /// Aborts only in genesis. Does not need to be handled. - include LibraTransactionPublishingOption::AbortsIfNoTransactionPublishingOption; + include DiemTransactionPublishingOption::AbortsIfNoTransactionPublishingOption; /// Covered: L75 (Match 9) - aborts_if !LibraTransactionPublishingOption::spec_is_module_allowed(sender) with Errors::INVALID_STATE; + aborts_if !DiemTransactionPublishingOption::spec_is_module_allowed(sender) with Errors::INVALID_STATE; } /// The prologue for script transaction @@ -1501,9 +1501,9 @@ module LibraAccount { txn_expiration_time: u64, chain_id: u8, script_hash: vector, - ) acquires LibraAccount, Balance { + ) acquires DiemAccount, Balance { assert( - LibraTransactionPublishingOption::is_script_allowed(sender, &script_hash), + DiemTransactionPublishingOption::is_script_allowed(sender, &script_hash), Errors::invalid_state(PROLOGUE_ESCRIPT_NOT_ALLOWED), ); @@ -1537,9 +1537,9 @@ module LibraAccount { let transaction_sender = Signer::spec_address_of(sender); include PrologueCommonAbortsIf {transaction_sender}; /// Aborts only in Genesis. Does not need to be handled. - include LibraTransactionPublishingOption::AbortsIfNoTransactionPublishingOption; + include DiemTransactionPublishingOption::AbortsIfNoTransactionPublishingOption; /// Covered: L74 (Match 8) - aborts_if !LibraTransactionPublishingOption::spec_is_script_allowed(sender, script_hash) with Errors::INVALID_STATE; + aborts_if !DiemTransactionPublishingOption::spec_is_script_allowed(sender, script_hash) with Errors::INVALID_STATE; } /// The prologue for WriteSet transaction @@ -1549,15 +1549,15 @@ module LibraAccount { txn_public_key: vector, txn_expiration_time: u64, chain_id: u8, - ) acquires LibraAccount, Balance { + ) acquires DiemAccount, Balance { assert( - Signer::address_of(sender) == CoreAddresses::LIBRA_ROOT_ADDRESS(), + Signer::address_of(sender) == CoreAddresses::DIEM_ROOT_ADDRESS(), Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER) ); - assert(Roles::has_libra_root_role(sender), Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER)); + assert(Roles::has_diem_root_role(sender), Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER)); // Currency code don't matter here as it won't be charged anyway. Gas constants are ommitted. - prologue_common( + prologue_common( sender, txn_sequence_number, txn_public_key, @@ -1571,7 +1571,7 @@ module LibraAccount { spec fun writeset_prologue { include WritesetPrologueAbortsIf {txn_expiration_time_seconds: txn_expiration_time}; ensures prologue_guarantees(sender); - ensures Roles::has_libra_root_role(sender); + ensures Roles::has_diem_root_role(sender); } spec schema WritesetPrologueAbortsIf { @@ -1582,11 +1582,11 @@ module LibraAccount { chain_id: u8; let transaction_sender = Signer::spec_address_of(sender); /// Covered: L146 (Match 0) - aborts_if transaction_sender != CoreAddresses::LIBRA_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT; - /// Must abort if the signer does not have the LibraRoot role [[H9]][PERMISSION]. + aborts_if transaction_sender != CoreAddresses::DIEM_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT; + /// Must abort if the signer does not have the DiemRoot role [[H9]][PERMISSION]. /// Covered: L146 (Match 0) - aborts_if !Roles::spec_has_libra_root_role_addr(transaction_sender) with Errors::INVALID_ARGUMENT; - include PrologueCommonAbortsIf{ + aborts_if !Roles::spec_has_diem_root_role_addr(transaction_sender) with Errors::INVALID_ARGUMENT; + include PrologueCommonAbortsIf{ transaction_sender, max_transaction_fee: 0, }; @@ -1605,7 +1605,7 @@ module LibraAccount { txn_max_gas_units: u64, txn_expiration_time_seconds: u64, chain_id: u8, - ) acquires LibraAccount, Balance { + ) acquires DiemAccount, Balance { let transaction_sender = Signer::address_of(sender); // [PCA1]: Check that the chain ID stored on-chain matches the chain ID specified by the transaction @@ -1621,7 +1621,7 @@ module LibraAccount { ); // Load the transaction sender's account - let sender_account = borrow_global(transaction_sender); + let sender_account = borrow_global(transaction_sender); // [PCA4]: Check that the hash of the transaction's public key matches the account's auth key assert( @@ -1654,7 +1654,7 @@ module LibraAccount { // [PCA8]: Check that the transaction hasn't expired assert( - LibraTimestamp::now_seconds() < txn_expiration_time_seconds, + DiemTimestamp::now_seconds() < txn_expiration_time_seconds, Errors::invalid_argument(PROLOGUE_ETRANSACTION_EXPIRED) ); @@ -1690,7 +1690,7 @@ module LibraAccount { max_transaction_fee: u128; txn_expiration_time_seconds: u64; /// Only happens if this is called in Genesis. Doesn't need to be handled. - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; /// [PCA1] Covered: L73 (Match 7) aborts_if chain_id != ChainId::spec_get_chain_id() with Errors::INVALID_ARGUMENT; /// [PCA2] Covered: L65 (Match 4) @@ -1698,7 +1698,7 @@ module LibraAccount { /// [PCA3] Covered: L57 (Match 0) aborts_if AccountFreezing::spec_account_is_frozen(transaction_sender) with Errors::INVALID_STATE; /// [PCA4] Covered: L59 (Match 1) - aborts_if Hash::sha3_256(txn_public_key) != global(transaction_sender).authentication_key with Errors::INVALID_ARGUMENT; + aborts_if Hash::sha3_256(txn_public_key) != global(transaction_sender).authentication_key with Errors::INVALID_ARGUMENT; /// [PCA5] Covered: L69 (Match 5) aborts_if max_transaction_fee > MAX_U64 with Errors::INVALID_ARGUMENT; /// [PCA6] Covered: L69 (Match 5) @@ -1706,11 +1706,11 @@ module LibraAccount { /// [PCA7] Covered: L69 (Match 5) aborts_if max_transaction_fee > 0 && balance(transaction_sender) < max_transaction_fee with Errors::INVALID_ARGUMENT; /// [PCA8] Covered: L72 (Match 6) - aborts_if LibraTimestamp::spec_now_seconds() >= txn_expiration_time_seconds with Errors::INVALID_ARGUMENT; + aborts_if DiemTimestamp::spec_now_seconds() >= txn_expiration_time_seconds with Errors::INVALID_ARGUMENT; /// [PCA9] Covered: L61 (Match 2) - aborts_if txn_sequence_number < global(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT; + aborts_if txn_sequence_number < global(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT; /// [PCA10] Covered: L63 (match 3) - aborts_if txn_sequence_number > global(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT; + aborts_if txn_sequence_number > global(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT; } /// Collects gas and bumps the sequence number for executing a transaction. @@ -1723,7 +1723,7 @@ module LibraAccount { txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64 - ) acquires LibraAccount, Balance { + ) acquires DiemAccount, Balance { let sender = Signer::address_of(account); // [EA1; Invariant]: Make sure that the transaction's `max_gas_units` is greater @@ -1742,7 +1742,7 @@ module LibraAccount { // [EA3; Invariant]: Make sure that account exists, and load the // transaction sender's account. Already checked in [PCA2]. assert(exists_at(sender), Errors::not_published(EACCOUNT)); - let sender_account = borrow_global_mut(sender); + let sender_account = borrow_global_mut(sender); // [EA4; Condition]: Make sure account's sequence number is within the // representable range of u64. Bump the sequence number @@ -1770,43 +1770,43 @@ module LibraAccount { // [EA4; Condition]: Abort if this withdrawal would make the `sender_account`'s balance go negative assert( - transaction_fee_amount <= Libra::value(coin), + transaction_fee_amount <= Diem::value(coin), Errors::limit_exceeded(PROLOGUE_ECANT_PAY_GAS_DEPOSIT) ); // NB: `withdraw_from_balance` is not used as limits do not apply to this transaction fee - TransactionFee::pay_fee(Libra::withdraw(coin, transaction_fee_amount)) + TransactionFee::pay_fee(Diem::withdraw(coin, transaction_fee_amount)) } } /// Epilogue for WriteSet trasnaction fun writeset_epilogue( - lr_account: &signer, + dr_account: &signer, txn_sequence_number: u64, should_trigger_reconfiguration: bool, - ) acquires LibraWriteSetManager, LibraAccount, Balance { - let writeset_events_ref = borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()); + ) acquires DiemWriteSetManager, DiemAccount, Balance { + let writeset_events_ref = borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()); Event::emit_event( &mut writeset_events_ref.upgrade_events, - AdminTransactionEvent { committed_timestamp_secs: LibraTimestamp::now_seconds() }, + AdminTransactionEvent { committed_timestamp_secs: DiemTimestamp::now_seconds() }, ); // Currency code don't matter here as it won't be charged anyway. - epilogue(lr_account, txn_sequence_number, 0, 0, 0); - if (should_trigger_reconfiguration) LibraConfig::reconfigure(lr_account) + epilogue(dr_account, txn_sequence_number, 0, 0, 0); + if (should_trigger_reconfiguration) DiemConfig::reconfigure(dr_account) } /// Create a Validator account public fun create_validator_account( - lr_account: &signer, + dr_account: &signer, new_account_address: address, auth_key_prefix: vector, human_name: vector, ) acquires AccountOperationsCapability { let new_account = create_signer(new_account_address); - // The lr_account account is verified to have the libra root role in `Roles::new_validator_role` - Roles::new_validator_role(lr_account, &new_account); + // The dr_account account is verified to have the diem root role in `Roles::new_validator_role` + Roles::new_validator_role(dr_account, &new_account); Event::publish_generator(&new_account); - ValidatorConfig::publish(&new_account, lr_account, human_name); + ValidatorConfig::publish(&new_account, dr_account, human_name); make_account(new_account, auth_key_prefix) } @@ -1816,13 +1816,13 @@ module LibraAccount { } spec schema CreateValidatorAccountAbortsIf { - lr_account: signer; + dr_account: signer; new_account_address: address; // from `Roles::new_validator_role` - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include MakeAccountAbortsIf{addr: new_account_address}; // from `ValidatorConfig::publish` - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if ValidatorConfig::exists_config(new_account_address) with Errors::ALREADY_PUBLISHED; } @@ -1836,16 +1836,16 @@ module LibraAccount { /// Create a Validator Operator account public fun create_validator_operator_account( - lr_account: &signer, + dr_account: &signer, new_account_address: address, auth_key_prefix: vector, human_name: vector, ) acquires AccountOperationsCapability { let new_account = create_signer(new_account_address); - // The lr_account is verified to have the libra root role in `Roles::new_validator_operator_role` - Roles::new_validator_operator_role(lr_account, &new_account); + // The dr_account is verified to have the diem root role in `Roles::new_validator_operator_role` + Roles::new_validator_operator_role(dr_account, &new_account); Event::publish_generator(&new_account); - ValidatorOperatorConfig::publish(&new_account, lr_account, human_name); + ValidatorOperatorConfig::publish(&new_account, dr_account, human_name); make_account(new_account, auth_key_prefix) } @@ -1855,13 +1855,13 @@ module LibraAccount { } spec schema CreateValidatorOperatorAccountAbortsIf { - lr_account: signer; + dr_account: signer; new_account_address: address; // from `Roles::new_validator_operator_role` - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include MakeAccountAbortsIf{addr: new_account_address}; // from `ValidatorConfig::publish` - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if ValidatorOperatorConfig::has_validator_operator_config(new_account_address) with Errors::ALREADY_PUBLISHED; } @@ -1903,8 +1903,8 @@ module LibraAccount { spec schema PreserveKeyRotationCapAbsence { /// The absence of KeyRotationCap is preserved. ensures forall addr: address: - old(!exists(addr) || !spec_has_key_rotation_cap(addr)) ==> - (!exists(addr) || !spec_has_key_rotation_cap(addr)); + old(!exists(addr) || !spec_has_key_rotation_cap(addr)) ==> + (!exists(addr) || !spec_has_key_rotation_cap(addr)); } /// ## Withdraw Capability @@ -1933,8 +1933,8 @@ module LibraAccount { spec schema PreserveWithdrawCapAbsence { /// The absence of WithdrawCap is preserved. ensures forall addr: address: - old(!exists(addr) || Option::is_none(global(addr).withdraw_capability)) ==> - (!exists(addr) || Option::is_none(global(addr).withdraw_capability)); + old(!exists(addr) || Option::is_none(global(addr).withdraw_capability)) ==> + (!exists(addr) || Option::is_none(global(addr).withdraw_capability)); } /// ## Authentication Key @@ -1946,7 +1946,7 @@ module LibraAccount { spec schema AuthenticationKeyRemainsSame { ensures forall addr: address where old(exists_at(addr)): - global(addr).authentication_key == old(global(addr).authentication_key); + global(addr).authentication_key == old(global(addr).authentication_key); } /// ## Balance @@ -1954,7 +1954,7 @@ module LibraAccount { spec module { /// only `Self::withdraw_from` and its helper and clients can withdraw [[H18]][PERMISSION]. apply BalanceNotDecrease to * - except withdraw_from, withdraw_from_balance, staple_lbr, unstaple_lbr, + except withdraw_from, withdraw_from_balance, staple_xdx, unstaple_xdx, preburn, pay_from, epilogue, failure_epilogue, success_epilogue; } @@ -1971,11 +1971,11 @@ module LibraAccount { /// After genesis, the `AccountOperationsCapability` exists. invariant [global] - LibraTimestamp::is_operating() ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + DiemTimestamp::is_operating() ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); - /// After genesis, the `LibraWriteSetManager` exists. + /// After genesis, the `DiemWriteSetManager` exists. invariant [global] - LibraTimestamp::is_operating() ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + DiemTimestamp::is_operating() ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); /// resource struct `Balance` is persistent invariant update [global] forall coin_type: type, addr: address @@ -1983,13 +1983,13 @@ module LibraAccount { exists>(addr); /// resource struct `AccountOperationsCapability` is persistent - invariant update [global] old(exists(CoreAddresses::LIBRA_ROOT_ADDRESS())) - ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + invariant update [global] old(exists(CoreAddresses::DIEM_ROOT_ADDRESS())) + ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); /// resource struct `AccountOperationsCapability` is persistent invariant update [global] - old(exists(CoreAddresses::LIBRA_ROOT_ADDRESS())) - ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + old(exists(CoreAddresses::DIEM_ROOT_ADDRESS())) + ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); } /// # Other invariants @@ -2023,9 +2023,9 @@ module LibraAccount { /// ## Capabilities spec module { - /// Returns field `key_rotation_capability` of the LibraAccount under `addr`. + /// Returns field `key_rotation_capability` of the DiemAccount under `addr`. define spec_get_key_rotation_cap_field(addr: address): Option { - global(addr).key_rotation_capability + global(addr).key_rotation_capability } /// Returns the KeyRotationCapability of the field `key_rotation_capability`. @@ -2038,7 +2038,7 @@ module LibraAccount { Option::is_some(spec_get_key_rotation_cap_field(addr)) } - /// Returns true if the LibraAccount at `addr` holds + /// Returns true if the DiemAccount at `addr` holds /// `KeyRotationCapability` for itself. define spec_holds_own_key_rotation_cap(addr: address): bool { spec_has_key_rotation_cap(addr) @@ -2047,12 +2047,12 @@ module LibraAccount { /// Returns true if `AccountOperationsCapability` is published. define spec_has_account_operations_cap(): bool { - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } - /// Returns field `withdraw_capability` of LibraAccount under `addr`. + /// Returns field `withdraw_capability` of DiemAccount under `addr`. define spec_get_withdraw_cap_field(addr: address): Option { - global(addr).withdraw_capability + global(addr).withdraw_capability } /// Returns the WithdrawCapability of the field `withdraw_capability`. @@ -2060,12 +2060,12 @@ module LibraAccount { Option::borrow(spec_get_withdraw_cap_field(addr)) } - /// Returns true if the LibraAccount at `addr` holds a `WithdrawCapability`. + /// Returns true if the DiemAccount at `addr` holds a `WithdrawCapability`. define spec_has_withdraw_cap(addr: address): bool { Option::is_some(spec_get_withdraw_cap_field(addr)) } - /// Returns true if the LibraAccount at `addr` holds `WithdrawCapability` for itself. + /// Returns true if the DiemAccount at `addr` holds `WithdrawCapability` for itself. define spec_holds_own_withdraw_cap(addr: address): bool { spec_has_withdraw_cap(addr) && addr == spec_get_withdraw_cap(addr).account_address @@ -2073,7 +2073,7 @@ module LibraAccount { /// Returns true of the account holds a delegated withdraw capability. define spec_holds_delegated_withdraw_capability(addr: address): bool { - exists_at(addr) && Option::is_none(global(addr).withdraw_capability) + exists_at(addr) && Option::is_none(global(addr).withdraw_capability) } } @@ -2082,7 +2082,7 @@ module LibraAccount { spec define prologue_guarantees(sender: signer) : bool { let addr = Signer::spec_address_of(sender); - LibraTimestamp::is_operating() && exists_at(addr) && !AccountFreezing::account_is_frozen(addr) + DiemTimestamp::is_operating() && exists_at(addr) && !AccountFreezing::account_is_frozen(addr) } /// Used in transaction script to specify properties checked by the prologue. diff --git a/language/stdlib/modules/LibraBlock.move b/language/stdlib/modules/DiemBlock.move similarity index 81% rename from language/stdlib/modules/LibraBlock.move rename to language/stdlib/modules/DiemBlock.move index 02c9ff5b00..241e0feb87 100644 --- a/language/stdlib/modules/LibraBlock.move +++ b/language/stdlib/modules/DiemBlock.move @@ -1,12 +1,12 @@ address 0x1 { /// This module defines a struct storing the metadata of the block and new block events. -module LibraBlock { +module DiemBlock { use 0x1::CoreAddresses; use 0x1::Errors; use 0x1::Event; - use 0x1::LibraSystem; - use 0x1::LibraTimestamp; + use 0x1::DiemSystem; + use 0x1::DiemTimestamp; resource struct BlockMetadata { /// Height of the current block @@ -32,9 +32,9 @@ module LibraBlock { /// This can only be invoked by the Association address, and only a single time. /// Currently, it is invoked in the genesis transaction public fun initialize_block_metadata(account: &signer) { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); // Operational constraint, only callable by the Association address - CoreAddresses::assert_libra_root(account); + CoreAddresses::assert_diem_root(account); assert(!is_initialized(), Errors::already_published(EBLOCK_METADATA)); move_to( @@ -46,8 +46,8 @@ module LibraBlock { ); } spec fun initialize_block_metadata { - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot; + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot; aborts_if is_initialized() with Errors::ALREADY_PUBLISHED; ensures is_initialized(); ensures get_current_block_height() == 0; @@ -55,7 +55,7 @@ module LibraBlock { /// Helper function to determine whether this module has been initialized. fun is_initialized(): bool { - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } /// Set the metadata for the current block. @@ -67,18 +67,18 @@ module LibraBlock { previous_block_votes: vector
, proposer: address ) acquires BlockMetadata { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); // Operational constraint: can only be invoked by the VM. CoreAddresses::assert_vm(vm); // Authorization assert( - proposer == CoreAddresses::VM_RESERVED_ADDRESS() || LibraSystem::is_validator(proposer), + proposer == CoreAddresses::VM_RESERVED_ADDRESS() || DiemSystem::is_validator(proposer), Errors::requires_address(EVM_OR_VALIDATOR) ); - let block_metadata_ref = borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()); - LibraTimestamp::update_global_time(vm, proposer, timestamp); + let block_metadata_ref = borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()); + DiemTimestamp::update_global_time(vm, proposer, timestamp); block_metadata_ref.height = block_metadata_ref.height + 1; Event::emit_event( &mut block_metadata_ref.new_block_events, @@ -91,11 +91,11 @@ module LibraBlock { ); } spec fun block_prologue { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include CoreAddresses::AbortsIfNotVM{account: vm}; - aborts_if proposer != CoreAddresses::VM_RESERVED_ADDRESS() && !LibraSystem::spec_is_validator(proposer) + aborts_if proposer != CoreAddresses::VM_RESERVED_ADDRESS() && !DiemSystem::spec_is_validator(proposer) with Errors::REQUIRES_ADDRESS; - ensures LibraTimestamp::spec_now_microseconds() == timestamp; + ensures DiemTimestamp::spec_now_microseconds() == timestamp; ensures get_current_block_height() == old(get_current_block_height()) + 1; /// The below counter overflow is assumed to be excluded from verification of callers. @@ -105,7 +105,7 @@ module LibraBlock { /// Get the current block height public fun get_current_block_height(): u64 acquires BlockMetadata { assert(is_initialized(), Errors::not_published(EBLOCK_METADATA)); - borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).height + borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).height } spec module { } // Switch documentation context to module level. @@ -114,7 +114,7 @@ module LibraBlock { /// This implies that `BlockMetadata` is published after initialization and stays published /// ever after spec module { - invariant [global] LibraTimestamp::is_operating() ==> is_initialized(); + invariant [global] DiemTimestamp::is_operating() ==> is_initialized(); } } diff --git a/language/stdlib/modules/LibraConfig.move b/language/stdlib/modules/DiemConfig.move similarity index 68% rename from language/stdlib/modules/LibraConfig.move rename to language/stdlib/modules/DiemConfig.move index 29fce80711..7cb45f58ac 100644 --- a/language/stdlib/modules/LibraConfig.move +++ b/language/stdlib/modules/DiemConfig.move @@ -3,21 +3,21 @@ address 0x1 { /// Publishes configuration information for validators, and issues reconfiguration events /// to synchronize configuration changes for the validators. -module LibraConfig { +module DiemConfig { use 0x1::CoreAddresses; use 0x1::Errors; use 0x1::Event; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Signer; use 0x1::Roles; /// A generic singleton resource that holds a value of a specific type. - resource struct LibraConfig { + resource struct DiemConfig { /// Holds specific info for instance of `Config` type. payload: Config } - /// Event that signals LibraBFT algorithm to start a new epoch, + /// Event that signals DiemBFT algorithm to start a new epoch, /// with new configuration information. This is also called a /// "reconfiguration event" struct NewEpochEvent { @@ -34,13 +34,13 @@ module LibraConfig { events: Event::EventHandle, } - /// Accounts with this privilege can modify LibraConfig under Libra root address. + /// Accounts with this privilege can modify DiemConfig under Diem root address. resource struct ModifyConfigCapability {} /// The `Configuration` resource is in an invalid state const ECONFIGURATION: u64 = 0; - /// A `LibraConfig` resource is in an invalid state - const ELIBRA_CONFIG: u64 = 1; + /// A `DiemConfig` resource is in an invalid state + const EDIEM_CONFIG: u64 = 1; /// A `ModifyConfigCapability` is in a different state than was expected const EMODIFY_CAPABILITY: u64 = 2; /// An invalid block time was encountered. @@ -48,19 +48,19 @@ module LibraConfig { /// The largest possible u64 value const MAX_U64: u64 = 18446744073709551615; - /// Publishes `Configuration` resource. Can only be invoked by Libra root, and only a single time in Genesis. + /// Publishes `Configuration` resource. Can only be invoked by Diem root, and only a single time in Genesis. public fun initialize( - lr_account: &signer, + dr_account: &signer, ) { - LibraTimestamp::assert_genesis(); - CoreAddresses::assert_libra_root(lr_account); - assert(!exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ECONFIGURATION)); + DiemTimestamp::assert_genesis(); + CoreAddresses::assert_diem_root(dr_account); + assert(!exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ECONFIGURATION)); move_to( - lr_account, + dr_account, Configuration { epoch: 0, last_reconfiguration_time: 0, - events: Event::new_event_handle(lr_account), + events: Event::new_event_handle(dr_account), } ); } @@ -68,17 +68,17 @@ module LibraConfig { pragma opaque; include InitializeAbortsIf; include InitializeEnsures; - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); } spec schema InitializeAbortsIf { - lr_account: signer; - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; + dr_account: signer; + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; aborts_if spec_has_config() with Errors::ALREADY_PUBLISHED; } spec schema InitializeEnsures { ensures spec_has_config(); - let new_config = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + let new_config = global(CoreAddresses::DIEM_ROOT_ADDRESS()); ensures new_config.epoch == 0; ensures new_config.last_reconfiguration_time == 0; } @@ -86,10 +86,10 @@ module LibraConfig { /// Returns a copy of `Config` value stored under `addr`. public fun get(): Config - acquires LibraConfig { - let addr = CoreAddresses::LIBRA_ROOT_ADDRESS(); - assert(exists>(addr), Errors::not_published(ELIBRA_CONFIG)); - *&borrow_global>(addr).payload + acquires DiemConfig { + let addr = CoreAddresses::DIEM_ROOT_ADDRESS(); + assert(exists>(addr), Errors::not_published(EDIEM_CONFIG)); + *&borrow_global>(addr).payload } spec fun get { pragma opaque; @@ -97,28 +97,28 @@ module LibraConfig { ensures result == get(); } spec schema AbortsIfNotPublished { - aborts_if !exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::NOT_PUBLISHED; + aborts_if !exists>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::NOT_PUBLISHED; } /// Set a config item to a new value with the default capability stored under config address and trigger a /// reconfiguration. This function requires that the signer have a `ModifyConfigCapability` /// resource published under it. public fun set(account: &signer, payload: Config) - acquires LibraConfig, Configuration { + acquires DiemConfig, Configuration { let signer_address = Signer::address_of(account); // Next should always be true if properly initialized. assert(exists>(signer_address), Errors::requires_capability(EMODIFY_CAPABILITY)); - let addr = CoreAddresses::LIBRA_ROOT_ADDRESS(); - assert(exists>(addr), Errors::not_published(ELIBRA_CONFIG)); - let config = borrow_global_mut>(addr); + let addr = CoreAddresses::DIEM_ROOT_ADDRESS(); + assert(exists>(addr), Errors::not_published(EDIEM_CONFIG)); + let config = borrow_global_mut>(addr); config.payload = payload; reconfigure_(); } spec fun set { pragma opaque; - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); include SetAbortsIf; include SetEnsures; } @@ -143,25 +143,25 @@ module LibraConfig { /// Set a config item to a new value and trigger a reconfiguration. This function /// requires a reference to a `ModifyConfigCapability`, which is returned when the /// config is published using `publish_new_config_and_get_capability`. - /// It is called by `LibraSystem::update_config_and_reconfigure`, which allows + /// It is called by `DiemSystem::update_config_and_reconfigure`, which allows /// validator operators to change the validator set. All other config changes require - /// a Libra root signer. + /// a Diem root signer. public fun set_with_capability_and_reconfigure( _cap: &ModifyConfigCapability, payload: Config - ) acquires LibraConfig, Configuration { - let addr = CoreAddresses::LIBRA_ROOT_ADDRESS(); - assert(exists>(addr), Errors::not_published(ELIBRA_CONFIG)); - let config = borrow_global_mut>(addr); + ) acquires DiemConfig, Configuration { + let addr = CoreAddresses::DIEM_ROOT_ADDRESS(); + assert(exists>(addr), Errors::not_published(EDIEM_CONFIG)); + let config = borrow_global_mut>(addr); config.payload = payload; reconfigure_(); } spec fun set_with_capability_and_reconfigure { pragma opaque; - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); include AbortsIfNotPublished; include ReconfigureAbortsIf; - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); include SetEnsures; } @@ -170,76 +170,76 @@ module LibraConfig { /// policy for who can modify the config. /// Does not trigger a reconfiguration. public fun publish_new_config_and_get_capability( - lr_account: &signer, + dr_account: &signer, payload: Config, ): ModifyConfigCapability { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); assert( - !exists>(Signer::address_of(lr_account)), - Errors::already_published(ELIBRA_CONFIG) + !exists>(Signer::address_of(dr_account)), + Errors::already_published(EDIEM_CONFIG) ); - move_to(lr_account, LibraConfig { payload }); + move_to(dr_account, DiemConfig { payload }); ModifyConfigCapability {} } spec fun publish_new_config_and_get_capability { pragma opaque; - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include AbortsIfPublished; include SetEnsures; } spec schema AbortsIfPublished { - aborts_if exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; + aborts_if exists>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; } - /// Publish a new config item. Only Libra root can modify such config. - /// Publishes the capability to modify this config under the Libra root account. + /// Publish a new config item. Only Diem root can modify such config. + /// Publishes the capability to modify this config under the Diem root account. /// Does not trigger a reconfiguration. public fun publish_new_config( - lr_account: &signer, + dr_account: &signer, payload: Config ) { - let capability = publish_new_config_and_get_capability(lr_account, payload); + let capability = publish_new_config_and_get_capability(dr_account, payload); assert( - !exists>(Signer::address_of(lr_account)), + !exists>(Signer::address_of(dr_account)), Errors::already_published(EMODIFY_CAPABILITY) ); - move_to(lr_account, capability); + move_to(dr_account, capability); } spec fun publish_new_config { pragma opaque; - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); include PublishNewConfigAbortsIf; include PublishNewConfigEnsures; } spec schema PublishNewConfigAbortsIf { - lr_account: signer; - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + dr_account: signer; + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; aborts_if spec_is_published(); - aborts_if exists>(Signer::spec_address_of(lr_account)); + aborts_if exists>(Signer::spec_address_of(dr_account)); } spec schema PublishNewConfigEnsures { - lr_account: signer; + dr_account: signer; payload: Config; include SetEnsures; - ensures exists>(Signer::spec_address_of(lr_account)); + ensures exists>(Signer::spec_address_of(dr_account)); } - /// Signal validators to start using new configuration. Must be called by Libra root. + /// Signal validators to start using new configuration. Must be called by Diem root. public fun reconfigure( - lr_account: &signer, + dr_account: &signer, ) acquires Configuration { - Roles::assert_libra_root(lr_account); + Roles::assert_diem_root(dr_account); reconfigure_(); } spec fun reconfigure { pragma opaque; - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include ReconfigureAbortsIf; } @@ -247,19 +247,19 @@ module LibraConfig { /// `Configuration` and emits a `NewEpochEvent` fun reconfigure_() acquires Configuration { // Do not do anything if genesis has not finished. - if (LibraTimestamp::is_genesis() || LibraTimestamp::now_microseconds() == 0) { + if (DiemTimestamp::is_genesis() || DiemTimestamp::now_microseconds() == 0) { return () }; - let config_ref = borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()); - let current_time = LibraTimestamp::now_microseconds(); + let config_ref = borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()); + let current_time = DiemTimestamp::now_microseconds(); // Do not do anything if a reconfiguration event is already emitted within this transaction. // // This is OK because: // - The time changes in every non-empty block // - A block automatically ends after a transaction that emits a reconfiguration event, which is guaranteed by - // LibraVM spec that all transactions comming after a reconfiguration transaction will be returned as Retry + // DiemVM spec that all transactions comming after a reconfiguration transaction will be returned as Retry // status. // - Each transaction must emit at most one reconfiguration event // @@ -282,14 +282,14 @@ module LibraConfig { ); } spec define spec_reconfigure_omitted(): bool { - LibraTimestamp::is_genesis() || LibraTimestamp::spec_now_microseconds() == 0 + DiemTimestamp::is_genesis() || DiemTimestamp::spec_now_microseconds() == 0 } spec fun reconfigure_ { pragma opaque; - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); ensures old(spec_has_config()) == spec_has_config(); - let config = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - let now = LibraTimestamp::spec_now_microseconds(); + let config = global(CoreAddresses::DIEM_ROOT_ADDRESS()); + let now = DiemTimestamp::spec_now_microseconds(); let epoch = config.epoch; include !spec_reconfigure_omitted() || (config.last_reconfiguration_time == now) @@ -309,18 +309,18 @@ module LibraConfig { /// of callers, and which are therefore marked as `concrete` to be only verified against the implementation. /// These conditions are unlikely to happen in reality, and excluding them avoids formal noise. spec schema InternalReconfigureAbortsIf { - let config = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - let current_time = LibraTimestamp::spec_now_microseconds(); + let config = global(CoreAddresses::DIEM_ROOT_ADDRESS()); + let current_time = DiemTimestamp::spec_now_microseconds(); aborts_if [concrete] current_time < config.last_reconfiguration_time with Errors::INVALID_STATE; aborts_if [concrete] config.epoch == MAX_U64 && current_time != config.last_reconfiguration_time with EXECUTION_FAILURE; } /// This schema is to be used by callers of `reconfigure` spec schema ReconfigureAbortsIf { - let config = global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - let current_time = LibraTimestamp::spec_now_microseconds(); - aborts_if LibraTimestamp::is_operating() - && LibraTimestamp::spec_now_microseconds() > 0 + let config = global(CoreAddresses::DIEM_ROOT_ADDRESS()); + let current_time = DiemTimestamp::spec_now_microseconds(); + aborts_if DiemTimestamp::is_operating() + && DiemTimestamp::spec_now_microseconds() > 0 && config.epoch < MAX_U64 && current_time < config.last_reconfiguration_time with Errors::INVALID_STATE; @@ -329,8 +329,8 @@ module LibraConfig { /// Emit a `NewEpochEvent` event. This function will be invoked by genesis directly to generate the very first /// reconfiguration event. fun emit_genesis_reconfiguration_event() acquires Configuration { - assert(exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ECONFIGURATION)); - let config_ref = borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()); + assert(exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ECONFIGURATION)); + let config_ref = borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()); assert(config_ref.epoch == 0 && config_ref.last_reconfiguration_time == 0, Errors::invalid_state(ECONFIGURATION)); config_ref.epoch = 1; @@ -350,19 +350,19 @@ module LibraConfig { /// # Initialization spec module { /// After genesis, the `Configuration` is published. - invariant [global] LibraTimestamp::is_operating() ==> spec_has_config(); + invariant [global] DiemTimestamp::is_operating() ==> spec_has_config(); } /// # Invariants spec module { - /// Configurations are only stored at the libra root address. + /// Configurations are only stored at the diem root address. invariant [global] - forall config_address: address, config_type: type where exists>(config_address): - config_address == CoreAddresses::LIBRA_ROOT_ADDRESS(); + forall config_address: address, config_type: type where exists>(config_address): + config_address == CoreAddresses::DIEM_ROOT_ADDRESS(); /// After genesis, no new configurations are added. invariant update [global] - LibraTimestamp::is_operating() ==> + DiemTimestamp::is_operating() ==> (forall config_type: type where spec_is_published(): old(spec_is_published())); /// Published configurations are persistent. @@ -371,22 +371,22 @@ module LibraConfig { /// If `ModifyConfigCapability` is published, it is persistent. invariant update [global] forall config_type: type - where old(exists>(CoreAddresses::LIBRA_ROOT_ADDRESS())): - exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + where old(exists>(CoreAddresses::DIEM_ROOT_ADDRESS())): + exists>(CoreAddresses::DIEM_ROOT_ADDRESS()); } /// # Helper Functions spec module { define spec_has_config(): bool { - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } define spec_is_published(): bool { - exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists>(CoreAddresses::DIEM_ROOT_ADDRESS()) } define spec_get_config(): Config { - global>(CoreAddresses::LIBRA_ROOT_ADDRESS()).payload + global>(CoreAddresses::DIEM_ROOT_ADDRESS()).payload } } diff --git a/language/stdlib/modules/LibraSystem.move b/language/stdlib/modules/DiemSystem.move similarity index 73% rename from language/stdlib/modules/LibraSystem.move rename to language/stdlib/modules/DiemSystem.move index d2f94e0232..e3cc113244 100644 --- a/language/stdlib/modules/LibraSystem.move +++ b/language/stdlib/modules/DiemSystem.move @@ -6,16 +6,16 @@ address 0x1 { /// /// > Note: When trying to understand this code, it's important to know that "config" /// and "configuration" are used for several distinct concepts. -module LibraSystem { +module DiemSystem { use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::LibraConfig::{Self, ModifyConfigCapability}; + use 0x1::DiemConfig::{Self, ModifyConfigCapability}; use 0x1::Option::{Self, Option}; use 0x1::Signer; use 0x1::ValidatorConfig; use 0x1::Vector; use 0x1::Roles; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; /// Information about a Validator Owner. struct ValidatorInfo { @@ -32,29 +32,29 @@ module LibraSystem { last_config_update_time: u64, } - /// Enables a scheme that restricts the LibraSystem config - /// in LibraConfig from being modified by any other module. Only - /// code in this module can get a reference to the ModifyConfigCapability, - /// which is required by `LibraConfig::set_with_capability_and_reconfigure` to - /// modify the LibraSystem config. This is only needed by `update_config_and_reconfigure`. - /// Only Libra root can add or remove a validator from the validator set, so the + /// Enables a scheme that restricts the DiemSystem config + /// in DiemConfig from being modified by any other module. Only + /// code in this module can get a reference to the ModifyConfigCapability, + /// which is required by `DiemConfig::set_with_capability_and_reconfigure` to + /// modify the DiemSystem config. This is only needed by `update_config_and_reconfigure`. + /// Only Diem root can add or remove a validator from the validator set, so the /// capability is not needed for access control in those functions. resource struct CapabilityHolder { - /// Holds a capability returned by `LibraConfig::publish_new_config_and_get_capability` + /// Holds a capability returned by `DiemConfig::publish_new_config_and_get_capability` /// which is called in `initialize_validator_set`. - cap: ModifyConfigCapability, + cap: ModifyConfigCapability, } - /// The LibraSystem struct stores the validator set and crypto scheme in - /// LibraConfig. The LibraSystem struct is stored by LibraConfig, which publishes a - /// LibraConfig resource. - struct LibraSystem { + /// The DiemSystem struct stores the validator set and crypto scheme in + /// DiemConfig. The DiemSystem struct is stored by DiemConfig, which publishes a + /// DiemConfig resource. + struct DiemSystem { /// The current consensus crypto scheme. scheme: u8, /// The current validator set. validators: vector, } - spec struct LibraSystem { + spec struct DiemSystem { /// Members of `validators` vector (the validator set) have unique addresses. invariant forall i in 0..len(validators), j in 0..len(validators): @@ -84,112 +84,112 @@ module LibraSystem { /////////////////////////////////////////////////////////////////////////// - /// Publishes the LibraConfig for the LibraSystem struct, which contains the current + /// Publishes the DiemConfig for the DiemSystem struct, which contains the current /// validator set. Also publishes the `CapabilityHolder` with the - /// ModifyConfigCapability returned by the publish function, which allows - /// code in this module to change LibraSystem config (including the validator set). - /// Must be invoked by the Libra root a single time in Genesis. + /// ModifyConfigCapability returned by the publish function, which allows + /// code in this module to change DiemSystem config (including the validator set). + /// Must be invoked by the Diem root a single time in Genesis. public fun initialize_validator_set( - lr_account: &signer, + dr_account: &signer, ) { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); - let cap = LibraConfig::publish_new_config_and_get_capability( - lr_account, - LibraSystem { + let cap = DiemConfig::publish_new_config_and_get_capability( + dr_account, + DiemSystem { scheme: 0, validators: Vector::empty(), }, ); assert( - !exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), + !exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ECAPABILITY_HOLDER) ); - move_to(lr_account, CapabilityHolder { cap }) + move_to(dr_account, CapabilityHolder { cap }) } spec fun initialize_validator_set { - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - let lr_addr = Signer::spec_address_of(lr_account); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + let dr_addr = Signer::spec_address_of(dr_account); // TODO: The next two aborts_if's are not independent. Perhaps they can be // simplified. - aborts_if LibraConfig::spec_is_published() with Errors::ALREADY_PUBLISHED; - aborts_if exists(lr_addr) with Errors::ALREADY_PUBLISHED; - ensures exists(lr_addr); - ensures LibraConfig::spec_is_published(); + aborts_if DiemConfig::spec_is_published() with Errors::ALREADY_PUBLISHED; + aborts_if exists(dr_addr) with Errors::ALREADY_PUBLISHED; + ensures exists(dr_addr); + ensures DiemConfig::spec_is_published(); ensures len(spec_get_validators()) == 0; } - /// Copies a LibraSystem struct into the LibraConfig resource + /// Copies a DiemSystem struct into the DiemConfig resource /// Called by the add, remove, and update functions. - fun set_libra_system_config(value: LibraSystem) acquires CapabilityHolder { - LibraTimestamp::assert_operating(); + fun set_diem_system_config(value: DiemSystem) acquires CapabilityHolder { + DiemTimestamp::assert_operating(); assert( - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), + exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ECAPABILITY_HOLDER) ); - // Updates the LibraConfig and emits a reconfigure event. - LibraConfig::set_with_capability_and_reconfigure( - &borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).cap, + // Updates the DiemConfig and emits a reconfigure event. + DiemConfig::set_with_capability_and_reconfigure( + &borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).cap, value ) } - spec fun set_libra_system_config { + spec fun set_diem_system_config { pragma opaque; - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - modifies global(CoreAddresses::LIBRA_ROOT_ADDRESS()); - include LibraTimestamp::AbortsIfNotOperating; - include LibraConfig::ReconfigureAbortsIf; - /// `payload` is the only field of LibraConfig, so next completely specifies it. - ensures global>(CoreAddresses::LIBRA_ROOT_ADDRESS()).payload == value; + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); + modifies global(CoreAddresses::DIEM_ROOT_ADDRESS()); + include DiemTimestamp::AbortsIfNotOperating; + include DiemConfig::ReconfigureAbortsIf; + /// `payload` is the only field of DiemConfig, so next completely specifies it. + ensures global>(CoreAddresses::DIEM_ROOT_ADDRESS()).payload == value; } /////////////////////////////////////////////////////////////////////////// - // Methods operating the Validator Set config callable by the libra root account + // Methods operating the Validator Set config callable by the diem root account /////////////////////////////////////////////////////////////////////////// /// Adds a new validator to the validator set. public fun add_validator( - lr_account: &signer, + dr_account: &signer, validator_addr: address ) acquires CapabilityHolder { - LibraTimestamp::assert_operating(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_operating(); + Roles::assert_diem_root(dr_account); // A prospective validator must have a validator config resource assert(ValidatorConfig::is_valid(validator_addr), Errors::invalid_argument(EINVALID_PROSPECTIVE_VALIDATOR)); - let libra_system_config = get_libra_system_config(); + let diem_system_config = get_diem_system_config(); // Ensure that this address is not already a validator assert( - !is_validator_(validator_addr, &libra_system_config.validators), + !is_validator_(validator_addr, &diem_system_config.validators), Errors::invalid_argument(EALREADY_A_VALIDATOR) ); // it is guaranteed that the config is non-empty let config = ValidatorConfig::get_config(validator_addr); - Vector::push_back(&mut libra_system_config.validators, ValidatorInfo { + Vector::push_back(&mut diem_system_config.validators, ValidatorInfo { addr: validator_addr, config, // copy the config over to ValidatorSet consensus_voting_power: 1, - last_config_update_time: LibraTimestamp::now_microseconds(), + last_config_update_time: DiemTimestamp::now_microseconds(), }); - set_libra_system_config(libra_system_config); + set_diem_system_config(diem_system_config); } spec fun add_validator { - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); include AddValidatorAbortsIf; include AddValidatorEnsures; } spec schema AddValidatorAbortsIf { - lr_account: signer; + dr_account: signer; validator_addr: address; - include LibraTimestamp::AbortsIfNotOperating; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - include LibraConfig::ReconfigureAbortsIf; + include DiemTimestamp::AbortsIfNotOperating; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + include DiemConfig::ReconfigureAbortsIf; aborts_if !ValidatorConfig::is_valid(validator_addr) with Errors::INVALID_ARGUMENT; aborts_if spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT; } @@ -209,40 +209,40 @@ module LibraSystem { addr: validator_addr, config: ValidatorConfig::spec_get_config(validator_addr), consensus_voting_power: 1, - last_config_update_time: LibraTimestamp::spec_now_microseconds(), + last_config_update_time: DiemTimestamp::spec_now_microseconds(), } ); } - /// Removes a validator, aborts unless called by libra root account + /// Removes a validator, aborts unless called by diem root account public fun remove_validator( - lr_account: &signer, + dr_account: &signer, validator_addr: address ) acquires CapabilityHolder { - LibraTimestamp::assert_operating(); - Roles::assert_libra_root(lr_account); - let libra_system_config = get_libra_system_config(); + DiemTimestamp::assert_operating(); + Roles::assert_diem_root(dr_account); + let diem_system_config = get_diem_system_config(); // Ensure that this address is an active validator - let to_remove_index_vec = get_validator_index_(&libra_system_config.validators, validator_addr); + let to_remove_index_vec = get_validator_index_(&diem_system_config.validators, validator_addr); assert(Option::is_some(&to_remove_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR)); let to_remove_index = *Option::borrow(&to_remove_index_vec); // Remove corresponding ValidatorInfo from the validator set - _ = Vector::swap_remove(&mut libra_system_config.validators, to_remove_index); + _ = Vector::swap_remove(&mut diem_system_config.validators, to_remove_index); - set_libra_system_config(libra_system_config); + set_diem_system_config(diem_system_config); } spec fun remove_validator { - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); include RemoveValidatorAbortsIf; include RemoveValidatorEnsures; } spec schema RemoveValidatorAbortsIf { - lr_account: signer; + dr_account: signer; validator_addr: address; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - include LibraTimestamp::AbortsIfNotOperating; - include LibraConfig::ReconfigureAbortsIf; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + include DiemTimestamp::AbortsIfNotOperating; + include DiemConfig::ReconfigureAbortsIf; aborts_if !spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT; } spec schema RemoveValidatorEnsures { @@ -256,36 +256,36 @@ module LibraSystem { /// Copy the information from ValidatorConfig into the validator set. /// This function makes no changes to the size or the members of the set. - /// If the config in the ValidatorSet changes, it stores the new LibraSystem + /// If the config in the ValidatorSet changes, it stores the new DiemSystem /// and emits a reconfigurationevent. public fun update_config_and_reconfigure( validator_operator_account: &signer, validator_addr: address, ) acquires CapabilityHolder { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_validator_operator(validator_operator_account); assert( ValidatorConfig::get_operator(validator_addr) == Signer::address_of(validator_operator_account), Errors::invalid_argument(EINVALID_TRANSACTION_SENDER) ); - let libra_system_config = get_libra_system_config(); - let to_update_index_vec = get_validator_index_(&libra_system_config.validators, validator_addr); + let diem_system_config = get_diem_system_config(); + let to_update_index_vec = get_validator_index_(&diem_system_config.validators, validator_addr); assert(Option::is_some(&to_update_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR)); let to_update_index = *Option::borrow(&to_update_index_vec); - let is_validator_info_updated = update_ith_validator_info_(&mut libra_system_config.validators, to_update_index); + let is_validator_info_updated = update_ith_validator_info_(&mut diem_system_config.validators, to_update_index); if (is_validator_info_updated) { - let validator_info = Vector::borrow_mut(&mut libra_system_config.validators, to_update_index); - assert(LibraTimestamp::now_microseconds() > + let validator_info = Vector::borrow_mut(&mut diem_system_config.validators, to_update_index); + assert(DiemTimestamp::now_microseconds() > validator_info.last_config_update_time + FIVE_MINUTES, ECONFIG_UPDATE_RATE_LIMITED); - validator_info.last_config_update_time = LibraTimestamp::now_microseconds(); - set_libra_system_config(libra_system_config); + validator_info.last_config_update_time = DiemTimestamp::now_microseconds(); + set_diem_system_config(diem_system_config); } } spec fun update_config_and_reconfigure { pragma opaque; pragma verify_duration_estimate = 100; - modifies global>(CoreAddresses::LIBRA_ROOT_ADDRESS()); + modifies global>(CoreAddresses::DIEM_ROOT_ADDRESS()); include UpdateConfigAndReconfigureAbortsIf; include UpdateConfigAndReconfigureEnsures; // The property below is not in `UpdateConfigAndReconfigureEnsures` because that is reused @@ -299,13 +299,13 @@ module LibraSystem { (exists v_info in spec_get_validators(): v_info.addr == validator_addr && v_info.config != ValidatorConfig::spec_get_config(validator_addr)); - include is_validator_info_updated ==> LibraConfig::ReconfigureAbortsIf; + include is_validator_info_updated ==> DiemConfig::ReconfigureAbortsIf; } spec schema UpdateConfigAndReconfigureAbortsIf { validator_addr: address; validator_operator_account: signer; let validator_operator_addr = Signer::address_of(validator_operator_account); - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; /// Must abort if the signer does not have the ValidatorOperator role [[H14]][PERMISSION]. include Roles::AbortsIfNotValidatorOperator{validator_operator_addr: validator_operator_addr}; include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_addr}; @@ -338,26 +338,26 @@ module LibraSystem { // Publicly callable APIs: getters /////////////////////////////////////////////////////////////////////////// - /// Get the LibraSystem configuration from LibraConfig - public fun get_libra_system_config(): LibraSystem { - LibraConfig::get() + /// Get the DiemSystem configuration from DiemConfig + public fun get_diem_system_config(): DiemSystem { + DiemConfig::get() } - spec fun get_libra_system_config { + spec fun get_diem_system_config { pragma opaque; - include LibraConfig::AbortsIfNotPublished; - ensures result == LibraConfig::get(); + include DiemConfig::AbortsIfNotPublished; + ensures result == DiemConfig::get(); } /// Return true if `addr` is in the current validator set public fun is_validator(addr: address): bool { - is_validator_(addr, &get_libra_system_config().validators) + is_validator_(addr, &get_diem_system_config().validators) } spec fun is_validator { pragma opaque; - // TODO: Publication of LibraConfig in initialization + // TODO: Publication of DiemConfig in initialization // and persistence of configs implies that the next abort cannot // actually happen. - include LibraConfig::AbortsIfNotPublished; + include DiemConfig::AbortsIfNotPublished; ensures result == spec_is_validator(addr); } spec define spec_is_validator(addr: address): bool { @@ -366,38 +366,38 @@ module LibraSystem { /// Returns validator config. Aborts if `addr` is not in the validator set. public fun get_validator_config(addr: address): ValidatorConfig::Config { - let libra_system_config = get_libra_system_config(); - let validator_index_vec = get_validator_index_(&libra_system_config.validators, addr); + let diem_system_config = get_diem_system_config(); + let validator_index_vec = get_validator_index_(&diem_system_config.validators, addr); assert(Option::is_some(&validator_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR)); - *&(Vector::borrow(&libra_system_config.validators, *Option::borrow(&validator_index_vec))).config + *&(Vector::borrow(&diem_system_config.validators, *Option::borrow(&validator_index_vec))).config } spec fun get_validator_config { pragma opaque; - include LibraConfig::AbortsIfNotPublished; + include DiemConfig::AbortsIfNotPublished; aborts_if !spec_is_validator(addr) with Errors::INVALID_ARGUMENT; ensures - exists info in LibraConfig::get().validators where info.addr == addr: + exists info in DiemConfig::get().validators where info.addr == addr: result == info.config; } /// Return the size of the current validator set public fun validator_set_size(): u64 { - Vector::length(&get_libra_system_config().validators) + Vector::length(&get_diem_system_config().validators) } spec fun validator_set_size { pragma opaque; - include LibraConfig::AbortsIfNotPublished; + include DiemConfig::AbortsIfNotPublished; ensures result == len(spec_get_validators()); } /// Get the `i`'th validator address in the validator set. public fun get_ith_validator_address(i: u64): address { assert(i < validator_set_size(), Errors::invalid_argument(EVALIDATOR_INDEX)); - Vector::borrow(&get_libra_system_config().validators, i).addr + Vector::borrow(&get_diem_system_config().validators, i).addr } spec fun get_ith_validator_address { pragma opaque; - include LibraConfig::AbortsIfNotPublished; + include DiemConfig::AbortsIfNotPublished; aborts_if i >= len(spec_get_validators()) with Errors::INVALID_ARGUMENT; ensures result == spec_get_validators()[i].addr; } @@ -441,7 +441,7 @@ module LibraSystem { /// If `addr` is not in validator set, returns none. ensures (forall i in 0..size: validators[i].addr != addr) ==> Option::is_none(result); /// If `addr` is in validator set, return the least index of an entry with that address. - /// The data invariant associated with the LibraSystem.validators that implies + /// The data invariant associated with the DiemSystem.validators that implies /// that there is exactly one such address. ensures (exists i in 0..size: validators[i].addr == addr) ==> @@ -527,11 +527,11 @@ module LibraSystem { /// # Initialization spec module { - /// After genesis, the `LibraSystem` configuration is published, as well as the capability + /// After genesis, the `DiemSystem` configuration is published, as well as the capability /// which grants the right to modify it to certain functions in this module. - invariant [global] LibraTimestamp::is_operating() ==> - LibraConfig::spec_is_published() && - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + invariant [global] DiemTimestamp::is_operating() ==> + DiemConfig::spec_is_published() && + exists(CoreAddresses::DIEM_ROOT_ADDRESS()); } /// # Access Control @@ -545,8 +545,8 @@ module LibraSystem { /// `update_config_and_reconfigure`. spec module { - /// The permission "{Add, Remove} Validator" is granted to LibraRoot [[H13]][PERMISSION]. - apply Roles::AbortsIfNotLibraRoot{account: lr_account} to add_validator, remove_validator; + /// The permission "{Add, Remove} Validator" is granted to DiemRoot [[H13]][PERMISSION]. + apply Roles::AbortsIfNotDiemRoot{account: dr_account} to add_validator, remove_validator; } spec schema ValidatorSetConfigRemainsSame { @@ -555,20 +555,20 @@ module LibraSystem { spec module { /// Only {add, remove} validator [[H13]][PERMISSION] and update_config_and_reconfigure /// [[H14]][PERMISSION] may change the set of validators in the configuration. - /// `set_libra_system_config` is a private function which is only called by other + /// `set_diem_system_config` is a private function which is only called by other /// functions in the "except" list. `initialize_validator_set` is only called in /// Genesis. apply ValidatorSetConfigRemainsSame to *, * except add_validator, remove_validator, update_config_and_reconfigure, - initialize_validator_set, set_libra_system_config; + initialize_validator_set, set_diem_system_config; } /// # Helper Functions spec module { - /// Fetches the currently published validator set from the published LibraConfig + /// Fetches the currently published validator set from the published DiemConfig /// resource. define spec_get_validators(): vector { - LibraConfig::get().validators + DiemConfig::get().validators } } @@ -578,7 +578,7 @@ module LibraSystem { /// (meaning of ValidatorConfig::is_valid). /// > Unfortunately, this times out for unknown reasons (it doesn't seem to be hard), /// so it is deactivated. - /// The Prover can prove it if the uniqueness invariant for the LibraSystem resource + /// The Prover can prove it if the uniqueness invariant for the DiemSystem resource /// is commented out, along with aborts for update_config_and_reconfigure and everything /// else that breaks (e.g., there is an ensures in remove_validator that has to be /// commented out) @@ -586,7 +586,7 @@ module LibraSystem { ValidatorConfig::is_valid(spec_get_validators()[i1].addr); /// Every validator in the validator set has a validator role. - /// > Note: Verification of LibraSystem seems to be very sensitive, and will + /// > Note: Verification of DiemSystem seems to be very sensitive, and will /// often time out after small changes. Disabling this property /// (with [deactivate, global]) is sometimes a quick temporary fix. invariant [global] forall i1 in 0..len(spec_get_validators()): @@ -596,7 +596,7 @@ module LibraSystem { /// field may have different values in which case this property will have to /// change. It's here currently because and accidental or illicit change /// to the voting power of a validator could defeat the Byzantine fault tolerance - /// of LibraBFT. + /// of DiemBFT. invariant [global] forall i1 in 0..len(spec_get_validators()): spec_get_validators()[i1].consensus_voting_power == 1; diff --git a/language/stdlib/modules/LibraTimestamp.move b/language/stdlib/modules/DiemTimestamp.move similarity index 82% rename from language/stdlib/modules/LibraTimestamp.move rename to language/stdlib/modules/DiemTimestamp.move index d99ccfe9c6..ffd6ce9711 100644 --- a/language/stdlib/modules/LibraTimestamp.move +++ b/language/stdlib/modules/DiemTimestamp.move @@ -5,15 +5,15 @@ address 0x1 { /// /// * Genesis: to initialize the timestamp /// * VASP: to keep track of when credentials expire -/// * LibraSystem, LibraAccount, LibraConfig: to check if the current state is in the genesis state -/// * LibraBlock: to reach consensus on the global wall clock time +/// * DiemSystem, DiemAccount, DiemConfig: to check if the current state is in the genesis state +/// * DiemBlock: to reach consensus on the global wall clock time /// * AccountLimits: to limit the time of account limits /// /// This module moreover enables code to assert that it is running in genesis (`Self::assert_genesis`) or after /// genesis (`Self::assert_operating`). These are essentially distinct states of the system. Specifically, /// if `Self::assert_operating` succeeds, assumptions about invariants over the global state can be made /// which reflect that the system has been successfully initialized. -module LibraTimestamp { +module DiemTimestamp { use 0x1::CoreAddresses; use 0x1::Errors; @@ -34,19 +34,19 @@ module LibraTimestamp { /// Marks that time has started and genesis has finished. This can only be called from genesis and with the root /// account. - public fun set_time_has_started(lr_account: &signer) { + public fun set_time_has_started(dr_account: &signer) { assert_genesis(); - CoreAddresses::assert_libra_root(lr_account); + CoreAddresses::assert_diem_root(dr_account); let timer = CurrentTimeMicroseconds { microseconds: 0 }; - move_to(lr_account, timer); + move_to(dr_account, timer); } spec fun set_time_has_started { /// Verification of this function is turned off because it cannot be verified without genesis execution - /// context. After time has started, all invariants guarded by `LibraTimestamp::is_operating` will become + /// context. After time has started, all invariants guarded by `DiemTimestamp::is_operating` will become /// activated and need to hold. pragma verify = false; include AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; ensures is_operating(); } @@ -57,10 +57,10 @@ module LibraTimestamp { timestamp: u64 ) acquires CurrentTimeMicroseconds { assert_operating(); - // Can only be invoked by LibraVM signer. + // Can only be invoked by DiemVM signer. CoreAddresses::assert_vm(account); - let global_timer = borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()); + let global_timer = borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()); let now = global_timer.microseconds; if (proposer == CoreAddresses::VM_RESERVED_ADDRESS()) { // NIL block with null address as proposer. Timestamp must be equal. @@ -90,7 +90,7 @@ module LibraTimestamp { /// Gets the current time in microseconds. public fun now_microseconds(): u64 acquires CurrentTimeMicroseconds { assert_operating(); - borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds + borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds } spec fun now_microseconds { pragma opaque; @@ -98,7 +98,7 @@ module LibraTimestamp { ensures result == spec_now_microseconds(); } spec define spec_now_microseconds(): u64 { - global(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds + global(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds } /// Gets the current time in seconds. @@ -111,12 +111,12 @@ module LibraTimestamp { ensures result == spec_now_microseconds() / MICRO_CONVERSION_FACTOR; } spec define spec_now_seconds(): u64 { - global(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds / MICRO_CONVERSION_FACTOR + global(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds / MICRO_CONVERSION_FACTOR } - /// Helper function to determine if Libra is in genesis state. + /// Helper function to determine if Diem is in genesis state. public fun is_genesis(): bool { - !exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + !exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } /// Helper function to assert genesis state. @@ -133,10 +133,10 @@ module LibraTimestamp { aborts_if !is_genesis() with Errors::INVALID_STATE; } - /// Helper function to determine if Libra is operating. This is the same as `!is_genesis()` and is provided + /// Helper function to determine if Diem is operating. This is the same as `!is_genesis()` and is provided /// for convenience. Testing `is_operating()` is more frequent than `is_genesis()`. public fun is_operating(): bool { - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } /// Helper function to assert operating (!genesis) state. @@ -159,7 +159,7 @@ module LibraTimestamp { spec module { /// After genesis, `CurrentTimeMicroseconds` is published forever - invariant [global] is_operating() ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + invariant [global] is_operating() ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); /// After genesis, time progresses monotonically. invariant update [global] diff --git a/language/stdlib/modules/DiemTransactionPublishingOption.move b/language/stdlib/modules/DiemTransactionPublishingOption.move new file mode 100644 index 0000000000..b72584ad8a --- /dev/null +++ b/language/stdlib/modules/DiemTransactionPublishingOption.move @@ -0,0 +1,178 @@ +address 0x1 { + +/// This module defines a struct storing the publishing policies for the VM. +module DiemTransactionPublishingOption { + use 0x1::Vector; + use 0x1::DiemConfig::{Self, DiemConfig}; + use 0x1::DiemTimestamp; + use 0x1::Errors; + use 0x1::CoreAddresses; + use 0x1::Roles; + + const SCRIPT_HASH_LENGTH: u64 = 32; + + /// The script hash has an invalid length + const EINVALID_SCRIPT_HASH: u64 = 0; + /// The script hash already exists in the allowlist + const EALLOWLIST_ALREADY_CONTAINS_SCRIPT: u64 = 1; + + /// Defines and holds the publishing policies for the VM. There are three possible configurations: + /// 1. No module publishing, only allow-listed scripts are allowed. + /// 2. No module publishing, custom scripts are allowed. + /// 3. Both module publishing and custom scripts are allowed. + /// We represent these as the following resource. + struct DiemTransactionPublishingOption { + /// Only script hashes in the following list can be executed by the network. If the vector is empty, no + /// limitation would be enforced. + script_allow_list: vector>, + /// Anyone can publish new module if this flag is set to true. + module_publishing_allowed: bool, + } + + public fun initialize( + dr_account: &signer, + script_allow_list: vector>, + module_publishing_allowed: bool, + ) { + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); + + DiemConfig::publish_new_config( + dr_account, + DiemTransactionPublishingOption { + script_allow_list, module_publishing_allowed + } + ); + } + spec fun initialize { + /// Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + include DiemTimestamp::AbortsIfNotGenesis; + include DiemConfig::PublishNewConfigAbortsIf; + include DiemConfig::PublishNewConfigEnsures { + payload: DiemTransactionPublishingOption { + script_allow_list, module_publishing_allowed + }}; + } + + /// Check if sender can execute script with `hash` + public fun is_script_allowed(account: &signer, hash: &vector): bool { + let publish_option = DiemConfig::get(); + + Vector::is_empty(&publish_option.script_allow_list) + || Vector::contains(&publish_option.script_allow_list, hash) + || Roles::has_diem_root_role(account) + } + spec fun is_script_allowed { + include AbortsIfNoTransactionPublishingOption; + } + spec schema AbortsIfNoTransactionPublishingOption { + include DiemTimestamp::is_genesis() ==> DiemConfig::AbortsIfNotPublished{}; + } + + /// Check if a sender can publish a module + public fun is_module_allowed(account: &signer): bool { + let publish_option = DiemConfig::get(); + + publish_option.module_publishing_allowed || Roles::has_diem_root_role(account) + } + spec fun is_module_allowed{ + include AbortsIfNoTransactionPublishingOption; + } + + /// Add `new_hash` to the list of script hashes that is allowed to be executed by the network. + public fun add_to_script_allow_list(dr_account: &signer, new_hash: vector) { + Roles::assert_diem_root(dr_account); + + assert(Vector::length(&new_hash) == SCRIPT_HASH_LENGTH, Errors::invalid_argument(EINVALID_SCRIPT_HASH)); + + let publish_option = DiemConfig::get(); + if (Vector::contains(&publish_option.script_allow_list, &new_hash)) { + abort Errors::invalid_argument(EALLOWLIST_ALREADY_CONTAINS_SCRIPT) + }; + Vector::push_back(&mut publish_option.script_allow_list, new_hash); + + DiemConfig::set(dr_account, publish_option); + } + spec fun add_to_script_allow_list { + /// Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + let allow_list = DiemConfig::get().script_allow_list; + aborts_if Vector::length(new_hash) != SCRIPT_HASH_LENGTH with Errors::INVALID_ARGUMENT; + aborts_if Vector::spec_contains(allow_list, new_hash) with Errors::INVALID_ARGUMENT; + include DiemConfig::AbortsIfNotPublished; + include DiemConfig::SetAbortsIf{account: dr_account}; + } + + /// Allow the execution of arbitrary script or not. + public fun set_open_script(dr_account: &signer) { + Roles::assert_diem_root(dr_account); + let publish_option = DiemConfig::get(); + + publish_option.script_allow_list = Vector::empty(); + DiemConfig::set(dr_account, publish_option); + } + spec fun set_open_script { + /// Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + include DiemConfig::AbortsIfNotPublished; + include DiemConfig::SetAbortsIf{account: dr_account}; + } + + /// Allow module publishing from arbitrary sender or not. + public fun set_open_module(dr_account: &signer, open_module: bool) { + Roles::assert_diem_root(dr_account); + + let publish_option = DiemConfig::get(); + + publish_option.module_publishing_allowed = open_module; + DiemConfig::set(dr_account, publish_option); + } + spec fun set_open_module { + /// Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + include DiemConfig::AbortsIfNotPublished; + include DiemConfig::SetAbortsIf{account: dr_account}; + } + + spec module { } // Switch documentation context to module level. + + /// # Initialization + spec module { + invariant [global] DiemTimestamp::is_operating() ==> + DiemConfig::spec_is_published(); + } + + /// # Access Control + + /// Only `add_to_script_allow_list`, `set_open_script`, and `set_open_module` can modify the + /// DiemTransactionPublishingOption config [[H11]][PERMISSION] + spec schema DiemVersionRemainsSame { + ensures old(DiemConfig::spec_is_published()) ==> + global>(CoreAddresses::DIEM_ROOT_ADDRESS()) == + old(global>(CoreAddresses::DIEM_ROOT_ADDRESS())); + } + spec module { + apply DiemVersionRemainsSame to * except add_to_script_allow_list, set_open_script, set_open_module; + } + + /// # Helper Functions + spec module { + define spec_is_script_allowed(account: signer, hash: vector): bool { + let publish_option = DiemConfig::spec_get_config(); + Vector::is_empty(publish_option.script_allow_list) + || Vector::spec_contains(publish_option.script_allow_list, hash) + || Roles::has_diem_root_role(account) + } + + define spec_is_module_allowed(account: signer): bool { + let publish_option = DiemConfig::spec_get_config(); + publish_option.module_publishing_allowed || Roles::has_diem_root_role(account) + } + } +} +} diff --git a/language/stdlib/modules/LibraVMConfig.move b/language/stdlib/modules/DiemVMConfig.move similarity index 75% rename from language/stdlib/modules/LibraVMConfig.move rename to language/stdlib/modules/DiemVMConfig.move index d2d42bfe80..60522128f0 100644 --- a/language/stdlib/modules/LibraVMConfig.move +++ b/language/stdlib/modules/DiemVMConfig.move @@ -2,14 +2,14 @@ address 0x1 { /// This module defines structs and methods to initialize VM configurations, /// including different costs of running the VM. -module LibraVMConfig { - use 0x1::LibraConfig::{Self, LibraConfig}; - use 0x1::LibraTimestamp; +module DiemVMConfig { + use 0x1::DiemConfig::{Self, DiemConfig}; + use 0x1::DiemTimestamp; use 0x1::CoreAddresses; use 0x1::Roles; - /// The struct to hold config data needed to operate the LibraVM. - struct LibraVMConfig { + /// The struct to hold config data needed to operate the DiemVM. + struct DiemVMConfig { /// Cost of running the VM. gas_schedule: GasSchedule, } @@ -22,7 +22,7 @@ module LibraVMConfig { /// 1. In the case that an instruction is deleted from the bytecode, that part of the cost schedule /// still needs to remain the same; once a slot in the table is taken by an instruction, that is its /// slot for the rest of time (since that instruction could already exist in a module on-chain). - /// 2. The initialization of the module will publish the instruction table to the libra root account + /// 2. The initialization of the module will publish the instruction table to the diem root account /// address, and will preload the vector with the gas schedule for instructions. The VM will then /// load this into memory at the startup of each block. struct GasSchedule { @@ -68,16 +68,16 @@ module LibraVMConfig { default_account_size: u64, } - /// Initialize the table under the libra root account + /// Initialize the table under the diem root account public fun initialize( - lr_account: &signer, + dr_account: &signer, instruction_schedule: vector, native_schedule: vector, ) { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); - // The permission "UpdateVMConfig" is granted to LibraRoot [[H11]][PERMISSION]. - Roles::assert_libra_root(lr_account); + // The permission "UpdateVMConfig" is granted to DiemRoot [[H11]][PERMISSION]. + Roles::assert_diem_root(dr_account); let gas_constants = GasConstants { global_memory_per_byte_cost: 4, @@ -93,9 +93,9 @@ module LibraVMConfig { default_account_size: 800, }; - LibraConfig::publish_new_config( - lr_account, - LibraVMConfig { + DiemConfig::publish_new_config( + dr_account, + DiemVMConfig { gas_schedule: GasSchedule { instruction_schedule, native_schedule, @@ -119,13 +119,13 @@ module LibraVMConfig { default_account_size: 800, }; - /// Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; - include LibraTimestamp::AbortsIfNotGenesis; - include LibraConfig::PublishNewConfigAbortsIf; - include LibraConfig::PublishNewConfigEnsures { - payload: LibraVMConfig { + include DiemTimestamp::AbortsIfNotGenesis; + include DiemConfig::PublishNewConfigAbortsIf; + include DiemConfig::PublishNewConfigEnsures { + payload: DiemVMConfig { gas_schedule: GasSchedule { instruction_schedule, native_schedule, @@ -139,19 +139,19 @@ module LibraVMConfig { /// # Initialization spec module { - invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published(); + invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published(); } /// # Access Control - /// Currently, no one can update LibraVMConfig [[H11]][PERMISSION] - spec schema LibraVMConfigRemainsSame { - ensures old(LibraConfig::spec_is_published()) ==> - global>(CoreAddresses::LIBRA_ROOT_ADDRESS()) == - old(global>(CoreAddresses::LIBRA_ROOT_ADDRESS())); + /// Currently, no one can update DiemVMConfig [[H11]][PERMISSION] + spec schema DiemVMConfigRemainsSame { + ensures old(DiemConfig::spec_is_published()) ==> + global>(CoreAddresses::DIEM_ROOT_ADDRESS()) == + old(global>(CoreAddresses::DIEM_ROOT_ADDRESS())); } spec module { - apply LibraVMConfigRemainsSame to *; + apply DiemVMConfigRemainsSame to *; } } } diff --git a/language/stdlib/modules/DiemVersion.move b/language/stdlib/modules/DiemVersion.move new file mode 100644 index 0000000000..2a0bd0d157 --- /dev/null +++ b/language/stdlib/modules/DiemVersion.move @@ -0,0 +1,105 @@ +address 0x1 { + + +/// Maintains the version number for the Diem blockchain. The version is stored in a +/// DiemConfig, and may be updated by Diem root. +module DiemVersion { + use 0x1::CoreAddresses; + use 0x1::Errors; + use 0x1::DiemConfig::{Self, DiemConfig}; + use 0x1::DiemTimestamp; + use 0x1::Roles; + + struct DiemVersion { + major: u64, + } + + /// Tried to set an invalid major version for the VM. Major versions must be strictly increasing + const EINVALID_MAJOR_VERSION_NUMBER: u64 = 0; + + /// Publishes the DiemVersion config. Must be called during Genesis. + public fun initialize( + dr_account: &signer, + ) { + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); + DiemConfig::publish_new_config( + dr_account, + DiemVersion { major: 1 }, + ); + } + spec fun initialize { + /// Must abort if the signer does not have the DiemRoot role [[H10]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + include DiemTimestamp::AbortsIfNotGenesis; + include DiemConfig::PublishNewConfigAbortsIf; + include DiemConfig::PublishNewConfigEnsures{payload: DiemVersion { major: 1 }}; + } + + /// Allows Diem root to update the major version to a larger version. + public fun set(dr_account: &signer, major: u64) { + DiemTimestamp::assert_operating(); + + Roles::assert_diem_root(dr_account); + + let old_config = DiemConfig::get(); + + assert( + old_config.major < major, + Errors::invalid_argument(EINVALID_MAJOR_VERSION_NUMBER) + ); + + DiemConfig::set( + dr_account, + DiemVersion { major } + ); + } + spec fun set { + /// Must abort if the signer does not have the DiemRoot role [[H10]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + + include DiemTimestamp::AbortsIfNotOperating; + aborts_if DiemConfig::get().major >= major with Errors::INVALID_ARGUMENT; + include DiemConfig::SetAbortsIf{account: dr_account}; + include DiemConfig::SetEnsures{payload: DiemVersion { major }}; + } + + // ================================================================= + // Module Specification + + spec module {} // Switch to module documentation context + + /// # Initialization + spec module { + /// After genesis, version is published. + invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published(); + } + + /// # Access Control + + /// Only "set" can modify the DiemVersion config [[H10]][PERMISSION] + spec schema DiemVersionRemainsSame { + ensures old(DiemConfig::spec_is_published()) ==> + global>(CoreAddresses::DIEM_ROOT_ADDRESS()) == + old(global>(CoreAddresses::DIEM_ROOT_ADDRESS())); + } + spec module { + apply DiemVersionRemainsSame to * except set; + } + + spec module { + /// The permission "UpdateDiemProtocolVersion" is granted to DiemRoot [[H10]][PERMISSION]. + invariant [global, isolated] forall addr: address where exists>(addr): + addr == CoreAddresses::DIEM_ROOT_ADDRESS(); + } + + /// # Other Invariants + spec module { + /// Version number never decreases + invariant update [global, isolated] + old(DiemConfig::get().major) <= DiemConfig::get().major; + } + +} +} diff --git a/language/stdlib/modules/DualAttestation.move b/language/stdlib/modules/DualAttestation.move index fd40eb0207..70d745b345 100644 --- a/language/stdlib/modules/DualAttestation.move +++ b/language/stdlib/modules/DualAttestation.move @@ -4,10 +4,10 @@ address 0x1 { module DualAttestation { use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::LBR::LBR; + use 0x1::XDX::XDX; use 0x1::LCS; - use 0x1::Libra; - use 0x1::LibraTimestamp; + use 0x1::Diem; + use 0x1::DiemTimestamp; use 0x1::Roles; use 0x1::Signature; use 0x1::Signer; @@ -28,11 +28,11 @@ module DualAttestation { /// transactions subject to the travel rule) /// (2) information exchanged in the off-chain protocols (e.g., KYC info in the travel rule /// protocol) - /// Note that this is different than `authentication_key` used in LibraAccount, which is + /// Note that this is different than `authentication_key` used in DiemAccount, which is /// a hash of a public key + signature scheme identifier, not a public key. Mutable. compliance_public_key: vector, /// Expiration date in microseconds from unix epoch. For V1, it is always set to - /// U64_MAX. Mutable, but only by LibraRoot. + /// U64_MAX. Mutable, but only by DiemRoot. expiration_date: u64, /// Event handle for `compliance_public_key` rotation events. Emitted /// every time this `compliance_public_key` is rotated. @@ -43,7 +43,7 @@ module DualAttestation { /// Struct to store the limit on-chain resource struct Limit { - micro_lbr_limit: u64, + micro_xdx_limit: u64, } /// The message sent whenever the compliance public key for a `DualAttestation` resource is rotated. @@ -83,7 +83,7 @@ module DualAttestation { /// Value of the dual attestation limit at genesis const INITIAL_DUAL_ATTESTATION_LIMIT: u64 = 1000; /// Suffix of every signed dual attestation message - const DOMAIN_SEPARATOR: vector = b"@@$$LIBRA_ATTEST$$@@"; + const DOMAIN_SEPARATOR: vector = b"@@$$DIEM_ATTEST$$@@"; /// A year in microseconds const ONE_YEAR: u64 = 31540000000000; const U64_MAX: u64 = 18446744073709551615; @@ -131,7 +131,7 @@ module DualAttestation { credential.base_url = copy new_url; Event::emit_event(&mut credential.base_url_rotation_events, BaseUrlRotationEvent { new_base_url: new_url, - time_rotated_seconds: LibraTimestamp::now_seconds(), + time_rotated_seconds: DiemTimestamp::now_seconds(), }); } spec fun rotate_base_url { @@ -145,7 +145,7 @@ module DualAttestation { /// Must abort if the account does not have the resource Credential [[H16]][PERMISSION]. include AbortsIfNoCredential{addr: sender}; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; } spec schema AbortsIfNoCredential { addr: address; @@ -174,7 +174,7 @@ module DualAttestation { credential.compliance_public_key = copy new_key; Event::emit_event(&mut credential.compliance_key_rotation_events, ComplianceKeyRotationEvent { new_compliance_public_key: new_key, - time_rotated_seconds: LibraTimestamp::now_seconds(), + time_rotated_seconds: DiemTimestamp::now_seconds(), }); } @@ -190,7 +190,7 @@ module DualAttestation { /// Must abort if the account does not have the resource Credential [[H16]][PERMISSION]. include AbortsIfNoCredential{addr: sender}; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if !Signature::ed25519_validate_pubkey(new_key) with Errors::INVALID_ARGUMENT; } spec schema RotateCompliancePublicKeyEnsures { @@ -286,9 +286,9 @@ module DualAttestation { payer: address, payee: address, deposit_value: u64 ): bool acquires Limit { // travel rule applies for payments over a limit - let travel_rule_limit_microlibra = get_cur_microlibra_limit(); - let approx_lbr_microlibra_value = Libra::approx_lbr_for_value(deposit_value); - let above_limit = approx_lbr_microlibra_value >= travel_rule_limit_microlibra; + let travel_rule_limit_microdiem = get_cur_microdiem_limit(); + let approx_xdx_microdiem_value = Diem::approx_xdx_for_value(deposit_value); + let above_limit = approx_xdx_microdiem_value >= travel_rule_limit_microdiem; if (!above_limit) { return false }; @@ -308,7 +308,7 @@ module DualAttestation { } spec schema DualAttestationRequiredAbortsIf { deposit_value: num; - include Libra::ApproxLbrForValueAbortsIf{from_value: deposit_value}; + include Diem::ApproxXdmForValueAbortsIf{from_value: deposit_value}; aborts_if !spec_is_published() with Errors::NOT_PUBLISHED; } spec define spec_is_inter_vasp(payer: address, payee: address): bool { @@ -319,8 +319,8 @@ module DualAttestation { spec define spec_dual_attestation_required( payer: address, payee: address, deposit_value: u64 ): bool { - Libra::spec_approx_lbr_for_value(deposit_value) - >= spec_get_cur_microlibra_limit() && + Diem::spec_approx_xdx_for_value(deposit_value) + >= spec_get_cur_microdiem_limit() && payer != payee && spec_is_inter_vasp(payer, payee) } @@ -457,53 +457,53 @@ module DualAttestation { /////////////////////////////////////////////////////////////////////////// /// Travel rule limit set during genesis - public fun initialize(lr_account: &signer) { - LibraTimestamp::assert_genesis(); - CoreAddresses::assert_libra_root(lr_account); // operational constraint. - assert(!exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ELIMIT)); - let initial_limit = (INITIAL_DUAL_ATTESTATION_LIMIT as u128) * (Libra::scaling_factor() as u128); + public fun initialize(dr_account: &signer) { + DiemTimestamp::assert_genesis(); + CoreAddresses::assert_diem_root(dr_account); // operational constraint. + assert(!exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ELIMIT)); + let initial_limit = (INITIAL_DUAL_ATTESTATION_LIMIT as u128) * (Diem::scaling_factor() as u128); assert(initial_limit <= MAX_U64, Errors::limit_exceeded(ELIMIT)); move_to( - lr_account, + dr_account, Limit { - micro_lbr_limit: (initial_limit as u64) + micro_xdx_limit: (initial_limit as u64) } ) } spec fun initialize { - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; - let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Libra::spec_scaling_factor(); + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; + let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Diem::spec_scaling_factor(); aborts_if initial_limit > MAX_U64 with Errors::LIMIT_EXCEEDED; - include Libra::AbortsIfNoCurrency; // for scaling_factor. + include Diem::AbortsIfNoCurrency; // for scaling_factor. } - /// Return the current dual attestation limit in microlibra - public fun get_cur_microlibra_limit(): u64 acquires Limit { - assert(exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ELIMIT)); - borrow_global(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit + /// Return the current dual attestation limit in microdiem + public fun get_cur_microdiem_limit(): u64 acquires Limit { + assert(exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ELIMIT)); + borrow_global(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit } - spec fun get_cur_microlibra_limit { + spec fun get_cur_microdiem_limit { pragma opaque; aborts_if !spec_is_published() with Errors::NOT_PUBLISHED; - ensures result == spec_get_cur_microlibra_limit(); + ensures result == spec_get_cur_microdiem_limit(); } - /// Set the dual attestation limit to `micro_libra_limit`. + /// Set the dual attestation limit to `micro_diem_limit`. /// Aborts if `tc_account` does not have the TreasuryCompliance role - public fun set_microlibra_limit(tc_account: &signer, micro_lbr_limit: u64) acquires Limit { + public fun set_microdiem_limit(tc_account: &signer, micro_xdx_limit: u64) acquires Limit { Roles::assert_treasury_compliance(tc_account); - assert(exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ELIMIT)); - borrow_global_mut(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit = micro_lbr_limit; + assert(exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ELIMIT)); + borrow_global_mut(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit = micro_xdx_limit; } - spec fun set_microlibra_limit { + spec fun set_microdiem_limit { /// Must abort if the signer does not have the TreasuryCompliance role [[H6]][PERMISSION]. /// The permission UpdateDualAttestationLimit is granted to TreasuryCompliance. include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; aborts_if !spec_is_published() with Errors::NOT_PUBLISHED; - ensures global(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit == micro_lbr_limit; + ensures global(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit == micro_xdx_limit; } // **************************** SPECIFICATION ******************************** @@ -513,19 +513,19 @@ module DualAttestation { /// The Limit resource should be published after genesis spec module { - invariant [global] LibraTimestamp::is_operating() ==> spec_is_published(); + invariant [global] DiemTimestamp::is_operating() ==> spec_is_published(); } /// # Helper Functions spec module { /// Helper function to determine whether the Limit is published. define spec_is_published(): bool { - exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) + exists(CoreAddresses::DIEM_ROOT_ADDRESS()) } - /// Mirrors `Self::get_cur_microlibra_limit`. - define spec_get_cur_microlibra_limit(): u64 { - global(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit + /// Mirrors `Self::get_cur_microdiem_limit`. + define spec_get_cur_microdiem_limit(): u64 { + global(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit } } @@ -557,14 +557,14 @@ module DualAttestation { Roles::spec_has_designated_dealer_role_addr(addr1)); } - /// Only set_microlibra_limit can change the limit [[H6]][PERMISSION]. + /// Only set_microdiem_limit can change the limit [[H6]][PERMISSION]. spec schema DualAttestationLimitRemainsSame { /// The DualAttestation limit stays constant. ensures old(spec_is_published()) - ==> spec_get_cur_microlibra_limit() == old(spec_get_cur_microlibra_limit()); + ==> spec_get_cur_microdiem_limit() == old(spec_get_cur_microdiem_limit()); } spec module { - apply DualAttestationLimitRemainsSame to * except set_microlibra_limit; + apply DualAttestationLimitRemainsSame to * except set_microdiem_limit; } /// Only rotate_compliance_public_key can rotate the compliance public key [[H16]][PERMISSION]. diff --git a/language/stdlib/modules/Errors.move b/language/stdlib/modules/Errors.move index 7eac4004f1..d44d335cca 100644 --- a/language/stdlib/modules/Errors.move +++ b/language/stdlib/modules/Errors.move @@ -5,7 +5,7 @@ address 0x1 { /// A `u64` error code is constructed from two values: /// /// 1. The *error category* which is encoded in the lower 8 bits of the code. Error categories are -/// declared in this module and are globally unique across the Libra framework. There is a limited +/// declared in this module and are globally unique across the Diem framework. There is a limited /// fixed set of predefined categories, and the framework is guaranteed to use those consistently. /// /// 2. The *error reason* which is encoded in the remaining 56 bits of the code. The reason is a unique diff --git a/language/stdlib/modules/Genesis.move b/language/stdlib/modules/Genesis.move index 9529fec035..676dc3f807 100644 --- a/language/stdlib/modules/Genesis.move +++ b/language/stdlib/modules/Genesis.move @@ -1,6 +1,6 @@ address 0x1 { -/// The `Genesis` module defines the Move initialization entry point of the Libra framework +/// The `Genesis` module defines the Move initialization entry point of the Diem framework /// when executing from a fresh state. /// /// > TODO: Currently there are a few additional functions called from Rust during genesis. @@ -8,25 +8,25 @@ address 0x1 { module Genesis { use 0x1::AccountFreezing; use 0x1::ChainId; - use 0x1::Coin1; + use 0x1::XUS; use 0x1::DualAttestation; - use 0x1::LBR; - use 0x1::Libra; - use 0x1::LibraAccount; - use 0x1::LibraBlock; - use 0x1::LibraConfig; - use 0x1::LibraSystem; - use 0x1::LibraTimestamp; - use 0x1::LibraTransactionPublishingOption; - use 0x1::LibraVersion; + use 0x1::XDX; + use 0x1::Diem; + use 0x1::DiemAccount; + use 0x1::DiemBlock; + use 0x1::DiemConfig; + use 0x1::DiemSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemTransactionPublishingOption; + use 0x1::DiemVersion; use 0x1::TransactionFee; - use 0x1::LibraVMConfig; + use 0x1::DiemVMConfig; - /// Initializes the Libra framework. + /// Initializes the Diem framework. fun initialize( - lr_account: &signer, + dr_account: &signer, tc_account: &signer, - lr_auth_key: vector, + dr_auth_key: vector, tc_auth_key: vector, initial_script_allow_list: vector>, is_open_module: bool, @@ -35,63 +35,63 @@ module Genesis { chain_id: u8, ) { - LibraAccount::initialize(lr_account, x"00000000000000000000000000000000"); + DiemAccount::initialize(dr_account, x"00000000000000000000000000000000"); - ChainId::initialize(lr_account, chain_id); + ChainId::initialize(dr_account, chain_id); // On-chain config setup - LibraConfig::initialize(lr_account); + DiemConfig::initialize(dr_account); // Currency setup - Libra::initialize(lr_account); + Diem::initialize(dr_account); // Currency setup - Coin1::initialize(lr_account, tc_account); + XUS::initialize(dr_account, tc_account); - LBR::initialize( - lr_account, + XDX::initialize( + dr_account, tc_account, ); - AccountFreezing::initialize(lr_account); + AccountFreezing::initialize(dr_account); TransactionFee::initialize(tc_account); - LibraSystem::initialize_validator_set( - lr_account, + DiemSystem::initialize_validator_set( + dr_account, ); - LibraVersion::initialize( - lr_account, + DiemVersion::initialize( + dr_account, ); DualAttestation::initialize( - lr_account, + dr_account, ); - LibraBlock::initialize_block_metadata(lr_account); + DiemBlock::initialize_block_metadata(dr_account); - let lr_rotate_key_cap = LibraAccount::extract_key_rotation_capability(lr_account); - LibraAccount::rotate_authentication_key(&lr_rotate_key_cap, lr_auth_key); - LibraAccount::restore_key_rotation_capability(lr_rotate_key_cap); + let dr_rotate_key_cap = DiemAccount::extract_key_rotation_capability(dr_account); + DiemAccount::rotate_authentication_key(&dr_rotate_key_cap, dr_auth_key); + DiemAccount::restore_key_rotation_capability(dr_rotate_key_cap); - LibraTransactionPublishingOption::initialize( - lr_account, + DiemTransactionPublishingOption::initialize( + dr_account, initial_script_allow_list, is_open_module, ); - LibraVMConfig::initialize( - lr_account, + DiemVMConfig::initialize( + dr_account, instruction_schedule, native_schedule, ); - let tc_rotate_key_cap = LibraAccount::extract_key_rotation_capability(tc_account); - LibraAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key); - LibraAccount::restore_key_rotation_capability(tc_rotate_key_cap); + let tc_rotate_key_cap = DiemAccount::extract_key_rotation_capability(tc_account); + DiemAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key); + DiemAccount::restore_key_rotation_capability(tc_rotate_key_cap); // After we have called this function, all invariants which are guarded by - // `LibraTimestamp::is_operating() ==> ...` will become active and a verification condition. + // `DiemTimestamp::is_operating() ==> ...` will become active and a verification condition. // See also discussion at function specification. - LibraTimestamp::set_time_has_started(lr_account); + DiemTimestamp::set_time_has_started(dr_account); } /// For verification of genesis, the goal is to prove that all the invariants which @@ -105,7 +105,7 @@ module Genesis { /// > each module. spec fun initialize { /// Assume that this is called in genesis state (no timestamp). - requires LibraTimestamp::is_genesis(); + requires DiemTimestamp::is_genesis(); } } diff --git a/language/stdlib/modules/LBR.move b/language/stdlib/modules/LBR.move deleted file mode 100644 index 4c9cfeb71d..0000000000 --- a/language/stdlib/modules/LBR.move +++ /dev/null @@ -1,158 +0,0 @@ -address 0x1 { -/// NB: This module is a stub of the `LBR` at the moment. -/// -/// Once the component makeup of the LBR has been chosen the -/// `Reserve` will be updated to hold the backing coins in the correct ratios. - -module LBR { - use 0x1::AccountLimits; - use 0x1::CoreAddresses; - use 0x1::Errors; - use 0x1::FixedPoint32; - use 0x1::Libra; - use 0x1::LibraTimestamp; - - /// The type tag representing the `LBR` currency on-chain. - resource struct LBR { } - - /// Note: Currently only holds the mint, burn, and preburn capabilities for - /// LBR. Once the makeup of the LBR has been determined this resource will - /// be updated to hold the backing LBR reserve compnents on-chain. - /// - /// The on-chain reserve for the `LBR` holds both the capability for minting `LBR` - /// coins, and also each reserve component that holds the backing for these coins on-chain. - /// Currently this holds no coins since LBR is not able to be minted/created. - resource struct Reserve { - /// The mint capability allowing minting of `LBR` coins. - mint_cap: Libra::MintCapability, - /// The burn capability for `LBR` coins. This is used for the unpacking - /// of `LBR` coins into the underlying backing currencies. - burn_cap: Libra::BurnCapability, - /// The preburn for `LBR`. This is an administrative field since we - /// need to alway preburn before we burn. - preburn_cap: Libra::Preburn, - // TODO: Once the reserve has been determined this resource will - // contain a ReserveComponent for every currency that makes - // up the reserve. - } - - /// The `Reserve` resource is in an invalid state - const ERESERVE: u64 = 0; - - /// Initializes the `LBR` module. This sets up the initial `LBR` ratios and - /// reserve components, and creates the mint, preburn, and burn - /// capabilities for `LBR` coins. The `LBR` currency must not already be - /// registered in order for this to succeed. The sender must both be the - /// correct address (`CoreAddresses::CURRENCY_INFO_ADDRESS`) and have the - /// correct permissions (`&Capability`). Both of these - /// restrictions are enforced in the `Libra::register_currency` function, but also enforced here. - public fun initialize( - lr_account: &signer, - tc_account: &signer, - ) { - LibraTimestamp::assert_genesis(); - // Operational constraint - CoreAddresses::assert_currency_info(lr_account); - // Reserve must not exist. - assert(!exists(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ERESERVE)); - let (mint_cap, burn_cap) = Libra::register_currency( - lr_account, - FixedPoint32::create_from_rational(1, 1), // exchange rate to LBR - true, // is_synthetic - 1000000, // scaling_factor = 10^6 - 1000, // fractional_part = 10^3 - b"LBR" - ); - // LBR cannot be minted. - Libra::update_minting_ability(tc_account, false); - AccountLimits::publish_unrestricted_limits(lr_account); - let preburn_cap = Libra::create_preburn(tc_account); - move_to(lr_account, Reserve { mint_cap, burn_cap, preburn_cap }); - } - spec fun initialize { - use 0x1::Roles; - include CoreAddresses::AbortsIfNotCurrencyInfo{account: lr_account}; - aborts_if exists(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; - include Libra::RegisterCurrencyAbortsIf{ - currency_code: b"LBR", - scaling_factor: 1000000 - }; - include AccountLimits::PublishUnrestrictedLimitsAbortsIf{publish_account: lr_account}; - - include Libra::RegisterCurrencyEnsures; - include Libra::UpdateMintingAbilityEnsures{can_mint: false}; - include AccountLimits::PublishUnrestrictedLimitsEnsures{publish_account: lr_account}; - ensures exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); - - /// Registering LBR can only be done in genesis. - include LibraTimestamp::AbortsIfNotGenesis; - /// Only the LibraRoot account can register a new currency [[H8]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - /// Only the TreasuryCompliance role can update the `can_mint` field of CurrencyInfo [[H2]][PERMISSION]. - /// Moreover, only the TreasuryCompliance role can create Preburn. - include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; - } - - /// Returns true if `CoinType` is `LBR::LBR` - public fun is_lbr(): bool { - Libra::is_currency() && - Libra::currency_code() == Libra::currency_code() - } - - spec fun is_lbr { - pragma opaque, verify = false; - include Libra::spec_is_currency() ==> Libra::AbortsIfNoCurrency; - /// The following is correct because currency codes are unique; however, we - /// can currently not prove it, therefore verify is false. - ensures result == Libra::spec_is_currency() && spec_is_lbr(); - } - - /// Return the account address where the globally unique LBR::Reserve resource is stored - public fun reserve_address(): address { - CoreAddresses::CURRENCY_INFO_ADDRESS() - } - - // ================================================================= - // Module Specification - - spec module {} // switch documentation context back to module level - - /// # Persistence of Resources - - spec module { - /// After genesis, the Reserve resource exists. - invariant [global] LibraTimestamp::is_operating() ==> reserve_exists(); - - /// After genesis, LBR is registered. - invariant [global] LibraTimestamp::is_operating() ==> Libra::is_currency(); - } - - /// # Helper Functions - spec module { - /// Checks whether the Reserve resource exists. - define reserve_exists(): bool { - exists(CoreAddresses::CURRENCY_INFO_ADDRESS()) - } - - /// Returns true if CoinType is LBR. - define spec_is_lbr(): bool { - type() == type() - } - - /// After genesis, `LimitsDefinition` is published at Libra root. It's published by - /// AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because - /// it does not hold for all types (but does hold for LBR). - invariant [global] LibraTimestamp::is_operating() - ==> exists>(CoreAddresses::LIBRA_ROOT_ADDRESS()); - - /// `LimitsDefinition` is not published at any other address - invariant [global] forall addr: address where exists>(addr): - addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); - - /// `Reserve` is persistent - invariant update [global] old(exists(reserve_address())) - ==> exists(reserve_address()); - } - -} -} diff --git a/language/stdlib/modules/LCS.move b/language/stdlib/modules/LCS.move index b14a463e35..33a9034ff6 100644 --- a/language/stdlib/modules/LCS.move +++ b/language/stdlib/modules/LCS.move @@ -1,10 +1,10 @@ address 0x1 { -/// Utility for converting a Move value to its binary representation in LCS (Libra Canonical +/// Utility for converting a Move value to its binary representation in LCS (Diem Canonical /// Serialization). LCS is the binary encoding for Move resources and other non-module values /// published on-chain. See https://github.com/libra/libra/tree/master/common/lcs for more /// details on LCS. module LCS { - /// Return the binary representation of `v` in LCS (Libra Canonical Serialization) format + /// Return the binary representation of `v` in LCS (Diem Canonical Serialization) format native public fun to_bytes(v: &MoveValue): vector; // ============================== diff --git a/language/stdlib/modules/LibraTransactionPublishingOption.move b/language/stdlib/modules/LibraTransactionPublishingOption.move deleted file mode 100644 index 1f3f1c9d48..0000000000 --- a/language/stdlib/modules/LibraTransactionPublishingOption.move +++ /dev/null @@ -1,178 +0,0 @@ -address 0x1 { - -/// This module defines a struct storing the publishing policies for the VM. -module LibraTransactionPublishingOption { - use 0x1::Vector; - use 0x1::LibraConfig::{Self, LibraConfig}; - use 0x1::LibraTimestamp; - use 0x1::Errors; - use 0x1::CoreAddresses; - use 0x1::Roles; - - const SCRIPT_HASH_LENGTH: u64 = 32; - - /// The script hash has an invalid length - const EINVALID_SCRIPT_HASH: u64 = 0; - /// The script hash already exists in the allowlist - const EALLOWLIST_ALREADY_CONTAINS_SCRIPT: u64 = 1; - - /// Defines and holds the publishing policies for the VM. There are three possible configurations: - /// 1. No module publishing, only allow-listed scripts are allowed. - /// 2. No module publishing, custom scripts are allowed. - /// 3. Both module publishing and custom scripts are allowed. - /// We represent these as the following resource. - struct LibraTransactionPublishingOption { - /// Only script hashes in the following list can be executed by the network. If the vector is empty, no - /// limitation would be enforced. - script_allow_list: vector>, - /// Anyone can publish new module if this flag is set to true. - module_publishing_allowed: bool, - } - - public fun initialize( - lr_account: &signer, - script_allow_list: vector>, - module_publishing_allowed: bool, - ) { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); - - LibraConfig::publish_new_config( - lr_account, - LibraTransactionPublishingOption { - script_allow_list, module_publishing_allowed - } - ); - } - spec fun initialize { - /// Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - include LibraTimestamp::AbortsIfNotGenesis; - include LibraConfig::PublishNewConfigAbortsIf; - include LibraConfig::PublishNewConfigEnsures { - payload: LibraTransactionPublishingOption { - script_allow_list, module_publishing_allowed - }}; - } - - /// Check if sender can execute script with `hash` - public fun is_script_allowed(account: &signer, hash: &vector): bool { - let publish_option = LibraConfig::get(); - - Vector::is_empty(&publish_option.script_allow_list) - || Vector::contains(&publish_option.script_allow_list, hash) - || Roles::has_libra_root_role(account) - } - spec fun is_script_allowed { - include AbortsIfNoTransactionPublishingOption; - } - spec schema AbortsIfNoTransactionPublishingOption { - include LibraTimestamp::is_genesis() ==> LibraConfig::AbortsIfNotPublished{}; - } - - /// Check if a sender can publish a module - public fun is_module_allowed(account: &signer): bool { - let publish_option = LibraConfig::get(); - - publish_option.module_publishing_allowed || Roles::has_libra_root_role(account) - } - spec fun is_module_allowed{ - include AbortsIfNoTransactionPublishingOption; - } - - /// Add `new_hash` to the list of script hashes that is allowed to be executed by the network. - public fun add_to_script_allow_list(lr_account: &signer, new_hash: vector) { - Roles::assert_libra_root(lr_account); - - assert(Vector::length(&new_hash) == SCRIPT_HASH_LENGTH, Errors::invalid_argument(EINVALID_SCRIPT_HASH)); - - let publish_option = LibraConfig::get(); - if (Vector::contains(&publish_option.script_allow_list, &new_hash)) { - abort Errors::invalid_argument(EALLOWLIST_ALREADY_CONTAINS_SCRIPT) - }; - Vector::push_back(&mut publish_option.script_allow_list, new_hash); - - LibraConfig::set(lr_account, publish_option); - } - spec fun add_to_script_allow_list { - /// Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - let allow_list = LibraConfig::get().script_allow_list; - aborts_if Vector::length(new_hash) != SCRIPT_HASH_LENGTH with Errors::INVALID_ARGUMENT; - aborts_if Vector::spec_contains(allow_list, new_hash) with Errors::INVALID_ARGUMENT; - include LibraConfig::AbortsIfNotPublished; - include LibraConfig::SetAbortsIf{account: lr_account}; - } - - /// Allow the execution of arbitrary script or not. - public fun set_open_script(lr_account: &signer) { - Roles::assert_libra_root(lr_account); - let publish_option = LibraConfig::get(); - - publish_option.script_allow_list = Vector::empty(); - LibraConfig::set(lr_account, publish_option); - } - spec fun set_open_script { - /// Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - include LibraConfig::AbortsIfNotPublished; - include LibraConfig::SetAbortsIf{account: lr_account}; - } - - /// Allow module publishing from arbitrary sender or not. - public fun set_open_module(lr_account: &signer, open_module: bool) { - Roles::assert_libra_root(lr_account); - - let publish_option = LibraConfig::get(); - - publish_option.module_publishing_allowed = open_module; - LibraConfig::set(lr_account, publish_option); - } - spec fun set_open_module { - /// Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - include LibraConfig::AbortsIfNotPublished; - include LibraConfig::SetAbortsIf{account: lr_account}; - } - - spec module { } // Switch documentation context to module level. - - /// # Initialization - spec module { - invariant [global] LibraTimestamp::is_operating() ==> - LibraConfig::spec_is_published(); - } - - /// # Access Control - - /// Only `add_to_script_allow_list`, `set_open_script`, and `set_open_module` can modify the - /// LibraTransactionPublishingOption config [[H11]][PERMISSION] - spec schema LibraVersionRemainsSame { - ensures old(LibraConfig::spec_is_published()) ==> - global>(CoreAddresses::LIBRA_ROOT_ADDRESS()) == - old(global>(CoreAddresses::LIBRA_ROOT_ADDRESS())); - } - spec module { - apply LibraVersionRemainsSame to * except add_to_script_allow_list, set_open_script, set_open_module; - } - - /// # Helper Functions - spec module { - define spec_is_script_allowed(account: signer, hash: vector): bool { - let publish_option = LibraConfig::spec_get_config(); - Vector::is_empty(publish_option.script_allow_list) - || Vector::spec_contains(publish_option.script_allow_list, hash) - || Roles::has_libra_root_role(account) - } - - define spec_is_module_allowed(account: signer): bool { - let publish_option = LibraConfig::spec_get_config(); - publish_option.module_publishing_allowed || Roles::has_libra_root_role(account) - } - } -} -} diff --git a/language/stdlib/modules/LibraVersion.move b/language/stdlib/modules/LibraVersion.move deleted file mode 100644 index f1324c1f07..0000000000 --- a/language/stdlib/modules/LibraVersion.move +++ /dev/null @@ -1,105 +0,0 @@ -address 0x1 { - - -/// Maintains the version number for the Libra blockchain. The version is stored in a -/// LibraConfig, and may be updated by Libra root. -module LibraVersion { - use 0x1::CoreAddresses; - use 0x1::Errors; - use 0x1::LibraConfig::{Self, LibraConfig}; - use 0x1::LibraTimestamp; - use 0x1::Roles; - - struct LibraVersion { - major: u64, - } - - /// Tried to set an invalid major version for the VM. Major versions must be strictly increasing - const EINVALID_MAJOR_VERSION_NUMBER: u64 = 0; - - /// Publishes the LibraVersion config. Must be called during Genesis. - public fun initialize( - lr_account: &signer, - ) { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); - LibraConfig::publish_new_config( - lr_account, - LibraVersion { major: 1 }, - ); - } - spec fun initialize { - /// Must abort if the signer does not have the LibraRoot role [[H10]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - include LibraTimestamp::AbortsIfNotGenesis; - include LibraConfig::PublishNewConfigAbortsIf; - include LibraConfig::PublishNewConfigEnsures{payload: LibraVersion { major: 1 }}; - } - - /// Allows Libra root to update the major version to a larger version. - public fun set(lr_account: &signer, major: u64) { - LibraTimestamp::assert_operating(); - - Roles::assert_libra_root(lr_account); - - let old_config = LibraConfig::get(); - - assert( - old_config.major < major, - Errors::invalid_argument(EINVALID_MAJOR_VERSION_NUMBER) - ); - - LibraConfig::set( - lr_account, - LibraVersion { major } - ); - } - spec fun set { - /// Must abort if the signer does not have the LibraRoot role [[H10]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - - include LibraTimestamp::AbortsIfNotOperating; - aborts_if LibraConfig::get().major >= major with Errors::INVALID_ARGUMENT; - include LibraConfig::SetAbortsIf{account: lr_account}; - include LibraConfig::SetEnsures{payload: LibraVersion { major }}; - } - - // ================================================================= - // Module Specification - - spec module {} // Switch to module documentation context - - /// # Initialization - spec module { - /// After genesis, version is published. - invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published(); - } - - /// # Access Control - - /// Only "set" can modify the LibraVersion config [[H10]][PERMISSION] - spec schema LibraVersionRemainsSame { - ensures old(LibraConfig::spec_is_published()) ==> - global>(CoreAddresses::LIBRA_ROOT_ADDRESS()) == - old(global>(CoreAddresses::LIBRA_ROOT_ADDRESS())); - } - spec module { - apply LibraVersionRemainsSame to * except set; - } - - spec module { - /// The permission "UpdateLibraProtocolVersion" is granted to LibraRoot [[H10]][PERMISSION]. - invariant [global, isolated] forall addr: address where exists>(addr): - addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); - } - - /// # Other Invariants - spec module { - /// Version number never decreases - invariant update [global, isolated] - old(LibraConfig::get().major) <= LibraConfig::get().major; - } - -} -} diff --git a/language/stdlib/modules/RecoveryAddress.move b/language/stdlib/modules/RecoveryAddress.move index be4c6dcedd..9ce0936889 100644 --- a/language/stdlib/modules/RecoveryAddress.move +++ b/language/stdlib/modules/RecoveryAddress.move @@ -3,7 +3,7 @@ address 0x1 { /// This module defines an account recovery mechanism that can be used by VASPs. module RecoveryAddress { use 0x1::Errors; - use 0x1::LibraAccount::{Self, KeyRotationCapability}; + use 0x1::DiemAccount::{Self, KeyRotationCapability}; use 0x1::Signer; use 0x1::VASP; use 0x1::Vector; @@ -47,7 +47,7 @@ module RecoveryAddress { // B and B is the recovery account for A // (2) rotation_caps is always nonempty assert( - *LibraAccount::key_rotation_capability_address(&rotation_cap) == addr, + *DiemAccount::key_rotation_capability_address(&rotation_cap) == addr, Errors::invalid_argument(EKEY_ROTATION_DEPENDENCY_CYCLE) ); assert(!exists(addr), Errors::already_published(ERECOVERY_ADDRESS)); @@ -66,7 +66,7 @@ module RecoveryAddress { let addr = Signer::spec_address_of(recovery_account); aborts_if !VASP::is_vasp(addr) with Errors::INVALID_ARGUMENT; aborts_if spec_is_recovery_address(addr) with Errors::ALREADY_PUBLISHED; - aborts_if LibraAccount::key_rotation_capability_address(rotation_cap) != addr + aborts_if DiemAccount::key_rotation_capability_address(rotation_cap) != addr with Errors::INVALID_ARGUMENT; } spec schema PublishEnsures { @@ -110,8 +110,8 @@ module RecoveryAddress { }) { let cap = Vector::borrow(caps, i); - if (LibraAccount::key_rotation_capability_address(cap) == &to_recover) { - LibraAccount::rotate_authentication_key(cap, new_key); + if (DiemAccount::key_rotation_capability_address(cap) == &to_recover) { + DiemAccount::rotate_authentication_key(cap, new_key); return }; i = i + 1 @@ -133,7 +133,7 @@ module RecoveryAddress { to_recover: address; new_key: vector; aborts_if !spec_is_recovery_address(recovery_address) with Errors::NOT_PUBLISHED; - aborts_if !LibraAccount::exists_at(to_recover) with Errors::NOT_PUBLISHED; + aborts_if !DiemAccount::exists_at(to_recover) with Errors::NOT_PUBLISHED; aborts_if len(new_key) != 32 with Errors::INVALID_ARGUMENT; aborts_if !spec_holds_key_rotation_cap_for(recovery_address, to_recover) with Errors::INVALID_ARGUMENT; aborts_if !(Signer::spec_address_of(account) == recovery_address @@ -142,7 +142,7 @@ module RecoveryAddress { spec schema RotateAuthenticationKeyEnsures { to_recover: address; new_key: vector; - ensures LibraAccount::authentication_key(to_recover) == new_key; + ensures DiemAccount::authentication_key(to_recover) == new_key; } /// Add `to_recover` to the `RecoveryAddress` resource under `recovery_address`. @@ -153,7 +153,7 @@ module RecoveryAddress { // Check that `recovery_address` has a `RecoveryAddress` resource assert(exists(recovery_address), Errors::not_published(ERECOVERY_ADDRESS)); // Only accept the rotation capability if both accounts belong to the same VASP - let to_recover_address = *LibraAccount::key_rotation_capability_address(&to_recover); + let to_recover_address = *DiemAccount::key_rotation_capability_address(&to_recover); assert( VASP::is_same_vasp(recovery_address, to_recover_address), Errors::invalid_argument(EINVALID_KEY_ROTATION_DELEGATION) @@ -172,7 +172,7 @@ module RecoveryAddress { to_recover: KeyRotationCapability; recovery_address: address; aborts_if !spec_is_recovery_address(recovery_address) with Errors::NOT_PUBLISHED; - let to_recover_address = LibraAccount::key_rotation_capability_address(to_recover); + let to_recover_address = DiemAccount::key_rotation_capability_address(to_recover); aborts_if !VASP::spec_is_same_vasp(recovery_address, to_recover_address) with Errors::INVALID_ARGUMENT; } spec schema AddRotationCapabilityEnsures { @@ -241,7 +241,7 @@ module RecoveryAddress { /// Returns all the `KeyRotationCapability`s held at `recovery_address`. define spec_get_rotation_caps(recovery_address: address): - vector + vector { global(recovery_address).rotation_caps } diff --git a/language/stdlib/modules/RegisteredCurrencies.move b/language/stdlib/modules/RegisteredCurrencies.move index 4de6138510..2c2be48e66 100644 --- a/language/stdlib/modules/RegisteredCurrencies.move +++ b/language/stdlib/modules/RegisteredCurrencies.move @@ -1,15 +1,15 @@ address 0x1 { -/// Module for registering currencies in Libra. Basically, this means adding a -/// string (vector) for the currency name to vector of names in LibraConfig. +/// Module for registering currencies in Diem. Basically, this means adding a +/// string (vector) for the currency name to vector of names in DiemConfig. module RegisteredCurrencies { use 0x1::Errors; - use 0x1::LibraConfig; - use 0x1::LibraTimestamp; + use 0x1::DiemConfig; + use 0x1::DiemTimestamp; use 0x1::Roles; use 0x1::Vector; - /// A LibraConfig config holding all of the currency codes for registered + /// A DiemConfig config holding all of the currency codes for registered /// currencies. The inner vector's are string representations of /// currency names. struct RegisteredCurrencies { @@ -20,12 +20,12 @@ module RegisteredCurrencies { const ECURRENCY_CODE_ALREADY_TAKEN: u64 = 0; /// Initializes this module. Can only be called from genesis, with - /// a Libra root signer. - public fun initialize(lr_account: &signer) { - LibraTimestamp::assert_genesis(); - Roles::assert_libra_root(lr_account); - LibraConfig::publish_new_config( - lr_account, + /// a Diem root signer. + public fun initialize(dr_account: &signer) { + DiemTimestamp::assert_genesis(); + Roles::assert_diem_root(dr_account); + DiemConfig::publish_new_config( + dr_account, RegisteredCurrencies { currency_codes: Vector::empty() } ); } @@ -35,13 +35,13 @@ module RegisteredCurrencies { } spec schema InitializeAbortsIf { - lr_account: signer; - include LibraTimestamp::AbortsIfNotGenesis; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; - include LibraConfig::PublishNewConfigAbortsIf; + dr_account: signer; + include DiemTimestamp::AbortsIfNotGenesis; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + include DiemConfig::PublishNewConfigAbortsIf; } spec schema InitializeEnsures { - include LibraConfig::PublishNewConfigEnsures{ + include DiemConfig::PublishNewConfigEnsures{ payload: RegisteredCurrencies { currency_codes: Vector::empty() } }; ensures len(get_currency_codes()) == 0; @@ -49,28 +49,28 @@ module RegisteredCurrencies { /// Adds a new currency code. The currency code must not yet exist. public fun add_currency_code( - lr_account: &signer, + dr_account: &signer, currency_code: vector, ) { - let config = LibraConfig::get(); + let config = DiemConfig::get(); assert( !Vector::contains(&config.currency_codes, ¤cy_code), Errors::invalid_argument(ECURRENCY_CODE_ALREADY_TAKEN) ); Vector::push_back(&mut config.currency_codes, currency_code); - LibraConfig::set(lr_account, config); + DiemConfig::set(dr_account, config); } spec fun add_currency_code { include AddCurrencyCodeAbortsIf; include AddCurrencyCodeEnsures; } spec schema AddCurrencyCodeAbortsIf { - lr_account: &signer; + dr_account: &signer; currency_code: vector; - include LibraConfig::SetAbortsIf{ account: lr_account }; + include DiemConfig::SetAbortsIf{ account: dr_account }; /// The same currency code can be only added once. aborts_if Vector::spec_contains( - LibraConfig::get().currency_codes, + DiemConfig::get().currency_codes, currency_code ) with Errors::INVALID_ARGUMENT; } @@ -78,7 +78,7 @@ module RegisteredCurrencies { currency_code: vector; // The resulting currency_codes is the one before this function is called, with the new one added to the end. ensures Vector::eq_push_back(get_currency_codes(), old(get_currency_codes()), currency_code); - include LibraConfig::SetEnsures {payload: LibraConfig::get()}; + include DiemConfig::SetEnsures {payload: DiemConfig::get()}; } // ================================================================= @@ -90,7 +90,7 @@ module RegisteredCurrencies { spec module { /// Global invariant that currency config is always available after genesis. - invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published(); + invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published(); } /// # Helper Functions @@ -98,7 +98,7 @@ module RegisteredCurrencies { spec module { /// Helper to get the currency code vector. define get_currency_codes(): vector> { - LibraConfig::get().currency_codes + DiemConfig::get().currency_codes } } } diff --git a/language/stdlib/modules/Roles.move b/language/stdlib/modules/Roles.move index 8d30299b40..37c8668c02 100644 --- a/language/stdlib/modules/Roles.move +++ b/language/stdlib/modules/Roles.move @@ -1,9 +1,9 @@ address 0x1 { -/// This module defines role-based access control for the Libra framework. +/// This module defines role-based access control for the Diem framework. /// /// Roles are associated with accounts and govern what operations are permitted by those accounts. A role -/// is typically asserted on function entry using a statement like `Self::assert_libra_root(account)`. This +/// is typically asserted on function entry using a statement like `Self::assert_diem_root(account)`. This /// module provides multiple assertion functions like this one, as well as the functions to setup roles. /// /// For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL]. @@ -11,12 +11,12 @@ module Roles { use 0x1::Signer; use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; /// A `RoleId` resource was in an unexpected state const EROLE_ID: u64 = 0; - /// The signer didn't have the required Libra Root role - const ELIBRA_ROOT: u64 = 1; + /// The signer didn't have the required Diem Root role + const EDIEM_ROOT: u64 = 1; /// The signer didn't have the required Treasury & Compliance role const ETREASURY_COMPLIANCE: u64 = 2; /// The signer didn't have the required Parent VASP role @@ -38,7 +38,7 @@ module Roles { // Role ID constants /////////////////////////////////////////////////////////////////////////// - const LIBRA_ROOT_ROLE_ID: u64 = 0; + const DIEM_ROOT_ROLE_ID: u64 = 0; const TREASURY_COMPLIANCE_ROLE_ID: u64 = 1; const DESIGNATED_DEALER_ROLE_ID: u64 = 2; const VALIDATOR_ROLE_ID: u64 = 3; @@ -55,38 +55,38 @@ module Roles { // ============= // Role Granting - /// Publishes libra root role. Granted only in genesis. - public fun grant_libra_root_role( - lr_account: &signer, + /// Publishes diem root role. Granted only in genesis. + public fun grant_diem_root_role( + dr_account: &signer, ) { - LibraTimestamp::assert_genesis(); - // Checks actual Libra root because Libra root role is not set + DiemTimestamp::assert_genesis(); + // Checks actual Diem root because Diem root role is not set // until next line of code. - CoreAddresses::assert_libra_root(lr_account); - // Grant the role to the libra root account - grant_role(lr_account, LIBRA_ROOT_ROLE_ID); + CoreAddresses::assert_diem_root(dr_account); + // Grant the role to the diem root account + grant_role(dr_account, DIEM_ROOT_ROLE_ID); } - spec fun grant_libra_root_role { - include LibraTimestamp::AbortsIfNotGenesis; - include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account}; - include GrantRole{addr: Signer::address_of(lr_account), role_id: LIBRA_ROOT_ROLE_ID}; + spec fun grant_diem_root_role { + include DiemTimestamp::AbortsIfNotGenesis; + include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account}; + include GrantRole{addr: Signer::address_of(dr_account), role_id: DIEM_ROOT_ROLE_ID}; } /// Publishes treasury compliance role. Granted only in genesis. public fun grant_treasury_compliance_role( treasury_compliance_account: &signer, - lr_account: &signer, + dr_account: &signer, ) acquires RoleId { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); CoreAddresses::assert_treasury_compliance(treasury_compliance_account); - assert_libra_root(lr_account); + assert_diem_root(dr_account); // Grant the TC role to the treasury_compliance_account grant_role(treasury_compliance_account, TREASURY_COMPLIANCE_ROLE_ID); } spec fun grant_treasury_compliance_role { - include LibraTimestamp::AbortsIfNotGenesis; + include DiemTimestamp::AbortsIfNotGenesis; include CoreAddresses::AbortsIfNotTreasuryCompliance{account: treasury_compliance_account}; - include AbortsIfNotLibraRoot{account: lr_account}; + include AbortsIfNotDiemRoot{account: dr_account}; include GrantRole{addr: Signer::address_of(treasury_compliance_account), role_id: TREASURY_COMPLIANCE_ROLE_ID}; } @@ -105,30 +105,30 @@ module Roles { } /// Publish a Validator `RoleId` under `new_account`. - /// The `creating_account` must be libra root. + /// The `creating_account` must be diem root. public fun new_validator_role( creating_account: &signer, new_account: &signer ) acquires RoleId { - assert_libra_root(creating_account); + assert_diem_root(creating_account); grant_role(new_account, VALIDATOR_ROLE_ID); } spec fun new_validator_role { - include AbortsIfNotLibraRoot{account: creating_account}; + include AbortsIfNotDiemRoot{account: creating_account}; include GrantRole{addr: Signer::address_of(new_account), role_id: VALIDATOR_ROLE_ID}; } /// Publish a ValidatorOperator `RoleId` under `new_account`. - /// The `creating_account` must be LibraRoot + /// The `creating_account` must be DiemRoot public fun new_validator_operator_role( creating_account: &signer, new_account: &signer, ) acquires RoleId { - assert_libra_root(creating_account); + assert_diem_root(creating_account); grant_role(new_account, VALIDATOR_OPERATOR_ROLE_ID); } spec fun new_validator_operator_role { - include AbortsIfNotLibraRoot{account: creating_account}; + include AbortsIfNotDiemRoot{account: creating_account}; include GrantRole{addr: Signer::address_of(new_account), role_id: VALIDATOR_OPERATOR_ROLE_ID}; } @@ -170,7 +170,7 @@ module Roles { include GrantRole{addr: Signer::address_of(account)}; let addr = Signer::spec_address_of(account); // Requires to satisfy global invariants. - requires role_id == LIBRA_ROOT_ROLE_ID ==> addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); + requires role_id == DIEM_ROOT_ROLE_ID ==> addr == CoreAddresses::DIEM_ROOT_ADDRESS(); requires role_id == TREASURY_COMPLIANCE_ROLE_ID ==> addr == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); } spec schema GrantRole { @@ -191,8 +191,8 @@ module Roles { && borrow_global(addr).role_id == role_id } - public fun has_libra_root_role(account: &signer): bool acquires RoleId { - has_role(account, LIBRA_ROOT_ROLE_ID) + public fun has_diem_root_role(account: &signer): bool acquires RoleId { + has_role(account, DIEM_ROOT_ROLE_ID) } public fun has_treasury_compliance_role(account: &signer): bool acquires RoleId { @@ -224,11 +224,11 @@ module Roles { borrow_global(a).role_id } - /// Return true if `addr` is allowed to receive and send `Libra` for any T + /// Return true if `addr` is allowed to receive and send `Diem` for any T public fun can_hold_balance(account: &signer): bool acquires RoleId { // VASP accounts and designated_dealers can hold balances. // Administrative accounts (`Validator`, `ValidatorOperator`, `TreasuryCompliance`, and - // `LibraRoot`) cannot. + // `DiemRoot`) cannot. has_parent_VASP_role(account) || has_child_VASP_role(account) || has_designated_dealer_role(account) @@ -237,17 +237,17 @@ module Roles { // =============== // Role Assertions - /// Assert that the account is libra root. - public fun assert_libra_root(account: &signer) acquires RoleId { - CoreAddresses::assert_libra_root(account); + /// Assert that the account is diem root. + public fun assert_diem_root(account: &signer) acquires RoleId { + CoreAddresses::assert_diem_root(account); let addr = Signer::address_of(account); assert(exists(addr), Errors::not_published(EROLE_ID)); - assert(borrow_global(addr).role_id == LIBRA_ROOT_ROLE_ID, Errors::requires_role(ELIBRA_ROOT)); + assert(borrow_global(addr).role_id == DIEM_ROOT_ROLE_ID, Errors::requires_role(EDIEM_ROOT)); } - spec fun assert_libra_root { + spec fun assert_diem_root { pragma opaque; - include CoreAddresses::AbortsIfNotLibraRoot; - include AbortsIfNotLibraRoot; + include CoreAddresses::AbortsIfNotDiemRoot; + include AbortsIfNotDiemRoot; } /// Assert that the account is treasury compliance. @@ -386,27 +386,27 @@ module Roles { /// assurance that that all requirements are covered. spec module { - /// The LibraRoot role is only granted in genesis [[A1]][ROLE]. A new `RoleId` with `LIBRA_ROOT_ROLE_ID` is only - /// published through `grant_libra_root_role` which aborts if it is not invoked in genesis. - apply ThisRoleIsNotNewlyPublished{this: LIBRA_ROOT_ROLE_ID} to * except grant_libra_root_role, grant_role; - apply LibraTimestamp::AbortsIfNotGenesis to grant_libra_root_role; + /// The DiemRoot role is only granted in genesis [[A1]][ROLE]. A new `RoleId` with `DIEM_ROOT_ROLE_ID` is only + /// published through `grant_diem_root_role` which aborts if it is not invoked in genesis. + apply ThisRoleIsNotNewlyPublished{this: DIEM_ROOT_ROLE_ID} to * except grant_diem_root_role, grant_role; + apply DiemTimestamp::AbortsIfNotGenesis to grant_diem_root_role; /// TreasuryCompliance role is only granted in genesis [[A2]][ROLE]. A new `RoleId` with `TREASURY_COMPLIANCE_ROLE_ID` is only /// published through `grant_treasury_compliance_role` which aborts if it is not invoked in genesis. apply ThisRoleIsNotNewlyPublished{this: TREASURY_COMPLIANCE_ROLE_ID} to * except grant_treasury_compliance_role, grant_role; - apply LibraTimestamp::AbortsIfNotGenesis to grant_treasury_compliance_role; + apply DiemTimestamp::AbortsIfNotGenesis to grant_treasury_compliance_role; - /// Validator roles are only granted by LibraRoot [[A3]][ROLE]. A new `RoleId` with `VALIDATOR_ROLE_ID` is only - /// published through `new_validator_role` which aborts if `creating_account` does not have the LibraRoot role. + /// Validator roles are only granted by DiemRoot [[A3]][ROLE]. A new `RoleId` with `VALIDATOR_ROLE_ID` is only + /// published through `new_validator_role` which aborts if `creating_account` does not have the DiemRoot role. apply ThisRoleIsNotNewlyPublished{this: VALIDATOR_ROLE_ID} to * except new_validator_role, grant_role; - apply AbortsIfNotLibraRoot{account: creating_account} to new_validator_role; + apply AbortsIfNotDiemRoot{account: creating_account} to new_validator_role; - /// ValidatorOperator roles are only granted by LibraRoot [[A4]][ROLE]. A new `RoleId` with `VALIDATOR_OPERATOR_ROLE_ID` is only - /// published through `new_validator_operator_role` which aborts if `creating_account` does not have the LibraRoot role. + /// ValidatorOperator roles are only granted by DiemRoot [[A4]][ROLE]. A new `RoleId` with `VALIDATOR_OPERATOR_ROLE_ID` is only + /// published through `new_validator_operator_role` which aborts if `creating_account` does not have the DiemRoot role. apply ThisRoleIsNotNewlyPublished{this: VALIDATOR_OPERATOR_ROLE_ID} to * except new_validator_operator_role, grant_role; - apply AbortsIfNotLibraRoot{account: creating_account} to new_validator_operator_role; + apply AbortsIfNotDiemRoot{account: creating_account} to new_validator_operator_role; /// DesignatedDealer roles are only granted by TreasuryCompliance [[A5]][ROLE]. A new `RoleId` with `DESIGNATED_DEALER_ROLE_ID()` /// is only published through `new_designated_dealer_role` which aborts if `creating_account` does not have the @@ -425,23 +425,23 @@ module Roles { apply ThisRoleIsNotNewlyPublished{this: CHILD_VASP_ROLE_ID} to * except new_child_vasp_role, grant_role; apply AbortsIfNotParentVasp{account: creating_account} to new_child_vasp_role; - /// The LibraRoot role is globally unique [[B1]][ROLE], and is published at LIBRA_ROOT_ADDRESS [[C1]][ROLE]. - /// In other words, a `RoleId` with `LIBRA_ROOT_ROLE_ID` uniquely exists at `LIBRA_ROOT_ADDRESS`. - invariant [global, isolated] forall addr: address where spec_has_libra_root_role_addr(addr): - addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); + /// The DiemRoot role is globally unique [[B1]][ROLE], and is published at DIEM_ROOT_ADDRESS [[C1]][ROLE]. + /// In other words, a `RoleId` with `DIEM_ROOT_ROLE_ID` uniquely exists at `DIEM_ROOT_ADDRESS`. + invariant [global, isolated] forall addr: address where spec_has_diem_root_role_addr(addr): + addr == CoreAddresses::DIEM_ROOT_ADDRESS(); invariant [global, isolated] - LibraTimestamp::is_operating() ==> spec_has_libra_root_role_addr(CoreAddresses::LIBRA_ROOT_ADDRESS()); + DiemTimestamp::is_operating() ==> spec_has_diem_root_role_addr(CoreAddresses::DIEM_ROOT_ADDRESS()); /// The TreasuryCompliance role is globally unique [[B2]][ROLE], and is published at TREASURY_COMPLIANCE_ADDRESS [[C2]][ROLE]. /// In other words, a `RoleId` with `TREASURY_COMPLIANCE_ROLE_ID` uniquely exists at `TREASURY_COMPLIANCE_ADDRESS`. invariant [global, isolated] forall addr: address where spec_has_treasury_compliance_role_addr(addr): addr == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); invariant [global, isolated] - LibraTimestamp::is_operating() ==> + DiemTimestamp::is_operating() ==> spec_has_treasury_compliance_role_addr(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()); - /// LibraRoot cannot have balances [[D1]][ROLE]. - invariant [global, isolated] forall addr: address where spec_has_libra_root_role_addr(addr): + /// DiemRoot cannot have balances [[D1]][ROLE]. + invariant [global, isolated] forall addr: address where spec_has_diem_root_role_addr(addr): !spec_can_hold_balance_addr(addr); /// TreasuryCompliance cannot have balances [[D2]][ROLE]. @@ -481,8 +481,8 @@ module Roles { exists(addr) && global(addr).role_id == role_id } - define spec_has_libra_root_role_addr(addr: address): bool { - spec_has_role_id_addr(addr, LIBRA_ROOT_ROLE_ID) + define spec_has_diem_root_role_addr(addr: address): bool { + spec_has_role_id_addr(addr, DIEM_ROOT_ROLE_ID) } define spec_has_treasury_compliance_role_addr(addr: address): bool { @@ -522,12 +522,12 @@ module Roles { old(exists(addr)) && old(global(addr).role_id) == this; } - spec schema AbortsIfNotLibraRoot { + spec schema AbortsIfNotDiemRoot { account: signer; - include CoreAddresses::AbortsIfNotLibraRoot; + include CoreAddresses::AbortsIfNotDiemRoot; let addr = Signer::spec_address_of(account); aborts_if !exists(addr) with Errors::NOT_PUBLISHED; - aborts_if global(addr).role_id != LIBRA_ROOT_ROLE_ID with Errors::REQUIRES_ROLE; + aborts_if global(addr).role_id != DIEM_ROOT_ROLE_ID with Errors::REQUIRES_ROLE; } spec schema AbortsIfNotTreasuryCompliance { diff --git a/language/stdlib/modules/SharedEd25519PublicKey.move b/language/stdlib/modules/SharedEd25519PublicKey.move index 9a060a5cfd..297478b4fc 100644 --- a/language/stdlib/modules/SharedEd25519PublicKey.move +++ b/language/stdlib/modules/SharedEd25519PublicKey.move @@ -6,7 +6,7 @@ address 0x1 { module SharedEd25519PublicKey { use 0x1::Authenticator; use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signature; use 0x1::Signer; @@ -16,7 +16,7 @@ module SharedEd25519PublicKey { /// 32 byte ed25519 public key key: vector, /// rotation capability for an account whose authentication key is always derived from `key` - rotation_cap: LibraAccount::KeyRotationCapability, + rotation_cap: DiemAccount::KeyRotationCapability, } /// The shared ed25519 public key is not valid ed25519 public key @@ -32,7 +32,7 @@ module SharedEd25519PublicKey { public fun publish(account: &signer, key: vector) { let t = SharedEd25519PublicKey { key: x"", - rotation_cap: LibraAccount::extract_key_rotation_capability(account) + rotation_cap: DiemAccount::extract_key_rotation_capability(account) }; rotate_key_(&mut t, key); assert(!exists_at(Signer::address_of(account)), Errors::already_published(ESHARED_KEY)); @@ -46,11 +46,11 @@ module SharedEd25519PublicKey { account: signer; key: vector; let addr = Signer::spec_address_of(account); - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf; + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf; include RotateKey_AbortsIf { shared_key: SharedEd25519PublicKey { key: x"", - rotation_cap: LibraAccount::spec_get_key_rotation_cap(addr) + rotation_cap: DiemAccount::spec_get_key_rotation_cap(addr) }, new_public_key: key }; @@ -71,7 +71,7 @@ module SharedEd25519PublicKey { Signature::ed25519_validate_pubkey(copy new_public_key), Errors::invalid_argument(EMALFORMED_PUBLIC_KEY) ); - LibraAccount::rotate_authentication_key( + DiemAccount::rotate_authentication_key( &shared_key.rotation_cap, Authenticator::ed25519_authentication_key(copy new_public_key) ); @@ -85,7 +85,7 @@ module SharedEd25519PublicKey { shared_key: SharedEd25519PublicKey; new_public_key: vector; aborts_if !Signature::ed25519_validate_pubkey(new_public_key) with Errors::INVALID_ARGUMENT; - include LibraAccount::RotateAuthenticationKeyAbortsIf { + include DiemAccount::RotateAuthenticationKeyAbortsIf { cap: shared_key.rotation_cap, new_authentication_key: Authenticator::spec_ed25519_authentication_key(new_public_key) }; diff --git a/language/stdlib/modules/Signature.move b/language/stdlib/modules/Signature.move index 73627d5a12..937247b157 100644 --- a/language/stdlib/modules/Signature.move +++ b/language/stdlib/modules/Signature.move @@ -5,7 +5,7 @@ module Signature { /// Return `true` if the bytes in `public_key` can be parsed as a valid Ed25519 public key. /// Returns `false` if `public_key` is not 32 bytes OR is 32 bytes, but does not pass - /// points-on-curve or small subgroup checks. See the Rust `libra_crypto::Ed25519PublicKey` type + /// points-on-curve or small subgroup checks. See the Rust `diem_crypto::Ed25519PublicKey` type /// for more details. /// Does not abort. native public fun ed25519_validate_pubkey(public_key: vector): bool; diff --git a/language/stdlib/modules/SlidingNonce.move b/language/stdlib/modules/SlidingNonce.move index b9941b9831..4ecaf53dbb 100644 --- a/language/stdlib/modules/SlidingNonce.move +++ b/language/stdlib/modules/SlidingNonce.move @@ -116,18 +116,18 @@ module SlidingNonce { spec module { use 0x1::CoreAddresses; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; - /// Sliding nonces are initialized at Libra root and treasury compliance addresses - invariant [global] LibraTimestamp::is_operating() - ==> exists(CoreAddresses::LIBRA_ROOT_ADDRESS()); + /// Sliding nonces are initialized at Diem root and treasury compliance addresses + invariant [global] DiemTimestamp::is_operating() + ==> exists(CoreAddresses::DIEM_ROOT_ADDRESS()); - invariant [global] LibraTimestamp::is_operating() + invariant [global] DiemTimestamp::is_operating() ==> exists(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()); - // In the current code, only Libra root and Treasury compliance have sliding nonces. + // In the current code, only Diem root and Treasury compliance have sliding nonces. // That is a difficult cross-module invariant to prove (it depends on Genesis and - // LibraAccount). Additional modules could be added that call the publish functions + // DiemAccount). Additional modules could be added that call the publish functions // in this module to publish sliding nonces on other accounts. Anyway, this property // is probably not very important. } diff --git a/language/stdlib/modules/TransactionFee.move b/language/stdlib/modules/TransactionFee.move index 6a0ad017a4..dacce7e410 100644 --- a/language/stdlib/modules/TransactionFee.move +++ b/language/stdlib/modules/TransactionFee.move @@ -5,17 +5,17 @@ address 0x1 { module TransactionFee { use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::Coin1::Coin1; - use 0x1::LBR; - use 0x1::Libra::{Self, Libra, Preburn}; + use 0x1::XUS::XUS; + use 0x1::XDX; + use 0x1::Diem::{Self, Diem, Preburn}; use 0x1::Roles; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Signer; /// The `TransactionFee` resource holds a preburn resource for each /// fiat `CoinType` that can be collected as a transaction fee. resource struct TransactionFee { - balance: Libra, + balance: Diem, preburn: Preburn, } @@ -27,20 +27,20 @@ module TransactionFee { public fun initialize( tc_account: &signer, ) { - LibraTimestamp::assert_genesis(); + DiemTimestamp::assert_genesis(); Roles::assert_treasury_compliance(tc_account); // accept fees in all the currencies - add_txn_fee_currency(tc_account); + add_txn_fee_currency(tc_account); } spec fun initialize { - include LibraTimestamp::AbortsIfNotGenesis; + include DiemTimestamp::AbortsIfNotGenesis; include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; - include AddTxnFeeCurrencyAbortsIf; + include AddTxnFeeCurrencyAbortsIf; ensures is_initialized(); - ensures spec_transaction_fee().balance.value == 0; + ensures spec_transaction_fee().balance.value == 0; } spec schema AddTxnFeeCurrencyAbortsIf { - include Libra::AbortsIfNoCurrency; + include Diem::AbortsIfNoCurrency; aborts_if exists>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) with Errors::ALREADY_PUBLISHED; } @@ -50,14 +50,14 @@ module TransactionFee { } fun is_initialized(): bool { - is_coin_initialized() + is_coin_initialized() } /// Sets ups the needed transaction fee state for a given `CoinType` currency by /// (1) configuring `tc_account` to accept `CoinType` /// (2) publishing a wrapper of the `Preburn` resource under `tc_account` public fun add_txn_fee_currency(tc_account: &signer) { - Libra::assert_is_currency(); + Diem::assert_is_currency(); assert( !is_coin_initialized(), Errors::already_published(ETRANSACTION_FEE) @@ -65,57 +65,57 @@ module TransactionFee { move_to( tc_account, TransactionFee { - balance: Libra::zero(), - preburn: Libra::create_preburn(tc_account) + balance: Diem::zero(), + preburn: Diem::create_preburn(tc_account) } ) } /// Deposit `coin` into the transaction fees bucket - public fun pay_fee(coin: Libra) acquires TransactionFee { - LibraTimestamp::assert_operating(); + public fun pay_fee(coin: Diem) acquires TransactionFee { + DiemTimestamp::assert_operating(); assert(is_coin_initialized(), Errors::not_published(ETRANSACTION_FEE)); let fees = borrow_global_mut>( CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), ); - Libra::deposit(&mut fees.balance, coin) + Diem::deposit(&mut fees.balance, coin) } spec fun pay_fee { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if !is_coin_initialized() with Errors::NOT_PUBLISHED; let fees = spec_transaction_fee().balance; - include Libra::DepositAbortsIf{coin: fees, check: coin}; + include Diem::DepositAbortsIf{coin: fees, check: coin}; ensures fees.value == old(fees.value) + coin.value; } /// Preburns the transaction fees collected in the `CoinType` currency. - /// If the `CoinType` is LBR, it unpacks the coin and preburns the + /// If the `CoinType` is XDX, it unpacks the coin and preburns the /// underlying fiat. public fun burn_fees( tc_account: &signer, ) acquires TransactionFee { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_treasury_compliance(tc_account); assert(is_coin_initialized(), Errors::not_published(ETRANSACTION_FEE)); let tc_address = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(); - if (LBR::is_lbr()) { - // TODO: Once the composition of LBR is determined fill this in to - // unpack and burn the backing coins of the LBR coin. + if (XDX::is_xdx()) { + // TODO: Once the composition of XDX is determined fill this in to + // unpack and burn the backing coins of the XDX coin. abort Errors::invalid_state(ETRANSACTION_FEE) } else { // extract fees let fees = borrow_global_mut>(tc_address); - let coin = Libra::withdraw_all(&mut fees.balance); - let burn_cap = Libra::remove_burn_capability(tc_account); + let coin = Diem::withdraw_all(&mut fees.balance); + let burn_cap = Diem::remove_burn_capability(tc_account); // burn - Libra::burn_now( + Diem::burn_now( coin, &mut fees.preburn, tc_address, &burn_cap ); - Libra::publish_burn_capability(tc_account, burn_cap); + Diem::publish_burn_capability(tc_account, burn_cap); } } @@ -123,35 +123,35 @@ module TransactionFee { /// Must abort if the account does not have the TreasuryCompliance role [[H3]][PERMISSION]. include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; aborts_if !is_coin_initialized() with Errors::NOT_PUBLISHED; - include if (LBR::spec_is_lbr()) BurnFeesLBR else BurnFeesNotLBR; + include if (XDX::spec_is_xdx()) BurnFeesXDX else BurnFeesNotXDX; /// The correct amount of fees is burnt and subtracted from market cap. - ensures Libra::spec_market_cap() - == old(Libra::spec_market_cap()) - old(spec_transaction_fee().balance.value); + ensures Diem::spec_market_cap() + == old(Diem::spec_market_cap()) - old(spec_transaction_fee().balance.value); /// All the fees is burnt so the balance becomes 0. ensures spec_transaction_fee().balance.value == 0; } - /// STUB: To be filled in at a later date once the makeup of the LBR has been determined. + /// STUB: To be filled in at a later date once the makeup of the XDX has been determined. /// - /// # Specification of the case where burn type is LBR. - spec schema BurnFeesLBR { + /// # Specification of the case where burn type is XDX. + spec schema BurnFeesXDX { tc_account: signer; aborts_if true with Errors::INVALID_STATE; } - /// # Specification of the case where burn type is not LBR. - spec schema BurnFeesNotLBR { + /// # Specification of the case where burn type is not XDX. + spec schema BurnFeesNotXDX { tc_account: signer; /// Must abort if the account does not have BurnCapability [[H3]][PERMISSION]. - include Libra::AbortsIfNoBurnCapability{account: tc_account}; + include Diem::AbortsIfNoBurnCapability{account: tc_account}; let fees = spec_transaction_fee(); - include Libra::BurnNowAbortsIf{coin: fees.balance, preburn: fees.preburn}; + include Diem::BurnNowAbortsIf{coin: fees.balance, preburn: fees.preburn}; /// tc_account retrieves BurnCapability [[H3]][PERMISSION]. /// BurnCapability is not transferrable [[J3]][PERMISSION]. - ensures exists>(Signer::spec_address_of(tc_account)); + ensures exists>(Signer::spec_address_of(tc_account)); } spec module {} // Switch documentation context to module level. @@ -160,7 +160,7 @@ module TransactionFee { spec module { /// If time has started ticking, then `TransactionFee` resources have been initialized. - invariant [global] LibraTimestamp::is_operating() ==> is_initialized(); + invariant [global] DiemTimestamp::is_operating() ==> is_initialized(); } /// # Helper Function diff --git a/language/stdlib/modules/VASP.move b/language/stdlib/modules/VASP.move index b96ddc2253..31a76dbf3f 100644 --- a/language/stdlib/modules/VASP.move +++ b/language/stdlib/modules/VASP.move @@ -6,7 +6,7 @@ address 0x1 { module VASP { use 0x1::Errors; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Signer; use 0x1::Roles; use 0x1::AccountLimits; @@ -40,10 +40,10 @@ module VASP { /////////////////////////////////////////////////////////////////////////// /// Create a new `ParentVASP` resource under `vasp` - /// Aborts if `lr_account` is not the libra root account, + /// Aborts if `dr_account` is not the diem root account, /// or if there is already a VASP (child or parent) at this account. public fun publish_parent_vasp_credential(vasp: &signer, tc_account: &signer) { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_treasury_compliance(tc_account); Roles::assert_parent_vasp_role(vasp); let vasp_addr = Signer::address_of(vasp); @@ -52,7 +52,7 @@ module VASP { } spec fun publish_parent_vasp_credential { - include LibraTimestamp::AbortsIfNotOperating; + include DiemTimestamp::AbortsIfNotOperating; include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; include Roles::AbortsIfNotParentVasp{account: vasp}; let vasp_addr = Signer::spec_address_of(vasp); @@ -88,7 +88,7 @@ module VASP { let child_addr = Signer::spec_address_of(child); include PublishChildVASPAbortsIf{child_addr}; // NB: This aborts condition is separated out so that `PublishChildVASPAbortsIf` can be used in - // `LibraAccount::create_child_vasp_account` since this doesn't hold of the new account in the pre-state. + // `DiemAccount::create_child_vasp_account` since this doesn't hold of the new account in the pre-state. include Roles::AbortsIfNotChildVasp{account: child_addr}; include PublishChildVASPEnsures{parent_addr: Signer::spec_address_of(parent), child_addr: child_addr}; } diff --git a/language/stdlib/modules/ValidatorConfig.move b/language/stdlib/modules/ValidatorConfig.move index 41f57b7332..a5f10ca5e4 100644 --- a/language/stdlib/modules/ValidatorConfig.move +++ b/language/stdlib/modules/ValidatorConfig.move @@ -1,13 +1,13 @@ address 0x1 { /// The ValidatorConfig resource holds information about a validator. Information -/// is published and updated by Libra root in a `Self::ValidatorConfig` in preparation for -/// later inclusion (by functions in LibraConfig) in a `LibraConfig::LibraConfig` -/// struct (the `Self::ValidatorConfig` in a `LibraConfig::ValidatorInfo` which is a member -/// of the `LibraSystem::LibraSystem.validators` vector). +/// is published and updated by Diem root in a `Self::ValidatorConfig` in preparation for +/// later inclusion (by functions in DiemConfig) in a `DiemConfig::DiemConfig` +/// struct (the `Self::ValidatorConfig` in a `DiemConfig::ValidatorInfo` which is a member +/// of the `DiemSystem::DiemSystem.validators` vector). module ValidatorConfig { - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; use 0x1::Errors; use 0x1::Option::{Self, Option}; use 0x1::Signature; @@ -49,11 +49,11 @@ module ValidatorConfig { /// and the address of the validator operator. public fun publish( validator_account: &signer, - lr_account: &signer, + dr_account: &signer, human_name: vector, ) { - LibraTimestamp::assert_operating(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_operating(); + Roles::assert_diem_root(dr_account); Roles::assert_validator(validator_account); assert( !exists(Signer::address_of(validator_account)), @@ -73,9 +73,9 @@ module ValidatorConfig { spec schema PublishAbortsIf { validator_addr: address; - lr_account: signer; - include LibraTimestamp::AbortsIfNotOperating; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + dr_account: signer; + include DiemTimestamp::AbortsIfNotOperating; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include Roles::AbortsIfNotValidator{validator_addr: validator_addr}; aborts_if exists_config(validator_addr) with Errors::ALREADY_PUBLISHED; @@ -169,7 +169,7 @@ module ValidatorConfig { /// Rotate the config in the validator_account. /// Once the config is set, it can not go back to `Option::none` - this is crucial for validity - /// of the LibraSystem's code. + /// of the DiemSystem's code. public fun set_config( validator_operator_account: &signer, validator_addr: address, @@ -327,7 +327,7 @@ module ValidatorConfig { /// # Validity of Validators - /// See comment on `ValidatorConfig::set_config` -- LibraSystem depends on this. + /// See comment on `ValidatorConfig::set_config` -- DiemSystem depends on this. spec module { /// A validator stays valid once it becomes valid. invariant update [global] @@ -343,7 +343,7 @@ module ValidatorConfig { Roles::spec_has_validator_role_addr(addr); /// LIP-6 Property: If address has a ValidatorConfig, it has a validator role. This invariant is useful - /// in LibraSystem so we don't have to check whether every validator address has a validator role. + /// in DiemSystem so we don't have to check whether every validator address has a validator role. invariant [global] forall addr: address where exists_config(addr): Roles::spec_has_validator_role_addr(addr); diff --git a/language/stdlib/modules/ValidatorOperatorConfig.move b/language/stdlib/modules/ValidatorOperatorConfig.move index f9f65562fe..3c62a1a9c7 100644 --- a/language/stdlib/modules/ValidatorOperatorConfig.move +++ b/language/stdlib/modules/ValidatorOperatorConfig.move @@ -6,7 +6,7 @@ module ValidatorOperatorConfig { use 0x1::Errors; use 0x1::Signer; use 0x1::Roles; - use 0x1::LibraTimestamp; + use 0x1::DiemTimestamp; resource struct ValidatorOperatorConfig { /// The human readable name of this entity. Immutable. @@ -18,11 +18,11 @@ module ValidatorOperatorConfig { public fun publish( validator_operator_account: &signer, - lr_account: &signer, + dr_account: &signer, human_name: vector, ) { - LibraTimestamp::assert_operating(); - Roles::assert_libra_root(lr_account); + DiemTimestamp::assert_operating(); + Roles::assert_diem_root(dr_account); Roles::assert_validator_operator(validator_operator_account); assert( !has_validator_operator_config(Signer::address_of(validator_operator_account)), @@ -34,7 +34,7 @@ module ValidatorOperatorConfig { }); } spec fun publish { - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include Roles::AbortsIfNotValidatorOperator{validator_operator_addr: Signer::address_of(validator_operator_account)}; include PublishAbortsIf {validator_operator_addr: Signer::spec_address_of(validator_operator_account)}; ensures has_validator_operator_config(Signer::spec_address_of(validator_operator_account)); @@ -42,9 +42,9 @@ module ValidatorOperatorConfig { spec schema PublishAbortsIf { validator_operator_addr: address; - lr_account: signer; - include LibraTimestamp::AbortsIfNotOperating; - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + dr_account: signer; + include DiemTimestamp::AbortsIfNotOperating; + include Roles::AbortsIfNotDiemRoot{account: dr_account}; include Roles::AbortsIfNotValidatorOperator; aborts_if has_validator_operator_config(validator_operator_addr) with Errors::ALREADY_PUBLISHED; diff --git a/language/stdlib/modules/XDX.move b/language/stdlib/modules/XDX.move new file mode 100644 index 0000000000..1f53d3287c --- /dev/null +++ b/language/stdlib/modules/XDX.move @@ -0,0 +1,158 @@ +address 0x1 { +/// NB: This module is a stub of the `XDX` at the moment. +/// +/// Once the component makeup of the XDX has been chosen the +/// `Reserve` will be updated to hold the backing coins in the correct ratios. + +module XDX { + use 0x1::AccountLimits; + use 0x1::CoreAddresses; + use 0x1::Errors; + use 0x1::FixedPoint32; + use 0x1::Diem; + use 0x1::DiemTimestamp; + + /// The type tag representing the `XDX` currency on-chain. + resource struct XDX { } + + /// Note: Currently only holds the mint, burn, and preburn capabilities for + /// XDX. Once the makeup of the XDX has been determined this resource will + /// be updated to hold the backing XDX reserve compnents on-chain. + /// + /// The on-chain reserve for the `XDX` holds both the capability for minting `XDX` + /// coins, and also each reserve component that holds the backing for these coins on-chain. + /// Currently this holds no coins since XDX is not able to be minted/created. + resource struct Reserve { + /// The mint capability allowing minting of `XDX` coins. + mint_cap: Diem::MintCapability, + /// The burn capability for `XDX` coins. This is used for the unpacking + /// of `XDX` coins into the underlying backing currencies. + burn_cap: Diem::BurnCapability, + /// The preburn for `XDX`. This is an administrative field since we + /// need to alway preburn before we burn. + preburn_cap: Diem::Preburn, + // TODO: Once the reserve has been determined this resource will + // contain a ReserveComponent for every currency that makes + // up the reserve. + } + + /// The `Reserve` resource is in an invalid state + const ERESERVE: u64 = 0; + + /// Initializes the `XDX` module. This sets up the initial `XDX` ratios and + /// reserve components, and creates the mint, preburn, and burn + /// capabilities for `XDX` coins. The `XDX` currency must not already be + /// registered in order for this to succeed. The sender must both be the + /// correct address (`CoreAddresses::CURRENCY_INFO_ADDRESS`) and have the + /// correct permissions (`&Capability`). Both of these + /// restrictions are enforced in the `Diem::register_currency` function, but also enforced here. + public fun initialize( + dr_account: &signer, + tc_account: &signer, + ) { + DiemTimestamp::assert_genesis(); + // Operational constraint + CoreAddresses::assert_currency_info(dr_account); + // Reserve must not exist. + assert(!exists(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ERESERVE)); + let (mint_cap, burn_cap) = Diem::register_currency( + dr_account, + FixedPoint32::create_from_rational(1, 1), // exchange rate to XDX + true, // is_synthetic + 1000000, // scaling_factor = 10^6 + 1000, // fractional_part = 10^3 + b"XDX" + ); + // XDX cannot be minted. + Diem::update_minting_ability(tc_account, false); + AccountLimits::publish_unrestricted_limits(dr_account); + let preburn_cap = Diem::create_preburn(tc_account); + move_to(dr_account, Reserve { mint_cap, burn_cap, preburn_cap }); + } + spec fun initialize { + use 0x1::Roles; + include CoreAddresses::AbortsIfNotCurrencyInfo{account: dr_account}; + aborts_if exists(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED; + include Diem::RegisterCurrencyAbortsIf{ + currency_code: b"XDX", + scaling_factor: 1000000 + }; + include AccountLimits::PublishUnrestrictedLimitsAbortsIf{publish_account: dr_account}; + + include Diem::RegisterCurrencyEnsures; + include Diem::UpdateMintingAbilityEnsures{can_mint: false}; + include AccountLimits::PublishUnrestrictedLimitsEnsures{publish_account: dr_account}; + ensures exists(CoreAddresses::DIEM_ROOT_ADDRESS()); + + /// Registering XDX can only be done in genesis. + include DiemTimestamp::AbortsIfNotGenesis; + /// Only the DiemRoot account can register a new currency [[H8]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + /// Only the TreasuryCompliance role can update the `can_mint` field of CurrencyInfo [[H2]][PERMISSION]. + /// Moreover, only the TreasuryCompliance role can create Preburn. + include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; + } + + /// Returns true if `CoinType` is `XDX::XDX` + public fun is_xdx(): bool { + Diem::is_currency() && + Diem::currency_code() == Diem::currency_code() + } + + spec fun is_xdx { + pragma opaque, verify = false; + include Diem::spec_is_currency() ==> Diem::AbortsIfNoCurrency; + /// The following is correct because currency codes are unique; however, we + /// can currently not prove it, therefore verify is false. + ensures result == Diem::spec_is_currency() && spec_is_xdx(); + } + + /// Return the account address where the globally unique XDX::Reserve resource is stored + public fun reserve_address(): address { + CoreAddresses::CURRENCY_INFO_ADDRESS() + } + + // ================================================================= + // Module Specification + + spec module {} // switch documentation context back to module level + + /// # Persistence of Resources + + spec module { + /// After genesis, the Reserve resource exists. + invariant [global] DiemTimestamp::is_operating() ==> reserve_exists(); + + /// After genesis, XDX is registered. + invariant [global] DiemTimestamp::is_operating() ==> Diem::is_currency(); + } + + /// # Helper Functions + spec module { + /// Checks whether the Reserve resource exists. + define reserve_exists(): bool { + exists(CoreAddresses::CURRENCY_INFO_ADDRESS()) + } + + /// Returns true if CoinType is XDX. + define spec_is_xdx(): bool { + type() == type() + } + + /// After genesis, `LimitsDefinition` is published at Diem root. It's published by + /// AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because + /// it does not hold for all types (but does hold for XDX). + invariant [global] DiemTimestamp::is_operating() + ==> exists>(CoreAddresses::DIEM_ROOT_ADDRESS()); + + /// `LimitsDefinition` is not published at any other address + invariant [global] forall addr: address where exists>(addr): + addr == CoreAddresses::DIEM_ROOT_ADDRESS(); + + /// `Reserve` is persistent + invariant update [global] old(exists(reserve_address())) + ==> exists(reserve_address()); + } + +} +} diff --git a/language/stdlib/modules/XUS.move b/language/stdlib/modules/XUS.move new file mode 100644 index 0000000000..e82aaf91fb --- /dev/null +++ b/language/stdlib/modules/XUS.move @@ -0,0 +1,71 @@ +address 0x1 { + +/// This module defines the coin type XUS and its initialization function. +module XUS { + use 0x1::AccountLimits; + use 0x1::Diem; + use 0x1::DiemTimestamp; + use 0x1::FixedPoint32; + + /// The type tag representing the `XUS` currency on-chain. + struct XUS { } + + /// Registers the `XUS` cointype. This can only be called from genesis. + public fun initialize( + dr_account: &signer, + tc_account: &signer, + ) { + DiemTimestamp::assert_genesis(); + Diem::register_SCS_currency( + dr_account, + tc_account, + FixedPoint32::create_from_rational(1, 1), // exchange rate to XDX + 1000000, // scaling_factor = 10^6 + 100, // fractional_part = 10^2 + b"XUS" + ); + AccountLimits::publish_unrestricted_limits(dr_account); + } + spec fun initialize { + use 0x1::Roles; + include Diem::RegisterSCSCurrencyAbortsIf{ + currency_code: b"XUS", + scaling_factor: 1000000 + }; + include AccountLimits::PublishUnrestrictedLimitsAbortsIf{publish_account: dr_account}; + include Diem::RegisterSCSCurrencyEnsures; + include AccountLimits::PublishUnrestrictedLimitsEnsures{publish_account: dr_account}; + /// Registering XUS can only be done in genesis. + include DiemTimestamp::AbortsIfNotGenesis; + /// Only the DiemRoot account can register a new currency [[H8]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; + /// Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. + /// Moreover, only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. + include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; + } + + // ================================================================= + // Module Specification + + spec module {} // Switch to module documentation context + + /// # Persistence of Resources + spec module { + use 0x1::CoreAddresses; + + /// After genesis, XUS is registered. + invariant [global] DiemTimestamp::is_operating() ==> Diem::is_currency(); + + /// After genesis, `LimitsDefinition` is published at Diem root. It's published by + /// AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because + /// it does not hold for all types (but does hold for XUS). + invariant [global] DiemTimestamp::is_operating() + ==> exists>(CoreAddresses::DIEM_ROOT_ADDRESS()); + + /// `LimitsDefinition` is not published at any other address + invariant [global] forall addr: address where exists>(addr): + addr == CoreAddresses::DIEM_ROOT_ADDRESS(); + + } +} +} diff --git a/language/stdlib/modules/doc/AccountFreezing.md b/language/stdlib/modules/doc/AccountFreezing.md index 3936edd1d5..8b022878e5 100644 --- a/language/stdlib/modules/doc/AccountFreezing.md +++ b/language/stdlib/modules/doc/AccountFreezing.md @@ -24,9 +24,9 @@ Module which manages freezing of accounts.
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
 use 0x1::Event;
-use 0x1::LibraTimestamp;
 use 0x1::Roles;
 use 0x1::Signer;
 
@@ -176,12 +176,12 @@ The account is frozen - + -An attempt to freeze the Libra Root account was attempted +An attempt to freeze the Diem Root account was attempted -
const ECANNOT_FREEZE_LIBRA_ROOT: u64 = 3;
+
const ECANNOT_FREEZE_DIEM_ROOT: u64 = 3;
 
@@ -222,7 +222,7 @@ The FreezingB -
public fun initialize(lr_account: &signer)
+
public fun initialize(dr_account: &signer)
 
@@ -231,16 +231,16 @@ The FreezingB Implementation -
public fun initialize(lr_account: &signer) {
-    LibraTimestamp::assert_genesis();
-    CoreAddresses::assert_libra_root(lr_account);
+
public fun initialize(dr_account: &signer) {
+    DiemTimestamp::assert_genesis();
+    CoreAddresses::assert_diem_root(dr_account);
     assert(
-        !exists<FreezeEventsHolder>(Signer::address_of(lr_account)),
+        !exists<FreezeEventsHolder>(Signer::address_of(dr_account)),
         Errors::already_published(EFREEZE_EVENTS_HOLDER)
     );
-    move_to(lr_account, FreezeEventsHolder {
-        freeze_event_handle: Event::new_event_handle(lr_account),
-        unfreeze_event_handle: Event::new_event_handle(lr_account),
+    move_to(dr_account, FreezeEventsHolder {
+        freeze_event_handle: Event::new_event_handle(dr_account),
+        unfreeze_event_handle: Event::new_event_handle(dr_account),
     });
 }
 
@@ -254,10 +254,10 @@ The FreezingB -
include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
+
include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
 
-let addr = Signer::spec_address_of(lr_account);
+let addr = Signer::spec_address_of(dr_account);
 aborts_if exists<FreezeEventsHolder>(addr) with Errors::ALREADY_PUBLISHED;
 ensures exists<FreezeEventsHolder>(addr);
 
@@ -331,16 +331,16 @@ Freeze the account at addr. frozen_address: address, ) acquires FreezingBit, FreezeEventsHolder { - LibraTimestamp::assert_operating(); + DiemTimestamp::assert_operating(); Roles::assert_treasury_compliance(account); - // The libra root account and TC cannot be frozen - assert(frozen_address != CoreAddresses::LIBRA_ROOT_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_LIBRA_ROOT)); + // The diem root account and TC cannot be frozen + assert(frozen_address != CoreAddresses::DIEM_ROOT_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_DIEM_ROOT)); assert(frozen_address != CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), Errors::invalid_argument(ECANNOT_FREEZE_TC)); assert(exists<FreezingBit>(frozen_address), Errors::not_published(EFREEZING_BIT)); borrow_global_mut<FreezingBit>(frozen_address).is_frozen = true; let initiator_address = Signer::address_of(account); Event::emit_event<FreezeAccountEvent>( - &mut borrow_global_mut<FreezeEventsHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS()).freeze_event_handle, + &mut borrow_global_mut<FreezeEventsHolder>(CoreAddresses::DIEM_ROOT_ADDRESS()).freeze_event_handle, FreezeAccountEvent { initiator_address, frozen_address @@ -358,9 +358,9 @@ Freeze the account at addr. -
include LibraTimestamp::AbortsIfNotOperating;
+
include DiemTimestamp::AbortsIfNotOperating;
 include Roles::AbortsIfNotTreasuryCompliance;
-aborts_if frozen_address == CoreAddresses::LIBRA_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT;
+aborts_if frozen_address == CoreAddresses::DIEM_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT;
 aborts_if frozen_address == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() with Errors::INVALID_ARGUMENT;
 aborts_if !exists<FreezingBit>(frozen_address) with Errors::NOT_PUBLISHED;
 ensures spec_account_is_frozen(frozen_address);
@@ -391,13 +391,13 @@ Unfreeze the account at addr.
     unfrozen_address: address,
 )
 acquires FreezingBit, FreezeEventsHolder {
-    LibraTimestamp::assert_operating();
+    DiemTimestamp::assert_operating();
     Roles::assert_treasury_compliance(account);
     assert(exists<FreezingBit>(unfrozen_address), Errors::not_published(EFREEZING_BIT));
     borrow_global_mut<FreezingBit>(unfrozen_address).is_frozen = false;
     let initiator_address = Signer::address_of(account);
     Event::emit_event<UnfreezeAccountEvent>(
-        &mut borrow_global_mut<FreezeEventsHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS()).unfreeze_event_handle,
+        &mut borrow_global_mut<FreezeEventsHolder>(CoreAddresses::DIEM_ROOT_ADDRESS()).unfreeze_event_handle,
         UnfreezeAccountEvent {
             initiator_address,
             unfrozen_address
@@ -415,7 +415,7 @@ Unfreeze the account at addr.
 
 
 
-
include LibraTimestamp::AbortsIfNotOperating;
+
include DiemTimestamp::AbortsIfNotOperating;
 include Roles::AbortsIfNotTreasuryCompliance;
 aborts_if !exists<FreezingBit>(unfrozen_address) with Errors::NOT_PUBLISHED;
 ensures !spec_account_is_frozen(unfrozen_address);
@@ -529,8 +529,8 @@ Assert that an account is not frozen.
 FreezeEventsHolder always exists after genesis.
 
 
-
invariant [global] LibraTimestamp::is_operating() ==>
-    exists<FreezeEventsHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS());
+
invariant [global] DiemTimestamp::is_operating() ==>
+    exists<FreezeEventsHolder>(CoreAddresses::DIEM_ROOT_ADDRESS());
 
@@ -540,12 +540,12 @@ Assert that an account is not frozen. ### Access Control -The account of LibraRoot is not freezable [[F1]][ROLE]. -After genesis, FreezingBit of LibraRoot is always false. +The account of DiemRoot is not freezable [[F1]][ROLE]. +After genesis, FreezingBit of DiemRoot is always false. -
invariant [global] LibraTimestamp::is_operating() ==>
-    spec_account_is_not_frozen(CoreAddresses::LIBRA_ROOT_ADDRESS());
+
invariant [global] DiemTimestamp::is_operating() ==>
+    spec_account_is_not_frozen(CoreAddresses::DIEM_ROOT_ADDRESS());
 
@@ -553,7 +553,7 @@ The account of TreasuryCompliance is not freezable [[F2]][ROLE]. After genesis, FreezingBit of TreasuryCompliance is always false. -
invariant [global] LibraTimestamp::is_operating() ==>
+
invariant [global] DiemTimestamp::is_operating() ==>
     spec_account_is_not_frozen(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS());
 
@@ -568,7 +568,7 @@ resource struct FreezingBit persists resource struct FreezeEventsHolder is there forever after initialization -
invariant update [global] LibraTimestamp::is_operating() ==> exists<FreezeEventsHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS());
+
invariant update [global] DiemTimestamp::is_operating() ==> exists<FreezeEventsHolder>(CoreAddresses::DIEM_ROOT_ADDRESS());
 
diff --git a/language/stdlib/modules/doc/AccountLimits.md b/language/stdlib/modules/doc/AccountLimits.md index 603202d90a..2de965aa4f 100644 --- a/language/stdlib/modules/doc/AccountLimits.md +++ b/language/stdlib/modules/doc/AccountLimits.md @@ -29,8 +29,8 @@ a given time period. - [Module Specification](#@Module_Specification_1) -
use 0x1::Errors;
-use 0x1::LibraTimestamp;
+
use 0x1::DiemTimestamp;
+use 0x1::Errors;
 use 0x1::Roles;
 use 0x1::Signer;
 
@@ -72,7 +72,7 @@ the operations can mutate account states. A resource specifying the account limits per-currency. There is a default "unlimited" LimitsDefinition resource for accounts published at -CoreAddresses::LIBRA_ROOT_ADDRESS(), but other accounts may have +CoreAddresses::DIEM_ROOT_ADDRESS(), but other accounts may have different account limit definitons. In such cases, they will have a LimitsDefinition published under their (root) account. @@ -237,7 +237,7 @@ Grant a capability to call this module. This does not necessarily need to be a unique capability. -
public fun grant_mutation_capability(lr_account: &signer): AccountLimits::AccountLimitMutationCapability
+
public fun grant_mutation_capability(dr_account: &signer): AccountLimits::AccountLimitMutationCapability
 
@@ -246,9 +246,9 @@ need to be a unique capability. Implementation -
public fun grant_mutation_capability(lr_account: &signer): AccountLimitMutationCapability {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
+
public fun grant_mutation_capability(dr_account: &signer): AccountLimitMutationCapability {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
     AccountLimitMutationCapability{}
 }
 
@@ -262,8 +262,8 @@ need to be a unique capability. -
include LibraTimestamp::AbortsIfNotGenesis;
-include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include DiemTimestamp::AbortsIfNotGenesis;
+include Roles::AbortsIfNotDiemRoot{account: dr_account};
 
@@ -442,7 +442,7 @@ Root accounts for multi-account entities will hold this resource at their root/parent account. -
public fun publish_window<CoinType>(lr_account: &signer, to_limit: &signer, limit_address: address)
+
public fun publish_window<CoinType>(dr_account: &signer, to_limit: &signer, limit_address: address)
 
@@ -452,11 +452,11 @@ their root/parent account.
public fun publish_window<CoinType>(
-    lr_account: &signer,
+    dr_account: &signer,
     to_limit: &signer,
     limit_address: address,
 ) {
-    Roles::assert_libra_root(lr_account);
+    Roles::assert_diem_root(dr_account);
     assert(exists<LimitsDefinition<CoinType>>(limit_address), Errors::not_published(ELIMITS_DEFINITION));
     Roles::assert_parent_vasp_or_child_vasp(to_limit);
     assert(
@@ -495,7 +495,7 @@ their root/parent account.
 
 
 
schema PublishWindowAbortsIf<CoinType> {
-    lr_account: signer;
+    dr_account: signer;
     to_limit: signer;
     limit_address: address;
 }
@@ -507,7 +507,7 @@ Only ParentVASP and ChildVASP can have the account limits [[E1]][ROLE][[E2]][ROL
 
 
schema PublishWindowAbortsIf<CoinType> {
     include Roles::AbortsIfNotParentVaspOrChildVasp{account: to_limit};
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
     aborts_if !exists<LimitsDefinition<CoinType>>(limit_address) with Errors::NOT_PUBLISHED;
     aborts_if exists<Window<CoinType>>(Signer::spec_address_of(to_limit)) with Errors::ALREADY_PUBLISHED;
 }
@@ -702,7 +702,7 @@ the inflow and outflow records.
 
 
 
fun reset_window<CoinType>(window: &mut Window<CoinType>, limits_definition: &LimitsDefinition<CoinType>) {
-    let current_time = LibraTimestamp::now_microseconds();
+    let current_time = DiemTimestamp::now_microseconds();
     assert(window.window_start <= MAX_U64 - limits_definition.time_period, Errors::limit_exceeded(EWINDOW));
     if (current_time > window.window_start + limits_definition.time_period) {
         window.window_start = current_time;
@@ -735,7 +735,7 @@ the inflow and outflow records.
 
schema ResetWindowAbortsIf<CoinType> {
     window: Window<CoinType>;
     limits_definition: LimitsDefinition<CoinType>;
-    include LibraTimestamp::AbortsIfNotOperating;
+    include DiemTimestamp::AbortsIfNotOperating;
     aborts_if window.window_start + limits_definition.time_period > max_u64() with Errors::LIMIT_EXCEEDED;
 }
 
@@ -763,7 +763,7 @@ the inflow and outflow records. window: Window<CoinType>, limits_definition: LimitsDefinition<CoinType> ): bool { - LibraTimestamp::spec_now_microseconds() > window.window_start + limits_definition.time_period + DiemTimestamp::spec_now_microseconds() > window.window_start + limits_definition.time_period } define spec_window_reset_with_limits<CoinType>( @@ -774,7 +774,7 @@ the inflow and outflow records. Window<CoinType>{ limit_address: window.limit_address, tracked_balance: window.tracked_balance, - window_start: LibraTimestamp::spec_now_microseconds(), + window_start: DiemTimestamp::spec_now_microseconds(), window_inflow: 0, window_outflow: 0 } @@ -1276,7 +1276,7 @@ Checks whether the limits definition is unrestricted.
fun current_time(): u64 {
-    if (LibraTimestamp::is_genesis()) 0 else LibraTimestamp::now_microseconds()
+    if (DiemTimestamp::is_genesis()) 0 else DiemTimestamp::now_microseconds()
 }
 
diff --git a/language/stdlib/modules/doc/Authenticator.md b/language/stdlib/modules/doc/Authenticator.md index ef2dd83351..48ebecbcbd 100644 --- a/language/stdlib/modules/doc/Authenticator.md +++ b/language/stdlib/modules/doc/Authenticator.md @@ -3,7 +3,7 @@ # Module `0x1::Authenticator` -Move representation of the authenticator types used in Libra. The supported types are Ed25519 (single-sig) +Move representation of the authenticator types used in Diem. The supported types are Ed25519 (single-sig) and MultiEd25519 (K-of-N multisig). diff --git a/language/stdlib/modules/doc/ChainId.md b/language/stdlib/modules/doc/ChainId.md index 6311566c92..d70d360aa1 100644 --- a/language/stdlib/modules/doc/ChainId.md +++ b/language/stdlib/modules/doc/ChainId.md @@ -3,7 +3,7 @@ # Module `0x1::ChainId` -The chain id distinguishes between different chains (e.g., testnet and the main Libra network). +The chain id distinguishes between different chains (e.g., testnet and the main Diem network). One important role is to prevent transactions intended for one chain from being executed on another. This code provides a container for storing a chain id and functions to initialize and get it. @@ -18,8 +18,8 @@ This code provides a container for storing a chain id and functions to initializ
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
-use 0x1::LibraTimestamp;
 use 0x1::Signer;
 
@@ -71,10 +71,10 @@ The ChainId resource was not i ## Function `initialize` -Publish the chain ID id of this Libra instance under the LibraRoot account +Publish the chain ID id of this Diem instance under the DiemRoot account -
public fun initialize(lr_account: &signer, id: u8)
+
public fun initialize(dr_account: &signer, id: u8)
 
@@ -83,11 +83,11 @@ Publish the chain ID id of this Libra instance under the LibraRoot Implementation -
public fun initialize(lr_account: &signer, id: u8) {
-    LibraTimestamp::assert_genesis();
-    CoreAddresses::assert_libra_root(lr_account);
-    assert(!exists<ChainId>(Signer::address_of(lr_account)), Errors::already_published(ECHAIN_ID));
-    move_to(lr_account, ChainId { id })
+
public fun initialize(dr_account: &signer, id: u8) {
+    DiemTimestamp::assert_genesis();
+    CoreAddresses::assert_diem_root(dr_account);
+    assert(!exists<ChainId>(Signer::address_of(dr_account)), Errors::already_published(ECHAIN_ID));
+    move_to(dr_account, ChainId { id })
 }
 
@@ -101,13 +101,13 @@ Publish the chain ID id of this Libra instance under the LibraRoot
pragma opaque;
-
-let lr_addr = Signer::address_of(lr_account);
-modifies global<ChainId>(lr_addr);
-include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-aborts_if exists<ChainId>(lr_addr) with Errors::ALREADY_PUBLISHED;
-ensures exists<ChainId>(lr_addr);
+
+let dr_addr = Signer::address_of(dr_account);
+modifies global<ChainId>(dr_addr);
+include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+aborts_if exists<ChainId>(dr_addr) with Errors::ALREADY_PUBLISHED;
+ensures exists<ChainId>(dr_addr);
 
@@ -118,7 +118,7 @@ Publish the chain ID id of this Libra instance under the LibraRoot ## Function `get` -Return the chain ID of this Libra instance +Return the chain ID of this Diem instance
public fun get(): u8
@@ -131,8 +131,8 @@ Return the chain ID of this Libra instance
 
 
 
public fun get(): u8 acquires ChainId {
-    LibraTimestamp::assert_operating();
-    borrow_global<ChainId>(CoreAddresses::LIBRA_ROOT_ADDRESS()).id
+    DiemTimestamp::assert_operating();
+    borrow_global<ChainId>(CoreAddresses::DIEM_ROOT_ADDRESS()).id
 }
 
@@ -151,10 +151,10 @@ Return the chain ID of this Libra instance ### Initialization -When Libra is operating, the chain id is always available. +When Diem is operating, the chain id is always available. -
invariant [global] LibraTimestamp::is_operating() ==> exists<ChainId>(CoreAddresses::LIBRA_ROOT_ADDRESS());
+
invariant [global] DiemTimestamp::is_operating() ==> exists<ChainId>(CoreAddresses::DIEM_ROOT_ADDRESS());
 
@@ -169,7 +169,7 @@ When Libra is operating, the chain id is always available.
define spec_get_chain_id(): u8 {
-   global<ChainId>(CoreAddresses::LIBRA_ROOT_ADDRESS()).id
+   global<ChainId>(CoreAddresses::DIEM_ROOT_ADDRESS()).id
 }
 
diff --git a/language/stdlib/modules/doc/Coin1.md b/language/stdlib/modules/doc/Coin1.md deleted file mode 100644 index bd3755803e..0000000000 --- a/language/stdlib/modules/doc/Coin1.md +++ /dev/null @@ -1,167 +0,0 @@ - - - -# Module `0x1::Coin1` - -This module defines the coin type Coin1 and its initialization function. - - -- [Struct `Coin1`](#0x1_Coin1_Coin1) -- [Function `initialize`](#0x1_Coin1_initialize) -- [Module Specification](#@Module_Specification_0) - - [Persistence of Resources](#@Persistence_of_Resources_1) - - -
use 0x1::AccountLimits;
-use 0x1::FixedPoint32;
-use 0x1::Libra;
-use 0x1::LibraTimestamp;
-
- - - - - -## Struct `Coin1` - -The type tag representing the Coin1 currency on-chain. - - -
struct Coin1
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Function `initialize` - -Registers the Coin1 cointype. This can only be called from genesis. - - -
public fun initialize(lr_account: &signer, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-    tc_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    Libra::register_SCS_currency<Coin1>(
-        lr_account,
-        tc_account,
-        FixedPoint32::create_from_rational(1, 1), // exchange rate to LBR
-        1000000, // scaling_factor = 10^6
-        100,     // fractional_part = 10^2
-        b"Coin1"
-    );
-    AccountLimits::publish_unrestricted_limits<Coin1>(lr_account);
-}
-
- - - -
- -
-Specification - - - -
include Libra::RegisterSCSCurrencyAbortsIf<Coin1>{
-    currency_code: b"Coin1",
-    scaling_factor: 1000000
-};
-include AccountLimits::PublishUnrestrictedLimitsAbortsIf<Coin1>{publish_account: lr_account};
-include Libra::RegisterSCSCurrencyEnsures<Coin1>;
-include AccountLimits::PublishUnrestrictedLimitsEnsures<Coin1>{publish_account: lr_account};
-
- - -Registering Coin1 can only be done in genesis. - - -
include LibraTimestamp::AbortsIfNotGenesis;
-
- - -Only the LibraRoot account can register a new currency [[H8]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-
- - -Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. -Moreover, only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. - - -
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-
- - - -
- - - -## Module Specification - - - - - -### Persistence of Resources - - -After genesis, Coin1 is registered. - - -
invariant [global] LibraTimestamp::is_operating() ==> Libra::is_currency<Coin1>();
-
- - -After genesis, LimitsDefinition<Coin1> is published at Libra root. It's published by -AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because -it does not hold for all types (but does hold for Coin1). - - -
invariant [global] LibraTimestamp::is_operating()
-    ==> exists<AccountLimits::LimitsDefinition<Coin1>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -LimitsDefinition<Coin1> is not published at any other address - - -
invariant [global] forall addr: address where exists<AccountLimits::LimitsDefinition<Coin1>>(addr):
-    addr == CoreAddresses::LIBRA_ROOT_ADDRESS();
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/CoreAddresses.md b/language/stdlib/modules/doc/CoreAddresses.md index c75b81e475..8cf76deba7 100644 --- a/language/stdlib/modules/doc/CoreAddresses.md +++ b/language/stdlib/modules/doc/CoreAddresses.md @@ -5,18 +5,18 @@ Module providing well-known addresses and related logic. -> Note: this module currently defines zero-argument functions like Self::LIBRA_ROOT_ADDRESS() using capitalization +> Note: this module currently defines zero-argument functions like Self::DIEM_ROOT_ADDRESS() using capitalization > in the name, following the convention for constants. Eventually, those functions are planned to become actual > global constants, once the Move language supports this feature. - [Constants](#@Constants_0) -- [Function `LIBRA_ROOT_ADDRESS`](#0x1_CoreAddresses_LIBRA_ROOT_ADDRESS) +- [Function `DIEM_ROOT_ADDRESS`](#0x1_CoreAddresses_DIEM_ROOT_ADDRESS) - [Function `CURRENCY_INFO_ADDRESS`](#0x1_CoreAddresses_CURRENCY_INFO_ADDRESS) - [Function `TREASURY_COMPLIANCE_ADDRESS`](#0x1_CoreAddresses_TREASURY_COMPLIANCE_ADDRESS) - [Function `VM_RESERVED_ADDRESS`](#0x1_CoreAddresses_VM_RESERVED_ADDRESS) - [Function `CORE_CODE_ADDRESS`](#0x1_CoreAddresses_CORE_CODE_ADDRESS) -- [Function `assert_libra_root`](#0x1_CoreAddresses_assert_libra_root) +- [Function `assert_diem_root`](#0x1_CoreAddresses_assert_diem_root) - [Function `assert_treasury_compliance`](#0x1_CoreAddresses_assert_treasury_compliance) - [Function `assert_vm`](#0x1_CoreAddresses_assert_vm) - [Function `assert_currency_info`](#0x1_CoreAddresses_assert_currency_info) @@ -43,12 +43,12 @@ The operation can only be performed by the account where currencies are register - + -The operation can only be performed by the account at 0xA550C18 (Libra Root) +The operation can only be performed by the account at 0xA550C18 (Diem Root) -
const ELIBRA_ROOT: u64 = 0;
+
const EDIEM_ROOT: u64 = 0;
 
@@ -73,17 +73,17 @@ The operation can only be performed by the VM - + -## Function `LIBRA_ROOT_ADDRESS` +## Function `DIEM_ROOT_ADDRESS` -The address of the Libra root account. This account is +The address of the Diem root account. This account is created in genesis, and cannot be changed. This address has ultimate authority over the permissions granted (or removed) from accounts on-chain. -
public fun LIBRA_ROOT_ADDRESS(): address
+
public fun DIEM_ROOT_ADDRESS(): address
 
@@ -92,7 +92,7 @@ accounts on-chain. Implementation -
public fun LIBRA_ROOT_ADDRESS(): address {
+
public fun DIEM_ROOT_ADDRESS(): address {
     0xA550C18
 }
 
@@ -105,9 +105,9 @@ accounts on-chain. ## Function `CURRENCY_INFO_ADDRESS` -The (singleton) address under which the 0x1::Libra::CurrencyInfo resource for +The (singleton) address under which the 0x1::Diem::CurrencyInfo resource for every registered currency is published. This is the same as the -LIBRA_ROOT_ADDRESS but there is no requirement that it must +DIEM_ROOT_ADDRESS but there is no requirement that it must be this from an operational viewpoint, so this is why this is separated out. @@ -210,14 +210,14 @@ account can be created at this address. - + -## Function `assert_libra_root` +## Function `assert_diem_root` -Assert that the account is the Libra root address. +Assert that the account is the Diem root address. -
public fun assert_libra_root(account: &signer)
+
public fun assert_diem_root(account: &signer)
 
@@ -226,8 +226,8 @@ Assert that the account is the Libra root address. Implementation -
public fun assert_libra_root(account: &signer) {
-    assert(Signer::address_of(account) == LIBRA_ROOT_ADDRESS(), Errors::requires_address(ELIBRA_ROOT))
+
public fun assert_diem_root(account: &signer) {
+    assert(Signer::address_of(account) == DIEM_ROOT_ADDRESS(), Errors::requires_address(EDIEM_ROOT))
 }
 
@@ -241,19 +241,19 @@ Assert that the account is the Libra root address.
pragma opaque;
-include AbortsIfNotLibraRoot;
+include AbortsIfNotDiemRoot;
 
-Specifies that a function aborts if the account does not have the Libra root address. +Specifies that a function aborts if the account does not have the Diem root address. - + -
schema AbortsIfNotLibraRoot {
+
schema AbortsIfNotDiemRoot {
     account: signer;
-    aborts_if Signer::spec_address_of(account) != LIBRA_ROOT_ADDRESS()
+    aborts_if Signer::spec_address_of(account) != DIEM_ROOT_ADDRESS()
         with Errors::REQUIRES_ADDRESS;
 }
 
diff --git a/language/stdlib/modules/doc/DesignatedDealer.md b/language/stdlib/modules/doc/DesignatedDealer.md index 0885e9f89c..fc4408f1ac 100644 --- a/language/stdlib/modules/doc/DesignatedDealer.md +++ b/language/stdlib/modules/doc/DesignatedDealer.md @@ -21,14 +21,14 @@ Module providing functionality for designated dealers. - [Module Specification](#@Module_Specification_1) -
use 0x1::Coin1;
+
use 0x1::Diem;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
 use 0x1::Event;
-use 0x1::Libra;
-use 0x1::LibraTimestamp;
 use 0x1::Roles;
 use 0x1::Signer;
 use 0x1::Vector;
+use 0x1::XUS;
 
@@ -316,7 +316,7 @@ and default tiers for each known currency at launch. assert(!exists<Dealer>(Signer::address_of(dd)), Errors::already_published(EDEALER)); move_to(dd, Dealer { mint_event_handle: Event::new_event_handle<ReceivedMintEvent>(dd) }); if (add_all_currencies) { - add_currency<Coin1>(dd, tc_account); + add_currency<XUS>(dd, tc_account); } else { add_currency<CoinType>(dd, tc_account); }; @@ -338,12 +338,12 @@ and default tiers for each known currency at launch. include Roles::AbortsIfNotTreasuryCompliance{account: tc_account}; include Roles::AbortsIfNotDesignatedDealer{account: dd}; aborts_if exists<Dealer>(dd_addr) with Errors::ALREADY_PUBLISHED; -include if (add_all_currencies) AddCurrencyAbortsIf<Coin1>{dd_addr: dd_addr} +include if (add_all_currencies) AddCurrencyAbortsIf<XUS>{dd_addr: dd_addr} else AddCurrencyAbortsIf<CoinType>{dd_addr: dd_addr}; modifies global<Dealer>(dd_addr); ensures exists<Dealer>(dd_addr); -modifies global<TierInfo<CoinType>>(dd_addr), global<TierInfo<Coin1>>(dd_addr); -ensures if (add_all_currencies) exists<TierInfo<Coin1>>(dd_addr) else exists<TierInfo<CoinType>>(dd_addr); +modifies global<TierInfo<CoinType>>(dd_addr), global<TierInfo<XUS>>(dd_addr); +ensures if (add_all_currencies) exists<TierInfo<XUS>>(dd_addr) else exists<TierInfo<CoinType>>(dd_addr);
@@ -373,15 +373,15 @@ multi-signer transactions in order to add a new currency to an existing DD. Roles::assert_treasury_compliance(tc_account); let dd_addr = Signer::address_of(dd); assert(exists_at(dd_addr), Errors::not_published(EDEALER)); - Libra::publish_preburn_to_account<CoinType>(dd, tc_account); + Diem::publish_preburn_to_account<CoinType>(dd, tc_account); assert(!exists<TierInfo<CoinType>>(dd_addr), Errors::already_published(EDEALER)); move_to(dd, TierInfo<CoinType> { - window_start: LibraTimestamp::now_microseconds(), + window_start: DiemTimestamp::now_microseconds(), window_inflow: 0, tiers: Vector::empty(), }); // Add tier amounts in base_units of CoinType - let coin_scaling_factor = Libra::scaling_factor<CoinType>(); + let coin_scaling_factor = Diem::scaling_factor<CoinType>(); add_tier<CoinType>(tc_account, dd_addr, TIER_0_DEFAULT * coin_scaling_factor); add_tier<CoinType>(tc_account, dd_addr, TIER_1_DEFAULT * coin_scaling_factor); add_tier<CoinType>(tc_account, dd_addr, TIER_2_DEFAULT * coin_scaling_factor); @@ -405,12 +405,12 @@ multi-signer transactions in order to add a new currency to an existing DD. include Roles::AbortsIfNotDesignatedDealer{account: dd}; include AbortsIfNoDealer{dd_addr: dd_addr}; include AddCurrencyAbortsIf<CoinType>{dd_addr: dd_addr}; -modifies global<Libra::Preburn<CoinType>>(dd_addr); +modifies global<Diem::Preburn<CoinType>>(dd_addr); modifies global<TierInfo<CoinType>>(dd_addr); ensures exists<TierInfo<CoinType>>(dd_addr); ensures global<TierInfo<CoinType>>(dd_addr) == TierInfo<CoinType> { - window_start: LibraTimestamp::spec_now_microseconds(), + window_start: DiemTimestamp::spec_now_microseconds(), window_inflow: 0, tiers: global<TierInfo<CoinType>>(dd_addr).tiers, }; @@ -426,10 +426,10 @@ multi-signer transactions in order to add a new currency to an existing DD.
schema AddCurrencyAbortsIf<CoinType> {
     dd_addr: address;
     aborts_if exists<TierInfo<CoinType>>(dd_addr) with Errors::ALREADY_PUBLISHED;
-    include Libra::AbortsIfNoCurrency<CoinType>;
-    aborts_if Libra::is_synthetic_currency<CoinType>() with Errors::INVALID_ARGUMENT;
-    aborts_if exists<Libra::Preburn<CoinType>>(dd_addr) with Errors::ALREADY_PUBLISHED;
-    include LibraTimestamp::AbortsIfNotOperating;
+    include Diem::AbortsIfNoCurrency<CoinType>;
+    aborts_if Diem::is_synthetic_currency<CoinType>() with Errors::INVALID_ARGUMENT;
+    aborts_if exists<Diem::Preburn<CoinType>>(dd_addr) with Errors::ALREADY_PUBLISHED;
+    include DiemTimestamp::AbortsIfNotOperating;
 }
 
@@ -600,7 +600,7 @@ multi-signer transactions in order to add a new currency to an existing DD. -
public fun tiered_mint<CoinType>(tc_account: &signer, amount: u64, dd_addr: address, tier_index: u64): Libra::Libra<CoinType>
+
public fun tiered_mint<CoinType>(tc_account: &signer, amount: u64, dd_addr: address, tier_index: u64): Diem::Diem<CoinType>
 
@@ -614,7 +614,7 @@ multi-signer transactions in order to add a new currency to an existing DD. amount: u64, dd_addr: address, tier_index: u64, -): Libra::Libra<CoinType> acquires Dealer, TierInfo { +): Diem::Diem<CoinType> acquires Dealer, TierInfo { Roles::assert_treasury_compliance(tc_account); assert(amount > 0, Errors::invalid_argument(EINVALID_MINT_AMOUNT)); assert(exists_at(dd_addr), Errors::not_published(EDEALER)); @@ -625,12 +625,12 @@ multi-signer transactions in order to add a new currency to an existing DD. Event::emit_event<ReceivedMintEvent>( &mut borrow_global_mut<Dealer>(dd_addr).mint_event_handle, ReceivedMintEvent { - currency_code: Libra::currency_code<CoinType>(), + currency_code: Diem::currency_code<CoinType>(), destination_address: dd_addr, amount: amount, }, ); - Libra::mint<CoinType>(tc_account, amount) + Diem::mint<CoinType>(tc_account, amount) }
@@ -645,17 +645,17 @@ multi-signer transactions in order to add a new currency to an existing DD.
pragma opaque;
 include TieredMintAbortsIf<CoinType>;
-modifies global<Libra::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-ensures exists<Libra::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+modifies global<Diem::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+ensures exists<Diem::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
 modifies global<TierInfo<CoinType>>(dd_addr);
 ensures exists<TierInfo<CoinType>>(dd_addr);
 ensures global<TierInfo<CoinType>>(dd_addr).tiers == old(global<TierInfo<CoinType>>(dd_addr).tiers);
 
 let dealer = global<TierInfo<CoinType>>(dd_addr);
 
-let current_time = LibraTimestamp::spec_now_microseconds();
+let current_time = DiemTimestamp::spec_now_microseconds();
 
-let currency_info = global<Libra::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+let currency_info = global<Diem::CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
 ensures old(dealer.window_start) <= dealer.window_start;
 ensures
     dealer.window_start == current_time && dealer.window_inflow == amount ||
@@ -686,11 +686,11 @@ multi-signer transactions in order to add a new currency to an existing DD.
     let tier_info = global<TierInfo<CoinType>>(dd_addr);
     aborts_if tier_index >= len(tier_info.tiers) with Errors::INVALID_ARGUMENT;
     
-    let new_amount = if (LibraTimestamp::spec_now_microseconds() <= tier_info.window_start + ONE_DAY) { tier_info.window_inflow + amount } else { amount };
+    let new_amount = if (DiemTimestamp::spec_now_microseconds() <= tier_info.window_start + ONE_DAY) { tier_info.window_inflow + amount } else { amount };
     aborts_if new_amount > tier_info.tiers[tier_index] with Errors::INVALID_ARGUMENT;
-    include LibraTimestamp::AbortsIfNotOperating;
-    aborts_if !exists<Libra::MintCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::REQUIRES_CAPABILITY;
-    include Libra::MintAbortsIf<CoinType>{value: amount};
+    include DiemTimestamp::AbortsIfNotOperating;
+    aborts_if !exists<Diem::MintCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::REQUIRES_CAPABILITY;
+    include Diem::MintAbortsIf<CoinType>{value: amount};
 }
 
@@ -802,7 +802,7 @@ that amount that can be minted according to the bounds for the tier_index<
fun reset_window<CoinType>(tier_info: &mut TierInfo<CoinType>) {
-    let current_time = LibraTimestamp::now_microseconds();
+    let current_time = DiemTimestamp::now_microseconds();
     if (current_time > ONE_DAY && current_time - ONE_DAY > tier_info.window_start) {
         tier_info.window_start = current_time;
         tier_info.window_inflow = 0;
@@ -820,9 +820,9 @@ that amount that can be minted according to the bounds for the tier_index<
 
 
 
pragma opaque;
-include LibraTimestamp::AbortsIfNotOperating;
+include DiemTimestamp::AbortsIfNotOperating;
 
-let current_time = LibraTimestamp::spec_now_microseconds();
+let current_time = DiemTimestamp::spec_now_microseconds();
 ensures
     if (current_time > ONE_DAY && current_time - ONE_DAY > old(tier_info).window_start)
         tier_info == update_field(update_field(old(tier_info),
diff --git a/language/stdlib/modules/doc/Diem.md b/language/stdlib/modules/doc/Diem.md
new file mode 100644
index 0000000000..7210efac26
--- /dev/null
+++ b/language/stdlib/modules/doc/Diem.md
@@ -0,0 +1,3453 @@
+
+
+
+# Module `0x1::Diem`
+
+The Diem module describes the concept of a coin in the Diem framework. It introduces the
+resource Diem::Diem<CoinType>, representing a coin of given coin type.
+The module defines functions operating on coins as well as functionality like
+minting and burning of coins.
+
+
+-  [Resource `Diem`](#0x1_Diem_Diem)
+-  [Resource `MintCapability`](#0x1_Diem_MintCapability)
+-  [Resource `BurnCapability`](#0x1_Diem_BurnCapability)
+-  [Struct `MintEvent`](#0x1_Diem_MintEvent)
+-  [Struct `BurnEvent`](#0x1_Diem_BurnEvent)
+-  [Struct `PreburnEvent`](#0x1_Diem_PreburnEvent)
+-  [Struct `CancelBurnEvent`](#0x1_Diem_CancelBurnEvent)
+-  [Struct `ToXDXExchangeRateUpdateEvent`](#0x1_Diem_ToXDXExchangeRateUpdateEvent)
+-  [Resource `CurrencyInfo`](#0x1_Diem_CurrencyInfo)
+-  [Resource `Preburn`](#0x1_Diem_Preburn)
+-  [Constants](#@Constants_0)
+-  [Function `initialize`](#0x1_Diem_initialize)
+-  [Function `publish_burn_capability`](#0x1_Diem_publish_burn_capability)
+-  [Function `mint`](#0x1_Diem_mint)
+-  [Function `burn`](#0x1_Diem_burn)
+-  [Function `cancel_burn`](#0x1_Diem_cancel_burn)
+-  [Function `mint_with_capability`](#0x1_Diem_mint_with_capability)
+-  [Function `preburn_with_resource`](#0x1_Diem_preburn_with_resource)
+-  [Function `create_preburn`](#0x1_Diem_create_preburn)
+-  [Function `publish_preburn_to_account`](#0x1_Diem_publish_preburn_to_account)
+-  [Function `preburn_to`](#0x1_Diem_preburn_to)
+-  [Function `burn_with_capability`](#0x1_Diem_burn_with_capability)
+-  [Function `burn_with_resource_cap`](#0x1_Diem_burn_with_resource_cap)
+-  [Function `cancel_burn_with_capability`](#0x1_Diem_cancel_burn_with_capability)
+-  [Function `burn_now`](#0x1_Diem_burn_now)
+-  [Function `remove_burn_capability`](#0x1_Diem_remove_burn_capability)
+-  [Function `preburn_value`](#0x1_Diem_preburn_value)
+-  [Function `zero`](#0x1_Diem_zero)
+-  [Function `value`](#0x1_Diem_value)
+-  [Function `split`](#0x1_Diem_split)
+-  [Function `withdraw`](#0x1_Diem_withdraw)
+-  [Function `withdraw_all`](#0x1_Diem_withdraw_all)
+-  [Function `join`](#0x1_Diem_join)
+-  [Function `deposit`](#0x1_Diem_deposit)
+-  [Function `destroy_zero`](#0x1_Diem_destroy_zero)
+-  [Function `register_currency`](#0x1_Diem_register_currency)
+-  [Function `register_SCS_currency`](#0x1_Diem_register_SCS_currency)
+-  [Function `market_cap`](#0x1_Diem_market_cap)
+-  [Function `approx_xdx_for_value`](#0x1_Diem_approx_xdx_for_value)
+-  [Function `approx_xdx_for_coin`](#0x1_Diem_approx_xdx_for_coin)
+-  [Function `is_currency`](#0x1_Diem_is_currency)
+-  [Function `is_SCS_currency`](#0x1_Diem_is_SCS_currency)
+-  [Function `is_synthetic_currency`](#0x1_Diem_is_synthetic_currency)
+-  [Function `scaling_factor`](#0x1_Diem_scaling_factor)
+-  [Function `fractional_part`](#0x1_Diem_fractional_part)
+-  [Function `currency_code`](#0x1_Diem_currency_code)
+-  [Function `update_xdx_exchange_rate`](#0x1_Diem_update_xdx_exchange_rate)
+-  [Function `xdx_exchange_rate`](#0x1_Diem_xdx_exchange_rate)
+-  [Function `update_minting_ability`](#0x1_Diem_update_minting_ability)
+-  [Function `assert_is_currency`](#0x1_Diem_assert_is_currency)
+-  [Function `assert_is_SCS_currency`](#0x1_Diem_assert_is_SCS_currency)
+-  [Module Specification](#@Module_Specification_1)
+    -  [Access Control](#@Access_Control_2)
+        -  [Minting](#@Minting_3)
+        -  [Burning](#@Burning_4)
+        -  [Preburning](#@Preburning_5)
+        -  [Update Exchange Rates](#@Update_Exchange_Rates_6)
+    -  [Helper Functions](#@Helper_Functions_7)
+
+
+
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Event;
+use 0x1::FixedPoint32;
+use 0x1::RegisteredCurrencies;
+use 0x1::Roles;
+use 0x1::Signer;
+
+ + + + + +## Resource `Diem` + +The Diem resource defines the Diem coin for each currency in +Diem. Each "coin" is coupled with a type CoinType specifying the +currency of the coin, and a value field specifying the value +of the coin (in the base units of the currency CoinType +and specified in the CurrencyInfo resource for that CoinType +published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). + + +
resource struct Diem<CoinType>
+
+ + + +
+Fields + + +
+
+value: u64 +
+
+ The value of this coin in the base units for CoinType +
+
+ + +
+ + + +## Resource `MintCapability` + +The MintCapability resource defines a capability to allow minting +of coins of CoinType currency by the holder of this capability. +This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() +account or the 0x1::XDX module (and CoreAddresses::DIEM_ROOT_ADDRESS() in testnet). + + +
resource struct MintCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `BurnCapability` + +The BurnCapability resource defines a capability to allow coins +of CoinType currency to be burned by the holder of it. + + +
resource struct BurnCapability<CoinType>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Struct `MintEvent` + +A MintEvent is emitted every time a Diem coin is minted. This +contains the amount minted (in base units of the currency being +minted) along with the currency_code for the coin(s) being +minted, and that is defined in the currency_code field of the +CurrencyInfo resource for the currency. + + +
struct MintEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds added to the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+ + +
+ + + +## Struct `BurnEvent` + +A BurnEvent is emitted every time a non-synthetic Diem coin +(i.e., a Diem coin with false is_synthetic field) is +burned. It contains the amount burned in base units for the +currency, along with the currency_code for the coins being burned +(and as defined in the CurrencyInfo resource for that currency). +It also contains the preburn_address from which the coin is +extracted for burning. + + +
struct BurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ Funds removed from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that stored the now-burned funds +
+
+ + +
+ + + +## Struct `PreburnEvent` + +A PreburnEvent is emitted every time an amount of funds with +a coin type currency_code are moved to a Preburn resource under +the account at the address preburn_address. + + +
struct PreburnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds waiting to be removed (burned) from the system +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address with the Preburn resource that now holds the funds +
+
+ + +
+ + + +## Struct `CancelBurnEvent` + +A CancelBurnEvent is emitted every time funds of amount in a Preburn +resource at preburn_address is canceled (removed from the +preburn, but not burned). The currency of the funds is given by the +currency_code as defined in the CurrencyInfo for that currency. + + +
struct CancelBurnEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of funds returned +
+
+currency_code: vector<u8> +
+
+ ASCII encoded symbol for the coin type (e.g., "XDX") +
+
+preburn_address: address +
+
+ Address of the Preburn resource that held the now-returned funds. +
+
+ + +
+ + + +## Struct `ToXDXExchangeRateUpdateEvent` + +An ToXDXExchangeRateUpdateEvent is emitted every time the to-XDX exchange +rate for the currency given by currency_code is updated. + + +
struct ToXDXExchangeRateUpdateEvent
+
+ + + +
+Fields + + +
+
+currency_code: vector<u8> +
+
+ The currency code of the currency whose exchange rate was updated. +
+
+new_to_xdx_exchange_rate: u64 +
+
+ The new on-chain to-XDX exchange rate between the + currency_code currency and XDX. Represented in conversion + between the (on-chain) base-units for the currency and microdiem. +
+
+ + +
+ + + +## Resource `CurrencyInfo` + +The CurrencyInfo<CoinType> resource stores the various +pieces of information needed for a currency (CoinType) that is +registered on-chain. This resource _must_ be published under the +address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of +CoinType as a recognized currency on-chain to be successful. At +the time of registration, the MintCapability<CoinType> and +BurnCapability<CoinType> capabilities are returned to the caller. +Unless they are specified otherwise the fields in this resource are immutable. + + +
resource struct CurrencyInfo<CoinType>
+
+ + + +
+Fields + + +
+
+total_value: u128 +
+
+ The total value for the currency represented by CoinType. Mutable. +
+
+preburn_value: u64 +
+
+ Value of funds that are in the process of being burned. Mutable. +
+
+to_xdx_exchange_rate: FixedPoint32::FixedPoint32 +
+
+ The (rough) exchange rate from CoinType to XDX. Mutable. +
+
+is_synthetic: bool +
+
+ Holds whether or not this currency is synthetic (contributes to the + off-chain reserve) or not. An example of such a synthetic +currency would be the XDX. +
+
+scaling_factor: u64 +
+
+ The scaling factor for the coin (i.e. the amount to divide by + to get to the human-readable representation for this currency). + e.g. 10^6 for XUS +
+
+fractional_part: u64 +
+
+ The smallest fractional part (number of decimal places) to be + used in the human-readable representation for the currency (e.g. + 10^2 for XUS cents) +
+
+currency_code: vector<u8> +
+
+ The code symbol for this CoinType. ASCII encoded. + e.g. for "XDX" this is x"4C4252". No character limit. +
+
+can_mint: bool +
+
+ Minting of new currency of CoinType is allowed only if this field is true. + We may want to disable the ability to mint further coins of a + currency while that currency is still around. This allows us to + keep the currency in circulation while disallowing further + creation of coins in the CoinType currency. Mutable. +
+
+mint_events: Event::EventHandle<Diem::MintEvent> +
+
+ Event stream for minting and where MintEvents will be emitted. +
+
+burn_events: Event::EventHandle<Diem::BurnEvent> +
+
+ Event stream for burning, and where BurnEvents will be emitted. +
+
+preburn_events: Event::EventHandle<Diem::PreburnEvent> +
+
+ Event stream for preburn requests, and where all + PreburnEvents for this CoinType will be emitted. +
+
+cancel_burn_events: Event::EventHandle<Diem::CancelBurnEvent> +
+
+ Event stream for all cancelled preburn requests for this + CoinType. +
+
+exchange_rate_update_events: Event::EventHandle<Diem::ToXDXExchangeRateUpdateEvent> +
+
+ Event stream for emiting exchange rate change events +
+
+ + +
+ +
+Specification + +Data structure invariant for CurrencyInfo. Asserts that CurrencyInfo.scaling_factor +is always greater than 0 and not greater than MAX_SCALING_FACTOR + + +
invariant 0 < scaling_factor && scaling_factor <= MAX_SCALING_FACTOR;
+
+ + + +
+ + + +## Resource `Preburn` + +A holding area where funds that will subsequently be burned wait while their underlying +assets are moved off-chain. +This resource can only be created by the holder of a BurnCapability. An account that +contains this address has the authority to initiate a burn request. A burn request can be +resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) +returning the funds to the account that initiated the burn request. +Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. + + +
resource struct Preburn<CoinType>
+
+ + + +
+Fields + + +
+
+to_burn: Diem::Diem<CoinType> +
+
+ A single pending burn amount. + There is no pending burn request if the value in to_burn is 0 +
+
+ + +
+ + + +## Constants + + + + +Maximum u64 value. + + +
const MAX_U64: u64 = 18446744073709551615;
+
+ + + + + +Maximum u128 value. + + +
const MAX_U128: u128 = 340282366920938463463374607431768211455;
+
+ + + + + +A property expected of a CurrencyInfo resource didn't hold + + +
const ECURRENCY_INFO: u64 = 1;
+
+ + + + + +A withdrawal greater than the value of the coin was attempted. + + +
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 10;
+
+ + + + + +A BurnCapability resource is in an unexpected state. + + +
const EBURN_CAPABILITY: u64 = 0;
+
+ + + + + +A property expected of the coin provided didn't hold + + +
const ECOIN: u64 = 7;
+
+ + + + + +The destruction of a non-zero coin was attempted. Non-zero coins must be burned. + + +
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 8;
+
+ + + + + +The currency specified is a synthetic (non-fiat) currency + + +
const EIS_SYNTHETIC_CURRENCY: u64 = 6;
+
+ + + + + +Minting is not allowed for the specified currency + + +
const EMINTING_NOT_ALLOWED: u64 = 5;
+
+ + + + + +A property expected of MintCapability didn't hold + + +
const EMINT_CAPABILITY: u64 = 9;
+
+ + + + + +A property expected of a Preburn resource didn't hold + + +
const EPREBURN: u64 = 2;
+
+ + + + + +A burn was attempted on Preburn resource that cointained no coins + + +
const EPREBURN_EMPTY: u64 = 4;
+
+ + + + + +The preburn slot is already occupied with coins to be burned. + + +
const EPREBURN_OCCUPIED: u64 = 3;
+
+ + + + + +The maximum value for CurrencyInfo.scaling_factor + + +
const MAX_SCALING_FACTOR: u64 = 10000000000;
+
+ + + + + +## Function `initialize` + +Initialization of the Diem module. Initializes the set of +registered currencies in the 0x1::RegisteredCurrencies on-chain +config, and publishes the CurrencyRegistrationCapability under the +CoreAddresses::DIEM_ROOT_ADDRESS(). This can only be called from genesis. + + +
public fun initialize(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    // Operational constraint
+    CoreAddresses::assert_diem_root(dr_account);
+    RegisteredCurrencies::initialize(dr_account);
+}
+
+ + + +
+ +
+Specification + + + +
include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+include RegisteredCurrencies::InitializeAbortsIf;
+include RegisteredCurrencies::InitializeEnsures;
+
+ + + +
+ + + +## Function `publish_burn_capability` + +Publishes the BurnCapability cap for the CoinType currency under account. CoinType +must be a registered currency type. The caller must pass a treasury compliance account. + + +
public fun publish_burn_capability<CoinType>(tc_account: &signer, cap: Diem::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun publish_burn_capability<CoinType>(
+    tc_account: &signer,
+    cap: BurnCapability<CoinType>,
+) {
+    Roles::assert_treasury_compliance(tc_account);
+    assert_is_currency<CoinType>();
+    assert(
+        !exists<BurnCapability<CoinType>>(Signer::address_of(tc_account)),
+        Errors::already_published(EBURN_CAPABILITY)
+    );
+    move_to(tc_account, cap)
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if !spec_is_currency<CoinType>();
+include PublishBurnCapAbortsIfs<CoinType>;
+
+ + + + + + + +
schema PublishBurnCapAbortsIfs<CoinType> {
+    tc_account: &signer;
+}
+
+ + +Must abort if tc_account does not have the TreasuryCompliance role. +Only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. + + +
schema PublishBurnCapAbortsIfs<CoinType> {
+    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+    aborts_if exists<BurnCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::ALREADY_PUBLISHED;
+}
+
+ + + + + + + +
schema PublishBurnCapEnsures<CoinType> {
+    tc_account: &signer;
+    ensures exists<BurnCapability<CoinType>>(Signer::spec_address_of(tc_account));
+}
+
+ + + +
+ + + +## Function `mint` + +Mints amount of currency. The account must hold a +MintCapability<CoinType> at the top-level in order for this call +to be successful. + + +
public fun mint<CoinType>(account: &signer, value: u64): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint<CoinType>(account: &signer, value: u64): Diem<CoinType>
+acquires CurrencyInfo, MintCapability {
+    let addr = Signer::address_of(account);
+    assert(exists<MintCapability<CoinType>>(addr), Errors::requires_capability(EMINT_CAPABILITY));
+    mint_with_capability(
+        value,
+        borrow_global<MintCapability<CoinType>>(addr)
+    )
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+
+ + +Must abort if the account does not have the MintCapability [[H1]][PERMISSION]. + + +
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
+include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + +
+ + + +## Function `burn` + +Burns the coins currently held in the Preburn resource held under preburn_address. +Calls to this functions will fail if the account does not have a +published BurnCapability for the CoinType published under it. + + +
public fun burn<CoinType>(account: &signer, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+) acquires BurnCapability, CurrencyInfo, Preburn {
+    let addr = Signer::address_of(account);
+    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
+    burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(addr)
+    )
+}
+
+ + + +
+ +
+Specification + + + +
include BurnAbortsIf<CoinType>;
+include BurnEnsures<CoinType>;
+
+ + + + + + + +
schema BurnAbortsIf<CoinType> {
+    account: signer;
+    preburn_address: address;
+}
+
+ + +Must abort if the account does not have the BurnCapability [[H3]][PERMISSION]. + + +
schema BurnAbortsIf<CoinType> {
+    aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
+    include AbortsIfNoPreburn<CoinType>;
+    include BurnWithResourceCapAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+}
+
+ + + + + + + +
schema BurnEnsures<CoinType> {
+    account: signer;
+    preburn_address: address;
+    include BurnWithResourceCapEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+}
+
+ + + + + + + +
schema AbortsIfNoPreburn<CoinType> {
+    preburn_address: address;
+    aborts_if !exists<Preburn<CoinType>>(preburn_address) with Errors::NOT_PUBLISHED;
+}
+
+ + + +
+ + + +## Function `cancel_burn` + +Cancels the current burn request in the Preburn resource held +under the preburn_address, and returns the coins. +Calls to this will fail if the sender does not have a published +BurnCapability<CoinType>, or if there is no preburn request +outstanding in the Preburn resource under preburn_address. + + +
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn<CoinType>(
+    account: &signer,
+    preburn_address: address
+): Diem<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
+    let addr = Signer::address_of(account);
+    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
+    cancel_burn_with_capability(
+        preburn_address,
+        borrow_global<BurnCapability<CoinType>>(addr)
+    )
+}
+
+ + + +
+ +
+Specification + + +Must abort if the account does not have the BurnCapability [[H3]][PERMISSION]. + + +
aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
+include CancelBurnWithCapAbortsIf<CoinType>;
+include CancelBurnWithCapEnsures<CoinType>;
+
+ + + +
+ + + +## Function `mint_with_capability` + +Mint a new Diem coin of CoinType currency worth value. The +caller must have a reference to a MintCapability<CoinType>. Only +the treasury compliance account or the 0x1::XDX module can acquire such a +reference. + + +
public fun mint_with_capability<CoinType>(value: u64, _capability: &Diem::MintCapability<CoinType>): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun mint_with_capability<CoinType>(
+    value: u64,
+    _capability: &MintCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    let currency_code = currency_code<CoinType>();
+    // update market cap resource to reflect minting
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(info.can_mint, Errors::invalid_state(EMINTING_NOT_ALLOWED));
+    assert(MAX_U128 - info.total_value >= (value as u128), Errors::limit_exceeded(ECURRENCY_INFO));
+    info.total_value = info.total_value + (value as u128);
+    // don't emit mint events for synthetic currenices as this does not
+    // change the total value of fiat currencies held on-chain.
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.mint_events,
+            MintEvent{
+                amount: value,
+                currency_code,
+            }
+        );
+    };
+
+    Diem<CoinType> { value }
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+
+let currency_info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+include MintAbortsIf<CoinType>;
+include MintEnsures<CoinType>;
+
+ + + + + + + +
schema MintAbortsIf<CoinType> {
+    value: u64;
+    include AbortsIfNoCurrency<CoinType>;
+    aborts_if !spec_currency_info<CoinType>().can_mint with Errors::INVALID_STATE;
+    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128() with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema MintEnsures<CoinType> {
+    value: u64;
+    result: Diem<CoinType>;
+    
+    let currency_info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    ensures currency_info
+        == update_field(old(currency_info), total_value, old(currency_info.total_value) + value);
+    ensures result.value == value;
+}
+
+ + + +
+ + + +## Function `preburn_with_resource` + +Add the coin to the preburn.to_burn field in the Preburn resource +held at the address preburn_address if it is empty, otherwise raise +a PendingPreburn Error (code 6). Emits a PreburnEvent to +the preburn_events event stream in the CurrencyInfo for the +CoinType passed in. However, if the currency being preburned has true +is_synthetic then no PreburnEvent event will be emitted. + + +
public fun preburn_with_resource<CoinType>(coin: Diem::Diem<CoinType>, preburn: &mut Diem::Preburn<CoinType>, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun preburn_with_resource<CoinType>(
+    coin: Diem<CoinType>,
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+) acquires CurrencyInfo {
+    let coin_value = value(&coin);
+    // Throw if already occupied
+    assert(value(&preburn.to_burn) == 0, Errors::invalid_state(EPREBURN_OCCUPIED));
+    deposit(&mut preburn.to_burn, coin);
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(MAX_U64 - info.preburn_value >= coin_value, Errors::limit_exceeded(ECOIN));
+    info.preburn_value = info.preburn_value + coin_value;
+    // don't emit preburn events for synthetic currenices as this does not
+    // change the total value of fiat currencies held on-chain, and
+    // therefore no off-chain movement of the backing coins needs to be
+    // performed.
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.preburn_events,
+            PreburnEvent{
+                amount: coin_value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ +
+Specification + + + +
include PreburnWithResourceAbortsIf<CoinType>{amount: coin.value};
+include PreburnEnsures<CoinType>{amount: coin.value};
+
+ + + + + + + +
schema PreburnWithResourceAbortsIf<CoinType> {
+    amount: u64;
+    preburn: Preburn<CoinType>;
+    aborts_if preburn.to_burn.value != 0 with Errors::INVALID_STATE;
+    include PreburnAbortsIf<CoinType>;
+}
+
+ + + + + + + +
schema PreburnAbortsIf<CoinType> {
+    amount: u64;
+    include AbortsIfNoCurrency<CoinType>;
+    aborts_if spec_currency_info<CoinType>().preburn_value + amount > MAX_U64 with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema PreburnEnsures<CoinType> {
+    amount: u64;
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().preburn_value
+                == old(spec_currency_info<CoinType>().preburn_value) + amount;
+}
+
+ + + +
+ + + +## Function `create_preburn` + +Create a Preburn<CoinType> resource + + +
public fun create_preburn<CoinType>(tc_account: &signer): Diem::Preburn<CoinType>
+
+ + + +
+Implementation + + +
public fun create_preburn<CoinType>(
+    tc_account: &signer
+): Preburn<CoinType> {
+    Roles::assert_treasury_compliance(tc_account);
+    assert_is_currency<CoinType>();
+    Preburn<CoinType> { to_burn: zero<CoinType>() }
+}
+
+ + + +
+ +
+Specification + + + +
include CreatePreburnAbortsIf<CoinType>;
+
+ + + + + + + +
schema CreatePreburnAbortsIf<CoinType> {
+    tc_account: signer;
+    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+    include AbortsIfNoCurrency<CoinType>;
+}
+
+ + + +
+ + + +## Function `publish_preburn_to_account` + +Publishes a Preburn resource under account. This function is +used for bootstrapping the designated dealer at account-creation +time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating +this resource for the designated dealer. + + +
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun publish_preburn_to_account<CoinType>(
+    account: &signer,
+    tc_account: &signer
+) acquires CurrencyInfo {
+    Roles::assert_designated_dealer(account);
+    Roles::assert_treasury_compliance(tc_account);
+    assert(!is_synthetic_currency<CoinType>(), Errors::invalid_argument(EIS_SYNTHETIC_CURRENCY));
+    assert(!exists<Preburn<CoinType>>(Signer::address_of(account)), Errors::already_published(EPREBURN));
+    move_to(account, create_preburn<CoinType>(tc_account))
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<Preburn<CoinType>>(Signer::spec_address_of(account));
+
+ + +The premission "PreburnCurrency" is granted to DesignatedDealer [[H4]][PERMISSION]. +Must abort if the account does not have the DesignatedDealer role. + + +
include Roles::AbortsIfNotDesignatedDealer;
+
+ + +Preburn is published under the DesignatedDealer account. + + +
ensures exists<Preburn<CoinType>>(Signer::spec_address_of(account));
+include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+include AbortsIfNoCurrency<CoinType>;
+aborts_if is_synthetic_currency<CoinType>() with Errors::INVALID_ARGUMENT;
+aborts_if exists<Preburn<CoinType>>(Signer::spec_address_of(account)) with Errors::ALREADY_PUBLISHED;
+
+ + + +
+ + + +## Function `preburn_to` + +Sends coin to the preburn queue for account, where it will wait to either be burned +or returned to the balance of account. +Calls to this function will fail if account does not have a +Preburn<CoinType> resource published under it. + + +
public fun preburn_to<CoinType>(account: &signer, coin: Diem::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun preburn_to<CoinType>(
+    account: &signer,
+    coin: Diem<CoinType>
+) acquires CurrencyInfo, Preburn {
+    Roles::assert_designated_dealer(account);
+    let sender = Signer::address_of(account);
+    assert(exists<Preburn<CoinType>>(sender), Errors::not_published(EPREBURN));
+    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
+}
+
+ + + +
+ +
+Specification + + + + + + +
let preburn = global<Preburn<CoinType>>(Signer::spec_address_of(account));
+include PreburnToAbortsIf<CoinType>{amount: coin.value};
+include PreburnEnsures<CoinType>{preburn: preburn, amount: coin.value};
+
+ + + + + + + +
schema PreburnToAbortsIf<CoinType> {
+    account: signer;
+    amount: u64;
+    
+    let account_addr = Signer::spec_address_of(account);
+    
+    let preburn = global<Preburn<CoinType>>(account_addr);
+}
+
+ + +Must abort if the account does have the Preburn resource [[H4]][PERMISSION]. + + +
schema PreburnToAbortsIf<CoinType> {
+    include Roles::AbortsIfNotDesignatedDealer;
+    include AbortsIfNoPreburn<CoinType>{preburn_address: account_addr};
+    include PreburnWithResourceAbortsIf<CoinType>{preburn: preburn};
+}
+
+ + + +
+ + + +## Function `burn_with_capability` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn.to_burn area for +CoinType is empty. + + +
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &Diem::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_with_capability<CoinType>(
+    preburn_address: address,
+    capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn to_burn area
+    assert(exists<Preburn<CoinType>>(preburn_address), Errors::not_published(EPREBURN));
+    burn_with_resource_cap(
+        borrow_global_mut<Preburn<CoinType>>(preburn_address),
+        preburn_address,
+        capability
+    )
+}
+
+ + + +
+ +
+Specification + + + +
include AbortsIfNoPreburn<CoinType>;
+include BurnWithResourceCapAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+include BurnWithResourceCapEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
+
+ + + +
+ + + +## Function `burn_with_resource_cap` + +Permanently removes the coins held in the Preburn resource (in to_burn field) +stored at preburn_address and updates the market cap accordingly. +This function can only be called by the holder of a BurnCapability<CoinType>. +Calls to this function will fail if the there is no Preburn<CoinType> +resource under preburn_address, or, if the preburn to_burn area for +CoinType is empty (error code 7). + + +
fun burn_with_resource_cap<CoinType>(preburn: &mut Diem::Preburn<CoinType>, preburn_address: address, _capability: &Diem::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
fun burn_with_resource_cap<CoinType>(
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo {
+    let currency_code = currency_code<CoinType>();
+    // Abort if no coin present in preburn area
+    assert(preburn.to_burn.value > 0, Errors::invalid_state(EPREBURN_EMPTY));
+    // destroy the coin in Preburn area
+    let Diem { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    assert_is_currency<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    assert(info.total_value >= (value as u128), Errors::limit_exceeded(ECURRENCY_INFO));
+    info.total_value = info.total_value - (value as u128);
+    assert(info.preburn_value >= value, Errors::limit_exceeded(EPREBURN));
+    info.preburn_value = info.preburn_value - value;
+    // don't emit burn events for synthetic currenices as this does not
+    // change the total value of fiat currencies held on-chain.
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.burn_events,
+            BurnEvent {
+                amount: value,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+}
+
+ + + +
+ +
+Specification + + + +
include BurnWithResourceCapAbortsIf<CoinType>;
+include BurnWithResourceCapEnsures<CoinType>;
+
+ + + + + + + +
schema BurnWithResourceCapAbortsIf<CoinType> {
+    preburn: Preburn<CoinType>;
+    include AbortsIfNoCurrency<CoinType>;
+    
+    let to_burn = preburn.to_burn.value;
+    
+    let info = spec_currency_info<CoinType>();
+    aborts_if to_burn == 0 with Errors::INVALID_STATE;
+    aborts_if info.total_value < to_burn with Errors::LIMIT_EXCEEDED;
+    aborts_if info.preburn_value < to_burn with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema BurnWithResourceCapEnsures<CoinType> {
+    preburn: Preburn<CoinType>;
+    ensures spec_currency_info<CoinType>().total_value
+            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
+    ensures spec_currency_info<CoinType>().preburn_value
+            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
+}
+
+ + + +
+ + + +## Function `cancel_burn_with_capability` + +Cancels the burn request in the Preburn resource stored at preburn_address and +return the coins to the caller. +This function can only be called by the holder of a +BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource +at preburn_address does not contain a pending burn request. + + +
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &Diem::BurnCapability<CoinType>): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun cancel_burn_with_capability<CoinType>(
+    preburn_address: address,
+    _capability: &BurnCapability<CoinType>
+): Diem<CoinType> acquires CurrencyInfo, Preburn {
+    // destroy the coin in the preburn area
+    assert(exists<Preburn<CoinType>>(preburn_address), Errors::not_published(EPREBURN));
+    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
+    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
+    // update the market cap
+    let currency_code = currency_code<CoinType>();
+    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    let amount = value(&coin);
+    assert(info.preburn_value >= amount, Errors::limit_exceeded(EPREBURN));
+    info.preburn_value = info.preburn_value - amount;
+    // Don't emit cancel burn events for synthetic currencies. cancel_burn
+    // shouldn't be be used for synthetic coins in the first place.
+    if (!info.is_synthetic) {
+        Event::emit_event(
+            &mut info.cancel_burn_events,
+            CancelBurnEvent {
+                amount,
+                currency_code,
+                preburn_address,
+            }
+        );
+    };
+
+    coin
+}
+
+ + + +
+ +
+Specification + + + +
include CancelBurnWithCapAbortsIf<CoinType>;
+include CancelBurnWithCapEnsures<CoinType>;
+
+ + + + + + + +
schema CancelBurnWithCapAbortsIf<CoinType> {
+    preburn_address: address;
+    
+    let info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    
+    let amount = global<Preburn<CoinType>>(preburn_address).to_burn.value;
+    aborts_if !exists<Preburn<CoinType>>(preburn_address) with Errors::NOT_PUBLISHED;
+    include AbortsIfNoCurrency<CoinType>;
+    aborts_if info.preburn_value < amount with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema CancelBurnWithCapEnsures<CoinType> {
+    preburn_address: address;
+    
+    let preburn_value = global<Preburn<CoinType>>(preburn_address).to_burn.value;
+    
+    let total_preburn_value =
+        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value;
+    ensures preburn_value == 0;
+    ensures total_preburn_value == old(total_preburn_value) - old(preburn_value);
+}
+
+ + + +
+ + + +## Function `burn_now` + +A shortcut for immediately burning a coin. This calls preburn followed by a subsequent burn, and is +used for administrative burns, like unpacking an XDX coin or charging fees. + + +
public fun burn_now<CoinType>(coin: Diem::Diem<CoinType>, preburn: &mut Diem::Preburn<CoinType>, preburn_address: address, capability: &Diem::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun burn_now<CoinType>(
+    coin: Diem<CoinType>,
+    preburn: &mut Preburn<CoinType>,
+    preburn_address: address,
+    capability: &BurnCapability<CoinType>
+) acquires CurrencyInfo {
+    assert(coin.value > 0, Errors::invalid_argument(ECOIN));
+    preburn_with_resource(coin, preburn, preburn_address);
+    burn_with_resource_cap(preburn, preburn_address, capability);
+}
+
+ + + +
+ +
+Specification + + + +
include BurnNowAbortsIf<CoinType>;
+ensures preburn.to_burn.value == 0;
+
+let info = spec_currency_info<CoinType>();
+ensures info.total_value == old(info.total_value) - coin.value;
+
+ + + + + + + +
schema BurnNowAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    preburn: Preburn<CoinType>;
+    aborts_if coin.value == 0 with Errors::INVALID_ARGUMENT;
+    include PreburnWithResourceAbortsIf<CoinType>{amount: coin.value};
+    
+    let info = spec_currency_info<CoinType>();
+    aborts_if info.total_value < coin.value with Errors::LIMIT_EXCEEDED;
+}
+
+ + + +
+ + + +## Function `remove_burn_capability` + +Removes and returns the BurnCapability<CoinType> from account. +Calls to this function will fail if account does not have a +published BurnCapability<CoinType> resource at the top-level. + + +
public fun remove_burn_capability<CoinType>(account: &signer): Diem::BurnCapability<CoinType>
+
+ + + +
+Implementation + + +
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
+acquires BurnCapability {
+    let addr = Signer::address_of(account);
+    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
+    move_from<BurnCapability<CoinType>>(addr)
+}
+
+ + + +
+ +
+Specification + + + +
include AbortsIfNoBurnCapability<CoinType>;
+
+ + + + + + + +
schema AbortsIfNoBurnCapability<CoinType> {
+    account: signer;
+    aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
+}
+
+ + + +
+ + + +## Function `preburn_value` + +Returns the total value of Diem<CoinType> that is waiting to be +burned throughout the system (i.e. the sum of all outstanding +preburn requests across all preburn resources for the CoinType +currency). + + +
public fun preburn_value<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
+}
+
+ + + +
+ + + +## Function `zero` + +Create a new Diem<CoinType> with a value of 0. Anyone can call +this and it will be successful as long as CoinType is a registered currency. + + +
public fun zero<CoinType>(): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun zero<CoinType>(): Diem<CoinType> {
+    assert_is_currency<CoinType>();
+    Diem<CoinType> { value: 0 }
+}
+
+ + + +
+ + + +## Function `value` + +Returns the value of the passed in coin. The value is +represented in the base units for the currency represented by +CoinType. + + +
public fun value<CoinType>(coin: &Diem::Diem<CoinType>): u64
+
+ + + +
+Implementation + + +
public fun value<CoinType>(coin: &Diem<CoinType>): u64 {
+    coin.value
+}
+
+ + + +
+ + + +## Function `split` + +Removes amount of value from the passed in coin. Returns the +remaining balance of the passed in coin, along with another coin +with value equal to amount. Calls will fail if amount > Diem::value(&coin). + + +
public fun split<CoinType>(coin: Diem::Diem<CoinType>, amount: u64): (Diem::Diem<CoinType>, Diem::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun split<CoinType>(coin: Diem<CoinType>, amount: u64): (Diem<CoinType>, Diem<CoinType>) {
+    let other = withdraw(&mut coin, amount);
+    (coin, other)
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if coin.value < amount with Errors::LIMIT_EXCEEDED;
+ensures result_1.value == coin.value - amount;
+ensures result_2.value == amount;
+
+ + + +
+ + + +## Function `withdraw` + +Withdraw amount from the passed-in coin, where the original coin is modified in place. +After this function is executed, the original coin will have +value = original_value - amount, and the new coin will have a value = amount. +Calls will abort if the passed-in amount is greater than the +value of the passed-in coin. + + +
public fun withdraw<CoinType>(coin: &mut Diem::Diem<CoinType>, amount: u64): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw<CoinType>(coin: &mut Diem<CoinType>, amount: u64): Diem<CoinType> {
+    // Check that `amount` is less than the coin's value
+    assert(coin.value >= amount, Errors::limit_exceeded(EAMOUNT_EXCEEDS_COIN_VALUE));
+    coin.value = coin.value - amount;
+    Diem { value: amount }
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include WithdrawAbortsIf<CoinType>;
+ensures coin.value == old(coin.value) - amount;
+ensures result.value == amount;
+
+ + + + + + + +
schema WithdrawAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    amount: u64;
+    aborts_if coin.value < amount with Errors::LIMIT_EXCEEDED;
+}
+
+ + + +
+ + + +## Function `withdraw_all` + +Return a Diem<CoinType> worth coin.value and reduces the value of the input coin to +zero. Does not abort. + + +
public fun withdraw_all<CoinType>(coin: &mut Diem::Diem<CoinType>): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun withdraw_all<CoinType>(coin: &mut Diem<CoinType>): Diem<CoinType> {
+    let val = coin.value;
+    withdraw(coin, val)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if false;
+ensures result.value == old(coin.value);
+ensures coin.value == 0;
+
+ + + +
+ + + +## Function `join` + +Takes two coins as input, returns a single coin with the total value of both coins. +Destroys on of the input coins. + + +
public fun join<CoinType>(coin1: Diem::Diem<CoinType>, coin2: Diem::Diem<CoinType>): Diem::Diem<CoinType>
+
+ + + +
+Implementation + + +
public fun join<CoinType>(coin1: Diem<CoinType>, coin2: Diem<CoinType>): Diem<CoinType>  {
+    deposit(&mut coin1, coin2);
+    coin1
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if coin1.value + coin2.value > max_u64() with Errors::LIMIT_EXCEEDED;
+ensures result.value == coin1.value + coin2.value;
+
+ + + +
+ + + +## Function `deposit` + +"Merges" the two coins. +The coin passed in by reference will have a value equal to the sum of the two coins +The check coin is consumed in the process + + +
public fun deposit<CoinType>(coin: &mut Diem::Diem<CoinType>, check: Diem::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun deposit<CoinType>(coin: &mut Diem<CoinType>, check: Diem<CoinType>) {
+    let Diem { value } = check;
+    assert(MAX_U64 - coin.value >= value, Errors::limit_exceeded(ECOIN));
+    coin.value = coin.value + value;
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DepositAbortsIf<CoinType>;
+ensures coin.value == old(coin.value) + check.value;
+
+ + + + + + + +
schema DepositAbortsIf<CoinType> {
+    coin: Diem<CoinType>;
+    check: Diem<CoinType>;
+    aborts_if coin.value + check.value > MAX_U64 with Errors::LIMIT_EXCEEDED;
+}
+
+ + + +
+ + + +## Function `destroy_zero` + +Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero +so it is impossible to "burn" any non-zero amount of Diem without having +a BurnCapability for the specific CoinType. + + +
public fun destroy_zero<CoinType>(coin: Diem::Diem<CoinType>)
+
+ + + +
+Implementation + + +
public fun destroy_zero<CoinType>(coin: Diem<CoinType>) {
+    let Diem { value } = coin;
+    assert(value == 0, Errors::invalid_argument(EDESTRUCTION_OF_NONZERO_COIN))
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if coin.value > 0 with Errors::INVALID_ARGUMENT;
+
+ + + +
+ + + +## Function `register_currency` + +Register the type CoinType as a currency. Until the type is +registered as a currency it cannot be used as a coin/currency unit in Diem. +The passed-in dr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and +dr_account must also have the correct DiemRoot account role. +After the first registration of CoinType as a +currency, additional attempts to register CoinType as a currency +will abort. +When the CoinType is registered it publishes the +CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and +adds the currency to the set of RegisteredCurrencies. It returns +MintCapability<CoinType> and BurnCapability<CoinType> resources. + + +
public fun register_currency<CoinType>(dr_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (Diem::MintCapability<CoinType>, Diem::BurnCapability<CoinType>)
+
+ + + +
+Implementation + + +
public fun register_currency<CoinType>(
+    dr_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    is_synthetic: bool,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+): (MintCapability<CoinType>, BurnCapability<CoinType>)
+{
+    Roles::assert_diem_root(dr_account);
+    // Operational constraint that it must be stored under a specific address.
+    CoreAddresses::assert_currency_info(dr_account);
+    assert(
+        !exists<CurrencyInfo<CoinType>>(Signer::address_of(dr_account)),
+        Errors::already_published(ECURRENCY_INFO)
+    );
+    assert(0 < scaling_factor && scaling_factor <= MAX_SCALING_FACTOR, Errors::invalid_argument(ECURRENCY_INFO));
+    move_to(dr_account, CurrencyInfo<CoinType> {
+        total_value: 0,
+        preburn_value: 0,
+        to_xdx_exchange_rate,
+        is_synthetic,
+        scaling_factor,
+        fractional_part,
+        currency_code: copy currency_code,
+        can_mint: true,
+        mint_events: Event::new_event_handle<MintEvent>(dr_account),
+        burn_events: Event::new_event_handle<BurnEvent>(dr_account),
+        preburn_events: Event::new_event_handle<PreburnEvent>(dr_account),
+        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(dr_account),
+        exchange_rate_update_events: Event::new_event_handle<ToXDXExchangeRateUpdateEvent>(dr_account)
+    });
+    RegisteredCurrencies::add_currency_code(
+        dr_account,
+        currency_code,
+    );
+    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
+}
+
+ + + +
+ +
+Specification + + + +
include RegisterCurrencyAbortsIf<CoinType>;
+include RegisterCurrencyEnsures<CoinType>;
+
+ + + + + + + +
schema RegisterCurrencyAbortsIf<CoinType> {
+    dr_account: signer;
+    currency_code: vector<u8>;
+    scaling_factor: u64;
+}
+
+ + +Must abort if the signer does not have the DiemRoot role [[H8]][PERMISSION]. + + +
schema RegisterCurrencyAbortsIf<CoinType> {
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    aborts_if scaling_factor == 0 || scaling_factor > MAX_SCALING_FACTOR with Errors::INVALID_ARGUMENT;
+    include CoreAddresses::AbortsIfNotCurrencyInfo{account: dr_account};
+    aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(dr_account))
+        with Errors::ALREADY_PUBLISHED;
+    include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
+}
+
+ + + + + + + +
schema RegisterCurrencyEnsures<CoinType> {
+    ensures spec_is_currency<CoinType>();
+    ensures spec_currency_info<CoinType>().total_value == 0;
+}
+
+ + + +
+ + + +## Function `register_SCS_currency` + +Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. +Resources are published on two distinct +accounts: The CoinInfo is published on the Diem root account, and the mint and +burn capabilities are published on a treasury compliance account. +This code allows different currencies to have different treasury compliance +accounts. + + +
public fun register_SCS_currency<CoinType>(dr_account: &signer, tc_account: &signer, to_xdx_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
+
+ + + +
+Implementation + + +
public fun register_SCS_currency<CoinType>(
+    dr_account: &signer,
+    tc_account: &signer,
+    to_xdx_exchange_rate: FixedPoint32,
+    scaling_factor: u64,
+    fractional_part: u64,
+    currency_code: vector<u8>,
+) {
+    Roles::assert_treasury_compliance(tc_account);
+    let (mint_cap, burn_cap) =
+        register_currency<CoinType>(
+            dr_account,
+            to_xdx_exchange_rate,
+            false,   // is_synthetic
+            scaling_factor,
+            fractional_part,
+            currency_code,
+        );
+    assert(
+        !exists<MintCapability<CoinType>>(Signer::address_of(tc_account)),
+        Errors::already_published(EMINT_CAPABILITY)
+    );
+    move_to(tc_account, mint_cap);
+    publish_burn_capability<CoinType>(tc_account, burn_cap);
+}
+
+ + + +
+ +
+Specification + + + +
include RegisterSCSCurrencyAbortsIf<CoinType>;
+include RegisterSCSCurrencyEnsures<CoinType>;
+
+ + + + + + + +
schema RegisterSCSCurrencyAbortsIf<CoinType> {
+    tc_account: signer;
+    dr_account: signer;
+    currency_code: vector<u8>;
+    scaling_factor: u64;
+}
+
+ + +Must abort if tc_account does not have the TreasuryCompliance role. +Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. +Only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. + + +
schema RegisterSCSCurrencyAbortsIf<CoinType> {
+    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+    aborts_if exists<MintCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::ALREADY_PUBLISHED;
+    include RegisterCurrencyAbortsIf<CoinType>;
+    include PublishBurnCapAbortsIfs<CoinType>;
+}
+
+ + + + + + + +
schema RegisterSCSCurrencyEnsures<CoinType> {
+    tc_account: signer;
+    ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
+}
+
+ + + +
+ + + +## Function `market_cap` + +Returns the total amount of currency minted of type CoinType. + + +
public fun market_cap<CoinType>(): u128
+
+ + + +
+Implementation + + +
public fun market_cap<CoinType>(): u128
+acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_value` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a _rough_ approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_value<FromCoinType>(from_value: u64): u64
+acquires CurrencyInfo {
+    let xdx_exchange_rate = xdx_exchange_rate<FromCoinType>();
+    FixedPoint32::multiply_u64(from_value, xdx_exchange_rate)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include ApproxXdmForValueAbortsIf<FromCoinType>;
+ensures result == spec_approx_xdx_for_value<FromCoinType>(from_value);
+
+ + + + + + + +
schema ApproxXdmForValueAbortsIf<CoinType> {
+    from_value: num;
+    include AbortsIfNoCurrency<CoinType>;
+    
+    let xdx_exchange_rate = spec_xdx_exchange_rate<CoinType>();
+    include FixedPoint32::MultiplyAbortsIf{val: from_value, multiplier: xdx_exchange_rate};
+}
+
+ + + +
+ + + +## Function `approx_xdx_for_coin` + +Returns the value of the coin in the FromCoinType currency in XDX. +This should only be used where a rough approximation of the exchange +rate is needed. + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &Diem::Diem<FromCoinType>): u64
+
+ + + +
+Implementation + + +
public fun approx_xdx_for_coin<FromCoinType>(coin: &Diem<FromCoinType>): u64
+acquires CurrencyInfo {
+    let from_value = value(coin);
+    approx_xdx_for_value<FromCoinType>(from_value)
+}
+
+ + + +
+ + + +## Function `is_currency` + +Returns true if the type CoinType is a registered currency. +Returns false otherwise. + + +
public fun is_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + + +
+ + + +## Function `is_SCS_currency` + + + +
public fun is_SCS_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
+    is_currency<CoinType>() &&
+    !borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).is_synthetic
+}
+
+ + + +
+ + + +## Function `is_synthetic_currency` + +Returns true if CoinType is a synthetic currency as defined in +its CurrencyInfo. Returns false otherwise. + + +
public fun is_synthetic_currency<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_synthetic_currency<CoinType>(): bool
+acquires CurrencyInfo {
+    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
+    exists<CurrencyInfo<CoinType>>(addr) &&
+        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
+}
+
+ + + +
+ + + +## Function `scaling_factor` + +Returns the scaling factor for the CoinType currency as defined +in its CurrencyInfo. + + +
public fun scaling_factor<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun scaling_factor<CoinType>(): u64
+acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
+}
+
+ + + +
+ + + +## Function `fractional_part` + +Returns the representable (i.e. real-world) fractional part for the +CoinType currency as defined in its CurrencyInfo. + + +
public fun fractional_part<CoinType>(): u64
+
+ + + +
+Implementation + + +
public fun fractional_part<CoinType>(): u64
+acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
+}
+
+ + + +
+ + + +## Function `currency_code` + +Returns the currency code for the registered currency as defined in +its CurrencyInfo resource. + + +
public fun currency_code<CoinType>(): vector<u8>
+
+ + + +
+Implementation + + +
public fun currency_code<CoinType>(): vector<u8>
+acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include AbortsIfNoCurrency<CoinType>;
+ensures result == spec_currency_info<CoinType>().currency_code;
+
+ + + +
+ + + +## Function `update_xdx_exchange_rate` + +Updates the to_xdx_exchange_rate held in the CurrencyInfo for +FromCoinType to the new passed-in xdx_exchange_rate. + + +
public fun update_xdx_exchange_rate<FromCoinType>(tc_account: &signer, xdx_exchange_rate: FixedPoint32::FixedPoint32)
+
+ + + +
+Implementation + + +
public fun update_xdx_exchange_rate<FromCoinType>(
+    tc_account: &signer,
+    xdx_exchange_rate: FixedPoint32
+) acquires CurrencyInfo {
+    Roles::assert_treasury_compliance(tc_account);
+    assert_is_currency<FromCoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.to_xdx_exchange_rate = xdx_exchange_rate;
+    Event::emit_event(
+        &mut currency_info.exchange_rate_update_events,
+        ToXDXExchangeRateUpdateEvent {
+            currency_code: *¤cy_info.currency_code,
+            new_to_xdx_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_xdx_exchange_rate),
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + + +
include UpdateXDXExchangeRateAbortsIf<FromCoinType>;
+include UpdateXDXExchangeRateEnsures<FromCoinType>;
+
+ + + + + + + +
schema UpdateXDXExchangeRateAbortsIf<FromCoinType> {
+    tc_account: signer;
+}
+
+ + +Must abort if the account does not have the TreasuryCompliance Role [[H5]][PERMISSION]. + + +
schema UpdateXDXExchangeRateAbortsIf<FromCoinType> {
+    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+    include AbortsIfNoCurrency<FromCoinType>;
+}
+
+ + + + + + + +
schema UpdateXDXExchangeRateEnsures<FromCoinType> {
+    xdx_exchange_rate: FixedPoint32;
+    ensures spec_currency_info<FromCoinType>().to_xdx_exchange_rate == xdx_exchange_rate;
+}
+
+ + + +
+ + + +## Function `xdx_exchange_rate` + +Returns the (rough) exchange rate between CoinType and XDX + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
+
+ + + +
+Implementation + + +
public fun xdx_exchange_rate<CoinType>(): FixedPoint32
+acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+}
+
+ + + +
+ + + +## Function `update_minting_ability` + +There may be situations in which we disallow the further minting of +coins in the system without removing the currency. This function +allows the association treasury compliance account to control whether or not further coins of +CoinType can be minted or not. If this is called with can_mint = true, +then minting is allowed, if can_mint = false then minting is +disallowed until it is turned back on via this function. All coins +start out in the default state of can_mint = true. + + +
public fun update_minting_ability<CoinType>(tc_account: &signer, can_mint: bool)
+
+ + + +
+Implementation + + +
public fun update_minting_ability<CoinType>(
+    tc_account: &signer,
+    can_mint: bool,
+    )
+acquires CurrencyInfo {
+    Roles::assert_treasury_compliance(tc_account);
+    assert_is_currency<CoinType>();
+    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+    currency_info.can_mint = can_mint;
+}
+
+ + + +
+ +
+Specification + + + +
include UpdateMintingAbilityAbortsIf<CoinType>;
+include UpdateMintingAbilityEnsures<CoinType>;
+
+ + + + + + + +
schema UpdateMintingAbilityAbortsIf<CoinType> {
+    tc_account: signer;
+    include AbortsIfNoCurrency<CoinType>;
+}
+
+ + +Only the TreasuryCompliance role can enable/disable minting [[H2]][PERMISSION]. + + +
schema UpdateMintingAbilityAbortsIf<CoinType> {
+    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+}
+
+ + + + + + + +
schema UpdateMintingAbilityEnsures<CoinType> {
+    tc_account: signer;
+    can_mint: bool;
+    ensures spec_currency_info<CoinType>().can_mint == can_mint;
+}
+
+ + + +
+ + + +## Function `assert_is_currency` + +Asserts that CoinType is a registered currency. + + +
public fun assert_is_currency<CoinType>()
+
+ + + +
+Implementation + + +
public fun assert_is_currency<CoinType>() {
+    assert(is_currency<CoinType>(), Errors::not_published(ECURRENCY_INFO));
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include AbortsIfNoCurrency<CoinType>;
+
+ + + + + + + +
schema AbortsIfNoCurrency<CoinType> {
+    aborts_if !spec_is_currency<CoinType>() with Errors::NOT_PUBLISHED;
+}
+
+ + + +
+ + + +## Function `assert_is_SCS_currency` + + + +
public fun assert_is_SCS_currency<CoinType>()
+
+ + + +
+Implementation + + +
public fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
+    assert_is_currency<CoinType>();
+    assert(is_SCS_currency<CoinType>(), Errors::invalid_state(ECURRENCY_INFO));
+}
+
+ + + +
+ + + +## Module Specification + +Returns the market cap of CoinType. + + + + + +
define spec_market_cap<CoinType>(): u128 {
+   global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
+}
+
+ + + + + + + +
define spec_scaling_factor<CoinType>(): u64 {
+   global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
+}
+
+ + + + + + +### Access Control + + +Only mint functions can increase the total amount of currency [[H1]][PERMISSION]. + + +
apply TotalValueNotIncrease<CoinType> to *<CoinType>
+    except mint<CoinType>, mint_with_capability<CoinType>;
+
+ + +In order to successfully call mint and mint_with_capability, MintCapability is +required. MintCapability must be only granted to a TreasuryCompliance account [[H1]][PERMISSION]. +Only register_SCS_currency creates MintCapability, which must abort if the account +does not have the TreasuryCompliance role [[H1]][PERMISSION]. + + +
apply PreserveMintCapAbsence<CoinType> to *<CoinType> except register_SCS_currency<CoinType>;
+apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to register_SCS_currency<CoinType>;
+
+ + +Only TreasuryCompliance can have MintCapability [[H1]][PERMISSION]. +If an account has MintCapability, it is a TreasuryCompliance account. + + +
invariant [global] forall coin_type: type:
+    forall mint_cap_owner: address where exists<MintCapability<coin_type>>(mint_cap_owner):
+        Roles::spec_has_treasury_compliance_role_addr(mint_cap_owner);
+
+ + +MintCapability is not transferrable [[J1]][PERMISSION]. + + +
apply PreserveMintCapExistence<CoinType> to *<CoinType>;
+
+ + +The permission "MintCurrency" is unique per currency [[I1]][PERMISSION]. +At most one address has a mint capability for SCS CoinType + + +
invariant [global, isolated]
+    forall coin_type: type where is_SCS_currency<coin_type>():
+        forall mint_cap_owner1: address, mint_cap_owner2: address
+             where exists<MintCapability<coin_type>>(mint_cap_owner1)
+                        && exists<MintCapability<coin_type>>(mint_cap_owner2):
+                  mint_cap_owner1 == mint_cap_owner2;
+
+ + +If an address has a mint capability, it is an SCS currency. + + +
invariant [global]
+    forall coin_type: type, addr3: address where spec_has_mint_capability<coin_type>(addr3):
+        is_SCS_currency<coin_type>();
+
+ + + + + +#### Minting + + + + + +The total amount of currency does not increase. + + +
schema TotalValueNotIncrease<CoinType> {
+    ensures old(spec_is_currency<CoinType>())
+        ==> spec_currency_info<CoinType>().total_value <= old(spec_currency_info<CoinType>().total_value);
+}
+
+ + + + + + +The existence of MintCapability is preserved. + + +
schema PreserveMintCapExistence<CoinType> {
+    ensures forall addr: address:
+        old(exists<MintCapability<CoinType>>(addr)) ==>
+            exists<MintCapability<CoinType>>(addr);
+}
+
+ + + + + + +The absence of MintCapability is preserved. + + +
schema PreserveMintCapAbsence<CoinType> {
+    ensures forall addr: address:
+        old(!exists<MintCapability<CoinType>>(addr)) ==>
+            !exists<MintCapability<CoinType>>(addr);
+}
+
+ + + + + +#### Burning + + + + + +The total amount of currency does not decrease. + + +
schema TotalValueNotDecrease<CoinType> {
+    ensures old(spec_is_currency<CoinType>())
+        ==> spec_currency_info<CoinType>().total_value >= old(spec_currency_info<CoinType>().total_value);
+}
+
+ + + + + + +The existence of BurnCapability is preserved. + + +
schema PreserveBurnCapExistence<CoinType> {
+    ensures forall addr: address:
+        old(exists<BurnCapability<CoinType>>(addr)) ==>
+            exists<BurnCapability<CoinType>>(addr);
+}
+
+ + + + + + +The absence of BurnCapability is preserved. + + +
schema PreserveBurnCapAbsence<CoinType> {
+    ensures forall addr: address:
+        old(!exists<BurnCapability<CoinType>>(addr)) ==>
+            !exists<BurnCapability<CoinType>>(addr);
+}
+
+ + + +Only burn functions can decrease the total amount of currency [[H3]][PERMISSION]. + + +
apply TotalValueNotDecrease<CoinType> to *<CoinType>
+    except burn<CoinType>, burn_with_capability<CoinType>, burn_with_resource_cap<CoinType>,
+    burn_now<CoinType>;
+
+ + +In order to successfully call the burn functions, BurnCapability is required. +BurnCapability must be only granted to a TreasuryCompliance account [[H3]][PERMISSION]. +Only register_SCS_currency and publish_burn_capability publish BurnCapability, +which must abort if the account does not have the TreasuryCompliance role [[H8]][PERMISSION]. + + +
apply PreserveBurnCapAbsence<CoinType> to *<CoinType>
+    except register_SCS_currency<CoinType>, publish_burn_capability<CoinType>;
+apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to register_SCS_currency<CoinType>;
+
+ + +Only TreasuryCompliance can have BurnCapability [[H3]][PERMISSION]. +If an account has BurnCapability, it is a TreasuryCompliance account. + + +
invariant [global] forall coin_type: type:
+    forall addr1: address:
+        exists<BurnCapability<coin_type>>(addr1) ==>
+            Roles::spec_has_treasury_compliance_role_addr(addr1);
+
+ + +BurnCapability is not transferrable [[J3]][PERMISSION]. BurnCapability can be extracted from an +account, but is always moved back to the original account. This is the case in +TransactionFee::burn_fees which is the only user of remove_burn_capability and +publish_burn_capability. + + +
apply PreserveBurnCapExistence<CoinType> to *<CoinType> except remove_burn_capability<CoinType>;
+
+ + + + + +#### Preburning + + + + + +The preburn value of currency does not increase. + + +
schema PreburnValueNotIncrease<CoinType> {
+    ensures old(spec_is_currency<CoinType>())
+        ==> spec_currency_info<CoinType>().preburn_value <= old(spec_currency_info<CoinType>().preburn_value);
+}
+
+ + + + + + +The the preburn value of currency does not decrease. + + +
schema PreburnValueNotDecrease<CoinType> {
+    ensures old(spec_is_currency<CoinType>())
+        ==> spec_currency_info<CoinType>().preburn_value >= old(spec_currency_info<CoinType>().preburn_value);
+}
+
+ + + + + + +The existence of Preburn is preserved. + + +
schema PreservePreburnExistence<CoinType> {
+    ensures forall addr: address:
+        old(exists<Preburn<CoinType>>(addr)) ==>
+            exists<Preburn<CoinType>>(addr);
+}
+
+ + + + + + +The absence of Preburn is preserved. + + +
schema PreservePreburnAbsence<CoinType> {
+    ensures forall addr: address:
+        old(!exists<Preburn<CoinType>>(addr)) ==>
+            !exists<Preburn<CoinType>>(addr);
+}
+
+ + + +Only burn functions can decrease the preburn value of currency [[H4]][PERMISSION]. + + +
apply PreburnValueNotDecrease<CoinType> to *<CoinType>
+    except burn<CoinType>, burn_with_capability<CoinType>, burn_with_resource_cap<CoinType>,
+    burn_now<CoinType>, cancel_burn<CoinType>, cancel_burn_with_capability<CoinType>;
+
+ + +Only preburn functions can increase the preburn value of currency [[H4]][PERMISSION]. + + +
apply PreburnValueNotIncrease<CoinType> to *<CoinType>
+    except preburn_to<CoinType>, preburn_with_resource<CoinType>;
+
+ + +In order to successfully call the preburn functions, Preburn is required. Preburn must +be only granted to a DesignatedDealer account [[H4]][PERMISSION]. Only publish_preburn_to_account +publishes Preburn, which must abort if the account does not have the DesignatedDealer role [[H4]][PERMISSION]. + + +
apply Roles::AbortsIfNotDesignatedDealer to publish_preburn_to_account<CoinType>;
+apply PreservePreburnAbsence<CoinType> to *<CoinType> except publish_preburn_to_account<CoinType>;
+
+ + +Only DesignatedDealer can have Preburn [[H3]][PERMISSION]. +If an account has Preburn, it is a DesignatedDealer account. + + +
invariant [global] forall coin_type: type:
+    forall addr1: address:
+        exists<Preburn<coin_type>>(addr1) ==>
+            Roles::spec_has_designated_dealer_role_addr(addr1);
+
+ + +Preburn is not transferrable [[J4]][PERMISSION]. + + +
apply PreservePreburnExistence<CoinType> to *<CoinType>;
+
+ + +resource struct CurrencyInfo is persistent + + +
invariant update [global] forall coin_type: type, dr_addr: address
+    where old(exists<CurrencyInfo<coin_type>>(dr_addr)):
+        exists<CurrencyInfo<coin_type>>(dr_addr);
+
+ + +resource struct Preburn<CoinType> is persistent + + +
invariant update [global] forall coin_type: type, tc_addr: address
+    where old(exists<Preburn<coin_type>>(tc_addr)):
+        exists<Preburn<coin_type>>(tc_addr);
+
+ + +resource struct MintCapability<CoinType> is persistent + + +
invariant update [global] forall coin_type: type, tc_addr: address
+    where old(exists<MintCapability<coin_type>>(tc_addr)):
+        exists<MintCapability<coin_type>>(tc_addr);
+
+ + + + + +#### Update Exchange Rates + + + + + +The exchange rate to XDX stays constant. + + +
schema ExchangeRateRemainsSame<CoinType> {
+    ensures old(spec_is_currency<CoinType>())
+        ==> spec_currency_info<CoinType>().to_xdx_exchange_rate
+            == old(spec_currency_info<CoinType>().to_xdx_exchange_rate);
+}
+
+ + + +The permission "UpdateExchangeRate(type)" is granted to TreasuryCompliance [[H5]][PERMISSION]. + + +
apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to update_xdx_exchange_rate<FromCoinType>;
+
+ + +Only update_xdx_exchange_rate can change the exchange rate [[H5]][PERMISSION]. + + +
apply ExchangeRateRemainsSame<CoinType> to *<CoinType>
+    except update_xdx_exchange_rate<CoinType>;
+
+ + + + + +### Helper Functions + + +Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. + + + + + +
define spec_is_currency<CoinType>(): bool {
+    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Returns currency information. + + + + + +
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
+    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Specification version of Self::approx_xdx_for_value. + + + + + +
define spec_approx_xdx_for_value<CoinType>(value: num):  num {
+    FixedPoint32::spec_multiply_u64(value, spec_xdx_exchange_rate<CoinType>())
+}
+
+define spec_xdx_exchange_rate<CoinType>(): FixedPoint32 {
+    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_xdx_exchange_rate
+}
+
+ + +Checks whether the currency has a mint capability. This is only relevant for +SCS coins + + + + + +
define spec_has_mint_capability<CoinType>(addr: address): bool {
+    exists<MintCapability<CoinType>>(addr)
+}
+
+ + +Returns true if a BurnCapability for CoinType exists at addr. + + + + + +
define spec_has_burn_capability<CoinType>(addr: address): bool {
+    exists<BurnCapability<CoinType>>(addr)
+}
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemAccount.md b/language/stdlib/modules/doc/DiemAccount.md new file mode 100644 index 0000000000..8b42b15f3c --- /dev/null +++ b/language/stdlib/modules/doc/DiemAccount.md @@ -0,0 +1,4732 @@ + + + +# Module `0x1::DiemAccount` + +The DiemAccount module manages accounts. It defines the DiemAccount resource and +numerous auxiliary data structures. It also defines the prolog and epilog that run +before and after every transaction. + + +- [Resource `DiemAccount`](#0x1_DiemAccount_DiemAccount) +- [Resource `Balance`](#0x1_DiemAccount_Balance) +- [Resource `WithdrawCapability`](#0x1_DiemAccount_WithdrawCapability) +- [Resource `KeyRotationCapability`](#0x1_DiemAccount_KeyRotationCapability) +- [Resource `AccountOperationsCapability`](#0x1_DiemAccount_AccountOperationsCapability) +- [Resource `DiemWriteSetManager`](#0x1_DiemAccount_DiemWriteSetManager) +- [Struct `SentPaymentEvent`](#0x1_DiemAccount_SentPaymentEvent) +- [Struct `ReceivedPaymentEvent`](#0x1_DiemAccount_ReceivedPaymentEvent) +- [Struct `AdminTransactionEvent`](#0x1_DiemAccount_AdminTransactionEvent) +- [Struct `CreateAccountEvent`](#0x1_DiemAccount_CreateAccountEvent) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemAccount_initialize) +- [Function `has_published_account_limits`](#0x1_DiemAccount_has_published_account_limits) +- [Function `should_track_limits_for_account`](#0x1_DiemAccount_should_track_limits_for_account) +- [Function `deposit`](#0x1_DiemAccount_deposit) +- [Function `tiered_mint`](#0x1_DiemAccount_tiered_mint) +- [Function `cancel_burn`](#0x1_DiemAccount_cancel_burn) +- [Function `withdraw_from_balance`](#0x1_DiemAccount_withdraw_from_balance) +- [Function `withdraw_from`](#0x1_DiemAccount_withdraw_from) + - [Access Control](#@Access_Control_1) +- [Function `preburn`](#0x1_DiemAccount_preburn) +- [Function `extract_withdraw_capability`](#0x1_DiemAccount_extract_withdraw_capability) +- [Function `restore_withdraw_capability`](#0x1_DiemAccount_restore_withdraw_capability) +- [Function `pay_from`](#0x1_DiemAccount_pay_from) +- [Function `rotate_authentication_key`](#0x1_DiemAccount_rotate_authentication_key) + - [Access Control](#@Access_Control_2) +- [Function `extract_key_rotation_capability`](#0x1_DiemAccount_extract_key_rotation_capability) +- [Function `restore_key_rotation_capability`](#0x1_DiemAccount_restore_key_rotation_capability) +- [Function `add_currencies_for_account`](#0x1_DiemAccount_add_currencies_for_account) +- [Function `make_account`](#0x1_DiemAccount_make_account) +- [Function `create_authentication_key`](#0x1_DiemAccount_create_authentication_key) +- [Function `create_diem_root_account`](#0x1_DiemAccount_create_diem_root_account) +- [Function `create_treasury_compliance_account`](#0x1_DiemAccount_create_treasury_compliance_account) +- [Function `create_designated_dealer`](#0x1_DiemAccount_create_designated_dealer) +- [Function `create_parent_vasp_account`](#0x1_DiemAccount_create_parent_vasp_account) +- [Function `create_child_vasp_account`](#0x1_DiemAccount_create_child_vasp_account) +- [Function `create_signer`](#0x1_DiemAccount_create_signer) +- [Function `destroy_signer`](#0x1_DiemAccount_destroy_signer) +- [Function `balance_for`](#0x1_DiemAccount_balance_for) +- [Function `balance`](#0x1_DiemAccount_balance) +- [Function `add_currency`](#0x1_DiemAccount_add_currency) + - [Access Control](#@Access_Control_3) +- [Function `accepts_currency`](#0x1_DiemAccount_accepts_currency) +- [Function `sequence_number_for_account`](#0x1_DiemAccount_sequence_number_for_account) +- [Function `sequence_number`](#0x1_DiemAccount_sequence_number) +- [Function `authentication_key`](#0x1_DiemAccount_authentication_key) +- [Function `delegated_key_rotation_capability`](#0x1_DiemAccount_delegated_key_rotation_capability) +- [Function `delegated_withdraw_capability`](#0x1_DiemAccount_delegated_withdraw_capability) +- [Function `withdraw_capability_address`](#0x1_DiemAccount_withdraw_capability_address) +- [Function `key_rotation_capability_address`](#0x1_DiemAccount_key_rotation_capability_address) +- [Function `exists_at`](#0x1_DiemAccount_exists_at) +- [Function `module_prologue`](#0x1_DiemAccount_module_prologue) +- [Function `script_prologue`](#0x1_DiemAccount_script_prologue) +- [Function `writeset_prologue`](#0x1_DiemAccount_writeset_prologue) +- [Function `prologue_common`](#0x1_DiemAccount_prologue_common) +- [Function `epilogue`](#0x1_DiemAccount_epilogue) +- [Function `writeset_epilogue`](#0x1_DiemAccount_writeset_epilogue) +- [Function `create_validator_account`](#0x1_DiemAccount_create_validator_account) +- [Function `create_validator_operator_account`](#0x1_DiemAccount_create_validator_operator_account) +- [Module Specification](#@Module_Specification_4) + - [Access Control](#@Access_Control_5) + - [Key Rotation Capability](#@Key_Rotation_Capability_6) + - [Withdraw Capability](#@Withdraw_Capability_7) + - [Authentication Key](#@Authentication_Key_8) + - [Balance](#@Balance_9) + - [Persistence of Resources](#@Persistence_of_Resources_10) + - [Other invariants](#@Other_invariants_11) + - [Helper Functions and Schemas](#@Helper_Functions_and_Schemas_12) + - [Capabilities](#@Capabilities_13) + - [Prologue](#@Prologue_14) + + +
use 0x1::AccountFreezing;
+use 0x1::AccountLimits;
+use 0x1::ChainId;
+use 0x1::CoreAddresses;
+use 0x1::DesignatedDealer;
+use 0x1::Diem;
+use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
+use 0x1::DiemTransactionPublishingOption;
+use 0x1::DualAttestation;
+use 0x1::Errors;
+use 0x1::Event;
+use 0x1::Hash;
+use 0x1::LCS;
+use 0x1::Option;
+use 0x1::Roles;
+use 0x1::Signer;
+use 0x1::SlidingNonce;
+use 0x1::TransactionFee;
+use 0x1::VASP;
+use 0x1::ValidatorConfig;
+use 0x1::ValidatorOperatorConfig;
+use 0x1::Vector;
+use 0x1::XDX;
+use 0x1::XUS;
+
+ + + + + +## Resource `DiemAccount` + +An address is a Diem Account iff it has a published DiemAccount resource. + + +
resource struct DiemAccount
+
+ + + +
+Fields + + +
+
+authentication_key: vector<u8> +
+
+ The current authentication key. + This can be different from the key used to create the account +
+
+withdraw_capability: Option::Option<DiemAccount::WithdrawCapability> +
+
+ A withdraw_capability allows whoever holds this capability + to withdraw from the account. At the time of account creation + this capability is stored in this option. It can later be removed + by extract_withdraw_capability and also restored via restore_withdraw_capability. +
+
+key_rotation_capability: Option::Option<DiemAccount::KeyRotationCapability> +
+
+ A key_rotation_capability allows whoever holds this capability + the ability to rotate the authentication key for the account. At + the time of account creation this capability is stored in this + option. It can later be "extracted" from this field via + extract_key_rotation_capability, and can also be restored via + restore_key_rotation_capability. +
+
+received_events: Event::EventHandle<DiemAccount::ReceivedPaymentEvent> +
+
+ Event handle to which ReceivePaymentEvents are emitted when + payments are received. +
+
+sent_events: Event::EventHandle<DiemAccount::SentPaymentEvent> +
+
+ Event handle to which SentPaymentEvents are emitted when + payments are sent. +
+
+sequence_number: u64 +
+
+ The current sequence number of the account. + Incremented by one each time a transaction is submitted by + this account. +
+
+ + +
+ + + +## Resource `Balance` + +A resource that holds the total value of currency of type Token +currently held by the account. + + +
resource struct Balance<Token>
+
+ + + +
+Fields + + +
+
+coin: Diem::Diem<Token> +
+
+ Stores the value of the balance in its balance field. A coin has + a value field. The amount of money in the balance is changed + by modifying this field. +
+
+ + +
+ + + +## Resource `WithdrawCapability` + +The holder of WithdrawCapability for account_address can withdraw Diem from +account_address/DiemAccount/balance. +There is at most one WithdrawCapability in existence for a given address. + + +
resource struct WithdrawCapability
+
+ + + +
+Fields + + +
+
+account_address: address +
+
+ Address that WithdrawCapability was associated with when it was created. + This field does not change. +
+
+ + +
+ + + +## Resource `KeyRotationCapability` + +The holder of KeyRotationCapability for account_address can rotate the authentication key for +account_address (i.e., write to account_address/DiemAccount/authentication_key). +There is at most one KeyRotationCapability in existence for a given address. + + +
resource struct KeyRotationCapability
+
+ + + +
+Fields + + +
+
+account_address: address +
+
+ Address that KeyRotationCapability was associated with when it was created. + This field does not change. +
+
+ + +
+ + + +## Resource `AccountOperationsCapability` + +A wrapper around an AccountLimitMutationCapability which is used to check for account limits +and to record freeze/unfreeze events. + + +
resource struct AccountOperationsCapability
+
+ + + +
+Fields + + +
+
+limits_cap: AccountLimits::AccountLimitMutationCapability +
+
+ +
+
+creation_events: Event::EventHandle<DiemAccount::CreateAccountEvent> +
+
+ +
+
+ + +
+ + + +## Resource `DiemWriteSetManager` + +A resource that holds the event handle for all the past WriteSet transactions that have been committed on chain. + + +
resource struct DiemWriteSetManager
+
+ + + +
+Fields + + +
+
+upgrade_events: Event::EventHandle<DiemAccount::AdminTransactionEvent> +
+
+ +
+
+ + +
+ + + +## Struct `SentPaymentEvent` + +Message for sent events + + +
struct SentPaymentEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of Diem sent +
+
+currency_code: vector<u8> +
+
+ The code symbol for the currency that was sent +
+
+payee: address +
+
+ The address that was paid +
+
+metadata: vector<u8> +
+
+ Metadata associated with the payment +
+
+ + +
+ + + +## Struct `ReceivedPaymentEvent` + +Message for received events + + +
struct ReceivedPaymentEvent
+
+ + + +
+Fields + + +
+
+amount: u64 +
+
+ The amount of Diem received +
+
+currency_code: vector<u8> +
+
+ The code symbol for the currency that was received +
+
+payer: address +
+
+ The address that sent the coin +
+
+metadata: vector<u8> +
+
+ Metadata associated with the payment +
+
+ + +
+ + + +## Struct `AdminTransactionEvent` + +Message for committed WriteSet transaction. + + +
struct AdminTransactionEvent
+
+ + + +
+Fields + + +
+
+committed_timestamp_secs: u64 +
+
+ +
+
+ + +
+ + + +## Struct `CreateAccountEvent` + +Message for creation of a new account + + +
struct CreateAccountEvent
+
+ + + +
+Fields + + +
+
+created: address +
+
+ Address of the created account +
+
+role_id: u64 +
+
+ Role of the created account +
+
+ + +
+ + + +## Constants + + + + + + +
const MAX_U64: u128 = 18446744073709551615;
+
+ + + + + +The DiemAccount resource is not in the required state + + +
const EACCOUNT: u64 = 0;
+
+ + + + + +The AccountOperationsCapability was not in the required state + + +
const EACCOUNT_OPERATIONS_CAPABILITY: u64 = 22;
+
+ + + + + +Tried to add a balance in a currency that this account already has + + +
const EADD_EXISTING_CURRENCY: u64 = 15;
+
+ + + + + +An account cannot be created at the reserved core code address of 0x1 + + +
const ECANNOT_CREATE_AT_CORE_CODE: u64 = 24;
+
+ + + + + +An account cannot be created at the reserved VM address of 0x0 + + +
const ECANNOT_CREATE_AT_VM_RESERVED: u64 = 10;
+
+ + + + + +Tried to deposit a coin whose value was zero + + +
const ECOIN_DEPOSIT_IS_ZERO: u64 = 2;
+
+ + + + + +Tried to deposit funds that would have surpassed the account's limits + + +
const EDEPOSIT_EXCEEDS_LIMITS: u64 = 3;
+
+ + + + + +An invalid amount of gas units was provided for execution of the transaction + + +
const EGAS: u64 = 20;
+
+ + + + + +The account does not hold a large enough balance in the specified currency + + +
const EINSUFFICIENT_BALANCE: u64 = 5;
+
+ + + + + +The KeyRotationCapability for this account has already been extracted + + +
const EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED: u64 = 9;
+
+ + + + + +The provided authentication had an invalid length + + +
const EMALFORMED_AUTHENTICATION_KEY: u64 = 8;
+
+ + + + + +Attempted to send funds in a currency that the receiving account does not hold. +e.g., Diem<XDX> to an account that exists, but does not have a Balance<XDX> resource + + +
const EPAYEE_CANT_ACCEPT_CURRENCY_TYPE: u64 = 18;
+
+ + + + + +Attempted to send funds to an account that does not exist + + +
const EPAYEE_DOES_NOT_EXIST: u64 = 17;
+
+ + + + + +Tried to withdraw funds in a currency that the account does hold + + +
const EPAYER_DOESNT_HOLD_CURRENCY: u64 = 19;
+
+ + + + + +Tried to create a balance for an account whose role does not allow holding balances + + +
const EROLE_CANT_STORE_BALANCE: u64 = 4;
+
+ + + + + +The account's sequence number has exceeded the maximum representable value + + +
const ESEQUENCE_NUMBER: u64 = 1;
+
+ + + + + +The withdrawal of funds would have exceeded the the account's limits + + +
const EWITHDRAWAL_EXCEEDS_LIMITS: u64 = 6;
+
+ + + + + +The WithdrawCapability for this account has already been extracted + + +
const EWITHDRAW_CAPABILITY_ALREADY_EXTRACTED: u64 = 7;
+
+ + + + + +The WithdrawCapability for this account is not extracted + + +
const EWITHDRAW_CAPABILITY_NOT_EXTRACTED: u64 = 11;
+
+ + + + + +The DiemWriteSetManager was not in the required state + + +
const EWRITESET_MANAGER: u64 = 23;
+
+ + + + + + + +
const PROLOGUE_EACCOUNT_DNE: u64 = 1004;
+
+ + + + + +Prologue errors. These are separated out from the other errors in this +module since they are mapped separately to major VM statuses, and are +important to the semantics of the system. Those codes also need to be +directly used in aborts instead of augmenting them with a category +via the Errors module. + + +
const PROLOGUE_EACCOUNT_FROZEN: u64 = 1000;
+
+ + + + + + + +
const PROLOGUE_EBAD_CHAIN_ID: u64 = 1007;
+
+ + + + + + + +
const PROLOGUE_ECANT_PAY_GAS_DEPOSIT: u64 = 1005;
+
+ + + + + + + +
const PROLOGUE_EINVALID_ACCOUNT_AUTH_KEY: u64 = 1001;
+
+ + + + + + + +
const PROLOGUE_EMODULE_NOT_ALLOWED: u64 = 1009;
+
+ + + + + + + +
const PROLOGUE_ESCRIPT_NOT_ALLOWED: u64 = 1008;
+
+ + + + + + + +
const PROLOGUE_ESEQUENCE_NUMBER_TOO_NEW: u64 = 1003;
+
+ + + + + + + +
const PROLOGUE_ESEQUENCE_NUMBER_TOO_OLD: u64 = 1002;
+
+ + + + + + + +
const PROLOGUE_ETRANSACTION_EXPIRED: u64 = 1006;
+
+ + + + + + + +
const PROLOGUE_INVALID_WRITESET_SENDER: u64 = 1010;
+
+ + + + + +## Function `initialize` + +Initialize this module. This is only callable from genesis. + + +
public fun initialize(dr_account: &signer, dummy_auth_key_prefix: vector<u8>)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+    dummy_auth_key_prefix: vector<u8>,
+) acquires AccountOperationsCapability {
+    DiemTimestamp::assert_genesis();
+    // Operational constraint, not a privilege constraint.
+    CoreAddresses::assert_diem_root(dr_account);
+
+    create_diem_root_account(
+        copy dummy_auth_key_prefix,
+    );
+    create_treasury_compliance_account(
+        dr_account,
+        copy dummy_auth_key_prefix,
+    );
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+include CreateDiemRootAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix};
+include CreateTreasuryComplianceAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix};
+aborts_if exists<AccountFreezing::FreezingBit>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS())
+    with Errors::ALREADY_PUBLISHED;
+include CreateDiemRootAccountModifies;
+include CreateDiemRootAccountEnsures;
+include CreateTreasuryComplianceAccountModifies;
+include CreateTreasuryComplianceAccountEnsures;
+
+ + + +
+ + + +## Function `has_published_account_limits` + +Return true if addr has already published account limits for Token + + +
fun has_published_account_limits<Token>(addr: address): bool
+
+ + + +
+Implementation + + +
fun has_published_account_limits<Token>(addr: address): bool {
+    if (VASP::is_vasp(addr)) {
+        VASP::has_account_limits<Token>(addr)
+    }
+    else {
+        AccountLimits::has_window_published<Token>(addr)
+    }
+}
+
+ + + +
+ + + +## Function `should_track_limits_for_account` + +Returns whether we should track and record limits for the payer or payee account. +Depending on the is_withdrawal flag passed in we determine whether the +payer or payee account is being queried. VASP->any and +any->VASP transfers are tracked in the VASP. + + +
fun should_track_limits_for_account<Token>(payer: address, payee: address, is_withdrawal: bool): bool
+
+ + + +
+Implementation + + +
fun should_track_limits_for_account<Token>(
+    payer: address, payee: address, is_withdrawal: bool
+): bool {
+    if (is_withdrawal) {
+        has_published_account_limits<Token>(payer) &&
+        VASP::is_vasp(payer) &&
+        !VASP::is_same_vasp(payer, payee)
+    } else {
+        has_published_account_limits<Token>(payee) &&
+        VASP::is_vasp(payee) &&
+        !VASP::is_same_vasp(payee, payer)
+    }
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if false;
+ensures result == spec_should_track_limits_for_account<Token>(payer, payee, is_withdrawal);
+
+ + + + + + + +
define spec_should_track_limits_for_account<Token>(
+   payer: address, payee: address, is_withdrawal: bool
+): bool {
+   if (is_withdrawal) {
+       spec_has_published_account_limits<Token>(payer) &&
+       VASP::is_vasp(payer) &&
+       !VASP::spec_is_same_vasp(payer, payee)
+   } else {
+       spec_has_published_account_limits<Token>(payee) &&
+       VASP::is_vasp(payee) &&
+       !VASP::spec_is_same_vasp(payee, payer)
+   }
+}
+
+ + + +
+ + + +## Function `deposit` + +Record a payment of to_deposit from payer to payee with the attached metadata + + +
fun deposit<Token>(payer: address, payee: address, to_deposit: Diem::Diem<Token>, metadata: vector<u8>, metadata_signature: vector<u8>)
+
+ + + +
+Implementation + + +
fun deposit<Token>(
+    payer: address,
+    payee: address,
+    to_deposit: Diem<Token>,
+    metadata: vector<u8>,
+    metadata_signature: vector<u8>
+) acquires DiemAccount, Balance, AccountOperationsCapability {
+    DiemTimestamp::assert_operating();
+    AccountFreezing::assert_not_frozen(payee);
+
+    // Check that the `to_deposit` coin is non-zero
+    let deposit_value = Diem::value(&to_deposit);
+    assert(deposit_value > 0, Errors::invalid_argument(ECOIN_DEPOSIT_IS_ZERO));
+    // Check that an account exists at `payee`
+    assert(exists_at(payee), Errors::not_published(EPAYEE_DOES_NOT_EXIST));
+    // Check that `payee` can accept payments in `Token`
+    assert(
+        exists<Balance<Token>>(payee),
+        Errors::invalid_argument(EPAYEE_CANT_ACCEPT_CURRENCY_TYPE)
+    );
+
+    // Check that the payment complies with dual attestation rules
+    DualAttestation::assert_payment_ok<Token>(
+        payer, payee, deposit_value, copy metadata, metadata_signature
+    );
+    // Ensure that this deposit is compliant with the account limits on
+    // this account.
+    if (should_track_limits_for_account<Token>(payer, payee, false)) {
+        assert(
+            AccountLimits::update_deposit_limits<Token>(
+                deposit_value,
+                VASP::parent_address(payee),
+                &borrow_global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()).limits_cap
+            ),
+            Errors::limit_exceeded(EDEPOSIT_EXCEEDS_LIMITS)
+        )
+    };
+
+    // Deposit the `to_deposit` coin
+    Diem::deposit(&mut borrow_global_mut<Balance<Token>>(payee).coin, to_deposit);
+
+    // Log a received event
+    Event::emit_event<ReceivedPaymentEvent>(
+        &mut borrow_global_mut<DiemAccount>(payee).received_events,
+        ReceivedPaymentEvent {
+            amount: deposit_value,
+            currency_code: Diem::currency_code<Token>(),
+            payer,
+            metadata
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Balance<Token>>(payee);
+modifies global<DiemAccount>(payee);
+modifies global<AccountLimits::Window<Token>>(VASP::spec_parent_address(payee));
+ensures exists<DiemAccount>(payee);
+ensures exists<Balance<Token>>(payee);
+ensures global<DiemAccount>(payee).withdraw_capability
+    == old(global<DiemAccount>(payee).withdraw_capability);
+include DepositAbortsIf<Token>{amount: to_deposit.value};
+include DepositOverflowAbortsIf<Token>{amount: to_deposit.value};
+include DepositEnsures<Token>{amount: to_deposit.value};
+
+ + + + + + + +
schema DepositAbortsIf<Token> {
+    payer: address;
+    payee: address;
+    amount: u64;
+    metadata_signature: vector<u8>;
+    metadata: vector<u8>;
+    include DepositAbortsIfRestricted<Token>;
+    include AccountFreezing::AbortsIfFrozen{account: payee};
+    aborts_if !exists<Balance<Token>>(payee) with Errors::INVALID_ARGUMENT;
+    aborts_if !exists_at(payee) with Errors::NOT_PUBLISHED;
+}
+
+ + + + + + + +
schema DepositOverflowAbortsIf<Token> {
+    payee: address;
+    amount: u64;
+    aborts_if balance<Token>(payee) + amount > max_u64() with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema DepositAbortsIfRestricted<Token> {
+    payer: address;
+    payee: address;
+    amount: u64;
+    metadata_signature: vector<u8>;
+    metadata: vector<u8>;
+    include DiemTimestamp::AbortsIfNotOperating;
+    aborts_if amount == 0 with Errors::INVALID_ARGUMENT;
+    include DualAttestation::AssertPaymentOkAbortsIf<Token>{value: amount};
+    include
+        spec_should_track_limits_for_account<Token>(payer, payee, false) ==>
+        AccountLimits::UpdateDepositLimitsAbortsIf<Token> {
+            addr: VASP::spec_parent_address(payee),
+        };
+    aborts_if
+        spec_should_track_limits_for_account<Token>(payer, payee, false) &&
+            !AccountLimits::spec_update_deposit_limits<Token>(amount, VASP::spec_parent_address(payee))
+        with Errors::LIMIT_EXCEEDED;
+    include Diem::AbortsIfNoCurrency<Token>;
+}
+
+ + + + + + + +
schema DepositEnsures<Token> {
+    payee: address;
+    amount: u64;
+    ensures balance<Token>(payee) == old(balance<Token>(payee)) + amount;
+}
+
+ + + +
+ + + +## Function `tiered_mint` + +Mint 'mint_amount' to 'designated_dealer_address' for 'tier_index' tier. +Max valid tier index is 3 since there are max 4 tiers per DD. +Sender should be treasury compliance account and receiver authorized DD. + + +
public fun tiered_mint<Token>(tc_account: &signer, designated_dealer_address: address, mint_amount: u64, tier_index: u64)
+
+ + + +
+Implementation + + +
public fun tiered_mint<Token>(
+    tc_account: &signer,
+    designated_dealer_address: address,
+    mint_amount: u64,
+    tier_index: u64,
+) acquires DiemAccount, Balance, AccountOperationsCapability {
+    let coin = DesignatedDealer::tiered_mint<Token>(
+        tc_account, mint_amount, designated_dealer_address, tier_index
+    );
+    // Use the reserved address as the payer because the funds did not come from an existing
+    // balance
+    deposit(CoreAddresses::VM_RESERVED_ADDRESS(), designated_dealer_address, coin, x"", x"")
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Balance<Token>>(designated_dealer_address);
+modifies global<Diem::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+include TieredMintAbortsIf<Token>;
+include TieredMintEnsures<Token>;
+
+ + + + + + + +
schema TieredMintAbortsIf<Token> {
+    tc_account: signer;
+    designated_dealer_address: address;
+    mint_amount: u64;
+    tier_index: u64;
+    include DesignatedDealer::TieredMintAbortsIf<Token>{dd_addr: designated_dealer_address, amount: mint_amount};
+    include DepositAbortsIf<Token>{payer: CoreAddresses::VM_RESERVED_ADDRESS(),
+        payee: designated_dealer_address, amount: mint_amount, metadata: x"", metadata_signature: x""};
+    include DepositOverflowAbortsIf<Token>{payee: designated_dealer_address, amount: mint_amount};
+}
+
+ + + + + + + +
schema TieredMintEnsures<Token> {
+    designated_dealer_address: address;
+    mint_amount: u64;
+    
+    let dealer_balance = global<Balance<Token>>(designated_dealer_address).coin.value;
+    
+    let currency_info = global<Diem::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
+}
+
+ + +Total value of the currency increases by amount. + + +
schema TieredMintEnsures<Token> {
+    ensures currency_info == update_field(old(currency_info), total_value, old(currency_info.total_value) + mint_amount);
+}
+
+ + +The balance of designated dealer increases by amount. + + +
schema TieredMintEnsures<Token> {
+    ensures dealer_balance == old(dealer_balance) + mint_amount;
+}
+
+ + + +
+ + + +## Function `cancel_burn` + + + +
public fun cancel_burn<Token>(account: &signer, preburn_address: address)
+
+ + + +
+Implementation + + +
public fun cancel_burn<Token>(
+    account: &signer,
+    preburn_address: address,
+) acquires DiemAccount, Balance, AccountOperationsCapability {
+    let coin = Diem::cancel_burn<Token>(account, preburn_address);
+    // record both sender and recipient as `preburn_address`: the coins are moving from
+    // `preburn_address`'s `Preburn` resource to its balance
+    deposit(preburn_address, preburn_address, coin, x"", x"")
+}
+
+ + + +
+ +
+Specification + + + +
include CancelBurnAbortsIf<Token>;
+include Diem::CancelBurnWithCapEnsures<Token>;
+
+let preburn_value_at_addr = global<Diem::Preburn<Token>>(preburn_address).to_burn.value;
+
+let balance_at_addr = balance<Token>(preburn_address);
+ensures balance_at_addr == old(balance_at_addr) + old(preburn_value_at_addr);
+
+ + + + + + + +
schema CancelBurnAbortsIf<Token> {
+    account: signer;
+    preburn_address: address;
+    
+    let amount = global<Diem::Preburn<Token>>(preburn_address).to_burn.value;
+    aborts_if !exists<Diem::BurnCapability<Token>>(Signer::spec_address_of(account))
+        with Errors::REQUIRES_CAPABILITY;
+    include Diem::CancelBurnWithCapAbortsIf<Token>;
+    include DepositAbortsIf<Token>{
+        payer: preburn_address,
+        payee: preburn_address,
+        amount: amount,
+        metadata: x"",
+        metadata_signature: x""
+    };
+    include DepositOverflowAbortsIf<Token>{payee: preburn_address, amount: amount};
+}
+
+ + + +
+ + + +## Function `withdraw_from_balance` + +Helper to withdraw amount from the given account balance and return the withdrawn Diem + + +
fun withdraw_from_balance<Token>(payer: address, payee: address, balance: &mut DiemAccount::Balance<Token>, amount: u64): Diem::Diem<Token>
+
+ + + +
+Implementation + + +
fun withdraw_from_balance<Token>(
+    payer: address,
+    payee: address,
+    balance: &mut Balance<Token>,
+    amount: u64
+): Diem<Token> acquires AccountOperationsCapability {
+    DiemTimestamp::assert_operating();
+    AccountFreezing::assert_not_frozen(payer);
+    // Make sure that this withdrawal is compliant with the limits on
+    // the account if it's a inter-VASP transfer,
+    if (should_track_limits_for_account<Token>(payer, payee, true)) {
+        let can_withdraw = AccountLimits::update_withdrawal_limits<Token>(
+                amount,
+                VASP::parent_address(payer),
+                &borrow_global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()).limits_cap
+        );
+        assert(can_withdraw, Errors::limit_exceeded(EWITHDRAWAL_EXCEEDS_LIMITS));
+    };
+    let coin = &mut balance.coin;
+    // Abort if this withdrawal would make the `payer`'s balance go negative
+    assert(Diem::value(coin) >= amount, Errors::limit_exceeded(EINSUFFICIENT_BALANCE));
+    Diem::withdraw(coin, amount)
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<AccountLimits::Window<Token>>(VASP::spec_parent_address(payer));
+include WithdrawFromBalanceAbortsIf<Token>;
+include WithdrawFromBalanceEnsures<Token>;
+
+ + + + + + + +
schema WithdrawFromBalanceAbortsIf<Token> {
+    payer: address;
+    payee: address;
+    balance: Balance<Token>;
+    amount: u64;
+    include WithdrawFromBalanceNoLimitsAbortsIf<Token>;
+    include
+        spec_should_track_limits_for_account<Token>(payer, payee, true) ==>
+        AccountLimits::UpdateWithdrawalLimitsAbortsIf<Token> {
+            addr: VASP::spec_parent_address(payer),
+        };
+    aborts_if
+        spec_should_track_limits_for_account<Token>(payer, payee, true) &&
+        (   !spec_has_account_operations_cap() ||
+            !AccountLimits::spec_update_withdrawal_limits<Token>(amount, VASP::spec_parent_address(payer))
+        )
+        with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema WithdrawFromBalanceNoLimitsAbortsIf<Token> {
+    payer: address;
+    payee: address;
+    balance: Balance<Token>;
+    amount: u64;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include AccountFreezing::AbortsIfFrozen{account: payer};
+    aborts_if balance.coin.value < amount with Errors::LIMIT_EXCEEDED;
+}
+
+ + + + + + + +
schema WithdrawFromBalanceEnsures<Token> {
+    balance: Balance<Token>;
+    amount: u64;
+    result: Diem<Token>;
+    ensures balance.coin.value == old(balance.coin.value) - amount;
+    ensures result.value == amount;
+}
+
+ + + +
+ + + +## Function `withdraw_from` + +Withdraw amount Diem<Token>'s from the account balance under +cap.account_address + + +
fun withdraw_from<Token>(cap: &DiemAccount::WithdrawCapability, payee: address, amount: u64, metadata: vector<u8>): Diem::Diem<Token>
+
+ + + +
+Implementation + + +
fun withdraw_from<Token>(
+    cap: &WithdrawCapability,
+    payee: address,
+    amount: u64,
+    metadata: vector<u8>,
+): Diem<Token> acquires Balance, AccountOperationsCapability, DiemAccount {
+    DiemTimestamp::assert_operating();
+    let payer = cap.account_address;
+    assert(exists_at(payer), Errors::not_published(EACCOUNT));
+    assert(exists<Balance<Token>>(payer), Errors::not_published(EPAYER_DOESNT_HOLD_CURRENCY));
+    let account_balance = borrow_global_mut<Balance<Token>>(payer);
+    // Load the payer's account and emit an event to record the withdrawal
+    Event::emit_event<SentPaymentEvent>(
+        &mut borrow_global_mut<DiemAccount>(payer).sent_events,
+        SentPaymentEvent {
+            amount,
+            currency_code: Diem::currency_code<Token>(),
+            payee,
+            metadata
+        },
+    );
+    withdraw_from_balance<Token>(payer, payee, account_balance, amount)
+}
+
+ + + +
+ +
+Specification + + + + + + +
let payer = cap.account_address;
+modifies global<Balance<Token>>(payer);
+modifies global<DiemAccount>(payer);
+ensures exists<DiemAccount>(payer);
+ensures global<DiemAccount>(payer).withdraw_capability
+            == old(global<DiemAccount>(payer).withdraw_capability);
+include WithdrawFromAbortsIf<Token>;
+include WithdrawFromBalanceEnsures<Token>{balance: global<Balance<Token>>(payer)};
+include WithdrawOnlyFromCapAddress<Token>;
+
+ + + + + + + +
schema WithdrawFromAbortsIf<Token> {
+    cap: WithdrawCapability;
+    payee: address;
+    amount: u64;
+    
+    let payer = cap.account_address;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Diem::AbortsIfNoCurrency<Token>;
+    include WithdrawFromBalanceAbortsIf<Token>{payer, balance: global<Balance<Token>>(payer)};
+    aborts_if !exists_at(payer) with Errors::NOT_PUBLISHED;
+    aborts_if !exists<Balance<Token>>(payer) with Errors::NOT_PUBLISHED;
+}
+
+ + + + + +### Access Control + + + + + + +
schema WithdrawOnlyFromCapAddress<Token> {
+    cap: WithdrawCapability;
+}
+
+ + +Can only withdraw from the balances of cap.account_address [[H18]][PERMISSION]. + + +
schema WithdrawOnlyFromCapAddress<Token> {
+    ensures forall addr: address where old(exists<Balance<Token>>(addr)) && addr != cap.account_address:
+        balance<Token>(addr) == old(balance<Token>(addr));
+}
+
+ + + +
+ + + +## Function `preburn` + +Withdraw amount Diem<Token>'s from cap.address and send them to the Preburn +resource under dd. + + +
public fun preburn<Token>(dd: &signer, cap: &DiemAccount::WithdrawCapability, amount: u64)
+
+ + + +
+Implementation + + +
public fun preburn<Token>(
+    dd: &signer,
+    cap: &WithdrawCapability,
+    amount: u64
+) acquires Balance, AccountOperationsCapability, DiemAccount {
+    DiemTimestamp::assert_operating();
+    Diem::preburn_to<Token>(dd, withdraw_from(cap, Signer::address_of(dd), amount, x""))
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let dd_addr = Signer::spec_address_of(dd);
+
+let payer = cap.account_address;
+modifies global<DiemAccount>(payer);
+ensures exists<DiemAccount>(payer);
+ensures global<DiemAccount>(payer).withdraw_capability
+        == old(global<DiemAccount>(payer).withdraw_capability);
+include PreburnAbortsIf<Token>;
+include PreburnEnsures<Token>{dd_addr, payer};
+
+ + + + + + + +
schema PreburnAbortsIf<Token> {
+    dd: signer;
+    cap: WithdrawCapability;
+    amount: u64;
+    include DiemTimestamp::AbortsIfNotOperating{};
+    include WithdrawFromAbortsIf<Token>{payee: Signer::spec_address_of(dd)};
+    include Diem::PreburnToAbortsIf<Token>{account: dd};
+}
+
+ + + + + + + +
schema PreburnEnsures<Token> {
+    dd_addr: address;
+    payer: address;
+    
+    let payer_balance = global<Balance<Token>>(payer).coin.value;
+    
+    let preburn = global<Diem::Preburn<Token>>(dd_addr);
+}
+
+ + +The balance of payer decreases by amount. + + +
schema PreburnEnsures<Token> {
+    ensures payer_balance == old(payer_balance) - amount;
+}
+
+ + +The value of preburn at dd_addr increases by amount; + + +
schema PreburnEnsures<Token> {
+    include Diem::PreburnEnsures<Token>{preburn: preburn};
+}
+
+ + + +
+ + + +## Function `extract_withdraw_capability` + +Return a unique capability granting permission to withdraw from the sender's account balance. + + +
public fun extract_withdraw_capability(sender: &signer): DiemAccount::WithdrawCapability
+
+ + + +
+Implementation + + +
public fun extract_withdraw_capability(
+    sender: &signer
+): WithdrawCapability acquires DiemAccount {
+    let sender_addr = Signer::address_of(sender);
+    // Abort if we already extracted the unique withdraw capability for this account.
+    assert(
+        !delegated_withdraw_capability(sender_addr),
+        Errors::invalid_state(EWITHDRAW_CAPABILITY_ALREADY_EXTRACTED)
+    );
+    assert(exists_at(sender_addr), Errors::not_published(EACCOUNT));
+    let account = borrow_global_mut<DiemAccount>(sender_addr);
+    Option::extract(&mut account.withdraw_capability)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let sender_addr = Signer::spec_address_of(sender);
+modifies global<DiemAccount>(sender_addr);
+include ExtractWithdrawCapAbortsIf{sender_addr};
+ensures exists<DiemAccount>(sender_addr);
+ensures result == old(spec_get_withdraw_cap(sender_addr));
+ensures global<DiemAccount>(sender_addr) == update_field(old(global<DiemAccount>(sender_addr)),
+    withdraw_capability, Option::spec_none());
+ensures result.account_address == sender_addr;
+
+ + + + + + + +
schema ExtractWithdrawCapAbortsIf {
+    sender_addr: address;
+    aborts_if !exists_at(sender_addr) with Errors::NOT_PUBLISHED;
+    aborts_if spec_holds_delegated_withdraw_capability(sender_addr) with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Function `restore_withdraw_capability` + +Return the withdraw capability to the account it originally came from + + +
public fun restore_withdraw_capability(cap: DiemAccount::WithdrawCapability)
+
+ + + +
+Implementation + + +
public fun restore_withdraw_capability(cap: WithdrawCapability)
+acquires DiemAccount {
+    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
+    // Abort if the withdraw capability for this account is not extracted,
+    // indicating that the withdraw capability is not unique.
+    assert(
+        delegated_withdraw_capability(cap.account_address),
+        Errors::invalid_state(EWITHDRAW_CAPABILITY_NOT_EXTRACTED)
+    );
+    let account = borrow_global_mut<DiemAccount>(cap.account_address);
+    Option::fill(&mut account.withdraw_capability, cap)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let cap_addr = cap.account_address;
+modifies global<DiemAccount>(cap_addr);
+aborts_if !exists_at(cap_addr) with Errors::NOT_PUBLISHED;
+aborts_if !delegated_withdraw_capability(cap_addr) with Errors::INVALID_STATE;
+ensures spec_holds_own_withdraw_cap(cap_addr);
+
+ + + +
+ + + +## Function `pay_from` + +Withdraw amount Diem from the address embedded in WithdrawCapability and +deposits it into the payee's account balance. +The included metadata will appear in the SentPaymentEvent and ReceivedPaymentEvent. +The metadata_signature will only be checked if this payment is subject to the dual +attestation protocol + + +
public fun pay_from<Token>(cap: &DiemAccount::WithdrawCapability, payee: address, amount: u64, metadata: vector<u8>, metadata_signature: vector<u8>)
+
+ + + +
+Implementation + + +
public fun pay_from<Token>(
+    cap: &WithdrawCapability,
+    payee: address,
+    amount: u64,
+    metadata: vector<u8>,
+    metadata_signature: vector<u8>
+) acquires DiemAccount, Balance, AccountOperationsCapability {
+    deposit<Token>(
+        *&cap.account_address,
+        payee,
+        withdraw_from(cap, payee, amount, copy metadata),
+        metadata,
+        metadata_signature
+    );
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let payer = cap.account_address;
+modifies global<DiemAccount>(payer);
+modifies global<DiemAccount>(payee);
+modifies global<Balance<Token>>(payer);
+modifies global<Balance<Token>>(payee);
+ensures exists_at(payer);
+ensures exists_at(payee);
+ensures exists<Balance<Token>>(payer);
+ensures exists<Balance<Token>>(payee);
+ensures global<DiemAccount>(payer).withdraw_capability ==
+    old(global<DiemAccount>(payer).withdraw_capability);
+include PayFromAbortsIf<Token>;
+include PayFromEnsures<Token>{payer};
+
+ + + + + + + +
schema PayFromAbortsIf<Token> {
+    cap: WithdrawCapability;
+    payee: address;
+    amount: u64;
+    metadata: vector<u8>;
+    metadata_signature: vector<u8> ;
+    include DepositAbortsIf<Token>{payer: cap.account_address};
+    include cap.account_address != payee ==> DepositOverflowAbortsIf<Token>;
+    include WithdrawFromAbortsIf<Token>;
+}
+
+ + + + + + + +
schema PayFromAbortsIfRestricted<Token> {
+    cap: WithdrawCapability;
+    payee: address;
+    amount: u64;
+    metadata: vector<u8>;
+    metadata_signature: vector<u8> ;
+    
+    let payer = cap.account_address;
+    include DepositAbortsIfRestricted<Token>{payer: cap.account_address};
+    include WithdrawFromBalanceNoLimitsAbortsIf<Token>{payer, balance: global<Balance<Token>>(payer)};
+    aborts_if !exists<Balance<Token>>(payer) with Errors::NOT_PUBLISHED;
+}
+
+ + + + + + + +
schema PayFromEnsures<Token> {
+    payer: address;
+    payee: address;
+    amount: u64;
+    ensures payer == payee ==> balance<Token>(payer) == old(balance<Token>(payer));
+    ensures payer != payee ==> balance<Token>(payer) == old(balance<Token>(payer)) - amount;
+    ensures payer != payee ==> balance<Token>(payee) == old(balance<Token>(payee)) + amount;
+}
+
+ + + +
+ + + +## Function `rotate_authentication_key` + +Rotate the authentication key for the account under cap.account_address + + +
public fun rotate_authentication_key(cap: &DiemAccount::KeyRotationCapability, new_authentication_key: vector<u8>)
+
+ + + +
+Implementation + + +
public fun rotate_authentication_key(
+    cap: &KeyRotationCapability,
+    new_authentication_key: vector<u8>,
+) acquires DiemAccount  {
+    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
+    let sender_account_resource = borrow_global_mut<DiemAccount>(cap.account_address);
+    // Don't allow rotating to clearly invalid key
+    assert(
+        Vector::length(&new_authentication_key) == 32,
+        Errors::invalid_argument(EMALFORMED_AUTHENTICATION_KEY)
+    );
+    sender_account_resource.authentication_key = new_authentication_key;
+}
+
+ + + +
+ +
+Specification + + + +
include RotateAuthenticationKeyAbortsIf;
+include RotateAuthenticationKeyEnsures{addr: cap.account_address};
+include RotateOnlyKeyOfCapAddress;
+
+ + + + + + + +
schema RotateAuthenticationKeyAbortsIf {
+    cap: &KeyRotationCapability;
+    new_authentication_key: vector<u8>;
+    aborts_if !exists_at(cap.account_address) with Errors::NOT_PUBLISHED;
+    aborts_if len(new_authentication_key) != 32 with Errors::INVALID_ARGUMENT;
+}
+
+ + + + + + + +
schema RotateAuthenticationKeyEnsures {
+    addr: address;
+    new_authentication_key: vector<u8>;
+    ensures global<DiemAccount>(addr).authentication_key == new_authentication_key;
+}
+
+ + + + + +### Access Control + + + + + + +
schema RotateOnlyKeyOfCapAddress {
+    cap: KeyRotationCapability;
+}
+
+ + +Can only rotate the authentication_key of cap.account_address [[H17]][PERMISSION]. + + +
schema RotateOnlyKeyOfCapAddress {
+    ensures forall addr: address where addr != cap.account_address && old(exists_at(addr)):
+        global<DiemAccount>(addr).authentication_key == old(global<DiemAccount>(addr).authentication_key);
+}
+
+ + + +
+ + + +## Function `extract_key_rotation_capability` + +Return a unique capability granting permission to rotate the sender's authentication key + + +
public fun extract_key_rotation_capability(account: &signer): DiemAccount::KeyRotationCapability
+
+ + + +
+Implementation + + +
public fun extract_key_rotation_capability(account: &signer): KeyRotationCapability
+acquires DiemAccount {
+    let account_address = Signer::address_of(account);
+    // Abort if we already extracted the unique key rotation capability for this account.
+    assert(
+        !delegated_key_rotation_capability(account_address),
+        Errors::invalid_state(EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED)
+    );
+    assert(exists_at(account_address), Errors::not_published(EACCOUNT));
+    let account = borrow_global_mut<DiemAccount>(account_address);
+    Option::extract(&mut account.key_rotation_capability)
+}
+
+ + + +
+ +
+Specification + + + +
include ExtractKeyRotationCapabilityAbortsIf;
+include ExtractKeyRotationCapabilityEnsures;
+
+ + + + + + + +
schema ExtractKeyRotationCapabilityAbortsIf {
+    account: signer;
+    
+    let account_addr = Signer::spec_address_of(account);
+    aborts_if !exists_at(account_addr) with Errors::NOT_PUBLISHED;
+    include AbortsIfDelegatedKeyRotationCapability;
+}
+
+ + + + + + + +
schema AbortsIfDelegatedKeyRotationCapability {
+    account: signer;
+    aborts_if delegated_key_rotation_capability(Signer::spec_address_of(account)) with Errors::INVALID_STATE;
+}
+
+ + + + + + + +
schema ExtractKeyRotationCapabilityEnsures {
+    account: signer;
+    ensures delegated_key_rotation_capability(Signer::spec_address_of(account));
+}
+
+ + + +
+ + + +## Function `restore_key_rotation_capability` + +Return the key rotation capability to the account it originally came from + + +
public fun restore_key_rotation_capability(cap: DiemAccount::KeyRotationCapability)
+
+ + + +
+Implementation + + +
public fun restore_key_rotation_capability(cap: KeyRotationCapability)
+acquires DiemAccount {
+    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
+    let account = borrow_global_mut<DiemAccount>(cap.account_address);
+    Option::fill(&mut account.key_rotation_capability, cap)
+}
+
+ + + +
+ +
+Specification + + + +
include RestoreKeyRotationCapabilityAbortsIf;
+include RestoreKeyRotationCapabilityEnsures;
+
+ + + + + + + +
schema RestoreKeyRotationCapabilityAbortsIf {
+    cap: KeyRotationCapability;
+    aborts_if !exists_at(cap.account_address) with Errors::NOT_PUBLISHED;
+    aborts_if !delegated_key_rotation_capability(cap.account_address) with Errors::INVALID_ARGUMENT;
+}
+
+ + + + + + + +
schema RestoreKeyRotationCapabilityEnsures {
+    cap: KeyRotationCapability;
+    ensures spec_holds_own_key_rotation_cap(cap.account_address);
+}
+
+ + + +
+ + + +## Function `add_currencies_for_account` + +Add balances for Token to new_account. If add_all_currencies is true, +then add for both token types. + + +
fun add_currencies_for_account<Token>(new_account: &signer, add_all_currencies: bool)
+
+ + + +
+Implementation + + +
fun add_currencies_for_account<Token>(
+    new_account: &signer,
+    add_all_currencies: bool,
+) {
+    let new_account_addr = Signer::address_of(new_account);
+    add_currency<Token>(new_account);
+    if (add_all_currencies) {
+        if (!exists<Balance<XUS>>(new_account_addr)) {
+            add_currency<XUS>(new_account);
+        };
+        if (!exists<Balance<XDX>>(new_account_addr)) {
+            add_currency<XDX>(new_account);
+        };
+    };
+}
+
+ + + +
+ +
+Specification + + + + + + +
let new_account_addr = Signer::spec_address_of(new_account);
+aborts_if !Roles::spec_can_hold_balance_addr(new_account_addr) with Errors::INVALID_ARGUMENT;
+include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_addr};
+include AddCurrencyForAccountEnsures<Token>{addr: new_account_addr};
+
+ + + + + + + +
schema AddCurrencyForAccountAbortsIf<Token> {
+    addr: address;
+    add_all_currencies: bool;
+    include Diem::AbortsIfNoCurrency<Token>;
+    aborts_if exists<Balance<Token>>(addr) with Errors::ALREADY_PUBLISHED;
+    include add_all_currencies && !exists<Balance<XUS>>(addr)
+        ==> Diem::AbortsIfNoCurrency<XUS>;
+    include add_all_currencies && !exists<Balance<XDX>>(addr)
+        ==> Diem::AbortsIfNoCurrency<XDX>;
+}
+
+ + + + + + + +
schema AddCurrencyForAccountEnsures<Token> {
+    addr: address;
+    add_all_currencies: bool;
+    include AddCurrencyEnsures<Token>;
+    include add_all_currencies && !exists<Balance<XUS>>(addr)
+        ==> AddCurrencyEnsures<XUS>;
+    include add_all_currencies && !exists<Balance<XDX>>(addr)
+        ==> AddCurrencyEnsures<XDX>;
+}
+
+ + + +
+ + + +## Function `make_account` + +Creates a new account with account at new_account_address with +authentication key auth_key_prefix | fresh_address. +Aborts if there is already an account at new_account_address. + +Creating an account at address 0x0 will abort as it is a reserved address for the MoveVM. + + +
fun make_account(new_account: signer, auth_key_prefix: vector<u8>)
+
+ + + +
+Implementation + + +
fun make_account(
+    new_account: signer,
+    auth_key_prefix: vector<u8>,
+) acquires AccountOperationsCapability {
+    let new_account_addr = Signer::address_of(&new_account);
+    // cannot create an account at the reserved address 0x0
+    assert(
+        new_account_addr != CoreAddresses::VM_RESERVED_ADDRESS(),
+        Errors::invalid_argument(ECANNOT_CREATE_AT_VM_RESERVED)
+    );
+    assert(
+        new_account_addr != CoreAddresses::CORE_CODE_ADDRESS(),
+        Errors::invalid_argument(ECANNOT_CREATE_AT_CORE_CODE)
+    );
+
+    // Construct authentication key.
+    let authentication_key = create_authentication_key(&new_account, auth_key_prefix);
+
+    // Publish AccountFreezing::FreezingBit (initially not frozen)
+    AccountFreezing::create(&new_account);
+    // The AccountOperationsCapability is published during Genesis, so it should
+    // always exist.  This is a sanity check.
+    assert(
+        exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()),
+        Errors::not_published(EACCOUNT_OPERATIONS_CAPABILITY)
+    );
+    // Emit the CreateAccountEvent
+    Event::emit_event(
+        &mut borrow_global_mut<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()).creation_events,
+        CreateAccountEvent { created: new_account_addr, role_id: Roles::get_role_id(new_account_addr) },
+    );
+    // Publishing the account resource last makes it possible to prove invariants that simplify
+    // aborts_if's, etc.
+    move_to(
+        &new_account,
+        DiemAccount {
+            authentication_key,
+            withdraw_capability: Option::some(
+                WithdrawCapability {
+                    account_address: new_account_addr
+            }),
+            key_rotation_capability: Option::some(
+                KeyRotationCapability {
+                    account_address: new_account_addr
+            }),
+            received_events: Event::new_event_handle<ReceivedPaymentEvent>(&new_account),
+            sent_events: Event::new_event_handle<SentPaymentEvent>(&new_account),
+            sequence_number: 0,
+        }
+    );
+    destroy_signer(new_account);
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let new_account_addr = Signer::address_of(new_account);
+modifies global<DiemAccount>(new_account_addr);
+modifies global<AccountFreezing::FreezingBit>(new_account_addr);
+modifies global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+ensures exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+requires exists<Roles::RoleId>(new_account_addr);
+include MakeAccountAbortsIf{addr: new_account_addr};
+ensures exists_at(new_account_addr);
+ensures AccountFreezing::spec_account_is_not_frozen(new_account_addr);
+
+let account_ops_cap = global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events);
+ensures spec_holds_own_key_rotation_cap(new_account_addr);
+ensures spec_holds_own_withdraw_cap(new_account_addr);
+
+ + + + + + + +
schema MakeAccountAbortsIf {
+    addr: address;
+    auth_key_prefix: vector<u8>;
+    aborts_if addr == CoreAddresses::VM_RESERVED_ADDRESS() with Errors::INVALID_ARGUMENT;
+    aborts_if addr == CoreAddresses::CORE_CODE_ADDRESS() with Errors::INVALID_ARGUMENT;
+    aborts_if exists<AccountFreezing::FreezingBit>(addr) with Errors::ALREADY_PUBLISHED;
+    aborts_if DiemTimestamp::is_genesis()
+        && !exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS())
+        with Errors::NOT_PUBLISHED;
+    include CreateAuthenticationKeyAbortsIf;
+}
+
+ + + +
+ + + +## Function `create_authentication_key` + +Construct an authentication key, aborting if the prefix is not valid. + + +
fun create_authentication_key(account: &signer, auth_key_prefix: vector<u8>): vector<u8>
+
+ + + +
+Implementation + + +
fun create_authentication_key(account: &signer, auth_key_prefix: vector<u8>): vector<u8> {
+    let authentication_key = auth_key_prefix;
+    Vector::append(
+        &mut authentication_key, LCS::to_bytes(Signer::borrow_address(account))
+    );
+    assert(
+        Vector::length(&authentication_key) == 32,
+        Errors::invalid_argument(EMALFORMED_AUTHENTICATION_KEY)
+    );
+    authentication_key
+}
+
+ + + +
+ +
+Specification + + +The specification of this function is abstracted to avoid the complexity of +vector concatenation of serialization results. The actual value of the key +is assumed to be irrelevant for callers. Instead the uninterpreted function +spec_abstract_create_authentication_key is used to represent the key value. +The aborts behavior is, however, preserved: the caller must provide a +key prefix of a specific length. + + +
pragma opaque;
+include [abstract] CreateAuthenticationKeyAbortsIf;
+ensures [abstract]
+    result == spec_abstract_create_authentication_key(auth_key_prefix) &&
+    len(result) == 32;
+
+ + + + + + + +
schema CreateAuthenticationKeyAbortsIf {
+    auth_key_prefix: vector<u8>;
+    aborts_if 16 + len(auth_key_prefix) != 32 with Errors::INVALID_ARGUMENT;
+}
+
+ + + + + + + +
define spec_abstract_create_authentication_key(auth_key_prefix: vector<u8>): vector<u8>;
+
+ + + +
+ + + +## Function `create_diem_root_account` + +Creates the diem root account (during genesis). Publishes the Diem root role, +Publishes a SlidingNonce resource, sets up event generator, publishes +AccountOperationsCapability, WriteSetManager, and finally makes the account. + + +
fun create_diem_root_account(auth_key_prefix: vector<u8>)
+
+ + + +
+Implementation + + +
fun create_diem_root_account(
+    auth_key_prefix: vector<u8>,
+) acquires AccountOperationsCapability {
+    DiemTimestamp::assert_genesis();
+    let dr_account = create_signer(CoreAddresses::DIEM_ROOT_ADDRESS());
+    CoreAddresses::assert_diem_root(&dr_account);
+    Roles::grant_diem_root_role(&dr_account);
+    SlidingNonce::publish(&dr_account);
+    Event::publish_generator(&dr_account);
+
+    assert(
+        !exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()),
+        Errors::already_published(EACCOUNT_OPERATIONS_CAPABILITY)
+    );
+    move_to(
+        &dr_account,
+        AccountOperationsCapability {
+            limits_cap: AccountLimits::grant_mutation_capability(&dr_account),
+            creation_events: Event::new_event_handle<CreateAccountEvent>(&dr_account),
+        }
+    );
+    assert(
+        !exists<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS()),
+        Errors::already_published(EWRITESET_MANAGER)
+    );
+    move_to(
+        &dr_account,
+        DiemWriteSetManager {
+            upgrade_events: Event::new_event_handle<Self::AdminTransactionEvent>(&dr_account),
+        }
+    );
+    make_account(dr_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include CreateDiemRootAccountModifies;
+include CreateDiemRootAccountAbortsIf;
+include CreateDiemRootAccountEnsures;
+
+ + + + + + + + + + +
schema CreateDiemRootAccountModifies {
+    let dr_addr = CoreAddresses::DIEM_ROOT_ADDRESS();
+    modifies global<DiemAccount>(dr_addr);
+    modifies global<AccountOperationsCapability>(dr_addr);
+    modifies global<DiemWriteSetManager>(dr_addr);
+    modifies global<SlidingNonce::SlidingNonce>(dr_addr);
+    modifies global<Roles::RoleId>(dr_addr);
+    modifies global<AccountFreezing::FreezingBit>(dr_addr);
+}
+
+ + + + + + + +
schema CreateDiemRootAccountAbortsIf {
+    auth_key_prefix: vector<u8>;
+    include DiemTimestamp::AbortsIfNotGenesis;
+    include Roles::GrantRole{addr: CoreAddresses::DIEM_ROOT_ADDRESS(), role_id: Roles::DIEM_ROOT_ROLE_ID};
+    aborts_if exists<SlidingNonce::SlidingNonce>(CoreAddresses::DIEM_ROOT_ADDRESS())
+        with Errors::ALREADY_PUBLISHED;
+    aborts_if exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS())
+        with Errors::ALREADY_PUBLISHED;
+    aborts_if exists<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS())
+        with Errors::ALREADY_PUBLISHED;
+    aborts_if exists<AccountFreezing::FreezingBit>(CoreAddresses::DIEM_ROOT_ADDRESS())
+        with Errors::ALREADY_PUBLISHED;
+    include CreateAuthenticationKeyAbortsIf;
+}
+
+ + + + + + + + + + +
schema CreateDiemRootAccountEnsures {
+    let dr_addr = CoreAddresses::DIEM_ROOT_ADDRESS();
+    ensures exists<AccountOperationsCapability>(dr_addr);
+    ensures exists<DiemWriteSetManager>(dr_addr);
+    ensures exists<SlidingNonce::SlidingNonce>(dr_addr);
+    ensures Roles::spec_has_diem_root_role_addr(dr_addr);
+    ensures exists_at(dr_addr);
+    ensures AccountFreezing::spec_account_is_not_frozen(dr_addr);
+    ensures spec_holds_own_key_rotation_cap(dr_addr);
+    ensures spec_holds_own_withdraw_cap(dr_addr);
+}
+
+ + + +
+ + + +## Function `create_treasury_compliance_account` + +Create a treasury/compliance account at new_account_address with authentication key +auth_key_prefix | new_account_address. Can only be called during genesis. +Also, publishes the treasury compliance role, the SlidingNonce resource, and +event handle generator, then makes the account. + + +
fun create_treasury_compliance_account(dr_account: &signer, auth_key_prefix: vector<u8>)
+
+ + + +
+Implementation + + +
fun create_treasury_compliance_account(
+    dr_account: &signer,
+    auth_key_prefix: vector<u8>,
+) acquires AccountOperationsCapability {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+    let new_account_address = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
+    let new_account = create_signer(new_account_address);
+    Roles::grant_treasury_compliance_role(&new_account, dr_account);
+    SlidingNonce::publish(&new_account);
+    Event::publish_generator(&new_account);
+    make_account(new_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+
+let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
+include CreateTreasuryComplianceAccountModifies;
+include CreateTreasuryComplianceAccountAbortsIf;
+include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include MakeAccountAbortsIf{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()};
+include CreateTreasuryComplianceAccountEnsures;
+
+let account_ops_cap = global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events);
+
+ + + + + + + + + + +
schema CreateTreasuryComplianceAccountModifies {
+    let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
+    modifies global<DiemAccount>(tc_addr);
+    modifies global<SlidingNonce::SlidingNonce>(tc_addr);
+    modifies global<Roles::RoleId>(tc_addr);
+    modifies global<AccountFreezing::FreezingBit>(tc_addr);
+    modifies global<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    ensures exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+}
+
+ + + + + + + +
schema CreateTreasuryComplianceAccountAbortsIf {
+    dr_account: signer;
+    auth_key_prefix: vector<u8>;
+    include DiemTimestamp::AbortsIfNotGenesis;
+    include Roles::GrantRole{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), role_id: Roles::TREASURY_COMPLIANCE_ROLE_ID};
+    aborts_if exists<SlidingNonce::SlidingNonce>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS())
+        with Errors::ALREADY_PUBLISHED;
+}
+
+ + + + + + + + + + +
schema CreateTreasuryComplianceAccountEnsures {
+    let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
+    ensures Roles::spec_has_treasury_compliance_role_addr(tc_addr);
+    ensures exists_at(tc_addr);
+    ensures exists<SlidingNonce::SlidingNonce>(tc_addr);
+    ensures AccountFreezing::spec_account_is_not_frozen(tc_addr);
+    ensures spec_holds_own_key_rotation_cap(tc_addr);
+    ensures spec_holds_own_withdraw_cap(tc_addr);
+}
+
+ + + +
+ + + +## Function `create_designated_dealer` + +Create a designated dealer account at new_account_address with authentication key +auth_key_prefix | new_account_address, for non synthetic CoinType. +Creates Preburn resource under account 'new_account_address' + + +
public fun create_designated_dealer<CoinType>(creator_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>, add_all_currencies: bool)
+
+ + + +
+Implementation + + +
public fun create_designated_dealer<CoinType>(
+    creator_account: &signer,
+    new_account_address: address,
+    auth_key_prefix: vector<u8>,
+    human_name: vector<u8>,
+    add_all_currencies: bool,
+) acquires AccountOperationsCapability {
+    let new_dd_account = create_signer(new_account_address);
+    Event::publish_generator(&new_dd_account);
+    Roles::new_designated_dealer_role(creator_account, &new_dd_account);
+    DesignatedDealer::publish_designated_dealer_credential<CoinType>(&new_dd_account, creator_account, add_all_currencies);
+    add_currencies_for_account<CoinType>(&new_dd_account, add_all_currencies);
+    DualAttestation::publish_credential(&new_dd_account, creator_account, human_name);
+    make_account(new_dd_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
include CreateDesignatedDealerAbortsIf<CoinType>;
+include CreateDesignatedDealerEnsures<CoinType>;
+
+ + + + + + + +
schema CreateDesignatedDealerAbortsIf<CoinType> {
+    creator_account: signer;
+    new_account_address: address;
+    auth_key_prefix: vector<u8>;
+    add_all_currencies: bool;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Roles::AbortsIfNotTreasuryCompliance{account: creator_account};
+    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
+    aborts_if exists<DesignatedDealer::Dealer>(new_account_address) with Errors::ALREADY_PUBLISHED;
+    include if (add_all_currencies) DesignatedDealer::AddCurrencyAbortsIf<XUS>{dd_addr: new_account_address}
+            else DesignatedDealer::AddCurrencyAbortsIf<CoinType>{dd_addr: new_account_address};
+    include AddCurrencyForAccountAbortsIf<CoinType>{addr: new_account_address};
+    include MakeAccountAbortsIf{addr: new_account_address};
+}
+
+ + + + + + + +
schema CreateDesignatedDealerEnsures<CoinType> {
+    new_account_address: address;
+    ensures exists<DesignatedDealer::Dealer>(new_account_address);
+    ensures exists_at(new_account_address);
+    ensures Roles::spec_has_designated_dealer_role_addr(new_account_address);
+    include AddCurrencyForAccountEnsures<CoinType>{addr: new_account_address};
+}
+
+ + + +
+ + + +## Function `create_parent_vasp_account` + +Create an account with the ParentVASP role at new_account_address with authentication key +auth_key_prefix | new_account_address. If add_all_currencies is true, 0 balances for +all available currencies in the system will also be added. + + +
public fun create_parent_vasp_account<Token>(creator_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>, add_all_currencies: bool)
+
+ + + +
+Implementation + + +
public fun create_parent_vasp_account<Token>(
+    creator_account: &signer,  // TreasuryCompliance
+    new_account_address: address,
+    auth_key_prefix: vector<u8>,
+    human_name: vector<u8>,
+    add_all_currencies: bool
+) acquires AccountOperationsCapability {
+    let new_account = create_signer(new_account_address);
+    Roles::new_parent_vasp_role(creator_account, &new_account);
+    VASP::publish_parent_vasp_credential(&new_account, creator_account);
+    Event::publish_generator(&new_account);
+    DualAttestation::publish_credential(&new_account, creator_account, human_name);
+    add_currencies_for_account<Token>(&new_account, add_all_currencies);
+    make_account(new_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
include CreateParentVASPAccountAbortsIf<Token>;
+include CreateParentVASPAccountEnsures<Token>;
+
+ + + + + + + +
schema CreateParentVASPAccountAbortsIf<Token> {
+    creator_account: signer;
+    new_account_address: address;
+    auth_key_prefix: vector<u8>;
+    add_all_currencies: bool;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Roles::AbortsIfNotTreasuryCompliance{account: creator_account};
+    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
+    aborts_if VASP::is_vasp(new_account_address) with Errors::ALREADY_PUBLISHED;
+    include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_address};
+    include MakeAccountAbortsIf{addr: new_account_address};
+}
+
+ + + + + + + +
schema CreateParentVASPAccountEnsures<Token> {
+    new_account_address: address;
+    include VASP::PublishParentVASPEnsures{vasp_addr: new_account_address};
+    ensures exists_at(new_account_address);
+    ensures Roles::spec_has_parent_VASP_role_addr(new_account_address);
+    include AddCurrencyForAccountEnsures<Token>{addr: new_account_address};
+}
+
+ + + +
+ + + +## Function `create_child_vasp_account` + +Create an account with the ChildVASP role at new_account_address with authentication key +auth_key_prefix | new_account_address and a 0 balance of type Token. If +add_all_currencies is true, 0 balances for all avaialable currencies in the system will +also be added. This account will be a child of creator, which must be a ParentVASP. + + +
public fun create_child_vasp_account<Token>(parent: &signer, new_account_address: address, auth_key_prefix: vector<u8>, add_all_currencies: bool)
+
+ + + +
+Implementation + + +
public fun create_child_vasp_account<Token>(
+    parent: &signer,
+    new_account_address: address,
+    auth_key_prefix: vector<u8>,
+    add_all_currencies: bool,
+) acquires AccountOperationsCapability {
+    let new_account = create_signer(new_account_address);
+    Roles::new_child_vasp_role(parent, &new_account);
+    VASP::publish_child_vasp_credential(
+        parent,
+        &new_account,
+    );
+    Event::publish_generator(&new_account);
+    add_currencies_for_account<Token>(&new_account, add_all_currencies);
+    make_account(new_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
include CreateChildVASPAccountAbortsIf<Token>;
+include CreateChildVASPAccountEnsures<Token>{
+    parent_addr: Signer::spec_address_of(parent),
+    child_addr: new_account_address,
+};
+include AddCurrencyForAccountEnsures<Token>{addr: new_account_address};
+
+ + + + + + + +
schema CreateChildVASPAccountAbortsIf<Token> {
+    parent: signer;
+    new_account_address: address;
+    auth_key_prefix: vector<u8>;
+    add_all_currencies: bool;
+    include Roles::AbortsIfNotParentVasp{account: parent};
+    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
+    include VASP::PublishChildVASPAbortsIf{child_addr: new_account_address};
+    include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_address};
+    include MakeAccountAbortsIf{addr: new_account_address};
+}
+
+ + + + + + + +
schema CreateChildVASPAccountEnsures<Token> {
+    parent_addr: address;
+    child_addr: address;
+    add_all_currencies: bool;
+    include VASP::PublishChildVASPEnsures;
+    ensures exists_at(child_addr);
+    ensures Roles::spec_has_child_VASP_role_addr(child_addr);
+}
+
+ + + +
+ + + +## Function `create_signer` + + + +
fun create_signer(addr: address): signer
+
+ + + +
+Implementation + + +
native fun create_signer(addr: address): signer;
+
+ + + +
+ + + +## Function `destroy_signer` + + + +
fun destroy_signer(sig: signer)
+
+ + + +
+Implementation + + +
native fun destroy_signer(sig: signer);
+
+ + + +
+ + + +## Function `balance_for` + +Helper to return the u64 value of the balance for account + + +
fun balance_for<Token>(balance: &DiemAccount::Balance<Token>): u64
+
+ + + +
+Implementation + + +
fun balance_for<Token>(balance: &Balance<Token>): u64 {
+    Diem::value<Token>(&balance.coin)
+}
+
+ + + +
+ + + +## Function `balance` + +Return the current balance of the account at addr. + + +
public fun balance<Token>(addr: address): u64
+
+ + + +
+Implementation + + +
public fun balance<Token>(addr: address): u64 acquires Balance {
+    assert(exists<Balance<Token>>(addr), Errors::not_published(EPAYER_DOESNT_HOLD_CURRENCY));
+    balance_for(borrow_global<Balance<Token>>(addr))
+}
+
+ + + +
+ +
+Specification + + + +
aborts_if !exists<Balance<Token>>(addr) with Errors::NOT_PUBLISHED;
+
+ + + +
+ + + +## Function `add_currency` + +Add a balance of Token type to the sending account + + +
public fun add_currency<Token>(account: &signer)
+
+ + + +
+Implementation + + +
public fun add_currency<Token>(account: &signer) {
+    // aborts if `Token` is not a currency type in the system
+    Diem::assert_is_currency<Token>();
+    // Check that an account with this role is allowed to hold funds
+    assert(
+        Roles::can_hold_balance(account),
+        Errors::invalid_argument(EROLE_CANT_STORE_BALANCE)
+    );
+    // aborts if this account already has a balance in `Token`
+    let addr = Signer::address_of(account);
+    assert(!exists<Balance<Token>>(addr), Errors::already_published(EADD_EXISTING_CURRENCY));
+
+    move_to(account, Balance<Token>{ coin: Diem::zero<Token>() })
+}
+
+ + + +
+ +
+Specification + + + +
include AddCurrencyAbortsIf<Token>;
+include AddCurrencyEnsures<Token>{addr: Signer::spec_address_of(account)};
+
+ + + + + + + +
schema AddCurrencyAbortsIf<Token> {
+    account: signer;
+}
+
+ + +Currency must be valid + + +
schema AddCurrencyAbortsIf<Token> {
+    include Diem::AbortsIfNoCurrency<Token>;
+}
+
+ + +account cannot have an existing balance in Currency + + +
schema AddCurrencyAbortsIf<Token> {
+    aborts_if exists<Balance<Token>>(Signer::address_of(account)) with Errors::ALREADY_PUBLISHED;
+}
+
+ + +account must be allowed to hold balances. + + +
schema AddCurrencyAbortsIf<Token> {
+    include AbortsIfAccountCantHoldBalance;
+}
+
+ + + + + + + +
schema AddCurrencyEnsures<Token> {
+    addr: address;
+}
+
+ + +This publishes a Balance<Currency> to the caller's account + + +
schema AddCurrencyEnsures<Token> {
+    ensures exists<Balance<Token>>(addr);
+    ensures global<Balance<Token>>(addr)
+        == Balance<Token>{ coin: Diem<Token> { value: 0 } };
+}
+
+ + + + + +### Access Control + + + + + + +
schema AbortsIfAccountCantHoldBalance {
+    account: signer;
+}
+
+ + +This function must abort if the predicate can_hold_balance for account returns false +[[D1]][ROLE][[D2]][ROLE][[D3]][ROLE][[D4]][ROLE][[D5]][ROLE][[D6]][ROLE][[D7]][ROLE]. + + +
schema AbortsIfAccountCantHoldBalance {
+    aborts_if !Roles::can_hold_balance(account) with Errors::INVALID_ARGUMENT;
+}
+
+ + + +
+ + + +## Function `accepts_currency` + +Return whether the account at addr accepts Token type coins + + +
public fun accepts_currency<Token>(addr: address): bool
+
+ + + +
+Implementation + + +
public fun accepts_currency<Token>(addr: address): bool {
+    exists<Balance<Token>>(addr)
+}
+
+ + + +
+ + + +## Function `sequence_number_for_account` + +Helper to return the sequence number field for given account + + +
fun sequence_number_for_account(account: &DiemAccount::DiemAccount): u64
+
+ + + +
+Implementation + + +
fun sequence_number_for_account(account: &DiemAccount): u64 {
+    account.sequence_number
+}
+
+ + + +
+ + + +## Function `sequence_number` + +Return the current sequence number at addr + + +
public fun sequence_number(addr: address): u64
+
+ + + +
+Implementation + + +
public fun sequence_number(addr: address): u64 acquires DiemAccount {
+    assert(exists_at(addr), Errors::not_published(EACCOUNT));
+    sequence_number_for_account(borrow_global<DiemAccount>(addr))
+}
+
+ + + +
+ + + +## Function `authentication_key` + +Return the authentication key for this account + + +
public fun authentication_key(addr: address): vector<u8>
+
+ + + +
+Implementation + + +
public fun authentication_key(addr: address): vector<u8> acquires DiemAccount {
+    assert(exists_at(addr), Errors::not_published(EACCOUNT));
+    *&borrow_global<DiemAccount>(addr).authentication_key
+}
+
+ + + +
+ + + +## Function `delegated_key_rotation_capability` + +Return true if the account at addr has delegated its key rotation capability + + +
public fun delegated_key_rotation_capability(addr: address): bool
+
+ + + +
+Implementation + + +
public fun delegated_key_rotation_capability(addr: address): bool
+acquires DiemAccount {
+    assert(exists_at(addr), Errors::not_published(EACCOUNT));
+    Option::is_none(&borrow_global<DiemAccount>(addr).key_rotation_capability)
+}
+
+ + + +
+ + + +## Function `delegated_withdraw_capability` + +Return true if the account at addr has delegated its withdraw capability + + +
public fun delegated_withdraw_capability(addr: address): bool
+
+ + + +
+Implementation + + +
public fun delegated_withdraw_capability(addr: address): bool
+acquires DiemAccount {
+    assert(exists_at(addr), Errors::not_published(EACCOUNT));
+    Option::is_none(&borrow_global<DiemAccount>(addr).withdraw_capability)
+}
+
+ + + +
+ + + +## Function `withdraw_capability_address` + +Return a reference to the address associated with the given withdraw capability + + +
public fun withdraw_capability_address(cap: &DiemAccount::WithdrawCapability): &address
+
+ + + +
+Implementation + + +
public fun withdraw_capability_address(cap: &WithdrawCapability): &address {
+    &cap.account_address
+}
+
+ + + +
+ + + +## Function `key_rotation_capability_address` + +Return a reference to the address associated with the given key rotation capability + + +
public fun key_rotation_capability_address(cap: &DiemAccount::KeyRotationCapability): &address
+
+ + + +
+Implementation + + +
public fun key_rotation_capability_address(cap: &KeyRotationCapability): &address {
+    &cap.account_address
+}
+
+ + + +
+ + + +## Function `exists_at` + +Checks if an account exists at check_addr + + +
public fun exists_at(check_addr: address): bool
+
+ + + +
+Implementation + + +
public fun exists_at(check_addr: address): bool {
+    exists<DiemAccount>(check_addr)
+}
+
+ + + +
+ + + +## Function `module_prologue` + +The prologue for module transaction + + +
fun module_prologue<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time: u64, chain_id: u8)
+
+ + + +
+Implementation + + +
fun module_prologue<Token>(
+    sender: &signer,
+    txn_sequence_number: u64,
+    txn_public_key: vector<u8>,
+    txn_gas_price: u64,
+    txn_max_gas_units: u64,
+    txn_expiration_time: u64,
+    chain_id: u8,
+) acquires DiemAccount, Balance {
+    assert(
+        DiemTransactionPublishingOption::is_module_allowed(sender),
+        Errors::invalid_state(PROLOGUE_EMODULE_NOT_ALLOWED),
+    );
+
+    prologue_common<Token>(
+        sender,
+        txn_sequence_number,
+        txn_public_key,
+        txn_gas_price,
+        txn_max_gas_units,
+        txn_expiration_time,
+        chain_id,
+    )
+}
+
+ + + +
+ +
+Specification + + + + + + +
let transaction_sender = Signer::spec_address_of(sender);
+
+let max_transaction_fee = txn_gas_price * txn_max_gas_units;
+include ModulePrologueAbortsIf<Token> {
+    max_transaction_fee,
+    txn_expiration_time_seconds: txn_expiration_time,
+};
+ensures prologue_guarantees(sender);
+
+ + + + + + + +
schema ModulePrologueAbortsIf<Token> {
+    sender: signer;
+    txn_sequence_number: u64;
+    txn_public_key: vector<u8>;
+    chain_id: u8;
+    max_transaction_fee: u128;
+    txn_expiration_time_seconds: u64;
+    
+    let transaction_sender = Signer::spec_address_of(sender);
+    include PrologueCommonAbortsIf<Token> {
+        transaction_sender,
+        txn_sequence_number,
+        txn_public_key,
+        chain_id,
+        max_transaction_fee,
+        txn_expiration_time_seconds,
+    };
+}
+
+ + +Aborts only in genesis. Does not need to be handled. + + +
schema ModulePrologueAbortsIf<Token> {
+    include DiemTransactionPublishingOption::AbortsIfNoTransactionPublishingOption;
+}
+
+ + +Covered: L75 (Match 9) + + +
schema ModulePrologueAbortsIf<Token> {
+    aborts_if !DiemTransactionPublishingOption::spec_is_module_allowed(sender) with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Function `script_prologue` + +The prologue for script transaction + + +
fun script_prologue<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time: u64, chain_id: u8, script_hash: vector<u8>)
+
+ + + +
+Implementation + + +
fun script_prologue<Token>(
+    sender: &signer,
+    txn_sequence_number: u64,
+    txn_public_key: vector<u8>,
+    txn_gas_price: u64,
+    txn_max_gas_units: u64,
+    txn_expiration_time: u64,
+    chain_id: u8,
+    script_hash: vector<u8>,
+) acquires DiemAccount, Balance {
+    assert(
+        DiemTransactionPublishingOption::is_script_allowed(sender, &script_hash),
+        Errors::invalid_state(PROLOGUE_ESCRIPT_NOT_ALLOWED),
+    );
+
+    prologue_common<Token>(
+        sender,
+        txn_sequence_number,
+        txn_public_key,
+        txn_gas_price,
+        txn_max_gas_units,
+        txn_expiration_time,
+        chain_id,
+    )
+}
+
+ + + +
+ +
+Specification + + + + + + +
let transaction_sender = Signer::spec_address_of(sender);
+
+let max_transaction_fee = txn_gas_price * txn_max_gas_units;
+include ScriptPrologueAbortsIf<Token>{
+    max_transaction_fee,
+    txn_expiration_time_seconds: txn_expiration_time,
+};
+ensures prologue_guarantees(sender);
+
+ + + + + + + +
schema ScriptPrologueAbortsIf<Token> {
+    sender: signer;
+    txn_sequence_number: u64;
+    txn_public_key: vector<u8>;
+    chain_id: u8;
+    max_transaction_fee: u128;
+    txn_expiration_time_seconds: u64;
+    script_hash: vector<u8>;
+    
+    let transaction_sender = Signer::spec_address_of(sender);
+    include PrologueCommonAbortsIf<Token> {transaction_sender};
+}
+
+ + +Aborts only in Genesis. Does not need to be handled. + + +
schema ScriptPrologueAbortsIf<Token> {
+    include DiemTransactionPublishingOption::AbortsIfNoTransactionPublishingOption;
+}
+
+ + +Covered: L74 (Match 8) + + +
schema ScriptPrologueAbortsIf<Token> {
+    aborts_if !DiemTransactionPublishingOption::spec_is_script_allowed(sender, script_hash) with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Function `writeset_prologue` + +The prologue for WriteSet transaction + + +
fun writeset_prologue(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_expiration_time: u64, chain_id: u8)
+
+ + + +
+Implementation + + +
fun writeset_prologue(
+    sender: &signer,
+    txn_sequence_number: u64,
+    txn_public_key: vector<u8>,
+    txn_expiration_time: u64,
+    chain_id: u8,
+) acquires DiemAccount, Balance {
+    assert(
+        Signer::address_of(sender) == CoreAddresses::DIEM_ROOT_ADDRESS(),
+        Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER)
+    );
+    assert(Roles::has_diem_root_role(sender), Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER));
+
+    // Currency code don't matter here as it won't be charged anyway. Gas constants are ommitted.
+    prologue_common<XUS>(
+        sender,
+        txn_sequence_number,
+        txn_public_key,
+        0,
+        0,
+        txn_expiration_time,
+        chain_id,
+    )
+}
+
+ + + +
+ +
+Specification + + + +
include WritesetPrologueAbortsIf {txn_expiration_time_seconds: txn_expiration_time};
+ensures prologue_guarantees(sender);
+ensures Roles::has_diem_root_role(sender);
+
+ + + + + + + +
schema WritesetPrologueAbortsIf {
+    sender: signer;
+    txn_sequence_number: u64;
+    txn_public_key: vector<u8>;
+    txn_expiration_time_seconds: u64;
+    chain_id: u8;
+    
+    let transaction_sender = Signer::spec_address_of(sender);
+}
+
+ + +Covered: L146 (Match 0) + + +
schema WritesetPrologueAbortsIf {
+    aborts_if transaction_sender != CoreAddresses::DIEM_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT;
+}
+
+ + +Must abort if the signer does not have the DiemRoot role [[H9]][PERMISSION]. +Covered: L146 (Match 0) + + +
schema WritesetPrologueAbortsIf {
+    aborts_if !Roles::spec_has_diem_root_role_addr(transaction_sender) with Errors::INVALID_ARGUMENT;
+    include PrologueCommonAbortsIf<XUS>{
+        transaction_sender,
+        max_transaction_fee: 0,
+    };
+}
+
+ + + +
+ + + +## Function `prologue_common` + +The common prologue is invoked at the beginning of every transaction +The main properties that it verifies: +- The account's auth key matches the transaction's public key +- That the account has enough balance to pay for all of the gas +- That the sequence number matches the transaction's sequence key + + +
fun prologue_common<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time_seconds: u64, chain_id: u8)
+
+ + + +
+Implementation + + +
fun prologue_common<Token>(
+    sender: &signer,
+    txn_sequence_number: u64,
+    txn_public_key: vector<u8>,
+    txn_gas_price: u64,
+    txn_max_gas_units: u64,
+    txn_expiration_time_seconds: u64,
+    chain_id: u8,
+) acquires DiemAccount, Balance {
+    let transaction_sender = Signer::address_of(sender);
+
+    // [PCA1]: Check that the chain ID stored on-chain matches the chain ID specified by the transaction
+    assert(ChainId::get() == chain_id, Errors::invalid_argument(PROLOGUE_EBAD_CHAIN_ID));
+
+    // [PCA2]: Verify that the transaction sender's account exists
+    assert(exists_at(transaction_sender), Errors::invalid_argument(PROLOGUE_EACCOUNT_DNE));
+
+    // [PCA3]: We check whether this account is frozen, if it is no transaction can be sent from it.
+    assert(
+        !AccountFreezing::account_is_frozen(transaction_sender),
+        Errors::invalid_state(PROLOGUE_EACCOUNT_FROZEN)
+    );
+
+    // Load the transaction sender's account
+    let sender_account = borrow_global<DiemAccount>(transaction_sender);
+
+    // [PCA4]: Check that the hash of the transaction's public key matches the account's auth key
+    assert(
+        Hash::sha3_256(txn_public_key) == *&sender_account.authentication_key,
+        Errors::invalid_argument(PROLOGUE_EINVALID_ACCOUNT_AUTH_KEY),
+    );
+
+    // [PCA5]: Check that the account has enough balance for all of the gas
+    assert(
+        (txn_gas_price as u128) * (txn_max_gas_units as u128) <= MAX_U64,
+        Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT),
+    );
+
+    let max_transaction_fee = txn_gas_price * txn_max_gas_units;
+
+    // Don't grab the balance if the transaction fee is zero
+    if (max_transaction_fee > 0) {
+        // [PCA6]: Check that the account has a balance in this currency
+        assert(
+            exists<Balance<Token>>(transaction_sender),
+            Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
+        );
+        let balance_amount = balance<Token>(transaction_sender);
+        // [PCA7]: Check that the account can cover the maximum transaction fee
+        assert(
+            balance_amount >= max_transaction_fee,
+            Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
+        );
+    };
+
+    // [PCA8]: Check that the transaction hasn't expired
+    assert(
+        DiemTimestamp::now_seconds() < txn_expiration_time_seconds,
+        Errors::invalid_argument(PROLOGUE_ETRANSACTION_EXPIRED)
+    );
+
+    // [PCA9]: Check that the transaction sequence number is not too old (in the past)
+    assert(
+        txn_sequence_number >= sender_account.sequence_number,
+        Errors::invalid_argument(PROLOGUE_ESEQUENCE_NUMBER_TOO_OLD)
+    );
+
+    // [PCA10]: Check that the transaction's sequence number matches the
+    // current sequence number. Otherwise sequence number is too new by [PCA8].
+    assert(
+        txn_sequence_number == sender_account.sequence_number,
+        Errors::invalid_argument(PROLOGUE_ESEQUENCE_NUMBER_TOO_NEW)
+    );
+
+    // WARNING: No checks should be added here as the sequence number too new check should be the last check run
+    // by the prologue.
+}
+
+ + + +
+ +
+Specification + + + + + + +
let transaction_sender = Signer::spec_address_of(sender);
+
+let max_transaction_fee = txn_gas_price * txn_max_gas_units;
+include PrologueCommonAbortsIf<Token> {
+    transaction_sender,
+    max_transaction_fee,
+};
+
+ + + + + + + +
schema PrologueCommonAbortsIf<Token> {
+    transaction_sender: address;
+    txn_sequence_number: u64;
+    txn_public_key: vector<u8>;
+    chain_id: u8;
+    max_transaction_fee: u128;
+    txn_expiration_time_seconds: u64;
+}
+
+ + +Only happens if this is called in Genesis. Doesn't need to be handled. + + +
schema PrologueCommonAbortsIf<Token> {
+    include DiemTimestamp::AbortsIfNotOperating;
+}
+
+ + +[PCA1] Covered: L73 (Match 7) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if chain_id != ChainId::spec_get_chain_id() with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA2] Covered: L65 (Match 4) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if !exists_at(transaction_sender) with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA3] Covered: L57 (Match 0) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if AccountFreezing::spec_account_is_frozen(transaction_sender) with Errors::INVALID_STATE;
+}
+
+ + +[PCA4] Covered: L59 (Match 1) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if Hash::sha3_256(txn_public_key) != global<DiemAccount>(transaction_sender).authentication_key with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA5] Covered: L69 (Match 5) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if max_transaction_fee > MAX_U64 with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA6] Covered: L69 (Match 5) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if max_transaction_fee > 0 && !exists<Balance<Token>>(transaction_sender) with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA7] Covered: L69 (Match 5) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if max_transaction_fee > 0 && balance<Token>(transaction_sender) < max_transaction_fee with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA8] Covered: L72 (Match 6) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if DiemTimestamp::spec_now_seconds() >= txn_expiration_time_seconds with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA9] Covered: L61 (Match 2) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if txn_sequence_number < global<DiemAccount>(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT;
+}
+
+ + +[PCA10] Covered: L63 (match 3) + + +
schema PrologueCommonAbortsIf<Token> {
+    aborts_if txn_sequence_number > global<DiemAccount>(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT;
+}
+
+ + + +
+ + + +## Function `epilogue` + +Collects gas and bumps the sequence number for executing a transaction. +The epilogue is invoked at the end of the transaction. +If the exection of the epilogue fails, it is re-invoked with different arguments, and +based on the conditions checked in the prologue, should never fail. + + +
fun epilogue<Token>(account: &signer, txn_sequence_number: u64, txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64)
+
+ + + +
+Implementation + + +
fun epilogue<Token>(
+    account: &signer,
+    txn_sequence_number: u64,
+    txn_gas_price: u64,
+    txn_max_gas_units: u64,
+    gas_units_remaining: u64
+) acquires DiemAccount, Balance {
+    let sender = Signer::address_of(account);
+
+    // [EA1; Invariant]: Make sure that the transaction's `max_gas_units` is greater
+    // than the number of gas units remaining after execution.
+    assert(txn_max_gas_units >= gas_units_remaining, Errors::invalid_argument(EGAS));
+    let gas_used = txn_max_gas_units - gas_units_remaining;
+
+    // [EA2; Invariant]: Make sure that the transaction fee would not overflow maximum
+    // number representable in a u64. Already checked in [PCA5].
+    assert(
+        (txn_gas_price as u128) * (gas_used as u128) <= MAX_U64,
+        Errors::limit_exceeded(EGAS)
+    );
+    let transaction_fee_amount = txn_gas_price * gas_used;
+
+    // [EA3; Invariant]: Make sure that account exists, and load the
+    // transaction sender's account. Already checked in [PCA2].
+    assert(exists_at(sender), Errors::not_published(EACCOUNT));
+    let sender_account = borrow_global_mut<DiemAccount>(sender);
+
+    // [EA4; Condition]: Make sure account's sequence number is within the
+    // representable range of u64. Bump the sequence number
+    assert(
+        sender_account.sequence_number < (MAX_U64 as u64),
+        Errors::limit_exceeded(ESEQUENCE_NUMBER)
+    );
+
+    // [EA4; Invariant]: Make sure passed-in `txn_sequence_number` matches
+    // the `sender_account`'s `sequence_number`. Already checked in [PCA9].
+    assert(
+        sender_account.sequence_number == txn_sequence_number,
+        Errors::invalid_argument(ESEQUENCE_NUMBER)
+    );
+
+    // The transaction sequence number is passed in to prevent any
+    // possibility of the account's sequence number increasing by more than
+    // one for any transaction.
+    sender_account.sequence_number = txn_sequence_number + 1;
+
+    if (transaction_fee_amount > 0) {
+        // [Invariant Use]: Balance for `Token` verified to exist for non-zero transaction fee amounts by [PCA6].
+        let sender_balance = borrow_global_mut<Balance<Token>>(sender);
+        let coin = &mut sender_balance.coin;
+
+        // [EA4; Condition]: Abort if this withdrawal would make the `sender_account`'s balance go negative
+        assert(
+            transaction_fee_amount <= Diem::value(coin),
+            Errors::limit_exceeded(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
+        );
+
+        // NB: `withdraw_from_balance` is not used as limits do not apply to this transaction fee
+        TransactionFee::pay_fee(Diem::withdraw(coin, transaction_fee_amount))
+    }
+}
+
+ + + +
+ + + +## Function `writeset_epilogue` + +Epilogue for WriteSet trasnaction + + +
fun writeset_epilogue(dr_account: &signer, txn_sequence_number: u64, should_trigger_reconfiguration: bool)
+
+ + + +
+Implementation + + +
fun writeset_epilogue(
+    dr_account: &signer,
+    txn_sequence_number: u64,
+    should_trigger_reconfiguration: bool,
+) acquires DiemWriteSetManager, DiemAccount, Balance {
+    let writeset_events_ref = borrow_global_mut<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    Event::emit_event<AdminTransactionEvent>(
+        &mut writeset_events_ref.upgrade_events,
+        AdminTransactionEvent { committed_timestamp_secs: DiemTimestamp::now_seconds() },
+    );
+    // Currency code don't matter here as it won't be charged anyway.
+    epilogue<XUS>(dr_account, txn_sequence_number, 0, 0, 0);
+    if (should_trigger_reconfiguration) DiemConfig::reconfigure(dr_account)
+}
+
+ + + +
+ + + +## Function `create_validator_account` + +Create a Validator account + + +
public fun create_validator_account(dr_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
+
+ + + +
+Implementation + + +
public fun create_validator_account(
+    dr_account: &signer,
+    new_account_address: address,
+    auth_key_prefix: vector<u8>,
+    human_name: vector<u8>,
+) acquires AccountOperationsCapability {
+    let new_account = create_signer(new_account_address);
+    // The dr_account account is verified to have the diem root role in `Roles::new_validator_role`
+    Roles::new_validator_role(dr_account, &new_account);
+    Event::publish_generator(&new_account);
+    ValidatorConfig::publish(&new_account, dr_account, human_name);
+    make_account(new_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
include CreateValidatorAccountAbortsIf;
+include CreateValidatorAccountEnsures;
+
+ + + + + + + +
schema CreateValidatorAccountAbortsIf {
+    dr_account: signer;
+    new_account_address: address;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    include MakeAccountAbortsIf{addr: new_account_address};
+    include DiemTimestamp::AbortsIfNotOperating;
+    aborts_if ValidatorConfig::exists_config(new_account_address) with Errors::ALREADY_PUBLISHED;
+}
+
+ + + + + + + +
schema CreateValidatorAccountEnsures {
+    new_account_address: address;
+    include Roles::GrantRole{addr: new_account_address, role_id: Roles::VALIDATOR_ROLE_ID};
+    ensures exists_at(new_account_address);
+    ensures ValidatorConfig::exists_config(new_account_address);
+}
+
+ + + +
+ + + +## Function `create_validator_operator_account` + +Create a Validator Operator account + + +
public fun create_validator_operator_account(dr_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
+
+ + + +
+Implementation + + +
public fun create_validator_operator_account(
+    dr_account: &signer,
+    new_account_address: address,
+    auth_key_prefix: vector<u8>,
+    human_name: vector<u8>,
+) acquires AccountOperationsCapability {
+    let new_account = create_signer(new_account_address);
+    // The dr_account is verified to have the diem root role in `Roles::new_validator_operator_role`
+    Roles::new_validator_operator_role(dr_account, &new_account);
+    Event::publish_generator(&new_account);
+    ValidatorOperatorConfig::publish(&new_account, dr_account, human_name);
+    make_account(new_account, auth_key_prefix)
+}
+
+ + + +
+ +
+Specification + + + +
include CreateValidatorOperatorAccountAbortsIf;
+include CreateValidatorOperatorAccountEnsures;
+
+ + + + + + + +
schema CreateValidatorOperatorAccountAbortsIf {
+    dr_account: signer;
+    new_account_address: address;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    include MakeAccountAbortsIf{addr: new_account_address};
+    include DiemTimestamp::AbortsIfNotOperating;
+    aborts_if ValidatorOperatorConfig::has_validator_operator_config(new_account_address) with Errors::ALREADY_PUBLISHED;
+}
+
+ + + + + + + +
schema CreateValidatorOperatorAccountEnsures {
+    new_account_address: address;
+    include Roles::GrantRole{addr: new_account_address, role_id: Roles::VALIDATOR_OPERATOR_ROLE_ID};
+    ensures exists_at(new_account_address);
+    ensures ValidatorOperatorConfig::has_validator_operator_config(new_account_address);
+}
+
+ + + +
+ + + +## Module Specification + + + + + + +
define spec_has_published_account_limits<Token>(addr: address): bool {
+   if (VASP::is_vasp(addr)) VASP::spec_has_account_limits<Token>(addr)
+   else AccountLimits::has_window_published<Token>(addr)
+}
+
+ + + + + + +### Access Control + + + + +#### Key Rotation Capability + + +the permission "RotateAuthenticationKey(addr)" is granted to the account at addr [[H17]][PERMISSION]. +When an account is created, its KeyRotationCapability is granted to the account. + + +
apply EnsuresHasKeyRotationCap{account: new_account} to make_account;
+
+ + +Only make_account creates KeyRotationCap [[H17]][PERMISSION][[I17]][PERMISSION]. create_*_account only calls +make_account, and does not pack KeyRotationCap by itself. +restore_key_rotation_capability restores KeyRotationCap, and does not create new one. + + +
apply PreserveKeyRotationCapAbsence to * except make_account, create_*_account,
+      restore_key_rotation_capability, initialize;
+
+ + +Every account holds either no key rotation capability (because KeyRotationCapability has been delegated) +or the key rotation capability for addr itself [[H17]][PERMISSION]. + + +
invariant [global] forall addr: address where exists_at(addr):
+    delegated_key_rotation_capability(addr) || spec_holds_own_key_rotation_cap(addr);
+
+ + + + + + + +
schema EnsuresHasKeyRotationCap {
+    account: signer;
+    
+    let addr = Signer::spec_address_of(account);
+    ensures spec_holds_own_key_rotation_cap(addr);
+}
+
+ + + + + + +The absence of KeyRotationCap is preserved. + + +
schema PreserveKeyRotationCapAbsence {
+    ensures forall addr: address:
+        old(!exists<DiemAccount>(addr) || !spec_has_key_rotation_cap(addr)) ==>
+            (!exists<DiemAccount>(addr) || !spec_has_key_rotation_cap(addr));
+}
+
+ + + + + +#### Withdraw Capability + + +the permission "WithdrawCapability(addr)" is granted to the account at addr [[H18]][PERMISSION]. +When an account is created, its WithdrawCapability is granted to the account. + + +
apply EnsuresWithdrawCap{account: new_account} to make_account;
+
+ + +Only make_account creates WithdrawCap [[H18]][PERMISSION][[I18]][PERMISSION]. create_*_account only calls +make_account, and does not pack KeyRotationCap by itself. +restore_withdraw_capability restores WithdrawCap, and does not create new one. + + +
apply PreserveWithdrawCapAbsence to * except make_account, create_*_account,
+        restore_withdraw_capability, initialize;
+
+ + +Every account holds either no withdraw capability (because withdraw cap has been delegated) +or the withdraw capability for addr itself [[H18]][PERMISSION]. + + +
invariant [global] forall addr: address where exists_at(addr):
+    spec_holds_delegated_withdraw_capability(addr) || spec_holds_own_withdraw_cap(addr);
+
+ + + + + + + +
schema EnsuresWithdrawCap {
+    account: signer;
+    
+    let addr = Signer::spec_address_of(account);
+    ensures spec_holds_own_withdraw_cap(addr);
+}
+
+ + + + + + +The absence of WithdrawCap is preserved. + + +
schema PreserveWithdrawCapAbsence {
+    ensures forall addr: address:
+        old(!exists<DiemAccount>(addr) || Option::is_none(global<DiemAccount>(addr).withdraw_capability)) ==>
+            (!exists<DiemAccount>(addr) || Option::is_none(global<DiemAccount>(addr).withdraw_capability));
+}
+
+ + + + + +#### Authentication Key + + +only Self::rotate_authentication_key can rotate authentication_key [[H17]][PERMISSION]. + + +
apply AuthenticationKeyRemainsSame to *, *<T> except rotate_authentication_key;
+
+ + + + + + + +
schema AuthenticationKeyRemainsSame {
+    ensures forall addr: address where old(exists_at(addr)):
+        global<DiemAccount>(addr).authentication_key == old(global<DiemAccount>(addr).authentication_key);
+}
+
+ + + + + +#### Balance + + +only Self::withdraw_from and its helper and clients can withdraw [[H18]][PERMISSION]. + + +
apply BalanceNotDecrease<Token> to *<Token>
+    except withdraw_from, withdraw_from_balance, staple_xdx, unstaple_xdx,
+        preburn, pay_from, epilogue, failure_epilogue, success_epilogue;
+
+ + + + + + + +
schema BalanceNotDecrease<Token> {
+    ensures forall addr: address where old(exists<Balance<Token>>(addr)):
+        global<Balance<Token>>(addr).coin.value >= old(global<Balance<Token>>(addr).coin.value);
+}
+
+ + + + + +### Persistence of Resources + + +Accounts are never deleted. + + +
invariant update [global] forall addr: address where old(exists_at(addr)): exists_at(addr);
+
+ + +After genesis, the AccountOperationsCapability exists. + + +
invariant [global]
+    DiemTimestamp::is_operating() ==> exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +After genesis, the DiemWriteSetManager exists. + + +
invariant [global]
+    DiemTimestamp::is_operating() ==> exists<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +resource struct Balance<CoinType> is persistent + + +
invariant update [global] forall coin_type: type, addr: address
+    where old(exists<Balance<coin_type>>(addr)):
+        exists<Balance<coin_type>>(addr);
+
+ + +resource struct AccountOperationsCapability is persistent + + +
invariant update [global] old(exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS()))
+        ==> exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +resource struct AccountOperationsCapability is persistent + + +
invariant update [global]
+    old(exists<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS()))
+        ==> exists<DiemWriteSetManager>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + + + + +### Other invariants + + +Every address that has a published account has a published RoleId + + +
invariant [global] forall addr: address where exists_at(addr): exists<Roles::RoleId>(addr);
+
+ + +If an account has a balance, the role of the account is compatible with having a balance. + + +
invariant [global] forall token: type: forall addr: address where exists<Balance<token>>(addr):
+    Roles::spec_can_hold_balance_addr(addr);
+
+ + +If there is a `DesignatedDealer::Dealer resource published at addr, the addr has a +DesignatedDealer role. + + +
invariant [global] forall addr: address where exists<DesignatedDealer::Dealer>(addr):
+    Roles::spec_has_designated_dealer_role_addr(addr);
+
+ + +If there is a DualAttestation credential, account has designated dealer role + + +
invariant [global] forall addr: address where exists<DualAttestation::Credential>(addr):
+    Roles::spec_has_designated_dealer_role_addr(addr)
+    || Roles::spec_has_parent_VASP_role_addr(addr);
+
+ + +Every address that has a published account has a published FreezingBit + + +
invariant [global] forall addr: address where exists_at(addr): exists<AccountFreezing::FreezingBit>(addr);
+
+ + + + + +### Helper Functions and Schemas + + + + +#### Capabilities + + +Returns field key_rotation_capability of the DiemAccount under addr. + + + + + +
define spec_get_key_rotation_cap_field(addr: address): Option<KeyRotationCapability> {
+    global<DiemAccount>(addr).key_rotation_capability
+}
+
+ + +Returns the KeyRotationCapability of the field key_rotation_capability. + + + + + +
define spec_get_key_rotation_cap(addr: address): KeyRotationCapability {
+    Option::borrow(spec_get_key_rotation_cap_field(addr))
+}
+
+define spec_has_key_rotation_cap(addr: address): bool {
+    Option::is_some(spec_get_key_rotation_cap_field(addr))
+}
+
+ + +Returns true if the DiemAccount at addr holds +KeyRotationCapability for itself. + + + + + +
define spec_holds_own_key_rotation_cap(addr: address): bool {
+    spec_has_key_rotation_cap(addr)
+    && addr == spec_get_key_rotation_cap(addr).account_address
+}
+
+ + +Returns true if AccountOperationsCapability is published. + + + + + +
define spec_has_account_operations_cap(): bool {
+    exists<AccountOperationsCapability>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+ + +Returns field withdraw_capability of DiemAccount under addr. + + + + + +
define spec_get_withdraw_cap_field(addr: address): Option<WithdrawCapability> {
+    global<DiemAccount>(addr).withdraw_capability
+}
+
+ + +Returns the WithdrawCapability of the field withdraw_capability. + + + + + +
define spec_get_withdraw_cap(addr: address): WithdrawCapability {
+    Option::borrow(spec_get_withdraw_cap_field(addr))
+}
+
+ + +Returns true if the DiemAccount at addr holds a WithdrawCapability. + + + + + +
define spec_has_withdraw_cap(addr: address): bool {
+    Option::is_some(spec_get_withdraw_cap_field(addr))
+}
+
+ + +Returns true if the DiemAccount at addr holds WithdrawCapability for itself. + + + + + +
define spec_holds_own_withdraw_cap(addr: address): bool {
+    spec_has_withdraw_cap(addr)
+    && addr == spec_get_withdraw_cap(addr).account_address
+}
+
+ + +Returns true of the account holds a delegated withdraw capability. + + + + + +
define spec_holds_delegated_withdraw_capability(addr: address): bool {
+    exists_at(addr) && Option::is_none(global<DiemAccount>(addr).withdraw_capability)
+}
+
+ + + + + +#### Prologue + + + + + + +
define prologue_guarantees(sender: signer) : bool {
+   let addr = Signer::spec_address_of(sender);
+   DiemTimestamp::is_operating() && exists_at(addr) && !AccountFreezing::account_is_frozen(addr)
+}
+
+ + +Used in transaction script to specify properties checked by the prologue. + + + + + +
schema TransactionChecks {
+    sender: signer;
+    requires prologue_guarantees(sender);
+}
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemBlock.md b/language/stdlib/modules/doc/DiemBlock.md new file mode 100644 index 0000000000..95c0afad35 --- /dev/null +++ b/language/stdlib/modules/doc/DiemBlock.md @@ -0,0 +1,334 @@ + + + +# Module `0x1::DiemBlock` + +This module defines a struct storing the metadata of the block and new block events. + + +- [Resource `BlockMetadata`](#0x1_DiemBlock_BlockMetadata) +- [Struct `NewBlockEvent`](#0x1_DiemBlock_NewBlockEvent) +- [Constants](#@Constants_0) +- [Function `initialize_block_metadata`](#0x1_DiemBlock_initialize_block_metadata) +- [Function `is_initialized`](#0x1_DiemBlock_is_initialized) +- [Function `block_prologue`](#0x1_DiemBlock_block_prologue) +- [Function `get_current_block_height`](#0x1_DiemBlock_get_current_block_height) +- [Module Specification](#@Module_Specification_1) + - [Initialization](#@Initialization_2) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemSystem;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Event;
+
+ + + + + +## Resource `BlockMetadata` + + + +
resource struct BlockMetadata
+
+ + + +
+Fields + + +
+
+height: u64 +
+
+ Height of the current block +
+
+new_block_events: Event::EventHandle<DiemBlock::NewBlockEvent> +
+
+ Handle where events with the time of new blocks are emitted +
+
+ + +
+ + + +## Struct `NewBlockEvent` + + + +
struct NewBlockEvent
+
+ + + +
+Fields + + +
+
+round: u64 +
+
+ +
+
+proposer: address +
+
+ +
+
+previous_block_votes: vector<address> +
+
+ +
+
+time_microseconds: u64 +
+
+ On-chain time during he block at the given height +
+
+ + +
+ + + +## Constants + + + + +The BlockMetadata resource is in an invalid state + + +
const EBLOCK_METADATA: u64 = 0;
+
+ + + + + +An invalid signer was provided. Expected the signer to be the VM or a Validator. + + +
const EVM_OR_VALIDATOR: u64 = 1;
+
+ + + + + +## Function `initialize_block_metadata` + +This can only be invoked by the Association address, and only a single time. +Currently, it is invoked in the genesis transaction + + +
public fun initialize_block_metadata(account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize_block_metadata(account: &signer) {
+    DiemTimestamp::assert_genesis();
+    // Operational constraint, only callable by the Association address
+    CoreAddresses::assert_diem_root(account);
+
+    assert(!is_initialized(), Errors::already_published(EBLOCK_METADATA));
+    move_to<BlockMetadata>(
+        account,
+        BlockMetadata {
+            height: 0,
+            new_block_events: Event::new_event_handle<Self::NewBlockEvent>(account),
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + + +
include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot;
+aborts_if is_initialized() with Errors::ALREADY_PUBLISHED;
+ensures is_initialized();
+ensures get_current_block_height() == 0;
+
+ + + +
+ + + +## Function `is_initialized` + +Helper function to determine whether this module has been initialized. + + +
fun is_initialized(): bool
+
+ + + +
+Implementation + + +
fun is_initialized(): bool {
+    exists<BlockMetadata>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+ + + +
+ + + +## Function `block_prologue` + +Set the metadata for the current block. +The runtime always runs this before executing the transactions in a block. + + +
fun block_prologue(vm: &signer, round: u64, timestamp: u64, previous_block_votes: vector<address>, proposer: address)
+
+ + + +
+Implementation + + +
fun block_prologue(
+    vm: &signer,
+    round: u64,
+    timestamp: u64,
+    previous_block_votes: vector<address>,
+    proposer: address
+) acquires BlockMetadata {
+    DiemTimestamp::assert_operating();
+    // Operational constraint: can only be invoked by the VM.
+    CoreAddresses::assert_vm(vm);
+
+    // Authorization
+    assert(
+        proposer == CoreAddresses::VM_RESERVED_ADDRESS() || DiemSystem::is_validator(proposer),
+        Errors::requires_address(EVM_OR_VALIDATOR)
+    );
+
+    let block_metadata_ref = borrow_global_mut<BlockMetadata>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    DiemTimestamp::update_global_time(vm, proposer, timestamp);
+    block_metadata_ref.height = block_metadata_ref.height + 1;
+    Event::emit_event<NewBlockEvent>(
+        &mut block_metadata_ref.new_block_events,
+        NewBlockEvent {
+            round,
+            proposer,
+            previous_block_votes,
+            time_microseconds: timestamp,
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + + +
include DiemTimestamp::AbortsIfNotOperating;
+include CoreAddresses::AbortsIfNotVM{account: vm};
+aborts_if proposer != CoreAddresses::VM_RESERVED_ADDRESS() && !DiemSystem::spec_is_validator(proposer)
+    with Errors::REQUIRES_ADDRESS;
+ensures DiemTimestamp::spec_now_microseconds() == timestamp;
+ensures get_current_block_height() == old(get_current_block_height()) + 1;
+
+ + +The below counter overflow is assumed to be excluded from verification of callers. + + +
aborts_if [assume] get_current_block_height() + 1 > MAX_U64 with EXECUTION_FAILURE;
+
+ + + +
+ + + +## Function `get_current_block_height` + +Get the current block height + + +
public fun get_current_block_height(): u64
+
+ + + +
+Implementation + + +
public fun get_current_block_height(): u64 acquires BlockMetadata {
+    assert(is_initialized(), Errors::not_published(EBLOCK_METADATA));
+    borrow_global<BlockMetadata>(CoreAddresses::DIEM_ROOT_ADDRESS()).height
+}
+
+ + + +
+ + + +## Module Specification + + + + + +### Initialization + +This implies that BlockMetadata is published after initialization and stays published +ever after + + +
invariant [global] DiemTimestamp::is_operating() ==> is_initialized();
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemConfig.md b/language/stdlib/modules/doc/DiemConfig.md new file mode 100644 index 0000000000..7a88a2570d --- /dev/null +++ b/language/stdlib/modules/doc/DiemConfig.md @@ -0,0 +1,957 @@ + + + +# Module `0x1::DiemConfig` + +Publishes configuration information for validators, and issues reconfiguration events +to synchronize configuration changes for the validators. + + +- [Resource `DiemConfig`](#0x1_DiemConfig_DiemConfig) +- [Struct `NewEpochEvent`](#0x1_DiemConfig_NewEpochEvent) +- [Resource `Configuration`](#0x1_DiemConfig_Configuration) +- [Resource `ModifyConfigCapability`](#0x1_DiemConfig_ModifyConfigCapability) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemConfig_initialize) +- [Function `get`](#0x1_DiemConfig_get) +- [Function `set`](#0x1_DiemConfig_set) +- [Function `set_with_capability_and_reconfigure`](#0x1_DiemConfig_set_with_capability_and_reconfigure) +- [Function `publish_new_config_and_get_capability`](#0x1_DiemConfig_publish_new_config_and_get_capability) +- [Function `publish_new_config`](#0x1_DiemConfig_publish_new_config) +- [Function `reconfigure`](#0x1_DiemConfig_reconfigure) +- [Function `reconfigure_`](#0x1_DiemConfig_reconfigure_) +- [Function `emit_genesis_reconfiguration_event`](#0x1_DiemConfig_emit_genesis_reconfiguration_event) +- [Module Specification](#@Module_Specification_1) + - [Initialization](#@Initialization_2) + - [Invariants](#@Invariants_3) + - [Helper Functions](#@Helper_Functions_4) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Event;
+use 0x1::Roles;
+use 0x1::Signer;
+
+ + + + + +## Resource `DiemConfig` + +A generic singleton resource that holds a value of a specific type. + + +
resource struct DiemConfig<Config: copyable>
+
+ + + +
+Fields + + +
+
+payload: Config +
+
+ Holds specific info for instance of Config type. +
+
+ + +
+ + + +## Struct `NewEpochEvent` + +Event that signals DiemBFT algorithm to start a new epoch, +with new configuration information. This is also called a +"reconfiguration event" + + +
struct NewEpochEvent
+
+ + + +
+Fields + + +
+
+epoch: u64 +
+
+ +
+
+ + +
+ + + +## Resource `Configuration` + +Holds information about state of reconfiguration + + +
resource struct Configuration
+
+ + + +
+Fields + + +
+
+epoch: u64 +
+
+ Epoch number +
+
+last_reconfiguration_time: u64 +
+
+ Time of last reconfiguration. Only changes on reconfiguration events. +
+
+events: Event::EventHandle<DiemConfig::NewEpochEvent> +
+
+ Event handle for reconfiguration events +
+
+ + +
+ + + +## Resource `ModifyConfigCapability` + +Accounts with this privilege can modify DiemConfig under Diem root address. + + +
resource struct ModifyConfigCapability<TypeName>
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Constants + + + + +The largest possible u64 value + + +
const MAX_U64: u64 = 18446744073709551615;
+
+ + + + + +The Configuration resource is in an invalid state + + +
const ECONFIGURATION: u64 = 0;
+
+ + + + + +A DiemConfig resource is in an invalid state + + +
const EDIEM_CONFIG: u64 = 1;
+
+ + + + + +An invalid block time was encountered. + + +
const EINVALID_BLOCK_TIME: u64 = 3;
+
+ + + + + +A ModifyConfigCapability is in a different state than was expected + + +
const EMODIFY_CAPABILITY: u64 = 2;
+
+ + + + + +## Function `initialize` + +Publishes Configuration resource. Can only be invoked by Diem root, and only a single time in Genesis. + + +
public fun initialize(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    CoreAddresses::assert_diem_root(dr_account);
+    assert(!exists<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ECONFIGURATION));
+    move_to<Configuration>(
+        dr_account,
+        Configuration {
+            epoch: 0,
+            last_reconfiguration_time: 0,
+            events: Event::new_event_handle<NewEpochEvent>(dr_account),
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include InitializeAbortsIf;
+include InitializeEnsures;
+modifies global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + + + + + + +
schema InitializeAbortsIf {
+    dr_account: signer;
+    include DiemTimestamp::AbortsIfNotGenesis;
+    include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+    aborts_if spec_has_config() with Errors::ALREADY_PUBLISHED;
+}
+
+ + + + + + + +
schema InitializeEnsures {
+    ensures spec_has_config();
+    
+    let new_config = global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    ensures new_config.epoch == 0;
+    ensures new_config.last_reconfiguration_time == 0;
+}
+
+ + + +
+ + + +## Function `get` + +Returns a copy of Config value stored under addr. + + +
public fun get<Config: copyable>(): Config
+
+ + + +
+Implementation + + +
public fun get<Config: copyable>(): Config
+acquires DiemConfig {
+    let addr = CoreAddresses::DIEM_ROOT_ADDRESS();
+    assert(exists<DiemConfig<Config>>(addr), Errors::not_published(EDIEM_CONFIG));
+    *&borrow_global<DiemConfig<Config>>(addr).payload
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include AbortsIfNotPublished<Config>;
+ensures result == get<Config>();
+
+ + + + + + + +
schema AbortsIfNotPublished<Config> {
+    aborts_if !exists<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::NOT_PUBLISHED;
+}
+
+ + + +
+ + + +## Function `set` + +Set a config item to a new value with the default capability stored under config address and trigger a +reconfiguration. This function requires that the signer have a ModifyConfigCapability<Config> +resource published under it. + + +
public fun set<Config: copyable>(account: &signer, payload: Config)
+
+ + + +
+Implementation + + +
public fun set<Config: copyable>(account: &signer, payload: Config)
+acquires DiemConfig, Configuration {
+    let signer_address = Signer::address_of(account);
+    // Next should always be true if properly initialized.
+    assert(exists<ModifyConfigCapability<Config>>(signer_address), Errors::requires_capability(EMODIFY_CAPABILITY));
+
+    let addr = CoreAddresses::DIEM_ROOT_ADDRESS();
+    assert(exists<DiemConfig<Config>>(addr), Errors::not_published(EDIEM_CONFIG));
+    let config = borrow_global_mut<DiemConfig<Config>>(addr);
+    config.payload = payload;
+
+    reconfigure_();
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include SetAbortsIf<Config>;
+include SetEnsures<Config>;
+
+ + + + + + + +
schema SetAbortsIf<Config> {
+    account: signer;
+    include AbortsIfNotModifiable<Config>;
+    include AbortsIfNotPublished<Config>;
+    include ReconfigureAbortsIf;
+}
+
+ + + + + + + +
schema AbortsIfNotModifiable<Config> {
+    account: signer;
+    aborts_if !exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(account))
+        with Errors::REQUIRES_CAPABILITY;
+}
+
+ + + + + + + +
schema SetEnsures<Config> {
+    payload: Config;
+    ensures spec_is_published<Config>();
+    ensures get<Config>() == payload;
+    ensures old(spec_has_config()) == spec_has_config();
+}
+
+ + + +
+ + + +## Function `set_with_capability_and_reconfigure` + +Set a config item to a new value and trigger a reconfiguration. This function +requires a reference to a ModifyConfigCapability, which is returned when the +config is published using publish_new_config_and_get_capability. +It is called by DiemSystem::update_config_and_reconfigure, which allows +validator operators to change the validator set. All other config changes require +a Diem root signer. + + +
public fun set_with_capability_and_reconfigure<Config: copyable>(_cap: &DiemConfig::ModifyConfigCapability<Config>, payload: Config)
+
+ + + +
+Implementation + + +
public fun set_with_capability_and_reconfigure<Config: copyable>(
+    _cap: &ModifyConfigCapability<Config>,
+    payload: Config
+) acquires DiemConfig, Configuration {
+    let addr = CoreAddresses::DIEM_ROOT_ADDRESS();
+    assert(exists<DiemConfig<Config>>(addr), Errors::not_published(EDIEM_CONFIG));
+    let config = borrow_global_mut<DiemConfig<Config>>(addr);
+    config.payload = payload;
+    reconfigure_();
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include AbortsIfNotPublished<Config>;
+include ReconfigureAbortsIf;
+modifies global<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include SetEnsures<Config>;
+
+ + + +
+ + + +## Function `publish_new_config_and_get_capability` + +Publishes a new config. +The caller will use the returned ModifyConfigCapability to specify the access control +policy for who can modify the config. +Does not trigger a reconfiguration. + + +
public fun publish_new_config_and_get_capability<Config: copyable>(dr_account: &signer, payload: Config): DiemConfig::ModifyConfigCapability<Config>
+
+ + + +
+Implementation + + +
public fun publish_new_config_and_get_capability<Config: copyable>(
+    dr_account: &signer,
+    payload: Config,
+): ModifyConfigCapability<Config> {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+    assert(
+        !exists<DiemConfig<Config>>(Signer::address_of(dr_account)),
+        Errors::already_published(EDIEM_CONFIG)
+    );
+    move_to(dr_account, DiemConfig { payload });
+    ModifyConfigCapability<Config> {}
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include DiemTimestamp::AbortsIfNotGenesis;
+include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include AbortsIfPublished<Config>;
+include SetEnsures<Config>;
+
+ + + + + + + +
schema AbortsIfPublished<Config> {
+    aborts_if exists<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
+}
+
+ + + +
+ + + +## Function `publish_new_config` + +Publish a new config item. Only Diem root can modify such config. +Publishes the capability to modify this config under the Diem root account. +Does not trigger a reconfiguration. + + +
public fun publish_new_config<Config: copyable>(dr_account: &signer, payload: Config)
+
+ + + +
+Implementation + + +
public fun publish_new_config<Config: copyable>(
+    dr_account: &signer,
+    payload: Config
+) {
+    let capability = publish_new_config_and_get_capability<Config>(dr_account, payload);
+    assert(
+        !exists<ModifyConfigCapability<Config>>(Signer::address_of(dr_account)),
+        Errors::already_published(EMODIFY_CAPABILITY)
+    );
+    move_to(dr_account, capability);
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+modifies global<ModifyConfigCapability<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include PublishNewConfigAbortsIf<Config>;
+include PublishNewConfigEnsures<Config>;
+
+ + + + + + + +
schema PublishNewConfigAbortsIf<Config> {
+    dr_account: signer;
+    include DiemTimestamp::AbortsIfNotGenesis;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    aborts_if spec_is_published<Config>();
+    aborts_if exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(dr_account));
+}
+
+ + + + + + + +
schema PublishNewConfigEnsures<Config> {
+    dr_account: signer;
+    payload: Config;
+    include SetEnsures<Config>;
+    ensures exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(dr_account));
+}
+
+ + + +
+ + + +## Function `reconfigure` + +Signal validators to start using new configuration. Must be called by Diem root. + + +
public fun reconfigure(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun reconfigure(
+    dr_account: &signer,
+) acquires Configuration {
+    Roles::assert_diem_root(dr_account);
+    reconfigure_();
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include ReconfigureAbortsIf;
+
+ + + +
+ + + +## Function `reconfigure_` + +Private function to do reconfiguration. Updates reconfiguration status resource +Configuration and emits a NewEpochEvent + + +
fun reconfigure_()
+
+ + + +
+Implementation + + +
fun reconfigure_() acquires Configuration {
+    // Do not do anything if genesis has not finished.
+    if (DiemTimestamp::is_genesis() || DiemTimestamp::now_microseconds() == 0) {
+        return ()
+    };
+
+    let config_ref = borrow_global_mut<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    let current_time = DiemTimestamp::now_microseconds();
+
+    // Do not do anything if a reconfiguration event is already emitted within this transaction.
+    //
+    // This is OK because:
+    // - The time changes in every non-empty block
+    // - A block automatically ends after a transaction that emits a reconfiguration event, which is guaranteed by
+    //   DiemVM spec that all transactions comming after a reconfiguration transaction will be returned as Retry
+    //   status.
+    // - Each transaction must emit at most one reconfiguration event
+    //
+    // Thus, this check ensures that a transaction that does multiple "reconfiguration required" actions emits only
+    // one reconfiguration event.
+    //
+    if (current_time == config_ref.last_reconfiguration_time) {
+        return
+    };
+
+    assert(current_time > config_ref.last_reconfiguration_time, Errors::invalid_state(EINVALID_BLOCK_TIME));
+    config_ref.last_reconfiguration_time = current_time;
+    config_ref.epoch = config_ref.epoch + 1;
+
+    Event::emit_event<NewEpochEvent>(
+        &mut config_ref.events,
+        NewEpochEvent {
+            epoch: config_ref.epoch,
+        },
+    );
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+ensures old(spec_has_config()) == spec_has_config();
+
+let config = global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+let now = DiemTimestamp::spec_now_microseconds();
+
+let epoch = config.epoch;
+include !spec_reconfigure_omitted() || (config.last_reconfiguration_time == now)
+    ==> InternalReconfigureAbortsIf && ReconfigureAbortsIf;
+ensures spec_reconfigure_omitted() || (old(config).last_reconfiguration_time == now)
+    ==> config == old(config);
+ensures !(spec_reconfigure_omitted() || (config.last_reconfiguration_time == now))
+    ==> config ==
+        update_field(
+        update_field(old(config),
+            epoch, old(config.epoch) + 1),
+            last_reconfiguration_time, now);
+
+ + +The following schema describes aborts conditions which we do not want to be propagated to the verification +of callers, and which are therefore marked as concrete to be only verified against the implementation. +These conditions are unlikely to happen in reality, and excluding them avoids formal noise. + + + + + + + + +
schema InternalReconfigureAbortsIf {
+    let config = global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    
+    let current_time = DiemTimestamp::spec_now_microseconds();
+    aborts_if [concrete] current_time < config.last_reconfiguration_time with Errors::INVALID_STATE;
+    aborts_if [concrete] config.epoch == MAX_U64
+        && current_time != config.last_reconfiguration_time with EXECUTION_FAILURE;
+}
+
+ + +This schema is to be used by callers of reconfigure + + + + + + + + +
schema ReconfigureAbortsIf {
+    let config = global<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    
+    let current_time = DiemTimestamp::spec_now_microseconds();
+    aborts_if DiemTimestamp::is_operating()
+        && DiemTimestamp::spec_now_microseconds() > 0
+        && config.epoch < MAX_U64
+        && current_time < config.last_reconfiguration_time
+            with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Function `emit_genesis_reconfiguration_event` + +Emit a NewEpochEvent event. This function will be invoked by genesis directly to generate the very first +reconfiguration event. + + +
fun emit_genesis_reconfiguration_event()
+
+ + + +
+Implementation + + +
fun emit_genesis_reconfiguration_event() acquires Configuration {
+    assert(exists<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ECONFIGURATION));
+    let config_ref = borrow_global_mut<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    assert(config_ref.epoch == 0 && config_ref.last_reconfiguration_time == 0, Errors::invalid_state(ECONFIGURATION));
+    config_ref.epoch = 1;
+
+    Event::emit_event<NewEpochEvent>(
+        &mut config_ref.events,
+        NewEpochEvent {
+            epoch: config_ref.epoch,
+        },
+    );
+}
+
+ + + +
+ + + +## Module Specification + + + + + + +
define spec_reconfigure_omitted(): bool {
+  DiemTimestamp::is_genesis() || DiemTimestamp::spec_now_microseconds() == 0
+}
+
+ + + + + + +### Initialization + + +After genesis, the Configuration is published. + + +
invariant [global] DiemTimestamp::is_operating() ==> spec_has_config();
+
+ + + + + +### Invariants + + +Configurations are only stored at the diem root address. + + +
invariant [global]
+    forall config_address: address, config_type: type where exists<DiemConfig<config_type>>(config_address):
+        config_address == CoreAddresses::DIEM_ROOT_ADDRESS();
+
+ + +After genesis, no new configurations are added. + + +
invariant update [global]
+    DiemTimestamp::is_operating() ==>
+        (forall config_type: type where spec_is_published<config_type>(): old(spec_is_published<config_type>()));
+
+ + +Published configurations are persistent. + + +
invariant update [global]
+    (forall config_type: type where old(spec_is_published<config_type>()): spec_is_published<config_type>());
+
+ + +If ModifyConfigCapability<Config> is published, it is persistent. + + +
invariant update [global] forall config_type: type
+    where old(exists<ModifyConfigCapability<config_type>>(CoreAddresses::DIEM_ROOT_ADDRESS())):
+        exists<ModifyConfigCapability<config_type>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + + + + +### Helper Functions + + + + + + +
define spec_has_config(): bool {
+    exists<Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+define spec_is_published<Config>(): bool {
+    exists<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+define spec_get_config<Config>(): Config {
+    global<DiemConfig<Config>>(CoreAddresses::DIEM_ROOT_ADDRESS()).payload
+}
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemSystem.md b/language/stdlib/modules/doc/DiemSystem.md new file mode 100644 index 0000000000..7265a10027 --- /dev/null +++ b/language/stdlib/modules/doc/DiemSystem.md @@ -0,0 +1,1343 @@ + + + +# Module `0x1::DiemSystem` + +Maintains information about the set of validators used during consensus. +Provides functions to add, remove, and update validators in the +validator set. + +> Note: When trying to understand this code, it's important to know that "config" +and "configuration" are used for several distinct concepts. + + +- [Struct `ValidatorInfo`](#0x1_DiemSystem_ValidatorInfo) +- [Resource `CapabilityHolder`](#0x1_DiemSystem_CapabilityHolder) +- [Struct `DiemSystem`](#0x1_DiemSystem_DiemSystem) +- [Constants](#@Constants_0) +- [Function `initialize_validator_set`](#0x1_DiemSystem_initialize_validator_set) +- [Function `set_diem_system_config`](#0x1_DiemSystem_set_diem_system_config) +- [Function `add_validator`](#0x1_DiemSystem_add_validator) +- [Function `remove_validator`](#0x1_DiemSystem_remove_validator) +- [Function `update_config_and_reconfigure`](#0x1_DiemSystem_update_config_and_reconfigure) +- [Function `get_diem_system_config`](#0x1_DiemSystem_get_diem_system_config) +- [Function `is_validator`](#0x1_DiemSystem_is_validator) +- [Function `get_validator_config`](#0x1_DiemSystem_get_validator_config) +- [Function `validator_set_size`](#0x1_DiemSystem_validator_set_size) +- [Function `get_ith_validator_address`](#0x1_DiemSystem_get_ith_validator_address) +- [Function `get_validator_index_`](#0x1_DiemSystem_get_validator_index_) +- [Function `update_ith_validator_info_`](#0x1_DiemSystem_update_ith_validator_info_) +- [Function `is_validator_`](#0x1_DiemSystem_is_validator_) +- [Module Specification](#@Module_Specification_1) + - [Initialization](#@Initialization_2) + - [Access Control](#@Access_Control_3) + - [Helper Functions](#@Helper_Functions_4) + + +
use 0x1::CoreAddresses;
+use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Option;
+use 0x1::Roles;
+use 0x1::Signer;
+use 0x1::ValidatorConfig;
+use 0x1::Vector;
+
+ + + + + +## Struct `ValidatorInfo` + +Information about a Validator Owner. + + +
struct ValidatorInfo
+
+ + + +
+Fields + + +
+
+addr: address +
+
+ The address (account) of the Validator Owner +
+
+consensus_voting_power: u64 +
+
+ The voting power of the Validator Owner (currently always 1). +
+
+config: ValidatorConfig::Config +
+
+ Configuration information about the Validator, such as the + Validator Operator, human name, and info such as consensus key + and network addresses. +
+
+last_config_update_time: u64 +
+
+ The time of last reconfiguration invoked by this validator + in microseconds +
+
+ + +
+ + + +## Resource `CapabilityHolder` + +Enables a scheme that restricts the DiemSystem config +in DiemConfig from being modified by any other module. Only +code in this module can get a reference to the ModifyConfigCapability, +which is required by DiemConfig::set_with_capability_and_reconfigure to +modify the DiemSystem config. This is only needed by update_config_and_reconfigure. +Only Diem root can add or remove a validator from the validator set, so the +capability is not needed for access control in those functions. + + +
resource struct CapabilityHolder
+
+ + + +
+Fields + + +
+
+cap: DiemConfig::ModifyConfigCapability<DiemSystem::DiemSystem> +
+
+ Holds a capability returned by DiemConfig::publish_new_config_and_get_capability + which is called in initialize_validator_set. +
+
+ + +
+ + + +## Struct `DiemSystem` + +The DiemSystem struct stores the validator set and crypto scheme in +DiemConfig. The DiemSystem struct is stored by DiemConfig, which publishes a +DiemConfig resource. + + +
struct DiemSystem
+
+ + + +
+Fields + + +
+
+scheme: u8 +
+
+ The current consensus crypto scheme. +
+
+validators: vector<DiemSystem::ValidatorInfo> +
+
+ The current validator set. +
+
+ + +
+ +
+Specification + + +Members of validators vector (the validator set) have unique addresses. + + +
invariant
+    forall i in 0..len(validators), j in 0..len(validators):
+        validators[i].addr == validators[j].addr ==> i == j;
+
+ + + +
+ + + +## Constants + + + + +The validator operator is not the operator for the specified validator + + +
const EINVALID_TRANSACTION_SENDER: u64 = 4;
+
+ + + + + +Tried to add a validator to the validator set that was already in it + + +
const EALREADY_A_VALIDATOR: u64 = 2;
+
+ + + + + +The CapabilityHolder resource was not in the required state + + +
const ECAPABILITY_HOLDER: u64 = 0;
+
+ + + + + +Rate limited when trying to update config + + +
const ECONFIG_UPDATE_RATE_LIMITED: u64 = 6;
+
+ + + + + +Tried to add a validator with an invalid state to the validator set + + +
const EINVALID_PROSPECTIVE_VALIDATOR: u64 = 1;
+
+ + + + + +An operation was attempted on an address not in the vaidator set + + +
const ENOT_AN_ACTIVE_VALIDATOR: u64 = 3;
+
+ + + + + +An out of bounds index for the validator set was encountered + + +
const EVALIDATOR_INDEX: u64 = 5;
+
+ + + + + +Number of microseconds in 5 minutes + + +
const FIVE_MINUTES: u64 = 300000000;
+
+ + + + + +## Function `initialize_validator_set` + +Publishes the DiemConfig for the DiemSystem struct, which contains the current +validator set. Also publishes the CapabilityHolder with the +ModifyConfigCapability returned by the publish function, which allows +code in this module to change DiemSystem config (including the validator set). +Must be invoked by the Diem root a single time in Genesis. + + +
public fun initialize_validator_set(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize_validator_set(
+    dr_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+
+    let cap = DiemConfig::publish_new_config_and_get_capability<DiemSystem>(
+        dr_account,
+        DiemSystem {
+            scheme: 0,
+            validators: Vector::empty(),
+        },
+    );
+    assert(
+        !exists<CapabilityHolder>(CoreAddresses::DIEM_ROOT_ADDRESS()),
+        Errors::already_published(ECAPABILITY_HOLDER)
+    );
+    move_to(dr_account, CapabilityHolder { cap })
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include DiemTimestamp::AbortsIfNotGenesis;
+include Roles::AbortsIfNotDiemRoot{account: dr_account};
+
+let dr_addr = Signer::spec_address_of(dr_account);
+aborts_if DiemConfig::spec_is_published<DiemSystem>() with Errors::ALREADY_PUBLISHED;
+aborts_if exists<CapabilityHolder>(dr_addr) with Errors::ALREADY_PUBLISHED;
+ensures exists<CapabilityHolder>(dr_addr);
+ensures DiemConfig::spec_is_published<DiemSystem>();
+ensures len(spec_get_validators()) == 0;
+
+ + + +
+ + + +## Function `set_diem_system_config` + +Copies a DiemSystem struct into the DiemConfig resource +Called by the add, remove, and update functions. + + +
fun set_diem_system_config(value: DiemSystem::DiemSystem)
+
+ + + +
+Implementation + + +
fun set_diem_system_config(value: DiemSystem) acquires CapabilityHolder {
+    DiemTimestamp::assert_operating();
+    assert(
+        exists<CapabilityHolder>(CoreAddresses::DIEM_ROOT_ADDRESS()),
+        Errors::not_published(ECAPABILITY_HOLDER)
+    );
+    // Updates the DiemConfig<DiemSystem> and emits a reconfigure event.
+    DiemConfig::set_with_capability_and_reconfigure<DiemSystem>(
+        &borrow_global<CapabilityHolder>(CoreAddresses::DIEM_ROOT_ADDRESS()).cap,
+        value
+    )
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+modifies global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+modifies global<DiemConfig::Configuration>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include DiemTimestamp::AbortsIfNotOperating;
+include DiemConfig::ReconfigureAbortsIf;
+
+ + +payload is the only field of DiemConfig, so next completely specifies it. + + +
ensures global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS()).payload == value;
+
+ + + +
+ + + +## Function `add_validator` + +Adds a new validator to the validator set. + + +
public fun add_validator(dr_account: &signer, validator_addr: address)
+
+ + + +
+Implementation + + +
public fun add_validator(
+    dr_account: &signer,
+    validator_addr: address
+) acquires CapabilityHolder {
+
+    DiemTimestamp::assert_operating();
+    Roles::assert_diem_root(dr_account);
+    // A prospective validator must have a validator config resource
+    assert(ValidatorConfig::is_valid(validator_addr), Errors::invalid_argument(EINVALID_PROSPECTIVE_VALIDATOR));
+
+    let diem_system_config = get_diem_system_config();
+
+    // Ensure that this address is not already a validator
+    assert(
+        !is_validator_(validator_addr, &diem_system_config.validators),
+        Errors::invalid_argument(EALREADY_A_VALIDATOR)
+    );
+    // it is guaranteed that the config is non-empty
+    let config = ValidatorConfig::get_config(validator_addr);
+    Vector::push_back(&mut diem_system_config.validators, ValidatorInfo {
+        addr: validator_addr,
+        config, // copy the config over to ValidatorSet
+        consensus_voting_power: 1,
+        last_config_update_time: DiemTimestamp::now_microseconds(),
+    });
+
+    set_diem_system_config(diem_system_config);
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include AddValidatorAbortsIf;
+include AddValidatorEnsures;
+
+ + + + + + + +
schema AddValidatorAbortsIf {
+    dr_account: signer;
+    validator_addr: address;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    include DiemConfig::ReconfigureAbortsIf;
+    aborts_if !ValidatorConfig::is_valid(validator_addr) with Errors::INVALID_ARGUMENT;
+    aborts_if spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
+}
+
+ + + + + + + +
schema AddValidatorEnsures {
+    validator_addr: address;
+}
+
+ + +LIP-6 property: validator has validator role. The code does not check this explicitly, +but it is implied by the assert ValidatorConfig::is_valid, since there +is an invariant (in ValidatorConfig) that a an address with a published ValidatorConfig has +a ValidatorRole + + +
schema AddValidatorEnsures {
+    ensures Roles::spec_has_validator_role_addr(validator_addr);
+    ensures ValidatorConfig::is_valid(validator_addr);
+    ensures spec_is_validator(validator_addr);
+    
+    let vs = spec_get_validators();
+    ensures Vector::eq_push_back(vs,
+                                 old(vs),
+                                 ValidatorInfo {
+                                     addr: validator_addr,
+                                     config: ValidatorConfig::spec_get_config(validator_addr),
+                                     consensus_voting_power: 1,
+                                     last_config_update_time: DiemTimestamp::spec_now_microseconds(),
+                                  }
+                               );
+}
+
+ + + +
+ + + +## Function `remove_validator` + +Removes a validator, aborts unless called by diem root account + + +
public fun remove_validator(dr_account: &signer, validator_addr: address)
+
+ + + +
+Implementation + + +
public fun remove_validator(
+    dr_account: &signer,
+    validator_addr: address
+) acquires CapabilityHolder {
+    DiemTimestamp::assert_operating();
+    Roles::assert_diem_root(dr_account);
+    let diem_system_config = get_diem_system_config();
+    // Ensure that this address is an active validator
+    let to_remove_index_vec = get_validator_index_(&diem_system_config.validators, validator_addr);
+    assert(Option::is_some(&to_remove_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
+    let to_remove_index = *Option::borrow(&to_remove_index_vec);
+    // Remove corresponding ValidatorInfo from the validator set
+    _  = Vector::swap_remove(&mut diem_system_config.validators, to_remove_index);
+
+    set_diem_system_config(diem_system_config);
+}
+
+ + + +
+ +
+Specification + + + +
modifies global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include RemoveValidatorAbortsIf;
+include RemoveValidatorEnsures;
+
+ + + + + + + +
schema RemoveValidatorAbortsIf {
+    dr_account: signer;
+    validator_addr: address;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    include DiemTimestamp::AbortsIfNotOperating;
+    include DiemConfig::ReconfigureAbortsIf;
+    aborts_if !spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
+}
+
+ + + + + + + +
schema RemoveValidatorEnsures {
+    validator_addr: address;
+    
+    let vs = spec_get_validators();
+    ensures forall vi in vs where vi.addr != validator_addr: exists ovi in old(vs): vi == ovi;
+}
+
+ + +Removed validator is no longer a validator. Depends on no other entries for same address +in validator_set + + +
schema RemoveValidatorEnsures {
+    ensures !spec_is_validator(validator_addr);
+}
+
+ + + +
+ + + +## Function `update_config_and_reconfigure` + +Copy the information from ValidatorConfig into the validator set. +This function makes no changes to the size or the members of the set. +If the config in the ValidatorSet changes, it stores the new DiemSystem +and emits a reconfigurationevent. + + +
public fun update_config_and_reconfigure(validator_operator_account: &signer, validator_addr: address)
+
+ + + +
+Implementation + + +
public fun update_config_and_reconfigure(
+    validator_operator_account: &signer,
+    validator_addr: address,
+) acquires CapabilityHolder {
+    DiemTimestamp::assert_operating();
+    Roles::assert_validator_operator(validator_operator_account);
+    assert(
+        ValidatorConfig::get_operator(validator_addr) == Signer::address_of(validator_operator_account),
+        Errors::invalid_argument(EINVALID_TRANSACTION_SENDER)
+    );
+    let diem_system_config = get_diem_system_config();
+    let to_update_index_vec = get_validator_index_(&diem_system_config.validators, validator_addr);
+    assert(Option::is_some(&to_update_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
+    let to_update_index = *Option::borrow(&to_update_index_vec);
+    let is_validator_info_updated = update_ith_validator_info_(&mut diem_system_config.validators, to_update_index);
+    if (is_validator_info_updated) {
+        let validator_info = Vector::borrow_mut(&mut diem_system_config.validators, to_update_index);
+        assert(DiemTimestamp::now_microseconds() >
+               validator_info.last_config_update_time + FIVE_MINUTES,
+               ECONFIG_UPDATE_RATE_LIMITED);
+        validator_info.last_config_update_time = DiemTimestamp::now_microseconds();
+        set_diem_system_config(diem_system_config);
+    }
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+pragma verify_duration_estimate = 100;
+modifies global<DiemConfig::DiemConfig<DiemSystem>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+include UpdateConfigAndReconfigureAbortsIf;
+include UpdateConfigAndReconfigureEnsures;
+
+let is_validator_info_updated =
+    ValidatorConfig::is_valid(validator_addr) &&
+    (exists v_info in spec_get_validators():
+        v_info.addr == validator_addr
+        && v_info.config != ValidatorConfig::spec_get_config(validator_addr));
+include is_validator_info_updated ==> DiemConfig::ReconfigureAbortsIf;
+
+ + + + + + + +
schema UpdateConfigAndReconfigureAbortsIf {
+    validator_addr: address;
+    validator_operator_account: signer;
+    
+    let validator_operator_addr = Signer::address_of(validator_operator_account);
+    include DiemTimestamp::AbortsIfNotOperating;
+}
+
+ + +Must abort if the signer does not have the ValidatorOperator role [[H14]][PERMISSION]. + + +
schema UpdateConfigAndReconfigureAbortsIf {
+    include Roles::AbortsIfNotValidatorOperator{validator_operator_addr: validator_operator_addr};
+    include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_addr};
+    aborts_if ValidatorConfig::get_operator(validator_addr) != validator_operator_addr
+        with Errors::INVALID_ARGUMENT;
+    aborts_if !spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
+}
+
+ + +Does not change the length of the validator set, only changes ValidatorInfo +for validator_addr, and doesn't change any addresses. + + + + + +
schema UpdateConfigAndReconfigureEnsures {
+    validator_addr: address;
+    
+    let vs = spec_get_validators();
+    ensures len(vs) == len(old(vs));
+}
+
+ + +No addresses change in the validator set + + +
schema UpdateConfigAndReconfigureEnsures {
+    ensures forall i in 0..len(vs): vs[i].addr == old(vs)[i].addr;
+}
+
+ + +If the ValidatorInfo address is not the one we're changing, the info does not change. + + +
schema UpdateConfigAndReconfigureEnsures {
+    ensures forall i in 0..len(vs) where old(vs)[i].addr != validator_addr:
+                     vs[i] == old(vs)[i];
+}
+
+ + +It updates the correct entry in the correct way + + +
schema UpdateConfigAndReconfigureEnsures {
+    ensures forall i in 0..len(vs): vs[i].config == old(vs[i].config) ||
+                (old(vs)[i].addr == validator_addr &&
+                vs[i].config == ValidatorConfig::get_config(validator_addr));
+}
+
+ + +LIP-6 property + + +
schema UpdateConfigAndReconfigureEnsures {
+    ensures Roles::spec_has_validator_role_addr(validator_addr);
+}
+
+ + + +
+ + + +## Function `get_diem_system_config` + +Get the DiemSystem configuration from DiemConfig + + +
public fun get_diem_system_config(): DiemSystem::DiemSystem
+
+ + + +
+Implementation + + +
public fun get_diem_system_config(): DiemSystem {
+    DiemConfig::get<DiemSystem>()
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DiemConfig::AbortsIfNotPublished<DiemSystem>;
+ensures result == DiemConfig::get<DiemSystem>();
+
+ + + +
+ + + +## Function `is_validator` + +Return true if addr is in the current validator set + + +
public fun is_validator(addr: address): bool
+
+ + + +
+Implementation + + +
public fun is_validator(addr: address): bool {
+    is_validator_(addr, &get_diem_system_config().validators)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DiemConfig::AbortsIfNotPublished<DiemSystem>;
+ensures result == spec_is_validator(addr);
+
+ + + + + + + +
define spec_is_validator(addr: address): bool {
+   exists v in spec_get_validators(): v.addr == addr
+}
+
+ + + +
+ + + +## Function `get_validator_config` + +Returns validator config. Aborts if addr is not in the validator set. + + +
public fun get_validator_config(addr: address): ValidatorConfig::Config
+
+ + + +
+Implementation + + +
public fun get_validator_config(addr: address): ValidatorConfig::Config {
+    let diem_system_config = get_diem_system_config();
+    let validator_index_vec = get_validator_index_(&diem_system_config.validators, addr);
+    assert(Option::is_some(&validator_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
+    *&(Vector::borrow(&diem_system_config.validators, *Option::borrow(&validator_index_vec))).config
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DiemConfig::AbortsIfNotPublished<DiemSystem>;
+aborts_if !spec_is_validator(addr) with Errors::INVALID_ARGUMENT;
+ensures
+    exists info in DiemConfig::get<DiemSystem>().validators where info.addr == addr:
+        result == info.config;
+
+ + + +
+ + + +## Function `validator_set_size` + +Return the size of the current validator set + + +
public fun validator_set_size(): u64
+
+ + + +
+Implementation + + +
public fun validator_set_size(): u64 {
+    Vector::length(&get_diem_system_config().validators)
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DiemConfig::AbortsIfNotPublished<DiemSystem>;
+ensures result == len(spec_get_validators());
+
+ + + +
+ + + +## Function `get_ith_validator_address` + +Get the i'th validator address in the validator set. + + +
public fun get_ith_validator_address(i: u64): address
+
+ + + +
+Implementation + + +
public fun get_ith_validator_address(i: u64): address {
+    assert(i < validator_set_size(), Errors::invalid_argument(EVALIDATOR_INDEX));
+    Vector::borrow(&get_diem_system_config().validators, i).addr
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include DiemConfig::AbortsIfNotPublished<DiemSystem>;
+aborts_if i >= len(spec_get_validators()) with Errors::INVALID_ARGUMENT;
+ensures result == spec_get_validators()[i].addr;
+
+ + + +
+ + + +## Function `get_validator_index_` + +Get the index of the validator by address in the validators vector +It has a loop, so there are spec blocks in the code to assert loop invariants. + + +
fun get_validator_index_(validators: &vector<DiemSystem::ValidatorInfo>, addr: address): Option::Option<u64>
+
+ + + +
+Implementation + + +
fun get_validator_index_(validators: &vector<ValidatorInfo>, addr: address): Option<u64> {
+    let size = Vector::length(validators);
+    let i = 0;
+    while ({
+        spec {
+            assert i <= size;
+            assert forall j in 0..i: validators[j].addr != addr;
+        };
+        (i < size)
+    })
+    {
+        let validator_info_ref = Vector::borrow(validators, i);
+        if (validator_info_ref.addr == addr) {
+            spec {
+                assert validators[i].addr == addr;
+            };
+            return Option::some(i)
+        };
+        i = i + 1;
+    };
+    spec {
+        assert i == size;
+        assert forall j in 0..size: validators[j].addr != addr;
+    };
+    return Option::none()
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if false;
+
+let size = len(validators);
+
+ + +If addr is not in validator set, returns none. + + +
ensures (forall i in 0..size: validators[i].addr != addr) ==> Option::is_none(result);
+
+ + +If addr is in validator set, return the least index of an entry with that address. +The data invariant associated with the DiemSystem.validators that implies +that there is exactly one such address. + + +
ensures
+    (exists i in 0..size: validators[i].addr == addr) ==>
+        Option::is_some(result)
+        && {
+                let at = Option::borrow(result);
+                0 <= at && at < size && validators[at].addr == addr
+            };
+
+ + + +
+ + + +## Function `update_ith_validator_info_` + +Updates *i*th validator info, if nothing changed, return false. +This function never aborts. + + +
fun update_ith_validator_info_(validators: &mut vector<DiemSystem::ValidatorInfo>, i: u64): bool
+
+ + + +
+Implementation + + +
fun update_ith_validator_info_(validators: &mut vector<ValidatorInfo>, i: u64): bool {
+    let size = Vector::length(validators);
+    // This provably cannot happen, but left it here for safety.
+    if (i >= size) {
+        return false
+    };
+    let validator_info = Vector::borrow_mut(validators, i);
+    // "is_valid" below should always hold based on a global invariant later
+    // in the file (which proves if we comment out some other specifications),
+    // but it is left here for safety.
+    if (!ValidatorConfig::is_valid(validator_info.addr)) {
+        return false
+    };
+    let new_validator_config = ValidatorConfig::get_config(validator_info.addr);
+    // check if information is the same
+    let config_ref = &mut validator_info.config;
+    if (config_ref == &new_validator_config) {
+        return false
+    };
+    *config_ref = new_validator_config;
+    true
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if false;
+
+let new_validator_config = ValidatorConfig::spec_get_config(validators[i].addr);
+
+ + +Prover is able to prove this because get_validator_index_ ensures it +in calling context. + + +
requires 0 <= i && i < len(validators);
+
+ + +Somewhat simplified from the code because of properties guaranteed +by the calling context. + + +
ensures
+    result ==
+        (ValidatorConfig::is_valid(validators[i].addr) &&
+         new_validator_config != old(validators[i].config));
+
+ + +It only updates validators at index i, and updates the +config field to new_validator_config. + + +
ensures
+    result ==>
+        validators == update_vector(
+            old(validators),
+            i,
+            update_field(old(validators[i]), config, new_validator_config)
+        );
+
+ + +Does not change validators if result is false + + +
ensures !result ==> validators == old(validators);
+
+ + +Updates the ith validator entry (and nothing else), as appropriate. + + +
ensures validators == update_vector(old(validators), i, validators[i]);
+
+ + +Needed these assertions to make "consensus voting power is always 1" invariant +prove (not sure why). + + +
requires forall i1 in 0..len(spec_get_validators()):
+   spec_get_validators()[i1].consensus_voting_power == 1;
+ensures forall i1 in 0..len(spec_get_validators()):
+   spec_get_validators()[i1].consensus_voting_power == 1;
+
+ + + +
+ + + +## Function `is_validator_` + +Private function checks for membership of addr in validator set. + + +
fun is_validator_(addr: address, validators_vec_ref: &vector<DiemSystem::ValidatorInfo>): bool
+
+ + + +
+Implementation + + +
fun is_validator_(addr: address, validators_vec_ref: &vector<ValidatorInfo>): bool {
+    Option::is_some(&get_validator_index_(validators_vec_ref, addr))
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+aborts_if false;
+ensures result == (exists v in validators_vec_ref: v.addr == addr);
+
+ + + +
+ + + +## Module Specification + + + + + +### Initialization + + +After genesis, the DiemSystem configuration is published, as well as the capability +which grants the right to modify it to certain functions in this module. + + +
invariant [global] DiemTimestamp::is_operating() ==>
+    DiemConfig::spec_is_published<DiemSystem>() &&
+    exists<CapabilityHolder>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + + + + +### Access Control + +Access control requirements for validator set are a bit more complicated than +many parts of the framework because of update_config_and_reconfigure. +That function updates the validator info (e.g., the network address) for a +particular Validator Owner, but only if the signer is the Operator for that owner. +Therefore, we must ensure that the information for other validators in the +validator set are not changed, which is specified locally for +update_config_and_reconfigure. + +The permission "{Add, Remove} Validator" is granted to DiemRoot [[H13]][PERMISSION]. + + +
apply Roles::AbortsIfNotDiemRoot{account: dr_account} to add_validator, remove_validator;
+
+ + + + + + + +
schema ValidatorSetConfigRemainsSame {
+    ensures spec_get_validators() == old(spec_get_validators());
+}
+
+ + + +Only {add, remove} validator [[H13]][PERMISSION] and update_config_and_reconfigure +[[H14]][PERMISSION] may change the set of validators in the configuration. +set_diem_system_config is a private function which is only called by other +functions in the "except" list. initialize_validator_set is only called in +Genesis. + + +
apply ValidatorSetConfigRemainsSame to *, *<T>
+   except add_validator, remove_validator, update_config_and_reconfigure,
+       initialize_validator_set, set_diem_system_config;
+
+ + + + + +### Helper Functions + + +Fetches the currently published validator set from the published DiemConfig +resource. + + + + + +
define spec_get_validators(): vector<ValidatorInfo> {
+    DiemConfig::get<DiemSystem>().validators
+}
+
+ + + +Every validator has a published ValidatorConfig whose config option is "some" +(meaning of ValidatorConfig::is_valid). +> Unfortunately, this times out for unknown reasons (it doesn't seem to be hard), +so it is deactivated. +The Prover can prove it if the uniqueness invariant for the DiemSystem resource +is commented out, along with aborts for update_config_and_reconfigure and everything +else that breaks (e.g., there is an ensures in remove_validator that has to be +commented out) + + +
invariant [deactivated, global] forall i1 in 0..len(spec_get_validators()):
+    ValidatorConfig::is_valid(spec_get_validators()[i1].addr);
+
+ + +Every validator in the validator set has a validator role. +> Note: Verification of DiemSystem seems to be very sensitive, and will +often time out after small changes. Disabling this property +(with [deactivate, global]) is sometimes a quick temporary fix. + + +
invariant [global] forall i1 in 0..len(spec_get_validators()):
+    Roles::spec_has_validator_role_addr(spec_get_validators()[i1].addr);
+
+ + +Consensus_voting_power is always 1. In future implementations, this +field may have different values in which case this property will have to +change. It's here currently because and accidental or illicit change +to the voting power of a validator could defeat the Byzantine fault tolerance +of DiemBFT. + + +
invariant [global] forall i1 in 0..len(spec_get_validators()):
+    spec_get_validators()[i1].consensus_voting_power == 1;
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemTimestamp.md b/language/stdlib/modules/doc/DiemTimestamp.md new file mode 100644 index 0000000000..c4f4df97a4 --- /dev/null +++ b/language/stdlib/modules/doc/DiemTimestamp.md @@ -0,0 +1,512 @@ + + + +# Module `0x1::DiemTimestamp` + +This module keeps a global wall clock that stores the current Unix time in microseconds. +It interacts with the other modules in the following ways: + +* Genesis: to initialize the timestamp +* VASP: to keep track of when credentials expire +* DiemSystem, DiemAccount, DiemConfig: to check if the current state is in the genesis state +* DiemBlock: to reach consensus on the global wall clock time +* AccountLimits: to limit the time of account limits + +This module moreover enables code to assert that it is running in genesis (Self::assert_genesis) or after +genesis (Self::assert_operating). These are essentially distinct states of the system. Specifically, +if Self::assert_operating succeeds, assumptions about invariants over the global state can be made +which reflect that the system has been successfully initialized. + + +- [Resource `CurrentTimeMicroseconds`](#0x1_DiemTimestamp_CurrentTimeMicroseconds) +- [Constants](#@Constants_0) +- [Function `set_time_has_started`](#0x1_DiemTimestamp_set_time_has_started) +- [Function `update_global_time`](#0x1_DiemTimestamp_update_global_time) +- [Function `now_microseconds`](#0x1_DiemTimestamp_now_microseconds) +- [Function `now_seconds`](#0x1_DiemTimestamp_now_seconds) +- [Function `is_genesis`](#0x1_DiemTimestamp_is_genesis) +- [Function `assert_genesis`](#0x1_DiemTimestamp_assert_genesis) +- [Function `is_operating`](#0x1_DiemTimestamp_is_operating) +- [Function `assert_operating`](#0x1_DiemTimestamp_assert_operating) +- [Module Specification](#@Module_Specification_1) + + +
use 0x1::CoreAddresses;
+use 0x1::Errors;
+
+ + + + + +## Resource `CurrentTimeMicroseconds` + +A singleton resource holding the current Unix time in microseconds + + +
resource struct CurrentTimeMicroseconds
+
+ + + +
+Fields + + +
+
+microseconds: u64 +
+
+ +
+
+ + +
+ + + +## Constants + + + + +The blockchain is not in the genesis state anymore + + +
const ENOT_GENESIS: u64 = 0;
+
+ + + + + +The blockchain is not in an operating state yet + + +
const ENOT_OPERATING: u64 = 1;
+
+ + + + + +An invalid timestamp was provided + + +
const ETIMESTAMP: u64 = 2;
+
+ + + + + +Conversion factor between seconds and microseconds + + +
const MICRO_CONVERSION_FACTOR: u64 = 1000000;
+
+ + + + + +## Function `set_time_has_started` + +Marks that time has started and genesis has finished. This can only be called from genesis and with the root +account. + + +
public fun set_time_has_started(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun set_time_has_started(dr_account: &signer) {
+    assert_genesis();
+    CoreAddresses::assert_diem_root(dr_account);
+    let timer = CurrentTimeMicroseconds { microseconds: 0 };
+    move_to(dr_account, timer);
+}
+
+ + + +
+ +
+Specification + + +Verification of this function is turned off because it cannot be verified without genesis execution +context. After time has started, all invariants guarded by DiemTimestamp::is_operating will become +activated and need to hold. + + +
pragma verify = false;
+include AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+ensures is_operating();
+
+ + + +
+ + + +## Function `update_global_time` + +Updates the wall clock time by consensus. Requires VM privilege and will be invoked during block prologue. + + +
public fun update_global_time(account: &signer, proposer: address, timestamp: u64)
+
+ + + +
+Implementation + + +
public fun update_global_time(
+    account: &signer,
+    proposer: address,
+    timestamp: u64
+) acquires CurrentTimeMicroseconds {
+    assert_operating();
+    // Can only be invoked by DiemVM signer.
+    CoreAddresses::assert_vm(account);
+
+    let global_timer = borrow_global_mut<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS());
+    let now = global_timer.microseconds;
+    if (proposer == CoreAddresses::VM_RESERVED_ADDRESS()) {
+        // NIL block with null address as proposer. Timestamp must be equal.
+        assert(now == timestamp, Errors::invalid_argument(ETIMESTAMP));
+    } else {
+        // Normal block. Time must advance
+        assert(now < timestamp, Errors::invalid_argument(ETIMESTAMP));
+    };
+    global_timer.microseconds = timestamp;
+}
+
+ + + +
+ +
+Specification + + + +
include AbortsIfNotOperating;
+include CoreAddresses::AbortsIfNotVM;
+
+let now = spec_now_microseconds();
+aborts_if [assume]
+    (if (proposer == CoreAddresses::VM_RESERVED_ADDRESS()) {
+        now != timestamp
+     } else  {
+        now >= timestamp
+     }
+    )
+    with Errors::INVALID_ARGUMENT;
+ensures spec_now_microseconds() == timestamp;
+
+ + + +
+ + + +## Function `now_microseconds` + +Gets the current time in microseconds. + + +
public fun now_microseconds(): u64
+
+ + + +
+Implementation + + +
public fun now_microseconds(): u64 acquires CurrentTimeMicroseconds {
+    assert_operating();
+    borrow_global<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include AbortsIfNotOperating;
+ensures result == spec_now_microseconds();
+
+ + + + + + + +
define spec_now_microseconds(): u64 {
+   global<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds
+}
+
+ + + +
+ + + +## Function `now_seconds` + +Gets the current time in seconds. + + +
public fun now_seconds(): u64
+
+ + + +
+Implementation + + +
public fun now_seconds(): u64 acquires CurrentTimeMicroseconds {
+    now_microseconds() / MICRO_CONVERSION_FACTOR
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque;
+include AbortsIfNotOperating;
+ensures result == spec_now_microseconds() /  MICRO_CONVERSION_FACTOR;
+
+ + + + + + + +
define spec_now_seconds(): u64 {
+   global<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS()).microseconds / MICRO_CONVERSION_FACTOR
+}
+
+ + + +
+ + + +## Function `is_genesis` + +Helper function to determine if Diem is in genesis state. + + +
public fun is_genesis(): bool
+
+ + + +
+Implementation + + +
public fun is_genesis(): bool {
+    !exists<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+ + + +
+ + + +## Function `assert_genesis` + +Helper function to assert genesis state. + + +
public fun assert_genesis()
+
+ + + +
+Implementation + + +
public fun assert_genesis() {
+    assert(is_genesis(), Errors::invalid_state(ENOT_GENESIS));
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque = true;
+include AbortsIfNotGenesis;
+
+ + +Helper schema to specify that a function aborts if not in genesis. + + + + + +
schema AbortsIfNotGenesis {
+    aborts_if !is_genesis() with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Function `is_operating` + +Helper function to determine if Diem is operating. This is the same as !is_genesis() and is provided +for convenience. Testing is_operating() is more frequent than is_genesis(). + + +
public fun is_operating(): bool
+
+ + + +
+Implementation + + +
public fun is_operating(): bool {
+    exists<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS())
+}
+
+ + + +
+ + + +## Function `assert_operating` + +Helper function to assert operating (!genesis) state. + + +
public fun assert_operating()
+
+ + + +
+Implementation + + +
public fun assert_operating() {
+    assert(is_operating(), Errors::invalid_state(ENOT_OPERATING));
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque = true;
+include AbortsIfNotOperating;
+
+ + +Helper schema to specify that a function aborts if not operating. + + + + + +
schema AbortsIfNotOperating {
+    aborts_if !is_operating() with Errors::INVALID_STATE;
+}
+
+ + + +
+ + + +## Module Specification + + + +After genesis, CurrentTimeMicroseconds is published forever + + +
invariant [global] is_operating() ==> exists<CurrentTimeMicroseconds>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +After genesis, time progresses monotonically. + + +
invariant update [global]
+    old(is_operating()) ==> old(spec_now_microseconds()) <= spec_now_microseconds();
+
+ + + +All functions which do not have an aborts_if specification in this module are implicitly declared +to never abort. + + +
pragma aborts_if_is_strict;
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DiemTransactionPublishingOption.md b/language/stdlib/modules/doc/DiemTransactionPublishingOption.md new file mode 100644 index 0000000000..6cc6e5cf66 --- /dev/null +++ b/language/stdlib/modules/doc/DiemTransactionPublishingOption.md @@ -0,0 +1,468 @@ + + + +# Module `0x1::DiemTransactionPublishingOption` + +This module defines a struct storing the publishing policies for the VM. + + +- [Struct `DiemTransactionPublishingOption`](#0x1_DiemTransactionPublishingOption_DiemTransactionPublishingOption) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemTransactionPublishingOption_initialize) +- [Function `is_script_allowed`](#0x1_DiemTransactionPublishingOption_is_script_allowed) +- [Function `is_module_allowed`](#0x1_DiemTransactionPublishingOption_is_module_allowed) +- [Function `add_to_script_allow_list`](#0x1_DiemTransactionPublishingOption_add_to_script_allow_list) +- [Function `set_open_script`](#0x1_DiemTransactionPublishingOption_set_open_script) +- [Function `set_open_module`](#0x1_DiemTransactionPublishingOption_set_open_module) +- [Module Specification](#@Module_Specification_1) + - [Initialization](#@Initialization_2) + - [Access Control](#@Access_Control_3) + - [Helper Functions](#@Helper_Functions_4) + + +
use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Roles;
+use 0x1::Vector;
+
+ + + + + +## Struct `DiemTransactionPublishingOption` + +Defines and holds the publishing policies for the VM. There are three possible configurations: +1. No module publishing, only allow-listed scripts are allowed. +2. No module publishing, custom scripts are allowed. +3. Both module publishing and custom scripts are allowed. +We represent these as the following resource. + + +
struct DiemTransactionPublishingOption
+
+ + + +
+Fields + + +
+
+script_allow_list: vector<vector<u8>> +
+
+ Only script hashes in the following list can be executed by the network. If the vector is empty, no + limitation would be enforced. +
+
+module_publishing_allowed: bool +
+
+ Anyone can publish new module if this flag is set to true. +
+
+ + +
+ + + +## Constants + + + + +The script hash already exists in the allowlist + + +
const EALLOWLIST_ALREADY_CONTAINS_SCRIPT: u64 = 1;
+
+ + + + + +The script hash has an invalid length + + +
const EINVALID_SCRIPT_HASH: u64 = 0;
+
+ + + + + + + +
const SCRIPT_HASH_LENGTH: u64 = 32;
+
+ + + + + +## Function `initialize` + + + +
public fun initialize(dr_account: &signer, script_allow_list: vector<vector<u8>>, module_publishing_allowed: bool)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+    script_allow_list: vector<vector<u8>>,
+    module_publishing_allowed: bool,
+) {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+
+    DiemConfig::publish_new_config(
+        dr_account,
+        DiemTransactionPublishingOption {
+            script_allow_list, module_publishing_allowed
+        }
+    );
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemTimestamp::AbortsIfNotGenesis;
+include DiemConfig::PublishNewConfigAbortsIf<DiemTransactionPublishingOption>;
+include DiemConfig::PublishNewConfigEnsures<DiemTransactionPublishingOption> {
+    payload: DiemTransactionPublishingOption {
+        script_allow_list, module_publishing_allowed
+    }};
+
+ + + +
+ + + +## Function `is_script_allowed` + +Check if sender can execute script with hash + + +
public fun is_script_allowed(account: &signer, hash: &vector<u8>): bool
+
+ + + +
+Implementation + + +
public fun is_script_allowed(account: &signer, hash: &vector<u8>): bool {
+    let publish_option = DiemConfig::get<DiemTransactionPublishingOption>();
+
+    Vector::is_empty(&publish_option.script_allow_list)
+        || Vector::contains(&publish_option.script_allow_list, hash)
+        || Roles::has_diem_root_role(account)
+}
+
+ + + +
+ +
+Specification + + + +
include AbortsIfNoTransactionPublishingOption;
+
+ + + + + + + +
schema AbortsIfNoTransactionPublishingOption {
+    include DiemTimestamp::is_genesis() ==> DiemConfig::AbortsIfNotPublished<DiemTransactionPublishingOption>{};
+}
+
+ + + +
+ + + +## Function `is_module_allowed` + +Check if a sender can publish a module + + +
public fun is_module_allowed(account: &signer): bool
+
+ + + +
+Implementation + + +
public fun is_module_allowed(account: &signer): bool {
+    let publish_option = DiemConfig::get<DiemTransactionPublishingOption>();
+
+    publish_option.module_publishing_allowed || Roles::has_diem_root_role(account)
+}
+
+ + + +
+ +
+Specification + + + +
include AbortsIfNoTransactionPublishingOption;
+
+ + + +
+ + + +## Function `add_to_script_allow_list` + +Add new_hash to the list of script hashes that is allowed to be executed by the network. + + +
public fun add_to_script_allow_list(dr_account: &signer, new_hash: vector<u8>)
+
+ + + +
+Implementation + + +
public fun add_to_script_allow_list(dr_account: &signer, new_hash: vector<u8>) {
+    Roles::assert_diem_root(dr_account);
+
+    assert(Vector::length(&new_hash) == SCRIPT_HASH_LENGTH, Errors::invalid_argument(EINVALID_SCRIPT_HASH));
+
+    let publish_option = DiemConfig::get<DiemTransactionPublishingOption>();
+    if (Vector::contains(&publish_option.script_allow_list, &new_hash)) {
+          abort Errors::invalid_argument(EALLOWLIST_ALREADY_CONTAINS_SCRIPT)
+    };
+    Vector::push_back(&mut publish_option.script_allow_list, new_hash);
+
+    DiemConfig::set<DiemTransactionPublishingOption>(dr_account, publish_option);
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+
+let allow_list = DiemConfig::get<DiemTransactionPublishingOption>().script_allow_list;
+aborts_if Vector::length(new_hash) != SCRIPT_HASH_LENGTH with Errors::INVALID_ARGUMENT;
+aborts_if Vector::spec_contains(allow_list, new_hash) with Errors::INVALID_ARGUMENT;
+include DiemConfig::AbortsIfNotPublished<DiemTransactionPublishingOption>;
+include DiemConfig::SetAbortsIf<DiemTransactionPublishingOption>{account: dr_account};
+
+ + + +
+ + + +## Function `set_open_script` + +Allow the execution of arbitrary script or not. + + +
public fun set_open_script(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun set_open_script(dr_account: &signer) {
+    Roles::assert_diem_root(dr_account);
+    let publish_option = DiemConfig::get<DiemTransactionPublishingOption>();
+
+    publish_option.script_allow_list = Vector::empty();
+    DiemConfig::set<DiemTransactionPublishingOption>(dr_account, publish_option);
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemConfig::AbortsIfNotPublished<DiemTransactionPublishingOption>;
+include DiemConfig::SetAbortsIf<DiemTransactionPublishingOption>{account: dr_account};
+
+ + + +
+ + + +## Function `set_open_module` + +Allow module publishing from arbitrary sender or not. + + +
public fun set_open_module(dr_account: &signer, open_module: bool)
+
+ + + +
+Implementation + + +
public fun set_open_module(dr_account: &signer, open_module: bool) {
+    Roles::assert_diem_root(dr_account);
+
+    let publish_option = DiemConfig::get<DiemTransactionPublishingOption>();
+
+    publish_option.module_publishing_allowed = open_module;
+    DiemConfig::set<DiemTransactionPublishingOption>(dr_account, publish_option);
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemConfig::AbortsIfNotPublished<DiemTransactionPublishingOption>;
+include DiemConfig::SetAbortsIf<DiemTransactionPublishingOption>{account: dr_account};
+
+ + + +
+ + + +## Module Specification + + + + + +### Initialization + + + +
invariant [global] DiemTimestamp::is_operating() ==>
+    DiemConfig::spec_is_published<DiemTransactionPublishingOption>();
+
+ + + + + +### Access Control + +Only add_to_script_allow_list, set_open_script, and set_open_module can modify the +DiemTransactionPublishingOption config [[H11]][PERMISSION] + + + + + +
schema DiemVersionRemainsSame {
+    ensures old(DiemConfig::spec_is_published<DiemTransactionPublishingOption>()) ==>
+        global<DiemConfig<DiemTransactionPublishingOption>>(CoreAddresses::DIEM_ROOT_ADDRESS()) ==
+            old(global<DiemConfig<DiemTransactionPublishingOption>>(CoreAddresses::DIEM_ROOT_ADDRESS()));
+}
+
+ + + + +
apply DiemVersionRemainsSame to * except add_to_script_allow_list, set_open_script, set_open_module;
+
+ + + + + +### Helper Functions + + + + + + +
define spec_is_script_allowed(account: signer, hash: vector<u8>): bool {
+    let publish_option = DiemConfig::spec_get_config<DiemTransactionPublishingOption>();
+    Vector::is_empty(publish_option.script_allow_list)
+        || Vector::spec_contains(publish_option.script_allow_list, hash)
+        || Roles::has_diem_root_role(account)
+}
+
+define spec_is_module_allowed(account: signer): bool {
+    let publish_option = DiemConfig::spec_get_config<DiemTransactionPublishingOption>();
+    publish_option.module_publishing_allowed || Roles::has_diem_root_role(account)
+}
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraVMConfig.md b/language/stdlib/modules/doc/DiemVMConfig.md similarity index 52% rename from language/stdlib/modules/doc/LibraVMConfig.md rename to language/stdlib/modules/doc/DiemVMConfig.md index d0f4bd27eb..33ba63f5a7 100644 --- a/language/stdlib/modules/doc/LibraVMConfig.md +++ b/language/stdlib/modules/doc/DiemVMConfig.md @@ -1,36 +1,36 @@ - + -# Module `0x1::LibraVMConfig` +# Module `0x1::DiemVMConfig` This module defines structs and methods to initialize VM configurations, including different costs of running the VM. -- [Struct `LibraVMConfig`](#0x1_LibraVMConfig_LibraVMConfig) -- [Struct `GasSchedule`](#0x1_LibraVMConfig_GasSchedule) -- [Struct `GasConstants`](#0x1_LibraVMConfig_GasConstants) -- [Function `initialize`](#0x1_LibraVMConfig_initialize) +- [Struct `DiemVMConfig`](#0x1_DiemVMConfig_DiemVMConfig) +- [Struct `GasSchedule`](#0x1_DiemVMConfig_GasSchedule) +- [Struct `GasConstants`](#0x1_DiemVMConfig_GasConstants) +- [Function `initialize`](#0x1_DiemVMConfig_initialize) - [Module Specification](#@Module_Specification_0) - [Initialization](#@Initialization_1) - [Access Control](#@Access_Control_2) -
use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
+
use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
 use 0x1::Roles;
 
- + -## Struct `LibraVMConfig` +## Struct `DiemVMConfig` -The struct to hold config data needed to operate the LibraVM. +The struct to hold config data needed to operate the DiemVM. -
struct LibraVMConfig
+
struct DiemVMConfig
 
@@ -41,7 +41,7 @@ The struct to hold config data needed to operate the LibraVM.
-gas_schedule: LibraVMConfig::GasSchedule +gas_schedule: DiemVMConfig::GasSchedule
Cost of running the VM. @@ -51,7 +51,7 @@ The struct to hold config data needed to operate the LibraVM. - + ## Struct `GasSchedule` @@ -63,12 +63,12 @@ A couple notes: 1. In the case that an instruction is deleted from the bytecode, that part of the cost schedule still needs to remain the same; once a slot in the table is taken by an instruction, that is its slot for the rest of time (since that instruction could already exist in a module on-chain). -2. The initialization of the module will publish the instruction table to the libra root account +2. The initialization of the module will publish the instruction table to the diem root account address, and will preload the vector with the gas schedule for instructions. The VM will then load this into memory at the startup of each block. -
struct GasSchedule
+
struct GasSchedule
 
@@ -91,7 +91,7 @@ load this into memory at the startup of each block.
-gas_constants: LibraVMConfig::GasConstants +gas_constants: DiemVMConfig::GasConstants
@@ -101,13 +101,13 @@ load this into memory at the startup of each block. - + ## Struct `GasConstants` -
struct GasConstants
+
struct GasConstants
 
@@ -195,14 +195,14 @@ load this into memory at the startup of each block. - + ## Function `initialize` -Initialize the table under the libra root account +Initialize the table under the diem root account -
public fun initialize(lr_account: &signer, instruction_schedule: vector<u8>, native_schedule: vector<u8>)
+
public fun initialize(dr_account: &signer, instruction_schedule: vector<u8>, native_schedule: vector<u8>)
 
@@ -211,17 +211,17 @@ Initialize the table under the libra root account Implementation -
public fun initialize(
-    lr_account: &signer,
+
public fun initialize(
+    dr_account: &signer,
     instruction_schedule: vector<u8>,
     native_schedule: vector<u8>,
 ) {
-    LibraTimestamp::assert_genesis();
+    DiemTimestamp::assert_genesis();
 
-    // The permission "UpdateVMConfig" is granted to LibraRoot [[H11]][PERMISSION].
-    Roles::assert_libra_root(lr_account);
+    // The permission "UpdateVMConfig" is granted to DiemRoot [[H11]][PERMISSION].
+    Roles::assert_diem_root(dr_account);
 
-    let gas_constants = GasConstants {
+    let gas_constants = GasConstants {
         global_memory_per_byte_cost: 4,
         global_memory_per_byte_write_cost: 9,
         min_transaction_gas_units: 600,
@@ -235,10 +235,10 @@ Initialize the table under the libra root account
         default_account_size: 800,
     };
 
-    LibraConfig::publish_new_config(
-        lr_account,
-        LibraVMConfig {
-            gas_schedule: GasSchedule {
+    DiemConfig::publish_new_config(
+        dr_account,
+        DiemVMConfig {
+            gas_schedule: GasSchedule {
                 instruction_schedule,
                 native_schedule,
                 gas_constants,
@@ -257,10 +257,10 @@ Initialize the table under the libra root account
 
 
 
-
+
 
 
-
let gas_constants = GasConstants {
+
let gas_constants = GasConstants {
     global_memory_per_byte_cost: 4,
     global_memory_per_byte_write_cost: 9,
     min_transaction_gas_units: 600,
@@ -276,15 +276,15 @@ Initialize the table under the libra root account
 
-Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. +Must abort if the signer does not have the DiemRoot role [[H11]][PERMISSION]. -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraTimestamp::AbortsIfNotGenesis;
-include LibraConfig::PublishNewConfigAbortsIf<LibraVMConfig>;
-include LibraConfig::PublishNewConfigEnsures<LibraVMConfig> {
-    payload: LibraVMConfig {
-        gas_schedule: GasSchedule {
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemTimestamp::AbortsIfNotGenesis;
+include DiemConfig::PublishNewConfigAbortsIf<DiemVMConfig>;
+include DiemConfig::PublishNewConfigEnsures<DiemVMConfig> {
+    payload: DiemVMConfig {
+        gas_schedule: GasSchedule {
             instruction_schedule,
             native_schedule,
             gas_constants,
@@ -308,7 +308,7 @@ Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION].
 
 
 
-
invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published<LibraVMConfig>();
+
invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published<DiemVMConfig>();
 
@@ -317,23 +317,23 @@ Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. ### Access Control -Currently, no one can update LibraVMConfig [[H11]][PERMISSION] +Currently, no one can update DiemVMConfig [[H11]][PERMISSION] - + -
schema LibraVMConfigRemainsSame {
-    ensures old(LibraConfig::spec_is_published<LibraVMConfig>()) ==>
-        global<LibraConfig<LibraVMConfig>>(CoreAddresses::LIBRA_ROOT_ADDRESS()) ==
-            old(global<LibraConfig<LibraVMConfig>>(CoreAddresses::LIBRA_ROOT_ADDRESS()));
+
schema DiemVMConfigRemainsSame {
+    ensures old(DiemConfig::spec_is_published<DiemVMConfig>()) ==>
+        global<DiemConfig<DiemVMConfig>>(CoreAddresses::DIEM_ROOT_ADDRESS()) ==
+            old(global<DiemConfig<DiemVMConfig>>(CoreAddresses::DIEM_ROOT_ADDRESS()));
 }
 
-
apply LibraVMConfigRemainsSame to *;
+
apply DiemVMConfigRemainsSame to *;
 
diff --git a/language/stdlib/modules/doc/DiemVersion.md b/language/stdlib/modules/doc/DiemVersion.md new file mode 100644 index 0000000000..792f717c89 --- /dev/null +++ b/language/stdlib/modules/doc/DiemVersion.md @@ -0,0 +1,245 @@ + + + +# Module `0x1::DiemVersion` + +Maintains the version number for the Diem blockchain. The version is stored in a +DiemConfig, and may be updated by Diem root. + + +- [Struct `DiemVersion`](#0x1_DiemVersion_DiemVersion) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_DiemVersion_initialize) +- [Function `set`](#0x1_DiemVersion_set) +- [Module Specification](#@Module_Specification_1) + - [Initialization](#@Initialization_2) + - [Access Control](#@Access_Control_3) + - [Other Invariants](#@Other_Invariants_4) + + +
use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::Roles;
+
+ + + + + +## Struct `DiemVersion` + + + +
struct DiemVersion
+
+ + + +
+Fields + + +
+
+major: u64 +
+
+ +
+
+ + +
+ + + +## Constants + + + + +Tried to set an invalid major version for the VM. Major versions must be strictly increasing + + +
const EINVALID_MAJOR_VERSION_NUMBER: u64 = 0;
+
+ + + + + +## Function `initialize` + +Publishes the DiemVersion config. Must be called during Genesis. + + +
public fun initialize(dr_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+    DiemConfig::publish_new_config<DiemVersion>(
+        dr_account,
+        DiemVersion { major: 1 },
+    );
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H10]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemTimestamp::AbortsIfNotGenesis;
+include DiemConfig::PublishNewConfigAbortsIf<DiemVersion>;
+include DiemConfig::PublishNewConfigEnsures<DiemVersion>{payload: DiemVersion { major: 1 }};
+
+ + + +
+ + + +## Function `set` + +Allows Diem root to update the major version to a larger version. + + +
public fun set(dr_account: &signer, major: u64)
+
+ + + +
+Implementation + + +
public fun set(dr_account: &signer, major: u64) {
+    DiemTimestamp::assert_operating();
+
+    Roles::assert_diem_root(dr_account);
+
+    let old_config = DiemConfig::get<DiemVersion>();
+
+    assert(
+        old_config.major < major,
+        Errors::invalid_argument(EINVALID_MAJOR_VERSION_NUMBER)
+    );
+
+    DiemConfig::set<DiemVersion>(
+        dr_account,
+        DiemVersion { major }
+    );
+}
+
+ + + +
+ +
+Specification + + +Must abort if the signer does not have the DiemRoot role [[H10]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+include DiemTimestamp::AbortsIfNotOperating;
+aborts_if DiemConfig::get<DiemVersion>().major >= major with Errors::INVALID_ARGUMENT;
+include DiemConfig::SetAbortsIf<DiemVersion>{account: dr_account};
+include DiemConfig::SetEnsures<DiemVersion>{payload: DiemVersion { major }};
+
+ + + +
+ + + +## Module Specification + + + + + +### Initialization + + +After genesis, version is published. + + +
invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published<DiemVersion>();
+
+ + + + + +### Access Control + +Only "set" can modify the DiemVersion config [[H10]][PERMISSION] + + + + + +
schema DiemVersionRemainsSame {
+    ensures old(DiemConfig::spec_is_published<DiemVersion>()) ==>
+        global<DiemConfig<DiemVersion>>(CoreAddresses::DIEM_ROOT_ADDRESS()) ==
+            old(global<DiemConfig<DiemVersion>>(CoreAddresses::DIEM_ROOT_ADDRESS()));
+}
+
+ + + + +
apply DiemVersionRemainsSame to * except set;
+
+ + + +The permission "UpdateDiemProtocolVersion" is granted to DiemRoot [[H10]][PERMISSION]. + + +
invariant [global, isolated] forall addr: address where exists<DiemConfig<DiemVersion>>(addr):
+    addr == CoreAddresses::DIEM_ROOT_ADDRESS();
+
+ + + + + +### Other Invariants + + +Version number never decreases + + +
invariant update [global, isolated]
+    old(DiemConfig::get<DiemVersion>().major) <= DiemConfig::get<DiemVersion>().major;
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/DualAttestation.md b/language/stdlib/modules/doc/DualAttestation.md index dee57dabba..e6741c43b1 100644 --- a/language/stdlib/modules/doc/DualAttestation.md +++ b/language/stdlib/modules/doc/DualAttestation.md @@ -24,8 +24,8 @@ Module managing dual attestation. - [Function `assert_signature_is_valid`](#0x1_DualAttestation_assert_signature_is_valid) - [Function `assert_payment_ok`](#0x1_DualAttestation_assert_payment_ok) - [Function `initialize`](#0x1_DualAttestation_initialize) -- [Function `get_cur_microlibra_limit`](#0x1_DualAttestation_get_cur_microlibra_limit) -- [Function `set_microlibra_limit`](#0x1_DualAttestation_set_microlibra_limit) +- [Function `get_cur_microdiem_limit`](#0x1_DualAttestation_get_cur_microdiem_limit) +- [Function `set_microdiem_limit`](#0x1_DualAttestation_set_microdiem_limit) - [Module Specification](#@Module_Specification_1) - [Initialization](#@Initialization_2) - [Helper Functions](#@Helper_Functions_3) @@ -33,17 +33,17 @@ Module managing dual attestation.
use 0x1::CoreAddresses;
+use 0x1::Diem;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
 use 0x1::Event;
-use 0x1::LBR;
 use 0x1::LCS;
-use 0x1::Libra;
-use 0x1::LibraTimestamp;
 use 0x1::Roles;
 use 0x1::Signature;
 use 0x1::Signer;
 use 0x1::VASP;
 use 0x1::Vector;
+use 0x1::XDX;
 
@@ -88,7 +88,7 @@ participate in off-chain protocols. transactions subject to the travel rule) (2) information exchanged in the off-chain protocols (e.g., KYC info in the travel rule protocol) - Note that this is different than authentication_key used in LibraAccount, which is + Note that this is different than authentication_key used in DiemAccount, which is a hash of a public key + signature scheme identifier, not a public key. Mutable.
@@ -96,7 +96,7 @@ participate in off-chain protocols.
Expiration date in microseconds from unix epoch. For V1, it is always set to - U64_MAX. Mutable, but only by LibraRoot. + U64_MAX. Mutable, but only by DiemRoot.
compliance_key_rotation_events: Event::EventHandle<DualAttestation::ComplianceKeyRotationEvent> @@ -134,7 +134,7 @@ Struct to store the limit on-chain
-micro_lbr_limit: u64 +micro_xdx_limit: u64
@@ -231,7 +231,7 @@ The message sent whenever the base url for a DOMAIN_SEPARATOR: vector<u8> = [64, 64, 36, 36, 76, 73, 66, 82, 65, 95, 65, 84, 84, 69, 83, 84, 36, 36, 64, 64]; +
const DOMAIN_SEPARATOR: vector<u8> = [64, 64, 36, 36, 68, 73, 69, 77, 95, 65, 84, 84, 69, 83, 84, 36, 36, 64, 64];
 
@@ -431,7 +431,7 @@ Rotate the base URL for account to new_url credential.base_url = copy new_url; Event::emit_event(&mut credential.base_url_rotation_events, BaseUrlRotationEvent { new_base_url: new_url, - time_rotated_seconds: LibraTimestamp::now_seconds(), + time_rotated_seconds: DiemTimestamp::now_seconds(), }); }
@@ -468,7 +468,7 @@ Must abort if the account does not have the resource Credential [[H16]][PERMISSI
schema RotateBaseUrlAbortsIf {
     include AbortsIfNoCredential{addr: sender};
-    include LibraTimestamp::AbortsIfNotOperating;
+    include DiemTimestamp::AbortsIfNotOperating;
 }
 
@@ -540,7 +540,7 @@ Rotate the compliance public key for account to new_keycopy new_key; Event::emit_event(&mut credential.compliance_key_rotation_events, ComplianceKeyRotationEvent { new_compliance_public_key: new_key, - time_rotated_seconds: LibraTimestamp::now_seconds(), + time_rotated_seconds: DiemTimestamp::now_seconds(), }); } @@ -579,7 +579,7 @@ Must abort if the account does not have the resource Credential [[H16]][PERMISSI
schema RotateCompliancePublicKeyAbortsIf {
     include AbortsIfNoCredential{addr: sender};
-    include LibraTimestamp::AbortsIfNotOperating;
+    include DiemTimestamp::AbortsIfNotOperating;
     aborts_if !Signature::ed25519_validate_pubkey(new_key) with Errors::INVALID_ARGUMENT;
 }
 
@@ -875,9 +875,9 @@ Helper which returns true if dual attestion is required for a deposit. payer: address, payee: address, deposit_value: u64 ): bool acquires Limit { // travel rule applies for payments over a limit - let travel_rule_limit_microlibra = get_cur_microlibra_limit(); - let approx_lbr_microlibra_value = Libra::approx_lbr_for_value<Token>(deposit_value); - let above_limit = approx_lbr_microlibra_value >= travel_rule_limit_microlibra; + let travel_rule_limit_microdiem = get_cur_microdiem_limit(); + let approx_xdx_microdiem_value = Diem::approx_xdx_for_value<Token>(deposit_value); + let above_limit = approx_xdx_microdiem_value >= travel_rule_limit_microdiem; if (!above_limit) { return false }; @@ -914,7 +914,7 @@ Helper which returns true if dual attestion is required for a deposit.
schema DualAttestationRequiredAbortsIf<Token> {
     deposit_value: num;
-    include Libra::ApproxLbrForValueAbortsIf<Token>{from_value: deposit_value};
+    include Diem::ApproxXdmForValueAbortsIf<Token>{from_value: deposit_value};
     aborts_if !spec_is_published() with Errors::NOT_PUBLISHED;
 }
 
@@ -941,8 +941,8 @@ Helper functions which simulates spec_dual_attestation_required<Token>( payer: address, payee: address, deposit_value: u64 ): bool { - Libra::spec_approx_lbr_for_value<Token>(deposit_value) - >= spec_get_cur_microlibra_limit() && + Diem::spec_approx_xdx_for_value<Token>(deposit_value) + >= spec_get_cur_microdiem_limit() && payer != payee && spec_is_inter_vasp(payer, payee) } @@ -1205,7 +1205,7 @@ the conditions in (2) is not met. Travel rule limit set during genesis -
public fun initialize(lr_account: &signer)
+
public fun initialize(dr_account: &signer)
 
@@ -1214,16 +1214,16 @@ Travel rule limit set during genesis Implementation -
public fun initialize(lr_account: &signer) {
-    LibraTimestamp::assert_genesis();
-    CoreAddresses::assert_libra_root(lr_account); // operational constraint.
-    assert(!exists<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ELIMIT));
-    let initial_limit = (INITIAL_DUAL_ATTESTATION_LIMIT as u128) * (Libra::scaling_factor<LBR>() as u128);
+
public fun initialize(dr_account: &signer) {
+    DiemTimestamp::assert_genesis();
+    CoreAddresses::assert_diem_root(dr_account); // operational constraint.
+    assert(!exists<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ELIMIT));
+    let initial_limit = (INITIAL_DUAL_ATTESTATION_LIMIT as u128) * (Diem::scaling_factor<XDX>() as u128);
     assert(initial_limit <= MAX_U64, Errors::limit_exceeded(ELIMIT));
     move_to(
-        lr_account,
+        dr_account,
         Limit {
-            micro_lbr_limit: (initial_limit as u64)
+            micro_xdx_limit: (initial_limit as u64)
         }
     )
 }
@@ -1238,27 +1238,27 @@ Travel rule limit set during genesis
 
 
 
-
include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-aborts_if exists<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
+
include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+aborts_if exists<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
 
-let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Libra::spec_scaling_factor<LBR>();
+let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Diem::spec_scaling_factor<XDX>();
 aborts_if initial_limit > MAX_U64 with Errors::LIMIT_EXCEEDED;
-include Libra::AbortsIfNoCurrency<LBR>;
+include Diem::AbortsIfNoCurrency<XDX>;
 
- + -## Function `get_cur_microlibra_limit` +## Function `get_cur_microdiem_limit` -Return the current dual attestation limit in microlibra +Return the current dual attestation limit in microdiem -
public fun get_cur_microlibra_limit(): u64
+
public fun get_cur_microdiem_limit(): u64
 
@@ -1267,9 +1267,9 @@ Return the current dual attestation limit in microlibra Implementation -
public fun get_cur_microlibra_limit(): u64 acquires Limit {
-    assert(exists<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ELIMIT));
-    borrow_global<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit
+
public fun get_cur_microdiem_limit(): u64 acquires Limit {
+    assert(exists<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ELIMIT));
+    borrow_global<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit
 }
 
@@ -1284,22 +1284,22 @@ Return the current dual attestation limit in microlibra
pragma opaque;
 aborts_if !spec_is_published() with Errors::NOT_PUBLISHED;
-ensures result == spec_get_cur_microlibra_limit();
+ensures result == spec_get_cur_microdiem_limit();
 
- + -## Function `set_microlibra_limit` +## Function `set_microdiem_limit` -Set the dual attestation limit to micro_libra_limit. +Set the dual attestation limit to micro_diem_limit. Aborts if tc_account does not have the TreasuryCompliance role -
public fun set_microlibra_limit(tc_account: &signer, micro_lbr_limit: u64)
+
public fun set_microdiem_limit(tc_account: &signer, micro_xdx_limit: u64)
 
@@ -1308,10 +1308,10 @@ Aborts if tc_account does not have the TreasuryCompliance role Implementation -
public fun set_microlibra_limit(tc_account: &signer, micro_lbr_limit: u64) acquires Limit {
+
public fun set_microdiem_limit(tc_account: &signer, micro_xdx_limit: u64) acquires Limit {
     Roles::assert_treasury_compliance(tc_account);
-    assert(exists<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ELIMIT));
-    borrow_global_mut<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit = micro_lbr_limit;
+    assert(exists<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::not_published(ELIMIT));
+    borrow_global_mut<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit = micro_xdx_limit;
 }
 
@@ -1329,7 +1329,7 @@ The permission UpdateDualAttestationLimit is granted to TreasuryCompliance.
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
 aborts_if !spec_is_published() with Errors::NOT_PUBLISHED;
-ensures global<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit == micro_lbr_limit;
+ensures global<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit == micro_xdx_limit;
 
@@ -1349,7 +1349,7 @@ The permission UpdateDualAttestationLimit is granted to TreasuryCompliance. The Limit resource should be published after genesis -
invariant [global] LibraTimestamp::is_operating() ==> spec_is_published();
+
invariant [global] DiemTimestamp::is_operating() ==> spec_is_published();
 
@@ -1366,19 +1366,19 @@ Helper function to determine whether the Limit is published.
define spec_is_published(): bool {
-    exists<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS())
+    exists<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS())
 }
 
-Mirrors Self::get_cur_microlibra_limit. +Mirrors Self::get_cur_microdiem_limit. - + -
define spec_get_cur_microlibra_limit(): u64 {
-    global<Limit>(CoreAddresses::LIBRA_ROOT_ADDRESS()).micro_lbr_limit
+
define spec_get_cur_microdiem_limit(): u64 {
+    global<Limit>(CoreAddresses::DIEM_ROOT_ADDRESS()).micro_xdx_limit
 }
 
@@ -1439,7 +1439,7 @@ The permission "RotateDualAttestationInfo(addr)" is only granted to ParentVASP o
-Only set_microlibra_limit can change the limit [[H6]][PERMISSION]. +Only set_microdiem_limit can change the limit [[H6]][PERMISSION]. @@ -1449,14 +1449,14 @@ The DualAttestation limit stays constant.
schema DualAttestationLimitRemainsSame {
     ensures old(spec_is_published())
-        ==> spec_get_cur_microlibra_limit() == old(spec_get_cur_microlibra_limit());
+        ==> spec_get_cur_microdiem_limit() == old(spec_get_cur_microdiem_limit());
 }
 
-
apply DualAttestationLimitRemainsSame to * except set_microlibra_limit;
+
apply DualAttestationLimitRemainsSame to * except set_microdiem_limit;
 
diff --git a/language/stdlib/modules/doc/Errors.md b/language/stdlib/modules/doc/Errors.md index de8399aa9c..4a5ae7cce3 100644 --- a/language/stdlib/modules/doc/Errors.md +++ b/language/stdlib/modules/doc/Errors.md @@ -8,7 +8,7 @@ Module defining error codes used in Move aborts throughout the framework. A u64 error code is constructed from two values: 1. The *error category* which is encoded in the lower 8 bits of the code. Error categories are -declared in this module and are globally unique across the Libra framework. There is a limited +declared in this module and are globally unique across the Diem framework. There is a limited fixed set of predefined categories, and the framework is guaranteed to use those consistently. 2. The *error reason* which is encoded in the remaining 56 bits of the code. The reason is a unique diff --git a/language/stdlib/modules/doc/Genesis.md b/language/stdlib/modules/doc/Genesis.md index af96616bf2..e13a07c14f 100644 --- a/language/stdlib/modules/doc/Genesis.md +++ b/language/stdlib/modules/doc/Genesis.md @@ -3,7 +3,7 @@ # Module `0x1::Genesis` -The Genesis module defines the Move initialization entry point of the Libra framework +The Genesis module defines the Move initialization entry point of the Diem framework when executing from a fresh state. > TODO: Currently there are a few additional functions called from Rust during genesis. @@ -15,19 +15,19 @@ when executing from a fresh state.
use 0x1::AccountFreezing;
 use 0x1::ChainId;
-use 0x1::Coin1;
+use 0x1::Diem;
+use 0x1::DiemAccount;
+use 0x1::DiemBlock;
+use 0x1::DiemConfig;
+use 0x1::DiemSystem;
+use 0x1::DiemTimestamp;
+use 0x1::DiemTransactionPublishingOption;
+use 0x1::DiemVMConfig;
+use 0x1::DiemVersion;
 use 0x1::DualAttestation;
-use 0x1::LBR;
-use 0x1::Libra;
-use 0x1::LibraAccount;
-use 0x1::LibraBlock;
-use 0x1::LibraConfig;
-use 0x1::LibraSystem;
-use 0x1::LibraTimestamp;
-use 0x1::LibraTransactionPublishingOption;
-use 0x1::LibraVMConfig;
-use 0x1::LibraVersion;
 use 0x1::TransactionFee;
+use 0x1::XDX;
+use 0x1::XUS;
 
@@ -36,10 +36,10 @@ when executing from a fresh state. ## Function `initialize` -Initializes the Libra framework. +Initializes the Diem framework. -
fun initialize(lr_account: &signer, tc_account: &signer, lr_auth_key: vector<u8>, tc_auth_key: vector<u8>, initial_script_allow_list: vector<vector<u8>>, is_open_module: bool, instruction_schedule: vector<u8>, native_schedule: vector<u8>, chain_id: u8)
+
fun initialize(dr_account: &signer, tc_account: &signer, dr_auth_key: vector<u8>, tc_auth_key: vector<u8>, initial_script_allow_list: vector<vector<u8>>, is_open_module: bool, instruction_schedule: vector<u8>, native_schedule: vector<u8>, chain_id: u8)
 
@@ -49,9 +49,9 @@ Initializes the Libra framework.
fun initialize(
-    lr_account: &signer,
+    dr_account: &signer,
     tc_account: &signer,
-    lr_auth_key: vector<u8>,
+    dr_auth_key: vector<u8>,
     tc_auth_key: vector<u8>,
     initial_script_allow_list: vector<vector<u8>>,
     is_open_module: bool,
@@ -60,63 +60,63 @@ Initializes the Libra framework.
     chain_id: u8,
 ) {
 
-    LibraAccount::initialize(lr_account, x"00000000000000000000000000000000");
+    DiemAccount::initialize(dr_account, x"00000000000000000000000000000000");
 
-    ChainId::initialize(lr_account, chain_id);
+    ChainId::initialize(dr_account, chain_id);
 
     // On-chain config setup
-    LibraConfig::initialize(lr_account);
+    DiemConfig::initialize(dr_account);
 
     // Currency setup
-    Libra::initialize(lr_account);
+    Diem::initialize(dr_account);
 
     // Currency setup
-    Coin1::initialize(lr_account, tc_account);
+    XUS::initialize(dr_account, tc_account);
 
-    LBR::initialize(
-        lr_account,
+    XDX::initialize(
+        dr_account,
         tc_account,
     );
 
-    AccountFreezing::initialize(lr_account);
+    AccountFreezing::initialize(dr_account);
 
     TransactionFee::initialize(tc_account);
 
-    LibraSystem::initialize_validator_set(
-        lr_account,
+    DiemSystem::initialize_validator_set(
+        dr_account,
     );
-    LibraVersion::initialize(
-        lr_account,
+    DiemVersion::initialize(
+        dr_account,
     );
     DualAttestation::initialize(
-        lr_account,
+        dr_account,
     );
-    LibraBlock::initialize_block_metadata(lr_account);
+    DiemBlock::initialize_block_metadata(dr_account);
 
-    let lr_rotate_key_cap = LibraAccount::extract_key_rotation_capability(lr_account);
-    LibraAccount::rotate_authentication_key(&lr_rotate_key_cap, lr_auth_key);
-    LibraAccount::restore_key_rotation_capability(lr_rotate_key_cap);
+    let dr_rotate_key_cap = DiemAccount::extract_key_rotation_capability(dr_account);
+    DiemAccount::rotate_authentication_key(&dr_rotate_key_cap, dr_auth_key);
+    DiemAccount::restore_key_rotation_capability(dr_rotate_key_cap);
 
-    LibraTransactionPublishingOption::initialize(
-        lr_account,
+    DiemTransactionPublishingOption::initialize(
+        dr_account,
         initial_script_allow_list,
         is_open_module,
     );
 
-    LibraVMConfig::initialize(
-        lr_account,
+    DiemVMConfig::initialize(
+        dr_account,
         instruction_schedule,
         native_schedule,
     );
 
-    let tc_rotate_key_cap = LibraAccount::extract_key_rotation_capability(tc_account);
-    LibraAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key);
-    LibraAccount::restore_key_rotation_capability(tc_rotate_key_cap);
+    let tc_rotate_key_cap = DiemAccount::extract_key_rotation_capability(tc_account);
+    DiemAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key);
+    DiemAccount::restore_key_rotation_capability(tc_rotate_key_cap);
 
     // After we have called this function, all invariants which are guarded by
-    // `LibraTimestamp::is_operating() ==> ...` will become active and a verification condition.
+    // `DiemTimestamp::is_operating() ==> ...` will become active and a verification condition.
     // See also discussion at function specification.
-    LibraTimestamp::set_time_has_started(lr_account);
+    DiemTimestamp::set_time_has_started(dr_account);
 }
 
@@ -140,7 +140,7 @@ be verified **together** with the module(s) which provides the invariant. Assume that this is called in genesis state (no timestamp). -
requires LibraTimestamp::is_genesis();
+
requires DiemTimestamp::is_genesis();
 
diff --git a/language/stdlib/modules/doc/LBR.md b/language/stdlib/modules/doc/LBR.md deleted file mode 100644 index 3ab778df7a..0000000000 --- a/language/stdlib/modules/doc/LBR.md +++ /dev/null @@ -1,375 +0,0 @@ - - - -# Module `0x1::LBR` - -NB: This module is a stub of the LBR at the moment. - -Once the component makeup of the LBR has been chosen the -Reserve will be updated to hold the backing coins in the correct ratios. - - -- [Resource `LBR`](#0x1_LBR_LBR) -- [Resource `Reserve`](#0x1_LBR_Reserve) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LBR_initialize) -- [Function `is_lbr`](#0x1_LBR_is_lbr) -- [Function `reserve_address`](#0x1_LBR_reserve_address) -- [Module Specification](#@Module_Specification_1) - - [Persistence of Resources](#@Persistence_of_Resources_2) - - [Helper Functions](#@Helper_Functions_3) - - -
use 0x1::AccountLimits;
-use 0x1::CoreAddresses;
-use 0x1::Errors;
-use 0x1::FixedPoint32;
-use 0x1::Libra;
-use 0x1::LibraTimestamp;
-
- - - - - -## Resource `LBR` - -The type tag representing the LBR currency on-chain. - - -
resource struct LBR
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `Reserve` - -Note: Currently only holds the mint, burn, and preburn capabilities for -LBR. Once the makeup of the LBR has been determined this resource will -be updated to hold the backing LBR reserve compnents on-chain. - -The on-chain reserve for the LBR holds both the capability for minting LBR -coins, and also each reserve component that holds the backing for these coins on-chain. -Currently this holds no coins since LBR is not able to be minted/created. - - -
resource struct Reserve
-
- - - -
-Fields - - -
-
-mint_cap: Libra::MintCapability<LBR::LBR> -
-
- The mint capability allowing minting of LBR coins. -
-
-burn_cap: Libra::BurnCapability<LBR::LBR> -
-
- The burn capability for LBR coins. This is used for the unpacking - of LBR coins into the underlying backing currencies. -
-
-preburn_cap: Libra::Preburn<LBR::LBR> -
-
- The preburn for LBR. This is an administrative field since we - need to alway preburn before we burn. -
-
- - -
- - - -## Constants - - - - -The Reserve resource is in an invalid state - - -
const ERESERVE: u64 = 0;
-
- - - - - -## Function `initialize` - -Initializes the LBR module. This sets up the initial LBR ratios and -reserve components, and creates the mint, preburn, and burn -capabilities for LBR coins. The LBR currency must not already be -registered in order for this to succeed. The sender must both be the -correct address (CoreAddresses::CURRENCY_INFO_ADDRESS) and have the -correct permissions (&Capability<RegisterNewCurrency>). Both of these -restrictions are enforced in the Libra::register_currency function, but also enforced here. - - -
public fun initialize(lr_account: &signer, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-    tc_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    // Operational constraint
-    CoreAddresses::assert_currency_info(lr_account);
-    // Reserve must not exist.
-    assert(!exists<Reserve>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ERESERVE));
-    let (mint_cap, burn_cap) = Libra::register_currency<LBR>(
-        lr_account,
-        FixedPoint32::create_from_rational(1, 1), // exchange rate to LBR
-        true,    // is_synthetic
-        1000000, // scaling_factor = 10^6
-        1000,    // fractional_part = 10^3
-        b"LBR"
-    );
-    // LBR cannot be minted.
-    Libra::update_minting_ability<LBR>(tc_account, false);
-    AccountLimits::publish_unrestricted_limits<LBR>(lr_account);
-    let preburn_cap = Libra::create_preburn<LBR>(tc_account);
-    move_to(lr_account, Reserve { mint_cap, burn_cap, preburn_cap });
-}
-
- - - -
- -
-Specification - - - -
include CoreAddresses::AbortsIfNotCurrencyInfo{account: lr_account};
-aborts_if exists<Reserve>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
-include Libra::RegisterCurrencyAbortsIf<LBR>{
-    currency_code: b"LBR",
-    scaling_factor: 1000000
-};
-include AccountLimits::PublishUnrestrictedLimitsAbortsIf<LBR>{publish_account: lr_account};
-include Libra::RegisterCurrencyEnsures<LBR>;
-include Libra::UpdateMintingAbilityEnsures<LBR>{can_mint: false};
-include AccountLimits::PublishUnrestrictedLimitsEnsures<LBR>{publish_account: lr_account};
-ensures exists<Reserve>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -Registering LBR can only be done in genesis. - - -
include LibraTimestamp::AbortsIfNotGenesis;
-
- - -Only the LibraRoot account can register a new currency [[H8]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-
- - -Only the TreasuryCompliance role can update the can_mint field of CurrencyInfo [[H2]][PERMISSION]. -Moreover, only the TreasuryCompliance role can create Preburn. - - -
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-
- - - -
- - - -## Function `is_lbr` - -Returns true if CoinType is LBR::LBR - - -
public fun is_lbr<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_lbr<CoinType>(): bool {
-    Libra::is_currency<CoinType>() &&
-        Libra::currency_code<CoinType>() == Libra::currency_code<LBR>()
-}
-
- - - -
- -
-Specification - - - -
pragma opaque, verify = false;
-include Libra::spec_is_currency<CoinType>() ==> Libra::AbortsIfNoCurrency<LBR>;
-
- - -The following is correct because currency codes are unique; however, we -can currently not prove it, therefore verify is false. - - -
ensures result == Libra::spec_is_currency<CoinType>() && spec_is_lbr<CoinType>();
-
- - - -
- - - -## Function `reserve_address` - -Return the account address where the globally unique LBR::Reserve resource is stored - - -
public fun reserve_address(): address
-
- - - -
-Implementation - - -
public fun reserve_address(): address {
-    CoreAddresses::CURRENCY_INFO_ADDRESS()
-}
-
- - - -
- - - -## Module Specification - - - - - -### Persistence of Resources - - -After genesis, the Reserve resource exists. - - -
invariant [global] LibraTimestamp::is_operating() ==> reserve_exists();
-
- - -After genesis, LBR is registered. - - -
invariant [global] LibraTimestamp::is_operating() ==> Libra::is_currency<LBR>();
-
- - - - - -### Helper Functions - - -Checks whether the Reserve resource exists. - - - - - -
define reserve_exists(): bool {
-   exists<Reserve>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Returns true if CoinType is LBR. - - - - - -
define spec_is_lbr<CoinType>(): bool {
-    type<CoinType>() == type<LBR>()
-}
-
- - -After genesis, LimitsDefinition<LBR> is published at Libra root. It's published by -AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because -it does not hold for all types (but does hold for LBR). - - -
invariant [global] LibraTimestamp::is_operating()
-    ==> exists<AccountLimits::LimitsDefinition<LBR>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -LimitsDefinition<LBR> is not published at any other address - - -
invariant [global] forall addr: address where exists<AccountLimits::LimitsDefinition<LBR>>(addr):
-    addr == CoreAddresses::LIBRA_ROOT_ADDRESS();
-
- - -Reserve is persistent - - -
invariant update [global] old(exists<Reserve>(reserve_address()))
-    ==> exists<Reserve>(reserve_address());
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LCS.md b/language/stdlib/modules/doc/LCS.md index 81c2ab1467..5b550c1205 100644 --- a/language/stdlib/modules/doc/LCS.md +++ b/language/stdlib/modules/doc/LCS.md @@ -3,7 +3,7 @@ # Module `0x1::LCS` -Utility for converting a Move value to its binary representation in LCS (Libra Canonical +Utility for converting a Move value to its binary representation in LCS (Diem Canonical Serialization). LCS is the binary encoding for Move resources and other non-module values published on-chain. See https://github.com/libra/libra/tree/master/common/lcs for more details on LCS. @@ -21,7 +21,7 @@ details on LCS. ## Function `to_bytes` -Return the binary representation of v in LCS (Libra Canonical Serialization) format +Return the binary representation of v in LCS (Diem Canonical Serialization) format
public fun to_bytes<MoveValue>(v: &MoveValue): vector<u8>
diff --git a/language/stdlib/modules/doc/Libra.md b/language/stdlib/modules/doc/Libra.md
deleted file mode 100644
index dc5a894bae..0000000000
--- a/language/stdlib/modules/doc/Libra.md
+++ /dev/null
@@ -1,3453 +0,0 @@
-
-
-
-# Module `0x1::Libra`
-
-The Libra module describes the concept of a coin in the Libra framework. It introduces the
-resource Libra::Libra<CoinType>, representing a coin of given coin type.
-The module defines functions operating on coins as well as functionality like
-minting and burning of coins.
-
-
--  [Resource `Libra`](#0x1_Libra_Libra)
--  [Resource `MintCapability`](#0x1_Libra_MintCapability)
--  [Resource `BurnCapability`](#0x1_Libra_BurnCapability)
--  [Struct `MintEvent`](#0x1_Libra_MintEvent)
--  [Struct `BurnEvent`](#0x1_Libra_BurnEvent)
--  [Struct `PreburnEvent`](#0x1_Libra_PreburnEvent)
--  [Struct `CancelBurnEvent`](#0x1_Libra_CancelBurnEvent)
--  [Struct `ToLBRExchangeRateUpdateEvent`](#0x1_Libra_ToLBRExchangeRateUpdateEvent)
--  [Resource `CurrencyInfo`](#0x1_Libra_CurrencyInfo)
--  [Resource `Preburn`](#0x1_Libra_Preburn)
--  [Constants](#@Constants_0)
--  [Function `initialize`](#0x1_Libra_initialize)
--  [Function `publish_burn_capability`](#0x1_Libra_publish_burn_capability)
--  [Function `mint`](#0x1_Libra_mint)
--  [Function `burn`](#0x1_Libra_burn)
--  [Function `cancel_burn`](#0x1_Libra_cancel_burn)
--  [Function `mint_with_capability`](#0x1_Libra_mint_with_capability)
--  [Function `preburn_with_resource`](#0x1_Libra_preburn_with_resource)
--  [Function `create_preburn`](#0x1_Libra_create_preburn)
--  [Function `publish_preburn_to_account`](#0x1_Libra_publish_preburn_to_account)
--  [Function `preburn_to`](#0x1_Libra_preburn_to)
--  [Function `burn_with_capability`](#0x1_Libra_burn_with_capability)
--  [Function `burn_with_resource_cap`](#0x1_Libra_burn_with_resource_cap)
--  [Function `cancel_burn_with_capability`](#0x1_Libra_cancel_burn_with_capability)
--  [Function `burn_now`](#0x1_Libra_burn_now)
--  [Function `remove_burn_capability`](#0x1_Libra_remove_burn_capability)
--  [Function `preburn_value`](#0x1_Libra_preburn_value)
--  [Function `zero`](#0x1_Libra_zero)
--  [Function `value`](#0x1_Libra_value)
--  [Function `split`](#0x1_Libra_split)
--  [Function `withdraw`](#0x1_Libra_withdraw)
--  [Function `withdraw_all`](#0x1_Libra_withdraw_all)
--  [Function `join`](#0x1_Libra_join)
--  [Function `deposit`](#0x1_Libra_deposit)
--  [Function `destroy_zero`](#0x1_Libra_destroy_zero)
--  [Function `register_currency`](#0x1_Libra_register_currency)
--  [Function `register_SCS_currency`](#0x1_Libra_register_SCS_currency)
--  [Function `market_cap`](#0x1_Libra_market_cap)
--  [Function `approx_lbr_for_value`](#0x1_Libra_approx_lbr_for_value)
--  [Function `approx_lbr_for_coin`](#0x1_Libra_approx_lbr_for_coin)
--  [Function `is_currency`](#0x1_Libra_is_currency)
--  [Function `is_SCS_currency`](#0x1_Libra_is_SCS_currency)
--  [Function `is_synthetic_currency`](#0x1_Libra_is_synthetic_currency)
--  [Function `scaling_factor`](#0x1_Libra_scaling_factor)
--  [Function `fractional_part`](#0x1_Libra_fractional_part)
--  [Function `currency_code`](#0x1_Libra_currency_code)
--  [Function `update_lbr_exchange_rate`](#0x1_Libra_update_lbr_exchange_rate)
--  [Function `lbr_exchange_rate`](#0x1_Libra_lbr_exchange_rate)
--  [Function `update_minting_ability`](#0x1_Libra_update_minting_ability)
--  [Function `assert_is_currency`](#0x1_Libra_assert_is_currency)
--  [Function `assert_is_SCS_currency`](#0x1_Libra_assert_is_SCS_currency)
--  [Module Specification](#@Module_Specification_1)
-    -  [Access Control](#@Access_Control_2)
-        -  [Minting](#@Minting_3)
-        -  [Burning](#@Burning_4)
-        -  [Preburning](#@Preburning_5)
-        -  [Update Exchange Rates](#@Update_Exchange_Rates_6)
-    -  [Helper Functions](#@Helper_Functions_7)
-
-
-
use 0x1::CoreAddresses;
-use 0x1::Errors;
-use 0x1::Event;
-use 0x1::FixedPoint32;
-use 0x1::LibraTimestamp;
-use 0x1::RegisteredCurrencies;
-use 0x1::Roles;
-use 0x1::Signer;
-
- - - - - -## Resource `Libra` - -The Libra resource defines the Libra coin for each currency in -Libra. Each "coin" is coupled with a type CoinType specifying the -currency of the coin, and a value field specifying the value -of the coin (in the base units of the currency CoinType -and specified in the CurrencyInfo resource for that CoinType -published under the CoreAddresses::CURRENCY_INFO_ADDRESS() account address). - - -
resource struct Libra<CoinType>
-
- - - -
-Fields - - -
-
-value: u64 -
-
- The value of this coin in the base units for CoinType -
-
- - -
- - - -## Resource `MintCapability` - -The MintCapability resource defines a capability to allow minting -of coins of CoinType currency by the holder of this capability. -This capability is held only either by the CoreAddresses::TREASURY_COMPLIANCE_ADDRESS() -account or the 0x1::LBR module (and CoreAddresses::LIBRA_ROOT_ADDRESS() in testnet). - - -
resource struct MintCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Resource `BurnCapability` - -The BurnCapability resource defines a capability to allow coins -of CoinType currency to be burned by the holder of it. - - -
resource struct BurnCapability<CoinType>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Struct `MintEvent` - -A MintEvent is emitted every time a Libra coin is minted. This -contains the amount minted (in base units of the currency being -minted) along with the currency_code for the coin(s) being -minted, and that is defined in the currency_code field of the -CurrencyInfo resource for the currency. - - -
struct MintEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds added to the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
- - -
- - - -## Struct `BurnEvent` - -A BurnEvent is emitted every time a non-synthetic Libra coin -(i.e., a Libra coin with false is_synthetic field) is -burned. It contains the amount burned in base units for the -currency, along with the currency_code for the coins being burned -(and as defined in the CurrencyInfo resource for that currency). -It also contains the preburn_address from which the coin is -extracted for burning. - - -
struct BurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- Funds removed from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that stored the now-burned funds -
-
- - -
- - - -## Struct `PreburnEvent` - -A PreburnEvent is emitted every time an amount of funds with -a coin type currency_code are moved to a Preburn resource under -the account at the address preburn_address. - - -
struct PreburnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds waiting to be removed (burned) from the system -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address with the Preburn resource that now holds the funds -
-
- - -
- - - -## Struct `CancelBurnEvent` - -A CancelBurnEvent is emitted every time funds of amount in a Preburn -resource at preburn_address is canceled (removed from the -preburn, but not burned). The currency of the funds is given by the -currency_code as defined in the CurrencyInfo for that currency. - - -
struct CancelBurnEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of funds returned -
-
-currency_code: vector<u8> -
-
- ASCII encoded symbol for the coin type (e.g., "LBR") -
-
-preburn_address: address -
-
- Address of the Preburn resource that held the now-returned funds. -
-
- - -
- - - -## Struct `ToLBRExchangeRateUpdateEvent` - -An ToLBRExchangeRateUpdateEvent is emitted every time the to-LBR exchange -rate for the currency given by currency_code is updated. - - -
struct ToLBRExchangeRateUpdateEvent
-
- - - -
-Fields - - -
-
-currency_code: vector<u8> -
-
- The currency code of the currency whose exchange rate was updated. -
-
-new_to_lbr_exchange_rate: u64 -
-
- The new on-chain to-LBR exchange rate between the - currency_code currency and LBR. Represented in conversion - between the (on-chain) base-units for the currency and microlibra. -
-
- - -
- - - -## Resource `CurrencyInfo` - -The CurrencyInfo<CoinType> resource stores the various -pieces of information needed for a currency (CoinType) that is -registered on-chain. This resource _must_ be published under the -address given by CoreAddresses::CURRENCY_INFO_ADDRESS() in order for the registration of -CoinType as a recognized currency on-chain to be successful. At -the time of registration, the MintCapability<CoinType> and -BurnCapability<CoinType> capabilities are returned to the caller. -Unless they are specified otherwise the fields in this resource are immutable. - - -
resource struct CurrencyInfo<CoinType>
-
- - - -
-Fields - - -
-
-total_value: u128 -
-
- The total value for the currency represented by CoinType. Mutable. -
-
-preburn_value: u64 -
-
- Value of funds that are in the process of being burned. Mutable. -
-
-to_lbr_exchange_rate: FixedPoint32::FixedPoint32 -
-
- The (rough) exchange rate from CoinType to LBR. Mutable. -
-
-is_synthetic: bool -
-
- Holds whether or not this currency is synthetic (contributes to the - off-chain reserve) or not. An example of such a synthetic -currency would be the LBR. -
-
-scaling_factor: u64 -
-
- The scaling factor for the coin (i.e. the amount to divide by - to get to the human-readable representation for this currency). - e.g. 10^6 for Coin1 -
-
-fractional_part: u64 -
-
- The smallest fractional part (number of decimal places) to be - used in the human-readable representation for the currency (e.g. - 10^2 for Coin1 cents) -
-
-currency_code: vector<u8> -
-
- The code symbol for this CoinType. ASCII encoded. - e.g. for "LBR" this is x"4C4252". No character limit. -
-
-can_mint: bool -
-
- Minting of new currency of CoinType is allowed only if this field is true. - We may want to disable the ability to mint further coins of a - currency while that currency is still around. This allows us to - keep the currency in circulation while disallowing further - creation of coins in the CoinType currency. Mutable. -
-
-mint_events: Event::EventHandle<Libra::MintEvent> -
-
- Event stream for minting and where MintEvents will be emitted. -
-
-burn_events: Event::EventHandle<Libra::BurnEvent> -
-
- Event stream for burning, and where BurnEvents will be emitted. -
-
-preburn_events: Event::EventHandle<Libra::PreburnEvent> -
-
- Event stream for preburn requests, and where all - PreburnEvents for this CoinType will be emitted. -
-
-cancel_burn_events: Event::EventHandle<Libra::CancelBurnEvent> -
-
- Event stream for all cancelled preburn requests for this - CoinType. -
-
-exchange_rate_update_events: Event::EventHandle<Libra::ToLBRExchangeRateUpdateEvent> -
-
- Event stream for emiting exchange rate change events -
-
- - -
- -
-Specification - -Data structure invariant for CurrencyInfo. Asserts that CurrencyInfo.scaling_factor -is always greater than 0 and not greater than MAX_SCALING_FACTOR - - -
invariant 0 < scaling_factor && scaling_factor <= MAX_SCALING_FACTOR;
-
- - - -
- - - -## Resource `Preburn` - -A holding area where funds that will subsequently be burned wait while their underlying -assets are moved off-chain. -This resource can only be created by the holder of a BurnCapability. An account that -contains this address has the authority to initiate a burn request. A burn request can be -resolved by the holder of a BurnCapability by either (1) burning the funds, or (2) -returning the funds to the account that initiated the burn request. -Concurrent preburn requests are not allowed, only one request (in to_burn) can be handled at any time. - - -
resource struct Preburn<CoinType>
-
- - - -
-Fields - - -
-
-to_burn: Libra::Libra<CoinType> -
-
- A single pending burn amount. - There is no pending burn request if the value in to_burn is 0 -
-
- - -
- - - -## Constants - - - - -Maximum u64 value. - - -
const MAX_U64: u64 = 18446744073709551615;
-
- - - - - -Maximum u128 value. - - -
const MAX_U128: u128 = 340282366920938463463374607431768211455;
-
- - - - - -A property expected of a CurrencyInfo resource didn't hold - - -
const ECURRENCY_INFO: u64 = 1;
-
- - - - - -A withdrawal greater than the value of the coin was attempted. - - -
const EAMOUNT_EXCEEDS_COIN_VALUE: u64 = 10;
-
- - - - - -A BurnCapability resource is in an unexpected state. - - -
const EBURN_CAPABILITY: u64 = 0;
-
- - - - - -A property expected of the coin provided didn't hold - - -
const ECOIN: u64 = 7;
-
- - - - - -The destruction of a non-zero coin was attempted. Non-zero coins must be burned. - - -
const EDESTRUCTION_OF_NONZERO_COIN: u64 = 8;
-
- - - - - -The currency specified is a synthetic (non-fiat) currency - - -
const EIS_SYNTHETIC_CURRENCY: u64 = 6;
-
- - - - - -Minting is not allowed for the specified currency - - -
const EMINTING_NOT_ALLOWED: u64 = 5;
-
- - - - - -A property expected of MintCapability didn't hold - - -
const EMINT_CAPABILITY: u64 = 9;
-
- - - - - -A property expected of a Preburn resource didn't hold - - -
const EPREBURN: u64 = 2;
-
- - - - - -A burn was attempted on Preburn resource that cointained no coins - - -
const EPREBURN_EMPTY: u64 = 4;
-
- - - - - -The preburn slot is already occupied with coins to be burned. - - -
const EPREBURN_OCCUPIED: u64 = 3;
-
- - - - - -The maximum value for CurrencyInfo.scaling_factor - - -
const MAX_SCALING_FACTOR: u64 = 10000000000;
-
- - - - - -## Function `initialize` - -Initialization of the Libra module. Initializes the set of -registered currencies in the 0x1::RegisteredCurrencies on-chain -config, and publishes the CurrencyRegistrationCapability under the -CoreAddresses::LIBRA_ROOT_ADDRESS(). This can only be called from genesis. - - -
public fun initialize(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    // Operational constraint
-    CoreAddresses::assert_libra_root(lr_account);
-    RegisteredCurrencies::initialize(lr_account);
-}
-
- - - -
- -
-Specification - - - -
include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-include RegisteredCurrencies::InitializeAbortsIf;
-include RegisteredCurrencies::InitializeEnsures;
-
- - - -
- - - -## Function `publish_burn_capability` - -Publishes the BurnCapability cap for the CoinType currency under account. CoinType -must be a registered currency type. The caller must pass a treasury compliance account. - - -
public fun publish_burn_capability<CoinType>(tc_account: &signer, cap: Libra::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun publish_burn_capability<CoinType>(
-    tc_account: &signer,
-    cap: BurnCapability<CoinType>,
-) {
-    Roles::assert_treasury_compliance(tc_account);
-    assert_is_currency<CoinType>();
-    assert(
-        !exists<BurnCapability<CoinType>>(Signer::address_of(tc_account)),
-        Errors::already_published(EBURN_CAPABILITY)
-    );
-    move_to(tc_account, cap)
-}
-
- - - -
- -
-Specification - - - -
aborts_if !spec_is_currency<CoinType>();
-include PublishBurnCapAbortsIfs<CoinType>;
-
- - - - - - - -
schema PublishBurnCapAbortsIfs<CoinType> {
-    tc_account: &signer;
-}
-
- - -Must abort if tc_account does not have the TreasuryCompliance role. -Only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. - - -
schema PublishBurnCapAbortsIfs<CoinType> {
-    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-    aborts_if exists<BurnCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::ALREADY_PUBLISHED;
-}
-
- - - - - - - -
schema PublishBurnCapEnsures<CoinType> {
-    tc_account: &signer;
-    ensures exists<BurnCapability<CoinType>>(Signer::spec_address_of(tc_account));
-}
-
- - - -
- - - -## Function `mint` - -Mints amount of currency. The account must hold a -MintCapability<CoinType> at the top-level in order for this call -to be successful. - - -
public fun mint<CoinType>(account: &signer, value: u64): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint<CoinType>(account: &signer, value: u64): Libra<CoinType>
-acquires CurrencyInfo, MintCapability {
-    let addr = Signer::address_of(account);
-    assert(exists<MintCapability<CoinType>>(addr), Errors::requires_capability(EMINT_CAPABILITY));
-    mint_with_capability(
-        value,
-        borrow_global<MintCapability<CoinType>>(addr)
-    )
-}
-
- - - -
- -
-Specification - - - -
modifies global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-
- - -Must abort if the account does not have the MintCapability [[H1]][PERMISSION]. - - -
aborts_if !exists<MintCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
-include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - -
- - - -## Function `burn` - -Burns the coins currently held in the Preburn resource held under preburn_address. -Calls to this functions will fail if the account does not have a -published BurnCapability for the CoinType published under it. - - -
public fun burn<CoinType>(account: &signer, preburn_address: address)
-
- - - -
-Implementation - - -
public fun burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-) acquires BurnCapability, CurrencyInfo, Preburn {
-    let addr = Signer::address_of(account);
-    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
-    burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(addr)
-    )
-}
-
- - - -
- -
-Specification - - - -
include BurnAbortsIf<CoinType>;
-include BurnEnsures<CoinType>;
-
- - - - - - - -
schema BurnAbortsIf<CoinType> {
-    account: signer;
-    preburn_address: address;
-}
-
- - -Must abort if the account does not have the BurnCapability [[H3]][PERMISSION]. - - -
schema BurnAbortsIf<CoinType> {
-    aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
-    include AbortsIfNoPreburn<CoinType>;
-    include BurnWithResourceCapAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-}
-
- - - - - - - -
schema BurnEnsures<CoinType> {
-    account: signer;
-    preburn_address: address;
-    include BurnWithResourceCapEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-}
-
- - - - - - - -
schema AbortsIfNoPreburn<CoinType> {
-    preburn_address: address;
-    aborts_if !exists<Preburn<CoinType>>(preburn_address) with Errors::NOT_PUBLISHED;
-}
-
- - - -
- - - -## Function `cancel_burn` - -Cancels the current burn request in the Preburn resource held -under the preburn_address, and returns the coins. -Calls to this will fail if the sender does not have a published -BurnCapability<CoinType>, or if there is no preburn request -outstanding in the Preburn resource under preburn_address. - - -
public fun cancel_burn<CoinType>(account: &signer, preburn_address: address): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn<CoinType>(
-    account: &signer,
-    preburn_address: address
-): Libra<CoinType> acquires BurnCapability, CurrencyInfo, Preburn {
-    let addr = Signer::address_of(account);
-    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
-    cancel_burn_with_capability(
-        preburn_address,
-        borrow_global<BurnCapability<CoinType>>(addr)
-    )
-}
-
- - - -
- -
-Specification - - -Must abort if the account does not have the BurnCapability [[H3]][PERMISSION]. - - -
aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
-include CancelBurnWithCapAbortsIf<CoinType>;
-include CancelBurnWithCapEnsures<CoinType>;
-
- - - -
- - - -## Function `mint_with_capability` - -Mint a new Libra coin of CoinType currency worth value. The -caller must have a reference to a MintCapability<CoinType>. Only -the treasury compliance account or the 0x1::LBR module can acquire such a -reference. - - -
public fun mint_with_capability<CoinType>(value: u64, _capability: &Libra::MintCapability<CoinType>): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun mint_with_capability<CoinType>(
-    value: u64,
-    _capability: &MintCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    let currency_code = currency_code<CoinType>();
-    // update market cap resource to reflect minting
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(info.can_mint, Errors::invalid_state(EMINTING_NOT_ALLOWED));
-    assert(MAX_U128 - info.total_value >= (value as u128), Errors::limit_exceeded(ECURRENCY_INFO));
-    info.total_value = info.total_value + (value as u128);
-    // don't emit mint events for synthetic currenices as this does not
-    // change the total value of fiat currencies held on-chain.
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.mint_events,
-            MintEvent{
-                amount: value,
-                currency_code,
-            }
-        );
-    };
-
-    Libra<CoinType> { value }
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-
-let currency_info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-include MintAbortsIf<CoinType>;
-include MintEnsures<CoinType>;
-
- - - - - - - -
schema MintAbortsIf<CoinType> {
-    value: u64;
-    include AbortsIfNoCurrency<CoinType>;
-    aborts_if !spec_currency_info<CoinType>().can_mint with Errors::INVALID_STATE;
-    aborts_if spec_currency_info<CoinType>().total_value + value > max_u128() with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema MintEnsures<CoinType> {
-    value: u64;
-    result: Libra<CoinType>;
-    
-    let currency_info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    ensures exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    ensures currency_info
-        == update_field(old(currency_info), total_value, old(currency_info.total_value) + value);
-    ensures result.value == value;
-}
-
- - - -
- - - -## Function `preburn_with_resource` - -Add the coin to the preburn.to_burn field in the Preburn resource -held at the address preburn_address if it is empty, otherwise raise -a PendingPreburn Error (code 6). Emits a PreburnEvent to -the preburn_events event stream in the CurrencyInfo for the -CoinType passed in. However, if the currency being preburned has true -is_synthetic then no PreburnEvent event will be emitted. - - -
public fun preburn_with_resource<CoinType>(coin: Libra::Libra<CoinType>, preburn: &mut Libra::Preburn<CoinType>, preburn_address: address)
-
- - - -
-Implementation - - -
public fun preburn_with_resource<CoinType>(
-    coin: Libra<CoinType>,
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-) acquires CurrencyInfo {
-    let coin_value = value(&coin);
-    // Throw if already occupied
-    assert(value(&preburn.to_burn) == 0, Errors::invalid_state(EPREBURN_OCCUPIED));
-    deposit(&mut preburn.to_burn, coin);
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(MAX_U64 - info.preburn_value >= coin_value, Errors::limit_exceeded(ECOIN));
-    info.preburn_value = info.preburn_value + coin_value;
-    // don't emit preburn events for synthetic currenices as this does not
-    // change the total value of fiat currencies held on-chain, and
-    // therefore no off-chain movement of the backing coins needs to be
-    // performed.
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.preburn_events,
-            PreburnEvent{
-                amount: coin_value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- -
-Specification - - - -
include PreburnWithResourceAbortsIf<CoinType>{amount: coin.value};
-include PreburnEnsures<CoinType>{amount: coin.value};
-
- - - - - - - -
schema PreburnWithResourceAbortsIf<CoinType> {
-    amount: u64;
-    preburn: Preburn<CoinType>;
-    aborts_if preburn.to_burn.value != 0 with Errors::INVALID_STATE;
-    include PreburnAbortsIf<CoinType>;
-}
-
- - - - - - - -
schema PreburnAbortsIf<CoinType> {
-    amount: u64;
-    include AbortsIfNoCurrency<CoinType>;
-    aborts_if spec_currency_info<CoinType>().preburn_value + amount > MAX_U64 with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema PreburnEnsures<CoinType> {
-    amount: u64;
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().preburn_value
-                == old(spec_currency_info<CoinType>().preburn_value) + amount;
-}
-
- - - -
- - - -## Function `create_preburn` - -Create a Preburn<CoinType> resource - - -
public fun create_preburn<CoinType>(tc_account: &signer): Libra::Preburn<CoinType>
-
- - - -
-Implementation - - -
public fun create_preburn<CoinType>(
-    tc_account: &signer
-): Preburn<CoinType> {
-    Roles::assert_treasury_compliance(tc_account);
-    assert_is_currency<CoinType>();
-    Preburn<CoinType> { to_burn: zero<CoinType>() }
-}
-
- - - -
- -
-Specification - - - -
include CreatePreburnAbortsIf<CoinType>;
-
- - - - - - - -
schema CreatePreburnAbortsIf<CoinType> {
-    tc_account: signer;
-    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-    include AbortsIfNoCurrency<CoinType>;
-}
-
- - - -
- - - -## Function `publish_preburn_to_account` - -Publishes a Preburn resource under account. This function is -used for bootstrapping the designated dealer at account-creation -time, and the association TC account creator (at CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()) is creating -this resource for the designated dealer. - - -
public fun publish_preburn_to_account<CoinType>(account: &signer, tc_account: &signer)
-
- - - -
-Implementation - - -
public fun publish_preburn_to_account<CoinType>(
-    account: &signer,
-    tc_account: &signer
-) acquires CurrencyInfo {
-    Roles::assert_designated_dealer(account);
-    Roles::assert_treasury_compliance(tc_account);
-    assert(!is_synthetic_currency<CoinType>(), Errors::invalid_argument(EIS_SYNTHETIC_CURRENCY));
-    assert(!exists<Preburn<CoinType>>(Signer::address_of(account)), Errors::already_published(EPREBURN));
-    move_to(account, create_preburn<CoinType>(tc_account))
-}
-
- - - -
- -
-Specification - - - -
modifies global<Preburn<CoinType>>(Signer::spec_address_of(account));
-
- - -The premission "PreburnCurrency" is granted to DesignatedDealer [[H4]][PERMISSION]. -Must abort if the account does not have the DesignatedDealer role. - - -
include Roles::AbortsIfNotDesignatedDealer;
-
- - -Preburn is published under the DesignatedDealer account. - - -
ensures exists<Preburn<CoinType>>(Signer::spec_address_of(account));
-include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-include AbortsIfNoCurrency<CoinType>;
-aborts_if is_synthetic_currency<CoinType>() with Errors::INVALID_ARGUMENT;
-aborts_if exists<Preburn<CoinType>>(Signer::spec_address_of(account)) with Errors::ALREADY_PUBLISHED;
-
- - - -
- - - -## Function `preburn_to` - -Sends coin to the preburn queue for account, where it will wait to either be burned -or returned to the balance of account. -Calls to this function will fail if account does not have a -Preburn<CoinType> resource published under it. - - -
public fun preburn_to<CoinType>(account: &signer, coin: Libra::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun preburn_to<CoinType>(
-    account: &signer,
-    coin: Libra<CoinType>
-) acquires CurrencyInfo, Preburn {
-    Roles::assert_designated_dealer(account);
-    let sender = Signer::address_of(account);
-    assert(exists<Preburn<CoinType>>(sender), Errors::not_published(EPREBURN));
-    preburn_with_resource(coin, borrow_global_mut<Preburn<CoinType>>(sender), sender);
-}
-
- - - -
- -
-Specification - - - - - - -
let preburn = global<Preburn<CoinType>>(Signer::spec_address_of(account));
-include PreburnToAbortsIf<CoinType>{amount: coin.value};
-include PreburnEnsures<CoinType>{preburn: preburn, amount: coin.value};
-
- - - - - - - -
schema PreburnToAbortsIf<CoinType> {
-    account: signer;
-    amount: u64;
-    
-    let account_addr = Signer::spec_address_of(account);
-    
-    let preburn = global<Preburn<CoinType>>(account_addr);
-}
-
- - -Must abort if the account does have the Preburn resource [[H4]][PERMISSION]. - - -
schema PreburnToAbortsIf<CoinType> {
-    include Roles::AbortsIfNotDesignatedDealer;
-    include AbortsIfNoPreburn<CoinType>{preburn_address: account_addr};
-    include PreburnWithResourceAbortsIf<CoinType>{preburn: preburn};
-}
-
- - - -
- - - -## Function `burn_with_capability` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn.to_burn area for -CoinType is empty. - - -
public fun burn_with_capability<CoinType>(preburn_address: address, capability: &Libra::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_with_capability<CoinType>(
-    preburn_address: address,
-    capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn to_burn area
-    assert(exists<Preburn<CoinType>>(preburn_address), Errors::not_published(EPREBURN));
-    burn_with_resource_cap(
-        borrow_global_mut<Preburn<CoinType>>(preburn_address),
-        preburn_address,
-        capability
-    )
-}
-
- - - -
- -
-Specification - - - -
include AbortsIfNoPreburn<CoinType>;
-include BurnWithResourceCapAbortsIf<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-include BurnWithResourceCapEnsures<CoinType>{preburn: global<Preburn<CoinType>>(preburn_address)};
-
- - - -
- - - -## Function `burn_with_resource_cap` - -Permanently removes the coins held in the Preburn resource (in to_burn field) -stored at preburn_address and updates the market cap accordingly. -This function can only be called by the holder of a BurnCapability<CoinType>. -Calls to this function will fail if the there is no Preburn<CoinType> -resource under preburn_address, or, if the preburn to_burn area for -CoinType is empty (error code 7). - - -
fun burn_with_resource_cap<CoinType>(preburn: &mut Libra::Preburn<CoinType>, preburn_address: address, _capability: &Libra::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
fun burn_with_resource_cap<CoinType>(
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo {
-    let currency_code = currency_code<CoinType>();
-    // Abort if no coin present in preburn area
-    assert(preburn.to_burn.value > 0, Errors::invalid_state(EPREBURN_EMPTY));
-    // destroy the coin in Preburn area
-    let Libra { value } = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    assert_is_currency<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    assert(info.total_value >= (value as u128), Errors::limit_exceeded(ECURRENCY_INFO));
-    info.total_value = info.total_value - (value as u128);
-    assert(info.preburn_value >= value, Errors::limit_exceeded(EPREBURN));
-    info.preburn_value = info.preburn_value - value;
-    // don't emit burn events for synthetic currenices as this does not
-    // change the total value of fiat currencies held on-chain.
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.burn_events,
-            BurnEvent {
-                amount: value,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-}
-
- - - -
- -
-Specification - - - -
include BurnWithResourceCapAbortsIf<CoinType>;
-include BurnWithResourceCapEnsures<CoinType>;
-
- - - - - - - -
schema BurnWithResourceCapAbortsIf<CoinType> {
-    preburn: Preburn<CoinType>;
-    include AbortsIfNoCurrency<CoinType>;
-    
-    let to_burn = preburn.to_burn.value;
-    
-    let info = spec_currency_info<CoinType>();
-    aborts_if to_burn == 0 with Errors::INVALID_STATE;
-    aborts_if info.total_value < to_burn with Errors::LIMIT_EXCEEDED;
-    aborts_if info.preburn_value < to_burn with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema BurnWithResourceCapEnsures<CoinType> {
-    preburn: Preburn<CoinType>;
-    ensures spec_currency_info<CoinType>().total_value
-            == old(spec_currency_info<CoinType>().total_value) - old(preburn.to_burn.value);
-    ensures spec_currency_info<CoinType>().preburn_value
-            == old(spec_currency_info<CoinType>().preburn_value) - old(preburn.to_burn.value);
-}
-
- - - -
- - - -## Function `cancel_burn_with_capability` - -Cancels the burn request in the Preburn resource stored at preburn_address and -return the coins to the caller. -This function can only be called by the holder of a -BurnCapability<CoinType>, and will fail if the Preburn<CoinType> resource -at preburn_address does not contain a pending burn request. - - -
public fun cancel_burn_with_capability<CoinType>(preburn_address: address, _capability: &Libra::BurnCapability<CoinType>): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun cancel_burn_with_capability<CoinType>(
-    preburn_address: address,
-    _capability: &BurnCapability<CoinType>
-): Libra<CoinType> acquires CurrencyInfo, Preburn {
-    // destroy the coin in the preburn area
-    assert(exists<Preburn<CoinType>>(preburn_address), Errors::not_published(EPREBURN));
-    let preburn = borrow_global_mut<Preburn<CoinType>>(preburn_address);
-    let coin = withdraw_all<CoinType>(&mut preburn.to_burn);
-    // update the market cap
-    let currency_code = currency_code<CoinType>();
-    let info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    let amount = value(&coin);
-    assert(info.preburn_value >= amount, Errors::limit_exceeded(EPREBURN));
-    info.preburn_value = info.preburn_value - amount;
-    // Don't emit cancel burn events for synthetic currencies. cancel_burn
-    // shouldn't be be used for synthetic coins in the first place.
-    if (!info.is_synthetic) {
-        Event::emit_event(
-            &mut info.cancel_burn_events,
-            CancelBurnEvent {
-                amount,
-                currency_code,
-                preburn_address,
-            }
-        );
-    };
-
-    coin
-}
-
- - - -
- -
-Specification - - - -
include CancelBurnWithCapAbortsIf<CoinType>;
-include CancelBurnWithCapEnsures<CoinType>;
-
- - - - - - - -
schema CancelBurnWithCapAbortsIf<CoinType> {
-    preburn_address: address;
-    
-    let info = global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    
-    let amount = global<Preburn<CoinType>>(preburn_address).to_burn.value;
-    aborts_if !exists<Preburn<CoinType>>(preburn_address) with Errors::NOT_PUBLISHED;
-    include AbortsIfNoCurrency<CoinType>;
-    aborts_if info.preburn_value < amount with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema CancelBurnWithCapEnsures<CoinType> {
-    preburn_address: address;
-    
-    let preburn_value = global<Preburn<CoinType>>(preburn_address).to_burn.value;
-    
-    let total_preburn_value =
-        global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value;
-    ensures preburn_value == 0;
-    ensures total_preburn_value == old(total_preburn_value) - old(preburn_value);
-}
-
- - - -
- - - -## Function `burn_now` - -A shortcut for immediately burning a coin. This calls preburn followed by a subsequent burn, and is -used for administrative burns, like unpacking an LBR coin or charging fees. - - -
public fun burn_now<CoinType>(coin: Libra::Libra<CoinType>, preburn: &mut Libra::Preburn<CoinType>, preburn_address: address, capability: &Libra::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun burn_now<CoinType>(
-    coin: Libra<CoinType>,
-    preburn: &mut Preburn<CoinType>,
-    preburn_address: address,
-    capability: &BurnCapability<CoinType>
-) acquires CurrencyInfo {
-    assert(coin.value > 0, Errors::invalid_argument(ECOIN));
-    preburn_with_resource(coin, preburn, preburn_address);
-    burn_with_resource_cap(preburn, preburn_address, capability);
-}
-
- - - -
- -
-Specification - - - -
include BurnNowAbortsIf<CoinType>;
-ensures preburn.to_burn.value == 0;
-
-let info = spec_currency_info<CoinType>();
-ensures info.total_value == old(info.total_value) - coin.value;
-
- - - - - - - -
schema BurnNowAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    preburn: Preburn<CoinType>;
-    aborts_if coin.value == 0 with Errors::INVALID_ARGUMENT;
-    include PreburnWithResourceAbortsIf<CoinType>{amount: coin.value};
-    
-    let info = spec_currency_info<CoinType>();
-    aborts_if info.total_value < coin.value with Errors::LIMIT_EXCEEDED;
-}
-
- - - -
- - - -## Function `remove_burn_capability` - -Removes and returns the BurnCapability<CoinType> from account. -Calls to this function will fail if account does not have a -published BurnCapability<CoinType> resource at the top-level. - - -
public fun remove_burn_capability<CoinType>(account: &signer): Libra::BurnCapability<CoinType>
-
- - - -
-Implementation - - -
public fun remove_burn_capability<CoinType>(account: &signer): BurnCapability<CoinType>
-acquires BurnCapability {
-    let addr = Signer::address_of(account);
-    assert(exists<BurnCapability<CoinType>>(addr), Errors::requires_capability(EBURN_CAPABILITY));
-    move_from<BurnCapability<CoinType>>(addr)
-}
-
- - - -
- -
-Specification - - - -
include AbortsIfNoBurnCapability<CoinType>;
-
- - - - - - - -
schema AbortsIfNoBurnCapability<CoinType> {
-    account: signer;
-    aborts_if !exists<BurnCapability<CoinType>>(Signer::spec_address_of(account)) with Errors::REQUIRES_CAPABILITY;
-}
-
- - - -
- - - -## Function `preburn_value` - -Returns the total value of Libra<CoinType> that is waiting to be -burned throughout the system (i.e. the sum of all outstanding -preburn requests across all preburn resources for the CoinType -currency). - - -
public fun preburn_value<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun preburn_value<CoinType>(): u64 acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value
-}
-
- - - -
- - - -## Function `zero` - -Create a new Libra<CoinType> with a value of 0. Anyone can call -this and it will be successful as long as CoinType is a registered currency. - - -
public fun zero<CoinType>(): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun zero<CoinType>(): Libra<CoinType> {
-    assert_is_currency<CoinType>();
-    Libra<CoinType> { value: 0 }
-}
-
- - - -
- - - -## Function `value` - -Returns the value of the passed in coin. The value is -represented in the base units for the currency represented by -CoinType. - - -
public fun value<CoinType>(coin: &Libra::Libra<CoinType>): u64
-
- - - -
-Implementation - - -
public fun value<CoinType>(coin: &Libra<CoinType>): u64 {
-    coin.value
-}
-
- - - -
- - - -## Function `split` - -Removes amount of value from the passed in coin. Returns the -remaining balance of the passed in coin, along with another coin -with value equal to amount. Calls will fail if amount > Libra::value(&coin). - - -
public fun split<CoinType>(coin: Libra::Libra<CoinType>, amount: u64): (Libra::Libra<CoinType>, Libra::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun split<CoinType>(coin: Libra<CoinType>, amount: u64): (Libra<CoinType>, Libra<CoinType>) {
-    let other = withdraw(&mut coin, amount);
-    (coin, other)
-}
-
- - - -
- -
-Specification - - - -
aborts_if coin.value < amount with Errors::LIMIT_EXCEEDED;
-ensures result_1.value == coin.value - amount;
-ensures result_2.value == amount;
-
- - - -
- - - -## Function `withdraw` - -Withdraw amount from the passed-in coin, where the original coin is modified in place. -After this function is executed, the original coin will have -value = original_value - amount, and the new coin will have a value = amount. -Calls will abort if the passed-in amount is greater than the -value of the passed-in coin. - - -
public fun withdraw<CoinType>(coin: &mut Libra::Libra<CoinType>, amount: u64): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw<CoinType>(coin: &mut Libra<CoinType>, amount: u64): Libra<CoinType> {
-    // Check that `amount` is less than the coin's value
-    assert(coin.value >= amount, Errors::limit_exceeded(EAMOUNT_EXCEEDS_COIN_VALUE));
-    coin.value = coin.value - amount;
-    Libra { value: amount }
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include WithdrawAbortsIf<CoinType>;
-ensures coin.value == old(coin.value) - amount;
-ensures result.value == amount;
-
- - - - - - - -
schema WithdrawAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    amount: u64;
-    aborts_if coin.value < amount with Errors::LIMIT_EXCEEDED;
-}
-
- - - -
- - - -## Function `withdraw_all` - -Return a Libra<CoinType> worth coin.value and reduces the value of the input coin to -zero. Does not abort. - - -
public fun withdraw_all<CoinType>(coin: &mut Libra::Libra<CoinType>): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun withdraw_all<CoinType>(coin: &mut Libra<CoinType>): Libra<CoinType> {
-    let val = coin.value;
-    withdraw(coin, val)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if false;
-ensures result.value == old(coin.value);
-ensures coin.value == 0;
-
- - - -
- - - -## Function `join` - -Takes two coins as input, returns a single coin with the total value of both coins. -Destroys on of the input coins. - - -
public fun join<CoinType>(coin1: Libra::Libra<CoinType>, coin2: Libra::Libra<CoinType>): Libra::Libra<CoinType>
-
- - - -
-Implementation - - -
public fun join<CoinType>(coin1: Libra<CoinType>, coin2: Libra<CoinType>): Libra<CoinType>  {
-    deposit(&mut coin1, coin2);
-    coin1
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if coin1.value + coin2.value > max_u64() with Errors::LIMIT_EXCEEDED;
-ensures result.value == coin1.value + coin2.value;
-
- - - -
- - - -## Function `deposit` - -"Merges" the two coins. -The coin passed in by reference will have a value equal to the sum of the two coins -The check coin is consumed in the process - - -
public fun deposit<CoinType>(coin: &mut Libra::Libra<CoinType>, check: Libra::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun deposit<CoinType>(coin: &mut Libra<CoinType>, check: Libra<CoinType>) {
-    let Libra { value } = check;
-    assert(MAX_U64 - coin.value >= value, Errors::limit_exceeded(ECOIN));
-    coin.value = coin.value + value;
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include DepositAbortsIf<CoinType>;
-ensures coin.value == old(coin.value) + check.value;
-
- - - - - - - -
schema DepositAbortsIf<CoinType> {
-    coin: Libra<CoinType>;
-    check: Libra<CoinType>;
-    aborts_if coin.value + check.value > MAX_U64 with Errors::LIMIT_EXCEEDED;
-}
-
- - - -
- - - -## Function `destroy_zero` - -Destroy a zero-value coin. Calls will fail if the value in the passed-in coin is non-zero -so it is impossible to "burn" any non-zero amount of Libra without having -a BurnCapability for the specific CoinType. - - -
public fun destroy_zero<CoinType>(coin: Libra::Libra<CoinType>)
-
- - - -
-Implementation - - -
public fun destroy_zero<CoinType>(coin: Libra<CoinType>) {
-    let Libra { value } = coin;
-    assert(value == 0, Errors::invalid_argument(EDESTRUCTION_OF_NONZERO_COIN))
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if coin.value > 0 with Errors::INVALID_ARGUMENT;
-
- - - -
- - - -## Function `register_currency` - -Register the type CoinType as a currency. Until the type is -registered as a currency it cannot be used as a coin/currency unit in Libra. -The passed-in lr_account must be a specific address (CoreAddresses::CURRENCY_INFO_ADDRESS()) and -lr_account must also have the correct LibraRoot account role. -After the first registration of CoinType as a -currency, additional attempts to register CoinType as a currency -will abort. -When the CoinType is registered it publishes the -CurrencyInfo<CoinType> resource under the CoreAddresses::CURRENCY_INFO_ADDRESS() and -adds the currency to the set of RegisteredCurrencies. It returns -MintCapability<CoinType> and BurnCapability<CoinType> resources. - - -
public fun register_currency<CoinType>(lr_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>): (Libra::MintCapability<CoinType>, Libra::BurnCapability<CoinType>)
-
- - - -
-Implementation - - -
public fun register_currency<CoinType>(
-    lr_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    is_synthetic: bool,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-): (MintCapability<CoinType>, BurnCapability<CoinType>)
-{
-    Roles::assert_libra_root(lr_account);
-    // Operational constraint that it must be stored under a specific address.
-    CoreAddresses::assert_currency_info(lr_account);
-    assert(
-        !exists<CurrencyInfo<CoinType>>(Signer::address_of(lr_account)),
-        Errors::already_published(ECURRENCY_INFO)
-    );
-    assert(0 < scaling_factor && scaling_factor <= MAX_SCALING_FACTOR, Errors::invalid_argument(ECURRENCY_INFO));
-    move_to(lr_account, CurrencyInfo<CoinType> {
-        total_value: 0,
-        preburn_value: 0,
-        to_lbr_exchange_rate,
-        is_synthetic,
-        scaling_factor,
-        fractional_part,
-        currency_code: copy currency_code,
-        can_mint: true,
-        mint_events: Event::new_event_handle<MintEvent>(lr_account),
-        burn_events: Event::new_event_handle<BurnEvent>(lr_account),
-        preburn_events: Event::new_event_handle<PreburnEvent>(lr_account),
-        cancel_burn_events: Event::new_event_handle<CancelBurnEvent>(lr_account),
-        exchange_rate_update_events: Event::new_event_handle<ToLBRExchangeRateUpdateEvent>(lr_account)
-    });
-    RegisteredCurrencies::add_currency_code(
-        lr_account,
-        currency_code,
-    );
-    (MintCapability<CoinType>{}, BurnCapability<CoinType>{})
-}
-
- - - -
- -
-Specification - - - -
include RegisterCurrencyAbortsIf<CoinType>;
-include RegisterCurrencyEnsures<CoinType>;
-
- - - - - - - -
schema RegisterCurrencyAbortsIf<CoinType> {
-    lr_account: signer;
-    currency_code: vector<u8>;
-    scaling_factor: u64;
-}
-
- - -Must abort if the signer does not have the LibraRoot role [[H8]][PERMISSION]. - - -
schema RegisterCurrencyAbortsIf<CoinType> {
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    aborts_if scaling_factor == 0 || scaling_factor > MAX_SCALING_FACTOR with Errors::INVALID_ARGUMENT;
-    include CoreAddresses::AbortsIfNotCurrencyInfo{account: lr_account};
-    aborts_if exists<CurrencyInfo<CoinType>>(Signer::spec_address_of(lr_account))
-        with Errors::ALREADY_PUBLISHED;
-    include RegisteredCurrencies::AddCurrencyCodeAbortsIf;
-}
-
- - - - - - - -
schema RegisterCurrencyEnsures<CoinType> {
-    ensures spec_is_currency<CoinType>();
-    ensures spec_currency_info<CoinType>().total_value == 0;
-}
-
- - - -
- - - -## Function `register_SCS_currency` - -Registers a stable currency (SCS) coin -- i.e., a non-synthetic currency. -Resources are published on two distinct -accounts: The CoinInfo is published on the Libra root account, and the mint and -burn capabilities are published on a treasury compliance account. -This code allows different currencies to have different treasury compliance -accounts. - - -
public fun register_SCS_currency<CoinType>(lr_account: &signer, tc_account: &signer, to_lbr_exchange_rate: FixedPoint32::FixedPoint32, scaling_factor: u64, fractional_part: u64, currency_code: vector<u8>)
-
- - - -
-Implementation - - -
public fun register_SCS_currency<CoinType>(
-    lr_account: &signer,
-    tc_account: &signer,
-    to_lbr_exchange_rate: FixedPoint32,
-    scaling_factor: u64,
-    fractional_part: u64,
-    currency_code: vector<u8>,
-) {
-    Roles::assert_treasury_compliance(tc_account);
-    let (mint_cap, burn_cap) =
-        register_currency<CoinType>(
-            lr_account,
-            to_lbr_exchange_rate,
-            false,   // is_synthetic
-            scaling_factor,
-            fractional_part,
-            currency_code,
-        );
-    assert(
-        !exists<MintCapability<CoinType>>(Signer::address_of(tc_account)),
-        Errors::already_published(EMINT_CAPABILITY)
-    );
-    move_to(tc_account, mint_cap);
-    publish_burn_capability<CoinType>(tc_account, burn_cap);
-}
-
- - - -
- -
-Specification - - - -
include RegisterSCSCurrencyAbortsIf<CoinType>;
-include RegisterSCSCurrencyEnsures<CoinType>;
-
- - - - - - - -
schema RegisterSCSCurrencyAbortsIf<CoinType> {
-    tc_account: signer;
-    lr_account: signer;
-    currency_code: vector<u8>;
-    scaling_factor: u64;
-}
-
- - -Must abort if tc_account does not have the TreasuryCompliance role. -Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. -Only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. - - -
schema RegisterSCSCurrencyAbortsIf<CoinType> {
-    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-    aborts_if exists<MintCapability<CoinType>>(Signer::spec_address_of(tc_account)) with Errors::ALREADY_PUBLISHED;
-    include RegisterCurrencyAbortsIf<CoinType>;
-    include PublishBurnCapAbortsIfs<CoinType>;
-}
-
- - - - - - - -
schema RegisterSCSCurrencyEnsures<CoinType> {
-    tc_account: signer;
-    ensures spec_has_mint_capability<CoinType>(Signer::spec_address_of(tc_account));
-}
-
- - - -
- - - -## Function `market_cap` - -Returns the total amount of currency minted of type CoinType. - - -
public fun market_cap<CoinType>(): u128
-
- - - -
-Implementation - - -
public fun market_cap<CoinType>(): u128
-acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
-}
-
- - - -
- - - -## Function `approx_lbr_for_value` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a _rough_ approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_value<FromCoinType>(from_value: u64): u64
-acquires CurrencyInfo {
-    let lbr_exchange_rate = lbr_exchange_rate<FromCoinType>();
-    FixedPoint32::multiply_u64(from_value, lbr_exchange_rate)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include ApproxLbrForValueAbortsIf<FromCoinType>;
-ensures result == spec_approx_lbr_for_value<FromCoinType>(from_value);
-
- - - - - - - -
schema ApproxLbrForValueAbortsIf<CoinType> {
-    from_value: num;
-    include AbortsIfNoCurrency<CoinType>;
-    
-    let lbr_exchange_rate = spec_lbr_exchange_rate<CoinType>();
-    include FixedPoint32::MultiplyAbortsIf{val: from_value, multiplier: lbr_exchange_rate};
-}
-
- - - -
- - - -## Function `approx_lbr_for_coin` - -Returns the value of the coin in the FromCoinType currency in LBR. -This should only be used where a rough approximation of the exchange -rate is needed. - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &Libra::Libra<FromCoinType>): u64
-
- - - -
-Implementation - - -
public fun approx_lbr_for_coin<FromCoinType>(coin: &Libra<FromCoinType>): u64
-acquires CurrencyInfo {
-    let from_value = value(coin);
-    approx_lbr_for_value<FromCoinType>(from_value)
-}
-
- - - -
- - - -## Function `is_currency` - -Returns true if the type CoinType is a registered currency. -Returns false otherwise. - - -
public fun is_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - - -
- - - -## Function `is_SCS_currency` - - - -
public fun is_SCS_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_SCS_currency<CoinType>(): bool acquires CurrencyInfo {
-    is_currency<CoinType>() &&
-    !borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).is_synthetic
-}
-
- - - -
- - - -## Function `is_synthetic_currency` - -Returns true if CoinType is a synthetic currency as defined in -its CurrencyInfo. Returns false otherwise. - - -
public fun is_synthetic_currency<CoinType>(): bool
-
- - - -
-Implementation - - -
public fun is_synthetic_currency<CoinType>(): bool
-acquires CurrencyInfo {
-    let addr = CoreAddresses::CURRENCY_INFO_ADDRESS();
-    exists<CurrencyInfo<CoinType>>(addr) &&
-        borrow_global<CurrencyInfo<CoinType>>(addr).is_synthetic
-}
-
- - - -
- - - -## Function `scaling_factor` - -Returns the scaling factor for the CoinType currency as defined -in its CurrencyInfo. - - -
public fun scaling_factor<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun scaling_factor<CoinType>(): u64
-acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
-}
-
- - - -
- - - -## Function `fractional_part` - -Returns the representable (i.e. real-world) fractional part for the -CoinType currency as defined in its CurrencyInfo. - - -
public fun fractional_part<CoinType>(): u64
-
- - - -
-Implementation - - -
public fun fractional_part<CoinType>(): u64
-acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).fractional_part
-}
-
- - - -
- - - -## Function `currency_code` - -Returns the currency code for the registered currency as defined in -its CurrencyInfo resource. - - -
public fun currency_code<CoinType>(): vector<u8>
-
- - - -
-Implementation - - -
public fun currency_code<CoinType>(): vector<u8>
-acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).currency_code
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include AbortsIfNoCurrency<CoinType>;
-ensures result == spec_currency_info<CoinType>().currency_code;
-
- - - -
- - - -## Function `update_lbr_exchange_rate` - -Updates the to_lbr_exchange_rate held in the CurrencyInfo for -FromCoinType to the new passed-in lbr_exchange_rate. - - -
public fun update_lbr_exchange_rate<FromCoinType>(tc_account: &signer, lbr_exchange_rate: FixedPoint32::FixedPoint32)
-
- - - -
-Implementation - - -
public fun update_lbr_exchange_rate<FromCoinType>(
-    tc_account: &signer,
-    lbr_exchange_rate: FixedPoint32
-) acquires CurrencyInfo {
-    Roles::assert_treasury_compliance(tc_account);
-    assert_is_currency<FromCoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<FromCoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.to_lbr_exchange_rate = lbr_exchange_rate;
-    Event::emit_event(
-        &mut currency_info.exchange_rate_update_events,
-        ToLBRExchangeRateUpdateEvent {
-            currency_code: *¤cy_info.currency_code,
-            new_to_lbr_exchange_rate: FixedPoint32::get_raw_value(*¤cy_info.to_lbr_exchange_rate),
-        }
-    );
-}
-
- - - -
- -
-Specification - - - -
include UpdateLBRExchangeRateAbortsIf<FromCoinType>;
-include UpdateLBRExchangeRateEnsures<FromCoinType>;
-
- - - - - - - -
schema UpdateLBRExchangeRateAbortsIf<FromCoinType> {
-    tc_account: signer;
-}
-
- - -Must abort if the account does not have the TreasuryCompliance Role [[H5]][PERMISSION]. - - -
schema UpdateLBRExchangeRateAbortsIf<FromCoinType> {
-    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-    include AbortsIfNoCurrency<FromCoinType>;
-}
-
- - - - - - - -
schema UpdateLBRExchangeRateEnsures<FromCoinType> {
-    lbr_exchange_rate: FixedPoint32;
-    ensures spec_currency_info<FromCoinType>().to_lbr_exchange_rate == lbr_exchange_rate;
-}
-
- - - -
- - - -## Function `lbr_exchange_rate` - -Returns the (rough) exchange rate between CoinType and LBR - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32::FixedPoint32
-
- - - -
-Implementation - - -
public fun lbr_exchange_rate<CoinType>(): FixedPoint32
-acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    *&borrow_global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-}
-
- - - -
- - - -## Function `update_minting_ability` - -There may be situations in which we disallow the further minting of -coins in the system without removing the currency. This function -allows the association treasury compliance account to control whether or not further coins of -CoinType can be minted or not. If this is called with can_mint = true, -then minting is allowed, if can_mint = false then minting is -disallowed until it is turned back on via this function. All coins -start out in the default state of can_mint = true. - - -
public fun update_minting_ability<CoinType>(tc_account: &signer, can_mint: bool)
-
- - - -
-Implementation - - -
public fun update_minting_ability<CoinType>(
-    tc_account: &signer,
-    can_mint: bool,
-    )
-acquires CurrencyInfo {
-    Roles::assert_treasury_compliance(tc_account);
-    assert_is_currency<CoinType>();
-    let currency_info = borrow_global_mut<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-    currency_info.can_mint = can_mint;
-}
-
- - - -
- -
-Specification - - - -
include UpdateMintingAbilityAbortsIf<CoinType>;
-include UpdateMintingAbilityEnsures<CoinType>;
-
- - - - - - - -
schema UpdateMintingAbilityAbortsIf<CoinType> {
-    tc_account: signer;
-    include AbortsIfNoCurrency<CoinType>;
-}
-
- - -Only the TreasuryCompliance role can enable/disable minting [[H2]][PERMISSION]. - - -
schema UpdateMintingAbilityAbortsIf<CoinType> {
-    include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-}
-
- - - - - - - -
schema UpdateMintingAbilityEnsures<CoinType> {
-    tc_account: signer;
-    can_mint: bool;
-    ensures spec_currency_info<CoinType>().can_mint == can_mint;
-}
-
- - - -
- - - -## Function `assert_is_currency` - -Asserts that CoinType is a registered currency. - - -
public fun assert_is_currency<CoinType>()
-
- - - -
-Implementation - - -
public fun assert_is_currency<CoinType>() {
-    assert(is_currency<CoinType>(), Errors::not_published(ECURRENCY_INFO));
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include AbortsIfNoCurrency<CoinType>;
-
- - - - - - - -
schema AbortsIfNoCurrency<CoinType> {
-    aborts_if !spec_is_currency<CoinType>() with Errors::NOT_PUBLISHED;
-}
-
- - - -
- - - -## Function `assert_is_SCS_currency` - - - -
public fun assert_is_SCS_currency<CoinType>()
-
- - - -
-Implementation - - -
public fun assert_is_SCS_currency<CoinType>() acquires CurrencyInfo {
-    assert_is_currency<CoinType>();
-    assert(is_SCS_currency<CoinType>(), Errors::invalid_state(ECURRENCY_INFO));
-}
-
- - - -
- - - -## Module Specification - -Returns the market cap of CoinType. - - - - - -
define spec_market_cap<CoinType>(): u128 {
-   global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).total_value
-}
-
- - - - - - - -
define spec_scaling_factor<CoinType>(): u64 {
-   global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).scaling_factor
-}
-
- - - - - - -### Access Control - - -Only mint functions can increase the total amount of currency [[H1]][PERMISSION]. - - -
apply TotalValueNotIncrease<CoinType> to *<CoinType>
-    except mint<CoinType>, mint_with_capability<CoinType>;
-
- - -In order to successfully call mint and mint_with_capability, MintCapability is -required. MintCapability must be only granted to a TreasuryCompliance account [[H1]][PERMISSION]. -Only register_SCS_currency creates MintCapability, which must abort if the account -does not have the TreasuryCompliance role [[H1]][PERMISSION]. - - -
apply PreserveMintCapAbsence<CoinType> to *<CoinType> except register_SCS_currency<CoinType>;
-apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to register_SCS_currency<CoinType>;
-
- - -Only TreasuryCompliance can have MintCapability [[H1]][PERMISSION]. -If an account has MintCapability, it is a TreasuryCompliance account. - - -
invariant [global] forall coin_type: type:
-    forall mint_cap_owner: address where exists<MintCapability<coin_type>>(mint_cap_owner):
-        Roles::spec_has_treasury_compliance_role_addr(mint_cap_owner);
-
- - -MintCapability is not transferrable [[J1]][PERMISSION]. - - -
apply PreserveMintCapExistence<CoinType> to *<CoinType>;
-
- - -The permission "MintCurrency" is unique per currency [[I1]][PERMISSION]. -At most one address has a mint capability for SCS CoinType - - -
invariant [global, isolated]
-    forall coin_type: type where is_SCS_currency<coin_type>():
-        forall mint_cap_owner1: address, mint_cap_owner2: address
-             where exists<MintCapability<coin_type>>(mint_cap_owner1)
-                        && exists<MintCapability<coin_type>>(mint_cap_owner2):
-                  mint_cap_owner1 == mint_cap_owner2;
-
- - -If an address has a mint capability, it is an SCS currency. - - -
invariant [global]
-    forall coin_type: type, addr3: address where spec_has_mint_capability<coin_type>(addr3):
-        is_SCS_currency<coin_type>();
-
- - - - - -#### Minting - - - - - -The total amount of currency does not increase. - - -
schema TotalValueNotIncrease<CoinType> {
-    ensures old(spec_is_currency<CoinType>())
-        ==> spec_currency_info<CoinType>().total_value <= old(spec_currency_info<CoinType>().total_value);
-}
-
- - - - - - -The existence of MintCapability is preserved. - - -
schema PreserveMintCapExistence<CoinType> {
-    ensures forall addr: address:
-        old(exists<MintCapability<CoinType>>(addr)) ==>
-            exists<MintCapability<CoinType>>(addr);
-}
-
- - - - - - -The absence of MintCapability is preserved. - - -
schema PreserveMintCapAbsence<CoinType> {
-    ensures forall addr: address:
-        old(!exists<MintCapability<CoinType>>(addr)) ==>
-            !exists<MintCapability<CoinType>>(addr);
-}
-
- - - - - -#### Burning - - - - - -The total amount of currency does not decrease. - - -
schema TotalValueNotDecrease<CoinType> {
-    ensures old(spec_is_currency<CoinType>())
-        ==> spec_currency_info<CoinType>().total_value >= old(spec_currency_info<CoinType>().total_value);
-}
-
- - - - - - -The existence of BurnCapability is preserved. - - -
schema PreserveBurnCapExistence<CoinType> {
-    ensures forall addr: address:
-        old(exists<BurnCapability<CoinType>>(addr)) ==>
-            exists<BurnCapability<CoinType>>(addr);
-}
-
- - - - - - -The absence of BurnCapability is preserved. - - -
schema PreserveBurnCapAbsence<CoinType> {
-    ensures forall addr: address:
-        old(!exists<BurnCapability<CoinType>>(addr)) ==>
-            !exists<BurnCapability<CoinType>>(addr);
-}
-
- - - -Only burn functions can decrease the total amount of currency [[H3]][PERMISSION]. - - -
apply TotalValueNotDecrease<CoinType> to *<CoinType>
-    except burn<CoinType>, burn_with_capability<CoinType>, burn_with_resource_cap<CoinType>,
-    burn_now<CoinType>;
-
- - -In order to successfully call the burn functions, BurnCapability is required. -BurnCapability must be only granted to a TreasuryCompliance account [[H3]][PERMISSION]. -Only register_SCS_currency and publish_burn_capability publish BurnCapability, -which must abort if the account does not have the TreasuryCompliance role [[H8]][PERMISSION]. - - -
apply PreserveBurnCapAbsence<CoinType> to *<CoinType>
-    except register_SCS_currency<CoinType>, publish_burn_capability<CoinType>;
-apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to register_SCS_currency<CoinType>;
-
- - -Only TreasuryCompliance can have BurnCapability [[H3]][PERMISSION]. -If an account has BurnCapability, it is a TreasuryCompliance account. - - -
invariant [global] forall coin_type: type:
-    forall addr1: address:
-        exists<BurnCapability<coin_type>>(addr1) ==>
-            Roles::spec_has_treasury_compliance_role_addr(addr1);
-
- - -BurnCapability is not transferrable [[J3]][PERMISSION]. BurnCapability can be extracted from an -account, but is always moved back to the original account. This is the case in -TransactionFee::burn_fees which is the only user of remove_burn_capability and -publish_burn_capability. - - -
apply PreserveBurnCapExistence<CoinType> to *<CoinType> except remove_burn_capability<CoinType>;
-
- - - - - -#### Preburning - - - - - -The preburn value of currency does not increase. - - -
schema PreburnValueNotIncrease<CoinType> {
-    ensures old(spec_is_currency<CoinType>())
-        ==> spec_currency_info<CoinType>().preburn_value <= old(spec_currency_info<CoinType>().preburn_value);
-}
-
- - - - - - -The the preburn value of currency does not decrease. - - -
schema PreburnValueNotDecrease<CoinType> {
-    ensures old(spec_is_currency<CoinType>())
-        ==> spec_currency_info<CoinType>().preburn_value >= old(spec_currency_info<CoinType>().preburn_value);
-}
-
- - - - - - -The existence of Preburn is preserved. - - -
schema PreservePreburnExistence<CoinType> {
-    ensures forall addr: address:
-        old(exists<Preburn<CoinType>>(addr)) ==>
-            exists<Preburn<CoinType>>(addr);
-}
-
- - - - - - -The absence of Preburn is preserved. - - -
schema PreservePreburnAbsence<CoinType> {
-    ensures forall addr: address:
-        old(!exists<Preburn<CoinType>>(addr)) ==>
-            !exists<Preburn<CoinType>>(addr);
-}
-
- - - -Only burn functions can decrease the preburn value of currency [[H4]][PERMISSION]. - - -
apply PreburnValueNotDecrease<CoinType> to *<CoinType>
-    except burn<CoinType>, burn_with_capability<CoinType>, burn_with_resource_cap<CoinType>,
-    burn_now<CoinType>, cancel_burn<CoinType>, cancel_burn_with_capability<CoinType>;
-
- - -Only preburn functions can increase the preburn value of currency [[H4]][PERMISSION]. - - -
apply PreburnValueNotIncrease<CoinType> to *<CoinType>
-    except preburn_to<CoinType>, preburn_with_resource<CoinType>;
-
- - -In order to successfully call the preburn functions, Preburn is required. Preburn must -be only granted to a DesignatedDealer account [[H4]][PERMISSION]. Only publish_preburn_to_account -publishes Preburn, which must abort if the account does not have the DesignatedDealer role [[H4]][PERMISSION]. - - -
apply Roles::AbortsIfNotDesignatedDealer to publish_preburn_to_account<CoinType>;
-apply PreservePreburnAbsence<CoinType> to *<CoinType> except publish_preburn_to_account<CoinType>;
-
- - -Only DesignatedDealer can have Preburn [[H3]][PERMISSION]. -If an account has Preburn, it is a DesignatedDealer account. - - -
invariant [global] forall coin_type: type:
-    forall addr1: address:
-        exists<Preburn<coin_type>>(addr1) ==>
-            Roles::spec_has_designated_dealer_role_addr(addr1);
-
- - -Preburn is not transferrable [[J4]][PERMISSION]. - - -
apply PreservePreburnExistence<CoinType> to *<CoinType>;
-
- - -resource struct CurrencyInfo is persistent - - -
invariant update [global] forall coin_type: type, lr_addr: address
-    where old(exists<CurrencyInfo<coin_type>>(lr_addr)):
-        exists<CurrencyInfo<coin_type>>(lr_addr);
-
- - -resource struct Preburn<CoinType> is persistent - - -
invariant update [global] forall coin_type: type, tc_addr: address
-    where old(exists<Preburn<coin_type>>(tc_addr)):
-        exists<Preburn<coin_type>>(tc_addr);
-
- - -resource struct MintCapability<CoinType> is persistent - - -
invariant update [global] forall coin_type: type, tc_addr: address
-    where old(exists<MintCapability<coin_type>>(tc_addr)):
-        exists<MintCapability<coin_type>>(tc_addr);
-
- - - - - -#### Update Exchange Rates - - - - - -The exchange rate to LBR stays constant. - - -
schema ExchangeRateRemainsSame<CoinType> {
-    ensures old(spec_is_currency<CoinType>())
-        ==> spec_currency_info<CoinType>().to_lbr_exchange_rate
-            == old(spec_currency_info<CoinType>().to_lbr_exchange_rate);
-}
-
- - - -The permission "UpdateExchangeRate(type)" is granted to TreasuryCompliance [[H5]][PERMISSION]. - - -
apply Roles::AbortsIfNotTreasuryCompliance{account: tc_account} to update_lbr_exchange_rate<FromCoinType>;
-
- - -Only update_lbr_exchange_rate can change the exchange rate [[H5]][PERMISSION]. - - -
apply ExchangeRateRemainsSame<CoinType> to *<CoinType>
-    except update_lbr_exchange_rate<CoinType>;
-
- - - - - -### Helper Functions - - -Checks whether currency is registered. Mirrors Self::is_currency<CoinType>. - - - - - -
define spec_is_currency<CoinType>(): bool {
-    exists<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Returns currency information. - - - - - -
define spec_currency_info<CoinType>(): CurrencyInfo<CoinType> {
-    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS())
-}
-
- - -Specification version of Self::approx_lbr_for_value. - - - - - -
define spec_approx_lbr_for_value<CoinType>(value: num):  num {
-    FixedPoint32::spec_multiply_u64(value, spec_lbr_exchange_rate<CoinType>())
-}
-
-define spec_lbr_exchange_rate<CoinType>(): FixedPoint32 {
-    global<CurrencyInfo<CoinType>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).to_lbr_exchange_rate
-}
-
- - -Checks whether the currency has a mint capability. This is only relevant for -SCS coins - - - - - -
define spec_has_mint_capability<CoinType>(addr: address): bool {
-    exists<MintCapability<CoinType>>(addr)
-}
-
- - -Returns true if a BurnCapability for CoinType exists at addr. - - - - - -
define spec_has_burn_capability<CoinType>(addr: address): bool {
-    exists<BurnCapability<CoinType>>(addr)
-}
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraAccount.md b/language/stdlib/modules/doc/LibraAccount.md deleted file mode 100644 index 193be3a392..0000000000 --- a/language/stdlib/modules/doc/LibraAccount.md +++ /dev/null @@ -1,4732 +0,0 @@ - - - -# Module `0x1::LibraAccount` - -The LibraAccount module manages accounts. It defines the LibraAccount resource and -numerous auxiliary data structures. It also defines the prolog and epilog that run -before and after every transaction. - - -- [Resource `LibraAccount`](#0x1_LibraAccount_LibraAccount) -- [Resource `Balance`](#0x1_LibraAccount_Balance) -- [Resource `WithdrawCapability`](#0x1_LibraAccount_WithdrawCapability) -- [Resource `KeyRotationCapability`](#0x1_LibraAccount_KeyRotationCapability) -- [Resource `AccountOperationsCapability`](#0x1_LibraAccount_AccountOperationsCapability) -- [Resource `LibraWriteSetManager`](#0x1_LibraAccount_LibraWriteSetManager) -- [Struct `SentPaymentEvent`](#0x1_LibraAccount_SentPaymentEvent) -- [Struct `ReceivedPaymentEvent`](#0x1_LibraAccount_ReceivedPaymentEvent) -- [Struct `AdminTransactionEvent`](#0x1_LibraAccount_AdminTransactionEvent) -- [Struct `CreateAccountEvent`](#0x1_LibraAccount_CreateAccountEvent) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraAccount_initialize) -- [Function `has_published_account_limits`](#0x1_LibraAccount_has_published_account_limits) -- [Function `should_track_limits_for_account`](#0x1_LibraAccount_should_track_limits_for_account) -- [Function `deposit`](#0x1_LibraAccount_deposit) -- [Function `tiered_mint`](#0x1_LibraAccount_tiered_mint) -- [Function `cancel_burn`](#0x1_LibraAccount_cancel_burn) -- [Function `withdraw_from_balance`](#0x1_LibraAccount_withdraw_from_balance) -- [Function `withdraw_from`](#0x1_LibraAccount_withdraw_from) - - [Access Control](#@Access_Control_1) -- [Function `preburn`](#0x1_LibraAccount_preburn) -- [Function `extract_withdraw_capability`](#0x1_LibraAccount_extract_withdraw_capability) -- [Function `restore_withdraw_capability`](#0x1_LibraAccount_restore_withdraw_capability) -- [Function `pay_from`](#0x1_LibraAccount_pay_from) -- [Function `rotate_authentication_key`](#0x1_LibraAccount_rotate_authentication_key) - - [Access Control](#@Access_Control_2) -- [Function `extract_key_rotation_capability`](#0x1_LibraAccount_extract_key_rotation_capability) -- [Function `restore_key_rotation_capability`](#0x1_LibraAccount_restore_key_rotation_capability) -- [Function `add_currencies_for_account`](#0x1_LibraAccount_add_currencies_for_account) -- [Function `make_account`](#0x1_LibraAccount_make_account) -- [Function `create_authentication_key`](#0x1_LibraAccount_create_authentication_key) -- [Function `create_libra_root_account`](#0x1_LibraAccount_create_libra_root_account) -- [Function `create_treasury_compliance_account`](#0x1_LibraAccount_create_treasury_compliance_account) -- [Function `create_designated_dealer`](#0x1_LibraAccount_create_designated_dealer) -- [Function `create_parent_vasp_account`](#0x1_LibraAccount_create_parent_vasp_account) -- [Function `create_child_vasp_account`](#0x1_LibraAccount_create_child_vasp_account) -- [Function `create_signer`](#0x1_LibraAccount_create_signer) -- [Function `destroy_signer`](#0x1_LibraAccount_destroy_signer) -- [Function `balance_for`](#0x1_LibraAccount_balance_for) -- [Function `balance`](#0x1_LibraAccount_balance) -- [Function `add_currency`](#0x1_LibraAccount_add_currency) - - [Access Control](#@Access_Control_3) -- [Function `accepts_currency`](#0x1_LibraAccount_accepts_currency) -- [Function `sequence_number_for_account`](#0x1_LibraAccount_sequence_number_for_account) -- [Function `sequence_number`](#0x1_LibraAccount_sequence_number) -- [Function `authentication_key`](#0x1_LibraAccount_authentication_key) -- [Function `delegated_key_rotation_capability`](#0x1_LibraAccount_delegated_key_rotation_capability) -- [Function `delegated_withdraw_capability`](#0x1_LibraAccount_delegated_withdraw_capability) -- [Function `withdraw_capability_address`](#0x1_LibraAccount_withdraw_capability_address) -- [Function `key_rotation_capability_address`](#0x1_LibraAccount_key_rotation_capability_address) -- [Function `exists_at`](#0x1_LibraAccount_exists_at) -- [Function `module_prologue`](#0x1_LibraAccount_module_prologue) -- [Function `script_prologue`](#0x1_LibraAccount_script_prologue) -- [Function `writeset_prologue`](#0x1_LibraAccount_writeset_prologue) -- [Function `prologue_common`](#0x1_LibraAccount_prologue_common) -- [Function `epilogue`](#0x1_LibraAccount_epilogue) -- [Function `writeset_epilogue`](#0x1_LibraAccount_writeset_epilogue) -- [Function `create_validator_account`](#0x1_LibraAccount_create_validator_account) -- [Function `create_validator_operator_account`](#0x1_LibraAccount_create_validator_operator_account) -- [Module Specification](#@Module_Specification_4) - - [Access Control](#@Access_Control_5) - - [Key Rotation Capability](#@Key_Rotation_Capability_6) - - [Withdraw Capability](#@Withdraw_Capability_7) - - [Authentication Key](#@Authentication_Key_8) - - [Balance](#@Balance_9) - - [Persistence of Resources](#@Persistence_of_Resources_10) - - [Other invariants](#@Other_invariants_11) - - [Helper Functions and Schemas](#@Helper_Functions_and_Schemas_12) - - [Capabilities](#@Capabilities_13) - - [Prologue](#@Prologue_14) - - -
use 0x1::AccountFreezing;
-use 0x1::AccountLimits;
-use 0x1::ChainId;
-use 0x1::Coin1;
-use 0x1::CoreAddresses;
-use 0x1::DesignatedDealer;
-use 0x1::DualAttestation;
-use 0x1::Errors;
-use 0x1::Event;
-use 0x1::Hash;
-use 0x1::LBR;
-use 0x1::LCS;
-use 0x1::Libra;
-use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
-use 0x1::LibraTransactionPublishingOption;
-use 0x1::Option;
-use 0x1::Roles;
-use 0x1::Signer;
-use 0x1::SlidingNonce;
-use 0x1::TransactionFee;
-use 0x1::VASP;
-use 0x1::ValidatorConfig;
-use 0x1::ValidatorOperatorConfig;
-use 0x1::Vector;
-
- - - - - -## Resource `LibraAccount` - -An address is a Libra Account iff it has a published LibraAccount resource. - - -
resource struct LibraAccount
-
- - - -
-Fields - - -
-
-authentication_key: vector<u8> -
-
- The current authentication key. - This can be different from the key used to create the account -
-
-withdraw_capability: Option::Option<LibraAccount::WithdrawCapability> -
-
- A withdraw_capability allows whoever holds this capability - to withdraw from the account. At the time of account creation - this capability is stored in this option. It can later be removed - by extract_withdraw_capability and also restored via restore_withdraw_capability. -
-
-key_rotation_capability: Option::Option<LibraAccount::KeyRotationCapability> -
-
- A key_rotation_capability allows whoever holds this capability - the ability to rotate the authentication key for the account. At - the time of account creation this capability is stored in this - option. It can later be "extracted" from this field via - extract_key_rotation_capability, and can also be restored via - restore_key_rotation_capability. -
-
-received_events: Event::EventHandle<LibraAccount::ReceivedPaymentEvent> -
-
- Event handle to which ReceivePaymentEvents are emitted when - payments are received. -
-
-sent_events: Event::EventHandle<LibraAccount::SentPaymentEvent> -
-
- Event handle to which SentPaymentEvents are emitted when - payments are sent. -
-
-sequence_number: u64 -
-
- The current sequence number of the account. - Incremented by one each time a transaction is submitted by - this account. -
-
- - -
- - - -## Resource `Balance` - -A resource that holds the total value of currency of type Token -currently held by the account. - - -
resource struct Balance<Token>
-
- - - -
-Fields - - -
-
-coin: Libra::Libra<Token> -
-
- Stores the value of the balance in its balance field. A coin has - a value field. The amount of money in the balance is changed - by modifying this field. -
-
- - -
- - - -## Resource `WithdrawCapability` - -The holder of WithdrawCapability for account_address can withdraw Libra from -account_address/LibraAccount/balance. -There is at most one WithdrawCapability in existence for a given address. - - -
resource struct WithdrawCapability
-
- - - -
-Fields - - -
-
-account_address: address -
-
- Address that WithdrawCapability was associated with when it was created. - This field does not change. -
-
- - -
- - - -## Resource `KeyRotationCapability` - -The holder of KeyRotationCapability for account_address can rotate the authentication key for -account_address (i.e., write to account_address/LibraAccount/authentication_key). -There is at most one KeyRotationCapability in existence for a given address. - - -
resource struct KeyRotationCapability
-
- - - -
-Fields - - -
-
-account_address: address -
-
- Address that KeyRotationCapability was associated with when it was created. - This field does not change. -
-
- - -
- - - -## Resource `AccountOperationsCapability` - -A wrapper around an AccountLimitMutationCapability which is used to check for account limits -and to record freeze/unfreeze events. - - -
resource struct AccountOperationsCapability
-
- - - -
-Fields - - -
-
-limits_cap: AccountLimits::AccountLimitMutationCapability -
-
- -
-
-creation_events: Event::EventHandle<LibraAccount::CreateAccountEvent> -
-
- -
-
- - -
- - - -## Resource `LibraWriteSetManager` - -A resource that holds the event handle for all the past WriteSet transactions that have been committed on chain. - - -
resource struct LibraWriteSetManager
-
- - - -
-Fields - - -
-
-upgrade_events: Event::EventHandle<LibraAccount::AdminTransactionEvent> -
-
- -
-
- - -
- - - -## Struct `SentPaymentEvent` - -Message for sent events - - -
struct SentPaymentEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of Libra sent -
-
-currency_code: vector<u8> -
-
- The code symbol for the currency that was sent -
-
-payee: address -
-
- The address that was paid -
-
-metadata: vector<u8> -
-
- Metadata associated with the payment -
-
- - -
- - - -## Struct `ReceivedPaymentEvent` - -Message for received events - - -
struct ReceivedPaymentEvent
-
- - - -
-Fields - - -
-
-amount: u64 -
-
- The amount of Libra received -
-
-currency_code: vector<u8> -
-
- The code symbol for the currency that was received -
-
-payer: address -
-
- The address that sent the coin -
-
-metadata: vector<u8> -
-
- Metadata associated with the payment -
-
- - -
- - - -## Struct `AdminTransactionEvent` - -Message for committed WriteSet transaction. - - -
struct AdminTransactionEvent
-
- - - -
-Fields - - -
-
-committed_timestamp_secs: u64 -
-
- -
-
- - -
- - - -## Struct `CreateAccountEvent` - -Message for creation of a new account - - -
struct CreateAccountEvent
-
- - - -
-Fields - - -
-
-created: address -
-
- Address of the created account -
-
-role_id: u64 -
-
- Role of the created account -
-
- - -
- - - -## Constants - - - - - - -
const MAX_U64: u128 = 18446744073709551615;
-
- - - - - -The LibraAccount resource is not in the required state - - -
const EACCOUNT: u64 = 0;
-
- - - - - -The AccountOperationsCapability was not in the required state - - -
const EACCOUNT_OPERATIONS_CAPABILITY: u64 = 22;
-
- - - - - -Tried to add a balance in a currency that this account already has - - -
const EADD_EXISTING_CURRENCY: u64 = 15;
-
- - - - - -An account cannot be created at the reserved core code address of 0x1 - - -
const ECANNOT_CREATE_AT_CORE_CODE: u64 = 24;
-
- - - - - -An account cannot be created at the reserved VM address of 0x0 - - -
const ECANNOT_CREATE_AT_VM_RESERVED: u64 = 10;
-
- - - - - -Tried to deposit a coin whose value was zero - - -
const ECOIN_DEPOSIT_IS_ZERO: u64 = 2;
-
- - - - - -Tried to deposit funds that would have surpassed the account's limits - - -
const EDEPOSIT_EXCEEDS_LIMITS: u64 = 3;
-
- - - - - -An invalid amount of gas units was provided for execution of the transaction - - -
const EGAS: u64 = 20;
-
- - - - - -The account does not hold a large enough balance in the specified currency - - -
const EINSUFFICIENT_BALANCE: u64 = 5;
-
- - - - - -The KeyRotationCapability for this account has already been extracted - - -
const EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED: u64 = 9;
-
- - - - - -The provided authentication had an invalid length - - -
const EMALFORMED_AUTHENTICATION_KEY: u64 = 8;
-
- - - - - -Attempted to send funds in a currency that the receiving account does not hold. -e.g., Libra<LBR> to an account that exists, but does not have a Balance<LBR> resource - - -
const EPAYEE_CANT_ACCEPT_CURRENCY_TYPE: u64 = 18;
-
- - - - - -Attempted to send funds to an account that does not exist - - -
const EPAYEE_DOES_NOT_EXIST: u64 = 17;
-
- - - - - -Tried to withdraw funds in a currency that the account does hold - - -
const EPAYER_DOESNT_HOLD_CURRENCY: u64 = 19;
-
- - - - - -Tried to create a balance for an account whose role does not allow holding balances - - -
const EROLE_CANT_STORE_BALANCE: u64 = 4;
-
- - - - - -The account's sequence number has exceeded the maximum representable value - - -
const ESEQUENCE_NUMBER: u64 = 1;
-
- - - - - -The withdrawal of funds would have exceeded the the account's limits - - -
const EWITHDRAWAL_EXCEEDS_LIMITS: u64 = 6;
-
- - - - - -The WithdrawCapability for this account has already been extracted - - -
const EWITHDRAW_CAPABILITY_ALREADY_EXTRACTED: u64 = 7;
-
- - - - - -The WithdrawCapability for this account is not extracted - - -
const EWITHDRAW_CAPABILITY_NOT_EXTRACTED: u64 = 11;
-
- - - - - -The LibraWriteSetManager was not in the required state - - -
const EWRITESET_MANAGER: u64 = 23;
-
- - - - - - - -
const PROLOGUE_EACCOUNT_DNE: u64 = 1004;
-
- - - - - -Prologue errors. These are separated out from the other errors in this -module since they are mapped separately to major VM statuses, and are -important to the semantics of the system. Those codes also need to be -directly used in aborts instead of augmenting them with a category -via the Errors module. - - -
const PROLOGUE_EACCOUNT_FROZEN: u64 = 1000;
-
- - - - - - - -
const PROLOGUE_EBAD_CHAIN_ID: u64 = 1007;
-
- - - - - - - -
const PROLOGUE_ECANT_PAY_GAS_DEPOSIT: u64 = 1005;
-
- - - - - - - -
const PROLOGUE_EINVALID_ACCOUNT_AUTH_KEY: u64 = 1001;
-
- - - - - - - -
const PROLOGUE_EMODULE_NOT_ALLOWED: u64 = 1009;
-
- - - - - - - -
const PROLOGUE_ESCRIPT_NOT_ALLOWED: u64 = 1008;
-
- - - - - - - -
const PROLOGUE_ESEQUENCE_NUMBER_TOO_NEW: u64 = 1003;
-
- - - - - - - -
const PROLOGUE_ESEQUENCE_NUMBER_TOO_OLD: u64 = 1002;
-
- - - - - - - -
const PROLOGUE_ETRANSACTION_EXPIRED: u64 = 1006;
-
- - - - - - - -
const PROLOGUE_INVALID_WRITESET_SENDER: u64 = 1010;
-
- - - - - -## Function `initialize` - -Initialize this module. This is only callable from genesis. - - -
public fun initialize(lr_account: &signer, dummy_auth_key_prefix: vector<u8>)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-    dummy_auth_key_prefix: vector<u8>,
-) acquires AccountOperationsCapability {
-    LibraTimestamp::assert_genesis();
-    // Operational constraint, not a privilege constraint.
-    CoreAddresses::assert_libra_root(lr_account);
-
-    create_libra_root_account(
-        copy dummy_auth_key_prefix,
-    );
-    create_treasury_compliance_account(
-        lr_account,
-        copy dummy_auth_key_prefix,
-    );
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-include CreateLibraRootAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix};
-include CreateTreasuryComplianceAccountAbortsIf{auth_key_prefix: dummy_auth_key_prefix};
-aborts_if exists<AccountFreezing::FreezingBit>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS())
-    with Errors::ALREADY_PUBLISHED;
-include CreateLibraRootAccountModifies;
-include CreateLibraRootAccountEnsures;
-include CreateTreasuryComplianceAccountModifies;
-include CreateTreasuryComplianceAccountEnsures;
-
- - - -
- - - -## Function `has_published_account_limits` - -Return true if addr has already published account limits for Token - - -
fun has_published_account_limits<Token>(addr: address): bool
-
- - - -
-Implementation - - -
fun has_published_account_limits<Token>(addr: address): bool {
-    if (VASP::is_vasp(addr)) {
-        VASP::has_account_limits<Token>(addr)
-    }
-    else {
-        AccountLimits::has_window_published<Token>(addr)
-    }
-}
-
- - - -
- - - -## Function `should_track_limits_for_account` - -Returns whether we should track and record limits for the payer or payee account. -Depending on the is_withdrawal flag passed in we determine whether the -payer or payee account is being queried. VASP->any and -any->VASP transfers are tracked in the VASP. - - -
fun should_track_limits_for_account<Token>(payer: address, payee: address, is_withdrawal: bool): bool
-
- - - -
-Implementation - - -
fun should_track_limits_for_account<Token>(
-    payer: address, payee: address, is_withdrawal: bool
-): bool {
-    if (is_withdrawal) {
-        has_published_account_limits<Token>(payer) &&
-        VASP::is_vasp(payer) &&
-        !VASP::is_same_vasp(payer, payee)
-    } else {
-        has_published_account_limits<Token>(payee) &&
-        VASP::is_vasp(payee) &&
-        !VASP::is_same_vasp(payee, payer)
-    }
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if false;
-ensures result == spec_should_track_limits_for_account<Token>(payer, payee, is_withdrawal);
-
- - - - - - - -
define spec_should_track_limits_for_account<Token>(
-   payer: address, payee: address, is_withdrawal: bool
-): bool {
-   if (is_withdrawal) {
-       spec_has_published_account_limits<Token>(payer) &&
-       VASP::is_vasp(payer) &&
-       !VASP::spec_is_same_vasp(payer, payee)
-   } else {
-       spec_has_published_account_limits<Token>(payee) &&
-       VASP::is_vasp(payee) &&
-       !VASP::spec_is_same_vasp(payee, payer)
-   }
-}
-
- - - -
- - - -## Function `deposit` - -Record a payment of to_deposit from payer to payee with the attached metadata - - -
fun deposit<Token>(payer: address, payee: address, to_deposit: Libra::Libra<Token>, metadata: vector<u8>, metadata_signature: vector<u8>)
-
- - - -
-Implementation - - -
fun deposit<Token>(
-    payer: address,
-    payee: address,
-    to_deposit: Libra<Token>,
-    metadata: vector<u8>,
-    metadata_signature: vector<u8>
-) acquires LibraAccount, Balance, AccountOperationsCapability {
-    LibraTimestamp::assert_operating();
-    AccountFreezing::assert_not_frozen(payee);
-
-    // Check that the `to_deposit` coin is non-zero
-    let deposit_value = Libra::value(&to_deposit);
-    assert(deposit_value > 0, Errors::invalid_argument(ECOIN_DEPOSIT_IS_ZERO));
-    // Check that an account exists at `payee`
-    assert(exists_at(payee), Errors::not_published(EPAYEE_DOES_NOT_EXIST));
-    // Check that `payee` can accept payments in `Token`
-    assert(
-        exists<Balance<Token>>(payee),
-        Errors::invalid_argument(EPAYEE_CANT_ACCEPT_CURRENCY_TYPE)
-    );
-
-    // Check that the payment complies with dual attestation rules
-    DualAttestation::assert_payment_ok<Token>(
-        payer, payee, deposit_value, copy metadata, metadata_signature
-    );
-    // Ensure that this deposit is compliant with the account limits on
-    // this account.
-    if (should_track_limits_for_account<Token>(payer, payee, false)) {
-        assert(
-            AccountLimits::update_deposit_limits<Token>(
-                deposit_value,
-                VASP::parent_address(payee),
-                &borrow_global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()).limits_cap
-            ),
-            Errors::limit_exceeded(EDEPOSIT_EXCEEDS_LIMITS)
-        )
-    };
-
-    // Deposit the `to_deposit` coin
-    Libra::deposit(&mut borrow_global_mut<Balance<Token>>(payee).coin, to_deposit);
-
-    // Log a received event
-    Event::emit_event<ReceivedPaymentEvent>(
-        &mut borrow_global_mut<LibraAccount>(payee).received_events,
-        ReceivedPaymentEvent {
-            amount: deposit_value,
-            currency_code: Libra::currency_code<Token>(),
-            payer,
-            metadata
-        }
-    );
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Balance<Token>>(payee);
-modifies global<LibraAccount>(payee);
-modifies global<AccountLimits::Window<Token>>(VASP::spec_parent_address(payee));
-ensures exists<LibraAccount>(payee);
-ensures exists<Balance<Token>>(payee);
-ensures global<LibraAccount>(payee).withdraw_capability
-    == old(global<LibraAccount>(payee).withdraw_capability);
-include DepositAbortsIf<Token>{amount: to_deposit.value};
-include DepositOverflowAbortsIf<Token>{amount: to_deposit.value};
-include DepositEnsures<Token>{amount: to_deposit.value};
-
- - - - - - - -
schema DepositAbortsIf<Token> {
-    payer: address;
-    payee: address;
-    amount: u64;
-    metadata_signature: vector<u8>;
-    metadata: vector<u8>;
-    include DepositAbortsIfRestricted<Token>;
-    include AccountFreezing::AbortsIfFrozen{account: payee};
-    aborts_if !exists<Balance<Token>>(payee) with Errors::INVALID_ARGUMENT;
-    aborts_if !exists_at(payee) with Errors::NOT_PUBLISHED;
-}
-
- - - - - - - -
schema DepositOverflowAbortsIf<Token> {
-    payee: address;
-    amount: u64;
-    aborts_if balance<Token>(payee) + amount > max_u64() with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema DepositAbortsIfRestricted<Token> {
-    payer: address;
-    payee: address;
-    amount: u64;
-    metadata_signature: vector<u8>;
-    metadata: vector<u8>;
-    include LibraTimestamp::AbortsIfNotOperating;
-    aborts_if amount == 0 with Errors::INVALID_ARGUMENT;
-    include DualAttestation::AssertPaymentOkAbortsIf<Token>{value: amount};
-    include
-        spec_should_track_limits_for_account<Token>(payer, payee, false) ==>
-        AccountLimits::UpdateDepositLimitsAbortsIf<Token> {
-            addr: VASP::spec_parent_address(payee),
-        };
-    aborts_if
-        spec_should_track_limits_for_account<Token>(payer, payee, false) &&
-            !AccountLimits::spec_update_deposit_limits<Token>(amount, VASP::spec_parent_address(payee))
-        with Errors::LIMIT_EXCEEDED;
-    include Libra::AbortsIfNoCurrency<Token>;
-}
-
- - - - - - - -
schema DepositEnsures<Token> {
-    payee: address;
-    amount: u64;
-    ensures balance<Token>(payee) == old(balance<Token>(payee)) + amount;
-}
-
- - - -
- - - -## Function `tiered_mint` - -Mint 'mint_amount' to 'designated_dealer_address' for 'tier_index' tier. -Max valid tier index is 3 since there are max 4 tiers per DD. -Sender should be treasury compliance account and receiver authorized DD. - - -
public fun tiered_mint<Token>(tc_account: &signer, designated_dealer_address: address, mint_amount: u64, tier_index: u64)
-
- - - -
-Implementation - - -
public fun tiered_mint<Token>(
-    tc_account: &signer,
-    designated_dealer_address: address,
-    mint_amount: u64,
-    tier_index: u64,
-) acquires LibraAccount, Balance, AccountOperationsCapability {
-    let coin = DesignatedDealer::tiered_mint<Token>(
-        tc_account, mint_amount, designated_dealer_address, tier_index
-    );
-    // Use the reserved address as the payer because the funds did not come from an existing
-    // balance
-    deposit(CoreAddresses::VM_RESERVED_ADDRESS(), designated_dealer_address, coin, x"", x"")
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Balance<Token>>(designated_dealer_address);
-modifies global<Libra::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-include TieredMintAbortsIf<Token>;
-include TieredMintEnsures<Token>;
-
- - - - - - - -
schema TieredMintAbortsIf<Token> {
-    tc_account: signer;
-    designated_dealer_address: address;
-    mint_amount: u64;
-    tier_index: u64;
-    include DesignatedDealer::TieredMintAbortsIf<Token>{dd_addr: designated_dealer_address, amount: mint_amount};
-    include DepositAbortsIf<Token>{payer: CoreAddresses::VM_RESERVED_ADDRESS(),
-        payee: designated_dealer_address, amount: mint_amount, metadata: x"", metadata_signature: x""};
-    include DepositOverflowAbortsIf<Token>{payee: designated_dealer_address, amount: mint_amount};
-}
-
- - - - - - - -
schema TieredMintEnsures<Token> {
-    designated_dealer_address: address;
-    mint_amount: u64;
-    
-    let dealer_balance = global<Balance<Token>>(designated_dealer_address).coin.value;
-    
-    let currency_info = global<Libra::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS());
-}
-
- - -Total value of the currency increases by amount. - - -
schema TieredMintEnsures<Token> {
-    ensures currency_info == update_field(old(currency_info), total_value, old(currency_info.total_value) + mint_amount);
-}
-
- - -The balance of designated dealer increases by amount. - - -
schema TieredMintEnsures<Token> {
-    ensures dealer_balance == old(dealer_balance) + mint_amount;
-}
-
- - - -
- - - -## Function `cancel_burn` - - - -
public fun cancel_burn<Token>(account: &signer, preburn_address: address)
-
- - - -
-Implementation - - -
public fun cancel_burn<Token>(
-    account: &signer,
-    preburn_address: address,
-) acquires LibraAccount, Balance, AccountOperationsCapability {
-    let coin = Libra::cancel_burn<Token>(account, preburn_address);
-    // record both sender and recipient as `preburn_address`: the coins are moving from
-    // `preburn_address`'s `Preburn` resource to its balance
-    deposit(preburn_address, preburn_address, coin, x"", x"")
-}
-
- - - -
- -
-Specification - - - -
include CancelBurnAbortsIf<Token>;
-include Libra::CancelBurnWithCapEnsures<Token>;
-
-let preburn_value_at_addr = global<Libra::Preburn<Token>>(preburn_address).to_burn.value;
-
-let balance_at_addr = balance<Token>(preburn_address);
-ensures balance_at_addr == old(balance_at_addr) + old(preburn_value_at_addr);
-
- - - - - - - -
schema CancelBurnAbortsIf<Token> {
-    account: signer;
-    preburn_address: address;
-    
-    let amount = global<Libra::Preburn<Token>>(preburn_address).to_burn.value;
-    aborts_if !exists<Libra::BurnCapability<Token>>(Signer::spec_address_of(account))
-        with Errors::REQUIRES_CAPABILITY;
-    include Libra::CancelBurnWithCapAbortsIf<Token>;
-    include DepositAbortsIf<Token>{
-        payer: preburn_address,
-        payee: preburn_address,
-        amount: amount,
-        metadata: x"",
-        metadata_signature: x""
-    };
-    include DepositOverflowAbortsIf<Token>{payee: preburn_address, amount: amount};
-}
-
- - - -
- - - -## Function `withdraw_from_balance` - -Helper to withdraw amount from the given account balance and return the withdrawn Libra - - -
fun withdraw_from_balance<Token>(payer: address, payee: address, balance: &mut LibraAccount::Balance<Token>, amount: u64): Libra::Libra<Token>
-
- - - -
-Implementation - - -
fun withdraw_from_balance<Token>(
-    payer: address,
-    payee: address,
-    balance: &mut Balance<Token>,
-    amount: u64
-): Libra<Token> acquires AccountOperationsCapability {
-    LibraTimestamp::assert_operating();
-    AccountFreezing::assert_not_frozen(payer);
-    // Make sure that this withdrawal is compliant with the limits on
-    // the account if it's a inter-VASP transfer,
-    if (should_track_limits_for_account<Token>(payer, payee, true)) {
-        let can_withdraw = AccountLimits::update_withdrawal_limits<Token>(
-                amount,
-                VASP::parent_address(payer),
-                &borrow_global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()).limits_cap
-        );
-        assert(can_withdraw, Errors::limit_exceeded(EWITHDRAWAL_EXCEEDS_LIMITS));
-    };
-    let coin = &mut balance.coin;
-    // Abort if this withdrawal would make the `payer`'s balance go negative
-    assert(Libra::value(coin) >= amount, Errors::limit_exceeded(EINSUFFICIENT_BALANCE));
-    Libra::withdraw(coin, amount)
-}
-
- - - -
- -
-Specification - - - -
modifies global<AccountLimits::Window<Token>>(VASP::spec_parent_address(payer));
-include WithdrawFromBalanceAbortsIf<Token>;
-include WithdrawFromBalanceEnsures<Token>;
-
- - - - - - - -
schema WithdrawFromBalanceAbortsIf<Token> {
-    payer: address;
-    payee: address;
-    balance: Balance<Token>;
-    amount: u64;
-    include WithdrawFromBalanceNoLimitsAbortsIf<Token>;
-    include
-        spec_should_track_limits_for_account<Token>(payer, payee, true) ==>
-        AccountLimits::UpdateWithdrawalLimitsAbortsIf<Token> {
-            addr: VASP::spec_parent_address(payer),
-        };
-    aborts_if
-        spec_should_track_limits_for_account<Token>(payer, payee, true) &&
-        (   !spec_has_account_operations_cap() ||
-            !AccountLimits::spec_update_withdrawal_limits<Token>(amount, VASP::spec_parent_address(payer))
-        )
-        with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema WithdrawFromBalanceNoLimitsAbortsIf<Token> {
-    payer: address;
-    payee: address;
-    balance: Balance<Token>;
-    amount: u64;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include AccountFreezing::AbortsIfFrozen{account: payer};
-    aborts_if balance.coin.value < amount with Errors::LIMIT_EXCEEDED;
-}
-
- - - - - - - -
schema WithdrawFromBalanceEnsures<Token> {
-    balance: Balance<Token>;
-    amount: u64;
-    result: Libra<Token>;
-    ensures balance.coin.value == old(balance.coin.value) - amount;
-    ensures result.value == amount;
-}
-
- - - -
- - - -## Function `withdraw_from` - -Withdraw amount Libra<Token>'s from the account balance under -cap.account_address - - -
fun withdraw_from<Token>(cap: &LibraAccount::WithdrawCapability, payee: address, amount: u64, metadata: vector<u8>): Libra::Libra<Token>
-
- - - -
-Implementation - - -
fun withdraw_from<Token>(
-    cap: &WithdrawCapability,
-    payee: address,
-    amount: u64,
-    metadata: vector<u8>,
-): Libra<Token> acquires Balance, AccountOperationsCapability, LibraAccount {
-    LibraTimestamp::assert_operating();
-    let payer = cap.account_address;
-    assert(exists_at(payer), Errors::not_published(EACCOUNT));
-    assert(exists<Balance<Token>>(payer), Errors::not_published(EPAYER_DOESNT_HOLD_CURRENCY));
-    let account_balance = borrow_global_mut<Balance<Token>>(payer);
-    // Load the payer's account and emit an event to record the withdrawal
-    Event::emit_event<SentPaymentEvent>(
-        &mut borrow_global_mut<LibraAccount>(payer).sent_events,
-        SentPaymentEvent {
-            amount,
-            currency_code: Libra::currency_code<Token>(),
-            payee,
-            metadata
-        },
-    );
-    withdraw_from_balance<Token>(payer, payee, account_balance, amount)
-}
-
- - - -
- -
-Specification - - - - - - -
let payer = cap.account_address;
-modifies global<Balance<Token>>(payer);
-modifies global<LibraAccount>(payer);
-ensures exists<LibraAccount>(payer);
-ensures global<LibraAccount>(payer).withdraw_capability
-            == old(global<LibraAccount>(payer).withdraw_capability);
-include WithdrawFromAbortsIf<Token>;
-include WithdrawFromBalanceEnsures<Token>{balance: global<Balance<Token>>(payer)};
-include WithdrawOnlyFromCapAddress<Token>;
-
- - - - - - - -
schema WithdrawFromAbortsIf<Token> {
-    cap: WithdrawCapability;
-    payee: address;
-    amount: u64;
-    
-    let payer = cap.account_address;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Libra::AbortsIfNoCurrency<Token>;
-    include WithdrawFromBalanceAbortsIf<Token>{payer, balance: global<Balance<Token>>(payer)};
-    aborts_if !exists_at(payer) with Errors::NOT_PUBLISHED;
-    aborts_if !exists<Balance<Token>>(payer) with Errors::NOT_PUBLISHED;
-}
-
- - - - - -### Access Control - - - - - - -
schema WithdrawOnlyFromCapAddress<Token> {
-    cap: WithdrawCapability;
-}
-
- - -Can only withdraw from the balances of cap.account_address [[H18]][PERMISSION]. - - -
schema WithdrawOnlyFromCapAddress<Token> {
-    ensures forall addr: address where old(exists<Balance<Token>>(addr)) && addr != cap.account_address:
-        balance<Token>(addr) == old(balance<Token>(addr));
-}
-
- - - -
- - - -## Function `preburn` - -Withdraw amount Libra<Token>'s from cap.address and send them to the Preburn -resource under dd. - - -
public fun preburn<Token>(dd: &signer, cap: &LibraAccount::WithdrawCapability, amount: u64)
-
- - - -
-Implementation - - -
public fun preburn<Token>(
-    dd: &signer,
-    cap: &WithdrawCapability,
-    amount: u64
-) acquires Balance, AccountOperationsCapability, LibraAccount {
-    LibraTimestamp::assert_operating();
-    Libra::preburn_to<Token>(dd, withdraw_from(cap, Signer::address_of(dd), amount, x""))
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let dd_addr = Signer::spec_address_of(dd);
-
-let payer = cap.account_address;
-modifies global<LibraAccount>(payer);
-ensures exists<LibraAccount>(payer);
-ensures global<LibraAccount>(payer).withdraw_capability
-        == old(global<LibraAccount>(payer).withdraw_capability);
-include PreburnAbortsIf<Token>;
-include PreburnEnsures<Token>{dd_addr, payer};
-
- - - - - - - -
schema PreburnAbortsIf<Token> {
-    dd: signer;
-    cap: WithdrawCapability;
-    amount: u64;
-    include LibraTimestamp::AbortsIfNotOperating{};
-    include WithdrawFromAbortsIf<Token>{payee: Signer::spec_address_of(dd)};
-    include Libra::PreburnToAbortsIf<Token>{account: dd};
-}
-
- - - - - - - -
schema PreburnEnsures<Token> {
-    dd_addr: address;
-    payer: address;
-    
-    let payer_balance = global<Balance<Token>>(payer).coin.value;
-    
-    let preburn = global<Libra::Preburn<Token>>(dd_addr);
-}
-
- - -The balance of payer decreases by amount. - - -
schema PreburnEnsures<Token> {
-    ensures payer_balance == old(payer_balance) - amount;
-}
-
- - -The value of preburn at dd_addr increases by amount; - - -
schema PreburnEnsures<Token> {
-    include Libra::PreburnEnsures<Token>{preburn: preburn};
-}
-
- - - -
- - - -## Function `extract_withdraw_capability` - -Return a unique capability granting permission to withdraw from the sender's account balance. - - -
public fun extract_withdraw_capability(sender: &signer): LibraAccount::WithdrawCapability
-
- - - -
-Implementation - - -
public fun extract_withdraw_capability(
-    sender: &signer
-): WithdrawCapability acquires LibraAccount {
-    let sender_addr = Signer::address_of(sender);
-    // Abort if we already extracted the unique withdraw capability for this account.
-    assert(
-        !delegated_withdraw_capability(sender_addr),
-        Errors::invalid_state(EWITHDRAW_CAPABILITY_ALREADY_EXTRACTED)
-    );
-    assert(exists_at(sender_addr), Errors::not_published(EACCOUNT));
-    let account = borrow_global_mut<LibraAccount>(sender_addr);
-    Option::extract(&mut account.withdraw_capability)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let sender_addr = Signer::spec_address_of(sender);
-modifies global<LibraAccount>(sender_addr);
-include ExtractWithdrawCapAbortsIf{sender_addr};
-ensures exists<LibraAccount>(sender_addr);
-ensures result == old(spec_get_withdraw_cap(sender_addr));
-ensures global<LibraAccount>(sender_addr) == update_field(old(global<LibraAccount>(sender_addr)),
-    withdraw_capability, Option::spec_none());
-ensures result.account_address == sender_addr;
-
- - - - - - - -
schema ExtractWithdrawCapAbortsIf {
-    sender_addr: address;
-    aborts_if !exists_at(sender_addr) with Errors::NOT_PUBLISHED;
-    aborts_if spec_holds_delegated_withdraw_capability(sender_addr) with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Function `restore_withdraw_capability` - -Return the withdraw capability to the account it originally came from - - -
public fun restore_withdraw_capability(cap: LibraAccount::WithdrawCapability)
-
- - - -
-Implementation - - -
public fun restore_withdraw_capability(cap: WithdrawCapability)
-acquires LibraAccount {
-    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
-    // Abort if the withdraw capability for this account is not extracted,
-    // indicating that the withdraw capability is not unique.
-    assert(
-        delegated_withdraw_capability(cap.account_address),
-        Errors::invalid_state(EWITHDRAW_CAPABILITY_NOT_EXTRACTED)
-    );
-    let account = borrow_global_mut<LibraAccount>(cap.account_address);
-    Option::fill(&mut account.withdraw_capability, cap)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let cap_addr = cap.account_address;
-modifies global<LibraAccount>(cap_addr);
-aborts_if !exists_at(cap_addr) with Errors::NOT_PUBLISHED;
-aborts_if !delegated_withdraw_capability(cap_addr) with Errors::INVALID_STATE;
-ensures spec_holds_own_withdraw_cap(cap_addr);
-
- - - -
- - - -## Function `pay_from` - -Withdraw amount Libra from the address embedded in WithdrawCapability and -deposits it into the payee's account balance. -The included metadata will appear in the SentPaymentEvent and ReceivedPaymentEvent. -The metadata_signature will only be checked if this payment is subject to the dual -attestation protocol - - -
public fun pay_from<Token>(cap: &LibraAccount::WithdrawCapability, payee: address, amount: u64, metadata: vector<u8>, metadata_signature: vector<u8>)
-
- - - -
-Implementation - - -
public fun pay_from<Token>(
-    cap: &WithdrawCapability,
-    payee: address,
-    amount: u64,
-    metadata: vector<u8>,
-    metadata_signature: vector<u8>
-) acquires LibraAccount, Balance, AccountOperationsCapability {
-    deposit<Token>(
-        *&cap.account_address,
-        payee,
-        withdraw_from(cap, payee, amount, copy metadata),
-        metadata,
-        metadata_signature
-    );
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let payer = cap.account_address;
-modifies global<LibraAccount>(payer);
-modifies global<LibraAccount>(payee);
-modifies global<Balance<Token>>(payer);
-modifies global<Balance<Token>>(payee);
-ensures exists_at(payer);
-ensures exists_at(payee);
-ensures exists<Balance<Token>>(payer);
-ensures exists<Balance<Token>>(payee);
-ensures global<LibraAccount>(payer).withdraw_capability ==
-    old(global<LibraAccount>(payer).withdraw_capability);
-include PayFromAbortsIf<Token>;
-include PayFromEnsures<Token>{payer};
-
- - - - - - - -
schema PayFromAbortsIf<Token> {
-    cap: WithdrawCapability;
-    payee: address;
-    amount: u64;
-    metadata: vector<u8>;
-    metadata_signature: vector<u8> ;
-    include DepositAbortsIf<Token>{payer: cap.account_address};
-    include cap.account_address != payee ==> DepositOverflowAbortsIf<Token>;
-    include WithdrawFromAbortsIf<Token>;
-}
-
- - - - - - - -
schema PayFromAbortsIfRestricted<Token> {
-    cap: WithdrawCapability;
-    payee: address;
-    amount: u64;
-    metadata: vector<u8>;
-    metadata_signature: vector<u8> ;
-    
-    let payer = cap.account_address;
-    include DepositAbortsIfRestricted<Token>{payer: cap.account_address};
-    include WithdrawFromBalanceNoLimitsAbortsIf<Token>{payer, balance: global<Balance<Token>>(payer)};
-    aborts_if !exists<Balance<Token>>(payer) with Errors::NOT_PUBLISHED;
-}
-
- - - - - - - -
schema PayFromEnsures<Token> {
-    payer: address;
-    payee: address;
-    amount: u64;
-    ensures payer == payee ==> balance<Token>(payer) == old(balance<Token>(payer));
-    ensures payer != payee ==> balance<Token>(payer) == old(balance<Token>(payer)) - amount;
-    ensures payer != payee ==> balance<Token>(payee) == old(balance<Token>(payee)) + amount;
-}
-
- - - -
- - - -## Function `rotate_authentication_key` - -Rotate the authentication key for the account under cap.account_address - - -
public fun rotate_authentication_key(cap: &LibraAccount::KeyRotationCapability, new_authentication_key: vector<u8>)
-
- - - -
-Implementation - - -
public fun rotate_authentication_key(
-    cap: &KeyRotationCapability,
-    new_authentication_key: vector<u8>,
-) acquires LibraAccount  {
-    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
-    let sender_account_resource = borrow_global_mut<LibraAccount>(cap.account_address);
-    // Don't allow rotating to clearly invalid key
-    assert(
-        Vector::length(&new_authentication_key) == 32,
-        Errors::invalid_argument(EMALFORMED_AUTHENTICATION_KEY)
-    );
-    sender_account_resource.authentication_key = new_authentication_key;
-}
-
- - - -
- -
-Specification - - - -
include RotateAuthenticationKeyAbortsIf;
-include RotateAuthenticationKeyEnsures{addr: cap.account_address};
-include RotateOnlyKeyOfCapAddress;
-
- - - - - - - -
schema RotateAuthenticationKeyAbortsIf {
-    cap: &KeyRotationCapability;
-    new_authentication_key: vector<u8>;
-    aborts_if !exists_at(cap.account_address) with Errors::NOT_PUBLISHED;
-    aborts_if len(new_authentication_key) != 32 with Errors::INVALID_ARGUMENT;
-}
-
- - - - - - - -
schema RotateAuthenticationKeyEnsures {
-    addr: address;
-    new_authentication_key: vector<u8>;
-    ensures global<LibraAccount>(addr).authentication_key == new_authentication_key;
-}
-
- - - - - -### Access Control - - - - - - -
schema RotateOnlyKeyOfCapAddress {
-    cap: KeyRotationCapability;
-}
-
- - -Can only rotate the authentication_key of cap.account_address [[H17]][PERMISSION]. - - -
schema RotateOnlyKeyOfCapAddress {
-    ensures forall addr: address where addr != cap.account_address && old(exists_at(addr)):
-        global<LibraAccount>(addr).authentication_key == old(global<LibraAccount>(addr).authentication_key);
-}
-
- - - -
- - - -## Function `extract_key_rotation_capability` - -Return a unique capability granting permission to rotate the sender's authentication key - - -
public fun extract_key_rotation_capability(account: &signer): LibraAccount::KeyRotationCapability
-
- - - -
-Implementation - - -
public fun extract_key_rotation_capability(account: &signer): KeyRotationCapability
-acquires LibraAccount {
-    let account_address = Signer::address_of(account);
-    // Abort if we already extracted the unique key rotation capability for this account.
-    assert(
-        !delegated_key_rotation_capability(account_address),
-        Errors::invalid_state(EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED)
-    );
-    assert(exists_at(account_address), Errors::not_published(EACCOUNT));
-    let account = borrow_global_mut<LibraAccount>(account_address);
-    Option::extract(&mut account.key_rotation_capability)
-}
-
- - - -
- -
-Specification - - - -
include ExtractKeyRotationCapabilityAbortsIf;
-include ExtractKeyRotationCapabilityEnsures;
-
- - - - - - - -
schema ExtractKeyRotationCapabilityAbortsIf {
-    account: signer;
-    
-    let account_addr = Signer::spec_address_of(account);
-    aborts_if !exists_at(account_addr) with Errors::NOT_PUBLISHED;
-    include AbortsIfDelegatedKeyRotationCapability;
-}
-
- - - - - - - -
schema AbortsIfDelegatedKeyRotationCapability {
-    account: signer;
-    aborts_if delegated_key_rotation_capability(Signer::spec_address_of(account)) with Errors::INVALID_STATE;
-}
-
- - - - - - - -
schema ExtractKeyRotationCapabilityEnsures {
-    account: signer;
-    ensures delegated_key_rotation_capability(Signer::spec_address_of(account));
-}
-
- - - -
- - - -## Function `restore_key_rotation_capability` - -Return the key rotation capability to the account it originally came from - - -
public fun restore_key_rotation_capability(cap: LibraAccount::KeyRotationCapability)
-
- - - -
-Implementation - - -
public fun restore_key_rotation_capability(cap: KeyRotationCapability)
-acquires LibraAccount {
-    assert(exists_at(cap.account_address), Errors::not_published(EACCOUNT));
-    let account = borrow_global_mut<LibraAccount>(cap.account_address);
-    Option::fill(&mut account.key_rotation_capability, cap)
-}
-
- - - -
- -
-Specification - - - -
include RestoreKeyRotationCapabilityAbortsIf;
-include RestoreKeyRotationCapabilityEnsures;
-
- - - - - - - -
schema RestoreKeyRotationCapabilityAbortsIf {
-    cap: KeyRotationCapability;
-    aborts_if !exists_at(cap.account_address) with Errors::NOT_PUBLISHED;
-    aborts_if !delegated_key_rotation_capability(cap.account_address) with Errors::INVALID_ARGUMENT;
-}
-
- - - - - - - -
schema RestoreKeyRotationCapabilityEnsures {
-    cap: KeyRotationCapability;
-    ensures spec_holds_own_key_rotation_cap(cap.account_address);
-}
-
- - - -
- - - -## Function `add_currencies_for_account` - -Add balances for Token to new_account. If add_all_currencies is true, -then add for both token types. - - -
fun add_currencies_for_account<Token>(new_account: &signer, add_all_currencies: bool)
-
- - - -
-Implementation - - -
fun add_currencies_for_account<Token>(
-    new_account: &signer,
-    add_all_currencies: bool,
-) {
-    let new_account_addr = Signer::address_of(new_account);
-    add_currency<Token>(new_account);
-    if (add_all_currencies) {
-        if (!exists<Balance<Coin1>>(new_account_addr)) {
-            add_currency<Coin1>(new_account);
-        };
-        if (!exists<Balance<LBR>>(new_account_addr)) {
-            add_currency<LBR>(new_account);
-        };
-    };
-}
-
- - - -
- -
-Specification - - - - - - -
let new_account_addr = Signer::spec_address_of(new_account);
-aborts_if !Roles::spec_can_hold_balance_addr(new_account_addr) with Errors::INVALID_ARGUMENT;
-include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_addr};
-include AddCurrencyForAccountEnsures<Token>{addr: new_account_addr};
-
- - - - - - - -
schema AddCurrencyForAccountAbortsIf<Token> {
-    addr: address;
-    add_all_currencies: bool;
-    include Libra::AbortsIfNoCurrency<Token>;
-    aborts_if exists<Balance<Token>>(addr) with Errors::ALREADY_PUBLISHED;
-    include add_all_currencies && !exists<Balance<Coin1>>(addr)
-        ==> Libra::AbortsIfNoCurrency<Coin1>;
-    include add_all_currencies && !exists<Balance<LBR>>(addr)
-        ==> Libra::AbortsIfNoCurrency<LBR>;
-}
-
- - - - - - - -
schema AddCurrencyForAccountEnsures<Token> {
-    addr: address;
-    add_all_currencies: bool;
-    include AddCurrencyEnsures<Token>;
-    include add_all_currencies && !exists<Balance<Coin1>>(addr)
-        ==> AddCurrencyEnsures<Coin1>;
-    include add_all_currencies && !exists<Balance<LBR>>(addr)
-        ==> AddCurrencyEnsures<LBR>;
-}
-
- - - -
- - - -## Function `make_account` - -Creates a new account with account at new_account_address with -authentication key auth_key_prefix | fresh_address. -Aborts if there is already an account at new_account_address. - -Creating an account at address 0x0 will abort as it is a reserved address for the MoveVM. - - -
fun make_account(new_account: signer, auth_key_prefix: vector<u8>)
-
- - - -
-Implementation - - -
fun make_account(
-    new_account: signer,
-    auth_key_prefix: vector<u8>,
-) acquires AccountOperationsCapability {
-    let new_account_addr = Signer::address_of(&new_account);
-    // cannot create an account at the reserved address 0x0
-    assert(
-        new_account_addr != CoreAddresses::VM_RESERVED_ADDRESS(),
-        Errors::invalid_argument(ECANNOT_CREATE_AT_VM_RESERVED)
-    );
-    assert(
-        new_account_addr != CoreAddresses::CORE_CODE_ADDRESS(),
-        Errors::invalid_argument(ECANNOT_CREATE_AT_CORE_CODE)
-    );
-
-    // Construct authentication key.
-    let authentication_key = create_authentication_key(&new_account, auth_key_prefix);
-
-    // Publish AccountFreezing::FreezingBit (initially not frozen)
-    AccountFreezing::create(&new_account);
-    // The AccountOperationsCapability is published during Genesis, so it should
-    // always exist.  This is a sanity check.
-    assert(
-        exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()),
-        Errors::not_published(EACCOUNT_OPERATIONS_CAPABILITY)
-    );
-    // Emit the CreateAccountEvent
-    Event::emit_event(
-        &mut borrow_global_mut<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()).creation_events,
-        CreateAccountEvent { created: new_account_addr, role_id: Roles::get_role_id(new_account_addr) },
-    );
-    // Publishing the account resource last makes it possible to prove invariants that simplify
-    // aborts_if's, etc.
-    move_to(
-        &new_account,
-        LibraAccount {
-            authentication_key,
-            withdraw_capability: Option::some(
-                WithdrawCapability {
-                    account_address: new_account_addr
-            }),
-            key_rotation_capability: Option::some(
-                KeyRotationCapability {
-                    account_address: new_account_addr
-            }),
-            received_events: Event::new_event_handle<ReceivedPaymentEvent>(&new_account),
-            sent_events: Event::new_event_handle<SentPaymentEvent>(&new_account),
-            sequence_number: 0,
-        }
-    );
-    destroy_signer(new_account);
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let new_account_addr = Signer::address_of(new_account);
-modifies global<LibraAccount>(new_account_addr);
-modifies global<AccountFreezing::FreezingBit>(new_account_addr);
-modifies global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-ensures exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-requires exists<Roles::RoleId>(new_account_addr);
-include MakeAccountAbortsIf{addr: new_account_addr};
-ensures exists_at(new_account_addr);
-ensures AccountFreezing::spec_account_is_not_frozen(new_account_addr);
-
-let account_ops_cap = global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events);
-ensures spec_holds_own_key_rotation_cap(new_account_addr);
-ensures spec_holds_own_withdraw_cap(new_account_addr);
-
- - - - - - - -
schema MakeAccountAbortsIf {
-    addr: address;
-    auth_key_prefix: vector<u8>;
-    aborts_if addr == CoreAddresses::VM_RESERVED_ADDRESS() with Errors::INVALID_ARGUMENT;
-    aborts_if addr == CoreAddresses::CORE_CODE_ADDRESS() with Errors::INVALID_ARGUMENT;
-    aborts_if exists<AccountFreezing::FreezingBit>(addr) with Errors::ALREADY_PUBLISHED;
-    aborts_if LibraTimestamp::is_genesis()
-        && !exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-        with Errors::NOT_PUBLISHED;
-    include CreateAuthenticationKeyAbortsIf;
-}
-
- - - -
- - - -## Function `create_authentication_key` - -Construct an authentication key, aborting if the prefix is not valid. - - -
fun create_authentication_key(account: &signer, auth_key_prefix: vector<u8>): vector<u8>
-
- - - -
-Implementation - - -
fun create_authentication_key(account: &signer, auth_key_prefix: vector<u8>): vector<u8> {
-    let authentication_key = auth_key_prefix;
-    Vector::append(
-        &mut authentication_key, LCS::to_bytes(Signer::borrow_address(account))
-    );
-    assert(
-        Vector::length(&authentication_key) == 32,
-        Errors::invalid_argument(EMALFORMED_AUTHENTICATION_KEY)
-    );
-    authentication_key
-}
-
- - - -
- -
-Specification - - -The specification of this function is abstracted to avoid the complexity of -vector concatenation of serialization results. The actual value of the key -is assumed to be irrelevant for callers. Instead the uninterpreted function -spec_abstract_create_authentication_key is used to represent the key value. -The aborts behavior is, however, preserved: the caller must provide a -key prefix of a specific length. - - -
pragma opaque;
-include [abstract] CreateAuthenticationKeyAbortsIf;
-ensures [abstract]
-    result == spec_abstract_create_authentication_key(auth_key_prefix) &&
-    len(result) == 32;
-
- - - - - - - -
schema CreateAuthenticationKeyAbortsIf {
-    auth_key_prefix: vector<u8>;
-    aborts_if 16 + len(auth_key_prefix) != 32 with Errors::INVALID_ARGUMENT;
-}
-
- - - - - - - -
define spec_abstract_create_authentication_key(auth_key_prefix: vector<u8>): vector<u8>;
-
- - - -
- - - -## Function `create_libra_root_account` - -Creates the libra root account (during genesis). Publishes the Libra root role, -Publishes a SlidingNonce resource, sets up event generator, publishes -AccountOperationsCapability, WriteSetManager, and finally makes the account. - - -
fun create_libra_root_account(auth_key_prefix: vector<u8>)
-
- - - -
-Implementation - - -
fun create_libra_root_account(
-    auth_key_prefix: vector<u8>,
-) acquires AccountOperationsCapability {
-    LibraTimestamp::assert_genesis();
-    let lr_account = create_signer(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    CoreAddresses::assert_libra_root(&lr_account);
-    Roles::grant_libra_root_role(&lr_account);
-    SlidingNonce::publish(&lr_account);
-    Event::publish_generator(&lr_account);
-
-    assert(
-        !exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()),
-        Errors::already_published(EACCOUNT_OPERATIONS_CAPABILITY)
-    );
-    move_to(
-        &lr_account,
-        AccountOperationsCapability {
-            limits_cap: AccountLimits::grant_mutation_capability(&lr_account),
-            creation_events: Event::new_event_handle<CreateAccountEvent>(&lr_account),
-        }
-    );
-    assert(
-        !exists<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS()),
-        Errors::already_published(EWRITESET_MANAGER)
-    );
-    move_to(
-        &lr_account,
-        LibraWriteSetManager {
-            upgrade_events: Event::new_event_handle<Self::AdminTransactionEvent>(&lr_account),
-        }
-    );
-    make_account(lr_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include CreateLibraRootAccountModifies;
-include CreateLibraRootAccountAbortsIf;
-include CreateLibraRootAccountEnsures;
-
- - - - - - - - - - -
schema CreateLibraRootAccountModifies {
-    let lr_addr = CoreAddresses::LIBRA_ROOT_ADDRESS();
-    modifies global<LibraAccount>(lr_addr);
-    modifies global<AccountOperationsCapability>(lr_addr);
-    modifies global<LibraWriteSetManager>(lr_addr);
-    modifies global<SlidingNonce::SlidingNonce>(lr_addr);
-    modifies global<Roles::RoleId>(lr_addr);
-    modifies global<AccountFreezing::FreezingBit>(lr_addr);
-}
-
- - - - - - - -
schema CreateLibraRootAccountAbortsIf {
-    auth_key_prefix: vector<u8>;
-    include LibraTimestamp::AbortsIfNotGenesis;
-    include Roles::GrantRole{addr: CoreAddresses::LIBRA_ROOT_ADDRESS(), role_id: Roles::LIBRA_ROOT_ROLE_ID};
-    aborts_if exists<SlidingNonce::SlidingNonce>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-        with Errors::ALREADY_PUBLISHED;
-    aborts_if exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-        with Errors::ALREADY_PUBLISHED;
-    aborts_if exists<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-        with Errors::ALREADY_PUBLISHED;
-    aborts_if exists<AccountFreezing::FreezingBit>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-        with Errors::ALREADY_PUBLISHED;
-    include CreateAuthenticationKeyAbortsIf;
-}
-
- - - - - - - - - - -
schema CreateLibraRootAccountEnsures {
-    let lr_addr = CoreAddresses::LIBRA_ROOT_ADDRESS();
-    ensures exists<AccountOperationsCapability>(lr_addr);
-    ensures exists<LibraWriteSetManager>(lr_addr);
-    ensures exists<SlidingNonce::SlidingNonce>(lr_addr);
-    ensures Roles::spec_has_libra_root_role_addr(lr_addr);
-    ensures exists_at(lr_addr);
-    ensures AccountFreezing::spec_account_is_not_frozen(lr_addr);
-    ensures spec_holds_own_key_rotation_cap(lr_addr);
-    ensures spec_holds_own_withdraw_cap(lr_addr);
-}
-
- - - -
- - - -## Function `create_treasury_compliance_account` - -Create a treasury/compliance account at new_account_address with authentication key -auth_key_prefix | new_account_address. Can only be called during genesis. -Also, publishes the treasury compliance role, the SlidingNonce resource, and -event handle generator, then makes the account. - - -
fun create_treasury_compliance_account(lr_account: &signer, auth_key_prefix: vector<u8>)
-
- - - -
-Implementation - - -
fun create_treasury_compliance_account(
-    lr_account: &signer,
-    auth_key_prefix: vector<u8>,
-) acquires AccountOperationsCapability {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-    let new_account_address = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
-    let new_account = create_signer(new_account_address);
-    Roles::grant_treasury_compliance_role(&new_account, lr_account);
-    SlidingNonce::publish(&new_account);
-    Event::publish_generator(&new_account);
-    make_account(new_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-
-let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
-include CreateTreasuryComplianceAccountModifies;
-include CreateTreasuryComplianceAccountAbortsIf;
-include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include MakeAccountAbortsIf{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS()};
-include CreateTreasuryComplianceAccountEnsures;
-
-let account_ops_cap = global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-ensures account_ops_cap == update_field(old(account_ops_cap), creation_events, account_ops_cap.creation_events);
-
- - - - - - - - - - -
schema CreateTreasuryComplianceAccountModifies {
-    let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
-    modifies global<LibraAccount>(tc_addr);
-    modifies global<SlidingNonce::SlidingNonce>(tc_addr);
-    modifies global<Roles::RoleId>(tc_addr);
-    modifies global<AccountFreezing::FreezingBit>(tc_addr);
-    modifies global<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    ensures exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-}
-
- - - - - - - -
schema CreateTreasuryComplianceAccountAbortsIf {
-    lr_account: signer;
-    auth_key_prefix: vector<u8>;
-    include LibraTimestamp::AbortsIfNotGenesis;
-    include Roles::GrantRole{addr: CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(), role_id: Roles::TREASURY_COMPLIANCE_ROLE_ID};
-    aborts_if exists<SlidingNonce::SlidingNonce>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS())
-        with Errors::ALREADY_PUBLISHED;
-}
-
- - - - - - - - - - -
schema CreateTreasuryComplianceAccountEnsures {
-    let tc_addr = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
-    ensures Roles::spec_has_treasury_compliance_role_addr(tc_addr);
-    ensures exists_at(tc_addr);
-    ensures exists<SlidingNonce::SlidingNonce>(tc_addr);
-    ensures AccountFreezing::spec_account_is_not_frozen(tc_addr);
-    ensures spec_holds_own_key_rotation_cap(tc_addr);
-    ensures spec_holds_own_withdraw_cap(tc_addr);
-}
-
- - - -
- - - -## Function `create_designated_dealer` - -Create a designated dealer account at new_account_address with authentication key -auth_key_prefix | new_account_address, for non synthetic CoinType. -Creates Preburn resource under account 'new_account_address' - - -
public fun create_designated_dealer<CoinType>(creator_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>, add_all_currencies: bool)
-
- - - -
-Implementation - - -
public fun create_designated_dealer<CoinType>(
-    creator_account: &signer,
-    new_account_address: address,
-    auth_key_prefix: vector<u8>,
-    human_name: vector<u8>,
-    add_all_currencies: bool,
-) acquires AccountOperationsCapability {
-    let new_dd_account = create_signer(new_account_address);
-    Event::publish_generator(&new_dd_account);
-    Roles::new_designated_dealer_role(creator_account, &new_dd_account);
-    DesignatedDealer::publish_designated_dealer_credential<CoinType>(&new_dd_account, creator_account, add_all_currencies);
-    add_currencies_for_account<CoinType>(&new_dd_account, add_all_currencies);
-    DualAttestation::publish_credential(&new_dd_account, creator_account, human_name);
-    make_account(new_dd_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
include CreateDesignatedDealerAbortsIf<CoinType>;
-include CreateDesignatedDealerEnsures<CoinType>;
-
- - - - - - - -
schema CreateDesignatedDealerAbortsIf<CoinType> {
-    creator_account: signer;
-    new_account_address: address;
-    auth_key_prefix: vector<u8>;
-    add_all_currencies: bool;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Roles::AbortsIfNotTreasuryCompliance{account: creator_account};
-    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
-    aborts_if exists<DesignatedDealer::Dealer>(new_account_address) with Errors::ALREADY_PUBLISHED;
-    include if (add_all_currencies) DesignatedDealer::AddCurrencyAbortsIf<Coin1>{dd_addr: new_account_address}
-            else DesignatedDealer::AddCurrencyAbortsIf<CoinType>{dd_addr: new_account_address};
-    include AddCurrencyForAccountAbortsIf<CoinType>{addr: new_account_address};
-    include MakeAccountAbortsIf{addr: new_account_address};
-}
-
- - - - - - - -
schema CreateDesignatedDealerEnsures<CoinType> {
-    new_account_address: address;
-    ensures exists<DesignatedDealer::Dealer>(new_account_address);
-    ensures exists_at(new_account_address);
-    ensures Roles::spec_has_designated_dealer_role_addr(new_account_address);
-    include AddCurrencyForAccountEnsures<CoinType>{addr: new_account_address};
-}
-
- - - -
- - - -## Function `create_parent_vasp_account` - -Create an account with the ParentVASP role at new_account_address with authentication key -auth_key_prefix | new_account_address. If add_all_currencies is true, 0 balances for -all available currencies in the system will also be added. - - -
public fun create_parent_vasp_account<Token>(creator_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>, add_all_currencies: bool)
-
- - - -
-Implementation - - -
public fun create_parent_vasp_account<Token>(
-    creator_account: &signer,  // TreasuryCompliance
-    new_account_address: address,
-    auth_key_prefix: vector<u8>,
-    human_name: vector<u8>,
-    add_all_currencies: bool
-) acquires AccountOperationsCapability {
-    let new_account = create_signer(new_account_address);
-    Roles::new_parent_vasp_role(creator_account, &new_account);
-    VASP::publish_parent_vasp_credential(&new_account, creator_account);
-    Event::publish_generator(&new_account);
-    DualAttestation::publish_credential(&new_account, creator_account, human_name);
-    add_currencies_for_account<Token>(&new_account, add_all_currencies);
-    make_account(new_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
include CreateParentVASPAccountAbortsIf<Token>;
-include CreateParentVASPAccountEnsures<Token>;
-
- - - - - - - -
schema CreateParentVASPAccountAbortsIf<Token> {
-    creator_account: signer;
-    new_account_address: address;
-    auth_key_prefix: vector<u8>;
-    add_all_currencies: bool;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Roles::AbortsIfNotTreasuryCompliance{account: creator_account};
-    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
-    aborts_if VASP::is_vasp(new_account_address) with Errors::ALREADY_PUBLISHED;
-    include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_address};
-    include MakeAccountAbortsIf{addr: new_account_address};
-}
-
- - - - - - - -
schema CreateParentVASPAccountEnsures<Token> {
-    new_account_address: address;
-    include VASP::PublishParentVASPEnsures{vasp_addr: new_account_address};
-    ensures exists_at(new_account_address);
-    ensures Roles::spec_has_parent_VASP_role_addr(new_account_address);
-    include AddCurrencyForAccountEnsures<Token>{addr: new_account_address};
-}
-
- - - -
- - - -## Function `create_child_vasp_account` - -Create an account with the ChildVASP role at new_account_address with authentication key -auth_key_prefix | new_account_address and a 0 balance of type Token. If -add_all_currencies is true, 0 balances for all avaialable currencies in the system will -also be added. This account will be a child of creator, which must be a ParentVASP. - - -
public fun create_child_vasp_account<Token>(parent: &signer, new_account_address: address, auth_key_prefix: vector<u8>, add_all_currencies: bool)
-
- - - -
-Implementation - - -
public fun create_child_vasp_account<Token>(
-    parent: &signer,
-    new_account_address: address,
-    auth_key_prefix: vector<u8>,
-    add_all_currencies: bool,
-) acquires AccountOperationsCapability {
-    let new_account = create_signer(new_account_address);
-    Roles::new_child_vasp_role(parent, &new_account);
-    VASP::publish_child_vasp_credential(
-        parent,
-        &new_account,
-    );
-    Event::publish_generator(&new_account);
-    add_currencies_for_account<Token>(&new_account, add_all_currencies);
-    make_account(new_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
include CreateChildVASPAccountAbortsIf<Token>;
-include CreateChildVASPAccountEnsures<Token>{
-    parent_addr: Signer::spec_address_of(parent),
-    child_addr: new_account_address,
-};
-include AddCurrencyForAccountEnsures<Token>{addr: new_account_address};
-
- - - - - - - -
schema CreateChildVASPAccountAbortsIf<Token> {
-    parent: signer;
-    new_account_address: address;
-    auth_key_prefix: vector<u8>;
-    add_all_currencies: bool;
-    include Roles::AbortsIfNotParentVasp{account: parent};
-    aborts_if exists<Roles::RoleId>(new_account_address) with Errors::ALREADY_PUBLISHED;
-    include VASP::PublishChildVASPAbortsIf{child_addr: new_account_address};
-    include AddCurrencyForAccountAbortsIf<Token>{addr: new_account_address};
-    include MakeAccountAbortsIf{addr: new_account_address};
-}
-
- - - - - - - -
schema CreateChildVASPAccountEnsures<Token> {
-    parent_addr: address;
-    child_addr: address;
-    add_all_currencies: bool;
-    include VASP::PublishChildVASPEnsures;
-    ensures exists_at(child_addr);
-    ensures Roles::spec_has_child_VASP_role_addr(child_addr);
-}
-
- - - -
- - - -## Function `create_signer` - - - -
fun create_signer(addr: address): signer
-
- - - -
-Implementation - - -
native fun create_signer(addr: address): signer;
-
- - - -
- - - -## Function `destroy_signer` - - - -
fun destroy_signer(sig: signer)
-
- - - -
-Implementation - - -
native fun destroy_signer(sig: signer);
-
- - - -
- - - -## Function `balance_for` - -Helper to return the u64 value of the balance for account - - -
fun balance_for<Token>(balance: &LibraAccount::Balance<Token>): u64
-
- - - -
-Implementation - - -
fun balance_for<Token>(balance: &Balance<Token>): u64 {
-    Libra::value<Token>(&balance.coin)
-}
-
- - - -
- - - -## Function `balance` - -Return the current balance of the account at addr. - - -
public fun balance<Token>(addr: address): u64
-
- - - -
-Implementation - - -
public fun balance<Token>(addr: address): u64 acquires Balance {
-    assert(exists<Balance<Token>>(addr), Errors::not_published(EPAYER_DOESNT_HOLD_CURRENCY));
-    balance_for(borrow_global<Balance<Token>>(addr))
-}
-
- - - -
- -
-Specification - - - -
aborts_if !exists<Balance<Token>>(addr) with Errors::NOT_PUBLISHED;
-
- - - -
- - - -## Function `add_currency` - -Add a balance of Token type to the sending account - - -
public fun add_currency<Token>(account: &signer)
-
- - - -
-Implementation - - -
public fun add_currency<Token>(account: &signer) {
-    // aborts if `Token` is not a currency type in the system
-    Libra::assert_is_currency<Token>();
-    // Check that an account with this role is allowed to hold funds
-    assert(
-        Roles::can_hold_balance(account),
-        Errors::invalid_argument(EROLE_CANT_STORE_BALANCE)
-    );
-    // aborts if this account already has a balance in `Token`
-    let addr = Signer::address_of(account);
-    assert(!exists<Balance<Token>>(addr), Errors::already_published(EADD_EXISTING_CURRENCY));
-
-    move_to(account, Balance<Token>{ coin: Libra::zero<Token>() })
-}
-
- - - -
- -
-Specification - - - -
include AddCurrencyAbortsIf<Token>;
-include AddCurrencyEnsures<Token>{addr: Signer::spec_address_of(account)};
-
- - - - - - - -
schema AddCurrencyAbortsIf<Token> {
-    account: signer;
-}
-
- - -Currency must be valid - - -
schema AddCurrencyAbortsIf<Token> {
-    include Libra::AbortsIfNoCurrency<Token>;
-}
-
- - -account cannot have an existing balance in Currency - - -
schema AddCurrencyAbortsIf<Token> {
-    aborts_if exists<Balance<Token>>(Signer::address_of(account)) with Errors::ALREADY_PUBLISHED;
-}
-
- - -account must be allowed to hold balances. - - -
schema AddCurrencyAbortsIf<Token> {
-    include AbortsIfAccountCantHoldBalance;
-}
-
- - - - - - - -
schema AddCurrencyEnsures<Token> {
-    addr: address;
-}
-
- - -This publishes a Balance<Currency> to the caller's account - - -
schema AddCurrencyEnsures<Token> {
-    ensures exists<Balance<Token>>(addr);
-    ensures global<Balance<Token>>(addr)
-        == Balance<Token>{ coin: Libra<Token> { value: 0 } };
-}
-
- - - - - -### Access Control - - - - - - -
schema AbortsIfAccountCantHoldBalance {
-    account: signer;
-}
-
- - -This function must abort if the predicate can_hold_balance for account returns false -[[D1]][ROLE][[D2]][ROLE][[D3]][ROLE][[D4]][ROLE][[D5]][ROLE][[D6]][ROLE][[D7]][ROLE]. - - -
schema AbortsIfAccountCantHoldBalance {
-    aborts_if !Roles::can_hold_balance(account) with Errors::INVALID_ARGUMENT;
-}
-
- - - -
- - - -## Function `accepts_currency` - -Return whether the account at addr accepts Token type coins - - -
public fun accepts_currency<Token>(addr: address): bool
-
- - - -
-Implementation - - -
public fun accepts_currency<Token>(addr: address): bool {
-    exists<Balance<Token>>(addr)
-}
-
- - - -
- - - -## Function `sequence_number_for_account` - -Helper to return the sequence number field for given account - - -
fun sequence_number_for_account(account: &LibraAccount::LibraAccount): u64
-
- - - -
-Implementation - - -
fun sequence_number_for_account(account: &LibraAccount): u64 {
-    account.sequence_number
-}
-
- - - -
- - - -## Function `sequence_number` - -Return the current sequence number at addr - - -
public fun sequence_number(addr: address): u64
-
- - - -
-Implementation - - -
public fun sequence_number(addr: address): u64 acquires LibraAccount {
-    assert(exists_at(addr), Errors::not_published(EACCOUNT));
-    sequence_number_for_account(borrow_global<LibraAccount>(addr))
-}
-
- - - -
- - - -## Function `authentication_key` - -Return the authentication key for this account - - -
public fun authentication_key(addr: address): vector<u8>
-
- - - -
-Implementation - - -
public fun authentication_key(addr: address): vector<u8> acquires LibraAccount {
-    assert(exists_at(addr), Errors::not_published(EACCOUNT));
-    *&borrow_global<LibraAccount>(addr).authentication_key
-}
-
- - - -
- - - -## Function `delegated_key_rotation_capability` - -Return true if the account at addr has delegated its key rotation capability - - -
public fun delegated_key_rotation_capability(addr: address): bool
-
- - - -
-Implementation - - -
public fun delegated_key_rotation_capability(addr: address): bool
-acquires LibraAccount {
-    assert(exists_at(addr), Errors::not_published(EACCOUNT));
-    Option::is_none(&borrow_global<LibraAccount>(addr).key_rotation_capability)
-}
-
- - - -
- - - -## Function `delegated_withdraw_capability` - -Return true if the account at addr has delegated its withdraw capability - - -
public fun delegated_withdraw_capability(addr: address): bool
-
- - - -
-Implementation - - -
public fun delegated_withdraw_capability(addr: address): bool
-acquires LibraAccount {
-    assert(exists_at(addr), Errors::not_published(EACCOUNT));
-    Option::is_none(&borrow_global<LibraAccount>(addr).withdraw_capability)
-}
-
- - - -
- - - -## Function `withdraw_capability_address` - -Return a reference to the address associated with the given withdraw capability - - -
public fun withdraw_capability_address(cap: &LibraAccount::WithdrawCapability): &address
-
- - - -
-Implementation - - -
public fun withdraw_capability_address(cap: &WithdrawCapability): &address {
-    &cap.account_address
-}
-
- - - -
- - - -## Function `key_rotation_capability_address` - -Return a reference to the address associated with the given key rotation capability - - -
public fun key_rotation_capability_address(cap: &LibraAccount::KeyRotationCapability): &address
-
- - - -
-Implementation - - -
public fun key_rotation_capability_address(cap: &KeyRotationCapability): &address {
-    &cap.account_address
-}
-
- - - -
- - - -## Function `exists_at` - -Checks if an account exists at check_addr - - -
public fun exists_at(check_addr: address): bool
-
- - - -
-Implementation - - -
public fun exists_at(check_addr: address): bool {
-    exists<LibraAccount>(check_addr)
-}
-
- - - -
- - - -## Function `module_prologue` - -The prologue for module transaction - - -
fun module_prologue<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time: u64, chain_id: u8)
-
- - - -
-Implementation - - -
fun module_prologue<Token>(
-    sender: &signer,
-    txn_sequence_number: u64,
-    txn_public_key: vector<u8>,
-    txn_gas_price: u64,
-    txn_max_gas_units: u64,
-    txn_expiration_time: u64,
-    chain_id: u8,
-) acquires LibraAccount, Balance {
-    assert(
-        LibraTransactionPublishingOption::is_module_allowed(sender),
-        Errors::invalid_state(PROLOGUE_EMODULE_NOT_ALLOWED),
-    );
-
-    prologue_common<Token>(
-        sender,
-        txn_sequence_number,
-        txn_public_key,
-        txn_gas_price,
-        txn_max_gas_units,
-        txn_expiration_time,
-        chain_id,
-    )
-}
-
- - - -
- -
-Specification - - - - - - -
let transaction_sender = Signer::spec_address_of(sender);
-
-let max_transaction_fee = txn_gas_price * txn_max_gas_units;
-include ModulePrologueAbortsIf<Token> {
-    max_transaction_fee,
-    txn_expiration_time_seconds: txn_expiration_time,
-};
-ensures prologue_guarantees(sender);
-
- - - - - - - -
schema ModulePrologueAbortsIf<Token> {
-    sender: signer;
-    txn_sequence_number: u64;
-    txn_public_key: vector<u8>;
-    chain_id: u8;
-    max_transaction_fee: u128;
-    txn_expiration_time_seconds: u64;
-    
-    let transaction_sender = Signer::spec_address_of(sender);
-    include PrologueCommonAbortsIf<Token> {
-        transaction_sender,
-        txn_sequence_number,
-        txn_public_key,
-        chain_id,
-        max_transaction_fee,
-        txn_expiration_time_seconds,
-    };
-}
-
- - -Aborts only in genesis. Does not need to be handled. - - -
schema ModulePrologueAbortsIf<Token> {
-    include LibraTransactionPublishingOption::AbortsIfNoTransactionPublishingOption;
-}
-
- - -Covered: L75 (Match 9) - - -
schema ModulePrologueAbortsIf<Token> {
-    aborts_if !LibraTransactionPublishingOption::spec_is_module_allowed(sender) with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Function `script_prologue` - -The prologue for script transaction - - -
fun script_prologue<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time: u64, chain_id: u8, script_hash: vector<u8>)
-
- - - -
-Implementation - - -
fun script_prologue<Token>(
-    sender: &signer,
-    txn_sequence_number: u64,
-    txn_public_key: vector<u8>,
-    txn_gas_price: u64,
-    txn_max_gas_units: u64,
-    txn_expiration_time: u64,
-    chain_id: u8,
-    script_hash: vector<u8>,
-) acquires LibraAccount, Balance {
-    assert(
-        LibraTransactionPublishingOption::is_script_allowed(sender, &script_hash),
-        Errors::invalid_state(PROLOGUE_ESCRIPT_NOT_ALLOWED),
-    );
-
-    prologue_common<Token>(
-        sender,
-        txn_sequence_number,
-        txn_public_key,
-        txn_gas_price,
-        txn_max_gas_units,
-        txn_expiration_time,
-        chain_id,
-    )
-}
-
- - - -
- -
-Specification - - - - - - -
let transaction_sender = Signer::spec_address_of(sender);
-
-let max_transaction_fee = txn_gas_price * txn_max_gas_units;
-include ScriptPrologueAbortsIf<Token>{
-    max_transaction_fee,
-    txn_expiration_time_seconds: txn_expiration_time,
-};
-ensures prologue_guarantees(sender);
-
- - - - - - - -
schema ScriptPrologueAbortsIf<Token> {
-    sender: signer;
-    txn_sequence_number: u64;
-    txn_public_key: vector<u8>;
-    chain_id: u8;
-    max_transaction_fee: u128;
-    txn_expiration_time_seconds: u64;
-    script_hash: vector<u8>;
-    
-    let transaction_sender = Signer::spec_address_of(sender);
-    include PrologueCommonAbortsIf<Token> {transaction_sender};
-}
-
- - -Aborts only in Genesis. Does not need to be handled. - - -
schema ScriptPrologueAbortsIf<Token> {
-    include LibraTransactionPublishingOption::AbortsIfNoTransactionPublishingOption;
-}
-
- - -Covered: L74 (Match 8) - - -
schema ScriptPrologueAbortsIf<Token> {
-    aborts_if !LibraTransactionPublishingOption::spec_is_script_allowed(sender, script_hash) with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Function `writeset_prologue` - -The prologue for WriteSet transaction - - -
fun writeset_prologue(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_expiration_time: u64, chain_id: u8)
-
- - - -
-Implementation - - -
fun writeset_prologue(
-    sender: &signer,
-    txn_sequence_number: u64,
-    txn_public_key: vector<u8>,
-    txn_expiration_time: u64,
-    chain_id: u8,
-) acquires LibraAccount, Balance {
-    assert(
-        Signer::address_of(sender) == CoreAddresses::LIBRA_ROOT_ADDRESS(),
-        Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER)
-    );
-    assert(Roles::has_libra_root_role(sender), Errors::invalid_argument(PROLOGUE_INVALID_WRITESET_SENDER));
-
-    // Currency code don't matter here as it won't be charged anyway. Gas constants are ommitted.
-    prologue_common<Coin1>(
-        sender,
-        txn_sequence_number,
-        txn_public_key,
-        0,
-        0,
-        txn_expiration_time,
-        chain_id,
-    )
-}
-
- - - -
- -
-Specification - - - -
include WritesetPrologueAbortsIf {txn_expiration_time_seconds: txn_expiration_time};
-ensures prologue_guarantees(sender);
-ensures Roles::has_libra_root_role(sender);
-
- - - - - - - -
schema WritesetPrologueAbortsIf {
-    sender: signer;
-    txn_sequence_number: u64;
-    txn_public_key: vector<u8>;
-    txn_expiration_time_seconds: u64;
-    chain_id: u8;
-    
-    let transaction_sender = Signer::spec_address_of(sender);
-}
-
- - -Covered: L146 (Match 0) - - -
schema WritesetPrologueAbortsIf {
-    aborts_if transaction_sender != CoreAddresses::LIBRA_ROOT_ADDRESS() with Errors::INVALID_ARGUMENT;
-}
-
- - -Must abort if the signer does not have the LibraRoot role [[H9]][PERMISSION]. -Covered: L146 (Match 0) - - -
schema WritesetPrologueAbortsIf {
-    aborts_if !Roles::spec_has_libra_root_role_addr(transaction_sender) with Errors::INVALID_ARGUMENT;
-    include PrologueCommonAbortsIf<Coin1>{
-        transaction_sender,
-        max_transaction_fee: 0,
-    };
-}
-
- - - -
- - - -## Function `prologue_common` - -The common prologue is invoked at the beginning of every transaction -The main properties that it verifies: -- The account's auth key matches the transaction's public key -- That the account has enough balance to pay for all of the gas -- That the sequence number matches the transaction's sequence key - - -
fun prologue_common<Token>(sender: &signer, txn_sequence_number: u64, txn_public_key: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, txn_expiration_time_seconds: u64, chain_id: u8)
-
- - - -
-Implementation - - -
fun prologue_common<Token>(
-    sender: &signer,
-    txn_sequence_number: u64,
-    txn_public_key: vector<u8>,
-    txn_gas_price: u64,
-    txn_max_gas_units: u64,
-    txn_expiration_time_seconds: u64,
-    chain_id: u8,
-) acquires LibraAccount, Balance {
-    let transaction_sender = Signer::address_of(sender);
-
-    // [PCA1]: Check that the chain ID stored on-chain matches the chain ID specified by the transaction
-    assert(ChainId::get() == chain_id, Errors::invalid_argument(PROLOGUE_EBAD_CHAIN_ID));
-
-    // [PCA2]: Verify that the transaction sender's account exists
-    assert(exists_at(transaction_sender), Errors::invalid_argument(PROLOGUE_EACCOUNT_DNE));
-
-    // [PCA3]: We check whether this account is frozen, if it is no transaction can be sent from it.
-    assert(
-        !AccountFreezing::account_is_frozen(transaction_sender),
-        Errors::invalid_state(PROLOGUE_EACCOUNT_FROZEN)
-    );
-
-    // Load the transaction sender's account
-    let sender_account = borrow_global<LibraAccount>(transaction_sender);
-
-    // [PCA4]: Check that the hash of the transaction's public key matches the account's auth key
-    assert(
-        Hash::sha3_256(txn_public_key) == *&sender_account.authentication_key,
-        Errors::invalid_argument(PROLOGUE_EINVALID_ACCOUNT_AUTH_KEY),
-    );
-
-    // [PCA5]: Check that the account has enough balance for all of the gas
-    assert(
-        (txn_gas_price as u128) * (txn_max_gas_units as u128) <= MAX_U64,
-        Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT),
-    );
-
-    let max_transaction_fee = txn_gas_price * txn_max_gas_units;
-
-    // Don't grab the balance if the transaction fee is zero
-    if (max_transaction_fee > 0) {
-        // [PCA6]: Check that the account has a balance in this currency
-        assert(
-            exists<Balance<Token>>(transaction_sender),
-            Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
-        );
-        let balance_amount = balance<Token>(transaction_sender);
-        // [PCA7]: Check that the account can cover the maximum transaction fee
-        assert(
-            balance_amount >= max_transaction_fee,
-            Errors::invalid_argument(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
-        );
-    };
-
-    // [PCA8]: Check that the transaction hasn't expired
-    assert(
-        LibraTimestamp::now_seconds() < txn_expiration_time_seconds,
-        Errors::invalid_argument(PROLOGUE_ETRANSACTION_EXPIRED)
-    );
-
-    // [PCA9]: Check that the transaction sequence number is not too old (in the past)
-    assert(
-        txn_sequence_number >= sender_account.sequence_number,
-        Errors::invalid_argument(PROLOGUE_ESEQUENCE_NUMBER_TOO_OLD)
-    );
-
-    // [PCA10]: Check that the transaction's sequence number matches the
-    // current sequence number. Otherwise sequence number is too new by [PCA8].
-    assert(
-        txn_sequence_number == sender_account.sequence_number,
-        Errors::invalid_argument(PROLOGUE_ESEQUENCE_NUMBER_TOO_NEW)
-    );
-
-    // WARNING: No checks should be added here as the sequence number too new check should be the last check run
-    // by the prologue.
-}
-
- - - -
- -
-Specification - - - - - - -
let transaction_sender = Signer::spec_address_of(sender);
-
-let max_transaction_fee = txn_gas_price * txn_max_gas_units;
-include PrologueCommonAbortsIf<Token> {
-    transaction_sender,
-    max_transaction_fee,
-};
-
- - - - - - - -
schema PrologueCommonAbortsIf<Token> {
-    transaction_sender: address;
-    txn_sequence_number: u64;
-    txn_public_key: vector<u8>;
-    chain_id: u8;
-    max_transaction_fee: u128;
-    txn_expiration_time_seconds: u64;
-}
-
- - -Only happens if this is called in Genesis. Doesn't need to be handled. - - -
schema PrologueCommonAbortsIf<Token> {
-    include LibraTimestamp::AbortsIfNotOperating;
-}
-
- - -[PCA1] Covered: L73 (Match 7) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if chain_id != ChainId::spec_get_chain_id() with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA2] Covered: L65 (Match 4) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if !exists_at(transaction_sender) with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA3] Covered: L57 (Match 0) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if AccountFreezing::spec_account_is_frozen(transaction_sender) with Errors::INVALID_STATE;
-}
-
- - -[PCA4] Covered: L59 (Match 1) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if Hash::sha3_256(txn_public_key) != global<LibraAccount>(transaction_sender).authentication_key with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA5] Covered: L69 (Match 5) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if max_transaction_fee > MAX_U64 with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA6] Covered: L69 (Match 5) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if max_transaction_fee > 0 && !exists<Balance<Token>>(transaction_sender) with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA7] Covered: L69 (Match 5) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if max_transaction_fee > 0 && balance<Token>(transaction_sender) < max_transaction_fee with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA8] Covered: L72 (Match 6) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if LibraTimestamp::spec_now_seconds() >= txn_expiration_time_seconds with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA9] Covered: L61 (Match 2) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if txn_sequence_number < global<LibraAccount>(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT;
-}
-
- - -[PCA10] Covered: L63 (match 3) - - -
schema PrologueCommonAbortsIf<Token> {
-    aborts_if txn_sequence_number > global<LibraAccount>(transaction_sender).sequence_number with Errors::INVALID_ARGUMENT;
-}
-
- - - -
- - - -## Function `epilogue` - -Collects gas and bumps the sequence number for executing a transaction. -The epilogue is invoked at the end of the transaction. -If the exection of the epilogue fails, it is re-invoked with different arguments, and -based on the conditions checked in the prologue, should never fail. - - -
fun epilogue<Token>(account: &signer, txn_sequence_number: u64, txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64)
-
- - - -
-Implementation - - -
fun epilogue<Token>(
-    account: &signer,
-    txn_sequence_number: u64,
-    txn_gas_price: u64,
-    txn_max_gas_units: u64,
-    gas_units_remaining: u64
-) acquires LibraAccount, Balance {
-    let sender = Signer::address_of(account);
-
-    // [EA1; Invariant]: Make sure that the transaction's `max_gas_units` is greater
-    // than the number of gas units remaining after execution.
-    assert(txn_max_gas_units >= gas_units_remaining, Errors::invalid_argument(EGAS));
-    let gas_used = txn_max_gas_units - gas_units_remaining;
-
-    // [EA2; Invariant]: Make sure that the transaction fee would not overflow maximum
-    // number representable in a u64. Already checked in [PCA5].
-    assert(
-        (txn_gas_price as u128) * (gas_used as u128) <= MAX_U64,
-        Errors::limit_exceeded(EGAS)
-    );
-    let transaction_fee_amount = txn_gas_price * gas_used;
-
-    // [EA3; Invariant]: Make sure that account exists, and load the
-    // transaction sender's account. Already checked in [PCA2].
-    assert(exists_at(sender), Errors::not_published(EACCOUNT));
-    let sender_account = borrow_global_mut<LibraAccount>(sender);
-
-    // [EA4; Condition]: Make sure account's sequence number is within the
-    // representable range of u64. Bump the sequence number
-    assert(
-        sender_account.sequence_number < (MAX_U64 as u64),
-        Errors::limit_exceeded(ESEQUENCE_NUMBER)
-    );
-
-    // [EA4; Invariant]: Make sure passed-in `txn_sequence_number` matches
-    // the `sender_account`'s `sequence_number`. Already checked in [PCA9].
-    assert(
-        sender_account.sequence_number == txn_sequence_number,
-        Errors::invalid_argument(ESEQUENCE_NUMBER)
-    );
-
-    // The transaction sequence number is passed in to prevent any
-    // possibility of the account's sequence number increasing by more than
-    // one for any transaction.
-    sender_account.sequence_number = txn_sequence_number + 1;
-
-    if (transaction_fee_amount > 0) {
-        // [Invariant Use]: Balance for `Token` verified to exist for non-zero transaction fee amounts by [PCA6].
-        let sender_balance = borrow_global_mut<Balance<Token>>(sender);
-        let coin = &mut sender_balance.coin;
-
-        // [EA4; Condition]: Abort if this withdrawal would make the `sender_account`'s balance go negative
-        assert(
-            transaction_fee_amount <= Libra::value(coin),
-            Errors::limit_exceeded(PROLOGUE_ECANT_PAY_GAS_DEPOSIT)
-        );
-
-        // NB: `withdraw_from_balance` is not used as limits do not apply to this transaction fee
-        TransactionFee::pay_fee(Libra::withdraw(coin, transaction_fee_amount))
-    }
-}
-
- - - -
- - - -## Function `writeset_epilogue` - -Epilogue for WriteSet trasnaction - - -
fun writeset_epilogue(lr_account: &signer, txn_sequence_number: u64, should_trigger_reconfiguration: bool)
-
- - - -
-Implementation - - -
fun writeset_epilogue(
-    lr_account: &signer,
-    txn_sequence_number: u64,
-    should_trigger_reconfiguration: bool,
-) acquires LibraWriteSetManager, LibraAccount, Balance {
-    let writeset_events_ref = borrow_global_mut<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    Event::emit_event<AdminTransactionEvent>(
-        &mut writeset_events_ref.upgrade_events,
-        AdminTransactionEvent { committed_timestamp_secs: LibraTimestamp::now_seconds() },
-    );
-    // Currency code don't matter here as it won't be charged anyway.
-    epilogue<Coin1>(lr_account, txn_sequence_number, 0, 0, 0);
-    if (should_trigger_reconfiguration) LibraConfig::reconfigure(lr_account)
-}
-
- - - -
- - - -## Function `create_validator_account` - -Create a Validator account - - -
public fun create_validator_account(lr_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
-
- - - -
-Implementation - - -
public fun create_validator_account(
-    lr_account: &signer,
-    new_account_address: address,
-    auth_key_prefix: vector<u8>,
-    human_name: vector<u8>,
-) acquires AccountOperationsCapability {
-    let new_account = create_signer(new_account_address);
-    // The lr_account account is verified to have the libra root role in `Roles::new_validator_role`
-    Roles::new_validator_role(lr_account, &new_account);
-    Event::publish_generator(&new_account);
-    ValidatorConfig::publish(&new_account, lr_account, human_name);
-    make_account(new_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
include CreateValidatorAccountAbortsIf;
-include CreateValidatorAccountEnsures;
-
- - - - - - - -
schema CreateValidatorAccountAbortsIf {
-    lr_account: signer;
-    new_account_address: address;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    include MakeAccountAbortsIf{addr: new_account_address};
-    include LibraTimestamp::AbortsIfNotOperating;
-    aborts_if ValidatorConfig::exists_config(new_account_address) with Errors::ALREADY_PUBLISHED;
-}
-
- - - - - - - -
schema CreateValidatorAccountEnsures {
-    new_account_address: address;
-    include Roles::GrantRole{addr: new_account_address, role_id: Roles::VALIDATOR_ROLE_ID};
-    ensures exists_at(new_account_address);
-    ensures ValidatorConfig::exists_config(new_account_address);
-}
-
- - - -
- - - -## Function `create_validator_operator_account` - -Create a Validator Operator account - - -
public fun create_validator_operator_account(lr_account: &signer, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
-
- - - -
-Implementation - - -
public fun create_validator_operator_account(
-    lr_account: &signer,
-    new_account_address: address,
-    auth_key_prefix: vector<u8>,
-    human_name: vector<u8>,
-) acquires AccountOperationsCapability {
-    let new_account = create_signer(new_account_address);
-    // The lr_account is verified to have the libra root role in `Roles::new_validator_operator_role`
-    Roles::new_validator_operator_role(lr_account, &new_account);
-    Event::publish_generator(&new_account);
-    ValidatorOperatorConfig::publish(&new_account, lr_account, human_name);
-    make_account(new_account, auth_key_prefix)
-}
-
- - - -
- -
-Specification - - - -
include CreateValidatorOperatorAccountAbortsIf;
-include CreateValidatorOperatorAccountEnsures;
-
- - - - - - - -
schema CreateValidatorOperatorAccountAbortsIf {
-    lr_account: signer;
-    new_account_address: address;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    include MakeAccountAbortsIf{addr: new_account_address};
-    include LibraTimestamp::AbortsIfNotOperating;
-    aborts_if ValidatorOperatorConfig::has_validator_operator_config(new_account_address) with Errors::ALREADY_PUBLISHED;
-}
-
- - - - - - - -
schema CreateValidatorOperatorAccountEnsures {
-    new_account_address: address;
-    include Roles::GrantRole{addr: new_account_address, role_id: Roles::VALIDATOR_OPERATOR_ROLE_ID};
-    ensures exists_at(new_account_address);
-    ensures ValidatorOperatorConfig::has_validator_operator_config(new_account_address);
-}
-
- - - -
- - - -## Module Specification - - - - - - -
define spec_has_published_account_limits<Token>(addr: address): bool {
-   if (VASP::is_vasp(addr)) VASP::spec_has_account_limits<Token>(addr)
-   else AccountLimits::has_window_published<Token>(addr)
-}
-
- - - - - - -### Access Control - - - - -#### Key Rotation Capability - - -the permission "RotateAuthenticationKey(addr)" is granted to the account at addr [[H17]][PERMISSION]. -When an account is created, its KeyRotationCapability is granted to the account. - - -
apply EnsuresHasKeyRotationCap{account: new_account} to make_account;
-
- - -Only make_account creates KeyRotationCap [[H17]][PERMISSION][[I17]][PERMISSION]. create_*_account only calls -make_account, and does not pack KeyRotationCap by itself. -restore_key_rotation_capability restores KeyRotationCap, and does not create new one. - - -
apply PreserveKeyRotationCapAbsence to * except make_account, create_*_account,
-      restore_key_rotation_capability, initialize;
-
- - -Every account holds either no key rotation capability (because KeyRotationCapability has been delegated) -or the key rotation capability for addr itself [[H17]][PERMISSION]. - - -
invariant [global] forall addr: address where exists_at(addr):
-    delegated_key_rotation_capability(addr) || spec_holds_own_key_rotation_cap(addr);
-
- - - - - - - -
schema EnsuresHasKeyRotationCap {
-    account: signer;
-    
-    let addr = Signer::spec_address_of(account);
-    ensures spec_holds_own_key_rotation_cap(addr);
-}
-
- - - - - - -The absence of KeyRotationCap is preserved. - - -
schema PreserveKeyRotationCapAbsence {
-    ensures forall addr: address:
-        old(!exists<LibraAccount>(addr) || !spec_has_key_rotation_cap(addr)) ==>
-            (!exists<LibraAccount>(addr) || !spec_has_key_rotation_cap(addr));
-}
-
- - - - - -#### Withdraw Capability - - -the permission "WithdrawCapability(addr)" is granted to the account at addr [[H18]][PERMISSION]. -When an account is created, its WithdrawCapability is granted to the account. - - -
apply EnsuresWithdrawCap{account: new_account} to make_account;
-
- - -Only make_account creates WithdrawCap [[H18]][PERMISSION][[I18]][PERMISSION]. create_*_account only calls -make_account, and does not pack KeyRotationCap by itself. -restore_withdraw_capability restores WithdrawCap, and does not create new one. - - -
apply PreserveWithdrawCapAbsence to * except make_account, create_*_account,
-        restore_withdraw_capability, initialize;
-
- - -Every account holds either no withdraw capability (because withdraw cap has been delegated) -or the withdraw capability for addr itself [[H18]][PERMISSION]. - - -
invariant [global] forall addr: address where exists_at(addr):
-    spec_holds_delegated_withdraw_capability(addr) || spec_holds_own_withdraw_cap(addr);
-
- - - - - - - -
schema EnsuresWithdrawCap {
-    account: signer;
-    
-    let addr = Signer::spec_address_of(account);
-    ensures spec_holds_own_withdraw_cap(addr);
-}
-
- - - - - - -The absence of WithdrawCap is preserved. - - -
schema PreserveWithdrawCapAbsence {
-    ensures forall addr: address:
-        old(!exists<LibraAccount>(addr) || Option::is_none(global<LibraAccount>(addr).withdraw_capability)) ==>
-            (!exists<LibraAccount>(addr) || Option::is_none(global<LibraAccount>(addr).withdraw_capability));
-}
-
- - - - - -#### Authentication Key - - -only Self::rotate_authentication_key can rotate authentication_key [[H17]][PERMISSION]. - - -
apply AuthenticationKeyRemainsSame to *, *<T> except rotate_authentication_key;
-
- - - - - - - -
schema AuthenticationKeyRemainsSame {
-    ensures forall addr: address where old(exists_at(addr)):
-        global<LibraAccount>(addr).authentication_key == old(global<LibraAccount>(addr).authentication_key);
-}
-
- - - - - -#### Balance - - -only Self::withdraw_from and its helper and clients can withdraw [[H18]][PERMISSION]. - - -
apply BalanceNotDecrease<Token> to *<Token>
-    except withdraw_from, withdraw_from_balance, staple_lbr, unstaple_lbr,
-        preburn, pay_from, epilogue, failure_epilogue, success_epilogue;
-
- - - - - - - -
schema BalanceNotDecrease<Token> {
-    ensures forall addr: address where old(exists<Balance<Token>>(addr)):
-        global<Balance<Token>>(addr).coin.value >= old(global<Balance<Token>>(addr).coin.value);
-}
-
- - - - - -### Persistence of Resources - - -Accounts are never deleted. - - -
invariant update [global] forall addr: address where old(exists_at(addr)): exists_at(addr);
-
- - -After genesis, the AccountOperationsCapability exists. - - -
invariant [global]
-    LibraTimestamp::is_operating() ==> exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -After genesis, the LibraWriteSetManager exists. - - -
invariant [global]
-    LibraTimestamp::is_operating() ==> exists<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -resource struct Balance<CoinType> is persistent - - -
invariant update [global] forall coin_type: type, addr: address
-    where old(exists<Balance<coin_type>>(addr)):
-        exists<Balance<coin_type>>(addr);
-
- - -resource struct AccountOperationsCapability is persistent - - -
invariant update [global] old(exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS()))
-        ==> exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -resource struct AccountOperationsCapability is persistent - - -
invariant update [global]
-    old(exists<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS()))
-        ==> exists<LibraWriteSetManager>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - - - - -### Other invariants - - -Every address that has a published account has a published RoleId - - -
invariant [global] forall addr: address where exists_at(addr): exists<Roles::RoleId>(addr);
-
- - -If an account has a balance, the role of the account is compatible with having a balance. - - -
invariant [global] forall token: type: forall addr: address where exists<Balance<token>>(addr):
-    Roles::spec_can_hold_balance_addr(addr);
-
- - -If there is a `DesignatedDealer::Dealer resource published at addr, the addr has a -DesignatedDealer role. - - -
invariant [global] forall addr: address where exists<DesignatedDealer::Dealer>(addr):
-    Roles::spec_has_designated_dealer_role_addr(addr);
-
- - -If there is a DualAttestation credential, account has designated dealer role - - -
invariant [global] forall addr: address where exists<DualAttestation::Credential>(addr):
-    Roles::spec_has_designated_dealer_role_addr(addr)
-    || Roles::spec_has_parent_VASP_role_addr(addr);
-
- - -Every address that has a published account has a published FreezingBit - - -
invariant [global] forall addr: address where exists_at(addr): exists<AccountFreezing::FreezingBit>(addr);
-
- - - - - -### Helper Functions and Schemas - - - - -#### Capabilities - - -Returns field key_rotation_capability of the LibraAccount under addr. - - - - - -
define spec_get_key_rotation_cap_field(addr: address): Option<KeyRotationCapability> {
-    global<LibraAccount>(addr).key_rotation_capability
-}
-
- - -Returns the KeyRotationCapability of the field key_rotation_capability. - - - - - -
define spec_get_key_rotation_cap(addr: address): KeyRotationCapability {
-    Option::borrow(spec_get_key_rotation_cap_field(addr))
-}
-
-define spec_has_key_rotation_cap(addr: address): bool {
-    Option::is_some(spec_get_key_rotation_cap_field(addr))
-}
-
- - -Returns true if the LibraAccount at addr holds -KeyRotationCapability for itself. - - - - - -
define spec_holds_own_key_rotation_cap(addr: address): bool {
-    spec_has_key_rotation_cap(addr)
-    && addr == spec_get_key_rotation_cap(addr).account_address
-}
-
- - -Returns true if AccountOperationsCapability is published. - - - - - -
define spec_has_account_operations_cap(): bool {
-    exists<AccountOperationsCapability>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
- - -Returns field withdraw_capability of LibraAccount under addr. - - - - - -
define spec_get_withdraw_cap_field(addr: address): Option<WithdrawCapability> {
-    global<LibraAccount>(addr).withdraw_capability
-}
-
- - -Returns the WithdrawCapability of the field withdraw_capability. - - - - - -
define spec_get_withdraw_cap(addr: address): WithdrawCapability {
-    Option::borrow(spec_get_withdraw_cap_field(addr))
-}
-
- - -Returns true if the LibraAccount at addr holds a WithdrawCapability. - - - - - -
define spec_has_withdraw_cap(addr: address): bool {
-    Option::is_some(spec_get_withdraw_cap_field(addr))
-}
-
- - -Returns true if the LibraAccount at addr holds WithdrawCapability for itself. - - - - - -
define spec_holds_own_withdraw_cap(addr: address): bool {
-    spec_has_withdraw_cap(addr)
-    && addr == spec_get_withdraw_cap(addr).account_address
-}
-
- - -Returns true of the account holds a delegated withdraw capability. - - - - - -
define spec_holds_delegated_withdraw_capability(addr: address): bool {
-    exists_at(addr) && Option::is_none(global<LibraAccount>(addr).withdraw_capability)
-}
-
- - - - - -#### Prologue - - - - - - -
define prologue_guarantees(sender: signer) : bool {
-   let addr = Signer::spec_address_of(sender);
-   LibraTimestamp::is_operating() && exists_at(addr) && !AccountFreezing::account_is_frozen(addr)
-}
-
- - -Used in transaction script to specify properties checked by the prologue. - - - - - -
schema TransactionChecks {
-    sender: signer;
-    requires prologue_guarantees(sender);
-}
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraBlock.md b/language/stdlib/modules/doc/LibraBlock.md deleted file mode 100644 index 199e21b69e..0000000000 --- a/language/stdlib/modules/doc/LibraBlock.md +++ /dev/null @@ -1,334 +0,0 @@ - - - -# Module `0x1::LibraBlock` - -This module defines a struct storing the metadata of the block and new block events. - - -- [Resource `BlockMetadata`](#0x1_LibraBlock_BlockMetadata) -- [Struct `NewBlockEvent`](#0x1_LibraBlock_NewBlockEvent) -- [Constants](#@Constants_0) -- [Function `initialize_block_metadata`](#0x1_LibraBlock_initialize_block_metadata) -- [Function `is_initialized`](#0x1_LibraBlock_is_initialized) -- [Function `block_prologue`](#0x1_LibraBlock_block_prologue) -- [Function `get_current_block_height`](#0x1_LibraBlock_get_current_block_height) -- [Module Specification](#@Module_Specification_1) - - [Initialization](#@Initialization_2) - - -
use 0x1::CoreAddresses;
-use 0x1::Errors;
-use 0x1::Event;
-use 0x1::LibraSystem;
-use 0x1::LibraTimestamp;
-
- - - - - -## Resource `BlockMetadata` - - - -
resource struct BlockMetadata
-
- - - -
-Fields - - -
-
-height: u64 -
-
- Height of the current block -
-
-new_block_events: Event::EventHandle<LibraBlock::NewBlockEvent> -
-
- Handle where events with the time of new blocks are emitted -
-
- - -
- - - -## Struct `NewBlockEvent` - - - -
struct NewBlockEvent
-
- - - -
-Fields - - -
-
-round: u64 -
-
- -
-
-proposer: address -
-
- -
-
-previous_block_votes: vector<address> -
-
- -
-
-time_microseconds: u64 -
-
- On-chain time during he block at the given height -
-
- - -
- - - -## Constants - - - - -The BlockMetadata resource is in an invalid state - - -
const EBLOCK_METADATA: u64 = 0;
-
- - - - - -An invalid signer was provided. Expected the signer to be the VM or a Validator. - - -
const EVM_OR_VALIDATOR: u64 = 1;
-
- - - - - -## Function `initialize_block_metadata` - -This can only be invoked by the Association address, and only a single time. -Currently, it is invoked in the genesis transaction - - -
public fun initialize_block_metadata(account: &signer)
-
- - - -
-Implementation - - -
public fun initialize_block_metadata(account: &signer) {
-    LibraTimestamp::assert_genesis();
-    // Operational constraint, only callable by the Association address
-    CoreAddresses::assert_libra_root(account);
-
-    assert(!is_initialized(), Errors::already_published(EBLOCK_METADATA));
-    move_to<BlockMetadata>(
-        account,
-        BlockMetadata {
-            height: 0,
-            new_block_events: Event::new_event_handle<Self::NewBlockEvent>(account),
-        }
-    );
-}
-
- - - -
- -
-Specification - - - -
include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot;
-aborts_if is_initialized() with Errors::ALREADY_PUBLISHED;
-ensures is_initialized();
-ensures get_current_block_height() == 0;
-
- - - -
- - - -## Function `is_initialized` - -Helper function to determine whether this module has been initialized. - - -
fun is_initialized(): bool
-
- - - -
-Implementation - - -
fun is_initialized(): bool {
-    exists<BlockMetadata>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
- - - -
- - - -## Function `block_prologue` - -Set the metadata for the current block. -The runtime always runs this before executing the transactions in a block. - - -
fun block_prologue(vm: &signer, round: u64, timestamp: u64, previous_block_votes: vector<address>, proposer: address)
-
- - - -
-Implementation - - -
fun block_prologue(
-    vm: &signer,
-    round: u64,
-    timestamp: u64,
-    previous_block_votes: vector<address>,
-    proposer: address
-) acquires BlockMetadata {
-    LibraTimestamp::assert_operating();
-    // Operational constraint: can only be invoked by the VM.
-    CoreAddresses::assert_vm(vm);
-
-    // Authorization
-    assert(
-        proposer == CoreAddresses::VM_RESERVED_ADDRESS() || LibraSystem::is_validator(proposer),
-        Errors::requires_address(EVM_OR_VALIDATOR)
-    );
-
-    let block_metadata_ref = borrow_global_mut<BlockMetadata>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    LibraTimestamp::update_global_time(vm, proposer, timestamp);
-    block_metadata_ref.height = block_metadata_ref.height + 1;
-    Event::emit_event<NewBlockEvent>(
-        &mut block_metadata_ref.new_block_events,
-        NewBlockEvent {
-            round,
-            proposer,
-            previous_block_votes,
-            time_microseconds: timestamp,
-        }
-    );
-}
-
- - - -
- -
-Specification - - - -
include LibraTimestamp::AbortsIfNotOperating;
-include CoreAddresses::AbortsIfNotVM{account: vm};
-aborts_if proposer != CoreAddresses::VM_RESERVED_ADDRESS() && !LibraSystem::spec_is_validator(proposer)
-    with Errors::REQUIRES_ADDRESS;
-ensures LibraTimestamp::spec_now_microseconds() == timestamp;
-ensures get_current_block_height() == old(get_current_block_height()) + 1;
-
- - -The below counter overflow is assumed to be excluded from verification of callers. - - -
aborts_if [assume] get_current_block_height() + 1 > MAX_U64 with EXECUTION_FAILURE;
-
- - - -
- - - -## Function `get_current_block_height` - -Get the current block height - - -
public fun get_current_block_height(): u64
-
- - - -
-Implementation - - -
public fun get_current_block_height(): u64 acquires BlockMetadata {
-    assert(is_initialized(), Errors::not_published(EBLOCK_METADATA));
-    borrow_global<BlockMetadata>(CoreAddresses::LIBRA_ROOT_ADDRESS()).height
-}
-
- - - -
- - - -## Module Specification - - - - - -### Initialization - -This implies that BlockMetadata is published after initialization and stays published -ever after - - -
invariant [global] LibraTimestamp::is_operating() ==> is_initialized();
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraConfig.md b/language/stdlib/modules/doc/LibraConfig.md deleted file mode 100644 index da62929d79..0000000000 --- a/language/stdlib/modules/doc/LibraConfig.md +++ /dev/null @@ -1,957 +0,0 @@ - - - -# Module `0x1::LibraConfig` - -Publishes configuration information for validators, and issues reconfiguration events -to synchronize configuration changes for the validators. - - -- [Resource `LibraConfig`](#0x1_LibraConfig_LibraConfig) -- [Struct `NewEpochEvent`](#0x1_LibraConfig_NewEpochEvent) -- [Resource `Configuration`](#0x1_LibraConfig_Configuration) -- [Resource `ModifyConfigCapability`](#0x1_LibraConfig_ModifyConfigCapability) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraConfig_initialize) -- [Function `get`](#0x1_LibraConfig_get) -- [Function `set`](#0x1_LibraConfig_set) -- [Function `set_with_capability_and_reconfigure`](#0x1_LibraConfig_set_with_capability_and_reconfigure) -- [Function `publish_new_config_and_get_capability`](#0x1_LibraConfig_publish_new_config_and_get_capability) -- [Function `publish_new_config`](#0x1_LibraConfig_publish_new_config) -- [Function `reconfigure`](#0x1_LibraConfig_reconfigure) -- [Function `reconfigure_`](#0x1_LibraConfig_reconfigure_) -- [Function `emit_genesis_reconfiguration_event`](#0x1_LibraConfig_emit_genesis_reconfiguration_event) -- [Module Specification](#@Module_Specification_1) - - [Initialization](#@Initialization_2) - - [Invariants](#@Invariants_3) - - [Helper Functions](#@Helper_Functions_4) - - -
use 0x1::CoreAddresses;
-use 0x1::Errors;
-use 0x1::Event;
-use 0x1::LibraTimestamp;
-use 0x1::Roles;
-use 0x1::Signer;
-
- - - - - -## Resource `LibraConfig` - -A generic singleton resource that holds a value of a specific type. - - -
resource struct LibraConfig<Config: copyable>
-
- - - -
-Fields - - -
-
-payload: Config -
-
- Holds specific info for instance of Config type. -
-
- - -
- - - -## Struct `NewEpochEvent` - -Event that signals LibraBFT algorithm to start a new epoch, -with new configuration information. This is also called a -"reconfiguration event" - - -
struct NewEpochEvent
-
- - - -
-Fields - - -
-
-epoch: u64 -
-
- -
-
- - -
- - - -## Resource `Configuration` - -Holds information about state of reconfiguration - - -
resource struct Configuration
-
- - - -
-Fields - - -
-
-epoch: u64 -
-
- Epoch number -
-
-last_reconfiguration_time: u64 -
-
- Time of last reconfiguration. Only changes on reconfiguration events. -
-
-events: Event::EventHandle<LibraConfig::NewEpochEvent> -
-
- Event handle for reconfiguration events -
-
- - -
- - - -## Resource `ModifyConfigCapability` - -Accounts with this privilege can modify LibraConfig under Libra root address. - - -
resource struct ModifyConfigCapability<TypeName>
-
- - - -
-Fields - - -
-
-dummy_field: bool -
-
- -
-
- - -
- - - -## Constants - - - - -The largest possible u64 value - - -
const MAX_U64: u64 = 18446744073709551615;
-
- - - - - -The Configuration resource is in an invalid state - - -
const ECONFIGURATION: u64 = 0;
-
- - - - - -An invalid block time was encountered. - - -
const EINVALID_BLOCK_TIME: u64 = 3;
-
- - - - - -A LibraConfig resource is in an invalid state - - -
const ELIBRA_CONFIG: u64 = 1;
-
- - - - - -A ModifyConfigCapability is in a different state than was expected - - -
const EMODIFY_CAPABILITY: u64 = 2;
-
- - - - - -## Function `initialize` - -Publishes Configuration resource. Can only be invoked by Libra root, and only a single time in Genesis. - - -
public fun initialize(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    CoreAddresses::assert_libra_root(lr_account);
-    assert(!exists<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::already_published(ECONFIGURATION));
-    move_to<Configuration>(
-        lr_account,
-        Configuration {
-            epoch: 0,
-            last_reconfiguration_time: 0,
-            events: Event::new_event_handle<NewEpochEvent>(lr_account),
-        }
-    );
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include InitializeAbortsIf;
-include InitializeEnsures;
-modifies global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - - - - - - -
schema InitializeAbortsIf {
-    lr_account: signer;
-    include LibraTimestamp::AbortsIfNotGenesis;
-    include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-    aborts_if spec_has_config() with Errors::ALREADY_PUBLISHED;
-}
-
- - - - - - - -
schema InitializeEnsures {
-    ensures spec_has_config();
-    
-    let new_config = global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    ensures new_config.epoch == 0;
-    ensures new_config.last_reconfiguration_time == 0;
-}
-
- - - -
- - - -## Function `get` - -Returns a copy of Config value stored under addr. - - -
public fun get<Config: copyable>(): Config
-
- - - -
-Implementation - - -
public fun get<Config: copyable>(): Config
-acquires LibraConfig {
-    let addr = CoreAddresses::LIBRA_ROOT_ADDRESS();
-    assert(exists<LibraConfig<Config>>(addr), Errors::not_published(ELIBRA_CONFIG));
-    *&borrow_global<LibraConfig<Config>>(addr).payload
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include AbortsIfNotPublished<Config>;
-ensures result == get<Config>();
-
- - - - - - - -
schema AbortsIfNotPublished<Config> {
-    aborts_if !exists<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::NOT_PUBLISHED;
-}
-
- - - -
- - - -## Function `set` - -Set a config item to a new value with the default capability stored under config address and trigger a -reconfiguration. This function requires that the signer have a ModifyConfigCapability<Config> -resource published under it. - - -
public fun set<Config: copyable>(account: &signer, payload: Config)
-
- - - -
-Implementation - - -
public fun set<Config: copyable>(account: &signer, payload: Config)
-acquires LibraConfig, Configuration {
-    let signer_address = Signer::address_of(account);
-    // Next should always be true if properly initialized.
-    assert(exists<ModifyConfigCapability<Config>>(signer_address), Errors::requires_capability(EMODIFY_CAPABILITY));
-
-    let addr = CoreAddresses::LIBRA_ROOT_ADDRESS();
-    assert(exists<LibraConfig<Config>>(addr), Errors::not_published(ELIBRA_CONFIG));
-    let config = borrow_global_mut<LibraConfig<Config>>(addr);
-    config.payload = payload;
-
-    reconfigure_();
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include SetAbortsIf<Config>;
-include SetEnsures<Config>;
-
- - - - - - - -
schema SetAbortsIf<Config> {
-    account: signer;
-    include AbortsIfNotModifiable<Config>;
-    include AbortsIfNotPublished<Config>;
-    include ReconfigureAbortsIf;
-}
-
- - - - - - - -
schema AbortsIfNotModifiable<Config> {
-    account: signer;
-    aborts_if !exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(account))
-        with Errors::REQUIRES_CAPABILITY;
-}
-
- - - - - - - -
schema SetEnsures<Config> {
-    payload: Config;
-    ensures spec_is_published<Config>();
-    ensures get<Config>() == payload;
-    ensures old(spec_has_config()) == spec_has_config();
-}
-
- - - -
- - - -## Function `set_with_capability_and_reconfigure` - -Set a config item to a new value and trigger a reconfiguration. This function -requires a reference to a ModifyConfigCapability, which is returned when the -config is published using publish_new_config_and_get_capability. -It is called by LibraSystem::update_config_and_reconfigure, which allows -validator operators to change the validator set. All other config changes require -a Libra root signer. - - -
public fun set_with_capability_and_reconfigure<Config: copyable>(_cap: &LibraConfig::ModifyConfigCapability<Config>, payload: Config)
-
- - - -
-Implementation - - -
public fun set_with_capability_and_reconfigure<Config: copyable>(
-    _cap: &ModifyConfigCapability<Config>,
-    payload: Config
-) acquires LibraConfig, Configuration {
-    let addr = CoreAddresses::LIBRA_ROOT_ADDRESS();
-    assert(exists<LibraConfig<Config>>(addr), Errors::not_published(ELIBRA_CONFIG));
-    let config = borrow_global_mut<LibraConfig<Config>>(addr);
-    config.payload = payload;
-    reconfigure_();
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include AbortsIfNotPublished<Config>;
-include ReconfigureAbortsIf;
-modifies global<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include SetEnsures<Config>;
-
- - - -
- - - -## Function `publish_new_config_and_get_capability` - -Publishes a new config. -The caller will use the returned ModifyConfigCapability to specify the access control -policy for who can modify the config. -Does not trigger a reconfiguration. - - -
public fun publish_new_config_and_get_capability<Config: copyable>(lr_account: &signer, payload: Config): LibraConfig::ModifyConfigCapability<Config>
-
- - - -
-Implementation - - -
public fun publish_new_config_and_get_capability<Config: copyable>(
-    lr_account: &signer,
-    payload: Config,
-): ModifyConfigCapability<Config> {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-    assert(
-        !exists<LibraConfig<Config>>(Signer::address_of(lr_account)),
-        Errors::already_published(ELIBRA_CONFIG)
-    );
-    move_to(lr_account, LibraConfig { payload });
-    ModifyConfigCapability<Config> {}
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include LibraTimestamp::AbortsIfNotGenesis;
-include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include AbortsIfPublished<Config>;
-include SetEnsures<Config>;
-
- - - - - - - -
schema AbortsIfPublished<Config> {
-    aborts_if exists<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
-}
-
- - - -
- - - -## Function `publish_new_config` - -Publish a new config item. Only Libra root can modify such config. -Publishes the capability to modify this config under the Libra root account. -Does not trigger a reconfiguration. - - -
public fun publish_new_config<Config: copyable>(lr_account: &signer, payload: Config)
-
- - - -
-Implementation - - -
public fun publish_new_config<Config: copyable>(
-    lr_account: &signer,
-    payload: Config
-) {
-    let capability = publish_new_config_and_get_capability<Config>(lr_account, payload);
-    assert(
-        !exists<ModifyConfigCapability<Config>>(Signer::address_of(lr_account)),
-        Errors::already_published(EMODIFY_CAPABILITY)
-    );
-    move_to(lr_account, capability);
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-modifies global<ModifyConfigCapability<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include PublishNewConfigAbortsIf<Config>;
-include PublishNewConfigEnsures<Config>;
-
- - - - - - - -
schema PublishNewConfigAbortsIf<Config> {
-    lr_account: signer;
-    include LibraTimestamp::AbortsIfNotGenesis;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    aborts_if spec_is_published<Config>();
-    aborts_if exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(lr_account));
-}
-
- - - - - - - -
schema PublishNewConfigEnsures<Config> {
-    lr_account: signer;
-    payload: Config;
-    include SetEnsures<Config>;
-    ensures exists<ModifyConfigCapability<Config>>(Signer::spec_address_of(lr_account));
-}
-
- - - -
- - - -## Function `reconfigure` - -Signal validators to start using new configuration. Must be called by Libra root. - - -
public fun reconfigure(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun reconfigure(
-    lr_account: &signer,
-) acquires Configuration {
-    Roles::assert_libra_root(lr_account);
-    reconfigure_();
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include ReconfigureAbortsIf;
-
- - - -
- - - -## Function `reconfigure_` - -Private function to do reconfiguration. Updates reconfiguration status resource -Configuration and emits a NewEpochEvent - - -
fun reconfigure_()
-
- - - -
-Implementation - - -
fun reconfigure_() acquires Configuration {
-    // Do not do anything if genesis has not finished.
-    if (LibraTimestamp::is_genesis() || LibraTimestamp::now_microseconds() == 0) {
-        return ()
-    };
-
-    let config_ref = borrow_global_mut<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    let current_time = LibraTimestamp::now_microseconds();
-
-    // Do not do anything if a reconfiguration event is already emitted within this transaction.
-    //
-    // This is OK because:
-    // - The time changes in every non-empty block
-    // - A block automatically ends after a transaction that emits a reconfiguration event, which is guaranteed by
-    //   LibraVM spec that all transactions comming after a reconfiguration transaction will be returned as Retry
-    //   status.
-    // - Each transaction must emit at most one reconfiguration event
-    //
-    // Thus, this check ensures that a transaction that does multiple "reconfiguration required" actions emits only
-    // one reconfiguration event.
-    //
-    if (current_time == config_ref.last_reconfiguration_time) {
-        return
-    };
-
-    assert(current_time > config_ref.last_reconfiguration_time, Errors::invalid_state(EINVALID_BLOCK_TIME));
-    config_ref.last_reconfiguration_time = current_time;
-    config_ref.epoch = config_ref.epoch + 1;
-
-    Event::emit_event<NewEpochEvent>(
-        &mut config_ref.events,
-        NewEpochEvent {
-            epoch: config_ref.epoch,
-        },
-    );
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-ensures old(spec_has_config()) == spec_has_config();
-
-let config = global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
-let now = LibraTimestamp::spec_now_microseconds();
-
-let epoch = config.epoch;
-include !spec_reconfigure_omitted() || (config.last_reconfiguration_time == now)
-    ==> InternalReconfigureAbortsIf && ReconfigureAbortsIf;
-ensures spec_reconfigure_omitted() || (old(config).last_reconfiguration_time == now)
-    ==> config == old(config);
-ensures !(spec_reconfigure_omitted() || (config.last_reconfiguration_time == now))
-    ==> config ==
-        update_field(
-        update_field(old(config),
-            epoch, old(config.epoch) + 1),
-            last_reconfiguration_time, now);
-
- - -The following schema describes aborts conditions which we do not want to be propagated to the verification -of callers, and which are therefore marked as concrete to be only verified against the implementation. -These conditions are unlikely to happen in reality, and excluding them avoids formal noise. - - - - - - - - -
schema InternalReconfigureAbortsIf {
-    let config = global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    
-    let current_time = LibraTimestamp::spec_now_microseconds();
-    aborts_if [concrete] current_time < config.last_reconfiguration_time with Errors::INVALID_STATE;
-    aborts_if [concrete] config.epoch == MAX_U64
-        && current_time != config.last_reconfiguration_time with EXECUTION_FAILURE;
-}
-
- - -This schema is to be used by callers of reconfigure - - - - - - - - -
schema ReconfigureAbortsIf {
-    let config = global<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    
-    let current_time = LibraTimestamp::spec_now_microseconds();
-    aborts_if LibraTimestamp::is_operating()
-        && LibraTimestamp::spec_now_microseconds() > 0
-        && config.epoch < MAX_U64
-        && current_time < config.last_reconfiguration_time
-            with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Function `emit_genesis_reconfiguration_event` - -Emit a NewEpochEvent event. This function will be invoked by genesis directly to generate the very first -reconfiguration event. - - -
fun emit_genesis_reconfiguration_event()
-
- - - -
-Implementation - - -
fun emit_genesis_reconfiguration_event() acquires Configuration {
-    assert(exists<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS()), Errors::not_published(ECONFIGURATION));
-    let config_ref = borrow_global_mut<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    assert(config_ref.epoch == 0 && config_ref.last_reconfiguration_time == 0, Errors::invalid_state(ECONFIGURATION));
-    config_ref.epoch = 1;
-
-    Event::emit_event<NewEpochEvent>(
-        &mut config_ref.events,
-        NewEpochEvent {
-            epoch: config_ref.epoch,
-        },
-    );
-}
-
- - - -
- - - -## Module Specification - - - - - - -
define spec_reconfigure_omitted(): bool {
-  LibraTimestamp::is_genesis() || LibraTimestamp::spec_now_microseconds() == 0
-}
-
- - - - - - -### Initialization - - -After genesis, the Configuration is published. - - -
invariant [global] LibraTimestamp::is_operating() ==> spec_has_config();
-
- - - - - -### Invariants - - -Configurations are only stored at the libra root address. - - -
invariant [global]
-    forall config_address: address, config_type: type where exists<LibraConfig<config_type>>(config_address):
-        config_address == CoreAddresses::LIBRA_ROOT_ADDRESS();
-
- - -After genesis, no new configurations are added. - - -
invariant update [global]
-    LibraTimestamp::is_operating() ==>
-        (forall config_type: type where spec_is_published<config_type>(): old(spec_is_published<config_type>()));
-
- - -Published configurations are persistent. - - -
invariant update [global]
-    (forall config_type: type where old(spec_is_published<config_type>()): spec_is_published<config_type>());
-
- - -If ModifyConfigCapability<Config> is published, it is persistent. - - -
invariant update [global] forall config_type: type
-    where old(exists<ModifyConfigCapability<config_type>>(CoreAddresses::LIBRA_ROOT_ADDRESS())):
-        exists<ModifyConfigCapability<config_type>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - - - - -### Helper Functions - - - - - - -
define spec_has_config(): bool {
-    exists<Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
-define spec_is_published<Config>(): bool {
-    exists<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
-define spec_get_config<Config>(): Config {
-    global<LibraConfig<Config>>(CoreAddresses::LIBRA_ROOT_ADDRESS()).payload
-}
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraSystem.md b/language/stdlib/modules/doc/LibraSystem.md deleted file mode 100644 index 2fcec3f638..0000000000 --- a/language/stdlib/modules/doc/LibraSystem.md +++ /dev/null @@ -1,1343 +0,0 @@ - - - -# Module `0x1::LibraSystem` - -Maintains information about the set of validators used during consensus. -Provides functions to add, remove, and update validators in the -validator set. - -> Note: When trying to understand this code, it's important to know that "config" -and "configuration" are used for several distinct concepts. - - -- [Struct `ValidatorInfo`](#0x1_LibraSystem_ValidatorInfo) -- [Resource `CapabilityHolder`](#0x1_LibraSystem_CapabilityHolder) -- [Struct `LibraSystem`](#0x1_LibraSystem_LibraSystem) -- [Constants](#@Constants_0) -- [Function `initialize_validator_set`](#0x1_LibraSystem_initialize_validator_set) -- [Function `set_libra_system_config`](#0x1_LibraSystem_set_libra_system_config) -- [Function `add_validator`](#0x1_LibraSystem_add_validator) -- [Function `remove_validator`](#0x1_LibraSystem_remove_validator) -- [Function `update_config_and_reconfigure`](#0x1_LibraSystem_update_config_and_reconfigure) -- [Function `get_libra_system_config`](#0x1_LibraSystem_get_libra_system_config) -- [Function `is_validator`](#0x1_LibraSystem_is_validator) -- [Function `get_validator_config`](#0x1_LibraSystem_get_validator_config) -- [Function `validator_set_size`](#0x1_LibraSystem_validator_set_size) -- [Function `get_ith_validator_address`](#0x1_LibraSystem_get_ith_validator_address) -- [Function `get_validator_index_`](#0x1_LibraSystem_get_validator_index_) -- [Function `update_ith_validator_info_`](#0x1_LibraSystem_update_ith_validator_info_) -- [Function `is_validator_`](#0x1_LibraSystem_is_validator_) -- [Module Specification](#@Module_Specification_1) - - [Initialization](#@Initialization_2) - - [Access Control](#@Access_Control_3) - - [Helper Functions](#@Helper_Functions_4) - - -
use 0x1::CoreAddresses;
-use 0x1::Errors;
-use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
-use 0x1::Option;
-use 0x1::Roles;
-use 0x1::Signer;
-use 0x1::ValidatorConfig;
-use 0x1::Vector;
-
- - - - - -## Struct `ValidatorInfo` - -Information about a Validator Owner. - - -
struct ValidatorInfo
-
- - - -
-Fields - - -
-
-addr: address -
-
- The address (account) of the Validator Owner -
-
-consensus_voting_power: u64 -
-
- The voting power of the Validator Owner (currently always 1). -
-
-config: ValidatorConfig::Config -
-
- Configuration information about the Validator, such as the - Validator Operator, human name, and info such as consensus key - and network addresses. -
-
-last_config_update_time: u64 -
-
- The time of last reconfiguration invoked by this validator - in microseconds -
-
- - -
- - - -## Resource `CapabilityHolder` - -Enables a scheme that restricts the LibraSystem config -in LibraConfig from being modified by any other module. Only -code in this module can get a reference to the ModifyConfigCapability, -which is required by LibraConfig::set_with_capability_and_reconfigure to -modify the LibraSystem config. This is only needed by update_config_and_reconfigure. -Only Libra root can add or remove a validator from the validator set, so the -capability is not needed for access control in those functions. - - -
resource struct CapabilityHolder
-
- - - -
-Fields - - -
-
-cap: LibraConfig::ModifyConfigCapability<LibraSystem::LibraSystem> -
-
- Holds a capability returned by LibraConfig::publish_new_config_and_get_capability - which is called in initialize_validator_set. -
-
- - -
- - - -## Struct `LibraSystem` - -The LibraSystem struct stores the validator set and crypto scheme in -LibraConfig. The LibraSystem struct is stored by LibraConfig, which publishes a -LibraConfig resource. - - -
struct LibraSystem
-
- - - -
-Fields - - -
-
-scheme: u8 -
-
- The current consensus crypto scheme. -
-
-validators: vector<LibraSystem::ValidatorInfo> -
-
- The current validator set. -
-
- - -
- -
-Specification - - -Members of validators vector (the validator set) have unique addresses. - - -
invariant
-    forall i in 0..len(validators), j in 0..len(validators):
-        validators[i].addr == validators[j].addr ==> i == j;
-
- - - -
- - - -## Constants - - - - -The validator operator is not the operator for the specified validator - - -
const EINVALID_TRANSACTION_SENDER: u64 = 4;
-
- - - - - -Tried to add a validator to the validator set that was already in it - - -
const EALREADY_A_VALIDATOR: u64 = 2;
-
- - - - - -The CapabilityHolder resource was not in the required state - - -
const ECAPABILITY_HOLDER: u64 = 0;
-
- - - - - -Rate limited when trying to update config - - -
const ECONFIG_UPDATE_RATE_LIMITED: u64 = 6;
-
- - - - - -Tried to add a validator with an invalid state to the validator set - - -
const EINVALID_PROSPECTIVE_VALIDATOR: u64 = 1;
-
- - - - - -An operation was attempted on an address not in the vaidator set - - -
const ENOT_AN_ACTIVE_VALIDATOR: u64 = 3;
-
- - - - - -An out of bounds index for the validator set was encountered - - -
const EVALIDATOR_INDEX: u64 = 5;
-
- - - - - -Number of microseconds in 5 minutes - - -
const FIVE_MINUTES: u64 = 300000000;
-
- - - - - -## Function `initialize_validator_set` - -Publishes the LibraConfig for the LibraSystem struct, which contains the current -validator set. Also publishes the CapabilityHolder with the -ModifyConfigCapability returned by the publish function, which allows -code in this module to change LibraSystem config (including the validator set). -Must be invoked by the Libra root a single time in Genesis. - - -
public fun initialize_validator_set(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize_validator_set(
-    lr_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-
-    let cap = LibraConfig::publish_new_config_and_get_capability<LibraSystem>(
-        lr_account,
-        LibraSystem {
-            scheme: 0,
-            validators: Vector::empty(),
-        },
-    );
-    assert(
-        !exists<CapabilityHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS()),
-        Errors::already_published(ECAPABILITY_HOLDER)
-    );
-    move_to(lr_account, CapabilityHolder { cap })
-}
-
- - - -
- -
-Specification - - - -
modifies global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include LibraTimestamp::AbortsIfNotGenesis;
-include Roles::AbortsIfNotLibraRoot{account: lr_account};
-
-let lr_addr = Signer::spec_address_of(lr_account);
-aborts_if LibraConfig::spec_is_published<LibraSystem>() with Errors::ALREADY_PUBLISHED;
-aborts_if exists<CapabilityHolder>(lr_addr) with Errors::ALREADY_PUBLISHED;
-ensures exists<CapabilityHolder>(lr_addr);
-ensures LibraConfig::spec_is_published<LibraSystem>();
-ensures len(spec_get_validators()) == 0;
-
- - - -
- - - -## Function `set_libra_system_config` - -Copies a LibraSystem struct into the LibraConfig resource -Called by the add, remove, and update functions. - - -
fun set_libra_system_config(value: LibraSystem::LibraSystem)
-
- - - -
-Implementation - - -
fun set_libra_system_config(value: LibraSystem) acquires CapabilityHolder {
-    LibraTimestamp::assert_operating();
-    assert(
-        exists<CapabilityHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS()),
-        Errors::not_published(ECAPABILITY_HOLDER)
-    );
-    // Updates the LibraConfig<LibraSystem> and emits a reconfigure event.
-    LibraConfig::set_with_capability_and_reconfigure<LibraSystem>(
-        &borrow_global<CapabilityHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS()).cap,
-        value
-    )
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-modifies global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-modifies global<LibraConfig::Configuration>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include LibraTimestamp::AbortsIfNotOperating;
-include LibraConfig::ReconfigureAbortsIf;
-
- - -payload is the only field of LibraConfig, so next completely specifies it. - - -
ensures global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS()).payload == value;
-
- - - -
- - - -## Function `add_validator` - -Adds a new validator to the validator set. - - -
public fun add_validator(lr_account: &signer, validator_addr: address)
-
- - - -
-Implementation - - -
public fun add_validator(
-    lr_account: &signer,
-    validator_addr: address
-) acquires CapabilityHolder {
-
-    LibraTimestamp::assert_operating();
-    Roles::assert_libra_root(lr_account);
-    // A prospective validator must have a validator config resource
-    assert(ValidatorConfig::is_valid(validator_addr), Errors::invalid_argument(EINVALID_PROSPECTIVE_VALIDATOR));
-
-    let libra_system_config = get_libra_system_config();
-
-    // Ensure that this address is not already a validator
-    assert(
-        !is_validator_(validator_addr, &libra_system_config.validators),
-        Errors::invalid_argument(EALREADY_A_VALIDATOR)
-    );
-    // it is guaranteed that the config is non-empty
-    let config = ValidatorConfig::get_config(validator_addr);
-    Vector::push_back(&mut libra_system_config.validators, ValidatorInfo {
-        addr: validator_addr,
-        config, // copy the config over to ValidatorSet
-        consensus_voting_power: 1,
-        last_config_update_time: LibraTimestamp::now_microseconds(),
-    });
-
-    set_libra_system_config(libra_system_config);
-}
-
- - - -
- -
-Specification - - - -
modifies global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include AddValidatorAbortsIf;
-include AddValidatorEnsures;
-
- - - - - - - -
schema AddValidatorAbortsIf {
-    lr_account: signer;
-    validator_addr: address;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    include LibraConfig::ReconfigureAbortsIf;
-    aborts_if !ValidatorConfig::is_valid(validator_addr) with Errors::INVALID_ARGUMENT;
-    aborts_if spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
-}
-
- - - - - - - -
schema AddValidatorEnsures {
-    validator_addr: address;
-}
-
- - -LIP-6 property: validator has validator role. The code does not check this explicitly, -but it is implied by the assert ValidatorConfig::is_valid, since there -is an invariant (in ValidatorConfig) that a an address with a published ValidatorConfig has -a ValidatorRole - - -
schema AddValidatorEnsures {
-    ensures Roles::spec_has_validator_role_addr(validator_addr);
-    ensures ValidatorConfig::is_valid(validator_addr);
-    ensures spec_is_validator(validator_addr);
-    
-    let vs = spec_get_validators();
-    ensures Vector::eq_push_back(vs,
-                                 old(vs),
-                                 ValidatorInfo {
-                                     addr: validator_addr,
-                                     config: ValidatorConfig::spec_get_config(validator_addr),
-                                     consensus_voting_power: 1,
-                                     last_config_update_time: LibraTimestamp::spec_now_microseconds(),
-                                  }
-                               );
-}
-
- - - -
- - - -## Function `remove_validator` - -Removes a validator, aborts unless called by libra root account - - -
public fun remove_validator(lr_account: &signer, validator_addr: address)
-
- - - -
-Implementation - - -
public fun remove_validator(
-    lr_account: &signer,
-    validator_addr: address
-) acquires CapabilityHolder {
-    LibraTimestamp::assert_operating();
-    Roles::assert_libra_root(lr_account);
-    let libra_system_config = get_libra_system_config();
-    // Ensure that this address is an active validator
-    let to_remove_index_vec = get_validator_index_(&libra_system_config.validators, validator_addr);
-    assert(Option::is_some(&to_remove_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
-    let to_remove_index = *Option::borrow(&to_remove_index_vec);
-    // Remove corresponding ValidatorInfo from the validator set
-    _  = Vector::swap_remove(&mut libra_system_config.validators, to_remove_index);
-
-    set_libra_system_config(libra_system_config);
-}
-
- - - -
- -
-Specification - - - -
modifies global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include RemoveValidatorAbortsIf;
-include RemoveValidatorEnsures;
-
- - - - - - - -
schema RemoveValidatorAbortsIf {
-    lr_account: signer;
-    validator_addr: address;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    include LibraTimestamp::AbortsIfNotOperating;
-    include LibraConfig::ReconfigureAbortsIf;
-    aborts_if !spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
-}
-
- - - - - - - -
schema RemoveValidatorEnsures {
-    validator_addr: address;
-    
-    let vs = spec_get_validators();
-    ensures forall vi in vs where vi.addr != validator_addr: exists ovi in old(vs): vi == ovi;
-}
-
- - -Removed validator is no longer a validator. Depends on no other entries for same address -in validator_set - - -
schema RemoveValidatorEnsures {
-    ensures !spec_is_validator(validator_addr);
-}
-
- - - -
- - - -## Function `update_config_and_reconfigure` - -Copy the information from ValidatorConfig into the validator set. -This function makes no changes to the size or the members of the set. -If the config in the ValidatorSet changes, it stores the new LibraSystem -and emits a reconfigurationevent. - - -
public fun update_config_and_reconfigure(validator_operator_account: &signer, validator_addr: address)
-
- - - -
-Implementation - - -
public fun update_config_and_reconfigure(
-    validator_operator_account: &signer,
-    validator_addr: address,
-) acquires CapabilityHolder {
-    LibraTimestamp::assert_operating();
-    Roles::assert_validator_operator(validator_operator_account);
-    assert(
-        ValidatorConfig::get_operator(validator_addr) == Signer::address_of(validator_operator_account),
-        Errors::invalid_argument(EINVALID_TRANSACTION_SENDER)
-    );
-    let libra_system_config = get_libra_system_config();
-    let to_update_index_vec = get_validator_index_(&libra_system_config.validators, validator_addr);
-    assert(Option::is_some(&to_update_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
-    let to_update_index = *Option::borrow(&to_update_index_vec);
-    let is_validator_info_updated = update_ith_validator_info_(&mut libra_system_config.validators, to_update_index);
-    if (is_validator_info_updated) {
-        let validator_info = Vector::borrow_mut(&mut libra_system_config.validators, to_update_index);
-        assert(LibraTimestamp::now_microseconds() >
-               validator_info.last_config_update_time + FIVE_MINUTES,
-               ECONFIG_UPDATE_RATE_LIMITED);
-        validator_info.last_config_update_time = LibraTimestamp::now_microseconds();
-        set_libra_system_config(libra_system_config);
-    }
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-pragma verify_duration_estimate = 100;
-modifies global<LibraConfig::LibraConfig<LibraSystem>>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-include UpdateConfigAndReconfigureAbortsIf;
-include UpdateConfigAndReconfigureEnsures;
-
-let is_validator_info_updated =
-    ValidatorConfig::is_valid(validator_addr) &&
-    (exists v_info in spec_get_validators():
-        v_info.addr == validator_addr
-        && v_info.config != ValidatorConfig::spec_get_config(validator_addr));
-include is_validator_info_updated ==> LibraConfig::ReconfigureAbortsIf;
-
- - - - - - - -
schema UpdateConfigAndReconfigureAbortsIf {
-    validator_addr: address;
-    validator_operator_account: signer;
-    
-    let validator_operator_addr = Signer::address_of(validator_operator_account);
-    include LibraTimestamp::AbortsIfNotOperating;
-}
-
- - -Must abort if the signer does not have the ValidatorOperator role [[H14]][PERMISSION]. - - -
schema UpdateConfigAndReconfigureAbortsIf {
-    include Roles::AbortsIfNotValidatorOperator{validator_operator_addr: validator_operator_addr};
-    include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_addr};
-    aborts_if ValidatorConfig::get_operator(validator_addr) != validator_operator_addr
-        with Errors::INVALID_ARGUMENT;
-    aborts_if !spec_is_validator(validator_addr) with Errors::INVALID_ARGUMENT;
-}
-
- - -Does not change the length of the validator set, only changes ValidatorInfo -for validator_addr, and doesn't change any addresses. - - - - - -
schema UpdateConfigAndReconfigureEnsures {
-    validator_addr: address;
-    
-    let vs = spec_get_validators();
-    ensures len(vs) == len(old(vs));
-}
-
- - -No addresses change in the validator set - - -
schema UpdateConfigAndReconfigureEnsures {
-    ensures forall i in 0..len(vs): vs[i].addr == old(vs)[i].addr;
-}
-
- - -If the ValidatorInfo address is not the one we're changing, the info does not change. - - -
schema UpdateConfigAndReconfigureEnsures {
-    ensures forall i in 0..len(vs) where old(vs)[i].addr != validator_addr:
-                     vs[i] == old(vs)[i];
-}
-
- - -It updates the correct entry in the correct way - - -
schema UpdateConfigAndReconfigureEnsures {
-    ensures forall i in 0..len(vs): vs[i].config == old(vs[i].config) ||
-                (old(vs)[i].addr == validator_addr &&
-                vs[i].config == ValidatorConfig::get_config(validator_addr));
-}
-
- - -LIP-6 property - - -
schema UpdateConfigAndReconfigureEnsures {
-    ensures Roles::spec_has_validator_role_addr(validator_addr);
-}
-
- - - -
- - - -## Function `get_libra_system_config` - -Get the LibraSystem configuration from LibraConfig - - -
public fun get_libra_system_config(): LibraSystem::LibraSystem
-
- - - -
-Implementation - - -
public fun get_libra_system_config(): LibraSystem {
-    LibraConfig::get<LibraSystem>()
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include LibraConfig::AbortsIfNotPublished<LibraSystem>;
-ensures result == LibraConfig::get<LibraSystem>();
-
- - - -
- - - -## Function `is_validator` - -Return true if addr is in the current validator set - - -
public fun is_validator(addr: address): bool
-
- - - -
-Implementation - - -
public fun is_validator(addr: address): bool {
-    is_validator_(addr, &get_libra_system_config().validators)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include LibraConfig::AbortsIfNotPublished<LibraSystem>;
-ensures result == spec_is_validator(addr);
-
- - - - - - - -
define spec_is_validator(addr: address): bool {
-   exists v in spec_get_validators(): v.addr == addr
-}
-
- - - -
- - - -## Function `get_validator_config` - -Returns validator config. Aborts if addr is not in the validator set. - - -
public fun get_validator_config(addr: address): ValidatorConfig::Config
-
- - - -
-Implementation - - -
public fun get_validator_config(addr: address): ValidatorConfig::Config {
-    let libra_system_config = get_libra_system_config();
-    let validator_index_vec = get_validator_index_(&libra_system_config.validators, addr);
-    assert(Option::is_some(&validator_index_vec), Errors::invalid_argument(ENOT_AN_ACTIVE_VALIDATOR));
-    *&(Vector::borrow(&libra_system_config.validators, *Option::borrow(&validator_index_vec))).config
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include LibraConfig::AbortsIfNotPublished<LibraSystem>;
-aborts_if !spec_is_validator(addr) with Errors::INVALID_ARGUMENT;
-ensures
-    exists info in LibraConfig::get<LibraSystem>().validators where info.addr == addr:
-        result == info.config;
-
- - - -
- - - -## Function `validator_set_size` - -Return the size of the current validator set - - -
public fun validator_set_size(): u64
-
- - - -
-Implementation - - -
public fun validator_set_size(): u64 {
-    Vector::length(&get_libra_system_config().validators)
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include LibraConfig::AbortsIfNotPublished<LibraSystem>;
-ensures result == len(spec_get_validators());
-
- - - -
- - - -## Function `get_ith_validator_address` - -Get the i'th validator address in the validator set. - - -
public fun get_ith_validator_address(i: u64): address
-
- - - -
-Implementation - - -
public fun get_ith_validator_address(i: u64): address {
-    assert(i < validator_set_size(), Errors::invalid_argument(EVALIDATOR_INDEX));
-    Vector::borrow(&get_libra_system_config().validators, i).addr
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include LibraConfig::AbortsIfNotPublished<LibraSystem>;
-aborts_if i >= len(spec_get_validators()) with Errors::INVALID_ARGUMENT;
-ensures result == spec_get_validators()[i].addr;
-
- - - -
- - - -## Function `get_validator_index_` - -Get the index of the validator by address in the validators vector -It has a loop, so there are spec blocks in the code to assert loop invariants. - - -
fun get_validator_index_(validators: &vector<LibraSystem::ValidatorInfo>, addr: address): Option::Option<u64>
-
- - - -
-Implementation - - -
fun get_validator_index_(validators: &vector<ValidatorInfo>, addr: address): Option<u64> {
-    let size = Vector::length(validators);
-    let i = 0;
-    while ({
-        spec {
-            assert i <= size;
-            assert forall j in 0..i: validators[j].addr != addr;
-        };
-        (i < size)
-    })
-    {
-        let validator_info_ref = Vector::borrow(validators, i);
-        if (validator_info_ref.addr == addr) {
-            spec {
-                assert validators[i].addr == addr;
-            };
-            return Option::some(i)
-        };
-        i = i + 1;
-    };
-    spec {
-        assert i == size;
-        assert forall j in 0..size: validators[j].addr != addr;
-    };
-    return Option::none()
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if false;
-
-let size = len(validators);
-
- - -If addr is not in validator set, returns none. - - -
ensures (forall i in 0..size: validators[i].addr != addr) ==> Option::is_none(result);
-
- - -If addr is in validator set, return the least index of an entry with that address. -The data invariant associated with the LibraSystem.validators that implies -that there is exactly one such address. - - -
ensures
-    (exists i in 0..size: validators[i].addr == addr) ==>
-        Option::is_some(result)
-        && {
-                let at = Option::borrow(result);
-                0 <= at && at < size && validators[at].addr == addr
-            };
-
- - - -
- - - -## Function `update_ith_validator_info_` - -Updates *i*th validator info, if nothing changed, return false. -This function never aborts. - - -
fun update_ith_validator_info_(validators: &mut vector<LibraSystem::ValidatorInfo>, i: u64): bool
-
- - - -
-Implementation - - -
fun update_ith_validator_info_(validators: &mut vector<ValidatorInfo>, i: u64): bool {
-    let size = Vector::length(validators);
-    // This provably cannot happen, but left it here for safety.
-    if (i >= size) {
-        return false
-    };
-    let validator_info = Vector::borrow_mut(validators, i);
-    // "is_valid" below should always hold based on a global invariant later
-    // in the file (which proves if we comment out some other specifications),
-    // but it is left here for safety.
-    if (!ValidatorConfig::is_valid(validator_info.addr)) {
-        return false
-    };
-    let new_validator_config = ValidatorConfig::get_config(validator_info.addr);
-    // check if information is the same
-    let config_ref = &mut validator_info.config;
-    if (config_ref == &new_validator_config) {
-        return false
-    };
-    *config_ref = new_validator_config;
-    true
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if false;
-
-let new_validator_config = ValidatorConfig::spec_get_config(validators[i].addr);
-
- - -Prover is able to prove this because get_validator_index_ ensures it -in calling context. - - -
requires 0 <= i && i < len(validators);
-
- - -Somewhat simplified from the code because of properties guaranteed -by the calling context. - - -
ensures
-    result ==
-        (ValidatorConfig::is_valid(validators[i].addr) &&
-         new_validator_config != old(validators[i].config));
-
- - -It only updates validators at index i, and updates the -config field to new_validator_config. - - -
ensures
-    result ==>
-        validators == update_vector(
-            old(validators),
-            i,
-            update_field(old(validators[i]), config, new_validator_config)
-        );
-
- - -Does not change validators if result is false - - -
ensures !result ==> validators == old(validators);
-
- - -Updates the ith validator entry (and nothing else), as appropriate. - - -
ensures validators == update_vector(old(validators), i, validators[i]);
-
- - -Needed these assertions to make "consensus voting power is always 1" invariant -prove (not sure why). - - -
requires forall i1 in 0..len(spec_get_validators()):
-   spec_get_validators()[i1].consensus_voting_power == 1;
-ensures forall i1 in 0..len(spec_get_validators()):
-   spec_get_validators()[i1].consensus_voting_power == 1;
-
- - - -
- - - -## Function `is_validator_` - -Private function checks for membership of addr in validator set. - - -
fun is_validator_(addr: address, validators_vec_ref: &vector<LibraSystem::ValidatorInfo>): bool
-
- - - -
-Implementation - - -
fun is_validator_(addr: address, validators_vec_ref: &vector<ValidatorInfo>): bool {
-    Option::is_some(&get_validator_index_(validators_vec_ref, addr))
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-aborts_if false;
-ensures result == (exists v in validators_vec_ref: v.addr == addr);
-
- - - -
- - - -## Module Specification - - - - - -### Initialization - - -After genesis, the LibraSystem configuration is published, as well as the capability -which grants the right to modify it to certain functions in this module. - - -
invariant [global] LibraTimestamp::is_operating() ==>
-    LibraConfig::spec_is_published<LibraSystem>() &&
-    exists<CapabilityHolder>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - - - - -### Access Control - -Access control requirements for validator set are a bit more complicated than -many parts of the framework because of update_config_and_reconfigure. -That function updates the validator info (e.g., the network address) for a -particular Validator Owner, but only if the signer is the Operator for that owner. -Therefore, we must ensure that the information for other validators in the -validator set are not changed, which is specified locally for -update_config_and_reconfigure. - -The permission "{Add, Remove} Validator" is granted to LibraRoot [[H13]][PERMISSION]. - - -
apply Roles::AbortsIfNotLibraRoot{account: lr_account} to add_validator, remove_validator;
-
- - - - - - - -
schema ValidatorSetConfigRemainsSame {
-    ensures spec_get_validators() == old(spec_get_validators());
-}
-
- - - -Only {add, remove} validator [[H13]][PERMISSION] and update_config_and_reconfigure -[[H14]][PERMISSION] may change the set of validators in the configuration. -set_libra_system_config is a private function which is only called by other -functions in the "except" list. initialize_validator_set is only called in -Genesis. - - -
apply ValidatorSetConfigRemainsSame to *, *<T>
-   except add_validator, remove_validator, update_config_and_reconfigure,
-       initialize_validator_set, set_libra_system_config;
-
- - - - - -### Helper Functions - - -Fetches the currently published validator set from the published LibraConfig -resource. - - - - - -
define spec_get_validators(): vector<ValidatorInfo> {
-    LibraConfig::get<LibraSystem>().validators
-}
-
- - - -Every validator has a published ValidatorConfig whose config option is "some" -(meaning of ValidatorConfig::is_valid). -> Unfortunately, this times out for unknown reasons (it doesn't seem to be hard), -so it is deactivated. -The Prover can prove it if the uniqueness invariant for the LibraSystem resource -is commented out, along with aborts for update_config_and_reconfigure and everything -else that breaks (e.g., there is an ensures in remove_validator that has to be -commented out) - - -
invariant [deactivated, global] forall i1 in 0..len(spec_get_validators()):
-    ValidatorConfig::is_valid(spec_get_validators()[i1].addr);
-
- - -Every validator in the validator set has a validator role. -> Note: Verification of LibraSystem seems to be very sensitive, and will -often time out after small changes. Disabling this property -(with [deactivate, global]) is sometimes a quick temporary fix. - - -
invariant [global] forall i1 in 0..len(spec_get_validators()):
-    Roles::spec_has_validator_role_addr(spec_get_validators()[i1].addr);
-
- - -Consensus_voting_power is always 1. In future implementations, this -field may have different values in which case this property will have to -change. It's here currently because and accidental or illicit change -to the voting power of a validator could defeat the Byzantine fault tolerance -of LibraBFT. - - -
invariant [global] forall i1 in 0..len(spec_get_validators()):
-    spec_get_validators()[i1].consensus_voting_power == 1;
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraTimestamp.md b/language/stdlib/modules/doc/LibraTimestamp.md deleted file mode 100644 index 404804d225..0000000000 --- a/language/stdlib/modules/doc/LibraTimestamp.md +++ /dev/null @@ -1,512 +0,0 @@ - - - -# Module `0x1::LibraTimestamp` - -This module keeps a global wall clock that stores the current Unix time in microseconds. -It interacts with the other modules in the following ways: - -* Genesis: to initialize the timestamp -* VASP: to keep track of when credentials expire -* LibraSystem, LibraAccount, LibraConfig: to check if the current state is in the genesis state -* LibraBlock: to reach consensus on the global wall clock time -* AccountLimits: to limit the time of account limits - -This module moreover enables code to assert that it is running in genesis (Self::assert_genesis) or after -genesis (Self::assert_operating). These are essentially distinct states of the system. Specifically, -if Self::assert_operating succeeds, assumptions about invariants over the global state can be made -which reflect that the system has been successfully initialized. - - -- [Resource `CurrentTimeMicroseconds`](#0x1_LibraTimestamp_CurrentTimeMicroseconds) -- [Constants](#@Constants_0) -- [Function `set_time_has_started`](#0x1_LibraTimestamp_set_time_has_started) -- [Function `update_global_time`](#0x1_LibraTimestamp_update_global_time) -- [Function `now_microseconds`](#0x1_LibraTimestamp_now_microseconds) -- [Function `now_seconds`](#0x1_LibraTimestamp_now_seconds) -- [Function `is_genesis`](#0x1_LibraTimestamp_is_genesis) -- [Function `assert_genesis`](#0x1_LibraTimestamp_assert_genesis) -- [Function `is_operating`](#0x1_LibraTimestamp_is_operating) -- [Function `assert_operating`](#0x1_LibraTimestamp_assert_operating) -- [Module Specification](#@Module_Specification_1) - - -
use 0x1::CoreAddresses;
-use 0x1::Errors;
-
- - - - - -## Resource `CurrentTimeMicroseconds` - -A singleton resource holding the current Unix time in microseconds - - -
resource struct CurrentTimeMicroseconds
-
- - - -
-Fields - - -
-
-microseconds: u64 -
-
- -
-
- - -
- - - -## Constants - - - - -The blockchain is not in the genesis state anymore - - -
const ENOT_GENESIS: u64 = 0;
-
- - - - - -The blockchain is not in an operating state yet - - -
const ENOT_OPERATING: u64 = 1;
-
- - - - - -An invalid timestamp was provided - - -
const ETIMESTAMP: u64 = 2;
-
- - - - - -Conversion factor between seconds and microseconds - - -
const MICRO_CONVERSION_FACTOR: u64 = 1000000;
-
- - - - - -## Function `set_time_has_started` - -Marks that time has started and genesis has finished. This can only be called from genesis and with the root -account. - - -
public fun set_time_has_started(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun set_time_has_started(lr_account: &signer) {
-    assert_genesis();
-    CoreAddresses::assert_libra_root(lr_account);
-    let timer = CurrentTimeMicroseconds { microseconds: 0 };
-    move_to(lr_account, timer);
-}
-
- - - -
- -
-Specification - - -Verification of this function is turned off because it cannot be verified without genesis execution -context. After time has started, all invariants guarded by LibraTimestamp::is_operating will become -activated and need to hold. - - -
pragma verify = false;
-include AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-ensures is_operating();
-
- - - -
- - - -## Function `update_global_time` - -Updates the wall clock time by consensus. Requires VM privilege and will be invoked during block prologue. - - -
public fun update_global_time(account: &signer, proposer: address, timestamp: u64)
-
- - - -
-Implementation - - -
public fun update_global_time(
-    account: &signer,
-    proposer: address,
-    timestamp: u64
-) acquires CurrentTimeMicroseconds {
-    assert_operating();
-    // Can only be invoked by LibraVM signer.
-    CoreAddresses::assert_vm(account);
-
-    let global_timer = borrow_global_mut<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-    let now = global_timer.microseconds;
-    if (proposer == CoreAddresses::VM_RESERVED_ADDRESS()) {
-        // NIL block with null address as proposer. Timestamp must be equal.
-        assert(now == timestamp, Errors::invalid_argument(ETIMESTAMP));
-    } else {
-        // Normal block. Time must advance
-        assert(now < timestamp, Errors::invalid_argument(ETIMESTAMP));
-    };
-    global_timer.microseconds = timestamp;
-}
-
- - - -
- -
-Specification - - - -
include AbortsIfNotOperating;
-include CoreAddresses::AbortsIfNotVM;
-
-let now = spec_now_microseconds();
-aborts_if [assume]
-    (if (proposer == CoreAddresses::VM_RESERVED_ADDRESS()) {
-        now != timestamp
-     } else  {
-        now >= timestamp
-     }
-    )
-    with Errors::INVALID_ARGUMENT;
-ensures spec_now_microseconds() == timestamp;
-
- - - -
- - - -## Function `now_microseconds` - -Gets the current time in microseconds. - - -
public fun now_microseconds(): u64
-
- - - -
-Implementation - - -
public fun now_microseconds(): u64 acquires CurrentTimeMicroseconds {
-    assert_operating();
-    borrow_global<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include AbortsIfNotOperating;
-ensures result == spec_now_microseconds();
-
- - - - - - - -
define spec_now_microseconds(): u64 {
-   global<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds
-}
-
- - - -
- - - -## Function `now_seconds` - -Gets the current time in seconds. - - -
public fun now_seconds(): u64
-
- - - -
-Implementation - - -
public fun now_seconds(): u64 acquires CurrentTimeMicroseconds {
-    now_microseconds() / MICRO_CONVERSION_FACTOR
-}
-
- - - -
- -
-Specification - - - -
pragma opaque;
-include AbortsIfNotOperating;
-ensures result == spec_now_microseconds() /  MICRO_CONVERSION_FACTOR;
-
- - - - - - - -
define spec_now_seconds(): u64 {
-   global<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS()).microseconds / MICRO_CONVERSION_FACTOR
-}
-
- - - -
- - - -## Function `is_genesis` - -Helper function to determine if Libra is in genesis state. - - -
public fun is_genesis(): bool
-
- - - -
-Implementation - - -
public fun is_genesis(): bool {
-    !exists<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
- - - -
- - - -## Function `assert_genesis` - -Helper function to assert genesis state. - - -
public fun assert_genesis()
-
- - - -
-Implementation - - -
public fun assert_genesis() {
-    assert(is_genesis(), Errors::invalid_state(ENOT_GENESIS));
-}
-
- - - -
- -
-Specification - - - -
pragma opaque = true;
-include AbortsIfNotGenesis;
-
- - -Helper schema to specify that a function aborts if not in genesis. - - - - - -
schema AbortsIfNotGenesis {
-    aborts_if !is_genesis() with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Function `is_operating` - -Helper function to determine if Libra is operating. This is the same as !is_genesis() and is provided -for convenience. Testing is_operating() is more frequent than is_genesis(). - - -
public fun is_operating(): bool
-
- - - -
-Implementation - - -
public fun is_operating(): bool {
-    exists<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS())
-}
-
- - - -
- - - -## Function `assert_operating` - -Helper function to assert operating (!genesis) state. - - -
public fun assert_operating()
-
- - - -
-Implementation - - -
public fun assert_operating() {
-    assert(is_operating(), Errors::invalid_state(ENOT_OPERATING));
-}
-
- - - -
- -
-Specification - - - -
pragma opaque = true;
-include AbortsIfNotOperating;
-
- - -Helper schema to specify that a function aborts if not operating. - - - - - -
schema AbortsIfNotOperating {
-    aborts_if !is_operating() with Errors::INVALID_STATE;
-}
-
- - - -
- - - -## Module Specification - - - -After genesis, CurrentTimeMicroseconds is published forever - - -
invariant [global] is_operating() ==> exists<CurrentTimeMicroseconds>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-
- - -After genesis, time progresses monotonically. - - -
invariant update [global]
-    old(is_operating()) ==> old(spec_now_microseconds()) <= spec_now_microseconds();
-
- - - -All functions which do not have an aborts_if specification in this module are implicitly declared -to never abort. - - -
pragma aborts_if_is_strict;
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraTransactionPublishingOption.md b/language/stdlib/modules/doc/LibraTransactionPublishingOption.md deleted file mode 100644 index c1790c9ec1..0000000000 --- a/language/stdlib/modules/doc/LibraTransactionPublishingOption.md +++ /dev/null @@ -1,468 +0,0 @@ - - - -# Module `0x1::LibraTransactionPublishingOption` - -This module defines a struct storing the publishing policies for the VM. - - -- [Struct `LibraTransactionPublishingOption`](#0x1_LibraTransactionPublishingOption_LibraTransactionPublishingOption) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraTransactionPublishingOption_initialize) -- [Function `is_script_allowed`](#0x1_LibraTransactionPublishingOption_is_script_allowed) -- [Function `is_module_allowed`](#0x1_LibraTransactionPublishingOption_is_module_allowed) -- [Function `add_to_script_allow_list`](#0x1_LibraTransactionPublishingOption_add_to_script_allow_list) -- [Function `set_open_script`](#0x1_LibraTransactionPublishingOption_set_open_script) -- [Function `set_open_module`](#0x1_LibraTransactionPublishingOption_set_open_module) -- [Module Specification](#@Module_Specification_1) - - [Initialization](#@Initialization_2) - - [Access Control](#@Access_Control_3) - - [Helper Functions](#@Helper_Functions_4) - - -
use 0x1::Errors;
-use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
-use 0x1::Roles;
-use 0x1::Vector;
-
- - - - - -## Struct `LibraTransactionPublishingOption` - -Defines and holds the publishing policies for the VM. There are three possible configurations: -1. No module publishing, only allow-listed scripts are allowed. -2. No module publishing, custom scripts are allowed. -3. Both module publishing and custom scripts are allowed. -We represent these as the following resource. - - -
struct LibraTransactionPublishingOption
-
- - - -
-Fields - - -
-
-script_allow_list: vector<vector<u8>> -
-
- Only script hashes in the following list can be executed by the network. If the vector is empty, no - limitation would be enforced. -
-
-module_publishing_allowed: bool -
-
- Anyone can publish new module if this flag is set to true. -
-
- - -
- - - -## Constants - - - - -The script hash already exists in the allowlist - - -
const EALLOWLIST_ALREADY_CONTAINS_SCRIPT: u64 = 1;
-
- - - - - -The script hash has an invalid length - - -
const EINVALID_SCRIPT_HASH: u64 = 0;
-
- - - - - - - -
const SCRIPT_HASH_LENGTH: u64 = 32;
-
- - - - - -## Function `initialize` - - - -
public fun initialize(lr_account: &signer, script_allow_list: vector<vector<u8>>, module_publishing_allowed: bool)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-    script_allow_list: vector<vector<u8>>,
-    module_publishing_allowed: bool,
-) {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-
-    LibraConfig::publish_new_config(
-        lr_account,
-        LibraTransactionPublishingOption {
-            script_allow_list, module_publishing_allowed
-        }
-    );
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraTimestamp::AbortsIfNotGenesis;
-include LibraConfig::PublishNewConfigAbortsIf<LibraTransactionPublishingOption>;
-include LibraConfig::PublishNewConfigEnsures<LibraTransactionPublishingOption> {
-    payload: LibraTransactionPublishingOption {
-        script_allow_list, module_publishing_allowed
-    }};
-
- - - -
- - - -## Function `is_script_allowed` - -Check if sender can execute script with hash - - -
public fun is_script_allowed(account: &signer, hash: &vector<u8>): bool
-
- - - -
-Implementation - - -
public fun is_script_allowed(account: &signer, hash: &vector<u8>): bool {
-    let publish_option = LibraConfig::get<LibraTransactionPublishingOption>();
-
-    Vector::is_empty(&publish_option.script_allow_list)
-        || Vector::contains(&publish_option.script_allow_list, hash)
-        || Roles::has_libra_root_role(account)
-}
-
- - - -
- -
-Specification - - - -
include AbortsIfNoTransactionPublishingOption;
-
- - - - - - - -
schema AbortsIfNoTransactionPublishingOption {
-    include LibraTimestamp::is_genesis() ==> LibraConfig::AbortsIfNotPublished<LibraTransactionPublishingOption>{};
-}
-
- - - -
- - - -## Function `is_module_allowed` - -Check if a sender can publish a module - - -
public fun is_module_allowed(account: &signer): bool
-
- - - -
-Implementation - - -
public fun is_module_allowed(account: &signer): bool {
-    let publish_option = LibraConfig::get<LibraTransactionPublishingOption>();
-
-    publish_option.module_publishing_allowed || Roles::has_libra_root_role(account)
-}
-
- - - -
- -
-Specification - - - -
include AbortsIfNoTransactionPublishingOption;
-
- - - -
- - - -## Function `add_to_script_allow_list` - -Add new_hash to the list of script hashes that is allowed to be executed by the network. - - -
public fun add_to_script_allow_list(lr_account: &signer, new_hash: vector<u8>)
-
- - - -
-Implementation - - -
public fun add_to_script_allow_list(lr_account: &signer, new_hash: vector<u8>) {
-    Roles::assert_libra_root(lr_account);
-
-    assert(Vector::length(&new_hash) == SCRIPT_HASH_LENGTH, Errors::invalid_argument(EINVALID_SCRIPT_HASH));
-
-    let publish_option = LibraConfig::get<LibraTransactionPublishingOption>();
-    if (Vector::contains(&publish_option.script_allow_list, &new_hash)) {
-          abort Errors::invalid_argument(EALLOWLIST_ALREADY_CONTAINS_SCRIPT)
-    };
-    Vector::push_back(&mut publish_option.script_allow_list, new_hash);
-
-    LibraConfig::set<LibraTransactionPublishingOption>(lr_account, publish_option);
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-
-let allow_list = LibraConfig::get<LibraTransactionPublishingOption>().script_allow_list;
-aborts_if Vector::length(new_hash) != SCRIPT_HASH_LENGTH with Errors::INVALID_ARGUMENT;
-aborts_if Vector::spec_contains(allow_list, new_hash) with Errors::INVALID_ARGUMENT;
-include LibraConfig::AbortsIfNotPublished<LibraTransactionPublishingOption>;
-include LibraConfig::SetAbortsIf<LibraTransactionPublishingOption>{account: lr_account};
-
- - - -
- - - -## Function `set_open_script` - -Allow the execution of arbitrary script or not. - - -
public fun set_open_script(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun set_open_script(lr_account: &signer) {
-    Roles::assert_libra_root(lr_account);
-    let publish_option = LibraConfig::get<LibraTransactionPublishingOption>();
-
-    publish_option.script_allow_list = Vector::empty();
-    LibraConfig::set<LibraTransactionPublishingOption>(lr_account, publish_option);
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraConfig::AbortsIfNotPublished<LibraTransactionPublishingOption>;
-include LibraConfig::SetAbortsIf<LibraTransactionPublishingOption>{account: lr_account};
-
- - - -
- - - -## Function `set_open_module` - -Allow module publishing from arbitrary sender or not. - - -
public fun set_open_module(lr_account: &signer, open_module: bool)
-
- - - -
-Implementation - - -
public fun set_open_module(lr_account: &signer, open_module: bool) {
-    Roles::assert_libra_root(lr_account);
-
-    let publish_option = LibraConfig::get<LibraTransactionPublishingOption>();
-
-    publish_option.module_publishing_allowed = open_module;
-    LibraConfig::set<LibraTransactionPublishingOption>(lr_account, publish_option);
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H11]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraConfig::AbortsIfNotPublished<LibraTransactionPublishingOption>;
-include LibraConfig::SetAbortsIf<LibraTransactionPublishingOption>{account: lr_account};
-
- - - -
- - - -## Module Specification - - - - - -### Initialization - - - -
invariant [global] LibraTimestamp::is_operating() ==>
-    LibraConfig::spec_is_published<LibraTransactionPublishingOption>();
-
- - - - - -### Access Control - -Only add_to_script_allow_list, set_open_script, and set_open_module can modify the -LibraTransactionPublishingOption config [[H11]][PERMISSION] - - - - - -
schema LibraVersionRemainsSame {
-    ensures old(LibraConfig::spec_is_published<LibraTransactionPublishingOption>()) ==>
-        global<LibraConfig<LibraTransactionPublishingOption>>(CoreAddresses::LIBRA_ROOT_ADDRESS()) ==
-            old(global<LibraConfig<LibraTransactionPublishingOption>>(CoreAddresses::LIBRA_ROOT_ADDRESS()));
-}
-
- - - - -
apply LibraVersionRemainsSame to * except add_to_script_allow_list, set_open_script, set_open_module;
-
- - - - - -### Helper Functions - - - - - - -
define spec_is_script_allowed(account: signer, hash: vector<u8>): bool {
-    let publish_option = LibraConfig::spec_get_config<LibraTransactionPublishingOption>();
-    Vector::is_empty(publish_option.script_allow_list)
-        || Vector::spec_contains(publish_option.script_allow_list, hash)
-        || Roles::has_libra_root_role(account)
-}
-
-define spec_is_module_allowed(account: signer): bool {
-    let publish_option = LibraConfig::spec_get_config<LibraTransactionPublishingOption>();
-    publish_option.module_publishing_allowed || Roles::has_libra_root_role(account)
-}
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/LibraVersion.md b/language/stdlib/modules/doc/LibraVersion.md deleted file mode 100644 index 9e4a2aa688..0000000000 --- a/language/stdlib/modules/doc/LibraVersion.md +++ /dev/null @@ -1,245 +0,0 @@ - - - -# Module `0x1::LibraVersion` - -Maintains the version number for the Libra blockchain. The version is stored in a -LibraConfig, and may be updated by Libra root. - - -- [Struct `LibraVersion`](#0x1_LibraVersion_LibraVersion) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_LibraVersion_initialize) -- [Function `set`](#0x1_LibraVersion_set) -- [Module Specification](#@Module_Specification_1) - - [Initialization](#@Initialization_2) - - [Access Control](#@Access_Control_3) - - [Other Invariants](#@Other_Invariants_4) - - -
use 0x1::Errors;
-use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
-use 0x1::Roles;
-
- - - - - -## Struct `LibraVersion` - - - -
struct LibraVersion
-
- - - -
-Fields - - -
-
-major: u64 -
-
- -
-
- - -
- - - -## Constants - - - - -Tried to set an invalid major version for the VM. Major versions must be strictly increasing - - -
const EINVALID_MAJOR_VERSION_NUMBER: u64 = 0;
-
- - - - - -## Function `initialize` - -Publishes the LibraVersion config. Must be called during Genesis. - - -
public fun initialize(lr_account: &signer)
-
- - - -
-Implementation - - -
public fun initialize(
-    lr_account: &signer,
-) {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-    LibraConfig::publish_new_config<LibraVersion>(
-        lr_account,
-        LibraVersion { major: 1 },
-    );
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H10]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraTimestamp::AbortsIfNotGenesis;
-include LibraConfig::PublishNewConfigAbortsIf<LibraVersion>;
-include LibraConfig::PublishNewConfigEnsures<LibraVersion>{payload: LibraVersion { major: 1 }};
-
- - - -
- - - -## Function `set` - -Allows Libra root to update the major version to a larger version. - - -
public fun set(lr_account: &signer, major: u64)
-
- - - -
-Implementation - - -
public fun set(lr_account: &signer, major: u64) {
-    LibraTimestamp::assert_operating();
-
-    Roles::assert_libra_root(lr_account);
-
-    let old_config = LibraConfig::get<LibraVersion>();
-
-    assert(
-        old_config.major < major,
-        Errors::invalid_argument(EINVALID_MAJOR_VERSION_NUMBER)
-    );
-
-    LibraConfig::set<LibraVersion>(
-        lr_account,
-        LibraVersion { major }
-    );
-}
-
- - - -
- -
-Specification - - -Must abort if the signer does not have the LibraRoot role [[H10]][PERMISSION]. - - -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
-include LibraTimestamp::AbortsIfNotOperating;
-aborts_if LibraConfig::get<LibraVersion>().major >= major with Errors::INVALID_ARGUMENT;
-include LibraConfig::SetAbortsIf<LibraVersion>{account: lr_account};
-include LibraConfig::SetEnsures<LibraVersion>{payload: LibraVersion { major }};
-
- - - -
- - - -## Module Specification - - - - - -### Initialization - - -After genesis, version is published. - - -
invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published<LibraVersion>();
-
- - - - - -### Access Control - -Only "set" can modify the LibraVersion config [[H10]][PERMISSION] - - - - - -
schema LibraVersionRemainsSame {
-    ensures old(LibraConfig::spec_is_published<LibraVersion>()) ==>
-        global<LibraConfig<LibraVersion>>(CoreAddresses::LIBRA_ROOT_ADDRESS()) ==
-            old(global<LibraConfig<LibraVersion>>(CoreAddresses::LIBRA_ROOT_ADDRESS()));
-}
-
- - - - -
apply LibraVersionRemainsSame to * except set;
-
- - - -The permission "UpdateLibraProtocolVersion" is granted to LibraRoot [[H10]][PERMISSION]. - - -
invariant [global, isolated] forall addr: address where exists<LibraConfig<LibraVersion>>(addr):
-    addr == CoreAddresses::LIBRA_ROOT_ADDRESS();
-
- - - - - -### Other Invariants - - -Version number never decreases - - -
invariant update [global, isolated]
-    old(LibraConfig::get<LibraVersion>().major) <= LibraConfig::get<LibraVersion>().major;
-
- - -[//]: # ("File containing references which can be used from documentation") -[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles -[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/RecoveryAddress.md b/language/stdlib/modules/doc/RecoveryAddress.md index ddb1ee97d5..996f1b870b 100644 --- a/language/stdlib/modules/doc/RecoveryAddress.md +++ b/language/stdlib/modules/doc/RecoveryAddress.md @@ -19,8 +19,8 @@ This module defines an account recovery mechanism that can be used by VASPs. - [Helper Functions](#@Helper_Functions_6) -
use 0x1::Errors;
-use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
+use 0x1::Errors;
 use 0x1::Signer;
 use 0x1::VASP;
 use 0x1::Vector;
@@ -53,7 +53,7 @@ recover one of accounts in rotation_caps arises.
 
 
-rotation_caps: vector<LibraAccount::KeyRotationCapability> +rotation_caps: vector<DiemAccount::KeyRotationCapability>
@@ -138,7 +138,7 @@ Aborts if recovery_account has delegated its KeyRotationCapab RecoveryAddress resource, or is not a VASP. -
public fun publish(recovery_account: &signer, rotation_cap: LibraAccount::KeyRotationCapability)
+
public fun publish(recovery_account: &signer, rotation_cap: DiemAccount::KeyRotationCapability)
 
@@ -157,7 +157,7 @@ Aborts if recovery_account has delegated its KeyRotationCapab // B and B is the recovery account for A // (2) rotation_caps is always nonempty assert( - *LibraAccount::key_rotation_capability_address(&rotation_cap) == addr, + *DiemAccount::key_rotation_capability_address(&rotation_cap) == addr, Errors::invalid_argument(EKEY_ROTATION_DEPENDENCY_CYCLE) ); assert(!exists<RecoveryAddress>(addr), Errors::already_published(ERECOVERY_ADDRESS)); @@ -194,7 +194,7 @@ Aborts if recovery_account has delegated its KeyRotationCapab let addr = Signer::spec_address_of(recovery_account); aborts_if !VASP::is_vasp(addr) with Errors::INVALID_ARGUMENT; aborts_if spec_is_recovery_address(addr) with Errors::ALREADY_PUBLISHED; - aborts_if LibraAccount::key_rotation_capability_address(rotation_cap) != addr + aborts_if DiemAccount::key_rotation_capability_address(rotation_cap) != addr with Errors::INVALID_ARGUMENT; }
@@ -267,8 +267,8 @@ Aborts if recovery_address does not have the KeyRotationCapab }) { let cap = Vector::borrow(caps, i); - if (LibraAccount::key_rotation_capability_address(cap) == &to_recover) { - LibraAccount::rotate_authentication_key(cap, new_key); + if (DiemAccount::key_rotation_capability_address(cap) == &to_recover) { + DiemAccount::rotate_authentication_key(cap, new_key); return }; i = i + 1 @@ -307,7 +307,7 @@ Aborts if recovery_address does not have the KeyRotationCapab to_recover: address; new_key: vector<u8>; aborts_if !spec_is_recovery_address(recovery_address) with Errors::NOT_PUBLISHED; - aborts_if !LibraAccount::exists_at(to_recover) with Errors::NOT_PUBLISHED; + aborts_if !DiemAccount::exists_at(to_recover) with Errors::NOT_PUBLISHED; aborts_if len(new_key) != 32 with Errors::INVALID_ARGUMENT; aborts_if !spec_holds_key_rotation_cap_for(recovery_address, to_recover) with Errors::INVALID_ARGUMENT; aborts_if !(Signer::spec_address_of(account) == recovery_address @@ -324,7 +324,7 @@ Aborts if recovery_address does not have the KeyRotationCapab
schema RotateAuthenticationKeyEnsures {
     to_recover: address;
     new_key: vector<u8>;
-    ensures LibraAccount::authentication_key(to_recover) == new_key;
+    ensures DiemAccount::authentication_key(to_recover) == new_key;
 }
 
@@ -341,7 +341,7 @@ Aborts if to_recover.address and recovery_address belong t recovery_address does not have a RecoveryAddress` resource. -
public fun add_rotation_capability(to_recover: LibraAccount::KeyRotationCapability, recovery_address: address)
+
public fun add_rotation_capability(to_recover: DiemAccount::KeyRotationCapability, recovery_address: address)
 
@@ -355,7 +355,7 @@ Aborts if to_recover.address and recovery_address belong t // Check that `recovery_address` has a `RecoveryAddress` resource assert(exists<RecoveryAddress>(recovery_address), Errors::not_published(ERECOVERY_ADDRESS)); // Only accept the rotation capability if both accounts belong to the same VASP - let to_recover_address = *LibraAccount::key_rotation_capability_address(&to_recover); + let to_recover_address = *DiemAccount::key_rotation_capability_address(&to_recover); assert( VASP::is_same_vasp(recovery_address, to_recover_address), Errors::invalid_argument(EINVALID_KEY_ROTATION_DELEGATION) @@ -392,7 +392,7 @@ Aborts if to_recover.address and recovery_address belong t recovery_address: address; aborts_if !spec_is_recovery_address(recovery_address) with Errors::NOT_PUBLISHED; - let to_recover_address = LibraAccount::key_rotation_capability_address(to_recover); + let to_recover_address = DiemAccount::key_rotation_capability_address(to_recover); aborts_if !VASP::spec_is_same_vasp(recovery_address, to_recover_address) with Errors::INVALID_ARGUMENT; }
@@ -517,7 +517,7 @@ Returns all the KeyRotationCapabilitys held at recovery_addre
define spec_get_rotation_caps(recovery_address: address):
-    vector<LibraAccount::KeyRotationCapability>
+    vector<DiemAccount::KeyRotationCapability>
 {
     global<RecoveryAddress>(recovery_address).rotation_caps
 }
diff --git a/language/stdlib/modules/doc/RegisteredCurrencies.md b/language/stdlib/modules/doc/RegisteredCurrencies.md
index 815e30fcb6..4478ff7a52 100644
--- a/language/stdlib/modules/doc/RegisteredCurrencies.md
+++ b/language/stdlib/modules/doc/RegisteredCurrencies.md
@@ -3,8 +3,8 @@
 
 # Module `0x1::RegisteredCurrencies`
 
-Module for registering currencies in Libra. Basically, this means adding a
-string (vector) for the currency name to vector of names in LibraConfig.
+Module for registering currencies in Diem. Basically, this means adding a
+string (vector) for the currency name to vector of names in DiemConfig.
 
 
 -  [Struct `RegisteredCurrencies`](#0x1_RegisteredCurrencies_RegisteredCurrencies)
@@ -16,9 +16,9 @@ string (vector) for the currency name to vector of names in LibraConfig.
     -  [Helper Functions](#@Helper_Functions_3)
 
 
-
use 0x1::Errors;
-use 0x1::LibraConfig;
-use 0x1::LibraTimestamp;
+
use 0x1::DiemConfig;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
 use 0x1::Roles;
 use 0x1::Vector;
 
@@ -29,7 +29,7 @@ string (vector) for the currency name to vector of names in LibraConfig. ## Struct `RegisteredCurrencies` -A LibraConfig config holding all of the currency codes for registered +A DiemConfig config holding all of the currency codes for registered currencies. The inner vector's are string representations of currency names. @@ -75,10 +75,10 @@ Attempted to add a currency code that is already in use ## Function `initialize` Initializes this module. Can only be called from genesis, with -a Libra root signer. +a Diem root signer. -
public fun initialize(lr_account: &signer)
+
public fun initialize(dr_account: &signer)
 
@@ -87,11 +87,11 @@ a Libra root signer. Implementation -
public fun initialize(lr_account: &signer) {
-    LibraTimestamp::assert_genesis();
-    Roles::assert_libra_root(lr_account);
-    LibraConfig::publish_new_config(
-        lr_account,
+
public fun initialize(dr_account: &signer) {
+    DiemTimestamp::assert_genesis();
+    Roles::assert_diem_root(dr_account);
+    DiemConfig::publish_new_config(
+        dr_account,
         RegisteredCurrencies { currency_codes: Vector::empty() }
     );
 }
@@ -117,10 +117,10 @@ a Libra root signer.
 
 
 
schema InitializeAbortsIf {
-    lr_account: signer;
-    include LibraTimestamp::AbortsIfNotGenesis;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
-    include LibraConfig::PublishNewConfigAbortsIf<RegisteredCurrencies>;
+    dr_account: signer;
+    include DiemTimestamp::AbortsIfNotGenesis;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
+    include DiemConfig::PublishNewConfigAbortsIf<RegisteredCurrencies>;
 }
 
@@ -131,7 +131,7 @@ a Libra root signer.
schema InitializeEnsures {
-    include LibraConfig::PublishNewConfigEnsures<RegisteredCurrencies>{
+    include DiemConfig::PublishNewConfigEnsures<RegisteredCurrencies>{
         payload: RegisteredCurrencies { currency_codes: Vector::empty() }
     };
     ensures len(get_currency_codes()) == 0;
@@ -149,7 +149,7 @@ a Libra root signer.
 Adds a new currency code. The currency code must not yet exist.
 
 
-
public fun add_currency_code(lr_account: &signer, currency_code: vector<u8>)
+
public fun add_currency_code(dr_account: &signer, currency_code: vector<u8>)
 
@@ -159,16 +159,16 @@ Adds a new currency code. The currency code must not yet exist.
public fun add_currency_code(
-    lr_account: &signer,
+    dr_account: &signer,
     currency_code: vector<u8>,
 ) {
-    let config = LibraConfig::get<RegisteredCurrencies>();
+    let config = DiemConfig::get<RegisteredCurrencies>();
     assert(
         !Vector::contains(&config.currency_codes, ¤cy_code),
         Errors::invalid_argument(ECURRENCY_CODE_ALREADY_TAKEN)
     );
     Vector::push_back(&mut config.currency_codes, currency_code);
-    LibraConfig::set(lr_account, config);
+    DiemConfig::set(dr_account, config);
 }
 
@@ -192,9 +192,9 @@ Adds a new currency code. The currency code must not yet exist.
schema AddCurrencyCodeAbortsIf {
-    lr_account: &signer;
+    dr_account: &signer;
     currency_code: vector<u8>;
-    include LibraConfig::SetAbortsIf<RegisteredCurrencies>{ account: lr_account };
+    include DiemConfig::SetAbortsIf<RegisteredCurrencies>{ account: dr_account };
 }
 
@@ -204,7 +204,7 @@ The same currency code can be only added once.
schema AddCurrencyCodeAbortsIf {
     aborts_if Vector::spec_contains(
-        LibraConfig::get<RegisteredCurrencies>().currency_codes,
+        DiemConfig::get<RegisteredCurrencies>().currency_codes,
         currency_code
     ) with Errors::INVALID_ARGUMENT;
 }
@@ -219,7 +219,7 @@ The same currency code can be only added once.
 
schema AddCurrencyCodeEnsures {
     currency_code: vector<u8>;
     ensures Vector::eq_push_back(get_currency_codes(), old(get_currency_codes()), currency_code);
-    include LibraConfig::SetEnsures<RegisteredCurrencies> {payload: LibraConfig::get<RegisteredCurrencies>()};
+    include DiemConfig::SetEnsures<RegisteredCurrencies> {payload: DiemConfig::get<RegisteredCurrencies>()};
 }
 
@@ -241,7 +241,7 @@ The same currency code can be only added once. Global invariant that currency config is always available after genesis. -
invariant [global] LibraTimestamp::is_operating() ==> LibraConfig::spec_is_published<RegisteredCurrencies>();
+
invariant [global] DiemTimestamp::is_operating() ==> DiemConfig::spec_is_published<RegisteredCurrencies>();
 
@@ -258,7 +258,7 @@ Helper to get the currency code vector.
define get_currency_codes(): vector<vector<u8>> {
-    LibraConfig::get<RegisteredCurrencies>().currency_codes
+    DiemConfig::get<RegisteredCurrencies>().currency_codes
 }
 
diff --git a/language/stdlib/modules/doc/Roles.md b/language/stdlib/modules/doc/Roles.md index f5218306c2..e23b1e317c 100644 --- a/language/stdlib/modules/doc/Roles.md +++ b/language/stdlib/modules/doc/Roles.md @@ -3,10 +3,10 @@ # Module `0x1::Roles` -This module defines role-based access control for the Libra framework. +This module defines role-based access control for the Diem framework. Roles are associated with accounts and govern what operations are permitted by those accounts. A role -is typically asserted on function entry using a statement like Self::assert_libra_root(account). This +is typically asserted on function entry using a statement like Self::assert_diem_root(account). This module provides multiple assertion functions like this one, as well as the functions to setup roles. For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL]. @@ -14,7 +14,7 @@ For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL]. - [Resource `RoleId`](#0x1_Roles_RoleId) - [Constants](#@Constants_0) -- [Function `grant_libra_root_role`](#0x1_Roles_grant_libra_root_role) +- [Function `grant_diem_root_role`](#0x1_Roles_grant_diem_root_role) - [Function `grant_treasury_compliance_role`](#0x1_Roles_grant_treasury_compliance_role) - [Function `new_designated_dealer_role`](#0x1_Roles_new_designated_dealer_role) - [Function `new_validator_role`](#0x1_Roles_new_validator_role) @@ -23,7 +23,7 @@ For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL]. - [Function `new_child_vasp_role`](#0x1_Roles_new_child_vasp_role) - [Function `grant_role`](#0x1_Roles_grant_role) - [Function `has_role`](#0x1_Roles_has_role) -- [Function `has_libra_root_role`](#0x1_Roles_has_libra_root_role) +- [Function `has_diem_root_role`](#0x1_Roles_has_diem_root_role) - [Function `has_treasury_compliance_role`](#0x1_Roles_has_treasury_compliance_role) - [Function `has_designated_dealer_role`](#0x1_Roles_has_designated_dealer_role) - [Function `has_validator_role`](#0x1_Roles_has_validator_role) @@ -32,7 +32,7 @@ For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL]. - [Function `has_child_VASP_role`](#0x1_Roles_has_child_VASP_role) - [Function `get_role_id`](#0x1_Roles_get_role_id) - [Function `can_hold_balance`](#0x1_Roles_can_hold_balance) -- [Function `assert_libra_root`](#0x1_Roles_assert_libra_root) +- [Function `assert_diem_root`](#0x1_Roles_assert_diem_root) - [Function `assert_treasury_compliance`](#0x1_Roles_assert_treasury_compliance) - [Function `assert_parent_vasp_role`](#0x1_Roles_assert_parent_vasp_role) - [Function `assert_child_vasp_role`](#0x1_Roles_assert_child_vasp_role) @@ -48,8 +48,8 @@ For a conceptual discussion of roles, see the [LIP-2 document][ACCESS_CONTROL].
use 0x1::CoreAddresses;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
-use 0x1::LibraTimestamp;
 use 0x1::Signer;
 
@@ -89,12 +89,12 @@ to an account as a top-level resource, and is otherwise immovable. ## Constants - + -The signer didn't have the required Libra Root role +The signer didn't have the required Diem Root role -
const ELIBRA_ROOT: u64 = 1;
+
const EDIEM_ROOT: u64 = 1;
 
@@ -127,6 +127,15 @@ The signer didn't have the required Treasury & Compliance role + + + + +
const DIEM_ROOT_ROLE_ID: u64 = 0;
+
+ + + The signer didn't have the required Child VASP role @@ -207,15 +216,6 @@ The signer didn't have the required Validator Operator role - - - - -
const LIBRA_ROOT_ROLE_ID: u64 = 0;
-
- - - @@ -252,14 +252,14 @@ The signer didn't have the required Validator Operator role - + -## Function `grant_libra_root_role` +## Function `grant_diem_root_role` -Publishes libra root role. Granted only in genesis. +Publishes diem root role. Granted only in genesis. -
public fun grant_libra_root_role(lr_account: &signer)
+
public fun grant_diem_root_role(dr_account: &signer)
 
@@ -268,15 +268,15 @@ Publishes libra root role. Granted only in genesis. Implementation -
public fun grant_libra_root_role(
-    lr_account: &signer,
+
public fun grant_diem_root_role(
+    dr_account: &signer,
 ) {
-    LibraTimestamp::assert_genesis();
-    // Checks actual Libra root because Libra root role is not set
+    DiemTimestamp::assert_genesis();
+    // Checks actual Diem root because Diem root role is not set
     // until next line of code.
-    CoreAddresses::assert_libra_root(lr_account);
-    // Grant the role to the libra root account
-    grant_role(lr_account, LIBRA_ROOT_ROLE_ID);
+    CoreAddresses::assert_diem_root(dr_account);
+    // Grant the role to the diem root account
+    grant_role(dr_account, DIEM_ROOT_ROLE_ID);
 }
 
@@ -289,9 +289,9 @@ Publishes libra root role. Granted only in genesis. -
include LibraTimestamp::AbortsIfNotGenesis;
-include CoreAddresses::AbortsIfNotLibraRoot{account: lr_account};
-include GrantRole{addr: Signer::address_of(lr_account), role_id: LIBRA_ROOT_ROLE_ID};
+
include DiemTimestamp::AbortsIfNotGenesis;
+include CoreAddresses::AbortsIfNotDiemRoot{account: dr_account};
+include GrantRole{addr: Signer::address_of(dr_account), role_id: DIEM_ROOT_ROLE_ID};
 
@@ -305,7 +305,7 @@ Publishes libra root role. Granted only in genesis. Publishes treasury compliance role. Granted only in genesis. -
public fun grant_treasury_compliance_role(treasury_compliance_account: &signer, lr_account: &signer)
+
public fun grant_treasury_compliance_role(treasury_compliance_account: &signer, dr_account: &signer)
 
@@ -316,11 +316,11 @@ Publishes treasury compliance role. Granted only in genesis.
public fun grant_treasury_compliance_role(
     treasury_compliance_account: &signer,
-    lr_account: &signer,
+    dr_account: &signer,
 ) acquires RoleId {
-    LibraTimestamp::assert_genesis();
+    DiemTimestamp::assert_genesis();
     CoreAddresses::assert_treasury_compliance(treasury_compliance_account);
-    assert_libra_root(lr_account);
+    assert_diem_root(dr_account);
     // Grant the TC role to the treasury_compliance_account
     grant_role(treasury_compliance_account, TREASURY_COMPLIANCE_ROLE_ID);
 }
@@ -335,9 +335,9 @@ Publishes treasury compliance role. Granted only in genesis.
 
 
 
-
include LibraTimestamp::AbortsIfNotGenesis;
+
include DiemTimestamp::AbortsIfNotGenesis;
 include CoreAddresses::AbortsIfNotTreasuryCompliance{account: treasury_compliance_account};
-include AbortsIfNotLibraRoot{account: lr_account};
+include AbortsIfNotDiemRoot{account: dr_account};
 include GrantRole{addr: Signer::address_of(treasury_compliance_account), role_id: TREASURY_COMPLIANCE_ROLE_ID};
 
@@ -393,7 +393,7 @@ The creating_account must be treasury compliance. ## Function `new_validator_role` Publish a Validator RoleId under new_account. -The creating_account must be libra root. +The creating_account must be diem root.
public fun new_validator_role(creating_account: &signer, new_account: &signer)
@@ -409,7 +409,7 @@ The creating_account must be libra root.
     creating_account: &signer,
     new_account: &signer
 ) acquires RoleId {
-    assert_libra_root(creating_account);
+    assert_diem_root(creating_account);
     grant_role(new_account, VALIDATOR_ROLE_ID);
 }
 
@@ -423,7 +423,7 @@ The creating_account must be libra root. -
include AbortsIfNotLibraRoot{account: creating_account};
+
include AbortsIfNotDiemRoot{account: creating_account};
 include GrantRole{addr: Signer::address_of(new_account), role_id: VALIDATOR_ROLE_ID};
 
@@ -436,7 +436,7 @@ The creating_account must be libra root. ## Function `new_validator_operator_role` Publish a ValidatorOperator RoleId under new_account. -The creating_account must be LibraRoot +The creating_account must be DiemRoot
public fun new_validator_operator_role(creating_account: &signer, new_account: &signer)
@@ -452,7 +452,7 @@ The creating_account must be LibraRoot
     creating_account: &signer,
     new_account: &signer,
 ) acquires RoleId {
-    assert_libra_root(creating_account);
+    assert_diem_root(creating_account);
     grant_role(new_account, VALIDATOR_OPERATOR_ROLE_ID);
 }
 
@@ -466,7 +466,7 @@ The creating_account must be LibraRoot -
include AbortsIfNotLibraRoot{account: creating_account};
+
include AbortsIfNotDiemRoot{account: creating_account};
 include GrantRole{addr: Signer::address_of(new_account), role_id: VALIDATOR_OPERATOR_ROLE_ID};
 
@@ -595,7 +595,7 @@ Helper function to grant a role. include GrantRole{addr: Signer::address_of(account)}; let addr = Signer::spec_address_of(account); -requires role_id == LIBRA_ROOT_ROLE_ID ==> addr == CoreAddresses::LIBRA_ROOT_ADDRESS(); +requires role_id == DIEM_ROOT_ROLE_ID ==> addr == CoreAddresses::DIEM_ROOT_ADDRESS(); requires role_id == TREASURY_COMPLIANCE_ROLE_ID ==> addr == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
@@ -645,13 +645,13 @@ Helper function to grant a role. - + -## Function `has_libra_root_role` +## Function `has_diem_root_role` -
public fun has_libra_root_role(account: &signer): bool
+
public fun has_diem_root_role(account: &signer): bool
 
@@ -660,8 +660,8 @@ Helper function to grant a role. Implementation -
public fun has_libra_root_role(account: &signer): bool acquires RoleId {
-    has_role(account, LIBRA_ROOT_ROLE_ID)
+
public fun has_diem_root_role(account: &signer): bool acquires RoleId {
+    has_role(account, DIEM_ROOT_ROLE_ID)
 }
 
@@ -842,7 +842,7 @@ Helper function to grant a role. ## Function `can_hold_balance` -Return true if addr is allowed to receive and send Libra<T> for any T +Return true if addr is allowed to receive and send Diem<T> for any T
public fun can_hold_balance(account: &signer): bool
@@ -857,7 +857,7 @@ Return true if addr is allowed to receive and send can_hold_balance(account: &signer): bool acquires RoleId {
     // VASP accounts and designated_dealers can hold balances.
     // Administrative accounts (`Validator`, `ValidatorOperator`, `TreasuryCompliance`, and
-    // `LibraRoot`) cannot.
+    // `DiemRoot`) cannot.
     has_parent_VASP_role(account) ||
     has_child_VASP_role(account) ||
     has_designated_dealer_role(account)
@@ -868,14 +868,14 @@ Return true if addr is allowed to receive and send 
+
 
-## Function `assert_libra_root`
+## Function `assert_diem_root`
 
-Assert that the account is libra root.
+Assert that the account is diem root.
 
 
-
public fun assert_libra_root(account: &signer)
+
public fun assert_diem_root(account: &signer)
 
@@ -884,11 +884,11 @@ Assert that the account is libra root. Implementation -
public fun assert_libra_root(account: &signer) acquires RoleId {
-    CoreAddresses::assert_libra_root(account);
+
public fun assert_diem_root(account: &signer) acquires RoleId {
+    CoreAddresses::assert_diem_root(account);
     let addr = Signer::address_of(account);
     assert(exists<RoleId>(addr), Errors::not_published(EROLE_ID));
-    assert(borrow_global<RoleId>(addr).role_id == LIBRA_ROOT_ROLE_ID, Errors::requires_role(ELIBRA_ROOT));
+    assert(borrow_global<RoleId>(addr).role_id == DIEM_ROOT_ROLE_ID, Errors::requires_role(EDIEM_ROOT));
 }
 
@@ -902,8 +902,8 @@ Assert that the account is libra root.
pragma opaque;
-include CoreAddresses::AbortsIfNotLibraRoot;
-include AbortsIfNotLibraRoot;
+include CoreAddresses::AbortsIfNotDiemRoot;
+include AbortsIfNotDiemRoot;
 
@@ -1285,12 +1285,12 @@ applied to the functions in this module. While some of those conditions have alr included in individual function specifications, listing them here again gives additional assurance that that all requirements are covered. -The LibraRoot role is only granted in genesis [[A1]][ROLE]. A new RoleId with LIBRA_ROOT_ROLE_ID is only -published through grant_libra_root_role which aborts if it is not invoked in genesis. +The DiemRoot role is only granted in genesis [[A1]][ROLE]. A new RoleId with DIEM_ROOT_ROLE_ID is only +published through grant_diem_root_role which aborts if it is not invoked in genesis. -
apply ThisRoleIsNotNewlyPublished{this: LIBRA_ROOT_ROLE_ID} to * except grant_libra_root_role, grant_role;
-apply LibraTimestamp::AbortsIfNotGenesis to grant_libra_root_role;
+
apply ThisRoleIsNotNewlyPublished{this: DIEM_ROOT_ROLE_ID} to * except grant_diem_root_role, grant_role;
+apply DiemTimestamp::AbortsIfNotGenesis to grant_diem_root_role;
 
@@ -1300,26 +1300,26 @@ published through grant_treasury_compliance_role which aborts if it
apply ThisRoleIsNotNewlyPublished{this: TREASURY_COMPLIANCE_ROLE_ID} to *
     except grant_treasury_compliance_role, grant_role;
-apply LibraTimestamp::AbortsIfNotGenesis to grant_treasury_compliance_role;
+apply DiemTimestamp::AbortsIfNotGenesis to grant_treasury_compliance_role;
 
-Validator roles are only granted by LibraRoot [[A3]][ROLE]. A new RoleId with VALIDATOR_ROLE_ID is only -published through new_validator_role which aborts if creating_account does not have the LibraRoot role. +Validator roles are only granted by DiemRoot [[A3]][ROLE]. A new RoleId with VALIDATOR_ROLE_ID is only +published through new_validator_role which aborts if creating_account does not have the DiemRoot role.
apply ThisRoleIsNotNewlyPublished{this: VALIDATOR_ROLE_ID} to * except new_validator_role, grant_role;
-apply AbortsIfNotLibraRoot{account: creating_account} to new_validator_role;
+apply AbortsIfNotDiemRoot{account: creating_account} to new_validator_role;
 
-ValidatorOperator roles are only granted by LibraRoot [[A4]][ROLE]. A new RoleId with VALIDATOR_OPERATOR_ROLE_ID is only -published through new_validator_operator_role which aborts if creating_account does not have the LibraRoot role. +ValidatorOperator roles are only granted by DiemRoot [[A4]][ROLE]. A new RoleId with VALIDATOR_OPERATOR_ROLE_ID is only +published through new_validator_operator_role which aborts if creating_account does not have the DiemRoot role.
apply ThisRoleIsNotNewlyPublished{this: VALIDATOR_OPERATOR_ROLE_ID} to *
     except new_validator_operator_role, grant_role;
-apply AbortsIfNotLibraRoot{account: creating_account} to new_validator_operator_role;
+apply AbortsIfNotDiemRoot{account: creating_account} to new_validator_operator_role;
 
@@ -1352,14 +1352,14 @@ published through new_child_vasp_role which aborts if creatin
-The LibraRoot role is globally unique [[B1]][ROLE], and is published at LIBRA_ROOT_ADDRESS [[C1]][ROLE]. -In other words, a RoleId with LIBRA_ROOT_ROLE_ID uniquely exists at LIBRA_ROOT_ADDRESS. +The DiemRoot role is globally unique [[B1]][ROLE], and is published at DIEM_ROOT_ADDRESS [[C1]][ROLE]. +In other words, a RoleId with DIEM_ROOT_ROLE_ID uniquely exists at DIEM_ROOT_ADDRESS. -
invariant [global, isolated] forall addr: address where spec_has_libra_root_role_addr(addr):
-  addr == CoreAddresses::LIBRA_ROOT_ADDRESS();
+
invariant [global, isolated] forall addr: address where spec_has_diem_root_role_addr(addr):
+  addr == CoreAddresses::DIEM_ROOT_ADDRESS();
 invariant [global, isolated]
-    LibraTimestamp::is_operating() ==> spec_has_libra_root_role_addr(CoreAddresses::LIBRA_ROOT_ADDRESS());
+    DiemTimestamp::is_operating() ==> spec_has_diem_root_role_addr(CoreAddresses::DIEM_ROOT_ADDRESS());
 
@@ -1370,15 +1370,15 @@ In other words, a RoleId wi
invariant [global, isolated] forall addr: address where spec_has_treasury_compliance_role_addr(addr):
   addr == CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
 invariant [global, isolated]
-    LibraTimestamp::is_operating() ==>
+    DiemTimestamp::is_operating() ==>
         spec_has_treasury_compliance_role_addr(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS());
 
-LibraRoot cannot have balances [[D1]][ROLE]. +DiemRoot cannot have balances [[D1]][ROLE]. -
invariant [global, isolated] forall addr: address where spec_has_libra_root_role_addr(addr):
+
invariant [global, isolated] forall addr: address where spec_has_diem_root_role_addr(addr):
     !spec_can_hold_balance_addr(addr);
 
@@ -1449,9 +1449,9 @@ ChildVASP have balances [[D7]][ROLE]. define spec_has_role_id_addr(addr: address, role_id: u64): bool { exists<RoleId>(addr) && global<RoleId>(addr).role_id == role_id } - -define spec_has_libra_root_role_addr(addr: address): bool { - spec_has_role_id_addr(addr, LIBRA_ROOT_ROLE_ID) + +define spec_has_diem_root_role_addr(addr: address): bool { + spec_has_role_id_addr(addr, DIEM_ROOT_ROLE_ID) } define spec_has_treasury_compliance_role_addr(addr: address): bool { @@ -1501,16 +1501,16 @@ ChildVASP have balances [[D7]][ROLE]. - + -
schema AbortsIfNotLibraRoot {
+
schema AbortsIfNotDiemRoot {
     account: signer;
-    include CoreAddresses::AbortsIfNotLibraRoot;
+    include CoreAddresses::AbortsIfNotDiemRoot;
     
     let addr = Signer::spec_address_of(account);
     aborts_if !exists<RoleId>(addr) with Errors::NOT_PUBLISHED;
-    aborts_if global<RoleId>(addr).role_id != LIBRA_ROOT_ROLE_ID with Errors::REQUIRES_ROLE;
+    aborts_if global<RoleId>(addr).role_id != DIEM_ROOT_ROLE_ID with Errors::REQUIRES_ROLE;
 }
 
diff --git a/language/stdlib/modules/doc/SharedEd25519PublicKey.md b/language/stdlib/modules/doc/SharedEd25519PublicKey.md index 276a254f8a..e3f6bc1ef8 100644 --- a/language/stdlib/modules/doc/SharedEd25519PublicKey.md +++ b/language/stdlib/modules/doc/SharedEd25519PublicKey.md @@ -20,8 +20,8 @@ that the two keys always stay in sync.
use 0x1::Authenticator;
+use 0x1::DiemAccount;
 use 0x1::Errors;
-use 0x1::LibraAccount;
 use 0x1::Signature;
 use 0x1::Signer;
 
@@ -53,7 +53,7 @@ authentication key derived from key 32 byte ed25519 public key
-rotation_cap: LibraAccount::KeyRotationCapability +rotation_cap: DiemAccount::KeyRotationCapability
rotation capability for an account whose authentication key is always derived from key @@ -111,7 +111,7 @@ Aborts if the length of new_public_key is not 32.
public fun publish(account: &signer, key: vector<u8>) {
     let t = SharedEd25519PublicKey {
         key: x"",
-        rotation_cap: LibraAccount::extract_key_rotation_capability(account)
+        rotation_cap: DiemAccount::extract_key_rotation_capability(account)
     };
     rotate_key_(&mut t, key);
     assert(!exists_at(Signer::address_of(account)), Errors::already_published(ESHARED_KEY));
@@ -143,11 +143,11 @@ Aborts if the length of new_public_key is not 32.
     key: vector<u8>;
     
     let addr = Signer::spec_address_of(account);
-    include LibraAccount::ExtractKeyRotationCapabilityAbortsIf;
+    include DiemAccount::ExtractKeyRotationCapabilityAbortsIf;
     include RotateKey_AbortsIf {
             shared_key: SharedEd25519PublicKey {
                 key: x"",
-                rotation_cap: LibraAccount::spec_get_key_rotation_cap(addr)
+                rotation_cap: DiemAccount::spec_get_key_rotation_cap(addr)
             },
             new_public_key: key
     };
@@ -196,7 +196,7 @@ Aborts if the length of new_public_key is not 32.
         Signature::ed25519_validate_pubkey(copy new_public_key),
         Errors::invalid_argument(EMALFORMED_PUBLIC_KEY)
     );
-    LibraAccount::rotate_authentication_key(
+    DiemAccount::rotate_authentication_key(
         &shared_key.rotation_cap,
         Authenticator::ed25519_authentication_key(copy new_public_key)
     );
@@ -227,7 +227,7 @@ Aborts if the length of new_public_key is not 32.
     shared_key: SharedEd25519PublicKey;
     new_public_key: vector<u8>;
     aborts_if !Signature::ed25519_validate_pubkey(new_public_key) with Errors::INVALID_ARGUMENT;
-    include LibraAccount::RotateAuthenticationKeyAbortsIf {
+    include DiemAccount::RotateAuthenticationKeyAbortsIf {
         cap: shared_key.rotation_cap,
         new_authentication_key: Authenticator::spec_ed25519_authentication_key(new_public_key)
     };
diff --git a/language/stdlib/modules/doc/Signature.md b/language/stdlib/modules/doc/Signature.md
index dfbbde72fe..9d7ac01dd1 100644
--- a/language/stdlib/modules/doc/Signature.md
+++ b/language/stdlib/modules/doc/Signature.md
@@ -20,7 +20,7 @@ Contains functions for [ed25519](https://en.wikipedia.org/wiki/EdDSA) digital si
 
 Return true if the bytes in public_key can be parsed as a valid Ed25519 public key.
 Returns false if public_key is not 32 bytes OR is 32 bytes, but does not pass
-points-on-curve or small subgroup checks. See the Rust libra_crypto::Ed25519PublicKey type
+points-on-curve or small subgroup checks. See the Rust diem_crypto::Ed25519PublicKey type
 for more details.
 Does not abort.
 
diff --git a/language/stdlib/modules/doc/SlidingNonce.md b/language/stdlib/modules/doc/SlidingNonce.md
index bb9f6513d6..c19fdb0feb 100644
--- a/language/stdlib/modules/doc/SlidingNonce.md
+++ b/language/stdlib/modules/doc/SlidingNonce.md
@@ -307,12 +307,12 @@ This is required before other functions in this module can be called for `accoun
 
 
 
-Sliding nonces are initialized at Libra root and treasury compliance addresses
+Sliding nonces are initialized at Diem root and treasury compliance addresses
 
 
-
invariant [global] LibraTimestamp::is_operating()
-    ==> exists<SlidingNonce>(CoreAddresses::LIBRA_ROOT_ADDRESS());
-invariant [global] LibraTimestamp::is_operating()
+
invariant [global] DiemTimestamp::is_operating()
+    ==> exists<SlidingNonce>(CoreAddresses::DIEM_ROOT_ADDRESS());
+invariant [global] DiemTimestamp::is_operating()
     ==> exists<SlidingNonce>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS());
 
diff --git a/language/stdlib/modules/doc/TransactionFee.md b/language/stdlib/modules/doc/TransactionFee.md index b9b25a74e2..7ce36fbeb3 100644 --- a/language/stdlib/modules/doc/TransactionFee.md +++ b/language/stdlib/modules/doc/TransactionFee.md @@ -14,20 +14,20 @@ Functions to initialize, accumulated, and burn transaction fees. - [Function `add_txn_fee_currency`](#0x1_TransactionFee_add_txn_fee_currency) - [Function `pay_fee`](#0x1_TransactionFee_pay_fee) - [Function `burn_fees`](#0x1_TransactionFee_burn_fees) - - [Specification of the case where burn type is LBR.](#@Specification_of_the_case_where_burn_type_is_LBR._1) - - [Specification of the case where burn type is not LBR.](#@Specification_of_the_case_where_burn_type_is_not_LBR._2) + - [Specification of the case where burn type is XDX.](#@Specification_of_the_case_where_burn_type_is_XDX._1) + - [Specification of the case where burn type is not XDX.](#@Specification_of_the_case_where_burn_type_is_not_XDX._2) - [Module Specification](#@Module_Specification_3) - [Initialization](#@Initialization_4) - [Helper Function](#@Helper_Function_5) -
use 0x1::Coin1;
-use 0x1::CoreAddresses;
+
use 0x1::CoreAddresses;
+use 0x1::Diem;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
-use 0x1::LBR;
-use 0x1::Libra;
-use 0x1::LibraTimestamp;
 use 0x1::Roles;
+use 0x1::XDX;
+use 0x1::XUS;
 
@@ -51,13 +51,13 @@ fiat CoinType that can be collected as a transaction fee.
-balance: Libra::Libra<CoinType> +balance: Diem::Diem<CoinType>
-preburn: Libra::Preburn<CoinType> +preburn: Diem::Preburn<CoinType>
@@ -102,10 +102,10 @@ Called in genesis. Sets up the needed resources to collect transaction fees from
public fun initialize(
     tc_account: &signer,
 ) {
-    LibraTimestamp::assert_genesis();
+    DiemTimestamp::assert_genesis();
     Roles::assert_treasury_compliance(tc_account);
     // accept fees in all the currencies
-    add_txn_fee_currency<Coin1>(tc_account);
+    add_txn_fee_currency<XUS>(tc_account);
 }
 
@@ -118,11 +118,11 @@ Called in genesis. Sets up the needed resources to collect transaction fees from -
include LibraTimestamp::AbortsIfNotGenesis;
+
include DiemTimestamp::AbortsIfNotGenesis;
 include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-include AddTxnFeeCurrencyAbortsIf<Coin1>;
+include AddTxnFeeCurrencyAbortsIf<XUS>;
 ensures is_initialized();
-ensures spec_transaction_fee<Coin1>().balance.value == 0;
+ensures spec_transaction_fee<XUS>().balance.value == 0;
 
@@ -132,7 +132,7 @@ Called in genesis. Sets up the needed resources to collect transaction fees from
schema AddTxnFeeCurrencyAbortsIf<CoinType> {
-    include Libra::AbortsIfNoCurrency<CoinType>;
+    include Diem::AbortsIfNoCurrency<CoinType>;
     aborts_if exists<TransactionFee<CoinType>>(CoreAddresses::TREASURY_COMPLIANCE_ADDRESS())
         with Errors::ALREADY_PUBLISHED;
 }
@@ -182,7 +182,7 @@ Called in genesis. Sets up the needed resources to collect transaction fees from
 
 
 
fun is_initialized(): bool {
-    is_coin_initialized<Coin1>()
+    is_coin_initialized<XUS>()
 }
 
@@ -209,7 +209,7 @@ Sets ups the needed transaction fee state for a given CoinType curr
public fun add_txn_fee_currency<CoinType>(tc_account: &signer) {
-    Libra::assert_is_currency<CoinType>();
+    Diem::assert_is_currency<CoinType>();
     assert(
         !is_coin_initialized<CoinType>(),
         Errors::already_published(ETRANSACTION_FEE)
@@ -217,8 +217,8 @@ Sets ups the needed transaction fee state for a given CoinType curr
     move_to(
         tc_account,
         TransactionFee<CoinType> {
-            balance: Libra::zero(),
-            preburn: Libra::create_preburn(tc_account)
+            balance: Diem::zero(),
+            preburn: Diem::create_preburn(tc_account)
         }
     )
 }
@@ -235,7 +235,7 @@ Sets ups the needed transaction fee state for a given CoinType curr
 Deposit coin into the transaction fees bucket
 
 
-
public fun pay_fee<CoinType>(coin: Libra::Libra<CoinType>)
+
public fun pay_fee<CoinType>(coin: Diem::Diem<CoinType>)
 
@@ -244,13 +244,13 @@ Deposit coin into the transaction fees bucket Implementation -
public fun pay_fee<CoinType>(coin: Libra<CoinType>) acquires TransactionFee {
-    LibraTimestamp::assert_operating();
+
public fun pay_fee<CoinType>(coin: Diem<CoinType>) acquires TransactionFee {
+    DiemTimestamp::assert_operating();
     assert(is_coin_initialized<CoinType>(), Errors::not_published(ETRANSACTION_FEE));
     let fees = borrow_global_mut<TransactionFee<CoinType>>(
         CoreAddresses::TREASURY_COMPLIANCE_ADDRESS(),
     );
-    Libra::deposit(&mut fees.balance, coin)
+    Diem::deposit(&mut fees.balance, coin)
 }
 
@@ -263,11 +263,11 @@ Deposit coin into the transaction fees bucket -
include LibraTimestamp::AbortsIfNotOperating;
+
include DiemTimestamp::AbortsIfNotOperating;
 aborts_if !is_coin_initialized<CoinType>() with Errors::NOT_PUBLISHED;
 
 let fees = spec_transaction_fee<CoinType>().balance;
-include Libra::DepositAbortsIf<CoinType>{coin: fees, check: coin};
+include Diem::DepositAbortsIf<CoinType>{coin: fees, check: coin};
 ensures fees.value == old(fees.value) + coin.value;
 
@@ -280,7 +280,7 @@ Deposit coin into the transaction fees bucket ## Function `burn_fees` Preburns the transaction fees collected in the CoinType currency. -If the CoinType is LBR, it unpacks the coin and preburns the +If the CoinType is XDX, it unpacks the coin and preburns the underlying fiat. @@ -296,27 +296,27 @@ underlying fiat.
public fun burn_fees<CoinType>(
     tc_account: &signer,
 ) acquires TransactionFee {
-    LibraTimestamp::assert_operating();
+    DiemTimestamp::assert_operating();
     Roles::assert_treasury_compliance(tc_account);
     assert(is_coin_initialized<CoinType>(), Errors::not_published(ETRANSACTION_FEE));
     let tc_address = CoreAddresses::TREASURY_COMPLIANCE_ADDRESS();
-    if (LBR::is_lbr<CoinType>()) {
-        // TODO: Once the composition of LBR is determined fill this in to
-        // unpack and burn the backing coins of the LBR coin.
+    if (XDX::is_xdx<CoinType>()) {
+        // TODO: Once the composition of XDX is determined fill this in to
+        // unpack and burn the backing coins of the XDX coin.
         abort Errors::invalid_state(ETRANSACTION_FEE)
     } else {
         // extract fees
         let fees = borrow_global_mut<TransactionFee<CoinType>>(tc_address);
-        let coin = Libra::withdraw_all(&mut fees.balance);
-        let burn_cap = Libra::remove_burn_capability<CoinType>(tc_account);
+        let coin = Diem::withdraw_all(&mut fees.balance);
+        let burn_cap = Diem::remove_burn_capability<CoinType>(tc_account);
         // burn
-        Libra::burn_now(
+        Diem::burn_now(
             coin,
             &mut fees.preburn,
             tc_address,
             &burn_cap
         );
-        Libra::publish_burn_capability(tc_account, burn_cap);
+        Diem::publish_burn_capability(tc_account, burn_cap);
     }
 }
 
@@ -333,17 +333,17 @@ Must abort if the account does not have the TreasuryCompliance role [[H3]][PERMI
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
-include LibraTimestamp::AbortsIfNotOperating;
+include DiemTimestamp::AbortsIfNotOperating;
 aborts_if !is_coin_initialized<CoinType>() with Errors::NOT_PUBLISHED;
-include if (LBR::spec_is_lbr<CoinType>()) BurnFeesLBR else BurnFeesNotLBR<CoinType>;
+include if (XDX::spec_is_xdx<CoinType>()) BurnFeesXDX else BurnFeesNotXDX<CoinType>;
 
The correct amount of fees is burnt and subtracted from market cap. -
ensures Libra::spec_market_cap<CoinType>()
-    == old(Libra::spec_market_cap<CoinType>()) - old(spec_transaction_fee<CoinType>().balance.value);
+
ensures Diem::spec_market_cap<CoinType>()
+    == old(Diem::spec_market_cap<CoinType>()) - old(spec_transaction_fee<CoinType>().balance.value);
 
@@ -354,19 +354,19 @@ All the fees is burnt so the balance becomes 0.
-STUB: To be filled in at a later date once the makeup of the LBR has been determined. +STUB: To be filled in at a later date once the makeup of the XDX has been determined. - + -### Specification of the case where burn type is LBR. +### Specification of the case where burn type is XDX. - + -
schema BurnFeesLBR {
+
schema BurnFeesXDX {
     tc_account: signer;
     aborts_if true with Errors::INVALID_STATE;
 }
@@ -374,16 +374,16 @@ STUB: To be filled in at a later date once the makeup of the LBR has been determ
 
 
 
-
+
 
-### Specification of the case where burn type is not LBR.
+### Specification of the case where burn type is not XDX.
 
 
 
-
+
 
 
-
schema BurnFeesNotLBR<CoinType> {
+
schema BurnFeesNotXDX<CoinType> {
     tc_account: signer;
 }
 
@@ -392,11 +392,11 @@ STUB: To be filled in at a later date once the makeup of the LBR has been determ Must abort if the account does not have BurnCapability [[H3]][PERMISSION]. -
schema BurnFeesNotLBR<CoinType> {
-    include Libra::AbortsIfNoBurnCapability<CoinType>{account: tc_account};
+
schema BurnFeesNotXDX<CoinType> {
+    include Diem::AbortsIfNoBurnCapability<CoinType>{account: tc_account};
     
     let fees = spec_transaction_fee<CoinType>();
-    include Libra::BurnNowAbortsIf<CoinType>{coin: fees.balance, preburn: fees.preburn};
+    include Diem::BurnNowAbortsIf<CoinType>{coin: fees.balance, preburn: fees.preburn};
 }
 
@@ -405,8 +405,8 @@ tc_account retrieves BurnCapability [[H3]][PERMISSION]. BurnCapability is not transferrable [[J3]][PERMISSION]. -
schema BurnFeesNotLBR<CoinType> {
-    ensures exists<Libra::BurnCapability<CoinType>>(Signer::spec_address_of(tc_account));
+
schema BurnFeesNotXDX<CoinType> {
+    ensures exists<Diem::BurnCapability<CoinType>>(Signer::spec_address_of(tc_account));
 }
 
@@ -428,7 +428,7 @@ BurnCapability is not transferrable [[J3]][PERMISSION]. If time has started ticking, then TransactionFee resources have been initialized. -
invariant [global] LibraTimestamp::is_operating() ==> is_initialized();
+
invariant [global] DiemTimestamp::is_operating() ==> is_initialized();
 
diff --git a/language/stdlib/modules/doc/VASP.md b/language/stdlib/modules/doc/VASP.md index b881f479d8..db5727fc42 100644 --- a/language/stdlib/modules/doc/VASP.md +++ b/language/stdlib/modules/doc/VASP.md @@ -28,8 +28,8 @@ This module provides functions to manage VASP accounts.
use 0x1::AccountLimits;
+use 0x1::DiemTimestamp;
 use 0x1::Errors;
-use 0x1::LibraTimestamp;
 use 0x1::Roles;
 use 0x1::Signer;
 
@@ -154,7 +154,7 @@ Maximum number of child accounts that can be created by a single ParentVASP ## Function `publish_parent_vasp_credential` Create a new ParentVASP resource under vasp -Aborts if lr_account is not the libra root account, +Aborts if dr_account is not the diem root account, or if there is already a VASP (child or parent) at this account. @@ -168,7 +168,7 @@ or if there is already a VASP (child or parent) at this account.
public fun publish_parent_vasp_credential(vasp: &signer, tc_account: &signer) {
-    LibraTimestamp::assert_operating();
+    DiemTimestamp::assert_operating();
     Roles::assert_treasury_compliance(tc_account);
     Roles::assert_parent_vasp_role(vasp);
     let vasp_addr = Signer::address_of(vasp);
@@ -186,7 +186,7 @@ or if there is already a VASP (child or parent) at this account.
 
 
 
-
include LibraTimestamp::AbortsIfNotOperating;
+
include DiemTimestamp::AbortsIfNotOperating;
 include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
 include Roles::AbortsIfNotParentVasp{account: vasp};
 
diff --git a/language/stdlib/modules/doc/ValidatorConfig.md b/language/stdlib/modules/doc/ValidatorConfig.md
index cfed313bf5..322312a98c 100644
--- a/language/stdlib/modules/doc/ValidatorConfig.md
+++ b/language/stdlib/modules/doc/ValidatorConfig.md
@@ -4,10 +4,10 @@
 # Module `0x1::ValidatorConfig`
 
 The ValidatorConfig resource holds information about a validator. Information
-is published and updated by Libra root in a Self::ValidatorConfig in preparation for
-later inclusion (by functions in LibraConfig) in a LibraConfig::LibraConfig<LibraSystem>
-struct (the Self::ValidatorConfig in a LibraConfig::ValidatorInfo which is a member
-of the LibraSystem::LibraSystem.validators vector).
+is published and updated by Diem root in a Self::ValidatorConfig in preparation for
+later inclusion (by functions in DiemConfig) in a DiemConfig::DiemConfig<DiemSystem>
+struct (the Self::ValidatorConfig in a DiemConfig::ValidatorInfo which is a member
+of the DiemSystem::DiemSystem.validators vector).
 
 
 -  [Struct `Config`](#0x1_ValidatorConfig_Config)
@@ -31,8 +31,8 @@ of the LibraSystem::L
     -  [Helper Function](#@Helper_Function_5)
 
 
-
use 0x1::Errors;
-use 0x1::LibraTimestamp;
+
use 0x1::DiemTimestamp;
+use 0x1::Errors;
 use 0x1::Option;
 use 0x1::Roles;
 use 0x1::Signature;
@@ -174,7 +174,7 @@ will have critical info such as keys, network addresses for validators,
 and the address of the validator operator.
 
 
-
public fun publish(validator_account: &signer, lr_account: &signer, human_name: vector<u8>)
+
public fun publish(validator_account: &signer, dr_account: &signer, human_name: vector<u8>)
 
@@ -185,11 +185,11 @@ and the address of the validator operator.
public fun publish(
     validator_account: &signer,
-    lr_account: &signer,
+    dr_account: &signer,
     human_name: vector<u8>,
 ) {
-    LibraTimestamp::assert_operating();
-    Roles::assert_libra_root(lr_account);
+    DiemTimestamp::assert_operating();
+    Roles::assert_diem_root(dr_account);
     Roles::assert_validator(validator_account);
     assert(
         !exists<ValidatorConfig>(Signer::address_of(validator_account)),
@@ -224,9 +224,9 @@ and the address of the validator operator.
 
 
schema PublishAbortsIf {
     validator_addr: address;
-    lr_account: signer;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
+    dr_account: signer;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
     include Roles::AbortsIfNotValidator{validator_addr: validator_addr};
     aborts_if exists_config(validator_addr)
         with Errors::ALREADY_PUBLISHED;
@@ -428,7 +428,7 @@ The signer can only change its own operator account [[H15]][PERMISSION].
 
 Rotate the config in the validator_account.
 Once the config is set, it can not go back to Option::none - this is crucial for validity
-of the LibraSystem's code.
+of the DiemSystem's code.
 
 
 
public fun set_config(validator_operator_account: &signer, validator_addr: address, consensus_pubkey: vector<u8>, validator_network_addresses: vector<u8>, fullnode_network_addresses: vector<u8>)
@@ -793,7 +793,7 @@ that the change has been authorized by the validator owner via signing the trans
 
 ### Validity of Validators
 
-See comment on ValidatorConfig::set_config -- LibraSystem depends on this.
+See comment on ValidatorConfig::set_config -- DiemSystem depends on this.
 
 A validator stays valid once it becomes valid.
 
@@ -818,7 +818,7 @@ Every address that has a ValidatorConfig also has a validator role.
 
 
 LIP-6 Property: If address has a ValidatorConfig, it has a validator role.  This invariant is useful
-in LibraSystem so we don't have to check whether every validator address has a validator role.
+in DiemSystem so we don't have to check whether every validator address has a validator role.
 
 
 
invariant [global] forall addr: address where exists_config(addr):
diff --git a/language/stdlib/modules/doc/ValidatorOperatorConfig.md b/language/stdlib/modules/doc/ValidatorOperatorConfig.md
index 52b34dee1d..c3c806a367 100644
--- a/language/stdlib/modules/doc/ValidatorOperatorConfig.md
+++ b/language/stdlib/modules/doc/ValidatorOperatorConfig.md
@@ -16,8 +16,8 @@ Stores the string name of a ValidatorOperator account.
     -  [Persistence](#@Persistence_3)
 
 
-
use 0x1::Errors;
-use 0x1::LibraTimestamp;
+
use 0x1::DiemTimestamp;
+use 0x1::Errors;
 use 0x1::Roles;
 use 0x1::Signer;
 
@@ -72,7 +72,7 @@ The Valid -
public fun publish(validator_operator_account: &signer, lr_account: &signer, human_name: vector<u8>)
+
public fun publish(validator_operator_account: &signer, dr_account: &signer, human_name: vector<u8>)
 
@@ -83,11 +83,11 @@ The Valid
public fun publish(
     validator_operator_account: &signer,
-    lr_account: &signer,
+    dr_account: &signer,
     human_name: vector<u8>,
 ) {
-    LibraTimestamp::assert_operating();
-    Roles::assert_libra_root(lr_account);
+    DiemTimestamp::assert_operating();
+    Roles::assert_diem_root(dr_account);
     Roles::assert_validator_operator(validator_operator_account);
     assert(
         !has_validator_operator_config(Signer::address_of(validator_operator_account)),
@@ -109,7 +109,7 @@ The Valid
 
 
 
-
include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
 include Roles::AbortsIfNotValidatorOperator{validator_operator_addr: Signer::address_of(validator_operator_account)};
 include PublishAbortsIf {validator_operator_addr: Signer::spec_address_of(validator_operator_account)};
 ensures has_validator_operator_config(Signer::spec_address_of(validator_operator_account));
@@ -123,9 +123,9 @@ The Valid
 
 
schema PublishAbortsIf {
     validator_operator_addr: address;
-    lr_account: signer;
-    include LibraTimestamp::AbortsIfNotOperating;
-    include Roles::AbortsIfNotLibraRoot{account: lr_account};
+    dr_account: signer;
+    include DiemTimestamp::AbortsIfNotOperating;
+    include Roles::AbortsIfNotDiemRoot{account: dr_account};
     include Roles::AbortsIfNotValidatorOperator;
     aborts_if has_validator_operator_config(validator_operator_addr)
         with Errors::ALREADY_PUBLISHED;
diff --git a/language/stdlib/modules/doc/XDX.md b/language/stdlib/modules/doc/XDX.md
new file mode 100644
index 0000000000..ebaa5a8f36
--- /dev/null
+++ b/language/stdlib/modules/doc/XDX.md
@@ -0,0 +1,375 @@
+
+
+
+# Module `0x1::XDX`
+
+NB: This module is a stub of the XDX at the moment.
+
+Once the component makeup of the XDX has been chosen the
+Reserve will be updated to hold the backing coins in the correct ratios.
+
+
+-  [Resource `XDX`](#0x1_XDX_XDX)
+-  [Resource `Reserve`](#0x1_XDX_Reserve)
+-  [Constants](#@Constants_0)
+-  [Function `initialize`](#0x1_XDX_initialize)
+-  [Function `is_xdx`](#0x1_XDX_is_xdx)
+-  [Function `reserve_address`](#0x1_XDX_reserve_address)
+-  [Module Specification](#@Module_Specification_1)
+    -  [Persistence of Resources](#@Persistence_of_Resources_2)
+    -  [Helper Functions](#@Helper_Functions_3)
+
+
+
use 0x1::AccountLimits;
+use 0x1::CoreAddresses;
+use 0x1::Diem;
+use 0x1::DiemTimestamp;
+use 0x1::Errors;
+use 0x1::FixedPoint32;
+
+ + + + + +## Resource `XDX` + +The type tag representing the XDX currency on-chain. + + +
resource struct XDX
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Resource `Reserve` + +Note: Currently only holds the mint, burn, and preburn capabilities for +XDX. Once the makeup of the XDX has been determined this resource will +be updated to hold the backing XDX reserve compnents on-chain. + +The on-chain reserve for the XDX holds both the capability for minting XDX +coins, and also each reserve component that holds the backing for these coins on-chain. +Currently this holds no coins since XDX is not able to be minted/created. + + +
resource struct Reserve
+
+ + + +
+Fields + + +
+
+mint_cap: Diem::MintCapability<XDX::XDX> +
+
+ The mint capability allowing minting of XDX coins. +
+
+burn_cap: Diem::BurnCapability<XDX::XDX> +
+
+ The burn capability for XDX coins. This is used for the unpacking + of XDX coins into the underlying backing currencies. +
+
+preburn_cap: Diem::Preburn<XDX::XDX> +
+
+ The preburn for XDX. This is an administrative field since we + need to alway preburn before we burn. +
+
+ + +
+ + + +## Constants + + + + +The Reserve resource is in an invalid state + + +
const ERESERVE: u64 = 0;
+
+ + + + + +## Function `initialize` + +Initializes the XDX module. This sets up the initial XDX ratios and +reserve components, and creates the mint, preburn, and burn +capabilities for XDX coins. The XDX currency must not already be +registered in order for this to succeed. The sender must both be the +correct address (CoreAddresses::CURRENCY_INFO_ADDRESS) and have the +correct permissions (&Capability<RegisterNewCurrency>). Both of these +restrictions are enforced in the Diem::register_currency function, but also enforced here. + + +
public fun initialize(dr_account: &signer, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+    tc_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    // Operational constraint
+    CoreAddresses::assert_currency_info(dr_account);
+    // Reserve must not exist.
+    assert(!exists<Reserve>(CoreAddresses::DIEM_ROOT_ADDRESS()), Errors::already_published(ERESERVE));
+    let (mint_cap, burn_cap) = Diem::register_currency<XDX>(
+        dr_account,
+        FixedPoint32::create_from_rational(1, 1), // exchange rate to XDX
+        true,    // is_synthetic
+        1000000, // scaling_factor = 10^6
+        1000,    // fractional_part = 10^3
+        b"XDX"
+    );
+    // XDX cannot be minted.
+    Diem::update_minting_ability<XDX>(tc_account, false);
+    AccountLimits::publish_unrestricted_limits<XDX>(dr_account);
+    let preburn_cap = Diem::create_preburn<XDX>(tc_account);
+    move_to(dr_account, Reserve { mint_cap, burn_cap, preburn_cap });
+}
+
+ + + +
+ +
+Specification + + + +
include CoreAddresses::AbortsIfNotCurrencyInfo{account: dr_account};
+aborts_if exists<Reserve>(CoreAddresses::DIEM_ROOT_ADDRESS()) with Errors::ALREADY_PUBLISHED;
+include Diem::RegisterCurrencyAbortsIf<XDX>{
+    currency_code: b"XDX",
+    scaling_factor: 1000000
+};
+include AccountLimits::PublishUnrestrictedLimitsAbortsIf<XDX>{publish_account: dr_account};
+include Diem::RegisterCurrencyEnsures<XDX>;
+include Diem::UpdateMintingAbilityEnsures<XDX>{can_mint: false};
+include AccountLimits::PublishUnrestrictedLimitsEnsures<XDX>{publish_account: dr_account};
+ensures exists<Reserve>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +Registering XDX can only be done in genesis. + + +
include DiemTimestamp::AbortsIfNotGenesis;
+
+ + +Only the DiemRoot account can register a new currency [[H8]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+
+ + +Only the TreasuryCompliance role can update the can_mint field of CurrencyInfo [[H2]][PERMISSION]. +Moreover, only the TreasuryCompliance role can create Preburn. + + +
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+
+ + + +
+ + + +## Function `is_xdx` + +Returns true if CoinType is XDX::XDX + + +
public fun is_xdx<CoinType>(): bool
+
+ + + +
+Implementation + + +
public fun is_xdx<CoinType>(): bool {
+    Diem::is_currency<CoinType>() &&
+        Diem::currency_code<CoinType>() == Diem::currency_code<XDX>()
+}
+
+ + + +
+ +
+Specification + + + +
pragma opaque, verify = false;
+include Diem::spec_is_currency<CoinType>() ==> Diem::AbortsIfNoCurrency<XDX>;
+
+ + +The following is correct because currency codes are unique; however, we +can currently not prove it, therefore verify is false. + + +
ensures result == Diem::spec_is_currency<CoinType>() && spec_is_xdx<CoinType>();
+
+ + + +
+ + + +## Function `reserve_address` + +Return the account address where the globally unique XDX::Reserve resource is stored + + +
public fun reserve_address(): address
+
+ + + +
+Implementation + + +
public fun reserve_address(): address {
+    CoreAddresses::CURRENCY_INFO_ADDRESS()
+}
+
+ + + +
+ + + +## Module Specification + + + + + +### Persistence of Resources + + +After genesis, the Reserve resource exists. + + +
invariant [global] DiemTimestamp::is_operating() ==> reserve_exists();
+
+ + +After genesis, XDX is registered. + + +
invariant [global] DiemTimestamp::is_operating() ==> Diem::is_currency<XDX>();
+
+ + + + + +### Helper Functions + + +Checks whether the Reserve resource exists. + + + + + +
define reserve_exists(): bool {
+   exists<Reserve>(CoreAddresses::CURRENCY_INFO_ADDRESS())
+}
+
+ + +Returns true if CoinType is XDX. + + + + + +
define spec_is_xdx<CoinType>(): bool {
+    type<CoinType>() == type<XDX>()
+}
+
+ + +After genesis, LimitsDefinition<XDX> is published at Diem root. It's published by +AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because +it does not hold for all types (but does hold for XDX). + + +
invariant [global] DiemTimestamp::is_operating()
+    ==> exists<AccountLimits::LimitsDefinition<XDX>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +LimitsDefinition<XDX> is not published at any other address + + +
invariant [global] forall addr: address where exists<AccountLimits::LimitsDefinition<XDX>>(addr):
+    addr == CoreAddresses::DIEM_ROOT_ADDRESS();
+
+ + +Reserve is persistent + + +
invariant update [global] old(exists<Reserve>(reserve_address()))
+    ==> exists<Reserve>(reserve_address());
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/XUS.md b/language/stdlib/modules/doc/XUS.md new file mode 100644 index 0000000000..6f7fe074d5 --- /dev/null +++ b/language/stdlib/modules/doc/XUS.md @@ -0,0 +1,167 @@ + + + +# Module `0x1::XUS` + +This module defines the coin type XUS and its initialization function. + + +- [Struct `XUS`](#0x1_XUS_XUS) +- [Function `initialize`](#0x1_XUS_initialize) +- [Module Specification](#@Module_Specification_0) + - [Persistence of Resources](#@Persistence_of_Resources_1) + + +
use 0x1::AccountLimits;
+use 0x1::Diem;
+use 0x1::DiemTimestamp;
+use 0x1::FixedPoint32;
+
+ + + + + +## Struct `XUS` + +The type tag representing the XUS currency on-chain. + + +
struct XUS
+
+ + + +
+Fields + + +
+
+dummy_field: bool +
+
+ +
+
+ + +
+ + + +## Function `initialize` + +Registers the XUS cointype. This can only be called from genesis. + + +
public fun initialize(dr_account: &signer, tc_account: &signer)
+
+ + + +
+Implementation + + +
public fun initialize(
+    dr_account: &signer,
+    tc_account: &signer,
+) {
+    DiemTimestamp::assert_genesis();
+    Diem::register_SCS_currency<XUS>(
+        dr_account,
+        tc_account,
+        FixedPoint32::create_from_rational(1, 1), // exchange rate to XDX
+        1000000, // scaling_factor = 10^6
+        100,     // fractional_part = 10^2
+        b"XUS"
+    );
+    AccountLimits::publish_unrestricted_limits<XUS>(dr_account);
+}
+
+ + + +
+ +
+Specification + + + +
include Diem::RegisterSCSCurrencyAbortsIf<XUS>{
+    currency_code: b"XUS",
+    scaling_factor: 1000000
+};
+include AccountLimits::PublishUnrestrictedLimitsAbortsIf<XUS>{publish_account: dr_account};
+include Diem::RegisterSCSCurrencyEnsures<XUS>;
+include AccountLimits::PublishUnrestrictedLimitsEnsures<XUS>{publish_account: dr_account};
+
+ + +Registering XUS can only be done in genesis. + + +
include DiemTimestamp::AbortsIfNotGenesis;
+
+ + +Only the DiemRoot account can register a new currency [[H8]][PERMISSION]. + + +
include Roles::AbortsIfNotDiemRoot{account: dr_account};
+
+ + +Only a TreasuryCompliance account can have the MintCapability [[H1]][PERMISSION]. +Moreover, only a TreasuryCompliance account can have the BurnCapability [[H3]][PERMISSION]. + + +
include Roles::AbortsIfNotTreasuryCompliance{account: tc_account};
+
+ + + +
+ + + +## Module Specification + + + + + +### Persistence of Resources + + +After genesis, XUS is registered. + + +
invariant [global] DiemTimestamp::is_operating() ==> Diem::is_currency<XUS>();
+
+ + +After genesis, LimitsDefinition<XUS> is published at Diem root. It's published by +AccountLimits::publish_unrestricted_limits, but we can't prove the condition there because +it does not hold for all types (but does hold for XUS). + + +
invariant [global] DiemTimestamp::is_operating()
+    ==> exists<AccountLimits::LimitsDefinition<XUS>>(CoreAddresses::DIEM_ROOT_ADDRESS());
+
+ + +LimitsDefinition<XUS> is not published at any other address + + +
invariant [global] forall addr: address where exists<AccountLimits::LimitsDefinition<XUS>>(addr):
+    addr == CoreAddresses::DIEM_ROOT_ADDRESS();
+
+ + +[//]: # ("File containing references which can be used from documentation") +[ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md +[ROLE]: https://github.com/libra/lip/blob/master/lips/lip-2.md#roles +[PERMISSION]: https://github.com/libra/lip/blob/master/lips/lip-2.md#permissions diff --git a/language/stdlib/modules/doc/overview.md b/language/stdlib/modules/doc/overview.md index 18fb6f1b48..a26be855f2 100644 --- a/language/stdlib/modules/doc/overview.md +++ b/language/stdlib/modules/doc/overview.md @@ -1,11 +1,11 @@ - + -# Libra Framework Modules +# Diem Framework Modules -This is the root document for the Libra framework module documentation. The Libra framework provides a set of Move -modules which define the resources and functions available for the Libra blockchain. Each module is individually +This is the root document for the Diem framework module documentation. The Diem framework provides a set of Move +modules which define the resources and functions available for the Diem blockchain. Each module is individually documented here, together with its implementation and [formal specification](../../transaction_scripts/doc/spec_documentation.md). @@ -13,7 +13,7 @@ Move modules are not directly called by clients, but instead are used to impleme For documentation of transaction scripts which constitute the client API, see [../../transaction_scripts/doc/transaction_script_documentation.md](../../transaction_scripts/doc/transaction_script_documentation.md). -The Move modules in the Libra Framework can be bucketed in to a couple categories: +The Move modules in the Diem Framework can be bucketed in to a couple categories: @@ -25,9 +25,9 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie * DesignatedDealer * DualAttestation -* Coin1 (Note: name will be updated once final name has been determined) -* LBR (Note: will be updated once the LBR makeup has been determined) -* Libra +* XUS (Note: name will be updated once final name has been determined) +* XDX (Note: will be updated once the XDX makeup has been determined) +* Diem * RegisteredCurrencies @@ -45,7 +45,7 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie ### Accounts and Access Control -* LibraAccount +* DiemAccount * Roles * VASP @@ -55,22 +55,22 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie ### System Management * ChainId -* LibraBlock -* LibraConfig -* LibraTimestamp -* LibraTransactionPublishingOption -* LibraVersion -* LibraVMConfig +* DiemBlock +* DiemConfig +* DiemTimestamp +* DiemTransactionPublishingOption +* DiemVersion +* DiemVMConfig * TransactionFee -* LibraSystem +* DiemSystem * ValidatorConfig * ValidatorOperatorConfig * Genesis (Note: not published) - + -### Module Utility Libraries +### Module Utility Diemries * Errors * CoreAddresses @@ -94,26 +94,24 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie - [`0x1::AccountLimits`](AccountLimits.md#0x1_AccountLimits) - [`0x1::Authenticator`](Authenticator.md#0x1_Authenticator) - [`0x1::ChainId`](ChainId.md#0x1_ChainId) -- [`0x1::Coin1`](Coin1.md#0x1_Coin1) - [`0x1::CoreAddresses`](CoreAddresses.md#0x1_CoreAddresses) - [`0x1::DesignatedDealer`](DesignatedDealer.md#0x1_DesignatedDealer) +- [`0x1::Diem`](Diem.md#0x1_Diem) +- [`0x1::DiemAccount`](DiemAccount.md#0x1_DiemAccount) +- [`0x1::DiemBlock`](DiemBlock.md#0x1_DiemBlock) +- [`0x1::DiemConfig`](DiemConfig.md#0x1_DiemConfig) +- [`0x1::DiemSystem`](DiemSystem.md#0x1_DiemSystem) +- [`0x1::DiemTimestamp`](DiemTimestamp.md#0x1_DiemTimestamp) +- [`0x1::DiemTransactionPublishingOption`](DiemTransactionPublishingOption.md#0x1_DiemTransactionPublishingOption) +- [`0x1::DiemVMConfig`](DiemVMConfig.md#0x1_DiemVMConfig) +- [`0x1::DiemVersion`](DiemVersion.md#0x1_DiemVersion) - [`0x1::DualAttestation`](DualAttestation.md#0x1_DualAttestation) - [`0x1::Errors`](Errors.md#0x1_Errors) - [`0x1::Event`](Event.md#0x1_Event) - [`0x1::FixedPoint32`](FixedPoint32.md#0x1_FixedPoint32) - [`0x1::Genesis`](Genesis.md#0x1_Genesis) - [`0x1::Hash`](Hash.md#0x1_Hash) -- [`0x1::LBR`](LBR.md#0x1_LBR) - [`0x1::LCS`](LCS.md#0x1_LCS) -- [`0x1::Libra`](Libra.md#0x1_Libra) -- [`0x1::LibraAccount`](LibraAccount.md#0x1_LibraAccount) -- [`0x1::LibraBlock`](LibraBlock.md#0x1_LibraBlock) -- [`0x1::LibraConfig`](LibraConfig.md#0x1_LibraConfig) -- [`0x1::LibraSystem`](LibraSystem.md#0x1_LibraSystem) -- [`0x1::LibraTimestamp`](LibraTimestamp.md#0x1_LibraTimestamp) -- [`0x1::LibraTransactionPublishingOption`](LibraTransactionPublishingOption.md#0x1_LibraTransactionPublishingOption) -- [`0x1::LibraVMConfig`](LibraVMConfig.md#0x1_LibraVMConfig) -- [`0x1::LibraVersion`](LibraVersion.md#0x1_LibraVersion) - [`0x1::Option`](Option.md#0x1_Option) - [`0x1::RecoveryAddress`](RecoveryAddress.md#0x1_RecoveryAddress) - [`0x1::RegisteredCurrencies`](RegisteredCurrencies.md#0x1_RegisteredCurrencies) @@ -127,6 +125,8 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie - [`0x1::ValidatorConfig`](ValidatorConfig.md#0x1_ValidatorConfig) - [`0x1::ValidatorOperatorConfig`](ValidatorOperatorConfig.md#0x1_ValidatorOperatorConfig) - [`0x1::Vector`](Vector.md#0x1_Vector) +- [`0x1::XDX`](XDX.md#0x1_XDX) +- [`0x1::XUS`](XUS.md#0x1_XUS) [//]: # ("File containing references which can be used from documentation") diff --git a/language/stdlib/modules/overview_template.md b/language/stdlib/modules/overview_template.md index 3603ea697e..7e4e7268a2 100644 --- a/language/stdlib/modules/overview_template.md +++ b/language/stdlib/modules/overview_template.md @@ -1,7 +1,7 @@ -# Libra Framework Modules +# Diem Framework Modules -This is the root document for the Libra framework module documentation. The Libra framework provides a set of Move -modules which define the resources and functions available for the Libra blockchain. Each module is individually +This is the root document for the Diem framework module documentation. The Diem framework provides a set of Move +modules which define the resources and functions available for the Diem blockchain. Each module is individually documented here, together with its implementation and [formal specification](../../transaction_scripts/doc/spec_documentation.md). @@ -9,7 +9,7 @@ Move modules are not directly called by clients, but instead are used to impleme For documentation of transaction scripts which constitute the client API, see [../../transaction_scripts/doc/transaction_script_documentation.md](../../transaction_scripts/doc/transaction_script_documentation.md). -The Move modules in the Libra Framework can be bucketed in to a couple categories: +The Move modules in the Diem Framework can be bucketed in to a couple categories: ### Treasury and Compliance * `AccountFreezing` @@ -17,9 +17,9 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie * `DesignatedDealer` * `DualAttestation` -* `Coin1` (Note: name will be updated once final name has been determined) -* `LBR` (Note: will be updated once the LBR makeup has been determined) -* `Libra` +* `XUS` (Note: name will be updated once final name has been determined) +* `XDX` (Note: will be updated once the XDX makeup has been determined) +* `Diem` * `RegisteredCurrencies` ### Authentication @@ -29,25 +29,25 @@ The Move modules in the Libra Framework can be bucketed in to a couple categorie * `Signature` ### Accounts and Access Control -* `LibraAccount` +* `DiemAccount` * `Roles` * `VASP` ### System Management * `ChainId` -* `LibraBlock` -* `LibraConfig` -* `LibraTimestamp` -* `LibraTransactionPublishingOption` -* `LibraVersion` -* `LibraVMConfig` +* `DiemBlock` +* `DiemConfig` +* `DiemTimestamp` +* `DiemTransactionPublishingOption` +* `DiemVersion` +* `DiemVMConfig` * `TransactionFee` -* `LibraSystem` +* `DiemSystem` * `ValidatorConfig` * `ValidatorOperatorConfig` * `Genesis` (Note: not published) -### Module Utility Libraries +### Module Utility Diemries * `Errors` * `CoreAddresses` * `Event` diff --git a/language/stdlib/nursery/Compare.move b/language/stdlib/nursery/Compare.move index 5f1342ec60..dc3525ced5 100644 --- a/language/stdlib/nursery/Compare.move +++ b/language/stdlib/nursery/Compare.move @@ -15,7 +15,7 @@ module Compare { /// (2) vector length to break ties. /// Returns either `EQUAL` (0u8), `LESS_THAN` (1u8), or `GREATER_THAN` (2u8). /// - /// This function is designed to compare LCS (Libra Canonical Serialization)-encoded values + /// This function is designed to compare LCS (Diem Canonical Serialization)-encoded values /// (i.e., vectors produced by `LCS::to_bytes`). A typical client will call /// `Compare::cmp_lcs_bytes(LCS::to_bytes(&t1), LCS::to_bytes(&t2))`. The comparison provides the /// following guarantees w.r.t the original values t1 and t2: @@ -38,7 +38,7 @@ module Compare { /// Keep this in mind when using this function to compare addresses. /// /// > TODO: there is currently no specification for this function, which causes no problem because it is not yet - /// > used in the Libra framework. However, should this functionality be needed in specification, a customized + /// > used in the Diem framework. However, should this functionality be needed in specification, a customized /// > native abstraction is needed in the prover framework. public fun cmp_lcs_bytes(v1: &vector, v2: &vector): u8 { let i1 = Vector::length(v1); diff --git a/language/stdlib/nursery/Offer.move b/language/stdlib/nursery/Offer.move index 8918c519c9..296609e943 100644 --- a/language/stdlib/nursery/Offer.move +++ b/language/stdlib/nursery/Offer.move @@ -5,7 +5,7 @@ address 0x1 { /// single-signer transactions. As of this writing, ordinary transactions can only have /// a single signer, and Move code can only store to an address (via `move_to`) if it /// can supply a reference to a signer for the destination address (there are special case -/// exceptions in Genesis and LibraAccount where there can temporarily be multiple signers). +/// exceptions in Genesis and DiemAccount where there can temporarily be multiple signers). /// /// Offer solves this problem by providing an `Offer` resource. To move a struct `T` from /// account A to B, account A first publishes an `Offer` resource at `address_of(A)`, diff --git a/language/stdlib/src/lib.rs b/language/stdlib/src/lib.rs index d885a7aa40..9d4de07e56 100644 --- a/language/stdlib/src/lib.rs +++ b/language/stdlib/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -142,7 +142,7 @@ pub fn script_files() -> Vec { pub fn build_stdlib() -> BTreeMap { let (_files, compiled_units) = - move_compile_and_report(&stdlib_files(), &[], Some(Address::LIBRA_CORE), None).unwrap(); + move_compile_and_report(&stdlib_files(), &[], Some(Address::DIEM_CORE), None).unwrap(); let mut modules = BTreeMap::new(); for (i, compiled_unit) in compiled_units.into_iter().enumerate() { let name = compiled_unit.name(); @@ -165,7 +165,7 @@ pub fn compile_script(source_file_str: String) -> Vec { let (_files, mut compiled_program) = move_compile_and_report( &[source_file_str], &stdlib_files(), - Some(Address::LIBRA_CORE), + Some(Address::DIEM_CORE), None, ) .unwrap(); @@ -339,7 +339,7 @@ pub fn generate_rust_transaction_builders() { let mut file = std::fs::File::create(TRANSACTION_BUILDERS_GENERATED_SOURCE_PATH) .expect("Failed to open file for Rust script build generation"); transaction_builder_generator::rust::output(&mut file, &abis, /* local types */ true) - .expect("Failed to generate Rust builders for Libra"); + .expect("Failed to generate Rust builders for Diem"); } std::process::Command::new("rustfmt") diff --git a/language/stdlib/src/main.rs b/language/stdlib/src/main.rs index f85be55ccc..e25b2f13d8 100644 --- a/language/stdlib/src/main.rs +++ b/language/stdlib/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -21,7 +21,7 @@ use vm::{normalized::Module, CompiledModule}; fn main() { let cli = App::new("stdlib") .name("Move standard library") - .author("The Libra Core Contributors") + .author("The Diem Core Contributors") .arg( Arg::with_name("no-doc") .long("no-doc") diff --git a/language/stdlib/tests/generated_files.rs b/language/stdlib/tests/generated_files.rs index 7cc2a0191f..6bdf10438c 100644 --- a/language/stdlib/tests/generated_files.rs +++ b/language/stdlib/tests/generated_files.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::process::Command; diff --git a/language/stdlib/transaction_scripts/add_currency_to_account.move b/language/stdlib/transaction_scripts/add_currency_to_account.move index 892f97d6a5..c72e6e4f0d 100644 --- a/language/stdlib/transaction_scripts/add_currency_to_account.move +++ b/language/stdlib/transaction_scripts/add_currency_to_account.move @@ -1,17 +1,17 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Adds a zero `Currency` balance to the sending `account`. This will enable `account` to -/// send, receive, and hold `Libra::Libra` coins. This transaction can be +/// send, receive, and hold `Diem::Diem` coins. This transaction can be /// successfully sent by any account that is allowed to hold balances /// (e.g., VASP, Designated Dealer). /// /// # Technical Description /// After the successful execution of this transaction the sending account will have a -/// `LibraAccount::Balance` resource with zero balance published under it. Only +/// `DiemAccount::Balance` resource with zero balance published under it. Only /// accounts that can hold balances can send this transaction, the sending account cannot -/// already have a `LibraAccount::Balance` published under it. +/// already have a `DiemAccount::Balance` published under it. /// /// # Parameters /// | Name | Type | Description | @@ -22,9 +22,9 @@ use 0x1::LibraAccount; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | -/// | `Errors::ALREADY_PUBLISHED` | `LibraAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | +/// | `Errors::ALREADY_PUBLISHED` | `DiemAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -32,16 +32,16 @@ use 0x1::LibraAccount; /// * `Script::peer_to_peer_with_metadata` fun add_currency_to_account(account: &signer) { - LibraAccount::add_currency(account); + DiemAccount::add_currency(account); } spec fun add_currency_to_account { use 0x1::Errors; use 0x1::Signer; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. - include LibraAccount::AddCurrencyAbortsIf; - include LibraAccount::AddCurrencyEnsures{addr: Signer::spec_address_of(account)}; + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::AddCurrencyAbortsIf; + include DiemAccount::AddCurrencyEnsures{addr: Signer::spec_address_of(account)}; aborts_with [check] Errors::NOT_PUBLISHED, diff --git a/language/stdlib/transaction_scripts/add_recovery_rotation_capability.move b/language/stdlib/transaction_scripts/add_recovery_rotation_capability.move index 89ebaeb3fe..fd3aa83ae4 100644 --- a/language/stdlib/transaction_scripts/add_recovery_rotation_capability.move +++ b/language/stdlib/transaction_scripts/add_recovery_rotation_capability.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; /// # Summary @@ -9,7 +9,7 @@ use 0x1::RecoveryAddress; /// specified recovery account can rotate the sender account's authentication key. /// /// # Technical Description -/// Adds the `LibraAccount::KeyRotationCapability` for the sending account +/// Adds the `DiemAccount::KeyRotationCapability` for the sending account /// (`to_recover_account`) to the `RecoveryAddress::RecoveryAddress` resource under /// `recovery_address`. After this transaction has been executed successfully the account at /// `recovery_address` and the `to_recover_account` may rotate the authentication key of @@ -29,12 +29,12 @@ use 0x1::RecoveryAddress; /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `to_recover_account` | `&signer` | The signer reference of the sending account of this transaction. | -/// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `LibraAccount::KeyRotationCapability` will be stored. | +/// | `recovery_address` | `address` | The account address where the `to_recover_account`'s `DiemAccount::KeyRotationCapability` will be stored. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EINVALID_KEY_ROTATION_DELEGATION` | `to_recover_account` and `recovery_address` do not belong to the same VASP. | /// @@ -44,19 +44,19 @@ use 0x1::RecoveryAddress; fun add_recovery_rotation_capability(to_recover_account: &signer, recovery_address: address) { RecoveryAddress::add_rotation_capability( - LibraAccount::extract_key_rotation_capability(to_recover_account), recovery_address + DiemAccount::extract_key_rotation_capability(to_recover_account), recovery_address ) } spec fun add_recovery_rotation_capability { use 0x1::Signer; use 0x1::Errors; - include LibraAccount::TransactionChecks{sender: to_recover_account}; // properties checked by the prologue. - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf{account: to_recover_account}; - include LibraAccount::ExtractKeyRotationCapabilityEnsures{account: to_recover_account}; + include DiemAccount::TransactionChecks{sender: to_recover_account}; // properties checked by the prologue. + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf{account: to_recover_account}; + include DiemAccount::ExtractKeyRotationCapabilityEnsures{account: to_recover_account}; let addr = Signer::spec_address_of(to_recover_account); - let rotation_cap = LibraAccount::spec_get_key_rotation_cap(addr); + let rotation_cap = DiemAccount::spec_get_key_rotation_cap(addr); include RecoveryAddress::AddRotationCapabilityAbortsIf{ to_recover: rotation_cap diff --git a/language/stdlib/transaction_scripts/add_to_script_allow_list.move b/language/stdlib/transaction_scripts/add_to_script_allow_list.move index ac36e0c3db..11ec3f989d 100644 --- a/language/stdlib/transaction_scripts/add_to_script_allow_list.move +++ b/language/stdlib/transaction_scripts/add_to_script_allow_list.move @@ -1,43 +1,43 @@ script { -use 0x1::LibraTransactionPublishingOption; +use 0x1::DiemTransactionPublishingOption; use 0x1::SlidingNonce; /// # Summary /// Adds a script hash to the transaction allowlist. This transaction -/// can only be sent by the Libra Root account. Scripts with this hash can be +/// can only be sent by the Diem Root account. Scripts with this hash can be /// sent afterward the successful execution of this script. /// /// # Technical Description /// -/// The sending account (`lr_account`) must be the Libra Root account. The script allow +/// The sending account (`dr_account`) must be the Diem Root account. The script allow /// list must not already hold the script `hash` being added. The `sliding_nonce` must be -/// a valid nonce for the Libra Root account. After this transaction has executed +/// a valid nonce for the Diem Root account. After this transaction has executed /// successfully a reconfiguration will be initiated, and the on-chain config -/// `LibraTransactionPublishingOption::LibraTransactionPublishingOption`'s +/// `DiemTransactionPublishingOption::DiemTransactionPublishingOption`'s /// `script_allow_list` field will contain the new script `hash` and transactions /// with this `hash` can be successfully sent to the network. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `hash` | `vector` | The hash of the script to be added to the script allowlist. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | -/// | `Errors::INVALID_ARGUMENT` | `LibraTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | +/// | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | -fun add_to_script_allow_list(lr_account: &signer, hash: vector, sliding_nonce: u64,) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); - LibraTransactionPublishingOption::add_to_script_allow_list(lr_account, hash) +fun add_to_script_allow_list(dr_account: &signer, hash: vector, sliding_nonce: u64,) { + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); + DiemTransactionPublishingOption::add_to_script_allow_list(dr_account, hash) } } diff --git a/language/stdlib/transaction_scripts/add_validator_and_reconfigure.move b/language/stdlib/transaction_scripts/add_validator_and_reconfigure.move index 4d24199d20..26a73ed54b 100644 --- a/language/stdlib/transaction_scripts/add_validator_and_reconfigure.move +++ b/language/stdlib/transaction_scripts/add_validator_and_reconfigure.move @@ -1,16 +1,16 @@ script { -use 0x1::LibraSystem; +use 0x1::DiemSystem; use 0x1::SlidingNonce; use 0x1::ValidatorConfig; /// # Summary /// Adds a validator account to the validator set, and triggers a /// reconfiguration of the system to admit the account to the validator set for the system. This -/// transaction can only be successfully called by the Libra Root account. +/// transaction can only be successfully called by the Diem Root account. /// /// # Technical Description /// This script adds the account at `validator_address` to the validator set. -/// This transaction emits a `LibraConfig::NewEpochEvent` event and triggers a +/// This transaction emits a `DiemConfig::NewEpochEvent` event and triggers a /// reconfiguration. Once the reconfiguration triggered by this script's /// execution has been performed, the account at the `validator_address` is /// considered to be a validator in the network. @@ -21,7 +21,7 @@ use 0x1::ValidatorConfig; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be added to the validator set. | @@ -29,16 +29,16 @@ use 0x1::ValidatorConfig; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -50,35 +50,35 @@ use 0x1::ValidatorConfig; /// * `Script::set_validator_config_and_reconfigure` fun add_validator_and_reconfigure( - lr_account: &signer, + dr_account: &signer, sliding_nonce: u64, validator_name: vector, validator_address: address ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); assert(ValidatorConfig::get_human_name(validator_address) == validator_name, 0); - LibraSystem::add_validator(lr_account, validator_address); + DiemSystem::add_validator(dr_account, validator_address); } spec fun add_validator_and_reconfigure { - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: lr_account}; // properties checked by the prologue. - include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; + include DiemAccount::TransactionChecks{sender: dr_account}; // properties checked by the prologue. + include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account}; // next is due to abort in get_human_name include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_address}; // TODO: use an error code from Errors.move instead of 0. aborts_if ValidatorConfig::get_human_name(validator_address) != validator_name with 0; - include LibraSystem::AddValidatorAbortsIf{validator_addr: validator_address}; - include LibraSystem::AddValidatorEnsures{validator_addr: validator_address}; + include DiemSystem::AddValidatorAbortsIf{validator_addr: validator_address}; + include DiemSystem::AddValidatorEnsures{validator_addr: validator_address}; - /// Reports INVALID_STATE because of is_operating() and !exists. + /// Reports INVALID_STATE because of is_operating() and !exists. /// is_operating() is always true during transactions, and CapabilityHolder is published /// during initialization (Genesis). - /// Reports REQUIRES_ROLE if lr_account is not Libra root, but that can't happen + /// Reports REQUIRES_ROLE if dr_account is not Diem root, but that can't happen /// in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. aborts_with [check] 0, // Odd error code in assert on second statement in add_validator_and_reconfigure @@ -89,7 +89,7 @@ spec fun add_validator_and_reconfigure { Errors::REQUIRES_ROLE; /// **Access Control:** - /// Only the Libra Root account can add Validators [[H13]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Only the Diem Root account can add Validators [[H13]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; } } diff --git a/language/stdlib/transaction_scripts/burn.move b/language/stdlib/transaction_scripts/burn.move index 7dce646593..4404cceeef 100644 --- a/language/stdlib/transaction_scripts/burn.move +++ b/language/stdlib/transaction_scripts/burn.move @@ -1,5 +1,5 @@ script { -use 0x1::Libra; +use 0x1::Diem; use 0x1::SlidingNonce; /// # Summary @@ -11,21 +11,21 @@ use 0x1::SlidingNonce; /// /// # Technical Description /// This transaction permanently destroys all the coins of `Token` type -/// stored in the `Libra::Preburn` resource published under the +/// stored in the `Diem::Preburn` resource published under the /// `preburn_address` account address. /// /// This transaction will only succeed if the sending `account` has a -/// `Libra::BurnCapability`, and a `Libra::Preburn` resource +/// `Diem::BurnCapability`, and a `Diem::Preburn` resource /// exists under `preburn_address`, with a non-zero `to_burn` field. After the successful execution /// of this transaction the `total_value` field in the -/// `Libra::CurrencyInfo` resource published under `0xA550C18` will be +/// `Diem::CurrencyInfo` resource published under `0xA550C18` will be /// decremented by the value of the `to_burn` field of the preburn resource /// under `preburn_address` immediately before this transaction, and the /// `to_burn` field of the preburn resource will have a zero value. /// /// ## Events -/// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle -/// held in the `Libra::CurrencyInfo` resource's `burn_events` published under +/// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle +/// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -43,10 +43,10 @@ use 0x1::SlidingNonce; /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EPREBURN_EMPTY` | The `Libra::Preburn` resource is empty (has a value of 0). | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EPREBURN_EMPTY` | The `Diem::Preburn` resource is empty (has a value of 0). | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::burn_txn_fees` @@ -55,16 +55,16 @@ use 0x1::SlidingNonce; fun burn(account: &signer, sliding_nonce: u64, preburn_address: address) { SlidingNonce::record_nonce_or_abort(account, sliding_nonce); - Libra::burn(account, preburn_address) + Diem::burn(account, preburn_address) } spec fun burn { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. include SlidingNonce::RecordNonceAbortsIf{ seq_nonce: sliding_nonce }; - include Libra::BurnAbortsIf; - include Libra::BurnEnsures; + include Diem::BurnAbortsIf; + include Diem::BurnEnsures; aborts_with [check] Errors::INVALID_ARGUMENT, @@ -75,6 +75,6 @@ spec fun burn { /// **Access Control:** /// Only the account with the burn capability can burn coins [[H3]][PERMISSION]. - include Libra::AbortsIfNoBurnCapability{account: account}; + include Diem::AbortsIfNoBurnCapability{account: account}; } } diff --git a/language/stdlib/transaction_scripts/burn_txn_fees.move b/language/stdlib/transaction_scripts/burn_txn_fees.move index d60e1a854c..5e6751e820 100644 --- a/language/stdlib/transaction_scripts/burn_txn_fees.move +++ b/language/stdlib/transaction_scripts/burn_txn_fees.move @@ -3,7 +3,7 @@ use 0x1::TransactionFee; /// # Summary /// Burns the transaction fees collected in the `CoinType` currency so that the -/// Libra association may reclaim the backing coins off-chain. May only be sent +/// Diem association may reclaim the backing coins off-chain. May only be sent /// by the Treasury Compliance account. /// /// # Technical Description @@ -16,8 +16,8 @@ use 0x1::TransactionFee; /// account address will have a value of 0 after the successful execution of this script. /// /// ## Events -/// The successful execution of this transaction will emit a `Libra::BurnEvent` on the event handle -/// held in the `Libra::CurrencyInfo` resource's `burn_events` published under +/// The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle +/// held in the `Diem::CurrencyInfo` resource's `burn_events` published under /// `0xA550C18`. /// /// # Parameters @@ -31,7 +31,7 @@ use 0x1::TransactionFee; /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::NOT_PUBLISHED` | `TransactionFee::ETRANSACTION_FEE` | `CoinType` is not an accepted transaction fee currency. | -/// | `Errors::INVALID_ARGUMENT` | `Libra::ECOIN` | The collected fees in `CoinType` are zero. | +/// | `Errors::INVALID_ARGUMENT` | `Diem::ECOIN` | The collected fees in `CoinType` are zero. | /// /// # Related Scripts /// * `Script::burn` diff --git a/language/stdlib/transaction_scripts/cancel_burn.move b/language/stdlib/transaction_scripts/cancel_burn.move index cbca0b3bfc..4d97f48fc9 100644 --- a/language/stdlib/transaction_scripts/cancel_burn.move +++ b/language/stdlib/transaction_scripts/cancel_burn.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Cancels and returns all coins held in the preburn area under @@ -7,22 +7,22 @@ use 0x1::LibraAccount; /// Can only be successfully sent by an account with Treasury Compliance role. /// /// # Technical Description -/// Cancels and returns all coins held in the `Libra::Preburn` resource under the `preburn_address` and -/// return the funds to the `preburn_address` account's `LibraAccount::Balance`. -/// The transaction must be sent by an `account` with a `Libra::BurnCapability` +/// Cancels and returns all coins held in the `Diem::Preburn` resource under the `preburn_address` and +/// return the funds to the `preburn_address` account's `DiemAccount::Balance`. +/// The transaction must be sent by an `account` with a `Diem::BurnCapability` /// resource published under it. The account at `preburn_address` must have a -/// `Libra::Preburn` resource published under it, and its value must be nonzero. The transaction removes -/// the entire balance held in the `Libra::Preburn` resource, and returns it back to the account's -/// `LibraAccount::Balance` under `preburn_address`. Due to this, the account at +/// `Diem::Preburn` resource published under it, and its value must be nonzero. The transaction removes +/// the entire balance held in the `Diem::Preburn` resource, and returns it back to the account's +/// `DiemAccount::Balance` under `preburn_address`. Due to this, the account at /// `preburn_address` must already have a balance in the `Token` currency published /// before this script is called otherwise the transaction will fail. /// /// ## Events /// The successful execution of this transaction will emit: -/// * A `Libra::CancelBurnEvent` on the event handle held in the `Libra::CurrencyInfo` +/// * A `Diem::CancelBurnEvent` on the event handle held in the `Diem::CurrencyInfo` /// resource's `burn_events` published under `0xA550C18`. -/// * A `LibraAccount::ReceivedPaymentEvent` on the `preburn_address`'s -/// `LibraAccount::LibraAccount` `received_events` event handle with both the `payer` and `payee` +/// * A `DiemAccount::ReceivedPaymentEvent` on the `preburn_address`'s +/// `DiemAccount::DiemAccount` `received_events` event handle with both the `payer` and `payee` /// being `preburn_address`. /// /// # Parameters @@ -35,12 +35,12 @@ use 0x1::LibraAccount; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EBURN_CAPABILITY` | The sending `account` does not have a `Libra::BurnCapability` published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::EPREBURN` | The account at `preburn_address` does not have a `Libra::Preburn` resource published under it. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability` published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn` resource published under it. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | /// | `Errors::INVALID_STATE` | `DualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SET` | The `account` does not have a compliance key set on it but dual attestion checking was performed. | /// /// # Related Scripts @@ -49,23 +49,23 @@ use 0x1::LibraAccount; /// * `Script::preburn` fun cancel_burn(account: &signer, preburn_address: address) { - LibraAccount::cancel_burn(account, preburn_address) + DiemAccount::cancel_burn(account, preburn_address) } spec fun cancel_burn { use 0x1::CoreAddresses; use 0x1::Errors; - use 0x1::Libra; + use 0x1::Diem; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. - include LibraAccount::CancelBurnAbortsIf; + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::CancelBurnAbortsIf; - let preburn_value_at_addr = global>(preburn_address).to_burn.value; + let preburn_value_at_addr = global>(preburn_address).to_burn.value; let total_preburn_value = - global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value; - let balance_at_addr = LibraAccount::balance(preburn_address); + global>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value; + let balance_at_addr = DiemAccount::balance(preburn_address); - /// The value stored at `Libra::Preburn` under `preburn_address` should become zero. + /// The value stored at `Diem::Preburn` under `preburn_address` should become zero. ensures preburn_value_at_addr == 0; /// The total value of preburn for `Token` should decrease by the preburned amount. @@ -83,6 +83,6 @@ spec fun cancel_burn { /// **Access Control:** /// Only the account with the burn capability can cancel burning [[H3]][PERMISSION]. - include Libra::AbortsIfNoBurnCapability{account: account}; + include Diem::AbortsIfNoBurnCapability{account: account}; } } diff --git a/language/stdlib/transaction_scripts/create_child_vasp_account.move b/language/stdlib/transaction_scripts/create_child_vasp_account.move index c1378d20c3..88574e6fbb 100644 --- a/language/stdlib/transaction_scripts/create_child_vasp_account.move +++ b/language/stdlib/transaction_scripts/create_child_vasp_account.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Creates a Child VASP account with its parent being the sending account of the transaction. @@ -19,12 +19,12 @@ use 0x1::LibraAccount; /// /// ## Events /// Successful execution with a `child_initial_balance` greater than zero will emit: -/// * A `LibraAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, +/// * A `DiemAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the Parent VASP's -/// `LibraAccount::LibraAccount` `sent_events` handle. -/// * A `LibraAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, +/// `DiemAccount::DiemAccount` `sent_events` handle. +/// * A `DiemAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, /// and payee field being `child_address`. This is emitted on the new Child VASPS's -/// `LibraAccount::LibraAccount` `received_events` handle. +/// `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -39,15 +39,15 @@ use 0x1::LibraAccount; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | /// | `Errors::REQUIRES_ROLE` | `Roles::EPARENT_VASP` | The sending account wasn't a Parent VASP account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `child_address` address is already taken. | /// | `Errors::LIMIT_EXCEEDED` | `VASP::ETOO_MANY_CHILDREN` | The sending account has reached the maximum number of allowed child accounts. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | /// /// # Related Scripts /// * `Script::create_parent_vasp_account` @@ -63,7 +63,7 @@ fun create_child_vasp_account( add_all_currencies: bool, child_initial_balance: u64 ) { - LibraAccount::create_child_vasp_account( + DiemAccount::create_child_vasp_account( parent_vasp, child_address, auth_key_prefix, @@ -71,11 +71,11 @@ fun create_child_vasp_account( ); // Give the newly created child `child_initial_balance` coins if (child_initial_balance > 0) { - let vasp_withdrawal_cap = LibraAccount::extract_withdraw_capability(parent_vasp); - LibraAccount::pay_from( + let vasp_withdrawal_cap = DiemAccount::extract_withdraw_capability(parent_vasp); + DiemAccount::pay_from( &vasp_withdrawal_cap, child_address, child_initial_balance, x"", x"" ); - LibraAccount::restore_withdraw_capability(vasp_withdrawal_cap); + DiemAccount::restore_withdraw_capability(vasp_withdrawal_cap); }; } @@ -84,29 +84,29 @@ spec fun create_child_vasp_account { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: parent_vasp}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: parent_vasp}; // properties checked by the prologue. let parent_addr = Signer::spec_address_of(parent_vasp); - let parent_cap = LibraAccount::spec_get_withdraw_cap(parent_addr); - include LibraAccount::CreateChildVASPAccountAbortsIf{ + let parent_cap = DiemAccount::spec_get_withdraw_cap(parent_addr); + include DiemAccount::CreateChildVASPAccountAbortsIf{ parent: parent_vasp, new_account_address: child_address}; aborts_if child_initial_balance > max_u64() with Errors::LIMIT_EXCEEDED; include (child_initial_balance > 0) ==> - LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: parent_addr}; + DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: parent_addr}; include (child_initial_balance > 0) ==> - LibraAccount::PayFromAbortsIfRestricted{ + DiemAccount::PayFromAbortsIfRestricted{ cap: parent_cap, payee: child_address, amount: child_initial_balance, metadata: x"", metadata_signature: x"" }; - include LibraAccount::CreateChildVASPAccountEnsures{ + include DiemAccount::CreateChildVASPAccountEnsures{ parent_addr: parent_addr, child_addr: child_address, }; - ensures LibraAccount::balance(child_address) == child_initial_balance; - ensures LibraAccount::balance(parent_addr) - == old(LibraAccount::balance(parent_addr)) - child_initial_balance; + ensures DiemAccount::balance(child_address) == child_initial_balance; + ensures DiemAccount::balance(parent_addr) + == old(DiemAccount::balance(parent_addr)) - child_initial_balance; aborts_with [check] Errors::REQUIRES_ROLE, diff --git a/language/stdlib/transaction_scripts/create_designated_dealer.move b/language/stdlib/transaction_scripts/create_designated_dealer.move index 6c7905c9dd..ba1c36e4c7 100644 --- a/language/stdlib/transaction_scripts/create_designated_dealer.move +++ b/language/stdlib/transaction_scripts/create_designated_dealer.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary @@ -37,7 +37,7 @@ use 0x1::SlidingNonce; /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `addr` address is already taken. | /// /// # Related Scripts @@ -54,7 +54,7 @@ fun create_designated_dealer( add_all_currencies: bool, ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::create_designated_dealer( + DiemAccount::create_designated_dealer( tc_account, addr, auth_key_prefix, @@ -67,11 +67,11 @@ spec fun create_designated_dealer { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce}; - include LibraAccount::CreateDesignatedDealerAbortsIf{ + include DiemAccount::CreateDesignatedDealerAbortsIf{ creator_account: tc_account, new_account_address: addr}; - include LibraAccount::CreateDesignatedDealerEnsures{new_account_address: addr}; + include DiemAccount::CreateDesignatedDealerEnsures{new_account_address: addr}; aborts_with [check] Errors::INVALID_ARGUMENT, diff --git a/language/stdlib/transaction_scripts/create_parent_vasp_account.move b/language/stdlib/transaction_scripts/create_parent_vasp_account.move index 228daecfcd..c1482a6e54 100644 --- a/language/stdlib/transaction_scripts/create_parent_vasp_account.move +++ b/language/stdlib/transaction_scripts/create_parent_vasp_account.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary @@ -32,7 +32,7 @@ use 0x1::SlidingNonce; /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -52,7 +52,7 @@ fun create_parent_vasp_account( add_all_currencies: bool ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::create_parent_vasp_account( + DiemAccount::create_parent_vasp_account( tc_account, new_account_address, auth_key_prefix, @@ -65,10 +65,10 @@ spec fun create_parent_vasp_account { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce}; - include LibraAccount::CreateParentVASPAccountAbortsIf{creator_account: tc_account}; - include LibraAccount::CreateParentVASPAccountEnsures; + include DiemAccount::CreateParentVASPAccountAbortsIf{creator_account: tc_account}; + include DiemAccount::CreateParentVASPAccountEnsures; aborts_with [check] Errors::INVALID_ARGUMENT, diff --git a/language/stdlib/transaction_scripts/create_recovery_address.move b/language/stdlib/transaction_scripts/create_recovery_address.move index 7b8f9adb18..3589d30702 100644 --- a/language/stdlib/transaction_scripts/create_recovery_address.move +++ b/language/stdlib/transaction_scripts/create_recovery_address.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::RecoveryAddress; /// # Summary @@ -10,7 +10,7 @@ use 0x1::RecoveryAddress; /// /// # Technical Description /// Publishes a `RecoveryAddress::RecoveryAddress` resource under `account`. It then -/// extracts the `LibraAccount::KeyRotationCapability` for `account` and adds +/// extracts the `DiemAccount::KeyRotationCapability` for `account` and adds /// it to the resource. After the successful execution of this transaction /// other accounts may add their key rotation to this resource so that `account` /// may be used as a recovery account for those accounts. @@ -23,7 +23,7 @@ use 0x1::RecoveryAddress; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ENOT_A_VASP` | `account` is not a VASP account. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EKEY_ROTATION_DEPENDENCY_CYCLE` | A key rotation recovery cycle would be created by adding `account`'s key rotation capability. | /// | `Errors::ALREADY_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | A `RecoveryAddress::RecoveryAddress` resource has already been published under `account`. | @@ -33,19 +33,19 @@ use 0x1::RecoveryAddress; /// * `Script::rotate_authentication_key_with_recovery_address` fun create_recovery_address(account: &signer) { - RecoveryAddress::publish(account, LibraAccount::extract_key_rotation_capability(account)) + RecoveryAddress::publish(account, DiemAccount::extract_key_rotation_capability(account)) } spec fun create_recovery_address { use 0x1::Signer; use 0x1::Errors; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf; - include LibraAccount::ExtractKeyRotationCapabilityEnsures; + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf; + include DiemAccount::ExtractKeyRotationCapabilityEnsures; let account_addr = Signer::spec_address_of(account); - let rotation_cap = LibraAccount::spec_get_key_rotation_cap(account_addr); + let rotation_cap = DiemAccount::spec_get_key_rotation_cap(account_addr); include RecoveryAddress::PublishAbortsIf{ recovery_account: account, diff --git a/language/stdlib/transaction_scripts/create_validator_account.move b/language/stdlib/transaction_scripts/create_validator_account.move index 955a2531ba..8fd26e5dcb 100644 --- a/language/stdlib/transaction_scripts/create_validator_account.move +++ b/language/stdlib/transaction_scripts/create_validator_account.move @@ -1,9 +1,9 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary -/// Creates a Validator account. This transaction can only be sent by the Libra +/// Creates a Validator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -18,7 +18,7 @@ use 0x1::SlidingNonce; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -28,12 +28,12 @@ use 0x1::SlidingNonce; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -46,15 +46,15 @@ use 0x1::SlidingNonce; /// * `Script::set_validator_config_and_reconfigure` fun create_validator_account( - lr_account: &signer, + dr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector, human_name: vector, ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); - LibraAccount::create_validator_account( - lr_account, + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); + DiemAccount::create_validator_account( + dr_account, new_account_address, auth_key_prefix, human_name, @@ -62,21 +62,21 @@ fun create_validator_account( } -/// Only Libra root may create Validator accounts -/// Authentication: ValidatorAccountAbortsIf includes AbortsIfNotLibraRoot. +/// Only Diem root may create Validator accounts +/// Authentication: ValidatorAccountAbortsIf includes AbortsIfNotDiemRoot. /// Checks that above table includes all error categories. /// The verifier finds an abort that is not documented, and cannot occur in practice: -/// * REQUIRES_ROLE comes from `Roles::assert_libra_root`. However, assert_libra_root checks the literal -/// Libra root address before checking the role, and the role abort is unreachable in practice, since -/// only Libra root has the Libra root role. +/// * REQUIRES_ROLE comes from `Roles::assert_diem_root`. However, assert_diem_root checks the literal +/// Diem root address before checking the role, and the role abort is unreachable in practice, since +/// only Diem root has the Diem root role. spec fun create_validator_account { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: lr_account}; // properties checked by the prologue. - include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; - include LibraAccount::CreateValidatorAccountAbortsIf; - include LibraAccount::CreateValidatorAccountEnsures; + include DiemAccount::TransactionChecks{sender: dr_account}; // properties checked by the prologue. + include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account}; + include DiemAccount::CreateValidatorAccountAbortsIf; + include DiemAccount::CreateValidatorAccountEnsures; aborts_with [check] Errors::INVALID_ARGUMENT, @@ -86,7 +86,7 @@ spec fun create_validator_account { Errors::REQUIRES_ROLE; /// **Access Control:** - /// Only the Libra Root account can create Validator accounts [[A3]][ROLE]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Only the Diem Root account can create Validator accounts [[A3]][ROLE]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; } } diff --git a/language/stdlib/transaction_scripts/create_validator_operator_account.move b/language/stdlib/transaction_scripts/create_validator_operator_account.move index 887991c4cc..aa156557fc 100644 --- a/language/stdlib/transaction_scripts/create_validator_operator_account.move +++ b/language/stdlib/transaction_scripts/create_validator_operator_account.move @@ -1,9 +1,9 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary -/// Creates a Validator Operator account. This transaction can only be sent by the Libra +/// Creates a Validator Operator account. This transaction can only be sent by the Diem /// Root account. /// /// # Technical Description @@ -15,7 +15,7 @@ use 0x1::SlidingNonce; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `new_account_address` | `address` | Address of the to-be-created Validator account. | /// | `auth_key_prefix` | `vector` | The authentication key prefix that will be used initially for the newly created account. | @@ -24,12 +24,12 @@ use 0x1::SlidingNonce; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | /// | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. | /// /// # Related Scripts @@ -42,36 +42,36 @@ use 0x1::SlidingNonce; /// * `Script::set_validator_config_and_reconfigure` fun create_validator_operator_account( - lr_account: &signer, + dr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector, human_name: vector ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); - LibraAccount::create_validator_operator_account( - lr_account, + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); + DiemAccount::create_validator_operator_account( + dr_account, new_account_address, auth_key_prefix, human_name, ); } -/// Only Libra root may create Validator Operator accounts -/// Authentication: ValidatorAccountAbortsIf includes AbortsIfNotLibraRoot. +/// Only Diem root may create Validator Operator accounts +/// Authentication: ValidatorAccountAbortsIf includes AbortsIfNotDiemRoot. /// Checks that above table includes all error categories. /// The verifier finds an abort that is not documented, and cannot occur in practice: -/// * REQUIRES_ROLE comes from `Roles::assert_libra_root`. However, assert_libra_root checks the literal -/// Libra root address before checking the role, and the role abort is unreachable in practice, since -/// only Libra root has the Libra root role. +/// * REQUIRES_ROLE comes from `Roles::assert_diem_root`. However, assert_diem_root checks the literal +/// Diem root address before checking the role, and the role abort is unreachable in practice, since +/// only Diem root has the Diem root role. spec fun create_validator_operator_account { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: lr_account}; // properties checked by the prologue. - include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; - include LibraAccount::CreateValidatorOperatorAccountAbortsIf; - include LibraAccount::CreateValidatorOperatorAccountEnsures; + include DiemAccount::TransactionChecks{sender: dr_account}; // properties checked by the prologue. + include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account}; + include DiemAccount::CreateValidatorOperatorAccountAbortsIf; + include DiemAccount::CreateValidatorOperatorAccountEnsures; aborts_with [check] Errors::INVALID_ARGUMENT, @@ -81,7 +81,7 @@ spec fun create_validator_operator_account { Errors::REQUIRES_ROLE; /// **Access Control:** - /// Only the Libra Root account can create Validator Operator accounts [[A4]][ROLE]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Only the Diem Root account can create Validator Operator accounts [[A4]][ROLE]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; } } diff --git a/language/stdlib/transaction_scripts/doc/spec_documentation.md b/language/stdlib/transaction_scripts/doc/spec_documentation.md index de80ec1540..77d4de96c9 100644 --- a/language/stdlib/transaction_scripts/doc/spec_documentation.md +++ b/language/stdlib/transaction_scripts/doc/spec_documentation.md @@ -1,7 +1,7 @@ - + -# Libra Framework Specification +# Diem Framework Specification [FORM_VER]: https://en.wikipedia.org/wiki/Formal_verification @@ -13,9 +13,9 @@ [Z3]: https://github.com/Z3Prover/z3 [ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -The Libra framework comes with an exhaustive formal specification of modules and transaction scripts. +The Diem framework comes with an exhaustive formal specification of modules and transaction scripts. The specifications are formally verified against the Move implementation, with the verification enabled in -continuous integration, and successful verification a land blocker for each PR merged into the Libra project. +continuous integration, and successful verification a land blocker for each PR merged into the Diem project. Here we given an overview of the specification approach and what it provides for the framework. @@ -44,12 +44,12 @@ Last not least, techniques for formal verification, like [SMT solving][SMT] made continuous advances over the last decade, and provide fully automated solutions for verification. - + -## How the Libra Framework is Specified +## How the Diem Framework is Specified -The Libra framework uses the [Move Specification Language][MSL] for specification of properties. The language +The Diem framework uses the [Move Specification Language][MSL] for specification of properties. The language is designed in the tradition of [Design by Contract][DESIGN_BY_CONTRACT]. It uses pre- and post-conditions to define behavior of functions, and invariants over data structures and global resource state. Conditions are described by predicates which involve access to function parameters, structured data, and global resource state. @@ -65,9 +65,9 @@ to avoid repetition (namely, reusable specification schemas), yet still specific tests which provide 100% coverage for each relevant input and state combination is arguably significantly more verbose. - + -## How the Libra Framework is Verified +## How the Diem Framework is Verified Move specifications are verified by the [Move Prover][PROVER]. This is a tool which works from the generated @@ -76,7 +76,7 @@ on to off-the-shelf standard verification tools (currently [Boogie][Boogie] and by those tools is then translated back to provide feedback on the level of Move, creating error messages very much similar as a type checker or linter tool. No human interaction is required for this. -Verification of the Libra framework is fully embedded into the developer workflow. A Rust integration test +Verification of the Diem framework is fully embedded into the developer workflow. A Rust integration test calls the Move prover on each Move source in the framework, failing the test if Move verification fails. Failures in this process are land blockers for submitting Move code. @@ -86,7 +86,7 @@ in this process are land blockers for submitting Move code. ## Completeness of Specification and Verification -At this point, the Libra framework is specified to the following extent: +At this point, the Diem framework is specified to the following extent: - Each transaction script is specified. - Most Module functions called directly or indirectly via a transaction script are specified. Note that diff --git a/language/stdlib/transaction_scripts/doc/transaction_script_documentation.md b/language/stdlib/transaction_scripts/doc/transaction_script_documentation.md index 51205b9e94..92cad97132 100644 --- a/language/stdlib/transaction_scripts/doc/transaction_script_documentation.md +++ b/language/stdlib/transaction_scripts/doc/transaction_script_documentation.md @@ -1,7 +1,7 @@ - + -# Overview of Libra Transaction Scripts +# Overview of Diem Transaction Scripts - [Introduction](#@Introduction_1) @@ -47,7 +47,7 @@ - [Script update_exchange_rate](#@Script_update_exchange_rate_41) - [Script update_minting_ability](#@Script_update_minting_ability_42) - [System Administration](#@System_Administration_43) - - [Script update_libra_version](#@Script_update_libra_version_44) + - [Script update_diem_version](#@Script_update_diem_version_44) - [Script add_to_script_allow_list](#@Script_add_to_script_allow_list_45) - [Transaction Scripts](#@Transaction_Scripts_46) - [Account Creation](#@Account_Creation_47) @@ -88,7 +88,7 @@ - [Script `update_exchange_rate`](#update_exchange_rate) - [Script `update_minting_ability`](#update_minting_ability) - [System Administration](#@System_Administration_222) - - [Script `update_libra_version`](#update_libra_version) + - [Script `update_diem_version`](#update_diem_version) - [Script `add_to_script_allow_list`](#add_to_script_allow_list) - [Index](#@Index_231) @@ -101,7 +101,7 @@ On-chain state is updated via the execution of transaction scripts sent from accounts that exist on-chain. This page documents each allowed transaction -script on Libra, and the common state changes that can be performed to the +script on Diem, and the common state changes that can be performed to the blockchain via these transaction scripts along with their arguments and common error conditions. @@ -147,7 +147,7 @@ Each Move abort error status consists of two pieces of data: The abort_code is a u64 that is constructed from two values: 1. The **error category** which is encoded in the lower 8 bits of the code. Error categories are -declared in the Errors module and are globally unique across the Libra framework. There is a limited +declared in the Errors module and are globally unique across the Diem framework. There is a limited fixed set of predefined categories, and the framework is guaranteed to use these consistently. 2. The **error reason** which is encoded in the remaining 56 bits of the code. The reason is a unique number relative to the module which raised the error and can be used to obtain more information about @@ -162,8 +162,8 @@ e.g., | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY | payer doesn't hold a balance in Currency. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Currency. | +| Errors::NOT_PUBLISHED | DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY | payer doesn't hold a balance in Currency. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Currency. | For each of these tables, the **error categories should be considered stable**; any changes to these categories will be be well-publicized in advance. On the @@ -242,7 +242,7 @@ Script documentation: create_validator_operator_account @@ -254,7 +254,7 @@ Script documentation: create_validator_account @@ -298,7 +298,7 @@ Script documentation: Libra::Libra<Currency> coins. This transaction can be +send, receive, and hold Diem::Diem<Currency> coins. This transaction can be successfully sent by any account that is allowed to hold balances (e.g., VASP, Designated Dealer). @@ -356,7 +356,7 @@ Script documentation: rotate_authentication_key_with_nonce @@ -369,7 +369,7 @@ Script documentation: rotate_authentication_key_with_nonce_admin @@ -455,7 +455,7 @@ Script documentation: add_validator_and_reconfigure @@ -484,7 +484,7 @@ Script documentation: remove_validator_and_reconfigure @@ -527,7 +527,7 @@ Script documentation: set_validator_operator_with_nonce_admin @@ -592,7 +592,7 @@ Script documentation: burn_txn_fees @@ -621,7 +621,7 @@ Script documentation: + -#### Script update_libra_version +#### Script update_diem_version -Updates the Libra major version that is stored on-chain and is used by the VM. This -transaction can only be sent from the Libra Root account. +Updates the Diem major version that is stored on-chain and is used by the VM. This +transaction can only be sent from the Diem Root account. -Script documentation: update_libra_version +Script documentation: update_diem_version --- @@ -712,7 +712,7 @@ Script documentation: add_to_script_allow_list @@ -740,7 +740,7 @@ Script documentation: 0x1::LibraAccount; +
use 0x1::DiemAccount;
 
@@ -774,12 +774,12 @@ child accounts of the creating Parent VASP account. ###### Events Successful execution with a child_initial_balance greater than zero will emit: -* A LibraAccount::SentPaymentEvent with the payer field being the Parent VASP's address, +* A DiemAccount::SentPaymentEvent with the payer field being the Parent VASP's address, and payee field being child_address. This is emitted on the Parent VASP's -LibraAccount::LibraAccount sent_events handle. -* A LibraAccount::ReceivedPaymentEvent with the payer field being the Parent VASP's address, +DiemAccount::DiemAccount sent_events handle. +* A DiemAccount::ReceivedPaymentEvent with the payer field being the Parent VASP's address, and payee field being child_address. This is emitted on the new Child VASPS's -LibraAccount::LibraAccount received_events handle. +DiemAccount::DiemAccount received_events handle. @@ -802,15 +802,15 @@ and payee field being child_address. This is emitted on the new Chi | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::INVALID_ARGUMENT | LibraAccount::EMALFORMED_AUTHENTICATION_KEY | The auth_key_prefix was not of length 32. | +| Errors::INVALID_ARGUMENT | DiemAccount::EMALFORMED_AUTHENTICATION_KEY | The auth_key_prefix was not of length 32. | | Errors::REQUIRES_ROLE | Roles::EPARENT_VASP | The sending account wasn't a Parent VASP account. | | Errors::ALREADY_PUBLISHED | Roles::EROLE_ID | The child_address address is already taken. | | Errors::LIMIT_EXCEEDED | VASP::ETOO_MANY_CHILDREN | The sending account has reached the maximum number of allowed child accounts. | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The CoinType is not a registered currency on-chain. | -| Errors::INVALID_STATE | LibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED | The withdrawal capability for the sending account has already been extracted. | -| Errors::NOT_PUBLISHED | LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY | The sending account doesn't have a balance in CoinType. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EINSUFFICIENT_BALANCE | The sending account doesn't have at least child_initial_balance of CoinType balance. | -| Errors::INVALID_ARGUMENT | LibraAccount::ECANNOT_CREATE_AT_VM_RESERVED | The child_address is the reserved address 0x0. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The CoinType is not a registered currency on-chain. | +| Errors::INVALID_STATE | DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED | The withdrawal capability for the sending account has already been extracted. | +| Errors::NOT_PUBLISHED | DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY | The sending account doesn't have a balance in CoinType. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EINSUFFICIENT_BALANCE | The sending account doesn't have at least child_initial_balance of CoinType balance. | +| Errors::INVALID_ARGUMENT | DiemAccount::ECANNOT_CREATE_AT_VM_RESERVED | The child_address is the reserved address 0x0. | @@ -840,7 +840,7 @@ and payee field being child_address. This is emitted on the new Chi add_all_currencies: bool, child_initial_balance: u64 ) { - LibraAccount::create_child_vasp_account<CoinType>( + DiemAccount::create_child_vasp_account<CoinType>( parent_vasp, child_address, auth_key_prefix, @@ -848,11 +848,11 @@ and payee field being child_address. This is emitted on the new Chi ); // Give the newly created child `child_initial_balance` coins if (child_initial_balance > 0) { - let vasp_withdrawal_cap = LibraAccount::extract_withdraw_capability(parent_vasp); - LibraAccount::pay_from<CoinType>( + let vasp_withdrawal_cap = DiemAccount::extract_withdraw_capability(parent_vasp); + DiemAccount::pay_from<CoinType>( &vasp_withdrawal_cap, child_address, child_initial_balance, x"", x"" ); - LibraAccount::restore_withdraw_capability(vasp_withdrawal_cap); + DiemAccount::restore_withdraw_capability(vasp_withdrawal_cap); }; }
@@ -866,31 +866,31 @@ and payee field being child_address. This is emitted on the new Chi -
include LibraAccount::TransactionChecks{sender: parent_vasp};
+
include DiemAccount::TransactionChecks{sender: parent_vasp};
 
 let parent_addr = Signer::spec_address_of(parent_vasp);
 
-let parent_cap = LibraAccount::spec_get_withdraw_cap(parent_addr);
-include LibraAccount::CreateChildVASPAccountAbortsIf<CoinType>{
+let parent_cap = DiemAccount::spec_get_withdraw_cap(parent_addr);
+include DiemAccount::CreateChildVASPAccountAbortsIf<CoinType>{
     parent: parent_vasp, new_account_address: child_address};
 aborts_if child_initial_balance > max_u64() with Errors::LIMIT_EXCEEDED;
 include (child_initial_balance > 0) ==>
-    LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: parent_addr};
+    DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: parent_addr};
 include (child_initial_balance > 0) ==>
-    LibraAccount::PayFromAbortsIfRestricted<CoinType>{
+    DiemAccount::PayFromAbortsIfRestricted<CoinType>{
         cap: parent_cap,
         payee: child_address,
         amount: child_initial_balance,
         metadata: x"",
         metadata_signature: x""
     };
-include LibraAccount::CreateChildVASPAccountEnsures<CoinType>{
+include DiemAccount::CreateChildVASPAccountEnsures<CoinType>{
     parent_addr: parent_addr,
     child_addr: child_address,
 };
-ensures LibraAccount::balance<CoinType>(child_address) == child_initial_balance;
-ensures LibraAccount::balance<CoinType>(parent_addr)
-    == old(LibraAccount::balance<CoinType>(parent_addr)) - child_initial_balance;
+ensures DiemAccount::balance<CoinType>(child_address) == child_initial_balance;
+ensures DiemAccount::balance<CoinType>(parent_addr)
+    == old(DiemAccount::balance<CoinType>(parent_addr)) - child_initial_balance;
 aborts_with [check]
     Errors::REQUIRES_ROLE,
     Errors::ALREADY_PUBLISHED,
@@ -921,7 +921,7 @@ Only Parent VASP accounts can create Child VASP accounts [[A7]][ROLE].
 
 
 
-
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -931,7 +931,7 @@ Only Parent VASP accounts can create Child VASP accounts [[A7]][ROLE]. ##### Summary -Creates a Validator Operator account. This transaction can only be sent by the Libra +Creates a Validator Operator account. This transaction can only be sent by the Diem Root account. @@ -951,7 +951,7 @@ This script does not assign the validator operator to any validator accounts but | Name | Type | Description | | ------ | ------ | ------------- | -| lr_account | &signer | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +| dr_account | &signer | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | | sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction. | | new_account_address | address | Address of the to-be-created Validator account. | | auth_key_prefix | vector<u8> | The authentication key prefix that will be used initially for the newly created account. | @@ -964,12 +964,12 @@ This script does not assign the validator operator to any validator accounts but | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::REQUIRES_ROLE | Roles::ELIBRA_ROOT | The sending account is not the Libra Root account. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::REQUIRES_ROLE | Roles::EDIEM_ROOT | The sending account is not the Diem Root account. | | Errors::ALREADY_PUBLISHED | Roles::EROLE_ID | The new_account_address address is already taken. | @@ -986,7 +986,7 @@ This script does not assign the validator operator to any validator accounts but * Script::set_validator_config_and_reconfigure -
public fun create_validator_operator_account(lr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
+
public fun create_validator_operator_account(dr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
 
@@ -996,15 +996,15 @@ This script does not assign the validator operator to any validator accounts but
fun create_validator_operator_account(
-    lr_account: &signer,
+    dr_account: &signer,
     sliding_nonce: u64,
     new_account_address: address,
     auth_key_prefix: vector<u8>,
     human_name: vector<u8>
 ) {
-    SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce);
-    LibraAccount::create_validator_operator_account(
-        lr_account,
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
+    DiemAccount::create_validator_operator_account(
+        dr_account,
         new_account_address,
         auth_key_prefix,
         human_name,
@@ -1019,19 +1019,19 @@ This script does not assign the validator operator to any validator accounts but
 
Specification -Only Libra root may create Validator Operator accounts -Authentication: ValidatorAccountAbortsIf includes AbortsIfNotLibraRoot. +Only Diem root may create Validator Operator accounts +Authentication: ValidatorAccountAbortsIf includes AbortsIfNotDiemRoot. Checks that above table includes all error categories. The verifier finds an abort that is not documented, and cannot occur in practice: -* REQUIRES_ROLE comes from Roles::assert_libra_root. However, assert_libra_root checks the literal -Libra root address before checking the role, and the role abort is unreachable in practice, since -only Libra root has the Libra root role. +* REQUIRES_ROLE comes from Roles::assert_diem_root. However, assert_diem_root checks the literal +Diem root address before checking the role, and the role abort is unreachable in practice, since +only Diem root has the Diem root role. -
include LibraAccount::TransactionChecks{sender: lr_account};
-include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account};
-include LibraAccount::CreateValidatorOperatorAccountAbortsIf;
-include LibraAccount::CreateValidatorOperatorAccountEnsures;
+
include DiemAccount::TransactionChecks{sender: dr_account};
+include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account};
+include DiemAccount::CreateValidatorOperatorAccountAbortsIf;
+include DiemAccount::CreateValidatorOperatorAccountEnsures;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::NOT_PUBLISHED,
@@ -1042,10 +1042,10 @@ only Libra root has the Libra root role.
 
 
 **Access Control:**
-Only the Libra Root account can create Validator Operator accounts [[A4]][ROLE].
+Only the Diem Root account can create Validator Operator accounts [[A4]][ROLE].
 
 
-
include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
 
@@ -1061,7 +1061,7 @@ Only the Libra Root account can create Validator Operator accounts [[A4]][ROLE]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -1071,7 +1071,7 @@ Only the Libra Root account can create Validator Operator accounts [[A4]][ROLE]. ##### Summary -Creates a Validator account. This transaction can only be sent by the Libra +Creates a Validator account. This transaction can only be sent by the Diem Root account. @@ -1094,7 +1094,7 @@ but only creates the account. | Name | Type | Description | | ------ | ------ | ------------- | -| lr_account | &signer | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +| dr_account | &signer | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | | sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction. | | new_account_address | address | Address of the to-be-created Validator account. | | auth_key_prefix | vector<u8> | The authentication key prefix that will be used initially for the newly created account. | @@ -1107,12 +1107,12 @@ but only creates the account. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::REQUIRES_ROLE | Roles::ELIBRA_ROOT | The sending account is not the Libra Root account. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::REQUIRES_ROLE | Roles::EDIEM_ROOT | The sending account is not the Diem Root account. | | Errors::ALREADY_PUBLISHED | Roles::EROLE_ID | The new_account_address address is already taken. | @@ -1129,7 +1129,7 @@ but only creates the account. * Script::set_validator_config_and_reconfigure -
public fun create_validator_account(lr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
+
public fun create_validator_account(dr_account: &signer, sliding_nonce: u64, new_account_address: address, auth_key_prefix: vector<u8>, human_name: vector<u8>)
 
@@ -1139,15 +1139,15 @@ but only creates the account.
fun create_validator_account(
-    lr_account: &signer,
+    dr_account: &signer,
     sliding_nonce: u64,
     new_account_address: address,
     auth_key_prefix: vector<u8>,
     human_name: vector<u8>,
 ) {
-    SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce);
-    LibraAccount::create_validator_account(
-        lr_account,
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
+    DiemAccount::create_validator_account(
+        dr_account,
         new_account_address,
         auth_key_prefix,
         human_name,
@@ -1162,19 +1162,19 @@ but only creates the account.
 
Specification -Only Libra root may create Validator accounts -Authentication: ValidatorAccountAbortsIf includes AbortsIfNotLibraRoot. +Only Diem root may create Validator accounts +Authentication: ValidatorAccountAbortsIf includes AbortsIfNotDiemRoot. Checks that above table includes all error categories. The verifier finds an abort that is not documented, and cannot occur in practice: -* REQUIRES_ROLE comes from Roles::assert_libra_root. However, assert_libra_root checks the literal -Libra root address before checking the role, and the role abort is unreachable in practice, since -only Libra root has the Libra root role. +* REQUIRES_ROLE comes from Roles::assert_diem_root. However, assert_diem_root checks the literal +Diem root address before checking the role, and the role abort is unreachable in practice, since +only Diem root has the Diem root role. -
include LibraAccount::TransactionChecks{sender: lr_account};
-include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account};
-include LibraAccount::CreateValidatorAccountAbortsIf;
-include LibraAccount::CreateValidatorAccountEnsures;
+
include DiemAccount::TransactionChecks{sender: dr_account};
+include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account};
+include DiemAccount::CreateValidatorAccountAbortsIf;
+include DiemAccount::CreateValidatorAccountEnsures;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::NOT_PUBLISHED,
@@ -1185,10 +1185,10 @@ only Libra root has the Libra root role.
 
 
 **Access Control:**
-Only the Libra Root account can create Validator accounts [[A3]][ROLE].
+Only the Diem Root account can create Validator accounts [[A3]][ROLE].
 
 
-
include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
 
@@ -1204,7 +1204,7 @@ Only the Libra Root account can create Validator accounts [[A3]][ROLE]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -1255,7 +1255,7 @@ also be added. This can only be invoked by an TreasuryCompliance account. | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | | Errors::REQUIRES_ADDRESS | CoreAddresses::ETREASURY_COMPLIANCE | The sending account is not the Treasury Compliance account. | | Errors::REQUIRES_ROLE | Roles::ETREASURY_COMPLIANCE | The sending account is not the Treasury Compliance account. | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The CoinType is not a registered currency on-chain. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The CoinType is not a registered currency on-chain. | | Errors::ALREADY_PUBLISHED | Roles::EROLE_ID | The new_account_address address is already taken. | @@ -1289,7 +1289,7 @@ also be added. This can only be invoked by an TreasuryCompliance account. add_all_currencies: bool ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::create_parent_vasp_account<CoinType>( + DiemAccount::create_parent_vasp_account<CoinType>( tc_account, new_account_address, auth_key_prefix, @@ -1308,10 +1308,10 @@ also be added. This can only be invoked by an TreasuryCompliance account. -
include LibraAccount::TransactionChecks{sender: tc_account};
+
include DiemAccount::TransactionChecks{sender: tc_account};
 include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce};
-include LibraAccount::CreateParentVASPAccountAbortsIf<CoinType>{creator_account: tc_account};
-include LibraAccount::CreateParentVASPAccountEnsures<CoinType>;
+include DiemAccount::CreateParentVASPAccountAbortsIf<CoinType>{creator_account: tc_account};
+include DiemAccount::CreateParentVASPAccountEnsures<CoinType>;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::REQUIRES_ADDRESS,
@@ -1341,7 +1341,7 @@ Only the Treasury Compliance account can create Parent VASP accounts [[A6]][ROLE
 
 
 
-
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -1397,7 +1397,7 @@ account. | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | | Errors::REQUIRES_ADDRESS | CoreAddresses::ETREASURY_COMPLIANCE | The sending account is not the Treasury Compliance account. | | Errors::REQUIRES_ROLE | Roles::ETREASURY_COMPLIANCE | The sending account is not the Treasury Compliance account. | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The Currency is not a registered currency on-chain. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The Currency is not a registered currency on-chain. | | Errors::ALREADY_PUBLISHED | Roles::EROLE_ID | The addr address is already taken. | @@ -1428,7 +1428,7 @@ account. add_all_currencies: bool, ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::create_designated_dealer<Currency>( + DiemAccount::create_designated_dealer<Currency>( tc_account, addr, auth_key_prefix, @@ -1447,11 +1447,11 @@ account. -
include LibraAccount::TransactionChecks{sender: tc_account};
+
include DiemAccount::TransactionChecks{sender: tc_account};
 include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce};
-include LibraAccount::CreateDesignatedDealerAbortsIf<Currency>{
+include DiemAccount::CreateDesignatedDealerAbortsIf<Currency>{
     creator_account: tc_account, new_account_address: addr};
-include LibraAccount::CreateDesignatedDealerEnsures<Currency>{new_account_address: addr};
+include DiemAccount::CreateDesignatedDealerEnsures<Currency>{new_account_address: addr};
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::REQUIRES_ADDRESS,
@@ -1487,7 +1487,7 @@ Only the Treasury Compliance account can create Designated Dealer accounts [[A5]
 
 
 
-
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 
@@ -1497,7 +1497,7 @@ Only the Treasury Compliance account can create Designated Dealer accounts [[A5] ##### Summary Adds a zero Currency balance to the sending account. This will enable account to -send, receive, and hold Libra::Libra<Currency> coins. This transaction can be +send, receive, and hold Diem::Diem<Currency> coins. This transaction can be successfully sent by any account that is allowed to hold balances (e.g., VASP, Designated Dealer). @@ -1507,9 +1507,9 @@ successfully sent by any account that is allowed to hold balances ##### Technical Description After the successful execution of this transaction the sending account will have a -LibraAccount::Balance<Currency> resource with zero balance published under it. Only +DiemAccount::Balance<Currency> resource with zero balance published under it. Only accounts that can hold balances can send this transaction, the sending account cannot -already have a LibraAccount::Balance<Currency> published under it. +already have a DiemAccount::Balance<Currency> published under it. @@ -1528,9 +1528,9 @@ already have a Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The Currency is not a registered currency on-chain. | -| Errors::INVALID_ARGUMENT | LibraAccount::EROLE_CANT_STORE_BALANCE | The sending account's role does not permit balances. | -| Errors::ALREADY_PUBLISHED | LibraAccount::EADD_EXISTING_CURRENCY | A balance for Currency is already published under the sending account. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The Currency is not a registered currency on-chain. | +| Errors::INVALID_ARGUMENT | DiemAccount::EROLE_CANT_STORE_BALANCE | The sending account's role does not permit balances. | +| Errors::ALREADY_PUBLISHED | DiemAccount::EADD_EXISTING_CURRENCY | A balance for Currency is already published under the sending account. | @@ -1552,7 +1552,7 @@ already have a add_currency_to_account<Currency>(account: &signer) { - LibraAccount::add_currency<Currency>(account); + DiemAccount::add_currency<Currency>(account); }
@@ -1565,9 +1565,9 @@ already have a LibraAccount::TransactionChecks{sender: account}; -include LibraAccount::AddCurrencyAbortsIf<Currency>; -include LibraAccount::AddCurrencyEnsures<Currency>{addr: Signer::spec_address_of(account)}; +
include DiemAccount::TransactionChecks{sender: account};
+include DiemAccount::AddCurrencyAbortsIf<Currency>;
+include DiemAccount::AddCurrencyEnsures<Currency>{addr: Signer::spec_address_of(account)};
 aborts_with [check]
     Errors::NOT_PUBLISHED,
     Errors::INVALID_ARGUMENT,
@@ -1596,7 +1596,7 @@ and Child VASPs can hold balances [[D1]][ROLE][[D2]][ROLE][[D3]][ROLE][[D4]][ROL
 
 
 
-
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::RecoveryAddress;
 
@@ -1616,7 +1616,7 @@ specified recovery account can rotate the sender account's authentication key. ##### Technical Description -Adds the LibraAccount::KeyRotationCapability for the sending account +Adds the DiemAccount::KeyRotationCapability for the sending account (to_recover_account) to the RecoveryAddress::RecoveryAddress resource under recovery_address. After this transaction has been executed successfully the account at recovery_address and the to_recover_account may rotate the authentication key of @@ -1640,7 +1640,7 @@ resource stored under the account at recovery_address. | Name | Type | Description | | ------ | ------ | ------------- | | to_recover_account | &signer | The signer reference of the sending account of this transaction. | -| recovery_address | address | The account address where the to_recover_account's LibraAccount::KeyRotationCapability will be stored. | +| recovery_address | address | The account address where the to_recover_account's DiemAccount::KeyRotationCapability will be stored. | @@ -1649,7 +1649,7 @@ resource stored under the account at recovery_address. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::INVALID_STATE | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | to_recover_account has already delegated/extracted its LibraAccount::KeyRotationCapability. | +| Errors::INVALID_STATE | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | to_recover_account has already delegated/extracted its DiemAccount::KeyRotationCapability. | | Errors::NOT_PUBLISHED | RecoveryAddress::ERECOVERY_ADDRESS | recovery_address does not have a RecoveryAddress resource published under it. | | Errors::INVALID_ARGUMENT | RecoveryAddress::EINVALID_KEY_ROTATION_DELEGATION | to_recover_account and recovery_address do not belong to the same VASP. | @@ -1673,7 +1673,7 @@ resource stored under the account at recovery_address.
fun add_recovery_rotation_capability(to_recover_account: &signer, recovery_address: address) {
     RecoveryAddress::add_rotation_capability(
-        LibraAccount::extract_key_rotation_capability(to_recover_account), recovery_address
+        DiemAccount::extract_key_rotation_capability(to_recover_account), recovery_address
     )
 }
 
@@ -1687,13 +1687,13 @@ resource stored under the account at recovery_address. -
include LibraAccount::TransactionChecks{sender: to_recover_account};
-include LibraAccount::ExtractKeyRotationCapabilityAbortsIf{account: to_recover_account};
-include LibraAccount::ExtractKeyRotationCapabilityEnsures{account: to_recover_account};
+
include DiemAccount::TransactionChecks{sender: to_recover_account};
+include DiemAccount::ExtractKeyRotationCapabilityAbortsIf{account: to_recover_account};
+include DiemAccount::ExtractKeyRotationCapabilityEnsures{account: to_recover_account};
 
 let addr = Signer::spec_address_of(to_recover_account);
 
-let rotation_cap = LibraAccount::spec_get_key_rotation_cap(addr);
+let rotation_cap = DiemAccount::spec_get_key_rotation_cap(addr);
 include RecoveryAddress::AddRotationCapabilityAbortsIf{
     to_recover: rotation_cap
 };
@@ -1738,7 +1738,7 @@ under the sender's account. Any account can send this transaction.
 
 Rotates the authentication key of the sending account to public_key,
 and publishes a SharedEd25519PublicKey::SharedEd25519PublicKey resource
-containing the 32-byte ed25519 public_key and the LibraAccount::KeyRotationCapability for
+containing the 32-byte ed25519 public_key and the DiemAccount::KeyRotationCapability for
 account under account.
 
 
@@ -1758,7 +1758,7 @@ containing the 32-byte ed25519 public_key and the Errors::INVALID_STATE     | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its LibraAccount::KeyRotationCapability resource.       |
+| Errors::INVALID_STATE     | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its DiemAccount::KeyRotationCapability resource.       |
 | Errors::ALREADY_PUBLISHED | SharedEd25519PublicKey::ESHARED_KEY                      | The SharedEd25519PublicKey::SharedEd25519PublicKey resource is already published under account. |
 | Errors::INVALID_ARGUMENT  | SharedEd25519PublicKey::EMALFORMED_PUBLIC_KEY            | public_key is an invalid ed25519 public key.                                                      |
 
@@ -1793,7 +1793,7 @@ containing the 32-byte ed25519 public_key and the LibraAccount::TransactionChecks{sender: account};
+
include DiemAccount::TransactionChecks{sender: account};
 include SharedEd25519PublicKey::PublishAbortsIf{key: public_key};
 include SharedEd25519PublicKey::PublishEnsures{key: public_key};
 aborts_with [check]
@@ -1815,7 +1815,7 @@ containing the 32-byte ed25519 public_key and the 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::RecoveryAddress;
 
@@ -1836,7 +1836,7 @@ each must be disjoint. ##### Technical Description Publishes a RecoveryAddress::RecoveryAddress resource under account. It then -extracts the LibraAccount::KeyRotationCapability for account and adds +extracts the DiemAccount::KeyRotationCapability for account and adds it to the resource. After the successful execution of this transaction other accounts may add their key rotation to this resource so that account may be used as a recovery account for those accounts. @@ -1857,7 +1857,7 @@ may be used as a recovery account for those accounts. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::INVALID_STATE | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its LibraAccount::KeyRotationCapability. | +| Errors::INVALID_STATE | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its DiemAccount::KeyRotationCapability. | | Errors::INVALID_ARGUMENT | RecoveryAddress::ENOT_A_VASP | account is not a VASP account. | | Errors::INVALID_ARGUMENT | RecoveryAddress::EKEY_ROTATION_DEPENDENCY_CYCLE | A key rotation recovery cycle would be created by adding account's key rotation capability. | | Errors::ALREADY_PUBLISHED | RecoveryAddress::ERECOVERY_ADDRESS | A RecoveryAddress::RecoveryAddress resource has already been published under account. | @@ -1881,7 +1881,7 @@ may be used as a recovery account for those accounts.
fun create_recovery_address(account: &signer) {
-    RecoveryAddress::publish(account, LibraAccount::extract_key_rotation_capability(account))
+    RecoveryAddress::publish(account, DiemAccount::extract_key_rotation_capability(account))
 }
 
@@ -1894,13 +1894,13 @@ may be used as a recovery account for those accounts. -
include LibraAccount::TransactionChecks{sender: account};
-include LibraAccount::ExtractKeyRotationCapabilityAbortsIf;
-include LibraAccount::ExtractKeyRotationCapabilityEnsures;
+
include DiemAccount::TransactionChecks{sender: account};
+include DiemAccount::ExtractKeyRotationCapabilityAbortsIf;
+include DiemAccount::ExtractKeyRotationCapabilityEnsures;
 
 let account_addr = Signer::spec_address_of(account);
 
-let rotation_cap = LibraAccount::spec_get_key_rotation_cap(account_addr);
+let rotation_cap = DiemAccount::spec_get_key_rotation_cap(account_addr);
 include RecoveryAddress::PublishAbortsIf{
     recovery_account: account,
     rotation_cap: rotation_cap
@@ -1927,7 +1927,7 @@ may be used as a recovery account for those accounts.
 
 
 
-
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 
@@ -1944,9 +1944,9 @@ be sent by any account. ##### Technical Description -Rotate the account's LibraAccount::LibraAccount authentication_key field to new_key. +Rotate the account's DiemAccount::DiemAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated -its LibraAccount::KeyRotationCapability. +its DiemAccount::KeyRotationCapability. @@ -1965,8 +1965,8 @@ its Errors::INVALID_STATE | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its LibraAccount::KeyRotationCapability. | -| Errors::INVALID_ARGUMENT | LibraAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | +| Errors::INVALID_STATE | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its DiemAccount::KeyRotationCapability. | +| Errors::INVALID_ARGUMENT | DiemAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | @@ -1988,9 +1988,9 @@ its rotate_authentication_key(account: &signer, new_key: vector<u8>) { - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); + let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key); + DiemAccount::restore_key_rotation_capability(key_rotation_capability); }
@@ -2003,20 +2003,20 @@ its LibraAccount::TransactionChecks{sender: account}; +
include DiemAccount::TransactionChecks{sender: account};
 
 let account_addr = Signer::spec_address_of(account);
-include LibraAccount::ExtractKeyRotationCapabilityAbortsIf;
+include DiemAccount::ExtractKeyRotationCapabilityAbortsIf;
 
-let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr);
-include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
+let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr);
+include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
 
This rotates the authentication key of account to new_key -
include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
+
include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
 aborts_with [check]
     Errors::INVALID_STATE,
     Errors::INVALID_ARGUMENT;
@@ -2028,7 +2028,7 @@ The account can rotate its own authentication key unless
 it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION].
 
 
-
include LibraAccount::AbortsIfDelegatedKeyRotationCapability;
+
include DiemAccount::AbortsIfDelegatedKeyRotationCapability;
 
@@ -2044,7 +2044,7 @@ it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -2056,16 +2056,16 @@ it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. Rotates the sender's authentication key to the supplied new authentication key. May be sent by any account that has a sliding nonce resource published under it (usually this is Treasury -Compliance or Libra Root accounts). +Compliance or Diem Root accounts). ##### Technical Description -Rotates the account's LibraAccount::LibraAccount authentication_key field to new_key. +Rotates the account's DiemAccount::DiemAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated -its LibraAccount::KeyRotationCapability. +its DiemAccount::KeyRotationCapability. @@ -2089,8 +2089,8 @@ its Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::INVALID_STATE | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its LibraAccount::KeyRotationCapability. | -| Errors::INVALID_ARGUMENT | LibraAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | +| Errors::INVALID_STATE | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its DiemAccount::KeyRotationCapability. | +| Errors::INVALID_ARGUMENT | DiemAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | @@ -2113,9 +2113,9 @@ its rotate_authentication_key_with_nonce(account: &signer, sliding_nonce: u64, new_key: vector<u8>) { SlidingNonce::record_nonce_or_abort(account, sliding_nonce); - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); + let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key); + DiemAccount::restore_key_rotation_capability(key_rotation_capability); }
@@ -2128,21 +2128,21 @@ its LibraAccount::TransactionChecks{sender: account}; +
include DiemAccount::TransactionChecks{sender: account};
 
 let account_addr = Signer::spec_address_of(account);
 include SlidingNonce::RecordNonceAbortsIf{ seq_nonce: sliding_nonce };
-include LibraAccount::ExtractKeyRotationCapabilityAbortsIf;
+include DiemAccount::ExtractKeyRotationCapabilityAbortsIf;
 
-let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr);
-include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
+let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr);
+include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
 
This rotates the authentication key of account to new_key -
include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
+
include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::INVALID_STATE,
@@ -2155,7 +2155,7 @@ The account can rotate its own authentication key unless
 it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION].
 
 
-
include LibraAccount::AbortsIfDelegatedKeyRotationCapability;
+
include DiemAccount::AbortsIfDelegatedKeyRotationCapability;
 
@@ -2171,7 +2171,7 @@ it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -2182,16 +2182,16 @@ it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. ##### Summary Rotates the specified account's authentication key to the supplied new authentication key. May -only be sent by the Libra Root account as a write set transaction. +only be sent by the Diem Root account as a write set transaction. ##### Technical Description -Rotate the account's LibraAccount::LibraAccount authentication_key field to new_key. +Rotate the account's DiemAccount::DiemAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated -its LibraAccount::KeyRotationCapability. +its DiemAccount::KeyRotationCapability. @@ -2200,9 +2200,9 @@ its SlidingNonce) to be used for this transaction for Libra Root. | +| sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction for Diem Root. | | new_key | vector<u8> | New ed25519 public key to be used for account. | @@ -2212,12 +2212,12 @@ its Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce in lr_account is too old and it's impossible to determine if it's duplicated or not. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce in lr_account is too far in the future. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce in lr_account has been previously recorded. | -| Errors::INVALID_STATE | LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its LibraAccount::KeyRotationCapability. | -| Errors::INVALID_ARGUMENT | LibraAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce in dr_account is too old and it's impossible to determine if it's duplicated or not. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce in dr_account is too far in the future. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce in dr_account has been previously recorded. | +| Errors::INVALID_STATE | DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED | account has already delegated/extracted its DiemAccount::KeyRotationCapability. | +| Errors::INVALID_ARGUMENT | DiemAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | @@ -2229,7 +2229,7 @@ its Script::rotate_authentication_key_with_recovery_address -
public fun rotate_authentication_key_with_nonce_admin(lr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector<u8>)
+
public fun rotate_authentication_key_with_nonce_admin(dr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector<u8>)
 
@@ -2238,11 +2238,11 @@ its rotate_authentication_key_with_nonce_admin(lr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector<u8>) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); +
fun rotate_authentication_key_with_nonce_admin(dr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector<u8>) {
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
+    let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account);
+    DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key);
+    DiemAccount::restore_key_rotation_capability(key_rotation_capability);
 }
 
@@ -2255,21 +2255,21 @@ its LibraAccount::TransactionChecks{sender: account}; +
include DiemAccount::TransactionChecks{sender: account};
 
 let account_addr = Signer::spec_address_of(account);
-include SlidingNonce::RecordNonceAbortsIf{ account: lr_account, seq_nonce: sliding_nonce };
-include LibraAccount::ExtractKeyRotationCapabilityAbortsIf;
+include SlidingNonce::RecordNonceAbortsIf{ account: dr_account, seq_nonce: sliding_nonce };
+include DiemAccount::ExtractKeyRotationCapabilityAbortsIf;
 
-let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr);
-include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
+let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr);
+include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key};
 
This rotates the authentication key of account to new_key -
include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
+
include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key};
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::INVALID_STATE,
@@ -2278,19 +2278,19 @@ This rotates the authentication key of account to new_keyrequires Roles::has_libra_root_role(lr_account);
+
requires Roles::has_diem_root_role(dr_account);
 
-This is ensured by LibraAccount::writeset_prologue. +This is ensured by DiemAccount::writeset_prologue. The account can rotate its own authentication key unless it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. -
include LibraAccount::AbortsIfDelegatedKeyRotationCapability{account: account};
+
include DiemAccount::AbortsIfDelegatedKeyRotationCapability{account: account};
 
@@ -2325,10 +2325,10 @@ new authentication key. Only used for accounts that are part of a recovery addre ##### Technical Description Rotates the authentication key of the to_recover account to new_key using the -LibraAccount::KeyRotationCapability stored in the RecoveryAddress::RecoveryAddress resource +DiemAccount::KeyRotationCapability stored in the RecoveryAddress::RecoveryAddress resource published under recovery_address. This transaction can be sent either by the to_recover account, or by the account where the RecoveryAddress::RecoveryAddress resource is published -that contains to_recover's LibraAccount::KeyRotationCapability. +that contains to_recover's DiemAccount::KeyRotationCapability. @@ -2338,7 +2338,7 @@ that contains to_recover's RecoveryAddress::RecoveryAddress that holds to_recover's LibraAccount::KeyRotationCapability is published. | +| recovery_address | address | Address where RecoveryAddress::RecoveryAddress that holds to_recover's DiemAccount::KeyRotationCapability is published. | | to_recover | address | The address of the account whose authentication key will be updated. | | new_key | vector<u8> | New ed25519 public key to be used for the account at the to_recover address. | @@ -2351,8 +2351,8 @@ that contains to_recover's Errors::NOT_PUBLISHED | RecoveryAddress::ERECOVERY_ADDRESS | recovery_address does not have a RecoveryAddress::RecoveryAddress resource published under it. | | Errors::INVALID_ARGUMENT | RecoveryAddress::ECANNOT_ROTATE_KEY | The address of account is not recovery_address or to_recover. | -| Errors::INVALID_ARGUMENT | RecoveryAddress::EACCOUNT_NOT_RECOVERABLE | to_recover's LibraAccount::KeyRotationCapability is not in the RecoveryAddress::RecoveryAddress resource published under recovery_address. | -| Errors::INVALID_ARGUMENT | LibraAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | +| Errors::INVALID_ARGUMENT | RecoveryAddress::EACCOUNT_NOT_RECOVERABLE | to_recover's DiemAccount::KeyRotationCapability is not in the RecoveryAddress::RecoveryAddress resource published under recovery_address. | +| Errors::INVALID_ARGUMENT | DiemAccount::EMALFORMED_AUTHENTICATION_KEY | new_key was an invalid length. | @@ -2392,7 +2392,7 @@ that contains to_recover's LibraAccount::TransactionChecks{sender: account}; +
include DiemAccount::TransactionChecks{sender: account};
 include RecoveryAddress::RotateAuthenticationKeyAbortsIf;
 include RecoveryAddress::RotateAuthenticationKeyEnsures;
 aborts_with [check]
@@ -2518,7 +2518,7 @@ off-chain communication, and the blockchain time at which the url was updated em
 
 
 
-
include LibraAccount::TransactionChecks{sender: account};
+
include DiemAccount::TransactionChecks{sender: account};
 include DualAttestation::RotateBaseUrlAbortsIf;
 include DualAttestation::RotateBaseUrlEnsures;
 include DualAttestation::RotateCompliancePublicKeyAbortsIf;
@@ -2624,7 +2624,7 @@ rotates the authentication key using the capability stored in accountinclude LibraAccount::TransactionChecks{sender: account};
+
include DiemAccount::TransactionChecks{sender: account};
 include SharedEd25519PublicKey::RotateKeyAbortsIf{new_public_key: public_key};
 include SharedEd25519PublicKey::RotateKeyEnsures{new_public_key: public_key};
 aborts_with [check]
@@ -2651,7 +2651,7 @@ rotates the authentication key using the capability stored in accountuse 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 
@@ -2677,10 +2677,10 @@ Transfers amount coins of type Currency from pay metadata and an (optional) metadata_signature on the message metadata | Signer::address_of(payer) | amount | DualAttestation::DOMAIN_SEPARATOR. The metadata and metadata_signature parameters are only required if amount >= -DualAttestation::get_cur_microlibra_limit LBR and payer and payee are distinct VASPs. +DualAttestation::get_cur_microdiem_limit XDX and payer and payee are distinct VASPs. However, a transaction sender can opt in to dual attestation even when it is not required (e.g., a DesignatedDealer -> VASP payment) by providing a non-empty metadata_signature. -Standardized metadata LCS format can be found in libra_types::transaction::metadata::Metadata. +Standardized metadata LCS format can be found in diem_types::transaction::metadata::Metadata. @@ -2688,8 +2688,8 @@ Standardized metadata LCS format can be found in libra_types: ###### Events Successful execution of this script emits two events: -* A LibraAccount::SentPaymentEvent on payer's LibraAccount::LibraAccount sent_events handle; and -* A LibraAccount::ReceivedPaymentEvent on payee's LibraAccount::LibraAccount received_events handle. +* A DiemAccount::SentPaymentEvent on payer's DiemAccount::DiemAccount sent_events handle; and +* A DiemAccount::ReceivedPaymentEvent on payee's DiemAccount::DiemAccount received_events handle. @@ -2711,16 +2711,16 @@ Successful execution of this script emits two events: | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY | payer doesn't hold a balance in Currency. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Currency. | -| Errors::INVALID_ARGUMENT | LibraAccount::ECOIN_DEPOSIT_IS_ZERO | amount is zero. | -| Errors::NOT_PUBLISHED | LibraAccount::EPAYEE_DOES_NOT_EXIST | No account exists at the payee address. | -| Errors::INVALID_ARGUMENT | LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE | An account exists at payee, but it does not accept payments in Currency. | +| Errors::NOT_PUBLISHED | DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY | payer doesn't hold a balance in Currency. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Currency. | +| Errors::INVALID_ARGUMENT | DiemAccount::ECOIN_DEPOSIT_IS_ZERO | amount is zero. | +| Errors::NOT_PUBLISHED | DiemAccount::EPAYEE_DOES_NOT_EXIST | No account exists at the payee address. | +| Errors::INVALID_ARGUMENT | DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE | An account exists at payee, but it does not accept payments in Currency. | | Errors::INVALID_STATE | AccountFreezing::EACCOUNT_FROZEN | The payee account is frozen. | | Errors::INVALID_ARGUMENT | DualAttestation::EMALFORMED_METADATA_SIGNATURE | metadata_signature is not 64 bytes. | | Errors::INVALID_ARGUMENT | DualAttestation::EINVALID_METADATA_SIGNATURE | metadata_signature does not verify on the against the payee's DualAttestation::Credential compliance_public_key public key. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EWITHDRAWAL_EXCEEDS_LIMITS | payer has exceeded its daily withdrawal limits for the backing coins of LBR. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EDEPOSIT_EXCEEDS_LIMITS | payee has exceeded its daily deposit limits for LBR. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EWITHDRAWAL_EXCEEDS_LIMITS | payer has exceeded its daily withdrawal limits for the backing coins of XDX. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EDEPOSIT_EXCEEDS_LIMITS | payee has exceeded its daily deposit limits for XDX. | @@ -2748,11 +2748,11 @@ Successful execution of this script emits two events: metadata: vector<u8>, metadata_signature: vector<u8> ) { - let payer_withdrawal_cap = LibraAccount::extract_withdraw_capability(payer); - LibraAccount::pay_from<Currency>( + let payer_withdrawal_cap = DiemAccount::extract_withdraw_capability(payer); + DiemAccount::pay_from<Currency>( &payer_withdrawal_cap, payee, amount, metadata, metadata_signature ); - LibraAccount::restore_withdraw_capability(payer_withdrawal_cap); + DiemAccount::restore_withdraw_capability(payer_withdrawal_cap); }
@@ -2765,13 +2765,13 @@ Successful execution of this script emits two events: -
include LibraAccount::TransactionChecks{sender: payer};
+
include DiemAccount::TransactionChecks{sender: payer};
 
 let payer_addr = Signer::spec_address_of(payer);
 
-let cap = LibraAccount::spec_get_withdraw_cap(payer_addr);
-include LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: payer_addr};
-include LibraAccount::PayFromAbortsIf<Currency>{cap: cap};
+let cap = DiemAccount::spec_get_withdraw_cap(payer_addr);
+include DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: payer_addr};
+include DiemAccount::PayFromAbortsIf<Currency>{cap: cap};
 
@@ -2779,14 +2779,14 @@ The balances of payer and payee change by the correct amount.
ensures payer_addr != payee
-    ==> LibraAccount::balance<Currency>(payer_addr)
-    == old(LibraAccount::balance<Currency>(payer_addr)) - amount;
+    ==> DiemAccount::balance<Currency>(payer_addr)
+    == old(DiemAccount::balance<Currency>(payer_addr)) - amount;
 ensures payer_addr != payee
-    ==> LibraAccount::balance<Currency>(payee)
-    == old(LibraAccount::balance<Currency>(payee)) + amount;
+    ==> DiemAccount::balance<Currency>(payee)
+    == old(DiemAccount::balance<Currency>(payee)) + amount;
 ensures payer_addr == payee
-    ==> LibraAccount::balance<Currency>(payee)
-    == old(LibraAccount::balance<Currency>(payee));
+    ==> DiemAccount::balance<Currency>(payee)
+    == old(DiemAccount::balance<Currency>(payee));
 aborts_with [check]
     Errors::NOT_PUBLISHED,
     Errors::INVALID_STATE,
@@ -2800,8 +2800,8 @@ Both the payer and the payee must hold the balances of the Currency. Only Design
 Parent VASPs, and Child VASPs can hold balances [[D1]][ROLE][[D2]][ROLE][[D3]][ROLE][[D4]][ROLE][[D5]][ROLE][[D6]][ROLE][[D7]][ROLE].
 
 
-
aborts_if !exists<LibraAccount::Balance<Currency>>(payer_addr) with Errors::NOT_PUBLISHED;
-aborts_if !exists<LibraAccount::Balance<Currency>>(payee) with Errors::INVALID_ARGUMENT;
+
aborts_if !exists<DiemAccount::Balance<Currency>>(payer_addr) with Errors::NOT_PUBLISHED;
+aborts_if !exists<DiemAccount::Balance<Currency>>(payee) with Errors::INVALID_ARGUMENT;
 
@@ -2823,7 +2823,7 @@ Parent VASPs, and Child VASPs can hold balances [[D1]][ROLE][[D2]][ROLE][[D3]][R -
use 0x1::LibraSystem;
+
use 0x1::DiemSystem;
 use 0x1::SlidingNonce;
 use 0x1::ValidatorConfig;
 
@@ -2836,7 +2836,7 @@ Parent VASPs, and Child VASPs can hold balances [[D1]][ROLE][[D2]][ROLE][[D3]][R Adds a validator account to the validator set, and triggers a reconfiguration of the system to admit the account to the validator set for the system. This -transaction can only be successfully called by the Libra Root account. +transaction can only be successfully called by the Diem Root account. @@ -2844,7 +2844,7 @@ transaction can only be successfully called by the Libra Root account. ##### Technical Description This script adds the account at validator_address to the validator set. -This transaction emits a LibraConfig::NewEpochEvent event and triggers a +This transaction emits a DiemConfig::NewEpochEvent event and triggers a reconfiguration. Once the reconfiguration triggered by this script's execution has been performed, the account at the validator_address is considered to be a validator in the network. @@ -2859,7 +2859,7 @@ or does not have a SlidingNonce) to be used for this transaction. | | validator_name | vector<u8> | ASCII-encoded human name for the validator. Must match the human name in the ValidatorConfig::ValidatorConfig for the validator. | | validator_address | address | The validator account address to be added to the validator set. | @@ -2871,16 +2871,16 @@ or does not have a Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::REQUIRES_ROLE | Roles::ELIBRA_ROOT | The sending account is not the Libra Root account. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::REQUIRES_ROLE | Roles::EDIEM_ROOT | The sending account is not the Diem Root account. | | 0 | 0 | The provided validator_name does not match the already-recorded human name for the validator. | -| Errors::INVALID_ARGUMENT | LibraSystem::EINVALID_PROSPECTIVE_VALIDATOR | The validator to be added does not have a ValidatorConfig::ValidatorConfig resource published under it, or its config field is empty. | -| Errors::INVALID_ARGUMENT | LibraSystem::EALREADY_A_VALIDATOR | The validator_address account is already a registered validator. | -| Errors::INVALID_STATE | LibraConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +| Errors::INVALID_ARGUMENT | DiemSystem::EINVALID_PROSPECTIVE_VALIDATOR | The validator to be added does not have a ValidatorConfig::ValidatorConfig resource published under it, or its config field is empty. | +| Errors::INVALID_ARGUMENT | DiemSystem::EALREADY_A_VALIDATOR | The validator_address account is already a registered validator. | +| Errors::INVALID_STATE | DiemConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | @@ -2896,7 +2896,7 @@ or does not have a Script::set_validator_config_and_reconfigure -
public fun add_validator_and_reconfigure(lr_account: &signer, sliding_nonce: u64, validator_name: vector<u8>, validator_address: address)
+
public fun add_validator_and_reconfigure(dr_account: &signer, sliding_nonce: u64, validator_name: vector<u8>, validator_address: address)
 
@@ -2906,14 +2906,14 @@ or does not have a add_validator_and_reconfigure( - lr_account: &signer, + dr_account: &signer, sliding_nonce: u64, validator_name: vector<u8>, validator_address: address ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); assert(ValidatorConfig::get_human_name(validator_address) == validator_name, 0); - LibraSystem::add_validator(lr_account, validator_address); + DiemSystem::add_validator(dr_account, validator_address); }
@@ -2926,19 +2926,19 @@ or does not have a LibraAccount::TransactionChecks{sender: lr_account}; -include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; +
include DiemAccount::TransactionChecks{sender: dr_account};
+include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account};
 include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_address};
 aborts_if ValidatorConfig::get_human_name(validator_address) != validator_name with 0;
-include LibraSystem::AddValidatorAbortsIf{validator_addr: validator_address};
-include LibraSystem::AddValidatorEnsures{validator_addr: validator_address};
+include DiemSystem::AddValidatorAbortsIf{validator_addr: validator_address};
+include DiemSystem::AddValidatorEnsures{validator_addr: validator_address};
 
-Reports INVALID_STATE because of is_operating() and !exists. +Reports INVALID_STATE because of is_operating() and !exists. is_operating() is always true during transactions, and CapabilityHolder is published during initialization (Genesis). -Reports REQUIRES_ROLE if lr_account is not Libra root, but that can't happen +Reports REQUIRES_ROLE if dr_account is not Diem root, but that can't happen in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. @@ -2953,10 +2953,10 @@ in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. **Access Control:** -Only the Libra Root account can add Validators [[H13]][PERMISSION]. +Only the Diem Root account can add Validators [[H13]][PERMISSION]. -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
 
@@ -2992,7 +2992,7 @@ validator. ##### Technical Description This updates the fields with corresponding names held in the ValidatorConfig::ValidatorConfig -config resource held under validator_account. It does not emit a LibraConfig::NewEpochEvent +config resource held under validator_account. It does not emit a DiemConfig::NewEpochEvent so the copy of this config held in the validator set will not be updated, and the changes are only "locally" under the validator_account account address. @@ -3072,7 +3072,7 @@ Access control rule is that only the validator operator for a validator may set call this, but there is an aborts_if in SetConfigAbortsIf that tests that directly. -
include LibraAccount::TransactionChecks{sender: validator_operator_account};
+
include DiemAccount::TransactionChecks{sender: validator_operator_account};
 include ValidatorConfig::SetConfigAbortsIf {validator_addr: validator_account};
 ensures ValidatorConfig::is_valid(validator_account);
 aborts_with [check]
@@ -3104,7 +3104,7 @@ update the validator's configuration [[H14]][PERMISSION].
 
 
 
-
use 0x1::LibraSystem;
+
use 0x1::DiemSystem;
 use 0x1::SlidingNonce;
 use 0x1::ValidatorConfig;
 
@@ -3117,7 +3117,7 @@ update the validator's configuration [[H14]][PERMISSION]. This script removes a validator account from the validator set, and triggers a reconfiguration of the system to remove the validator from the system. This transaction can only be -successfully called by the Libra Root account. +successfully called by the Diem Root account. @@ -3125,7 +3125,7 @@ successfully called by the Libra Root account. ##### Technical Description This script removes the account at validator_address from the validator set. This transaction -emits a LibraConfig::NewEpochEvent event. Once the reconfiguration triggered by this event +emits a DiemConfig::NewEpochEvent event. Once the reconfiguration triggered by this event has been performed, the account at validator_address is no longer considered to be a validator in the network. This transaction will fail if the validator at validator_address is not in the validator set. @@ -3137,7 +3137,7 @@ is not in the validator set. | Name | Type | Description | | ------ | ------ | ------------- | -| lr_account | &signer | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +| dr_account | &signer | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | | sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction. | | validator_name | vector<u8> | ASCII-encoded human name for the validator. Must match the human name in the ValidatorConfig::ValidatorConfig for the validator. | | validator_address | address | The validator account address to be removed from the validator set. | @@ -3149,16 +3149,16 @@ is not in the validator set. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | The sending account is not the Libra Root account or Treasury Compliance account | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | The sending account is not the Diem Root account or Treasury Compliance account | | 0 | 0 | The provided validator_name does not match the already-recorded human name for the validator. | -| Errors::INVALID_ARGUMENT | LibraSystem::ENOT_AN_ACTIVE_VALIDATOR | The validator to be removed is not in the validator set. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::REQUIRES_ROLE | Roles::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::INVALID_STATE | LibraConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +| Errors::INVALID_ARGUMENT | DiemSystem::ENOT_AN_ACTIVE_VALIDATOR | The validator to be removed is not in the validator set. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::REQUIRES_ROLE | Roles::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::INVALID_STATE | DiemConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | @@ -3174,7 +3174,7 @@ is not in the validator set. * Script::set_validator_config_and_reconfigure -
public fun remove_validator_and_reconfigure(lr_account: &signer, sliding_nonce: u64, validator_name: vector<u8>, validator_address: address)
+
public fun remove_validator_and_reconfigure(dr_account: &signer, sliding_nonce: u64, validator_name: vector<u8>, validator_address: address)
 
@@ -3184,15 +3184,15 @@ is not in the validator set.
fun remove_validator_and_reconfigure(
-    lr_account: &signer,
+    dr_account: &signer,
     sliding_nonce: u64,
     validator_name: vector<u8>,
     validator_address: address
 ) {
-    SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce);
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
     // TODO: Use an error code from Errors.move
     assert(ValidatorConfig::get_human_name(validator_address) == validator_name, 0);
-    LibraSystem::remove_validator(lr_account, validator_address);
+    DiemSystem::remove_validator(dr_account, validator_address);
 }
 
@@ -3205,19 +3205,19 @@ is not in the validator set. -
include LibraAccount::TransactionChecks{sender: lr_account};
-include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account};
+
include DiemAccount::TransactionChecks{sender: dr_account};
+include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account};
 include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_address};
 aborts_if ValidatorConfig::get_human_name(validator_address) != validator_name with 0;
-include LibraSystem::RemoveValidatorAbortsIf{validator_addr: validator_address};
-include LibraSystem::RemoveValidatorEnsures{validator_addr: validator_address};
+include DiemSystem::RemoveValidatorAbortsIf{validator_addr: validator_address};
+include DiemSystem::RemoveValidatorEnsures{validator_addr: validator_address};
 
-Reports INVALID_STATE because of is_operating() and !exists. +Reports INVALID_STATE because of is_operating() and !exists. is_operating() is always true during transactions, and CapabilityHolder is published during initialization (Genesis). -Reports REQUIRES_ROLE if lr_account is not Libra root, but that can't happen +Reports REQUIRES_ROLE if dr_account is not Diem root, but that can't happen in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. @@ -3232,10 +3232,10 @@ in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. **Access Control:** -Only the Libra Root account can remove Validators [[H13]][PERMISSION]. +Only the Diem Root account can remove Validators [[H13]][PERMISSION]. -
include Roles::AbortsIfNotLibraRoot{account: lr_account};
+
include Roles::AbortsIfNotDiemRoot{account: dr_account};
 
@@ -3251,7 +3251,7 @@ Only the Libra Root account can remove Validators [[H13]][PERMISSION]. -
use 0x1::LibraSystem;
+
use 0x1::DiemSystem;
 use 0x1::ValidatorConfig;
 
@@ -3271,7 +3271,7 @@ Validator Operator account that is already registered with a validator. ##### Technical Description This updates the fields with corresponding names held in the ValidatorConfig::ValidatorConfig -config resource held under validator_account. It then emits a LibraConfig::NewEpochEvent to +config resource held under validator_account. It then emits a DiemConfig::NewEpochEvent to trigger a reconfiguration of the system. This reconfiguration will update the validator set on-chain with the updated ValidatorConfig::ValidatorConfig. @@ -3299,7 +3299,7 @@ on-chain with the updated Errors::REQUIRES_ROLE | Roles::EVALIDATOR_OPERATOR | validator_operator_account does not have a Validator Operator role. | | Errors::INVALID_ARGUMENT | ValidatorConfig::EINVALID_TRANSACTION_SENDER | validator_operator_account is not the registered operator for the validator at validator_address. | | Errors::INVALID_ARGUMENT | ValidatorConfig::EINVALID_CONSENSUS_KEY | consensus_pubkey is not a valid ed25519 public key. | -| Errors::INVALID_STATE | LibraConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +| Errors::INVALID_STATE | DiemConfig::EINVALID_BLOCK_TIME | An invalid time value was encountered in reconfiguration. Unlikely to occur. | @@ -3338,7 +3338,7 @@ on-chain with the updated LibraSystem::update_config_and_reconfigure(validator_operator_account, validator_account); + DiemSystem::update_config_and_reconfigure(validator_operator_account, validator_account); }
@@ -3351,8 +3351,8 @@ on-chain with the updated LibraAccount::TransactionChecks{sender: validator_operator_account}; -include LibraSystem::UpdateConfigAndReconfigureEnsures{validator_addr: validator_account}; +
include DiemAccount::TransactionChecks{sender: validator_operator_account};
+include DiemSystem::UpdateConfigAndReconfigureEnsures{validator_addr: validator_account};
 ensures ValidatorConfig::is_valid(validator_account);
 ensures ValidatorConfig::spec_get_config(validator_account)
     == ValidatorConfig::Config {
@@ -3361,21 +3361,21 @@ on-chain with the updated ValidatorConfig::SetConfigAbortsIf{validator_addr: validator_account};
-include LibraSystem::UpdateConfigAndReconfigureAbortsIf{validator_addr: validator_account};
+include DiemSystem::UpdateConfigAndReconfigureAbortsIf{validator_addr: validator_account};
 
 let is_validator_info_updated =
-    (exists v_info in LibraSystem::spec_get_validators():
+    (exists v_info in DiemSystem::spec_get_validators():
         v_info.addr == validator_account
         && v_info.config != ValidatorConfig::Config {
                 consensus_pubkey,
                 validator_network_addresses,
                 fullnode_network_addresses,
            });
-include is_validator_info_updated ==> LibraConfig::ReconfigureAbortsIf;
+include is_validator_info_updated ==> DiemConfig::ReconfigureAbortsIf;
 
-This reports a possible INVALID_STATE abort, which comes from an assert in LibraConfig::reconfigure_ +This reports a possible INVALID_STATE abort, which comes from an assert in DiemConfig::reconfigure_ that config.last_reconfiguration_time is not in the future. This is a system error that a user for which there is no useful recovery except to resubmit the transaction. @@ -3436,7 +3436,7 @@ operator for the sending validator account. The account at operator_accoun a Validator Operator role and have a ValidatorOperatorConfig::ValidatorOperatorConfig resource published under it. The sending account must be a Validator and have a ValidatorConfig::ValidatorConfig resource published under it. This script does not emit a -LibraConfig::NewEpochEvent and no reconfiguration of the system is initiated by this script. +DiemConfig::NewEpochEvent and no reconfiguration of the system is initiated by this script. @@ -3508,7 +3508,7 @@ resource published under it. The sending account must be a Validato
let account_addr = Signer::address_of(account);
-include LibraAccount::TransactionChecks{sender: account};
+include DiemAccount::TransactionChecks{sender: account};
 include ValidatorConfig::AbortsIfNoValidatorConfig{addr: account_addr};
 aborts_if ValidatorOperatorConfig::get_human_name(operator_account) != operator_name with 0;
 include ValidatorConfig::SetOperatorAbortsIf{validator_account: account, operator_addr: operator_account};
@@ -3516,7 +3516,7 @@ resource published under it. The sending account must be a Validato
 
-Reports INVALID_STATE because of !exists, but that can't happen +Reports INVALID_STATE because of !exists, but that can't happen because CapabilityHolder is published during initialization (Genesis). @@ -3561,7 +3561,7 @@ Only a Validator account can set its Validator Operator [[H15]][PERMISSION]. Sets the validator operator for a validator in the validator's configuration resource "locally" and does not reconfigure the system. Changes from this transaction will not picked up by the -system until a reconfiguration of the system is triggered. May only be sent by the Libra Root +system until a reconfiguration of the system is triggered. May only be sent by the Diem Root account as a write set transaction. @@ -3583,9 +3583,9 @@ the system is initiated by this script. | Name | Type | Description | | ------ | ------ | ------------- | -| lr_account | &signer | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | +| dr_account | &signer | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | | account | &signer | Signer reference of account specified in the execute_as field of the write set transaction. | -| sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction for Libra Root. | +| sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction for Diem Root. | | operator_name | vector<u8> | Validator operator's human name. | | operator_account | address | Address of the validator operator account to be added as the account validator's operator. | @@ -3596,11 +3596,11 @@ the system is initiated by this script. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce in lr_account is too old and it's impossible to determine if it's duplicated or not. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce in lr_account is too far in the future. | -| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce in lr_account has been previously recorded. | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | The sending account is not the Libra Root account or Treasury Compliance account | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce in dr_account is too old and it's impossible to determine if it's duplicated or not. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce in dr_account is too far in the future. | +| Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce in dr_account has been previously recorded. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | The sending account is not the Diem Root account or Treasury Compliance account | | Errors::NOT_PUBLISHED | ValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIG | The ValidatorOperatorConfig::ValidatorOperatorConfig resource is not published under operator_account. | | 0 | 0 | The human_name field of the ValidatorOperatorConfig::ValidatorOperatorConfig resource under operator_account does not match the provided human_name. | | Errors::REQUIRES_ROLE | Roles::EVALIDATOR | account does not have a Validator account role. | @@ -3621,7 +3621,7 @@ the system is initiated by this script. * Script::set_validator_config_and_reconfigure -
public fun set_validator_operator_with_nonce_admin(lr_account: &signer, account: &signer, sliding_nonce: u64, operator_name: vector<u8>, operator_account: address)
+
public fun set_validator_operator_with_nonce_admin(dr_account: &signer, account: &signer, sliding_nonce: u64, operator_name: vector<u8>, operator_account: address)
 
@@ -3631,13 +3631,13 @@ the system is initiated by this script.
fun set_validator_operator_with_nonce_admin(
-    lr_account: &signer,
+    dr_account: &signer,
     account: &signer,
     sliding_nonce: u64,
     operator_name: vector<u8>,
     operator_account: address
 ) {
-    SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce);
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
     assert(ValidatorOperatorConfig::get_human_name(operator_account) == operator_name, 0);
     ValidatorConfig::set_operator(account, operator_account);
 }
@@ -3656,8 +3656,8 @@ the system is initiated by this script.
 
 
 
let account_addr = Signer::address_of(account);
-include LibraAccount::TransactionChecks{sender: account};
-include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account};
+include DiemAccount::TransactionChecks{sender: account};
+include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account};
 include ValidatorConfig::AbortsIfNoValidatorConfig{addr: account_addr};
 aborts_if ValidatorOperatorConfig::get_human_name(operator_account) != operator_name with 0;
 include ValidatorConfig::SetOperatorAbortsIf{validator_account: account, operator_addr: operator_account};
@@ -3671,14 +3671,14 @@ the system is initiated by this script.
 
 
 **Access Control:**
-Only the Libra Root account can process the admin scripts [[H9]][PERMISSION].
+Only the Diem Root account can process the admin scripts [[H9]][PERMISSION].
 
 
-
requires Roles::has_libra_root_role(lr_account);
+
requires Roles::has_diem_root_role(dr_account);
 
-This is ensured by LibraAccount::writeset_prologue. +This is ensured by DiemAccount::writeset_prologue. Only a Validator account can set its Validator Operator [[H15]][PERMISSION]. @@ -3704,7 +3704,7 @@ Only a Validator account can set its Validator Operator [[H15]][PERMISSION]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 
@@ -3724,7 +3724,7 @@ in the specified currency. ##### Technical Description Moves the specified amount of coins in Token currency from the sending account's -LibraAccount::Balance<Token> to the Libra::Preburn<Token> published under the same +DiemAccount::Balance<Token> to the Diem::Preburn<Token> published under the same account. account must have both of these resources published under it at the start of this transaction in order for it to execute successfully. @@ -3734,10 +3734,10 @@ transaction in order for it to execute successfully. ###### Events Successful execution of this script emits two events: -* LibraAccount::SentPaymentEvent on account's LibraAccount::LibraAccount sent_events +* DiemAccount::SentPaymentEvent on account's DiemAccount::DiemAccount sent_events handle with the payee and payer fields being account's address; and -* A Libra::PreburnEvent with Token's currency code on the -Libra::CurrencyInfo<Token's preburn_events handle for Token and with +* A Diem::PreburnEvent with Token's currency code on the +Diem::CurrencyInfo<Token's preburn_events handle for Token and with preburn_address set to account's address. @@ -3758,12 +3758,12 @@ handle with the payee and payer fields being acc | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The Token is not a registered currency on-chain. | -| Errors::INVALID_STATE | LibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED | The withdrawal capability for account has already been extracted. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Token. | -| Errors::NOT_PUBLISHED | LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY | account doesn't hold a balance in Token. | -| Errors::NOT_PUBLISHED | Libra::EPREBURN | account doesn't have a Libra::Preburn<Token> resource published under it. | -| Errors::INVALID_STATE | Libra::EPREBURN_OCCUPIED | The value field in the Libra::Preburn<Token> resource under the sender is non-zero. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The Token is not a registered currency on-chain. | +| Errors::INVALID_STATE | DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED | The withdrawal capability for account has already been extracted. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EINSUFFICIENT_BALANCE | amount is greater than payer's balance in Token. | +| Errors::NOT_PUBLISHED | DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY | account doesn't hold a balance in Token. | +| Errors::NOT_PUBLISHED | Diem::EPREBURN | account doesn't have a Diem::Preburn<Token> resource published under it. | +| Errors::INVALID_STATE | Diem::EPREBURN_OCCUPIED | The value field in the Diem::Preburn<Token> resource under the sender is non-zero. | | Errors::NOT_PUBLISHED | Roles::EROLE_ID | The account did not have a role assigned to it. | | Errors::REQUIRES_ROLE | Roles::EDESIGNATED_DEALER | The account did not have the role of DesignatedDealer. | @@ -3787,9 +3787,9 @@ handle with the payee and payer fields being acc
fun preburn<Token>(account: &signer, amount: u64) {
-    let withdraw_cap = LibraAccount::extract_withdraw_capability(account);
-    LibraAccount::preburn<Token>(account, &withdraw_cap, amount);
-    LibraAccount::restore_withdraw_capability(withdraw_cap);
+    let withdraw_cap = DiemAccount::extract_withdraw_capability(account);
+    DiemAccount::preburn<Token>(account, &withdraw_cap, amount);
+    DiemAccount::restore_withdraw_capability(withdraw_cap);
 }
 
@@ -3802,14 +3802,14 @@ handle with the payee and payer fields being acc -
include LibraAccount::TransactionChecks{sender: account};
+
include DiemAccount::TransactionChecks{sender: account};
 
 let account_addr = Signer::spec_address_of(account);
 
-let cap = LibraAccount::spec_get_withdraw_cap(account_addr);
-include LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: account_addr};
-include LibraAccount::PreburnAbortsIf<Token>{dd: account, cap: cap};
-include LibraAccount::PreburnEnsures<Token>{dd_addr: account_addr, payer: account_addr};
+let cap = DiemAccount::spec_get_withdraw_cap(account_addr);
+include DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: account_addr};
+include DiemAccount::PreburnAbortsIf<Token>{dd: account, cap: cap};
+include DiemAccount::PreburnEnsures<Token>{dd_addr: account_addr, payer: account_addr};
 aborts_with [check]
     Errors::NOT_PUBLISHED,
     Errors::INVALID_STATE,
@@ -3822,7 +3822,7 @@ handle with the payee and payer fields being acc
 Only the account with a preburn area can preburn [[H4]][PERMISSION].
 
 
-
include Libra::AbortsIfNoPreburn<Token>{preburn_address: account_addr};
+
include Diem::AbortsIfNoPreburn<Token>{preburn_address: account_addr};
 
@@ -3838,7 +3838,7 @@ Only the account with a preburn area can preburn [[H4]][PERMISSION]. -
use 0x1::Libra;
+
use 0x1::Diem;
 use 0x1::SlidingNonce;
 
@@ -3860,14 +3860,14 @@ Dealer, but there are no enforced requirements that it be one. ##### Technical Description This transaction permanently destroys all the coins of Token type -stored in the Libra::Preburn<Token> resource published under the +stored in the Diem::Preburn<Token> resource published under the preburn_address account address. This transaction will only succeed if the sending account has a -Libra::BurnCapability<Token>, and a Libra::Preburn<Token> resource +Diem::BurnCapability<Token>, and a Diem::Preburn<Token> resource exists under preburn_address, with a non-zero to_burn field. After the successful execution of this transaction the total_value field in the -Libra::CurrencyInfo<Token> resource published under 0xA550C18 will be +Diem::CurrencyInfo<Token> resource published under 0xA550C18 will be decremented by the value of the to_burn field of the preburn resource under preburn_address immediately before this transaction, and the to_burn field of the preburn resource will have a zero value. @@ -3877,8 +3877,8 @@ under preburn_address immediately before this transaction, and the ###### Events -The successful execution of this transaction will emit a Libra::BurnEvent on the event handle -held in the Libra::CurrencyInfo<Token> resource's burn_events published under +The successful execution of this transaction will emit a Diem::BurnEvent on the event handle +held in the Diem::CurrencyInfo<Token> resource's burn_events published under 0xA550C18. @@ -3904,10 +3904,10 @@ held in the Li | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_CAPABILITY | Libra::EBURN_CAPABILITY | The sending account does not have a Libra::BurnCapability<Token> published under it. | -| Errors::NOT_PUBLISHED | Libra::EPREBURN | The account at preburn_address does not have a Libra::Preburn<Token> resource published under it. | -| Errors::INVALID_STATE | Libra::EPREBURN_EMPTY | The Libra::Preburn<Token> resource is empty (has a value of 0). | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The specified Token is not a registered currency on-chain. | +| Errors::REQUIRES_CAPABILITY | Diem::EBURN_CAPABILITY | The sending account does not have a Diem::BurnCapability<Token> published under it. | +| Errors::NOT_PUBLISHED | Diem::EPREBURN | The account at preburn_address does not have a Diem::Preburn<Token> resource published under it. | +| Errors::INVALID_STATE | Diem::EPREBURN_EMPTY | The Diem::Preburn<Token> resource is empty (has a value of 0). | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The specified Token is not a registered currency on-chain. | @@ -3930,7 +3930,7 @@ held in the Li
fun burn<Token>(account: &signer, sliding_nonce: u64, preburn_address: address) {
     SlidingNonce::record_nonce_or_abort(account, sliding_nonce);
-    Libra::burn<Token>(account, preburn_address)
+    Diem::burn<Token>(account, preburn_address)
 }
 
@@ -3943,10 +3943,10 @@ held in the Li -
include LibraAccount::TransactionChecks{sender: account};
+
include DiemAccount::TransactionChecks{sender: account};
 include SlidingNonce::RecordNonceAbortsIf{ seq_nonce: sliding_nonce };
-include Libra::BurnAbortsIf<Token>;
-include Libra::BurnEnsures<Token>;
+include Diem::BurnAbortsIf<Token>;
+include Diem::BurnEnsures<Token>;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::REQUIRES_CAPABILITY,
@@ -3960,7 +3960,7 @@ held in the Li
 Only the account with the burn capability can burn coins [[H3]][PERMISSION].
 
 
-
include Libra::AbortsIfNoBurnCapability<Token>{account: account};
+
include Diem::AbortsIfNoBurnCapability<Token>{account: account};
 
@@ -3976,7 +3976,7 @@ Only the account with the burn capability can burn coins [[H3]][PERMISSION]. -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 
@@ -3994,13 +3994,13 @@ Can only be successfully sent by an account with Treasury Compliance role. ##### Technical Description -Cancels and returns all coins held in the Libra::Preburn<Token> resource under the preburn_address and -return the funds to the preburn_address account's LibraAccount::Balance<Token>. -The transaction must be sent by an account with a Libra::BurnCapability<Token> +Cancels and returns all coins held in the Diem::Preburn<Token> resource under the preburn_address and +return the funds to the preburn_address account's DiemAccount::Balance<Token>. +The transaction must be sent by an account with a Diem::BurnCapability<Token> resource published under it. The account at preburn_address must have a -Libra::Preburn<Token> resource published under it, and its value must be nonzero. The transaction removes -the entire balance held in the Libra::Preburn<Token> resource, and returns it back to the account's -LibraAccount::Balance<Token> under preburn_address. Due to this, the account at +Diem::Preburn<Token> resource published under it, and its value must be nonzero. The transaction removes +the entire balance held in the Diem::Preburn<Token> resource, and returns it back to the account's +DiemAccount::Balance<Token> under preburn_address. Due to this, the account at preburn_address must already have a balance in the Token currency published before this script is called otherwise the transaction will fail. @@ -4010,10 +4010,10 @@ before this script is called otherwise the transaction will fail. ###### Events The successful execution of this transaction will emit: -* A Libra::CancelBurnEvent on the event handle held in the Libra::CurrencyInfo<Token> +* A Diem::CancelBurnEvent on the event handle held in the Diem::CurrencyInfo<Token> resource's burn_events published under 0xA550C18. -* A LibraAccount::ReceivedPaymentEvent on the preburn_address's -LibraAccount::LibraAccount received_events event handle with both the payer and payee +* A DiemAccount::ReceivedPaymentEvent on the preburn_address's +DiemAccount::DiemAccount received_events event handle with both the payer and payee being preburn_address. @@ -4034,12 +4034,12 @@ being preburn_address. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::REQUIRES_CAPABILITY | Libra::EBURN_CAPABILITY | The sending account does not have a Libra::BurnCapability<Token> published under it. | -| Errors::NOT_PUBLISHED | Libra::EPREBURN | The account at preburn_address does not have a Libra::Preburn<Token> resource published under it. | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | The specified Token is not a registered currency on-chain. | -| Errors::INVALID_ARGUMENT | LibraAccount::ECOIN_DEPOSIT_IS_ZERO | The value held in the preburn resource was zero. | -| Errors::INVALID_ARGUMENT | LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE | The account at preburn_address doesn't have a balance resource for Token. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EDEPOSIT_EXCEEDS_LIMITS | The depositing of the funds held in the prebun area would exceed the account's account limits. | +| Errors::REQUIRES_CAPABILITY | Diem::EBURN_CAPABILITY | The sending account does not have a Diem::BurnCapability<Token> published under it. | +| Errors::NOT_PUBLISHED | Diem::EPREBURN | The account at preburn_address does not have a Diem::Preburn<Token> resource published under it. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The specified Token is not a registered currency on-chain. | +| Errors::INVALID_ARGUMENT | DiemAccount::ECOIN_DEPOSIT_IS_ZERO | The value held in the preburn resource was zero. | +| Errors::INVALID_ARGUMENT | DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE | The account at preburn_address doesn't have a balance resource for Token. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EDEPOSIT_EXCEEDS_LIMITS | The depositing of the funds held in the prebun area would exceed the account's account limits. | | Errors::INVALID_STATE | DualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SET | The account does not have a compliance key set on it but dual attestion checking was performed. | @@ -4062,7 +4062,7 @@ being preburn_address.
fun cancel_burn<Token>(account: &signer, preburn_address: address) {
-    LibraAccount::cancel_burn<Token>(account, preburn_address)
+    DiemAccount::cancel_burn<Token>(account, preburn_address)
 }
 
@@ -4075,19 +4075,19 @@ being preburn_address. -
include LibraAccount::TransactionChecks{sender: account};
-include LibraAccount::CancelBurnAbortsIf<Token>;
+
include DiemAccount::TransactionChecks{sender: account};
+include DiemAccount::CancelBurnAbortsIf<Token>;
 
-let preburn_value_at_addr = global<Libra::Preburn<Token>>(preburn_address).to_burn.value;
+let preburn_value_at_addr = global<Diem::Preburn<Token>>(preburn_address).to_burn.value;
 
 let total_preburn_value =
-    global<Libra::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value;
+    global<Diem::CurrencyInfo<Token>>(CoreAddresses::CURRENCY_INFO_ADDRESS()).preburn_value;
 
-let balance_at_addr = LibraAccount::balance<Token>(preburn_address);
+let balance_at_addr = DiemAccount::balance<Token>(preburn_address);
 
-The value stored at Libra::Preburn under preburn_address should become zero. +The value stored at Diem::Preburn under preburn_address should become zero.
ensures preburn_value_at_addr == 0;
@@ -4118,7 +4118,7 @@ The balance of Token at preburn_address should increas
 Only the account with the burn capability can cancel burning [[H3]][PERMISSION].
 
 
-
include Libra::AbortsIfNoBurnCapability<Token>{account: account};
+
include Diem::AbortsIfNoBurnCapability<Token>{account: account};
 
@@ -4144,7 +4144,7 @@ Only the account with the burn capability can cancel burning [[H3]][PERMISSION]. ##### Summary Burns the transaction fees collected in the CoinType currency so that the -Libra association may reclaim the backing coins off-chain. May only be sent +Diem association may reclaim the backing coins off-chain. May only be sent by the Treasury Compliance account. @@ -4165,8 +4165,8 @@ account address will have a value of 0 after the successful execution of this sc ###### Events -The successful execution of this transaction will emit a Libra::BurnEvent on the event handle -held in the Libra::CurrencyInfo<CoinType> resource's burn_events published under +The successful execution of this transaction will emit a Diem::BurnEvent on the event handle +held in the Diem::CurrencyInfo<CoinType> resource's burn_events published under 0xA550C18. @@ -4188,7 +4188,7 @@ held in the Li | ---------------- | -------------- | ------------- | | Errors::REQUIRES_ADDRESS | CoreAddresses::ETREASURY_COMPLIANCE | The sending account is not the Treasury Compliance account. | | Errors::NOT_PUBLISHED | TransactionFee::ETRANSACTION_FEE | CoinType is not an accepted transaction fee currency. | -| Errors::INVALID_ARGUMENT | Libra::ECOIN | The collected fees in CoinType are zero. | +| Errors::INVALID_ARGUMENT | Diem::ECOIN | The collected fees in CoinType are zero. | @@ -4226,7 +4226,7 @@ held in the Li -
use 0x1::LibraAccount;
+
use 0x1::DiemAccount;
 use 0x1::SlidingNonce;
 
@@ -4259,8 +4259,8 @@ receiver an authorized Designated Dealer account. ###### Events Successful execution of the transaction will emit two events: -* A Libra::MintEvent with the amount and currency code minted is emitted on the -mint_event_handle in the stored Libra::CurrencyInfo<CoinType> resource stored under +* A Diem::MintEvent with the amount and currency code minted is emitted on the +mint_event_handle in the stored Diem::CurrencyInfo<CoinType> resource stored under 0xA550C18; and * A DesignatedDealer::ReceivedMintEvent with the amount, currency code, and Designated Dealer's address is emitted on the mint_event_handle in the stored DesignatedDealer::Dealer @@ -4297,9 +4297,9 @@ resource published under the designated_dealer_address. | Errors::NOT_PUBLISHED | DesignatedDealer::EDEALER | DesignatedDealer::Dealer or DesignatedDealer::TierInfo<CoinType> resource does not exist at designated_dealer_address. | | Errors::INVALID_ARGUMENT | DesignatedDealer::EINVALID_TIER_INDEX | The tier_index is out of bounds. | | Errors::INVALID_ARGUMENT | DesignatedDealer::EINVALID_AMOUNT_FOR_TIER | mint_amount exceeds the maximum allowed amount for tier_index. | -| Errors::REQUIRES_CAPABILITY | Libra::EMINT_CAPABILITY | tc_account does not have a Libra::MintCapability<CoinType> resource published under it. | -| Errors::INVALID_STATE | Libra::EMINTING_NOT_ALLOWED | Minting is not currently allowed for CoinType coins. | -| Errors::LIMIT_EXCEEDED | LibraAccount::EDEPOSIT_EXCEEDS_LIMITS | The depositing of the funds would exceed the account's account limits. | +| Errors::REQUIRES_CAPABILITY | Diem::EMINT_CAPABILITY | tc_account does not have a Diem::MintCapability<CoinType> resource published under it. | +| Errors::INVALID_STATE | Diem::EMINTING_NOT_ALLOWED | Minting is not currently allowed for CoinType coins. | +| Errors::LIMIT_EXCEEDED | DiemAccount::EDEPOSIT_EXCEEDS_LIMITS | The depositing of the funds would exceed the account's account limits. | @@ -4328,7 +4328,7 @@ resource published under the designated_dealer_address. tier_index: u64 ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::tiered_mint<CoinType>( + DiemAccount::tiered_mint<CoinType>( tc_account, designated_dealer_address, mint_amount, tier_index ); } @@ -4343,10 +4343,10 @@ resource published under the designated_dealer_address. -
include LibraAccount::TransactionChecks{sender: tc_account};
+
include DiemAccount::TransactionChecks{sender: tc_account};
 include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce};
-include LibraAccount::TieredMintAbortsIf<CoinType>;
-include LibraAccount::TieredMintEnsures<CoinType>;
+include DiemAccount::TieredMintAbortsIf<CoinType>;
+include DiemAccount::TieredMintEnsures<CoinType>;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::REQUIRES_ADDRESS,
@@ -4390,7 +4390,7 @@ Only the Treasury Compliance account can mint [[H1]][PERMISSION].
 
 Freezes the account at address. The sending account of this transaction
 must be the Treasury Compliance account. The account being frozen cannot be
-the Libra Root or Treasury Compliance account. After the successful
+the Diem Root or Treasury Compliance account. After the successful
 execution of this transaction no transactions may be sent from the frozen
 account, and the frozen account may not send or receive coins.
 
@@ -4402,7 +4402,7 @@ account, and the frozen account may not send or receive coins.
 Sets the AccountFreezing::FreezingBit to true and emits a
 AccountFreezing::FreezeAccountEvent. The transaction sender must be the
 Treasury Compliance account, but the account at to_freeze_account must
-not be either 0xA550C18 (the Libra Root address), or 0xB1E55ED (the
+not be either 0xA550C18 (the Diem Root address), or 0xB1E55ED (the
 Treasury Compliance address). Note that this is a per-account property
 e.g., freezing a Parent VASP will not effect the status any of its child
 accounts and vice versa.
@@ -4442,7 +4442,7 @@ under 0xA550C18 with the frozen_address being the Errors::REQUIRES_ADDRESS | CoreAddresses::ETREASURY_COMPLIANCE        | The sending account is not the Treasury Compliance account.                                |
 | Errors::REQUIRES_ROLE    | Roles::ETREASURY_COMPLIANCE                | The sending account is not the Treasury Compliance account.                                |
 | Errors::INVALID_ARGUMENT | AccountFreezing::ECANNOT_FREEZE_TC         | to_freeze_account was the Treasury Compliance account (0xB1E55ED).                     |
-| Errors::INVALID_ARGUMENT | AccountFreezing::ECANNOT_FREEZE_LIBRA_ROOT | to_freeze_account was the Libra Root account (0xA550C18).                              |
+| Errors::INVALID_ARGUMENT | AccountFreezing::ECANNOT_FREEZE_DIEM_ROOT | to_freeze_account was the Diem Root account (0xA550C18).                              |
 
 
 
@@ -4582,7 +4582,7 @@ the unfrozen_address set the to_unfreeze_account's add
 
 ##### Summary
 
-Update the dual attestation limit on-chain. Defined in terms of micro-LBR.  The transaction can
+Update the dual attestation limit on-chain. Defined in terms of micro-XDX.  The transaction can
 only be sent by the Treasury Compliance account.  After this transaction all inter-VASP
 payments over this limit must be checked for dual attestation.
 
@@ -4591,8 +4591,8 @@ payments over this limit must be checked for dual attestation.
 
 ##### Technical Description
 
-Updates the micro_lbr_limit field of the DualAttestation::Limit resource published under
-0xA550C18. The amount is set in micro-LBR.
+Updates the micro_xdx_limit field of the DualAttestation::Limit resource published under
+0xA550C18. The amount is set in micro-XDX.
 
 
 
@@ -4603,7 +4603,7 @@ Updates the micro_lbr_limit field of the SlidingNonce) to be used for this transaction.                                |
-| new_micro_lbr_limit | u64     | The new dual attestation limit to be used on-chain.                                                       |
+| new_micro_xdx_limit | u64     | The new dual attestation limit to be used on-chain.                                                       |
 
 
 
@@ -4627,7 +4627,7 @@ Updates the micro_lbr_limit field of the Script::update_minting_ability
 
 
-
public fun update_dual_attestation_limit(tc_account: &signer, sliding_nonce: u64, new_micro_lbr_limit: u64)
+
public fun update_dual_attestation_limit(tc_account: &signer, sliding_nonce: u64, new_micro_xdx_limit: u64)
 
@@ -4639,10 +4639,10 @@ Updates the micro_lbr_limit field of the update_dual_attestation_limit( tc_account: &signer, sliding_nonce: u64, - new_micro_lbr_limit: u64 + new_micro_xdx_limit: u64 ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - DualAttestation::set_microlibra_limit(tc_account, new_micro_lbr_limit); + DualAttestation::set_microdiem_limit(tc_account, new_micro_xdx_limit); }
@@ -4659,8 +4659,8 @@ Updates the micro_lbr_limit field of the 0x1::FixedPoint32; -use 0x1::Libra; +
use 0x1::Diem;
+use 0x1::FixedPoint32;
 use 0x1::SlidingNonce;
 
@@ -4670,8 +4670,8 @@ Updates the micro_lbr_limit field of the SlidingNonce) to be used for the transaction. | -| new_exchange_rate_numerator | u64 | The numerator for the new to micro-LBR exchange rate for Currency. | -| new_exchange_rate_denominator | u64 | The denominator for the new to micro-LBR exchange rate for Currency. | +| new_exchange_rate_numerator | u64 | The numerator for the new to micro-XDX exchange rate for Currency. | +| new_exchange_rate_denominator | u64 | The denominator for the new to micro-XDX exchange rate for Currency. | @@ -4742,7 +4742,7 @@ is given by new_exchange_rate_numerator/new_exchange_rate_denominatorLibra::update_lbr_exchange_rate<Currency>(tc_account, rate); + Diem::update_xdx_exchange_rate<Currency>(tc_account, rate); }
@@ -4755,7 +4755,7 @@ is given by new_exchange_rate_numerator/new_exchange_rate_denominatorinclude LibraAccount::TransactionChecks{sender: tc_account}; +
include DiemAccount::TransactionChecks{sender: tc_account};
 include SlidingNonce::RecordNonceAbortsIf{ account: tc_account, seq_nonce: sliding_nonce };
 include FixedPoint32::CreateFromRationalAbortsIf{
     numerator: new_exchange_rate_numerator,
@@ -4766,7 +4766,7 @@ is given by new_exchange_rate_numerator/new_exchange_rate_denominatorinclude Libra::UpdateLBRExchangeRateAbortsIf<Currency>;
+include Diem::UpdateXDXExchangeRateAbortsIf<Currency>;
 aborts_with [check]
     Errors::INVALID_ARGUMENT,
     Errors::REQUIRES_ADDRESS,
@@ -4796,7 +4796,7 @@ Only the Treasury Compliance account can update the exchange rate [[H5]][PERMISS
 
 
 
-
use 0x1::Libra;
+
use 0x1::Diem;
 
@@ -4814,7 +4814,7 @@ no effect on coins already in circulation, and coins may still be removed from t ##### Technical Description -This transaction sets the can_mint field of the Libra::CurrencyInfo<Currency> resource +This transaction sets the can_mint field of the Diem::CurrencyInfo<Currency> resource published under 0xA550C18 to the value of allow_minting. Minting of coins if allowed if this field is set to true and minting of new coins in Currency is disallowed otherwise. This transaction needs to be sent by the Treasury Compliance account. @@ -4827,7 +4827,7 @@ This transaction needs to be sent by the Treasury Compliance account. | Name | Type | Description | | ------ | ------ | ------------- | | Currency | Type | The Move type for the Currency whose minting ability is being updated. Currency must be an already-registered currency on-chain. | -| account | &signer | Signer reference of the sending account. Must be the Libra Root account. | +| account | &signer | Signer reference of the sending account. Must be the Diem Root account. | | allow_minting | bool | Whether to allow minting of new coins in Currency. | @@ -4838,7 +4838,7 @@ This transaction needs to be sent by the Treasury Compliance account. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | | Errors::REQUIRES_ADDRESS | CoreAddresses::ETREASURY_COMPLIANCE | tc_account is not the Treasury Compliance account. | -| Errors::NOT_PUBLISHED | Libra::ECURRENCY_INFO | Currency is not a registered currency on-chain. | +| Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | Currency is not a registered currency on-chain. | @@ -4862,7 +4862,7 @@ This transaction needs to be sent by the Treasury Compliance account. tc_account: &signer, allow_minting: bool ) { - Libra::update_minting_ability<Currency>(tc_account, allow_minting); + Diem::update_minting_ability<Currency>(tc_account, allow_minting); }
@@ -4879,13 +4879,13 @@ This transaction needs to be sent by the Treasury Compliance account. - + -#### Script `update_libra_version` +#### Script `update_diem_version` -
use 0x1::LibraVersion;
+
use 0x1::DiemVersion;
 use 0x1::SlidingNonce;
 
@@ -4895,15 +4895,15 @@ This transaction needs to be sent by the Treasury Compliance account. ##### Summary -Updates the Libra major version that is stored on-chain and is used by the VM. This -transaction can only be sent from the Libra Root account. +Updates the Diem major version that is stored on-chain and is used by the VM. This +transaction can only be sent from the Diem Root account. ##### Technical Description -Updates the LibraVersion on-chain config and emits a LibraConfig::NewEpochEvent to trigger +Updates the DiemVersion on-chain config and emits a DiemConfig::NewEpochEvent to trigger a reconfiguration of the system. The major version that is passed in must be strictly greater than the current major version held on-chain. The VM reads this information and can use it to preserve backwards compatibility with previous major versions of the VM. @@ -4915,7 +4915,7 @@ preserve backwards compatibility with previous major versions of the VM. | Name | Type | Description | | ------ | ------ | ------------- | -| account | &signer | Signer reference of the sending account. Must be the Libra Root account. | +| account | &signer | Signer reference of the sending account. Must be the Diem Root account. | | sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction. | | major | u64 | The major version of the VM to be used from this transaction on. | @@ -4930,11 +4930,11 @@ preserve backwards compatibility with previous major versions of the VM. | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | account is not the Libra Root account. | -| Errors::INVALID_ARGUMENT | LibraVersion::EINVALID_MAJOR_VERSION_NUMBER | major is less-than or equal to the current major version stored on-chain. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | account is not the Diem Root account. | +| Errors::INVALID_ARGUMENT | DiemVersion::EINVALID_MAJOR_VERSION_NUMBER | major is less-than or equal to the current major version stored on-chain. | -
public fun update_libra_version(account: &signer, sliding_nonce: u64, major: u64)
+
public fun update_diem_version(account: &signer, sliding_nonce: u64, major: u64)
 
@@ -4943,9 +4943,9 @@ preserve backwards compatibility with previous major versions of the VM. Implementation -
fun update_libra_version(account: &signer, sliding_nonce: u64, major: u64) {
+
fun update_diem_version(account: &signer, sliding_nonce: u64, major: u64) {
     SlidingNonce::record_nonce_or_abort(account, sliding_nonce);
-    LibraVersion::set(account, major)
+    DiemVersion::set(account, major)
 }
 
@@ -4962,7 +4962,7 @@ preserve backwards compatibility with previous major versions of the VM. -
use 0x1::LibraTransactionPublishingOption;
+
use 0x1::DiemTransactionPublishingOption;
 use 0x1::SlidingNonce;
 
@@ -4973,7 +4973,7 @@ preserve backwards compatibility with previous major versions of the VM. ##### Summary Adds a script hash to the transaction allowlist. This transaction -can only be sent by the Libra Root account. Scripts with this hash can be +can only be sent by the Diem Root account. Scripts with this hash can be sent afterward the successful execution of this script. @@ -4982,11 +4982,11 @@ sent afterward the successful execution of this script. ##### Technical Description -The sending account (lr_account) must be the Libra Root account. The script allow +The sending account (dr_account) must be the Diem Root account. The script allow list must not already hold the script hash being added. The sliding_nonce must be -a valid nonce for the Libra Root account. After this transaction has executed +a valid nonce for the Diem Root account. After this transaction has executed successfully a reconfiguration will be initiated, and the on-chain config -LibraTransactionPublishingOption::LibraTransactionPublishingOption's +DiemTransactionPublishingOption::DiemTransactionPublishingOption's script_allow_list field will contain the new script hash and transactions with this hash can be successfully sent to the network. @@ -4997,7 +4997,7 @@ with this hash can be successfully sent to the network. | Name | Type | Description | | ------ | ------ | ------------- | -| lr_account | &signer | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +| dr_account | &signer | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | | hash | vector<u8> | The hash of the script to be added to the script allowlist. | | sliding_nonce | u64 | The sliding_nonce (see: SlidingNonce) to be used for this transaction. | @@ -5008,17 +5008,17 @@ with this hash can be successfully sent to the network. | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under lr_account. | +| Errors::NOT_PUBLISHED | SlidingNonce::ESLIDING_NONCE | A SlidingNonce resource is not published under dr_account. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_OLD | The sliding_nonce is too old and it's impossible to determine if it's duplicated or not. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_TOO_NEW | The sliding_nonce is too far in the future. | | Errors::INVALID_ARGUMENT | SlidingNonce::ENONCE_ALREADY_RECORDED | The sliding_nonce has been previously recorded. | -| Errors::REQUIRES_ADDRESS | CoreAddresses::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::REQUIRES_ROLE | Roles::ELIBRA_ROOT | The sending account is not the Libra Root account. | -| Errors::INVALID_ARGUMENT | LibraTransactionPublishingOption::EINVALID_SCRIPT_HASH | The script hash is an invalid length. | -| Errors::INVALID_ARGUMENT | LibraTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT | The on-chain allowlist already contains the script hash. | +| Errors::REQUIRES_ADDRESS | CoreAddresses::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::REQUIRES_ROLE | Roles::EDIEM_ROOT | The sending account is not the Diem Root account. | +| Errors::INVALID_ARGUMENT | DiemTransactionPublishingOption::EINVALID_SCRIPT_HASH | The script hash is an invalid length. | +| Errors::INVALID_ARGUMENT | DiemTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT | The on-chain allowlist already contains the script hash. | -
public fun add_to_script_allow_list(lr_account: &signer, hash: vector<u8>, sliding_nonce: u64)
+
public fun add_to_script_allow_list(dr_account: &signer, hash: vector<u8>, sliding_nonce: u64)
 
@@ -5027,9 +5027,9 @@ with this hash can be successfully sent to the network. Implementation -
fun add_to_script_allow_list(lr_account: &signer, hash: vector<u8>, sliding_nonce: u64,) {
-    SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce);
-    LibraTransactionPublishingOption::add_to_script_allow_list(lr_account, hash)
+
fun add_to_script_allow_list(dr_account: &signer, hash: vector<u8>, sliding_nonce: u64,) {
+    SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce);
+    DiemTransactionPublishingOption::add_to_script_allow_list(dr_account, hash)
 }
 
@@ -5048,23 +5048,21 @@ with this hash can be successfully sent to the network. - [`0x1::AccountLimits`](../../modules/doc/AccountLimits.md#0x1_AccountLimits) - [`0x1::Authenticator`](../../modules/doc/Authenticator.md#0x1_Authenticator) - [`0x1::ChainId`](../../modules/doc/ChainId.md#0x1_ChainId) -- [`0x1::Coin1`](../../modules/doc/Coin1.md#0x1_Coin1) - [`0x1::CoreAddresses`](../../modules/doc/CoreAddresses.md#0x1_CoreAddresses) - [`0x1::DesignatedDealer`](../../modules/doc/DesignatedDealer.md#0x1_DesignatedDealer) +- [`0x1::Diem`](../../modules/doc/Diem.md#0x1_Diem) +- [`0x1::DiemAccount`](../../modules/doc/DiemAccount.md#0x1_DiemAccount) +- [`0x1::DiemConfig`](../../modules/doc/DiemConfig.md#0x1_DiemConfig) +- [`0x1::DiemSystem`](../../modules/doc/DiemSystem.md#0x1_DiemSystem) +- [`0x1::DiemTimestamp`](../../modules/doc/DiemTimestamp.md#0x1_DiemTimestamp) +- [`0x1::DiemTransactionPublishingOption`](../../modules/doc/DiemTransactionPublishingOption.md#0x1_DiemTransactionPublishingOption) +- [`0x1::DiemVersion`](../../modules/doc/DiemVersion.md#0x1_DiemVersion) - [`0x1::DualAttestation`](../../modules/doc/DualAttestation.md#0x1_DualAttestation) - [`0x1::Errors`](../../modules/doc/Errors.md#0x1_Errors) - [`0x1::Event`](../../modules/doc/Event.md#0x1_Event) - [`0x1::FixedPoint32`](../../modules/doc/FixedPoint32.md#0x1_FixedPoint32) - [`0x1::Hash`](../../modules/doc/Hash.md#0x1_Hash) -- [`0x1::LBR`](../../modules/doc/LBR.md#0x1_LBR) - [`0x1::LCS`](../../modules/doc/LCS.md#0x1_LCS) -- [`0x1::Libra`](../../modules/doc/Libra.md#0x1_Libra) -- [`0x1::LibraAccount`](../../modules/doc/LibraAccount.md#0x1_LibraAccount) -- [`0x1::LibraConfig`](../../modules/doc/LibraConfig.md#0x1_LibraConfig) -- [`0x1::LibraSystem`](../../modules/doc/LibraSystem.md#0x1_LibraSystem) -- [`0x1::LibraTimestamp`](../../modules/doc/LibraTimestamp.md#0x1_LibraTimestamp) -- [`0x1::LibraTransactionPublishingOption`](../../modules/doc/LibraTransactionPublishingOption.md#0x1_LibraTransactionPublishingOption) -- [`0x1::LibraVersion`](../../modules/doc/LibraVersion.md#0x1_LibraVersion) - [`0x1::Option`](../../modules/doc/Option.md#0x1_Option) - [`0x1::RecoveryAddress`](../../modules/doc/RecoveryAddress.md#0x1_RecoveryAddress) - [`0x1::RegisteredCurrencies`](../../modules/doc/RegisteredCurrencies.md#0x1_RegisteredCurrencies) @@ -5078,6 +5076,8 @@ with this hash can be successfully sent to the network. - [`0x1::ValidatorConfig`](../../modules/doc/ValidatorConfig.md#0x1_ValidatorConfig) - [`0x1::ValidatorOperatorConfig`](../../modules/doc/ValidatorOperatorConfig.md#0x1_ValidatorOperatorConfig) - [`0x1::Vector`](../../modules/doc/Vector.md#0x1_Vector) +- [`0x1::XDX`](../../modules/doc/XDX.md#0x1_XDX) +- [`0x1::XUS`](../../modules/doc/XUS.md#0x1_XUS) - [`add_currency_to_account`](transaction_script_documentation.md#add_currency_to_account) - [`add_recovery_rotation_capability`](transaction_script_documentation.md#add_recovery_rotation_capability) - [`add_to_script_allow_list`](transaction_script_documentation.md#add_to_script_allow_list) @@ -5108,9 +5108,9 @@ with this hash can be successfully sent to the network. - [`set_validator_operator_with_nonce_admin`](transaction_script_documentation.md#set_validator_operator_with_nonce_admin) - [`tiered_mint`](transaction_script_documentation.md#tiered_mint) - [`unfreeze_account`](transaction_script_documentation.md#unfreeze_account) +- [`update_diem_version`](transaction_script_documentation.md#update_diem_version) - [`update_dual_attestation_limit`](transaction_script_documentation.md#update_dual_attestation_limit) - [`update_exchange_rate`](transaction_script_documentation.md#update_exchange_rate) -- [`update_libra_version`](transaction_script_documentation.md#update_libra_version) - [`update_minting_ability`](transaction_script_documentation.md#update_minting_ability) diff --git a/language/stdlib/transaction_scripts/freeze_account.move b/language/stdlib/transaction_scripts/freeze_account.move index 4fe46680e9..9f2d1203ea 100644 --- a/language/stdlib/transaction_scripts/freeze_account.move +++ b/language/stdlib/transaction_scripts/freeze_account.move @@ -5,7 +5,7 @@ use 0x1::SlidingNonce; /// # Summary /// Freezes the account at `address`. The sending account of this transaction /// must be the Treasury Compliance account. The account being frozen cannot be -/// the Libra Root or Treasury Compliance account. After the successful +/// the Diem Root or Treasury Compliance account. After the successful /// execution of this transaction no transactions may be sent from the frozen /// account, and the frozen account may not send or receive coins. /// @@ -13,7 +13,7 @@ use 0x1::SlidingNonce; /// Sets the `AccountFreezing::FreezingBit` to `true` and emits a /// `AccountFreezing::FreezeAccountEvent`. The transaction sender must be the /// Treasury Compliance account, but the account at `to_freeze_account` must -/// not be either `0xA550C18` (the Libra Root address), or `0xB1E55ED` (the +/// not be either `0xA550C18` (the Diem Root address), or `0xB1E55ED` (the /// Treasury Compliance address). Note that this is a per-account property /// e.g., freezing a Parent VASP will not effect the status any of its child /// accounts and vice versa. @@ -41,7 +41,7 @@ use 0x1::SlidingNonce; /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | /// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_TC` | `to_freeze_account` was the Treasury Compliance account (`0xB1E55ED`). | -/// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_LIBRA_ROOT` | `to_freeze_account` was the Libra Root account (`0xA550C18`). | +/// | `Errors::INVALID_ARGUMENT` | `AccountFreezing::ECANNOT_FREEZE_DIEM_ROOT` | `to_freeze_account` was the Diem Root account (`0xA550C18`). | /// /// # Related Scripts /// * `Script::unfreeze_account` diff --git a/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move b/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move index 17382bffaa..a09e5b3dcb 100644 --- a/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move +++ b/language/stdlib/transaction_scripts/peer_to_peer_with_metadata.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Transfers a given number of coins in a specified currency from one account to another. @@ -15,15 +15,15 @@ use 0x1::LibraAccount; /// `metadata` and an (optional) `metadata_signature` on the message /// `metadata` | `Signer::address_of(payer)` | `amount` | `DualAttestation::DOMAIN_SEPARATOR`. /// The `metadata` and `metadata_signature` parameters are only required if `amount` >= -/// `DualAttestation::get_cur_microlibra_limit` LBR and `payer` and `payee` are distinct VASPs. +/// `DualAttestation::get_cur_microdiem_limit` XDX and `payer` and `payee` are distinct VASPs. /// However, a transaction sender can opt in to dual attestation even when it is not required /// (e.g., a DesignatedDealer -> VASP payment) by providing a non-empty `metadata_signature`. -/// Standardized `metadata` LCS format can be found in `libra_types::transaction::metadata::Metadata`. +/// Standardized `metadata` LCS format can be found in `diem_types::transaction::metadata::Metadata`. /// /// ## Events /// Successful execution of this script emits two events: -/// * A `LibraAccount::SentPaymentEvent` on `payer`'s `LibraAccount::LibraAccount` `sent_events` handle; and -/// * A `LibraAccount::ReceivedPaymentEvent` on `payee`'s `LibraAccount::LibraAccount` `received_events` handle. +/// * A `DiemAccount::SentPaymentEvent` on `payer`'s `DiemAccount::DiemAccount` `sent_events` handle; and +/// * A `DiemAccount::ReceivedPaymentEvent` on `payee`'s `DiemAccount::DiemAccount` `received_events` handle. /// /// # Parameters /// | Name | Type | Description | @@ -37,16 +37,16 @@ use 0x1::LibraAccount; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | -/// | `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | `amount` is zero. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYEE_DOES_NOT_EXIST` | No account exists at the `payee` address. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | An account exists at `payee`, but it does not accept payments in `Currency`. | /// | `Errors::INVALID_STATE` | `AccountFreezing::EACCOUNT_FROZEN` | The `payee` account is frozen. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EMALFORMED_METADATA_SIGNATURE` | `metadata_signature` is not 64 bytes. | /// | `Errors::INVALID_ARGUMENT` | `DualAttestation::EINVALID_METADATA_SIGNATURE` | `metadata_signature` does not verify on the against the `payee'`s `DualAttestation::Credential` `compliance_public_key` public key. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of LBR. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for LBR. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EWITHDRAWAL_EXCEEDS_LIMITS` | `payer` has exceeded its daily withdrawal limits for the backing coins of XDX. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | `payee` has exceeded its daily deposit limits for XDX. | /// /// # Related Scripts /// * `Script::create_child_vasp_account` @@ -60,32 +60,32 @@ fun peer_to_peer_with_metadata( metadata: vector, metadata_signature: vector ) { - let payer_withdrawal_cap = LibraAccount::extract_withdraw_capability(payer); - LibraAccount::pay_from( + let payer_withdrawal_cap = DiemAccount::extract_withdraw_capability(payer); + DiemAccount::pay_from( &payer_withdrawal_cap, payee, amount, metadata, metadata_signature ); - LibraAccount::restore_withdraw_capability(payer_withdrawal_cap); + DiemAccount::restore_withdraw_capability(payer_withdrawal_cap); } spec fun peer_to_peer_with_metadata { use 0x1::Signer; use 0x1::Errors; - include LibraAccount::TransactionChecks{sender: payer}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: payer}; // properties checked by the prologue. let payer_addr = Signer::spec_address_of(payer); - let cap = LibraAccount::spec_get_withdraw_cap(payer_addr); - include LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: payer_addr}; - include LibraAccount::PayFromAbortsIf{cap: cap}; + let cap = DiemAccount::spec_get_withdraw_cap(payer_addr); + include DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: payer_addr}; + include DiemAccount::PayFromAbortsIf{cap: cap}; /// The balances of payer and payee change by the correct amount. ensures payer_addr != payee - ==> LibraAccount::balance(payer_addr) - == old(LibraAccount::balance(payer_addr)) - amount; + ==> DiemAccount::balance(payer_addr) + == old(DiemAccount::balance(payer_addr)) - amount; ensures payer_addr != payee - ==> LibraAccount::balance(payee) - == old(LibraAccount::balance(payee)) + amount; + ==> DiemAccount::balance(payee) + == old(DiemAccount::balance(payee)) + amount; ensures payer_addr == payee - ==> LibraAccount::balance(payee) - == old(LibraAccount::balance(payee)); + ==> DiemAccount::balance(payee) + == old(DiemAccount::balance(payee)); aborts_with [check] Errors::NOT_PUBLISHED, @@ -96,7 +96,7 @@ spec fun peer_to_peer_with_metadata { /// **Access Control:** /// Both the payer and the payee must hold the balances of the Currency. Only Designated Dealers, /// Parent VASPs, and Child VASPs can hold balances [[D1]][ROLE][[D2]][ROLE][[D3]][ROLE][[D4]][ROLE][[D5]][ROLE][[D6]][ROLE][[D7]][ROLE]. - aborts_if !exists>(payer_addr) with Errors::NOT_PUBLISHED; - aborts_if !exists>(payee) with Errors::INVALID_ARGUMENT; + aborts_if !exists>(payer_addr) with Errors::NOT_PUBLISHED; + aborts_if !exists>(payee) with Errors::INVALID_ARGUMENT; } } diff --git a/language/stdlib/transaction_scripts/preburn.move b/language/stdlib/transaction_scripts/preburn.move index b1f2b8f0b7..f33741911d 100644 --- a/language/stdlib/transaction_scripts/preburn.move +++ b/language/stdlib/transaction_scripts/preburn.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Moves a specified number of coins in a given currency from the account's @@ -9,16 +9,16 @@ use 0x1::LibraAccount; /// /// # Technical Description /// Moves the specified `amount` of coins in `Token` currency from the sending `account`'s -/// `LibraAccount::Balance` to the `Libra::Preburn` published under the same +/// `DiemAccount::Balance` to the `Diem::Preburn` published under the same /// `account`. `account` must have both of these resources published under it at the start of this /// transaction in order for it to execute successfully. /// /// ## Events /// Successful execution of this script emits two events: -/// * `LibraAccount::SentPaymentEvent ` on `account`'s `LibraAccount::LibraAccount` `sent_events` +/// * `DiemAccount::SentPaymentEvent ` on `account`'s `DiemAccount::DiemAccount` `sent_events` /// handle with the `payee` and `payer` fields being `account`'s address; and -/// * A `Libra::PreburnEvent` with `Token`'s currency code on the -/// `Libra::CurrencyInfo` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EPREBURN_OCCUPIED` | The `value` field in the `Libra::Preburn` resource under the sender is non-zero. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Token` is not a registered currency on-chain. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for `account` has already been extracted. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Token`. | +/// | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `account` doesn't hold a balance in `Token`. | +/// | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | `account` doesn't have a `Diem::Preburn` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EPREBURN_OCCUPIED` | The `value` field in the `Diem::Preburn` resource under the sender is non-zero. | /// | `Errors::NOT_PUBLISHED` | `Roles::EROLE_ID` | The `account` did not have a role assigned to it. | /// | `Errors::REQUIRES_ROLE` | `Roles::EDESIGNATED_DEALER` | The `account` did not have the role of DesignatedDealer. | /// @@ -46,22 +46,22 @@ use 0x1::LibraAccount; /// * `Script::burn_txn_fees` fun preburn(account: &signer, amount: u64) { - let withdraw_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::preburn(account, &withdraw_cap, amount); - LibraAccount::restore_withdraw_capability(withdraw_cap); + let withdraw_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::preburn(account, &withdraw_cap, amount); + DiemAccount::restore_withdraw_capability(withdraw_cap); } spec fun preburn { use 0x1::Errors; use 0x1::Signer; - use 0x1::Libra; + use 0x1::Diem; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. let account_addr = Signer::spec_address_of(account); - let cap = LibraAccount::spec_get_withdraw_cap(account_addr); - include LibraAccount::ExtractWithdrawCapAbortsIf{sender_addr: account_addr}; - include LibraAccount::PreburnAbortsIf{dd: account, cap: cap}; - include LibraAccount::PreburnEnsures{dd_addr: account_addr, payer: account_addr}; + let cap = DiemAccount::spec_get_withdraw_cap(account_addr); + include DiemAccount::ExtractWithdrawCapAbortsIf{sender_addr: account_addr}; + include DiemAccount::PreburnAbortsIf{dd: account, cap: cap}; + include DiemAccount::PreburnEnsures{dd_addr: account_addr, payer: account_addr}; aborts_with [check] Errors::NOT_PUBLISHED, @@ -71,6 +71,6 @@ spec fun preburn { /// **Access Control:** /// Only the account with a preburn area can preburn [[H4]][PERMISSION]. - include Libra::AbortsIfNoPreburn{preburn_address: account_addr}; + include Diem::AbortsIfNoPreburn{preburn_address: account_addr}; } } diff --git a/language/stdlib/transaction_scripts/publish_shared_ed25519_public_key.move b/language/stdlib/transaction_scripts/publish_shared_ed25519_public_key.move index c0872c4f33..163e9d156b 100644 --- a/language/stdlib/transaction_scripts/publish_shared_ed25519_public_key.move +++ b/language/stdlib/transaction_scripts/publish_shared_ed25519_public_key.move @@ -9,7 +9,7 @@ use 0x1::SharedEd25519PublicKey; /// # Technical Description /// Rotates the authentication key of the sending account to `public_key`, /// and publishes a `SharedEd25519PublicKey::SharedEd25519PublicKey` resource -/// containing the 32-byte ed25519 `public_key` and the `LibraAccount::KeyRotationCapability` for +/// containing the 32-byte ed25519 `public_key` and the `DiemAccount::KeyRotationCapability` for /// `account` under `account`. /// /// # Parameters @@ -21,7 +21,7 @@ use 0x1::SharedEd25519PublicKey; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability` resource. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability` resource. | /// | `Errors::ALREADY_PUBLISHED` | `SharedEd25519PublicKey::ESHARED_KEY` | The `SharedEd25519PublicKey::SharedEd25519PublicKey` resource is already published under `account`. | /// | `Errors::INVALID_ARGUMENT` | `SharedEd25519PublicKey::EMALFORMED_PUBLIC_KEY` | `public_key` is an invalid ed25519 public key. | /// @@ -33,9 +33,9 @@ fun publish_shared_ed25519_public_key(account: &signer, public_key: vector) } spec fun publish_shared_ed25519_public_key { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. include SharedEd25519PublicKey::PublishAbortsIf{key: public_key}; include SharedEd25519PublicKey::PublishEnsures{key: public_key}; diff --git a/language/stdlib/transaction_scripts/register_validator_config.move b/language/stdlib/transaction_scripts/register_validator_config.move index 28a113a0ba..de66182cb4 100644 --- a/language/stdlib/transaction_scripts/register_validator_config.move +++ b/language/stdlib/transaction_scripts/register_validator_config.move @@ -9,7 +9,7 @@ use 0x1::ValidatorConfig; /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` -/// config resource held under `validator_account`. It does not emit a `LibraConfig::NewEpochEvent` +/// config resource held under `validator_account`. It does not emit a `DiemConfig::NewEpochEvent` /// so the copy of this config held in the validator set will not be updated, and the changes are /// only "locally" under the `validator_account` account address. /// @@ -59,10 +59,10 @@ fun register_validator_config( /// call this, but there is an aborts_if in SetConfigAbortsIf that tests that directly. spec fun register_validator_config { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; - include LibraAccount::TransactionChecks{sender: validator_operator_account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: validator_operator_account}; // properties checked by the prologue. include ValidatorConfig::SetConfigAbortsIf {validator_addr: validator_account}; ensures ValidatorConfig::is_valid(validator_account); diff --git a/language/stdlib/transaction_scripts/remove_validator_and_reconfigure.move b/language/stdlib/transaction_scripts/remove_validator_and_reconfigure.move index 082df8bbee..73c5ddfec4 100644 --- a/language/stdlib/transaction_scripts/remove_validator_and_reconfigure.move +++ b/language/stdlib/transaction_scripts/remove_validator_and_reconfigure.move @@ -1,16 +1,16 @@ script { -use 0x1::LibraSystem; +use 0x1::DiemSystem; use 0x1::SlidingNonce; use 0x1::ValidatorConfig; /// # Summary /// This script removes a validator account from the validator set, and triggers a reconfiguration /// of the system to remove the validator from the system. This transaction can only be -/// successfully called by the Libra Root account. +/// successfully called by the Diem Root account. /// /// # Technical Description /// This script removes the account at `validator_address` from the validator set. This transaction -/// emits a `LibraConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event +/// emits a `DiemConfig::NewEpochEvent` event. Once the reconfiguration triggered by this event /// has been performed, the account at `validator_address` is no longer considered to be a /// validator in the network. This transaction will fail if the validator at `validator_address` /// is not in the validator set. @@ -18,7 +18,7 @@ use 0x1::ValidatorConfig; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `validator_name` | `vector` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | /// | `validator_address` | `address` | The validator account address to be removed from the validator set. | @@ -26,16 +26,16 @@ use 0x1::ValidatorConfig; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | -/// | `Errors::INVALID_ARGUMENT` | `LibraSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::REQUIRES_ROLE` | `Roles::ELIBRA_ROOT` | The sending account is not the Libra Root account. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_ARGUMENT` | `DiemSystem::ENOT_AN_ACTIVE_VALIDATOR` | The validator to be removed is not in the validator set. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -47,35 +47,35 @@ use 0x1::ValidatorConfig; /// * `Script::set_validator_config_and_reconfigure` fun remove_validator_and_reconfigure( - lr_account: &signer, + dr_account: &signer, sliding_nonce: u64, validator_name: vector, validator_address: address ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); // TODO: Use an error code from Errors.move assert(ValidatorConfig::get_human_name(validator_address) == validator_name, 0); - LibraSystem::remove_validator(lr_account, validator_address); + DiemSystem::remove_validator(dr_account, validator_address); } spec fun remove_validator_and_reconfigure { - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: lr_account}; // properties checked by the prologue. - include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; + include DiemAccount::TransactionChecks{sender: dr_account}; // properties checked by the prologue. + include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account}; // next is due to abort in get_human_name include ValidatorConfig::AbortsIfNoValidatorConfig{addr: validator_address}; // TODO: use an error code from Errors.move instead of 0. aborts_if ValidatorConfig::get_human_name(validator_address) != validator_name with 0; - include LibraSystem::RemoveValidatorAbortsIf{validator_addr: validator_address}; - include LibraSystem::RemoveValidatorEnsures{validator_addr: validator_address}; + include DiemSystem::RemoveValidatorAbortsIf{validator_addr: validator_address}; + include DiemSystem::RemoveValidatorEnsures{validator_addr: validator_address}; - /// Reports INVALID_STATE because of is_operating() and !exists. + /// Reports INVALID_STATE because of is_operating() and !exists. /// is_operating() is always true during transactions, and CapabilityHolder is published /// during initialization (Genesis). - /// Reports REQUIRES_ROLE if lr_account is not Libra root, but that can't happen + /// Reports REQUIRES_ROLE if dr_account is not Diem root, but that can't happen /// in practice because it aborts with NOT_PUBLISHED or REQUIRES_ADDRESS, first. aborts_with [check] 0, // Odd error code in assert on second statement in add_validator_and_reconfigure @@ -86,7 +86,7 @@ spec fun remove_validator_and_reconfigure { Errors::REQUIRES_ROLE; /// **Access Control:** - /// Only the Libra Root account can remove Validators [[H13]][PERMISSION]. - include Roles::AbortsIfNotLibraRoot{account: lr_account}; + /// Only the Diem Root account can remove Validators [[H13]][PERMISSION]. + include Roles::AbortsIfNotDiemRoot{account: dr_account}; } } diff --git a/language/stdlib/transaction_scripts/rotate_authentication_key.move b/language/stdlib/transaction_scripts/rotate_authentication_key.move index ad4e717881..1cd92bbfef 100644 --- a/language/stdlib/transaction_scripts/rotate_authentication_key.move +++ b/language/stdlib/transaction_scripts/rotate_authentication_key.move @@ -1,14 +1,14 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; /// # Summary /// Rotates the transaction sender's authentication key to the supplied new authentication key. May /// be sent by any account. /// /// # Technical Description -/// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -19,8 +19,8 @@ use 0x1::LibraAccount; /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key_with_nonce` @@ -28,22 +28,22 @@ use 0x1::LibraAccount; /// * `Script::rotate_authentication_key_with_recovery_address` fun rotate_authentication_key(account: &signer, new_key: vector) { - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); + let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key); + DiemAccount::restore_key_rotation_capability(key_rotation_capability); } spec fun rotate_authentication_key { use 0x1::Signer; use 0x1::Errors; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. let account_addr = Signer::spec_address_of(account); - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf; - let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr); - include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf; + let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr); + include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; /// This rotates the authentication key of `account` to `new_key` - include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; + include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; aborts_with [check] Errors::INVALID_STATE, @@ -52,6 +52,6 @@ spec fun rotate_authentication_key { /// **Access Control:** /// The account can rotate its own authentication key unless /// it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. - include LibraAccount::AbortsIfDelegatedKeyRotationCapability; + include DiemAccount::AbortsIfDelegatedKeyRotationCapability; } } diff --git a/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce.move b/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce.move index a9078728e4..fd0c22f3cd 100644 --- a/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce.move +++ b/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce.move @@ -1,16 +1,16 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary /// Rotates the sender's authentication key to the supplied new authentication key. May be sent by /// any account that has a sliding nonce resource published under it (usually this is Treasury -/// Compliance or Libra Root accounts). +/// Compliance or Diem Root accounts). /// /// # Technical Description -/// Rotates the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotates the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | @@ -26,8 +26,8 @@ use 0x1::SlidingNonce; /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -36,23 +36,23 @@ use 0x1::SlidingNonce; fun rotate_authentication_key_with_nonce(account: &signer, sliding_nonce: u64, new_key: vector) { SlidingNonce::record_nonce_or_abort(account, sliding_nonce); - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); + let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key); + DiemAccount::restore_key_rotation_capability(key_rotation_capability); } spec fun rotate_authentication_key_with_nonce { use 0x1::Signer; use 0x1::Errors; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. let account_addr = Signer::spec_address_of(account); include SlidingNonce::RecordNonceAbortsIf{ seq_nonce: sliding_nonce }; - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf; - let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr); - include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf; + let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr); + include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; /// This rotates the authentication key of `account` to `new_key` - include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; + include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; aborts_with [check] Errors::INVALID_ARGUMENT, @@ -62,6 +62,6 @@ spec fun rotate_authentication_key_with_nonce { /// **Access Control:** /// The account can rotate its own authentication key unless /// it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. - include LibraAccount::AbortsIfDelegatedKeyRotationCapability; + include DiemAccount::AbortsIfDelegatedKeyRotationCapability; } } diff --git a/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce_admin.move b/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce_admin.move index f87c01258b..303b975715 100644 --- a/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce_admin.move +++ b/language/stdlib/transaction_scripts/rotate_authentication_key_with_nonce_admin.move @@ -1,59 +1,59 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary /// Rotates the specified account's authentication key to the supplied new authentication key. May -/// only be sent by the Libra Root account as a write set transaction. +/// only be sent by the Diem Root account as a write set transaction. /// /// # Technical Description -/// Rotate the `account`'s `LibraAccount::LibraAccount` `authentication_key` field to `new_key`. +/// Rotate the `account`'s `DiemAccount::DiemAccount` `authentication_key` field to `new_key`. /// `new_key` must be a valid ed25519 public key, and `account` must not have previously delegated -/// its `LibraAccount::KeyRotationCapability`. +/// its `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | -/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | +/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `new_key` | `vector` | New ed25519 public key to be used for `account`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | -/// | `Errors::INVALID_STATE` | `LibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `LibraAccount::KeyRotationCapability`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | +/// | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` /// * `Script::rotate_authentication_key_with_nonce` /// * `Script::rotate_authentication_key_with_recovery_address` -fun rotate_authentication_key_with_nonce_admin(lr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); - let key_rotation_capability = LibraAccount::extract_key_rotation_capability(account); - LibraAccount::rotate_authentication_key(&key_rotation_capability, new_key); - LibraAccount::restore_key_rotation_capability(key_rotation_capability); +fun rotate_authentication_key_with_nonce_admin(dr_account: &signer, account: &signer, sliding_nonce: u64, new_key: vector) { + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); + let key_rotation_capability = DiemAccount::extract_key_rotation_capability(account); + DiemAccount::rotate_authentication_key(&key_rotation_capability, new_key); + DiemAccount::restore_key_rotation_capability(key_rotation_capability); } spec fun rotate_authentication_key_with_nonce_admin { use 0x1::Signer; use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. let account_addr = Signer::spec_address_of(account); - include SlidingNonce::RecordNonceAbortsIf{ account: lr_account, seq_nonce: sliding_nonce }; - include LibraAccount::ExtractKeyRotationCapabilityAbortsIf; - let key_rotation_capability = LibraAccount::spec_get_key_rotation_cap(account_addr); - include LibraAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; + include SlidingNonce::RecordNonceAbortsIf{ account: dr_account, seq_nonce: sliding_nonce }; + include DiemAccount::ExtractKeyRotationCapabilityAbortsIf; + let key_rotation_capability = DiemAccount::spec_get_key_rotation_cap(account_addr); + include DiemAccount::RotateAuthenticationKeyAbortsIf{cap: key_rotation_capability, new_authentication_key: new_key}; /// This rotates the authentication key of `account` to `new_key` - include LibraAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; + include DiemAccount::RotateAuthenticationKeyEnsures{addr: account_addr, new_authentication_key: new_key}; aborts_with [check] Errors::INVALID_ARGUMENT, @@ -61,10 +61,10 @@ spec fun rotate_authentication_key_with_nonce_admin { Errors::NOT_PUBLISHED; /// **Access Control:** - /// Only the Libra Root account can process the admin scripts [[H9]][PERMISSION]. - requires Roles::has_libra_root_role(lr_account); /// This is ensured by LibraAccount::writeset_prologue. + /// Only the Diem Root account can process the admin scripts [[H9]][PERMISSION]. + requires Roles::has_diem_root_role(dr_account); /// This is ensured by DiemAccount::writeset_prologue. /// The account can rotate its own authentication key unless /// it has delegrated the capability [[H17]][PERMISSION][[J17]][PERMISSION]. - include LibraAccount::AbortsIfDelegatedKeyRotationCapability{account: account}; + include DiemAccount::AbortsIfDelegatedKeyRotationCapability{account: account}; } } diff --git a/language/stdlib/transaction_scripts/rotate_authentication_key_with_recovery_address.move b/language/stdlib/transaction_scripts/rotate_authentication_key_with_recovery_address.move index b144efe426..10be15dfe9 100644 --- a/language/stdlib/transaction_scripts/rotate_authentication_key_with_recovery_address.move +++ b/language/stdlib/transaction_scripts/rotate_authentication_key_with_recovery_address.move @@ -8,16 +8,16 @@ use 0x1::RecoveryAddress; /// /// # Technical Description /// Rotates the authentication key of the `to_recover` account to `new_key` using the -/// `LibraAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource +/// `DiemAccount::KeyRotationCapability` stored in the `RecoveryAddress::RecoveryAddress` resource /// published under `recovery_address`. This transaction can be sent either by the `to_recover` /// account, or by the account where the `RecoveryAddress::RecoveryAddress` resource is published -/// that contains `to_recover`'s `LibraAccount::KeyRotationCapability`. +/// that contains `to_recover`'s `DiemAccount::KeyRotationCapability`. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `account` | `&signer` | Signer reference of the sending account of the transaction. | -/// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `LibraAccount::KeyRotationCapability` is published. | +/// | `recovery_address` | `address` | Address where `RecoveryAddress::RecoveryAddress` that holds `to_recover`'s `DiemAccount::KeyRotationCapability` is published. | /// | `to_recover` | `address` | The address of the account whose authentication key will be updated. | /// | `new_key` | `vector` | New ed25519 public key to be used for the account at the `to_recover` address. | /// @@ -26,8 +26,8 @@ use 0x1::RecoveryAddress; /// | ---------------- | -------------- | ------------- | /// | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress::RecoveryAddress` resource published under it. | /// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::ECANNOT_ROTATE_KEY` | The address of `account` is not `recovery_address` or `to_recover`. | -/// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `LibraAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | -/// | `Errors::INVALID_ARGUMENT` | `LibraAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | +/// | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EACCOUNT_NOT_RECOVERABLE` | `to_recover`'s `DiemAccount::KeyRotationCapability` is not in the `RecoveryAddress::RecoveryAddress` resource published under `recovery_address`. | +/// | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | `new_key` was an invalid length. | /// /// # Related Scripts /// * `Script::rotate_authentication_key` @@ -44,10 +44,10 @@ fun rotate_authentication_key_with_recovery_address( } spec fun rotate_authentication_key_with_recovery_address { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. include RecoveryAddress::RotateAuthenticationKeyAbortsIf; include RecoveryAddress::RotateAuthenticationKeyEnsures; diff --git a/language/stdlib/transaction_scripts/rotate_dual_attestation_info.move b/language/stdlib/transaction_scripts/rotate_dual_attestation_info.move index e1826c53fc..a11a5ea0e3 100644 --- a/language/stdlib/transaction_scripts/rotate_dual_attestation_info.move +++ b/language/stdlib/transaction_scripts/rotate_dual_attestation_info.move @@ -44,10 +44,10 @@ fun rotate_dual_attestation_info(account: &signer, new_url: vector, new_key: } spec fun rotate_dual_attestation_info { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. include DualAttestation::RotateBaseUrlAbortsIf; include DualAttestation::RotateBaseUrlEnsures; include DualAttestation::RotateCompliancePublicKeyAbortsIf; diff --git a/language/stdlib/transaction_scripts/rotate_shared_ed25519_public_key.move b/language/stdlib/transaction_scripts/rotate_shared_ed25519_public_key.move index b31a895d01..5ba5cb941f 100644 --- a/language/stdlib/transaction_scripts/rotate_shared_ed25519_public_key.move +++ b/language/stdlib/transaction_scripts/rotate_shared_ed25519_public_key.move @@ -32,9 +32,9 @@ fun rotate_shared_ed25519_public_key(account: &signer, public_key: vector) { } spec fun rotate_shared_ed25519_public_key { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. include SharedEd25519PublicKey::RotateKeyAbortsIf{new_public_key: public_key}; include SharedEd25519PublicKey::RotateKeyEnsures{new_public_key: public_key}; diff --git a/language/stdlib/transaction_scripts/set_validator_config_and_reconfigure.move b/language/stdlib/transaction_scripts/set_validator_config_and_reconfigure.move index 6c364cb34b..645422f29d 100644 --- a/language/stdlib/transaction_scripts/set_validator_config_and_reconfigure.move +++ b/language/stdlib/transaction_scripts/set_validator_config_and_reconfigure.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraSystem; +use 0x1::DiemSystem; use 0x1::ValidatorConfig; /// # Summary @@ -9,7 +9,7 @@ use 0x1::ValidatorConfig; /// /// # Technical Description /// This updates the fields with corresponding names held in the `ValidatorConfig::ValidatorConfig` -/// config resource held under `validator_account`. It then emits a `LibraConfig::NewEpochEvent` to +/// config resource held under `validator_account`. It then emits a `DiemConfig::NewEpochEvent` to /// trigger a reconfiguration of the system. This reconfiguration will update the validator set /// on-chain with the updated `ValidatorConfig::ValidatorConfig`. /// @@ -29,7 +29,7 @@ use 0x1::ValidatorConfig; /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR_OPERATOR` | `validator_operator_account` does not have a Validator Operator role. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_TRANSACTION_SENDER` | `validator_operator_account` is not the registered operator for the validator at `validator_address`. | /// | `Errors::INVALID_ARGUMENT` | `ValidatorConfig::EINVALID_CONSENSUS_KEY` | `consensus_pubkey` is not a valid ed25519 public key. | -/// | `Errors::INVALID_STATE` | `LibraConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | +/// | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | /// /// # Related Scripts /// * `Script::create_validator_account` @@ -54,22 +54,22 @@ fun set_validator_config_and_reconfigure( validator_network_addresses, fullnode_network_addresses ); - LibraSystem::update_config_and_reconfigure(validator_operator_account, validator_account); + DiemSystem::update_config_and_reconfigure(validator_operator_account, validator_account); } spec fun set_validator_config_and_reconfigure { - use 0x1::LibraAccount; - use 0x1::LibraConfig; - use 0x1::LibraSystem; + use 0x1::DiemAccount; + use 0x1::DiemConfig; + use 0x1::DiemSystem; use 0x1::Errors; use 0x1::Signer; // properties checked by the prologue. - include LibraAccount::TransactionChecks{sender: validator_operator_account}; + include DiemAccount::TransactionChecks{sender: validator_operator_account}; // UpdateConfigAndReconfigureEnsures includes properties such as not changing info // for validators in the validator_set other than that for validator_account, etc. - // These properties are important for access control. See notes in LibraSystem. - include LibraSystem::UpdateConfigAndReconfigureEnsures{validator_addr: validator_account}; + // These properties are important for access control. See notes in DiemSystem. + include DiemSystem::UpdateConfigAndReconfigureEnsures{validator_addr: validator_account}; ensures ValidatorConfig::is_valid(validator_account); // The published ValidatorConfig has the correct data, according to the arguments to // set_validator_config_and_reconfigure @@ -81,23 +81,23 @@ spec fun set_validator_config_and_reconfigure { }; include ValidatorConfig::SetConfigAbortsIf{validator_addr: validator_account}; - include LibraSystem::UpdateConfigAndReconfigureAbortsIf{validator_addr: validator_account}; + include DiemSystem::UpdateConfigAndReconfigureAbortsIf{validator_addr: validator_account}; // Reconfiguration only happens if validator info changes for a validator in the validator set. // v_info.config is the old config (if it exists) and the Config with args from set_config is // the new config let is_validator_info_updated = - (exists v_info in LibraSystem::spec_get_validators(): + (exists v_info in DiemSystem::spec_get_validators(): v_info.addr == validator_account && v_info.config != ValidatorConfig::Config { consensus_pubkey, validator_network_addresses, fullnode_network_addresses, }); - include is_validator_info_updated ==> LibraConfig::ReconfigureAbortsIf; + include is_validator_info_updated ==> DiemConfig::ReconfigureAbortsIf; - /// This reports a possible INVALID_STATE abort, which comes from an assert in LibraConfig::reconfigure_ + /// This reports a possible INVALID_STATE abort, which comes from an assert in DiemConfig::reconfigure_ /// that config.last_reconfiguration_time is not in the future. This is a system error that a user /// for which there is no useful recovery except to resubmit the transaction. aborts_with [check] diff --git a/language/stdlib/transaction_scripts/set_validator_operator.move b/language/stdlib/transaction_scripts/set_validator_operator.move index ccc9732d83..79e4c249d7 100644 --- a/language/stdlib/transaction_scripts/set_validator_operator.move +++ b/language/stdlib/transaction_scripts/set_validator_operator.move @@ -14,7 +14,7 @@ use 0x1::ValidatorOperatorConfig; /// a Validator Operator role and have a `ValidatorOperatorConfig::ValidatorOperatorConfig` /// resource published under it. The sending `account` must be a Validator and have a /// `ValidatorConfig::ValidatorConfig` resource published under it. This script does not emit a -/// `LibraConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. +/// `DiemConfig::NewEpochEvent` and no reconfiguration of the system is initiated by this script. /// /// # Parameters /// | Name | Type | Description | @@ -51,13 +51,13 @@ fun set_validator_operator( } spec fun set_validator_operator { - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; use 0x1::Errors; use 0x1::Roles; let account_addr = Signer::address_of(account); - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. // next is due to abort in get_human_name include ValidatorConfig::AbortsIfNoValidatorConfig{addr: account_addr}; // TODO: use an error code from Errors.move instead of 0. @@ -65,7 +65,7 @@ spec fun set_validator_operator { include ValidatorConfig::SetOperatorAbortsIf{validator_account: account, operator_addr: operator_account}; include ValidatorConfig::SetOperatorEnsures{validator_account: account, operator_addr: operator_account}; - /// Reports INVALID_STATE because of !exists, but that can't happen + /// Reports INVALID_STATE because of !exists, but that can't happen /// because CapabilityHolder is published during initialization (Genesis). aborts_with [check] 0, // Odd error code in assert on second statement in add_validator_and_reconfigure diff --git a/language/stdlib/transaction_scripts/set_validator_operator_with_nonce_admin.move b/language/stdlib/transaction_scripts/set_validator_operator_with_nonce_admin.move index 45304bd8fb..8d2f40945c 100644 --- a/language/stdlib/transaction_scripts/set_validator_operator_with_nonce_admin.move +++ b/language/stdlib/transaction_scripts/set_validator_operator_with_nonce_admin.move @@ -6,7 +6,7 @@ use 0x1::ValidatorOperatorConfig; /// # Summary /// Sets the validator operator for a validator in the validator's configuration resource "locally" /// and does not reconfigure the system. Changes from this transaction will not picked up by the -/// system until a reconfiguration of the system is triggered. May only be sent by the Libra Root +/// system until a reconfiguration of the system is triggered. May only be sent by the Diem Root /// account as a write set transaction. /// /// # Technical Description @@ -20,20 +20,20 @@ use 0x1::ValidatorOperatorConfig; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `lr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Libra Root signer. | +/// | `dr_account` | `&signer` | The signer reference of the sending account of the write set transaction. May only be the Diem Root signer. | /// | `account` | `&signer` | Signer reference of account specified in the `execute_as` field of the write set transaction. | -/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Libra Root. | +/// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction for Diem Root. | /// | `operator_name` | `vector` | Validator operator's human name. | /// | `operator_account` | `address` | Address of the validator operator account to be added as the `account` validator's operator. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `lr_account`. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `lr_account` is too old and it's impossible to determine if it's duplicated or not. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `lr_account` is too far in the future. | -/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` lr_account` has been previously recorded. | -/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Libra Root account or Treasury Compliance account | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` in `dr_account` is too old and it's impossible to determine if it's duplicated or not. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` in `dr_account` is too far in the future. | +/// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` in` dr_account` has been previously recorded. | +/// | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | The sending account is not the Diem Root account or Treasury Compliance account | /// | `Errors::NOT_PUBLISHED` | `ValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIG` | The `ValidatorOperatorConfig::ValidatorOperatorConfig` resource is not published under `operator_account`. | /// | 0 | 0 | The `human_name` field of the `ValidatorOperatorConfig::ValidatorOperatorConfig` resource under `operator_account` does not match the provided `human_name`. | /// | `Errors::REQUIRES_ROLE` | `Roles::EVALIDATOR` | `account` does not have a Validator account role. | @@ -50,26 +50,26 @@ use 0x1::ValidatorOperatorConfig; /// * `Script::set_validator_config_and_reconfigure` fun set_validator_operator_with_nonce_admin( - lr_account: &signer, + dr_account: &signer, account: &signer, sliding_nonce: u64, operator_name: vector, operator_account: address ) { - SlidingNonce::record_nonce_or_abort(lr_account, sliding_nonce); + SlidingNonce::record_nonce_or_abort(dr_account, sliding_nonce); assert(ValidatorOperatorConfig::get_human_name(operator_account) == operator_name, 0); ValidatorConfig::set_operator(account, operator_account); } spec fun set_validator_operator_with_nonce_admin { - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Signer; use 0x1::Errors; use 0x1::Roles; let account_addr = Signer::address_of(account); - include LibraAccount::TransactionChecks{sender: account}; // properties checked by the prologue. - include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: lr_account}; + include DiemAccount::TransactionChecks{sender: account}; // properties checked by the prologue. + include SlidingNonce::RecordNonceAbortsIf{seq_nonce: sliding_nonce, account: dr_account}; // next is due to abort in get_human_name include ValidatorConfig::AbortsIfNoValidatorConfig{addr: account_addr}; // TODO: use an error code from Errors.move instead of 0. @@ -84,8 +84,8 @@ spec fun set_validator_operator_with_nonce_admin { Errors::REQUIRES_ROLE; /// **Access Control:** - /// Only the Libra Root account can process the admin scripts [[H9]][PERMISSION]. - requires Roles::has_libra_root_role(lr_account); /// This is ensured by LibraAccount::writeset_prologue. + /// Only the Diem Root account can process the admin scripts [[H9]][PERMISSION]. + requires Roles::has_diem_root_role(dr_account); /// This is ensured by DiemAccount::writeset_prologue. /// Only a Validator account can set its Validator Operator [[H15]][PERMISSION]. include Roles::AbortsIfNotValidator{validator_addr: account_addr}; } diff --git a/language/stdlib/transaction_scripts/spec_documentation_template.md b/language/stdlib/transaction_scripts/spec_documentation_template.md index 2f28629e8c..8d0417e4d6 100644 --- a/language/stdlib/transaction_scripts/spec_documentation_template.md +++ b/language/stdlib/transaction_scripts/spec_documentation_template.md @@ -1,4 +1,4 @@ -# Libra Framework Specification +# Diem Framework Specification [FORM_VER]: https://en.wikipedia.org/wiki/Formal_verification [SMT]: https://en.wikipedia.org/wiki/Satisfiability_modulo_theories @@ -9,9 +9,9 @@ [Z3]: https://github.com/Z3Prover/z3 [ACCESS_CONTROL]: https://github.com/libra/lip/blob/master/lips/lip-2.md -The Libra framework comes with an exhaustive formal specification of modules and transaction scripts. +The Diem framework comes with an exhaustive formal specification of modules and transaction scripts. The specifications are formally verified against the Move implementation, with the verification enabled in -continuous integration, and successful verification a land blocker for each PR merged into the Libra project. +continuous integration, and successful verification a land blocker for each PR merged into the Diem project. Here we given an overview of the specification approach and what it provides for the framework. ## Brief Introduction to Formal Verification @@ -35,9 +35,9 @@ isolated and sand-boxed, by construction preventing Move programs to call into o Last not least, techniques for formal verification, like [SMT solving][SMT] made continuous advances over the last decade, and provide fully automated solutions for verification. -## How the Libra Framework is Specified +## How the Diem Framework is Specified -The Libra framework uses the [Move Specification Language][MSL] for specification of properties. The language +The Diem framework uses the [Move Specification Language][MSL] for specification of properties. The language is designed in the tradition of [Design by Contract][DESIGN_BY_CONTRACT]. It uses pre- and post-conditions to define behavior of functions, and invariants over data structures and global resource state. Conditions are described by predicates which involve access to function parameters, structured data, and global resource state. @@ -52,7 +52,7 @@ to be explicitly accounted for at each function. The Move specification language to avoid repetition (namely, reusable specification schemas), yet still specifications can be verbose. However, writing tests which provide 100% coverage for each relevant input and state combination is arguably significantly more verbose. -## How the Libra Framework is Verified +## How the Diem Framework is Verified Move specifications are verified by the [Move Prover][PROVER]. This is a tool which works from the generated Move byte code and combines it with the specifications to create a verification condition which is then passed @@ -60,13 +60,13 @@ on to off-the-shelf standard verification tools (currently [Boogie][Boogie] and by those tools is then translated back to provide feedback on the level of Move, creating error messages very much similar as a type checker or linter tool. No human interaction is required for this. -Verification of the Libra framework is fully embedded into the developer workflow. A Rust integration test +Verification of the Diem framework is fully embedded into the developer workflow. A Rust integration test calls the Move prover on each Move source in the framework, failing the test if Move verification fails. Failures in this process are land blockers for submitting Move code. ## Completeness of Specification and Verification -At this point, the Libra framework is specified to the following extent: +At this point, the Diem framework is specified to the following extent: - Each transaction script is specified. - Most Module functions called directly or indirectly via a transaction script are specified. Note that diff --git a/language/stdlib/transaction_scripts/tiered_mint.move b/language/stdlib/transaction_scripts/tiered_mint.move index 346f01d0f8..37da8ac6d3 100644 --- a/language/stdlib/transaction_scripts/tiered_mint.move +++ b/language/stdlib/transaction_scripts/tiered_mint.move @@ -1,5 +1,5 @@ script { -use 0x1::LibraAccount; +use 0x1::DiemAccount; use 0x1::SlidingNonce; /// # Summary @@ -18,8 +18,8 @@ use 0x1::SlidingNonce; /// /// ## Events /// Successful execution of the transaction will emit two events: -/// * A `Libra::MintEvent` with the amount and currency code minted is emitted on the -/// `mint_event_handle` in the stored `Libra::CurrencyInfo` resource stored under +/// * A `Diem::MintEvent` with the amount and currency code minted is emitted on the +/// `mint_event_handle` in the stored `Diem::CurrencyInfo` resource stored under /// `0xA550C18`; and /// * A `DesignatedDealer::ReceivedMintEvent` with the amount, currency code, and Designated /// Dealer's address is emitted on the `mint_event_handle` in the stored `DesignatedDealer::Dealer` @@ -48,9 +48,9 @@ use 0x1::SlidingNonce; /// | `Errors::NOT_PUBLISHED` | `DesignatedDealer::EDEALER` | `DesignatedDealer::Dealer` or `DesignatedDealer::TierInfo` resource does not exist at `designated_dealer_address`. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_TIER_INDEX` | The `tier_index` is out of bounds. | /// | `Errors::INVALID_ARGUMENT` | `DesignatedDealer::EINVALID_AMOUNT_FOR_TIER` | `mint_amount` exceeds the maximum allowed amount for `tier_index`. | -/// | `Errors::REQUIRES_CAPABILITY` | `Libra::EMINT_CAPABILITY` | `tc_account` does not have a `Libra::MintCapability` resource published under it. | -/// | `Errors::INVALID_STATE` | `Libra::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | -/// | `Errors::LIMIT_EXCEEDED` | `LibraAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | +/// | `Errors::REQUIRES_CAPABILITY` | `Diem::EMINT_CAPABILITY` | `tc_account` does not have a `Diem::MintCapability` resource published under it. | +/// | `Errors::INVALID_STATE` | `Diem::EMINTING_NOT_ALLOWED` | Minting is not currently allowed for `CoinType` coins. | +/// | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds would exceed the `account`'s account limits. | /// /// # Related Scripts /// * `Script::create_designated_dealer` @@ -65,7 +65,7 @@ fun tiered_mint( tier_index: u64 ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - LibraAccount::tiered_mint( + DiemAccount::tiered_mint( tc_account, designated_dealer_address, mint_amount, tier_index ); } @@ -74,10 +74,10 @@ spec fun tiered_mint { use 0x1::Errors; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. include SlidingNonce::RecordNonceAbortsIf{account: tc_account, seq_nonce: sliding_nonce}; - include LibraAccount::TieredMintAbortsIf; - include LibraAccount::TieredMintEnsures; + include DiemAccount::TieredMintAbortsIf; + include DiemAccount::TieredMintEnsures; aborts_with [check] Errors::INVALID_ARGUMENT, diff --git a/language/stdlib/transaction_scripts/transaction_script_documentation_template.md b/language/stdlib/transaction_scripts/transaction_script_documentation_template.md index 1d3cff10b5..66d1f30036 100644 --- a/language/stdlib/transaction_scripts/transaction_script_documentation_template.md +++ b/language/stdlib/transaction_scripts/transaction_script_documentation_template.md @@ -1,4 +1,4 @@ -# Overview of Libra Transaction Scripts +# Overview of Diem Transaction Scripts > {{move-toc}} @@ -7,7 +7,7 @@ On-chain state is updated via the execution of transaction scripts sent from accounts that exist on-chain. This page documents each allowed transaction -script on Libra, and the common state changes that can be performed to the +script on Diem, and the common state changes that can be performed to the blockchain via these transaction scripts along with their arguments and common error conditions. @@ -45,7 +45,7 @@ Each Move abort error status consists of two pieces of data: The `abort_code` is a `u64` that is constructed from two values: 1. The **error category** which is encoded in the lower 8 bits of the code. Error categories are - declared in the `Errors` module and are globally unique across the Libra framework. There is a limited + declared in the `Errors` module and are globally unique across the Diem framework. There is a limited fixed set of predefined categories, and the framework is guaranteed to use these consistently. 2. The **error reason** which is encoded in the remaining 56 bits of the code. The reason is a unique number relative to the module which raised the error and can be used to obtain more information about @@ -60,8 +60,8 @@ e.g., | Error Category | Error Reason | Description | | ---------------- | -------------- | ------------- | -| `Errors::NOT_PUBLISHED` | `LibraAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | -| `Errors::LIMIT_EXCEEDED` | `LibraAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | +| `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | `payer` doesn't hold a balance in `Currency`. | +| `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | `amount` is greater than `payer`'s balance in `Currency`. | For each of these tables, the **error categories should be considered stable**; any changes to these categories will be be well-publicized in advance. On the @@ -116,7 +116,7 @@ Script documentation: `create_child_vasp_account` --- #### Script create_validator_operator_account -Creates a Validator Operator account. This transaction can only be sent by the Libra +Creates a Validator Operator account. This transaction can only be sent by the Diem Root account. Script documentation: `create_validator_operator_account` @@ -124,7 +124,7 @@ Script documentation: `create_validator_operator_account` --- #### Script create_validator_account -Creates a Validator account. This transaction can only be sent by the Libra +Creates a Validator account. This transaction can only be sent by the Diem Root account. Script documentation: `create_validator_account` @@ -152,7 +152,7 @@ Script documentation: `create_designated_dealer` #### Script add_currency_to_account Adds a zero `Currency` balance to the sending `account`. This will enable `account` to -send, receive, and hold `Libra::Libra` coins. This transaction can be +send, receive, and hold `Diem::Diem` coins. This transaction can be successfully sent by any account that is allowed to hold balances (e.g., VASP, Designated Dealer). @@ -194,7 +194,7 @@ Script documentation: `rotate_authentication_key` Rotates the sender's authentication key to the supplied new authentication key. May be sent by any account that has a sliding nonce resource published under it (usually this is Treasury -Compliance or Libra Root accounts). +Compliance or Diem Root accounts). Script documentation: `rotate_authentication_key_with_nonce` @@ -203,7 +203,7 @@ Script documentation: `rotate_authentication_key_with_nonce` #### Script rotate_authentication_key_with_nonce_admin Rotates the specified account's authentication key to the supplied new authentication key. May -only be sent by the Libra Root account as a write set transaction. +only be sent by the Diem Root account as a write set transaction. Script documentation: `rotate_authentication_key_with_nonce_admin` @@ -261,7 +261,7 @@ Script documentation: `peer_to_peer_with_metadata` Adds a validator account to the validator set, and triggers a reconfiguration of the system to admit the account to the validator set for the system. This -transaction can only be successfully called by the Libra Root account. +transaction can only be successfully called by the Diem Root account. Script documentation: `add_validator_and_reconfigure` @@ -282,7 +282,7 @@ Script documentation: `register_validator_config` This script removes a validator account from the validator set, and triggers a reconfiguration of the system to remove the validator from the system. This transaction can only be -successfully called by the Libra Root account. +successfully called by the Diem Root account. Script documentation: `remove_validator_and_reconfigure` @@ -313,7 +313,7 @@ Script documentation: `set_validator_operator` Sets the validator operator for a validator in the validator's configuration resource "locally" and does not reconfigure the system. Changes from this transaction will not picked up by the -system until a reconfiguration of the system is triggered. May only be sent by the Libra Root +system until a reconfiguration of the system is triggered. May only be sent by the Diem Root account as a write set transaction. Script documentation: `set_validator_operator_with_nonce_admin` @@ -358,7 +358,7 @@ Script documentation: `cancel_burn` #### Script burn_txn_fees Burns the transaction fees collected in the `CoinType` currency so that the -Libra association may reclaim the backing coins off-chain. May only be sent +Diem association may reclaim the backing coins off-chain. May only be sent by the Treasury Compliance account. Script documentation: `burn_txn_fees` @@ -379,7 +379,7 @@ Script documentation: `tiered_mint` Freezes the account at `address`. The sending account of this transaction must be the Treasury Compliance account. The account being frozen cannot be -the Libra Root or Treasury Compliance account. After the successful +the Diem Root or Treasury Compliance account. After the successful execution of this transaction no transactions may be sent from the frozen account, and the frozen account may not send or receive coins. @@ -399,7 +399,7 @@ Script documentation: `unfreeze_account` --- #### Script update_dual_attestation_limit -Update the dual attestation limit on-chain. Defined in terms of micro-LBR. The transaction can +Update the dual attestation limit on-chain. Defined in terms of micro-XDX. The transaction can only be sent by the Treasury Compliance account. After this transaction all inter-VASP payments over this limit must be checked for dual attestation. @@ -409,8 +409,8 @@ Script documentation: `update_dual_attestation_limit` --- #### Script update_exchange_rate -Update the rough on-chain exchange rate between a specified currency and LBR (as a conversion -to micro-LBR). The transaction can only be sent by the Treasury Compliance account. After this +Update the rough on-chain exchange rate between a specified currency and XDX (as a conversion +to micro-XDX). The transaction can only be sent by the Treasury Compliance account. After this transaction the updated exchange rate will be used for normalization of gas prices, and for dual attestation checking. @@ -430,19 +430,19 @@ Script documentation: `update_minting_ability` ### System Administration --- -#### Script update_libra_version +#### Script update_diem_version -Updates the Libra major version that is stored on-chain and is used by the VM. This -transaction can only be sent from the Libra Root account. +Updates the Diem major version that is stored on-chain and is used by the VM. This +transaction can only be sent from the Diem Root account. -Script documentation: `update_libra_version` +Script documentation: `update_diem_version` --- #### Script add_to_script_allow_list Adds a script hash to the transaction allowlist. This transaction -can only be sent by the Libra Root account. Scripts with this hash can be +can only be sent by the Diem Root account. Scripts with this hash can be sent afterward the successful execution of this script. Script documentation: `add_to_script_allow_list` @@ -534,7 +534,7 @@ Script documentation: `add_to_script_allow_list` --- ### System Administration -> {{move-include update_libra_version}} +> {{move-include update_diem_version}} --- > {{move-include add_to_script_allow_list}} diff --git a/language/stdlib/transaction_scripts/update_libra_version.move b/language/stdlib/transaction_scripts/update_diem_version.move similarity index 72% rename from language/stdlib/transaction_scripts/update_libra_version.move rename to language/stdlib/transaction_scripts/update_diem_version.move index 19b6c191a8..de3b57d935 100644 --- a/language/stdlib/transaction_scripts/update_libra_version.move +++ b/language/stdlib/transaction_scripts/update_diem_version.move @@ -1,13 +1,13 @@ script { -use 0x1::LibraVersion; +use 0x1::DiemVersion; use 0x1::SlidingNonce; /// # Summary -/// Updates the Libra major version that is stored on-chain and is used by the VM. This -/// transaction can only be sent from the Libra Root account. +/// Updates the Diem major version that is stored on-chain and is used by the VM. This +/// transaction can only be sent from the Diem Root account. /// /// # Technical Description -/// Updates the `LibraVersion` on-chain config and emits a `LibraConfig::NewEpochEvent` to trigger +/// Updates the `DiemVersion` on-chain config and emits a `DiemConfig::NewEpochEvent` to trigger /// a reconfiguration of the system. The `major` version that is passed in must be strictly greater /// than the current major version held on-chain. The VM reads this information and can use it to /// preserve backwards compatibility with previous major versions of the VM. @@ -15,7 +15,7 @@ use 0x1::SlidingNonce; /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | -/// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | +/// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | /// | `major` | `u64` | The `major` version of the VM to be used from this transaction on. | /// @@ -26,11 +26,11 @@ use 0x1::SlidingNonce; /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | /// | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | -/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ELIBRA_ROOT` | `account` is not the Libra Root account. | -/// | `Errors::INVALID_ARGUMENT` | `LibraVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | +/// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | `account` is not the Diem Root account. | +/// | `Errors::INVALID_ARGUMENT` | `DiemVersion::EINVALID_MAJOR_VERSION_NUMBER` | `major` is less-than or equal to the current major version stored on-chain. | -fun update_libra_version(account: &signer, sliding_nonce: u64, major: u64) { +fun update_diem_version(account: &signer, sliding_nonce: u64, major: u64) { SlidingNonce::record_nonce_or_abort(account, sliding_nonce); - LibraVersion::set(account, major) + DiemVersion::set(account, major) } } diff --git a/language/stdlib/transaction_scripts/update_dual_attestation_limit.move b/language/stdlib/transaction_scripts/update_dual_attestation_limit.move index 10c619b530..b67639420a 100644 --- a/language/stdlib/transaction_scripts/update_dual_attestation_limit.move +++ b/language/stdlib/transaction_scripts/update_dual_attestation_limit.move @@ -3,20 +3,20 @@ use 0x1::SlidingNonce; use 0x1::DualAttestation; /// # Summary -/// Update the dual attestation limit on-chain. Defined in terms of micro-LBR. The transaction can +/// Update the dual attestation limit on-chain. Defined in terms of micro-XDX. The transaction can /// only be sent by the Treasury Compliance account. After this transaction all inter-VASP /// payments over this limit must be checked for dual attestation. /// /// # Technical Description -/// Updates the `micro_lbr_limit` field of the `DualAttestation::Limit` resource published under -/// `0xA550C18`. The amount is set in micro-LBR. +/// Updates the `micro_xdx_limit` field of the `DualAttestation::Limit` resource published under +/// `0xA550C18`. The amount is set in micro-XDX. /// /// # Parameters /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | -/// | `new_micro_lbr_limit` | `u64` | The new dual attestation limit to be used on-chain. | +/// | `new_micro_xdx_limit` | `u64` | The new dual attestation limit to be used on-chain. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -34,9 +34,9 @@ use 0x1::DualAttestation; fun update_dual_attestation_limit( tc_account: &signer, sliding_nonce: u64, - new_micro_lbr_limit: u64 + new_micro_xdx_limit: u64 ) { SlidingNonce::record_nonce_or_abort(tc_account, sliding_nonce); - DualAttestation::set_microlibra_limit(tc_account, new_micro_lbr_limit); + DualAttestation::set_microdiem_limit(tc_account, new_micro_xdx_limit); } } diff --git a/language/stdlib/transaction_scripts/update_exchange_rate.move b/language/stdlib/transaction_scripts/update_exchange_rate.move index 8f6882c6f3..7e203bbc0b 100644 --- a/language/stdlib/transaction_scripts/update_exchange_rate.move +++ b/language/stdlib/transaction_scripts/update_exchange_rate.move @@ -1,16 +1,16 @@ script { -use 0x1::Libra; +use 0x1::Diem; use 0x1::FixedPoint32; use 0x1::SlidingNonce; /// # Summary -/// Update the rough on-chain exchange rate between a specified currency and LBR (as a conversion -/// to micro-LBR). The transaction can only be sent by the Treasury Compliance account. After this +/// Update the rough on-chain exchange rate between a specified currency and XDX (as a conversion +/// to micro-XDX). The transaction can only be sent by the Treasury Compliance account. After this /// transaction the updated exchange rate will be used for normalization of gas prices, and for /// dual attestation checking. /// /// # Technical Description -/// Updates the on-chain exchange rate from the given `Currency` to micro-LBR. The exchange rate +/// Updates the on-chain exchange rate from the given `Currency` to micro-XDX. The exchange rate /// is given by `new_exchange_rate_numerator/new_exchange_rate_denominator`. /// /// # Parameters @@ -19,8 +19,8 @@ use 0x1::SlidingNonce; /// | `Currency` | Type | The Move type for the `Currency` whose exchange rate is being updated. `Currency` must be an already-registered currency on-chain. | /// | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | /// | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for the transaction. | -/// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-LBR exchange rate for `Currency`. | -/// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-LBR exchange rate for `Currency`. | +/// | `new_exchange_rate_numerator` | `u64` | The numerator for the new to micro-XDX exchange rate for `Currency`. | +/// | `new_exchange_rate_denominator` | `u64` | The denominator for the new to micro-XDX exchange rate for `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | @@ -50,14 +50,14 @@ fun update_exchange_rate( new_exchange_rate_numerator, new_exchange_rate_denominator, ); - Libra::update_lbr_exchange_rate(tc_account, rate); + Diem::update_xdx_exchange_rate(tc_account, rate); } spec fun update_exchange_rate { use 0x1::Errors; - use 0x1::LibraAccount; + use 0x1::DiemAccount; use 0x1::Roles; - include LibraAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. + include DiemAccount::TransactionChecks{sender: tc_account}; // properties checked by the prologue. include SlidingNonce::RecordNonceAbortsIf{ account: tc_account, seq_nonce: sliding_nonce }; include FixedPoint32::CreateFromRationalAbortsIf{ numerator: new_exchange_rate_numerator, @@ -67,7 +67,7 @@ spec fun update_exchange_rate { new_exchange_rate_numerator, new_exchange_rate_denominator ); - include Libra::UpdateLBRExchangeRateAbortsIf; + include Diem::UpdateXDXExchangeRateAbortsIf; aborts_with [check] Errors::INVALID_ARGUMENT, diff --git a/language/stdlib/transaction_scripts/update_minting_ability.move b/language/stdlib/transaction_scripts/update_minting_ability.move index 3550451b05..9402b55582 100644 --- a/language/stdlib/transaction_scripts/update_minting_ability.move +++ b/language/stdlib/transaction_scripts/update_minting_ability.move @@ -1,5 +1,5 @@ script { -use 0x1::Libra; +use 0x1::Diem; /// # Summary /// Script to allow or disallow minting of new coins in a specified currency. This transaction can @@ -7,7 +7,7 @@ use 0x1::Libra; /// no effect on coins already in circulation, and coins may still be removed from the system. /// /// # Technical Description -/// This transaction sets the `can_mint` field of the `Libra::CurrencyInfo` resource +/// This transaction sets the `can_mint` field of the `Diem::CurrencyInfo` resource /// published under `0xA550C18` to the value of `allow_minting`. Minting of coins if allowed if /// this field is set to `true` and minting of new coins in `Currency` is disallowed otherwise. /// This transaction needs to be sent by the Treasury Compliance account. @@ -16,14 +16,14 @@ use 0x1::Libra; /// | Name | Type | Description | /// | ------ | ------ | ------------- | /// | `Currency` | Type | The Move type for the `Currency` whose minting ability is being updated. `Currency` must be an already-registered currency on-chain. | -/// | `account` | `&signer` | Signer reference of the sending account. Must be the Libra Root account. | +/// | `account` | `&signer` | Signer reference of the sending account. Must be the Diem Root account. | /// | `allow_minting` | `bool` | Whether to allow minting of new coins in `Currency`. | /// /// # Common Abort Conditions /// | Error Category | Error Reason | Description | /// | ---------------- | -------------- | ------------- | /// | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | `tc_account` is not the Treasury Compliance account. | -/// | `Errors::NOT_PUBLISHED` | `Libra::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | +/// | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | `Currency` is not a registered currency on-chain. | /// /// # Related Scripts /// * `Script::update_dual_attestation_limit` @@ -33,6 +33,6 @@ fun update_minting_ability( tc_account: &signer, allow_minting: bool ) { - Libra::update_minting_ability(tc_account, allow_minting); + Diem::update_minting_ability(tc_account, allow_minting); } } diff --git a/language/testing-infra/e2e-tests/Cargo.toml b/language/testing-infra/e2e-tests/Cargo.toml index 83d0024f6b..270230a66b 100644 --- a/language/testing-infra/e2e-tests/Cargo.toml +++ b/language/testing-infra/e2e-tests/Cargo.toml @@ -2,10 +2,10 @@ name = "language-e2e-tests" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra language e2e testing framework" +authors = ["Diem Association "] +description = "Diem language e2e testing framework" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -15,20 +15,20 @@ goldenfile = "1.1.0" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } compiler = { path = "../../compiler", version = "0.1.0" } once_cell = "1.4.1" -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } rand = "0.7.3" -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0", features = ["fuzzing"] } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0", features = ["fuzzing"] } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../../move-vm/runtime", version = "0.1.0", features = ["debug_module"] } move-vm-types = { path = "../../move-vm/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } vm-genesis = { path = "../../tools/vm-genesis", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } proptest = "0.10.1" proptest-derive = "0.2.0" -libra-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } -libra-config = { path = "../../../config", version = "0.1.0" } +diem-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } +diem-config = { path = "../../../config", version = "0.1.0" } compiled-stdlib = { path = "../../stdlib/compiled", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } hex = "0.4.2" diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::account_limits::account_limits.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::account_limits::account_limits.exp index 39e8c40e0c..5a60eb67bb 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::account_limits::account_limits.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::account_limits::account_limits.exp @@ -1,36 +1,36 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0400000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a }, Value(ffffffffffffffffffffffffffffffff0060d71d14000000ffffffffffffffff)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(00000000000000000000000000000000000000000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(02000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a }, Value(ffffffffffffffffffffffffffffffff0060d71d14000000ffffffffffffffff)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(0000000000000000000000000000000000000000000000000000000000000000a2a4b23f5916b324c365bb9178680138))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(7f7be1ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(80841e0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "80841e000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "80841e000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 564, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(fff6c2ffffffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(80841e0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "80841e000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "80841e000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 564, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(00000000000000000000000000000000000000000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 78, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a }, Value(40420f0000000000ffffffffffffffff0060d71d14000000ffffffffffffffff))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 570, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 628, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "41420f000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "41420f000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 605, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(41420f0000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(0000000000000000000000000000000041420f000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "41420f000000000005436f696e3118da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "41420f000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 809, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(000000000000000040420f000000000041420f000000000040420f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(40420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "40420f000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "40420f000000000005436f696e3118da06a3cf5e1d6075fa744eebd32fb700" }], gas_used: 817, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 532, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0160d71d14000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000160d71d14000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0300000000000000180400000000000000000000000000000000000000000000dd0300000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(fef6c2ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(0160d71d140000000100000000000000000000000000000041420f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 655, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a }, Value(ffffffffffffffffe8030000000000000060d71d14000000ffffffffffffffff))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(563e0f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(29460f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e90300000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e90300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 605, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7020000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(e903000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(0160d71d140000000000000000000000e803000000000000583e0f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e3118da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 810, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 313, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000))] }), events: [], gas_used: 372, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000))] }), events: [], gas_used: 348, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(02c0ae3b28000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe0002c0ae3b28000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0200000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00f7c2ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(02c0ae3b2800000000000000000000000100000000000000573e0f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(40420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e31000000000000000000000000000000dd00" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 648, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d9b4de2efb7834d7af8f8857f631908ef3c546f479dabfc1da6e0f7585585f2a }, Value(ffffffffffffffffffffffffffffffff0060d71d1400000097801e0000000000))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(0160d71d140000000000000000000000e80300000000000097801e00000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 78, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 629, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7030000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f303000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(02c0ae3b2800000000000000000000000a000000000000008d801e00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(4c3e0f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e3118da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 744, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bbc6efee844743719f5e27cf2cb8c4e77f8356c6876cbdb4019518f7b03f1740 }, Value(02c0ae3b280000000a000000000000000a0000000000000097801e00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(76841e0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620400000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(4b420f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }], gas_used: 751, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000))] }), events: [], gas_used: 628, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(98420f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620400000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(ff3d0f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "4c0400000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "4c0400000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 605, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 532, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(032086593c000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe00032086593c000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 533, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::LibraAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0400000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e }, Value(ffffffffffffffffffffffffffffffff0060d71d14000000ffffffffffffffff)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(00000000000000000000000000000000000000000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(02000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e }, Value(ffffffffffffffffffffffffffffffff0060d71d14000000ffffffffffffffff)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(0000000000000000000000000000000000000000000000000000000000000000a2a4b23f5916b324c365bb9178680138))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(7f7be1ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(80841e0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "80841e0000000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "80841e000000000003585553000000000000000000000000000000dd00" }], gas_used: 564, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(fff6c2ffffffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(80841e0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "80841e000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "80841e000000000003585553000000000000000000000000000000dd00" }], gas_used: 564, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(00000000000000000000000000000000000000000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 78, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e }, Value(40420f0000000000ffffffffffffffff0060d71d14000000ffffffffffffffff))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 570, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 628, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "41420f000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "41420f0000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 605, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(41420f0000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(0000000000000000000000000000000041420f000000000000000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "41420f00000000000358555318da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "41420f000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 809, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(000000000000000040420f000000000041420f000000000040420f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(40420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "40420f000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "40420f00000000000358555318da06a3cf5e1d6075fa744eebd32fb700" }], gas_used: 816, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 532, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0160d71d14000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000160d71d14000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0300000000000000180400000000000000000000000000000000000000000000dd0300000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(fef6c2ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(0160d71d140000000100000000000000000000000000000041420f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "010000000000000003585553000000000000000000000000000000dd00" }], gas_used: 655, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e }, Value(ffffffffffffffffe8030000000000000060d71d14000000ffffffffffffffff))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(563e0f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(29460f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e90300000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e903000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 605, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7020000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(e903000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(0160d71d140000000000000000000000e803000000000000583e0f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(41420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e8030000000000000358555318da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 809, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 313, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000))] }), events: [], gas_used: 372, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000))] }), events: [], gas_used: 348, status: Keep(ABORTED { code: 1544, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(02c0ae3b28000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe0002c0ae3b28000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0200000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00f7c2ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(02c0ae3b2800000000000000000000000100000000000000573e0f00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(40420f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000003585553000000000000000000000000000000dd00" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "010000000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 648, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0189a4b3d205b6ffaa14c3e35ef672da35b9e5b21659e2bd855fb90c9ea68aee0e }, Value(ffffffffffffffffffffffffffffffff0060d71d1400000097801e0000000000))] }), events: [], gas_used: 79, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(0160d71d140000000000000000000000e80300000000000097801e00000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 78, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 628, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7030000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7010000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70100000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f303000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(02c0ae3b2800000000000000000000000a000000000000008d801e00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(4c3e0f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a000000000000000358555318da06a3cf5e1d6075fa744eebd32fb700" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a00000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 744, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0197c44afc1b4163a1edacb01234835e127acb3412131dd3efd51fb57e5c30020b }, Value(02c0ae3b280000000a000000000000000a0000000000000097801e00000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(76841e0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620400000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(4b420f0000000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a0000000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a0000000000000003585553a2a4b23f5916b324c365bb917868013800" }], gas_used: 751, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000))] }), events: [], gas_used: 628, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(98420f0000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620400000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(ff3d0f0000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "4c04000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "4c0400000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }], gas_used: 605, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 532, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(032086593c000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe00032086593c000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0300000000000000))] }), events: [], gas_used: 533, status: Keep(ABORTED { code: 776, location: 00000000000000000000000000000001::DiemAccount }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_multi_signer.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_multi_signer.exp index 39a6b105ed..27de7b7aaf 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_multi_signer.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_multi_signer.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(INVALID_WRITE_SET) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_new_epoch.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_new_epoch.exp index 10ed693384..4f262fd81f 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_new_epoch.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_new_epoch.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_no_epoch.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_no_epoch.exp index 31943a19b6..49ab3a93cd 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_no_epoch.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::admin_script::admin_script_rotate_key_single_signer_no_epoch.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::create_account::create_account.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::create_account::create_account.exp index d4c67a2f32..7cf9b836e6 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::create_account::create_account.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::create_account::create_account.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1627, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1627, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::borrow_after_move.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::borrow_after_move.exp index 0af1063aed..d297478043 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::borrow_after_move.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::borrow_after_move.exp @@ -1,5 +1,5 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::change_after_move.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::change_after_move.exp index 1e16d01a2c..97131f0cc9 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::change_after_move.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::change_after_move.exp @@ -1,6 +1,6 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 10, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 1, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 10, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 1, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::move_from_across_blocks.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::move_from_across_blocks.exp index cf154d77e4..c9b05e9759 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::move_from_across_blocks.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::data_store::move_from_across_blocks.exp @@ -1,9 +1,9 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016bf6ee9c7582c62694a84d2264a924e987661424486e7f939227d3682702b91f }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11400000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b01000000090100040204040308190521140735420877200a9701050c9c014b0de7010200000101000201000003000100000402010000050001000006000100010800040001060c0002060c03010608000105010708000103014d065369676e657202543109626f72726f775f7431096368616e67655f74310972656d6f76655f74310a7075626c6973685f743101760a616464726573735f6f665455a8193f1dfc1b113ecc54d067afe10000000000000000000000000000000100020107030001010003050b0011042b000c01020101010005090b0011042a000c020b010b020f0015020201010006060b0011042c0013000c010203010001050b0006030000000000000012002d0002000000))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [], gas_used: 25, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 0, code_offset: 2 }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Value(0300000000000000))] }), events: [], gas_used: 19, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105e7794ee404e3bd7b313bddb9fc80d760175e0107394501d6b4ab54739fabb1 }, Deletion)] }), events: [], gas_used: 33, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe11400000000000000))] }), events: [], gas_used: 9, status: Keep(EXECUTION_FAILURE { location: 5455A8193F1DFC1B113ECC54D067AFE1::M, function_definition: 2, code_offset: 2 }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::halt_network.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::halt_network.exp index b9cc00213e..c1f6e9f5ac 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::halt_network.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::halt_network.exp @@ -1,5 +1,5 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01c57e4b1f2f0b310e31551b209d95863037d5d549f41f62d324aeabb6f44e0baf }, Value(0120000000000000000000000000000000000000000000000000000000000000000001))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0173b513a3c85b52f7d770b697d8ccc1d679611e19b90e335697f4381510412efc }, Value(0120000000000000000000000000000000000000000000000000000000000000000001))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(UNKNOWN_SCRIPT) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01c57e4b1f2f0b310e31551b209d95863037d5d549f41f62d324aeabb6f44e0baf }, Value(022000000000000000000000000000000000000000000000000000000000000000002061749d43d8f10940be6944df85ddf13f0f8fb830269c601f481cc5ee3de731c801))] }), events: [], gas_used: 191, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(a186010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "010000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0173b513a3c85b52f7d770b697d8ccc1d679611e19b90e335697f4381510412efc }, Value(022000000000000000000000000000000000000000000000000000000000000000002004ea43107fafc12adcd09f6c68d63e194675d0ce843a7faf7cceb6c813db9d9a01))] }), events: [], gas_used: 191, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(a186010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "010000000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0100000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::validator_batch_remove.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::validator_batch_remove.exp index 3540728211..acc0a0e824 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::validator_batch_remove.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::emergency_admin_script::validator_batch_remove.exp @@ -1,14 +1,14 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0400000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406 }, Value(086f70657261746f72)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(00000b76616c696461746f725f31)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f31)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0300000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000300000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f31)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0300000000000000030000000000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(00000000000000000c000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180600000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000c51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000a2a4b23f5916b324c365bb9178680138010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0300000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 444, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(040000000000000004000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000400000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0400000000000000040000000000000004000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000a51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d00000000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0400000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0400000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759 }, Value(086f70657261746f72)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(00000b76616c696461746f725f31)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f31)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0300000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000300000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f31)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0300000000000000030000000000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(00000000000000000c000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180600000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000c51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000a2a4b23f5916b324c365bb9178680138010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0300000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 444, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(040000000000000004000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000400000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0400000000000000040000000000000004000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000a51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d00000000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0400000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_existing_not_dd.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_existing_not_dd.exp index 72dca0348c..9da6018af4 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_existing_not_dd.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_existing_not_dd.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000))] }), events: [], gas_used: 88, status: Keep(ABORTED { code: 5, location: 00000000000000000000000000000001::DesignatedDealer }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000))] }), events: [], gas_used: 88, status: Keep(ABORTED { code: 5, location: 00000000000000000000000000000001::DesignatedDealer }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_new_account.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_new_account.exp index da2d300aca..afa8a2ba07 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_new_account.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::mint_to_new_account.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 88, status: Keep(ABORTED { code: 5, location: 00000000000000000000000000000001::DesignatedDealer }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 88, status: Keep(ABORTED { code: 5, location: 00000000000000000000000000000001::DesignatedDealer }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_mint_designated_dealer.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_mint_designated_dealer.exp index 80043ae793..d9c1470ddd 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_mint_designated_dealer.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_mint_designated_dealer.exp @@ -1,4 +1,4 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(05000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a }, Value(00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0171dbab2f46fa3f82943b2c4cfd58073dc82b19a7612082843de3781cc69c2442 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01c6ea1327bfe3956aea6f64fdba62c720ef9c1e63d498391ac0b1cfacc0e48125 }, Value(e7030000000000800000000000000000000000000000000000000000010000000040420f0000000000640000000000000005436f696e310102000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000002000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a }, Value(01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3 }, Value(0000000000000000e803000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(e803000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DesignatedDealer"), name: Identifier("ReceivedMintEvent"), type_params: [] }), event_data: "05436f696e315455a8193f1dfc1b113ecc54d067afe1e803000000000000" }, ContractEvent { key: EventKey([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Libra"), name: Identifier("MintEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e310000000000000000000000000000000000" }], gas_used: 500, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01c6ea1327bfe3956aea6f64fdba62c720ef9c1e63d498391ac0b1cfacc0e48125 }, Value(274f4c00000000800000000000000000000000000000000000000000010000000040420f0000000000640000000000000005436f696e310103000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000006000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a }, Value(02000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3 }, Value(0000000000000000284f4c0000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(284f4c0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DesignatedDealer"), name: Identifier("ReceivedMintEvent"), type_params: [] }), event_data: "05436f696e315455a8193f1dfc1b113ecc54d067afe1404b4c0000000000" }, ContractEvent { key: EventKey([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Libra"), name: Identifier("MintEvent"), type_params: [] }), event_data: "404b4c000000000005436f696e31" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "404b4c000000000005436f696e310000000000000000000000000000000000" }], gas_used: 500, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0400000000000000))] }), events: [], gas_used: 148, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DesignatedDealer }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(05000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c }, Value(00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01f2a133f96cac512c6f2f3207542cd069a431efe3891378d20ca775cf3b3b8eeb }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0194ff005657e4cd22d938a381796224e911acc64ea7b0bedadeabbdc903784b91 }, Value(e7030000000000800000000000000000000000000000000000000000010000000040420f00000000006400000000000000035855530102000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000002000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c }, Value(01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0 }, Value(0000000000000000e803000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(e803000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DesignatedDealer"), name: Identifier("ReceivedMintEvent"), type_params: [] }), event_data: "035855535455a8193f1dfc1b113ecc54d067afe1e803000000000000" }, ContractEvent { key: EventKey([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Diem"), name: Identifier("MintEvent"), type_params: [] }), event_data: "e80300000000000003585553" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855530000000000000000000000000000000000" }], gas_used: 500, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0194ff005657e4cd22d938a381796224e911acc64ea7b0bedadeabbdc903784b91 }, Value(274f4c00000000800000000000000000000000000000000000000000010000000040420f00000000006400000000000000035855530103000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000006000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c }, Value(02000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001804000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0 }, Value(0000000000000000284f4c0000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(284f4c0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DesignatedDealer"), name: Identifier("ReceivedMintEvent"), type_params: [] }), event_data: "035855535455a8193f1dfc1b113ecc54d067afe1404b4c0000000000" }, ContractEvent { key: EventKey([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Diem"), name: Identifier("MintEvent"), type_params: [] }), event_data: "404b4c000000000003585553" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "404b4c0000000000035855530000000000000000000000000000000000" }], gas_used: 500, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0400000000000000))] }), events: [], gas_used: 148, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DesignatedDealer }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_update_exchange_rate.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_update_exchange_rate.exp index 338cb14fac..02e9b2bec1 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_update_exchange_rate.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::mint::tiered_update_exchange_rate.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01c6ea1327bfe3956aea6f64fdba62c720ef9c1e63d498391ac0b1cfacc0e48125 }, Value(ffffffffffffff7f00000000000000000000000000000000ae47e13a010000000040420f0000000000640000000000000005436f696e310101000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1801000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [ContractEvent { key: EventKey([9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Libra"), name: Identifier("ToLBRExchangeRateUpdateEvent"), type_params: [] }), event_data: "05436f696e31ae47e13a01000000" }], gas_used: 132, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0194ff005657e4cd22d938a381796224e911acc64ea7b0bedadeabbdc903784b91 }, Value(ffffffffffffff7f00000000000000000000000000000000ae47e13a010000000040420f00000000006400000000000000035855530101000000000000001805000000000000000000000000000000000000000a550c1800000000000000001806000000000000000000000000000000000000000a550c1800000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1801000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [ContractEvent { key: EventKey([9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Diem"), name: Identifier("ToXDXExchangeRateUpdateEvent"), type_params: [] }), event_data: "03585553ae47e13a01000000" }], gas_used: 132, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::bad_module_address.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::bad_module_address.exp index 42b235e238..c3237147ff 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::bad_module_address.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::bad_module_address.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380b00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380b00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::duplicate_module.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::duplicate_module.exp index 4aad5a9e48..1d27f52566 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::duplicate_module.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::duplicate_module.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b01000000030100020702020804100000014d5455a8193f1dfc1b113ecc54d067afe100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b01000000030100020702020804100000014d5455a8193f1dfc1b113ecc54d067afe100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_allow_modules.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_allow_modules.exp index 8e468ce065..b0022321a4 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_allow_modules.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_allow_modules.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b01000000030100020702020804100000014d5455a8193f1dfc1b113ecc54d067afe100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b01000000030100020702020804100000014d5455a8193f1dfc1b113ecc54d067afe100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_non_allowlist_script_proper_sender.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_non_allowlist_script_proper_sender.exp index 5d86ec0e03..3f95662618 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_non_allowlist_script_proper_sender.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_non_allowlist_script_proper_sender.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 00f88676b437e39b542d320278feed12b88969d0e8942b2a7c639cced2e358a37d }, Value(a11ceb0b01000000030100020702020804100000014d0000000000000000000000000000000100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 007fdd4786eafe2ee13c40e5053f7b2b04bfa4655c87738289f9cba124c888856e }, Value(a11ceb0b01000000030100020702020804100000014d0000000000000000000000000000000100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_proper_sender.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_proper_sender.exp index 5d86ec0e03..3f95662618 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_proper_sender.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::module_publishing::test_publishing_no_modules_proper_sender.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 00f88676b437e39b542d320278feed12b88969d0e8942b2a7c639cced2e358a37d }, Value(a11ceb0b01000000030100020702020804100000014d0000000000000000000000000000000100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 007fdd4786eafe2ee13c40e5053f7b2b04bfa4655c87738289f9cba124c888856e }, Value(a11ceb0b01000000030100020702020804100000014d0000000000000000000000000000000100))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::drop_txn_after_reconfiguration.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::drop_txn_after_reconfiguration.exp index 448055f96b..ed66f8bcb8 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::drop_txn_after_reconfiguration.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::drop_txn_after_reconfiguration.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d6e6cfb8152b64de92443d0187c2f2ba78c18d20243d1bde105270b6992ca952 }, Value(0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 206, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Retry }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a3408195082b97046d08ab4047eed60ba5231aa6c1c9ef715ecdefab88aef9d3 }, Value(0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 206, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Retry }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_libra_version.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_diem_version.exp similarity index 50% rename from language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_libra_version.exp rename to language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_diem_version.exp index f50707a7d3..bd32c0fdbe 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_libra_version.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::initial_diem_version.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d6e6cfb8152b64de92443d0187c2f2ba78c18d20243d1bde105270b6992ca952 }, Value(0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 206, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a3408195082b97046d08ab4047eed60ba5231aa6c1c9ef715ecdefab88aef9d3 }, Value(0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 206, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::update_script_allow_list.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::update_script_allow_list.exp index f877b56138..4685cad838 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::update_script_allow_list.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::update_script_allow_list.exp @@ -1,4 +1,4 @@ Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(UNKNOWN_SCRIPT) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01c57e4b1f2f0b310e31551b209d95863037d5d549f41f62d324aeabb6f44e0baf }, Value(23206d9d309c5cc6df4c7082817eb657904781b06b2071552ae762806fce3b62346320570b8627a80ded5704775fc18060d58af396bb72565952fb0920221cc21ea9d12019ea57b5051d34306353cc335baedbc022d28055cd6d76238a107ba43329593020a801d467df10ac00de027bc427637db66e8afc84a4bb94761b526016cb20a5ef208f019b20740269011c05d8348cc7501bed64c7d56b8726eb8f4e21a01bd2eb4c2018da4e8c53fed321d58770e6c3f455848935cdc26153c3b41c166995787cff1d205de6edd4b881622c4f7bc3bb9f2a1f98eeb8ca8483ad4e8dda3691c6bc5cbf3220bef38e6ed5ad51f0d060a4e194e4c8379cc6dfb60492c671a885f6752733866b2004ec5aec7f5cf5ea55e29cd65542134a7f4bb3c18421fecf00e5102dfe2d7efb20afabc7c4a2fd7b54734881f7e760e7d798cd93411839c20860a57e02eebd389320ae693591b0d7169f4a68da27859fc055053b317c81836d6ef66a1418b1e9db5b201a2c5cd660de7217f513bdfaa9c36bef8f384d018f128e7ddbb37dbb21f9b38f20387dce4a1f3421a369de8a48c070e7aa8e1e587ecadcf35fe254d3d8df0382b820ff9e545db9c3546d892de6c6716d0a45929a721a14d478da3d689900eb16a3942061749d43d8f10940be6944df85ddf13f0f8fb830269c601f481cc5ee3de731c820d01cd5656905ab073fefc899eb4af0c158ad3775d17f5d9731e5b5b040d52cfd20dfcfe1d8eb8e7a9dc1038b5d9d015c09c9e38ec6af310de7d5592de359092486202b124c549e828df9bc38c6d45779d155f973116f077d8f0faa92c4d25389a4c120c46e0e6d7579033024c73242b9a031d0d602f46222a79d1c86afcc07a1bbe59d206aa259be3a3f160a5d0d089fdf14d70a3579d23b34bad2ae1dee50f52275ed9c204820a09dae6cbfc9a77a060a919ad5913f91e6d52a75430c0672b44f241b70cc208a1a527d4bf4b4993d525f1c1458235b47c26582762c6ac59cbc3162a055549920157f747315d3cbf7695f6892b1aee3fb493d7fa231dd545fe5f173920b30e65720b4e23670c081e09e5da9f3c26aa31f84da8beab55ab299cfdddf64769551ed76206adcf90ce474223545e2c204c1b48fab4ce28693a1d9bf51fb0f06d687d22a3f20ccf81752586ce59142e3625dd4aa7463f1e7167812f7de0ac82a924a0638284b20b33b71a6e98a50d8f41f00af92feec4fd77ede12d3ceb5052e53c6291920620d207b7d7e02addc3dc14210d1db2baf17779b443b6dc9b70daf88cf4673d458f4292027d5e5756fd287f2c3e90bba57cfc82674b7d9890d9e65e4619b81fe6aa1d6c8200e9dceaf3a66b076acb0ddd29041ddea4316716da26c88fdd55dad5fd862a3e320b3a8003b1ebeafab289e75f8adec0f4fe80f7f220c01143173b0caf3b467fa6a208e756eee24336712dcd5d03e20f2b97db7b1f74e26f077d41ba02175874dfd8420431c979535f701b76bfb0c4b51f35d4893dd30d4dd52bdf2f31c7002c006736920ffbf8a2b64b711e61376c525a96b4206c791fc050e09a56c12d1ec187ad598ad20a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a00))] }), events: [], gas_used: 304, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f4b4c0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0173b513a3c85b52f7d770b697d8ccc1d679611e19b90e335697f4381510412efc }, Value(23202589feee1e4dea7012b3ce8923a10ef80e2ab360ffdb6ada4c9b013a1b08fb3a20f7545132388a933bb80c84a08dbd042c81c40fc420d222facaead14f3b2bc88920abbd26fac8f43d540f70b34d23aa27c7a67843d8c3e31cc0551a199eb8ed2c132035d8c3c72179615cf40bdef0e40fe56c8a7aff294b9015ee7e8c5707d02f4a0c2087ee3986a1f2b7fae111d017611798af62dcf075a722cd2a59ba9e53c25b4c142018da4e8c53fed321d58770e6c3f455848935cdc26153c3b41c166995787cff1d205c0ffcf26584a0eb64c79c5eb6c49f9f9a65968bc7538b59cabda8b95607b18e20bf800f1dee9d9f9d472d679a08e28a748fff71135ebfbb6c587f56068ac2028b20b84a5e3dfcd0aeefd7db94f16ebb2827db46927641aeee2acc6eec516bb711b5207f00777016cf8770922b6f91e1f7884721a80334f385ee65bbfc420d1bdf5c6b2079a16929e125dd1924efd846ed2bfae17803c63013cf4b7c865b7b6055a1f8a42033cd809f96523289a2f447dd6fff7208fff3f3dae3d3cff95bb2103580fc677920e1ad20307c5b7f202da07a6f83c946f6b44b30ea6fef56718a73bb8557e8d9c520ff9e545db9c3546d892de6c6716d0a45929a721a14d478da3d689900eb16a3942004ea43107fafc12adcd09f6c68d63e194675d0ce843a7faf7cceb6c813db9d9a2085149f6f2647f9b682b4ac759766c730627bcd49117ec1f5f7b11a7ea1e2128720dfcfe1d8eb8e7a9dc1038b5d9d015c09c9e38ec6af310de7d5592de359092486202b124c549e828df9bc38c6d45779d155f973116f077d8f0faa92c4d25389a4c120099a4352b3cb4afe8e862fdbe0cd0fb60a11d3fda5bc1b2359876bc024ed10da20fc493c1701f007d0958b2a461a79463220d70c24c301eb0d62834d74d6fb8445201d01e448e7a2dff96dd5d9007a4f0d63accc5ea3988cede0c7b319bfcb7c899c202d4bc2d0a8364ba8df9dd78e1357172f49a6e6f7b479c9fa74f849c20b0f967720157f747315d3cbf7695f6892b1aee3fb493d7fa231dd545fe5f173920b30e65720b4e23670c081e09e5da9f3c26aa31f84da8beab55ab299cfdddf64769551ed76206adcf90ce474223545e2c204c1b48fab4ce28693a1d9bf51fb0f06d687d22a3f20c53d52844332bf7df524ed5f6181c770de5d9960b7fb4f5ce99049e1b603610120b33b71a6e98a50d8f41f00af92feec4fd77ede12d3ceb5052e53c6291920620d207b7d7e02addc3dc14210d1db2baf17779b443b6dc9b70daf88cf4673d458f429200718b7826d70196405eacc6643e444b67310c843694389f4085537128dfa538c200e9dceaf3a66b076acb0ddd29041ddea4316716da26c88fdd55dad5fd862a3e320c7867dc0e3fd4bb68df0de4df83ea562d7f0ef37158f4c22c3187618eddbe6c920e4b3a7ca4ac6910383daf0da691c0fb03db8eefc6bf5e987cdeadb1cd512c78520ed7fff3d35644bdb8236662125e6f1bd65aa1c755dc6294e23e92cedb63b8a7420fb0c8a78d75796fd753ba99863d2e471d8ce45b96c1a0dba42ba543343d88d6720a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a00))] }), events: [], gas_used: 304, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f4b4c0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::updated_limit_allows_txn.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::updated_limit_allows_txn.exp index 3c81184bb9..7acfe33609 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::updated_limit_allows_txn.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::on_chain_configs::updated_limit_allows_txn.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01ccf44896b2d4ffb26fd7318d744385a4c17c2ef345bd9bcb4988768201372b2b }, Value(4b420f0000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 111, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f6083d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(4a420f0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "4a420f000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "4a420f000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 011b6fd2b29c20f5f779d150d47ccdab6f3b4a6ebe0dcf306886bf2194ef6bb89e }, Value(4b420f0000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 111, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f6083d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(4a420f0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "4a420f000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "4a420f0000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::few_peer_to_peer_with_event.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::few_peer_to_peer_with_event.exp index 3b68a19e6b..1938a36004 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::few_peer_to_peer_with_event.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::few_peer_to_peer_with_event.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(d8c22d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(a8ca2d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f0be2d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(90ce2d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(08bb2d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380300000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(78d22d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe104000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(20b72d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380400000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(60d62d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(d8c22d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(a8ca2d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f0be2d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(90ce2d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe103000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(08bb2d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380300000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(78d22d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }, TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe104000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(20b72d0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380400000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(60d62d0000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_event.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_event.exp index 2f10c1e81a..8ee45a8de5 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_event.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_event.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(583e0f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(888a010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(583e0f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(888a010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 493, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_padding.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_padding.exp index 031d46aecd..9fca3e9895 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_padding.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::single_peer_to_peer_with_padding.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(583e0f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(888a010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e80300000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 499, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(583e0f0000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(888a010000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "e80300000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "e803000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 499, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::zero_amount_peer_to_peer.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::zero_amount_peer_to_peer.exp index ed6d6942e3..c77ccdcb09 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::zero_amount_peer_to_peer.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::peer_to_peer::zero_amount_peer_to_peer.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 266, status: Keep(ABORTED { code: 519, location: 00000000000000000000000000000001::LibraAccount }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 266, status: Keep(ABORTED { code: 519, location: 00000000000000000000000000000001::DiemAccount }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_key.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_key.exp index 55ac635ea4..9ba4b29837 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_key.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_key.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(INVALID_AUTH_KEY) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_multisig_key.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_multisig_key.exp index aeea724a7b..c9d4dfe58f 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_multisig_key.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::rotate_key::rotate_ed25519_multisig_key.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c3719640b67074ec5aad6545c1e5b9a7f9f2ac468efe35ee53476a1fbb9a2e6c015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_bad_sig_function_dep.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_bad_sig_function_dep.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_bad_sig_function_dep.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_bad_sig_function_dep.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_code_unverifiable.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_code_unverifiable.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_code_unverifiable.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_code_unverifiable.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_nested_type_argument_module_does_not_exist.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_nested_type_argument_module_does_not_exist.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_nested_type_argument_module_does_not_exist.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_nested_type_argument_module_does_not_exist.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_non_existing_function_dep.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_non_existing_function_dep.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_non_existing_function_dep.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_non_existing_function_dep.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_none_existing_module_dep.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_none_existing_module_dep.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_none_existing_module_dep.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_none_existing_module_dep.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_type_argument_module_does_not_exist.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_type_argument_module_does_not_exist.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_type_argument_module_does_not_exist.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::scripts::script_type_argument_module_does_not_exist.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::add_child_currencies.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::add_child_currencies.exp index 4d3855f5e4..0a80245ead 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::add_child_currencies.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::add_child_currencies.exp @@ -1,11 +1,11 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01c57e4b1f2f0b310e31551b209d95863037d5d549f41f62d324aeabb6f44e0baf }, Value(0000))] }), events: [], gas_used: 127, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 00ff7ba625880a4f48e60062270de22889bcbad026543d03d85e845ed6fd221b01 }, Value(a11ceb0b010000000a010006020608030e10041e0205201a073a4a08840110069401080a9c01050ca10134000000010002000001000202020000030001000205020300010605010101020402060c060c0002030301080101080006060c060c080103030a0204434f494e054c696272610c4669786564506f696e74333204696e69740178146372656174655f66726f6d5f726174696f6e616c1572656769737465725f5343535f63757272656e6379000000000000000000000000000000010a020504434f494e0002010401000100010a0b000b01060100000000000000060100000000000000110106640000000000000006e803000000000000070038000200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(17000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01f093293c23e7acf8fa7b5d6007a807502b1260aab343e20d0f55fd8f9b9c4ae2 }, Value(0305436f696e31034c425204434f494e)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01063e4b428cc12c29bce7fa877816a70b3d00703b6019ef76906a20a2419666db }, Value(0000000000000000000000000000000000000000000000000000000001000000006400000000000000e80300000000000004434f494e0100000000000000001812000000000000000000000000000000000000000a550c1800000000000000001813000000000000000000000000000000000000000a550c1800000000000000001814000000000000000000000000000000000000000a550c1800000000000000001815000000000000000000000000000000000000000a550c1800000000000000001816000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01375d795b1c3235ccd16194c39cda6cf71f31549521df641826c18efc5ee2444c }, Value(00)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01655c1cd314b633f19b2ba19f95142c5ac091c65021adabf065ba5dd468eb28ef }, Value(00))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c93d803973675a51e37c59a81d2e00e05de3f1c8568783430e8e4bf99dc9cad5 }, Value(0000000000000000))] }), events: [], gas_used: 92, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0400000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000094713995e6e80e20e8478b613c5d0a1c)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ed7f9bbda84ca34619971897d744b7db94713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c000000000000000018000000000000000094713995e6e80e20e8478b613c5d0a1c000000000000000018010000000000000094713995e6e80e20e8478b613c5d0a1c0000000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01c93d803973675a51e37c59a81d2e00e05de3f1c8568783430e8e4bf99dc9cad5 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 27, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "94713995e6e80e20e8478b613c5d0a1c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0173b513a3c85b52f7d770b697d8ccc1d679611e19b90e335697f4381510412efc }, Value(0000))] }), events: [], gas_used: 127, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 00de4332c46cb85f85213d006eaff3a07b86464558e1ff783c1a7173a5abc03471 }, Value(a11ceb0b010000000a010006020608030e10041e0205201a073a4908830110069301080a9b01050ca00134000000010002000001000202020000030001000205020300010605010101020402060c060c0002030301080101080006060c060c080103030a0204434f494e044469656d0c4669786564506f696e74333204696e69740178146372656174655f66726f6d5f726174696f6e616c1572656769737465725f5343535f63757272656e6379000000000000000000000000000000010a020504434f494e0002010401000100010a0b000b01060100000000000000060100000000000000110106640000000000000006e803000000000000070038000200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(17000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011a9c40c64d16154570770496ad7c53b755682b25a3e020b951570c86ec704b0f }, Value(03035855530358445804434f494e)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01b9669863b770ebc22529afffad250cf18c30ff8c474c585a27b8ebe3593d8eb8 }, Value(0000000000000000000000000000000000000000000000000000000001000000006400000000000000e80300000000000004434f494e0100000000000000001812000000000000000000000000000000000000000a550c1800000000000000001813000000000000000000000000000000000000000a550c1800000000000000001814000000000000000000000000000000000000000a550c1800000000000000001815000000000000000000000000000000000000000a550c1800000000000000001816000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01bb08fac90a2fd88125cca0ac1517693cb7ab0b89f0847f16f205b0339589eaa6 }, Value(00)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01611cb4bdedddbcc46b704b4efd5b740fdccfc4f5008efbc7799ffabc80b68c14 }, Value(00))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01cf8da192c8fa377b1f377bbf4892e4afd6effc1136e827718035e2e58bcfb294 }, Value(0000000000000000))] }), events: [], gas_used: 92, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0400000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1163, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000094713995e6e80e20e8478b613c5d0a1c)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ed7f9bbda84ca34619971897d744b7db94713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c000000000000000018000000000000000094713995e6e80e20e8478b613c5d0a1c000000000000000018010000000000000094713995e6e80e20e8478b613c5d0a1c0000000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01cf8da192c8fa377b1f377bbf4892e4afd6effc1136e827718035e2e58bcfb294 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 27, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "94713995e6e80e20e8478b613c5d0a1c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_all_currencies.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_all_currencies.exp index c2a3526c41..33f3009db9 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_all_currencies.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_all_currencies.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(9bffffffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(6400000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(6400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 1643, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(9bffffffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(6400000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "6400000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000003585553000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(6400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "6400000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 1643, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_with_balance.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_with_balance.exp index c2a3526c41..33f3009db9 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_with_balance.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_child_vasp_with_balance.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(9bffffffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(6400000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(6400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 1643, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(9bffffffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(6400000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "6400000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "640000000000000003585553000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(6400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "640000000000000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "6400000000000000035855535455a8193f1dfc1b113ecc54d067afe100" }], gas_used: 1643, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_parent_and_child_vasp.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_parent_and_child_vasp.exp index f0c62f92f2..7fdde0eba4 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_parent_and_child_vasp.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::create_parent_and_child_vasp.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(00086e65775f6e616d6520e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e6ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "086e65775f6e616d650000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e60000000000000000" }], gas_used: 129, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(00086e65775f6e616d6520e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e6ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "086e65775f6e616d650000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e60000000000000000" }], gas_used: 129, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dd_dual_attestation_payments.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dd_dual_attestation_payments.exp index a85ac17c19..70735fe313 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dd_dual_attestation_payments.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dd_dual_attestation_payments.exp @@ -1,15 +1,15 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0500000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a }, Value(0000000000000000180000000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0171dbab2f46fa3f82943b2c4cfd58073dc82b19a7612082843de3781cc69c2442 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0500000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 011f910479a51505195cae0f5f9394605679daad2b284aa61c990c7ce8b0fc1f6a }, Value(0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0171dbab2f46fa3f82943b2c4cfd58073dc82b19a7612082843de3781cc69c2442 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0172cc3d56b1931722e278d74fdb32a2fe245f288ac9910ebe42833e7868675fb3 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(0012616e7920626173655f75726c20776f726b7320e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e6ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e60000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(0012616e7920626173655f75726c20776f726b7320959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af41ffffffffffffffff0100000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af410000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(0012616e7920626173655f75726c20776f726b7320a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c284ffffffffffffffff0100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c2840000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(ffaf2923feffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0050d6dc01000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0050d6dc0100000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0050d6dc0100000005436f696e31000000000000000000000000000000dd00" }], gas_used: 511, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(ff87be34fdffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00286bee0000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00286bee0000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 509, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000180400000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00bca06501000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb91786801380100" }], gas_used: 511, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000180400000000000000a2a4b23f5916b324c365bb91786801380300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00286bee00000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31bd7274c6b2a874f316af7b0b1a1add62080f27000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb9178680138080f27000000000000" }], gas_used: 1114, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00bca06501000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000180400000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e315455a8193f1dfc1b113ecc54d067afe10100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb91786801380100" }], gas_used: 509, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0050d6dc01000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e315455a8193f1dfc1b113ecc54d067afe1080f27000000000000" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb9178680138080f27000000000000" }], gas_used: 1111, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00bca06501000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb91786801380100" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e315455a8193f1dfc1b113ecc54d067afe10100" }], gas_used: 515, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00286bee00000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb9178680138080f27000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e315455a8193f1dfc1b113ecc54d067afe1080f27000000000000" }], gas_used: 1111, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 307, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0500000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c }, Value(0000000000000000180000000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f2a133f96cac512c6f2f3207542cd069a431efe3891378d20ca775cf3b3b8eeb }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0500000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01b71ecbd94907c3c663e1475658ed7ea1f32c8eca46ff4470bfe72bbff076a51c }, Value(0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f2a133f96cac512c6f2f3207542cd069a431efe3891378d20ca775cf3b3b8eeb }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 012b6cbe9dbd764f1389a58edfefa645e893f8996cbb641ed86c009e0e1b236eb0 }, Value(00000000000000000000000000000000040088526a74000000005039278c04000000203d88792d000000406352bfc60100)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620200000000000000" }], gas_used: 2454, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(0012616e7920626173655f75726c20776f726b7320e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e6ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e60000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(0012616e7920626173655f75726c20776f726b7320959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af41ffffffffffffffff0100000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af410000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(0012616e7920626173655f75726c20776f726b7320a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c284ffffffffffffffff0100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c2840000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(ffaf2923feffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000180400000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0050d6dc01000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0050d6dc0100000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0050d6dc0100000003585553000000000000000000000000000000dd00" }], gas_used: 511, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0200000000000000180400000000000000000000000000000000000000000000dd0200000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(ff87be34fdffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00286bee00000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00286bee0000000003585553000000000000000000000000000000dd00" }], gas_used: 509, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000180400000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00bca06501000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb91786801380100" }], gas_used: 511, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000180400000000000000a2a4b23f5916b324c365bb91786801380300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00286bee00000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180400000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553bd7274c6b2a874f316af7b0b1a1add62080f27000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb9178680138080f27000000000000" }], gas_used: 1099, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe102000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00bca06501000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000180400000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0094357700000000035855535455a8193f1dfc1b113ecc54d067afe10100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb91786801380100" }], gas_used: 509, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0050d6dc01000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0094357700000000035855535455a8193f1dfc1b113ecc54d067afe1080f27000000000000" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb9178680138080f27000000000000" }], gas_used: 1097, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00bca06501000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0094357700000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb91786801380100" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0094357700000000035855535455a8193f1dfc1b113ecc54d067afe10100" }], gas_used: 515, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00286bee00000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000180400000000000000a2a4b23f5916b324c365bb91786801380500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00286bee00000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb9178680138080f27000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0094357700000000035855535455a8193f1dfc1b113ecc54d067afe1080f27000000000000" }], gas_used: 1097, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe103000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 307, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dual_attestation_payment.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dual_attestation_payment.exp index 739b138f71..3819a96d6b 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dual_attestation_payment.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::dual_attestation_payment.exp @@ -1,18 +1,18 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0400000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(0012616e7920626173655f75726c20776f726b7320959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af41ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af410000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(ff37e857fbffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(00c817a804000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00c817a80400000005436f696e31a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00c817a80400000005436f696e31000000000000000000000000000000dd00" }], gas_used: 509, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f6c717a804000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e31bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a0000000000000005436f696e31a2a4b23f5916b324c365bb917868013800" }], gas_used: 1550, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0094357700000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380200000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f633e23004000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e315455a8193f1dfc1b113ecc54d067afe108611e000000000000" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb917868013808611e000000000000" }], gas_used: 1109, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0094357700000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f69facb903000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e3118da06a3cf5e1d6075fa744eebd32fb708611e000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb917868013808611e000000000000" }], gas_used: 1151, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 309, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 964, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 963, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f67741cb02000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0a286bee00000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00286bee0000000005436f696e31bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00286bee0000000005436f696e31a2a4b23f5916b324c365bb91786801380100" }], gas_used: 544, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380500000000000000))] }), events: [], gas_used: 307, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(f60b774203000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0a94357700000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31a2a4b23f5916b324c365bb91786801380100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31bd7274c6b2a874f316af7b0b1a1add620100" }], gas_used: 544, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0a94357700000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000005436f696e31bd7274c6b2a874f316af7b0b1a1add620100" }], gas_used: 518, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(0012616e7920626173655f75726c20776f726b7320a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c284ffffffffffffffff02000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c2840000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380500000000000000))] }), events: [], gas_used: 964, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 340, status: Keep(ABORTED { code: 1281, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0400000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(0012616e7920626173655f75726c20776f726b7320959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af41ffffffffffffffff01000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe101000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af410000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(ff37e857fbffff7f)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380000000000000000180300000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(00c817a804000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00c817a80400000003585553a2a4b23f5916b324c365bb917868013800" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00c817a80400000003585553000000000000000000000000000000dd00" }], gas_used: 509, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380100000000000000180300000000000000a2a4b23f5916b324c365bb91786801380100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f6c717a804000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620100000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }, ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0a0000000000000003585553bd7274c6b2a874f316af7b0b1a1add6200" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "0a0000000000000003585553a2a4b23f5916b324c365bb917868013800" }], gas_used: 1550, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0094357700000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380200000000000000180300000000000000a2a4b23f5916b324c365bb91786801380200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f633e23004000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "0094357700000000035855535455a8193f1dfc1b113ecc54d067afe108611e000000000000" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb917868013808611e000000000000" }], gas_used: 1095, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7010000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0094357700000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f69facb903000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00943577000000000358555318da06a3cf5e1d6075fa744eebd32fb708611e000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 24, 218, 6, 163, 207, 94, 29, 96, 117, 250, 116, 78, 235, 211, 47, 183]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb917868013808611e000000000000" }], gas_used: 1136, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 309, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 950, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380300000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000))] }), events: [], gas_used: 949, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f67741cb02000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0a286bee00000000))] }), events: [ContractEvent { key: EventKey([3, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 3, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "00286bee0000000003585553bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "00286bee0000000003585553a2a4b23f5916b324c365bb91786801380100" }], gas_used: 544, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380100000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380500000000000000))] }), events: [], gas_used: 307, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(f60b774203000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620200000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0a94357700000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553a2a4b23f5916b324c365bb91786801380100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 162, 164, 178, 63, 89, 22, 179, 36, 195, 101, 187, 145, 120, 104, 1, 56]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553bd7274c6b2a874f316af7b0b1a1add620100" }], gas_used: 544, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620300000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0a94357700000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553bd7274c6b2a874f316af7b0b1a1add620100" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 189, 114, 116, 198, 178, 168, 116, 243, 22, 175, 123, 11, 26, 26, 221, 98]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "009435770000000003585553bd7274c6b2a874f316af7b0b1a1add620100" }], gas_used: 518, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(0012616e7920626173655f75726c20776f726b7320a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c284ffffffffffffffff02000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe102000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("BaseUrlRotationEvent"), type_params: [] }), event_data: "12616e7920626173655f75726c20776f726b730000000000000000" }, ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DualAttestation"), name: Identifier("ComplianceKeyRotationEvent"), type_params: [] }), event_data: "20a735156fab6c0109478dff9dfe807a838a2264f0a1e51939a710fc335792c2840000000000000000" }], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380200000000000000180200000000000000a2a4b23f5916b324c365bb91786801380400000000000000180300000000000000a2a4b23f5916b324c365bb91786801380500000000000000))] }), events: [], gas_used: 950, status: Keep(ABORTED { code: 1031, location: 00000000000000000000000000000001::DualAttestation }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000))] }), events: [], gas_used: 340, status: Keep(ABORTED { code: 1281, location: 00000000000000000000000000000001::DualAttestation }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::freeze_unfreeze_account.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::freeze_unfreeze_account.exp index a2a5c82a46..39f7e93715 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::freeze_unfreeze_account.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::freeze_unfreeze_account.exp @@ -1,5 +1,5 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 011a3c18d19411e76ac7acc442296296225ae5b5644bef0ab21f7efa2986fd9017 }, Value(0100000000000000180f000000000000000000000000000000000000000a550c1800000000000000001810000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(01))] }), events: [ContractEvent { key: EventKey([15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("AccountFreezing"), name: Identifier("FreezeAccountEvent"), type_params: [] }), event_data: "0000000000000000000000000b1e55ed5455a8193f1dfc1b113ecc54d067afe1" }], gas_used: 166, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0145a88b0bd5bfa89a7c07e9669a6164debb4a1c39a89d6e87a879976dd55b56a5 }, Value(0100000000000000180f000000000000000000000000000000000000000a550c1800000000000000001810000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(01))] }), events: [ContractEvent { key: EventKey([15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("AccountFreezing"), name: Identifier("FreezeAccountEvent"), type_params: [] }), event_data: "0000000000000000000000000b1e55ed5455a8193f1dfc1b113ecc54d067afe1" }], gas_used: 166, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(SENDING_ACCOUNT_FROZEN) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 011a3c18d19411e76ac7acc442296296225ae5b5644bef0ab21f7efa2986fd9017 }, Value(0100000000000000180f000000000000000000000000000000000000000a550c1801000000000000001810000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000018000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00))] }), events: [ContractEvent { key: EventKey([16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("AccountFreezing"), name: Identifier("UnfreezeAccountEvent"), type_params: [] }), event_data: "0000000000000000000000000b1e55ed5455a8193f1dfc1b113ecc54d067afe1" }], gas_used: 146, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0145a88b0bd5bfa89a7c07e9669a6164debb4a1c39a89d6e87a879976dd55b56a5 }, Value(0100000000000000180f000000000000000000000000000000000000000a550c1801000000000000001810000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000018000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00))] }), events: [ContractEvent { key: EventKey([16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("AccountFreezing"), name: Identifier("UnfreezeAccountEvent"), type_params: [] }), event_data: "0000000000000000000000000b1e55ed5455a8193f1dfc1b113ecc54d067afe1" }], gas_used: 146, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::publish_rotate_shared_ed25519_public_key.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::publish_rotate_shared_ed25519_public_key.exp index 9303796918..b472d72aab 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::publish_rotate_shared_ed25519_public_key.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::publish_rotate_shared_ed25519_public_key.exp @@ -1,3 +1,3 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b5d92429a8648f99bcf93f1db0f38ab8a255bd9c68083471f8da5d7f35af0d1c }, Value(20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e65455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 155, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b5d92429a8648f99bcf93f1db0f38ab8a255bd9c68083471f8da5d7f35af0d1c }, Value(20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af415455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 86, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b5d92429a8648f99bcf93f1db0f38ab8a255bd9c68083471f8da5d7f35af0d1c }, Value(20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af415455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 86, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b8de352f67a89de82bb0a21f8ee4b924e9f5600368e95c893171a63733f463fb }, Value(20e14c7ddb7713c9c7315f337393f4261d1713a5f8c6c6e14c4986e616460251e65455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 155, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b8de352f67a89de82bb0a21f8ee4b924e9f5600368e95c893171a63733f463fb }, Value(20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af415455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 86, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb9178680138015455a8193f1dfc1b113ecc54d067afe10000000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01b8de352f67a89de82bb0a21f8ee4b924e9f5600368e95c893171a63733f463fb }, Value(20959c80fdfe1699e513951a5013428bb15cec1f4c0cc27cb3c802bcf77611af415455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 86, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::recovery_address.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::recovery_address.exp index 1bbed40d06..23dd331ebd 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::recovery_address.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_builder::recovery_address.exp @@ -1,9 +1,9 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 010ee20def5ea5259e1e49f3ec33db727f7edd48e595759dc9b37ef2b45bd71f67 }, Value(015455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 134, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 010ee20def5ea5259e1e49f3ec33db727f7edd48e595759dc9b37ef2b45bd71f67 }, Value(025455a8193f1dfc1b113ecc54d067afe1a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 158, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 90, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 90, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0400000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 117, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::RecoveryAddress }) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 28, status: Keep(ABORTED { code: 519, location: 00000000000000000000000000000001::RecoveryAddress }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e8af9e59348c99e9bedd90059e125d1059f80271dcfa4362b02f7e263ce6ec72 }, Value(015455a8193f1dfc1b113ecc54d067afe1))] }), events: [], gas_used: 134, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e8af9e59348c99e9bedd90059e125d1059f80271dcfa4362b02f7e263ce6ec72 }, Value(025455a8193f1dfc1b113ecc54d067afe1a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 158, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe10000000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 90, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201a2a4b23f5916b324c365bb9178680138000000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [], gas_used: 90, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0400000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff0000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 117, status: Keep(ABORTED { code: 775, location: 00000000000000000000000000000001::RecoveryAddress }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180200000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180300000000000000bd7274c6b2a874f316af7b0b1a1add620100000000000000))] }), events: [], gas_used: 28, status: Keep(ABORTED { code: 519, location: 00000000000000000000000000000001::RecoveryAddress }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_fees::burn_txn_fees.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_fees::burn_txn_fees.exp index 88ad551220..185c826a4e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_fees::burn_txn_fees.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::transaction_fees::burn_txn_fees.exp @@ -1,4 +1,4 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(7f6967ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(8096980000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "809698000000000005436f696e315455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "809698000000000005436f696e31000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(82000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(fe95980000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01c6ea1327bfe3956aea6f64fdba62c720ef9c1e63d498391ac0b1cfacc0e48125 }, Value(7dffffffffffff7f0000000000000000000000000000000000000000010000000040420f0000000000640000000000000005436f696e310101000000000000001805000000000000000000000000000000000000000a550c1801000000000000001806000000000000000000000000000000000000000a550c1801000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01a13858f5493a029359d2126b3aef98e9dace1d86a71be3a514a98b3bd253c847 }, Value(00)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(00000000000000000000000000000000))] }), events: [ContractEvent { key: EventKey([7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Libra"), name: Identifier("PreburnEvent"), type_params: [] }), event_data: "820000000000000005436f696e310000000000000000000000000b1e55ed" }, ContractEvent { key: EventKey([6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Libra"), name: Identifier("BurnEvent"), type_params: [] }), event_data: "820000000000000005436f696e310000000000000000000000000b1e55ed" }], gas_used: 412, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1642, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 000000000000000000000000000000dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a0001000000000000000000000000000000dd01000000000000000000000000000000dd0100000000000000180300000000000000000000000000000000000000000000dd0100000000000000180400000000000000000000000000000000000000000000dd0100000000000000)), (AccessPath { address: 000000000000000000000000000000dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(7f6967ffffffff7f)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(8096980000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("SentPaymentEvent"), type_params: [] }), event_data: "8096980000000000035855535455a8193f1dfc1b113ecc54d067afe100" }, ContractEvent { key: EventKey([2, 0, 0, 0, 0, 0, 0, 0, 84, 85, 168, 25, 63, 29, 252, 27, 17, 62, 204, 84, 208, 103, 175, 225]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("ReceivedPaymentEvent"), type_params: [] }), event_data: "809698000000000003585553000000000000000000000000000000dd00" }], gas_used: 491, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(82000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe101000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(fe95980000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0194ff005657e4cd22d938a381796224e911acc64ea7b0bedadeabbdc903784b91 }, Value(7dffffffffffff7f0000000000000000000000000000000000000000010000000040420f00000000006400000000000000035855530101000000000000001805000000000000000000000000000000000000000a550c1801000000000000001806000000000000000000000000000000000000000a550c1801000000000000001807000000000000000000000000000000000000000a550c1800000000000000001808000000000000000000000000000000000000000a550c1800000000000000001809000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0200000000000000)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0117f27d1c2e56cd2e47dfb5517450adce789a24ad711e734d3210ff8254801af0 }, Value(00)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(00000000000000000000000000000000))] }), events: [ContractEvent { key: EventKey([7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Diem"), name: Identifier("PreburnEvent"), type_params: [] }), event_data: "8200000000000000035855530000000000000000000000000b1e55ed" }, ContractEvent { key: EventKey([6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("Diem"), name: Identifier("BurnEvent"), type_params: [] }), event_data: "8200000000000000035855530000000000000000000000000b1e55ed" }], gas_used: 412, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_add.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_add.exp index 243bd39b81..c653d1146c 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_add.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_add.exp @@ -1,6 +1,6 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406 }, Value(0a6f70657261746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759 }, Value(0a6f70657261746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_rotate_key_and_reconfigure.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_rotate_key_and_reconfigure.exp index e24bf7ce75..35a5803aad 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_rotate_key_and_reconfigure.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_rotate_key_and_reconfigure.exp @@ -1,8 +1,8 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406 }, Value(05626f626279)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1003, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0aa3e11100000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000aa3e11100000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(03000000000000000aa3e1110000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0aa3e11100000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(01203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 584, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759 }, Value(05626f626279)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1003, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000004000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0100000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0aa3e11100000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000aa3e11100000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(03000000000000000aa3e1110000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0aa3e11100000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(01203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 584, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_set_operator_set_key_reconfigure.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_set_operator_set_key_reconfigure.exp index 6658292c27..98c979b8b5 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_set_operator_set_key_reconfigure.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::validator_set_management::validator_set_operator_set_key_reconfigure.exp @@ -1,11 +1,11 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406 }, Value(0a6f70657261746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0400000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f3f731b194298f1e3247472eb1f71f6eafc6b198004f03887f5a84292cedf406 }, Value(0a6f70657261746f725f31)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(01203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000020000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01d9f23b02755c18b16ed8347f25b543f75378a7f06fc097cfda338cf1c24c8934 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0aa3e11100000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000aa3e11100000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(03000000000000000aa3e1110000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 011d57af3a45c686035178347e1b50849f0c2bad90b2baa2ead36bd208450ed175 }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0aa3e11100000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 018c65376be60a3721fbec595c560878a7fc554c12a03f6b895cc89d20a2a6cd97 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 584, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0400000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759 }, Value(0a6f70657261746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180300000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0400000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01c28655b9b5cd93f75953eaa5f77a1bf0032c5ca04c89f920c9ebaba74aa15759 }, Value(0a6f70657261746f725f31)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620400000000000000" }], gas_used: 1004, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(00000b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10300000000000000" }], gas_used: 1009, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(020000000000000002000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000200000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001bd7274c6b2a874f316af7b0b1a1add620b76616c696461746f725f30))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0001a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 102, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(01203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380100000000000000))] }), events: [], gas_used: 125, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000020000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0169e6b1d48fbec15097a889c56e05d93bfb8c0b02bad095293273bba2917d76b7 }, Value(000000000000000008000000000000000000000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180500000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000203d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 438, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0aa3e11100000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(030000000000000003000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000aa3e11100000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(03000000000000000aa3e1110000000003000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 015fe98e54e7482fad2f5b6c3625424744ea87d14bba5b3fd2071b761e250a81be }, Value(000b51c1b9fc2f32d6f2fff669823ef31cbe0100000000000000204d4b18062f8502598de045ca7b69f067f59f93b16e3af8733a988adc2341f5c8000000000000000000001c1cc578b7ad636a641bacde6a3897fe01000000000000002049cf7548e60a3c0603b620724b2c2353fcc6560e81269131dca856b05cb5ac7700000000000000000000618e256442de3b01cc6d9d73656ef4c50100000000000000204206cd98471540e500d05cfba60d0bcf8531d2cb2a18fce152b93ad8f146716200000000000000000000af6d2e88283fb974862e6b8c33073f86010000000000000020b42be1c39cf7fa149f74e52f22b7426167b77553999ed221a4c85e27fc4d3178000000000000000000008112676dfbe8eb6f094bb55dab905640010000000000000020c054774afe375bda1be5b4636dac6b76ff4721eb5eb76e0cca1c9bba6bf547d5000000000000000000004089b702174c5176124978ab4f78a2fb01000000000000002010cbdf4af3c8b6f19745dbaffa3d558afb8099f0954416fcaa82c18ce85c6a740000000000000000000097663c1fee3414def11154269d65bc14010000000000000020ae451f42c8f52907c66b8317a7ab26500e89ee2a5988b12498a841d1b0f0e70e00000000000000000000965f83d9531a13e5905a50036c6bd053010000000000000020adf53908c9d0ec475e56a8e88dcc58a74c9dbc3b048296b836db4ad3a1420d1300000000000000000000e9fa579d74416739c73dadc8e5dd5c9c010000000000000020974f22e4d59fedeb16d4eb97f657ec3892a76074613b5d65ce5541498278e0ae000000000000000000007376c6702698ba69869abba9370269240100000000000000200ae1fc9fd1b63f828f6dd5f597cf0361b24b6cd5bd0ea25a5f07c6e8d753518d000000000000000000005455a8193f1dfc1b113ecc54d067afe1010000000000000020d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd0aa3e11100000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0163dbc3422ef71915f9738cc48666a9ea5702a6c59c54820381b08bcff9a05131 }, Value(0120d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a20fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe20fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd01a2a4b23f5916b324c365bb91786801380b76616c696461746f725f30)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380200000000000000))] }), events: [ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 2, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0300000000000000" }], gas_used: 584, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::max_child_accounts_for_vasp.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::max_child_accounts_for_vasp.exp index 354ccc2366..c9b4c89c2b 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::max_child_accounts_for_vasp.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::max_child_accounts_for_vasp.exp @@ -1,258 +1,258 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000094713995e6e80e20e8478b613c5d0a1c)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ed7f9bbda84ca34619971897d744b7db94713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c000000000000000018000000000000000094713995e6e80e20e8478b613c5d0a1c000000000000000018010000000000000094713995e6e80e20e8478b613c5d0a1c0000000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 27, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "94713995e6e80e20e8478b613c5d0a1c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003eaa3cd380f64d53a9774c807ed24edd)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2099564e392e1b66cfc4cc132dee4260af3eaa3cd380f64d53a9774c807ed24edd013eaa3cd380f64d53a9774c807ed24edd013eaa3cd380f64d53a9774c807ed24edd00000000000000001800000000000000003eaa3cd380f64d53a9774c807ed24edd00000000000000001801000000000000003eaa3cd380f64d53a9774c807ed24edd0000000000000000)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 28, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3eaa3cd380f64d53a9774c807ed24edd0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10600000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000adbd34af209df0d2405a410ac1cf5899)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a968f3bbde7dfdeee91e900b40d5dc9aadbd34af209df0d2405a410ac1cf589901adbd34af209df0d2405a410ac1cf589901adbd34af209df0d2405a410ac1cf58990000000000000000180000000000000000adbd34af209df0d2405a410ac1cf58990000000000000000180100000000000000adbd34af209df0d2405a410ac1cf58990000000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 29, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "adbd34af209df0d2405a410ac1cf58990600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(001f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10700000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008a19a2e1b098c8751c40062f1b9fdc0a)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20700d63590df528affe6468249273db0a8a19a2e1b098c8751c40062f1b9fdc0a018a19a2e1b098c8751c40062f1b9fdc0a018a19a2e1b098c8751c40062f1b9fdc0a00000000000000001800000000000000008a19a2e1b098c8751c40062f1b9fdc0a00000000000000001801000000000000008a19a2e1b098c8751c40062f1b9fdc0a0000000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 30, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8a19a2e1b098c8751c40062f1b9fdc0a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0020000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10800000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ed8203a4f08409faa853fe075dda380a)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f3487802e7529d97a2d15e64247e4cf0ed8203a4f08409faa853fe075dda380a01ed8203a4f08409faa853fe075dda380a01ed8203a4f08409faa853fe075dda380a0000000000000000180000000000000000ed8203a4f08409faa853fe075dda380a0000000000000000180100000000000000ed8203a4f08409faa853fe075dda380a0000000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 31, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ed8203a4f08409faa853fe075dda380a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0021000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001b90d2c4f35d14315a3cd0a479cca525)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20420a2e51feec470742c0edfb09116b3e1b90d2c4f35d14315a3cd0a479cca525011b90d2c4f35d14315a3cd0a479cca525011b90d2c4f35d14315a3cd0a479cca52500000000000000001800000000000000001b90d2c4f35d14315a3cd0a479cca52500000000000000001801000000000000001b90d2c4f35d14315a3cd0a479cca5250000000000000000)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 32, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b90d2c4f35d14315a3cd0a479cca5250600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0022000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10a00000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ef0fcf810ddae697b22f7f55fb0e129d)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20425b2e8f85238a3a9891c3e5708efbccef0fcf810ddae697b22f7f55fb0e129d01ef0fcf810ddae697b22f7f55fb0e129d01ef0fcf810ddae697b22f7f55fb0e129d0000000000000000180000000000000000ef0fcf810ddae697b22f7f55fb0e129d0000000000000000180100000000000000ef0fcf810ddae697b22f7f55fb0e129d0000000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 33, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ef0fcf810ddae697b22f7f55fb0e129d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0023000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000079b8a091728e922cf5e95193d6059bde)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205955b4e2d80a99d8e468385a502cdd1979b8a091728e922cf5e95193d6059bde0179b8a091728e922cf5e95193d6059bde0179b8a091728e922cf5e95193d6059bde000000000000000018000000000000000079b8a091728e922cf5e95193d6059bde000000000000000018010000000000000079b8a091728e922cf5e95193d6059bde0000000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 34, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79b8a091728e922cf5e95193d6059bde0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0024000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000c20cd359a7c1d7969894aa18fc7e671)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bc72d0d28fa1602d67834afdfbab476e0c20cd359a7c1d7969894aa18fc7e671010c20cd359a7c1d7969894aa18fc7e671010c20cd359a7c1d7969894aa18fc7e67100000000000000001800000000000000000c20cd359a7c1d7969894aa18fc7e67100000000000000001801000000000000000c20cd359a7c1d7969894aa18fc7e6710000000000000000)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 35, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0c20cd359a7c1d7969894aa18fc7e6710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0025000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000029bb56db24ab8d1cce6c6adbd153a783)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20fa6451c6cf7b3fc64443a3479dbd1db129bb56db24ab8d1cce6c6adbd153a7830129bb56db24ab8d1cce6c6adbd153a7830129bb56db24ab8d1cce6c6adbd153a783000000000000000018000000000000000029bb56db24ab8d1cce6c6adbd153a783000000000000000018010000000000000029bb56db24ab8d1cce6c6adbd153a7830000000000000000)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 36, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "29bb56db24ab8d1cce6c6adbd153a7830600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0026000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000260fa2ad9ca38b504e1777068e898ae1)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203f993bafbc6af2c3e90974fb5d042306260fa2ad9ca38b504e1777068e898ae101260fa2ad9ca38b504e1777068e898ae101260fa2ad9ca38b504e1777068e898ae10000000000000000180000000000000000260fa2ad9ca38b504e1777068e898ae10000000000000000180100000000000000260fa2ad9ca38b504e1777068e898ae10000000000000000)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 37, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "260fa2ad9ca38b504e1777068e898ae10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0027000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e88fb52e5cf15cc0930d4c1875826b9e)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20deb91349d35a7230d55a45015b354447e88fb52e5cf15cc0930d4c1875826b9e01e88fb52e5cf15cc0930d4c1875826b9e01e88fb52e5cf15cc0930d4c1875826b9e0000000000000000180000000000000000e88fb52e5cf15cc0930d4c1875826b9e0000000000000000180100000000000000e88fb52e5cf15cc0930d4c1875826b9e0000000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 38, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e88fb52e5cf15cc0930d4c1875826b9e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0028000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006aa7a4136fedb0739cf6f1477ac63860)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b37c74ada403d58f5da406e7a81d97946aa7a4136fedb0739cf6f1477ac63860016aa7a4136fedb0739cf6f1477ac63860016aa7a4136fedb0739cf6f1477ac6386000000000000000001800000000000000006aa7a4136fedb0739cf6f1477ac6386000000000000000001801000000000000006aa7a4136fedb0739cf6f1477ac638600000000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 39, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6aa7a4136fedb0739cf6f1477ac638600600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0029000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000061873a394a612d7855d4759d7c414c20)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201a3fe2f45f16b96b5ccc4e57b144f2c361873a394a612d7855d4759d7c414c200161873a394a612d7855d4759d7c414c200161873a394a612d7855d4759d7c414c20000000000000000018000000000000000061873a394a612d7855d4759d7c414c20000000000000000018010000000000000061873a394a612d7855d4759d7c414c200000000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 40, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "61873a394a612d7855d4759d7c414c200600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11200000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005d7559ad559f58c2e432441243aa23da)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f16dea2553779dec8cd23a56692988415d7559ad559f58c2e432441243aa23da015d7559ad559f58c2e432441243aa23da015d7559ad559f58c2e432441243aa23da00000000000000001800000000000000005d7559ad559f58c2e432441243aa23da00000000000000001801000000000000005d7559ad559f58c2e432441243aa23da0000000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 41, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5d7559ad559f58c2e432441243aa23da0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11300000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d9fbbaadbad9a031d0fe0f592cb29527)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d2c6307eb821535463bb174ebd937438d9fbbaadbad9a031d0fe0f592cb2952701d9fbbaadbad9a031d0fe0f592cb2952701d9fbbaadbad9a031d0fe0f592cb295270000000000000000180000000000000000d9fbbaadbad9a031d0fe0f592cb295270000000000000000180100000000000000d9fbbaadbad9a031d0fe0f592cb295270000000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 42, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9fbbaadbad9a031d0fe0f592cb295270600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000be47417b8a0d45cf5612162bfe99241)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20baac25d982278cf7c59a189ccf07822d0be47417b8a0d45cf5612162bfe99241010be47417b8a0d45cf5612162bfe99241010be47417b8a0d45cf5612162bfe9924100000000000000001800000000000000000be47417b8a0d45cf5612162bfe9924100000000000000001801000000000000000be47417b8a0d45cf5612162bfe992410000000000000000)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11400000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 43, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0be47417b8a0d45cf5612162bfe992410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11500000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006b7e8c5bdf9c0176fb0c5ff818993080)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20206c65bf1702a005f5fbf5e5f72cc5736b7e8c5bdf9c0176fb0c5ff818993080016b7e8c5bdf9c0176fb0c5ff818993080016b7e8c5bdf9c0176fb0c5ff81899308000000000000000001800000000000000006b7e8c5bdf9c0176fb0c5ff81899308000000000000000001801000000000000006b7e8c5bdf9c0176fb0c5ff8189930800000000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 44, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6b7e8c5bdf9c0176fb0c5ff8189930800600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11600000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000069686b4b87d6428785bb5673256caeca)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bc038750080396e9da363f7387291ae669686b4b87d6428785bb5673256caeca0169686b4b87d6428785bb5673256caeca0169686b4b87d6428785bb5673256caeca000000000000000018000000000000000069686b4b87d6428785bb5673256caeca000000000000000018010000000000000069686b4b87d6428785bb5673256caeca0000000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 45, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "69686b4b87d6428785bb5673256caeca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(002f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000aa90b6e45e43b08c8e9e54155bba25a)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206ce0e682f4683e6f790c2cf17a9cad3e0aa90b6e45e43b08c8e9e54155bba25a010aa90b6e45e43b08c8e9e54155bba25a010aa90b6e45e43b08c8e9e54155bba25a00000000000000001800000000000000000aa90b6e45e43b08c8e9e54155bba25a00000000000000001801000000000000000aa90b6e45e43b08c8e9e54155bba25a0000000000000000)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 46, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0aa90b6e45e43b08c8e9e54155bba25a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0030000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11800000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bda1fabdfdb41ee558aa750114ef9f8a)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2022538bc10d28186b1d67e4a9e70a22f4bda1fabdfdb41ee558aa750114ef9f8a01bda1fabdfdb41ee558aa750114ef9f8a01bda1fabdfdb41ee558aa750114ef9f8a0000000000000000180000000000000000bda1fabdfdb41ee558aa750114ef9f8a0000000000000000180100000000000000bda1fabdfdb41ee558aa750114ef9f8a0000000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 47, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bda1fabdfdb41ee558aa750114ef9f8a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0031000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000d7292bbbe2668b668d8c41db71289f6)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202586c1c33917645df426dae013e51ec90d7292bbbe2668b668d8c41db71289f6010d7292bbbe2668b668d8c41db71289f6010d7292bbbe2668b668d8c41db71289f600000000000000001800000000000000000d7292bbbe2668b668d8c41db71289f600000000000000001801000000000000000d7292bbbe2668b668d8c41db71289f60000000000000000)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 48, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0d7292bbbe2668b668d8c41db71289f60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0032000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11a00000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f7729d87a5feee44c2de1719f15897cb)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2057911e723641a53969561209b10d55f9f7729d87a5feee44c2de1719f15897cb01f7729d87a5feee44c2de1719f15897cb01f7729d87a5feee44c2de1719f15897cb0000000000000000180000000000000000f7729d87a5feee44c2de1719f15897cb0000000000000000180100000000000000f7729d87a5feee44c2de1719f15897cb0000000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 49, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f7729d87a5feee44c2de1719f15897cb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0033000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11b00000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008c748ecf43f8a7b81657b2ec45064031)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f6e3e34896f9e9a69f8c47f5a76f995e8c748ecf43f8a7b81657b2ec45064031018c748ecf43f8a7b81657b2ec45064031018c748ecf43f8a7b81657b2ec4506403100000000000000001800000000000000008c748ecf43f8a7b81657b2ec4506403100000000000000001801000000000000008c748ecf43f8a7b81657b2ec450640310000000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 50, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8c748ecf43f8a7b81657b2ec450640310600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0034000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11c00000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a9bcd9b71da6dfabe0dcb58f3a549f06)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205fecb137832d1c9472e42bd0ecf15b72a9bcd9b71da6dfabe0dcb58f3a549f0601a9bcd9b71da6dfabe0dcb58f3a549f0601a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000180000000000000000a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000180100000000000000a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 51, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a9bcd9b71da6dfabe0dcb58f3a549f060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0035000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002c84eeb61d1e68f453ca71985d10f6f2)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2008ddebf23921e2a611f7e908d12fd0922c84eeb61d1e68f453ca71985d10f6f2012c84eeb61d1e68f453ca71985d10f6f2012c84eeb61d1e68f453ca71985d10f6f200000000000000001800000000000000002c84eeb61d1e68f453ca71985d10f6f200000000000000001801000000000000002c84eeb61d1e68f453ca71985d10f6f20000000000000000)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 52, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2c84eeb61d1e68f453ca71985d10f6f20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0036000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11e00000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000fb825bbe1d45b1d59c545fadcf3ea807)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2080e15fe49bf4ff07f4dc329c9da66fa8fb825bbe1d45b1d59c545fadcf3ea80701fb825bbe1d45b1d59c545fadcf3ea80701fb825bbe1d45b1d59c545fadcf3ea8070000000000000000180000000000000000fb825bbe1d45b1d59c545fadcf3ea8070000000000000000180100000000000000fb825bbe1d45b1d59c545fadcf3ea8070000000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 53, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fb825bbe1d45b1d59c545fadcf3ea8070600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0037000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000007b551af18fb0a9a29d76510e385076a)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201afa290c4dc192f121e1d63ea39570a407b551af18fb0a9a29d76510e385076a0107b551af18fb0a9a29d76510e385076a0107b551af18fb0a9a29d76510e385076a000000000000000018000000000000000007b551af18fb0a9a29d76510e385076a000000000000000018010000000000000007b551af18fb0a9a29d76510e385076a0000000000000000)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(1f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 54, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "07b551af18fb0a9a29d76510e385076a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0038000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000022427c7f32111b7f6db7ec8685d4d939)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c8b3338dd3176802eacc9e3e03e1eb8e22427c7f32111b7f6db7ec8685d4d9390122427c7f32111b7f6db7ec8685d4d9390122427c7f32111b7f6db7ec8685d4d939000000000000000018000000000000000022427c7f32111b7f6db7ec8685d4d939000000000000000018010000000000000022427c7f32111b7f6db7ec8685d4d9390000000000000000)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 55, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "22427c7f32111b7f6db7ec8685d4d9390600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0039000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12100000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000efea1a9a890a41b863c82372962aee1f)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20108a16ec3c36b81144b56bcd95e7d918efea1a9a890a41b863c82372962aee1f01efea1a9a890a41b863c82372962aee1f01efea1a9a890a41b863c82372962aee1f0000000000000000180000000000000000efea1a9a890a41b863c82372962aee1f0000000000000000180100000000000000efea1a9a890a41b863c82372962aee1f0000000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 56, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "efea1a9a890a41b863c82372962aee1f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000035cc01d14f3f98920c9e175d34f0fe71)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204a21d175ea2e97a695b663bf53c841a635cc01d14f3f98920c9e175d34f0fe710135cc01d14f3f98920c9e175d34f0fe710135cc01d14f3f98920c9e175d34f0fe71000000000000000018000000000000000035cc01d14f3f98920c9e175d34f0fe71000000000000000018010000000000000035cc01d14f3f98920c9e175d34f0fe710000000000000000)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 57, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "35cc01d14f3f98920c9e175d34f0fe710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12300000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000751fde96a4324046f314a0e6e3e5003f)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209a6f5e638ae34edd8d58ffd5a0168b25751fde96a4324046f314a0e6e3e5003f01751fde96a4324046f314a0e6e3e5003f01751fde96a4324046f314a0e6e3e5003f0000000000000000180000000000000000751fde96a4324046f314a0e6e3e5003f0000000000000000180100000000000000751fde96a4324046f314a0e6e3e5003f0000000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 58, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "751fde96a4324046f314a0e6e3e5003f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12400000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e8290c44403f4dfdd53a952ced454909)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d32f91c41851e95256e7fc8a2af02026e8290c44403f4dfdd53a952ced45490901e8290c44403f4dfdd53a952ced45490901e8290c44403f4dfdd53a952ced4549090000000000000000180000000000000000e8290c44403f4dfdd53a952ced4549090000000000000000180100000000000000e8290c44403f4dfdd53a952ced4549090000000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 59, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e8290c44403f4dfdd53a952ced4549090600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12500000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d85197f810ece92b30c74c725df246ed)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200d7ccfd3e1e9eb7cbc4f9bc5c1efb251d85197f810ece92b30c74c725df246ed01d85197f810ece92b30c74c725df246ed01d85197f810ece92b30c74c725df246ed0000000000000000180000000000000000d85197f810ece92b30c74c725df246ed0000000000000000180100000000000000d85197f810ece92b30c74c725df246ed0000000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 60, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d85197f810ece92b30c74c725df246ed0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12600000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000942ffa09d513cf6cb237d0d56f93c8d9)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2078c17b32f5629cbd8220459219ac5516942ffa09d513cf6cb237d0d56f93c8d901942ffa09d513cf6cb237d0d56f93c8d901942ffa09d513cf6cb237d0d56f93c8d90000000000000000180000000000000000942ffa09d513cf6cb237d0d56f93c8d90000000000000000180100000000000000942ffa09d513cf6cb237d0d56f93c8d90000000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 61, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "942ffa09d513cf6cb237d0d56f93c8d90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(003f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12700000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008fbaa3076d9b39b8e9f5279516fbb371)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cc6cd5aec6bf56d89b64ab25699880cf8fbaa3076d9b39b8e9f5279516fbb371018fbaa3076d9b39b8e9f5279516fbb371018fbaa3076d9b39b8e9f5279516fbb37100000000000000001800000000000000008fbaa3076d9b39b8e9f5279516fbb37100000000000000001801000000000000008fbaa3076d9b39b8e9f5279516fbb3710000000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 62, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8fbaa3076d9b39b8e9f5279516fbb3710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0040000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12800000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c6daac0308c0998af86967dc877feba1)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2046fdaea743be387a7932f5af65a940cfc6daac0308c0998af86967dc877feba101c6daac0308c0998af86967dc877feba101c6daac0308c0998af86967dc877feba10000000000000000180000000000000000c6daac0308c0998af86967dc877feba10000000000000000180100000000000000c6daac0308c0998af86967dc877feba10000000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 63, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c6daac0308c0998af86967dc877feba10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0041000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12900000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b462db060d37fb076603bc0ecd18c9b4)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f2968b6cbdca36419b62fca6d88f6fbeb462db060d37fb076603bc0ecd18c9b401b462db060d37fb076603bc0ecd18c9b401b462db060d37fb076603bc0ecd18c9b40000000000000000180000000000000000b462db060d37fb076603bc0ecd18c9b40000000000000000180100000000000000b462db060d37fb076603bc0ecd18c9b40000000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 64, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b462db060d37fb076603bc0ecd18c9b40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0042000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001e8d662a08070a2481416e992fd010bf)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208b075c3c7b2a72118e6fb5db606bcf181e8d662a08070a2481416e992fd010bf011e8d662a08070a2481416e992fd010bf011e8d662a08070a2481416e992fd010bf00000000000000001800000000000000001e8d662a08070a2481416e992fd010bf00000000000000001801000000000000001e8d662a08070a2481416e992fd010bf0000000000000000)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 65, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1e8d662a08070a2481416e992fd010bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0043000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12b00000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007515842c1f2ebc82111ad756aee02de3)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202f75a821f2b34f8aca1fb99979ddce8a7515842c1f2ebc82111ad756aee02de3017515842c1f2ebc82111ad756aee02de3017515842c1f2ebc82111ad756aee02de300000000000000001800000000000000007515842c1f2ebc82111ad756aee02de300000000000000001801000000000000007515842c1f2ebc82111ad756aee02de30000000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 66, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7515842c1f2ebc82111ad756aee02de30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0044000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12c00000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d13fc3ec93da44c2f5f25e9e683c3925)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206bf26914bb51b074e88d39ec266a2423d13fc3ec93da44c2f5f25e9e683c392501d13fc3ec93da44c2f5f25e9e683c392501d13fc3ec93da44c2f5f25e9e683c39250000000000000000180000000000000000d13fc3ec93da44c2f5f25e9e683c39250000000000000000180100000000000000d13fc3ec93da44c2f5f25e9e683c39250000000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 67, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d13fc3ec93da44c2f5f25e9e683c39250600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0045000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12d00000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d4c322dd3ff3e381d216809a5bbc6673)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209d3e2917d1d9aebd688acbe059d9d352d4c322dd3ff3e381d216809a5bbc667301d4c322dd3ff3e381d216809a5bbc667301d4c322dd3ff3e381d216809a5bbc66730000000000000000180000000000000000d4c322dd3ff3e381d216809a5bbc66730000000000000000180100000000000000d4c322dd3ff3e381d216809a5bbc66730000000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 68, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4c322dd3ff3e381d216809a5bbc66730600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0046000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12e00000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a6ec09a5ab949f718bb346d2ccc3c479)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2002f44d7d0052946fbee9fe7161117f2fa6ec09a5ab949f718bb346d2ccc3c47901a6ec09a5ab949f718bb346d2ccc3c47901a6ec09a5ab949f718bb346d2ccc3c4790000000000000000180000000000000000a6ec09a5ab949f718bb346d2ccc3c4790000000000000000180100000000000000a6ec09a5ab949f718bb346d2ccc3c4790000000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 69, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a6ec09a5ab949f718bb346d2ccc3c4790600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0047000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000320f0abd774da4f29d8e3dc38dc4d3b8)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207b84066600ac7ab30afbbd6c74b82101320f0abd774da4f29d8e3dc38dc4d3b801320f0abd774da4f29d8e3dc38dc4d3b801320f0abd774da4f29d8e3dc38dc4d3b80000000000000000180000000000000000320f0abd774da4f29d8e3dc38dc4d3b80000000000000000180100000000000000320f0abd774da4f29d8e3dc38dc4d3b80000000000000000)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(2f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 70, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "320f0abd774da4f29d8e3dc38dc4d3b80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0048000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13000000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000974c1264ab4930fc501eac9859a5456e)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204990a2a717bd5995b66b79903348e1a6974c1264ab4930fc501eac9859a5456e01974c1264ab4930fc501eac9859a5456e01974c1264ab4930fc501eac9859a5456e0000000000000000180000000000000000974c1264ab4930fc501eac9859a5456e0000000000000000180100000000000000974c1264ab4930fc501eac9859a5456e0000000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 71, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "974c1264ab4930fc501eac9859a5456e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0049000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000027af2c1e0297a29792b6e2adb90e66e5)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ce1227563c894533d99d9531acfaca6527af2c1e0297a29792b6e2adb90e66e50127af2c1e0297a29792b6e2adb90e66e50127af2c1e0297a29792b6e2adb90e66e5000000000000000018000000000000000027af2c1e0297a29792b6e2adb90e66e5000000000000000018010000000000000027af2c1e0297a29792b6e2adb90e66e50000000000000000)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 72, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "27af2c1e0297a29792b6e2adb90e66e50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13200000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ddf9e60becd5a7974bb5bb589b211f14)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20792bae4346bd4f1f99ed8117e8272a43ddf9e60becd5a7974bb5bb589b211f1401ddf9e60becd5a7974bb5bb589b211f1401ddf9e60becd5a7974bb5bb589b211f140000000000000000180000000000000000ddf9e60becd5a7974bb5bb589b211f140000000000000000180100000000000000ddf9e60becd5a7974bb5bb589b211f140000000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 73, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ddf9e60becd5a7974bb5bb589b211f140600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13300000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008fcac8f60395bd154a7dce263158975f)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d23cdb70c4ecd2e8d9475d1ef86df1eb8fcac8f60395bd154a7dce263158975f018fcac8f60395bd154a7dce263158975f018fcac8f60395bd154a7dce263158975f00000000000000001800000000000000008fcac8f60395bd154a7dce263158975f00000000000000001801000000000000008fcac8f60395bd154a7dce263158975f0000000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 74, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8fcac8f60395bd154a7dce263158975f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13400000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008031d6b041f23daa9501c11a35145e65)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e4a312d8f4f1363dbb02fd5d96860b3e8031d6b041f23daa9501c11a35145e65018031d6b041f23daa9501c11a35145e65018031d6b041f23daa9501c11a35145e6500000000000000001800000000000000008031d6b041f23daa9501c11a35145e6500000000000000001801000000000000008031d6b041f23daa9501c11a35145e650000000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 75, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8031d6b041f23daa9501c11a35145e650600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13500000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f2f44d0632c87242b7efcfe58bc3303f)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c30cb7560427c19158903b1e72950a66f2f44d0632c87242b7efcfe58bc3303f01f2f44d0632c87242b7efcfe58bc3303f01f2f44d0632c87242b7efcfe58bc3303f0000000000000000180000000000000000f2f44d0632c87242b7efcfe58bc3303f0000000000000000180100000000000000f2f44d0632c87242b7efcfe58bc3303f0000000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 76, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f2f44d0632c87242b7efcfe58bc3303f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002dfc87af8b151803a1b2f8f9a7020b33)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207fafa9a4eb0c367d4e325389b6f3244f2dfc87af8b151803a1b2f8f9a7020b33012dfc87af8b151803a1b2f8f9a7020b33012dfc87af8b151803a1b2f8f9a7020b3300000000000000001800000000000000002dfc87af8b151803a1b2f8f9a7020b3300000000000000001801000000000000002dfc87af8b151803a1b2f8f9a7020b330000000000000000)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 77, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2dfc87af8b151803a1b2f8f9a7020b330600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(004f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000013089ea0a50f1945acc5cb56bdc3e7de)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d127f7530b4f6ec33dfa17f6fdeb872e13089ea0a50f1945acc5cb56bdc3e7de0113089ea0a50f1945acc5cb56bdc3e7de0113089ea0a50f1945acc5cb56bdc3e7de000000000000000018000000000000000013089ea0a50f1945acc5cb56bdc3e7de000000000000000018010000000000000013089ea0a50f1945acc5cb56bdc3e7de0000000000000000)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 78, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "13089ea0a50f1945acc5cb56bdc3e7de0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0050000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13800000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ecdd42a647ec1c13a8a3424ab281ca0e)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bad256bab31519774f2ccea1e722279cecdd42a647ec1c13a8a3424ab281ca0e01ecdd42a647ec1c13a8a3424ab281ca0e01ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000180000000000000000ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000180100000000000000ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 79, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ecdd42a647ec1c13a8a3424ab281ca0e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0051000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13900000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000cee4c5dd50f7a3018d771de13906e705)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20579797ba4d6db98d5a60eddce8ff70d2cee4c5dd50f7a3018d771de13906e70501cee4c5dd50f7a3018d771de13906e70501cee4c5dd50f7a3018d771de13906e7050000000000000000180000000000000000cee4c5dd50f7a3018d771de13906e7050000000000000000180100000000000000cee4c5dd50f7a3018d771de13906e7050000000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 80, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "cee4c5dd50f7a3018d771de13906e7050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0052000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13a00000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000641035b1277b13993c513e82e1f043a4)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bb67f9aba825ea91273e81a5514f32e4641035b1277b13993c513e82e1f043a401641035b1277b13993c513e82e1f043a401641035b1277b13993c513e82e1f043a40000000000000000180000000000000000641035b1277b13993c513e82e1f043a40000000000000000180100000000000000641035b1277b13993c513e82e1f043a40000000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 81, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "641035b1277b13993c513e82e1f043a40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0053000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003276d99d93e6af57edd286e3cb86bfd1)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20479aaceffe1e6880a8b42c12dbce4b503276d99d93e6af57edd286e3cb86bfd1013276d99d93e6af57edd286e3cb86bfd1013276d99d93e6af57edd286e3cb86bfd100000000000000001800000000000000003276d99d93e6af57edd286e3cb86bfd100000000000000001801000000000000003276d99d93e6af57edd286e3cb86bfd10000000000000000)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 82, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3276d99d93e6af57edd286e3cb86bfd10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0054000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000004bc635f47956cc91dbd61f890af4cc3c)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20eb89e3188800b3d2c488653e9bf32ed94bc635f47956cc91dbd61f890af4cc3c014bc635f47956cc91dbd61f890af4cc3c014bc635f47956cc91dbd61f890af4cc3c00000000000000001800000000000000004bc635f47956cc91dbd61f890af4cc3c00000000000000001801000000000000004bc635f47956cc91dbd61f890af4cc3c0000000000000000)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13c00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 83, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4bc635f47956cc91dbd61f890af4cc3c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0055000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13d00000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a8650a3db064920a9cfc86775a275ce5)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d753df922e304ccf5946697675333d2aa8650a3db064920a9cfc86775a275ce501a8650a3db064920a9cfc86775a275ce501a8650a3db064920a9cfc86775a275ce50000000000000000180000000000000000a8650a3db064920a9cfc86775a275ce50000000000000000180100000000000000a8650a3db064920a9cfc86775a275ce50000000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 84, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a8650a3db064920a9cfc86775a275ce50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0056000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000015fb2ee6dd32b4a40be4934ce877ba76)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203a5768cdd3296943da5acbdadf3a4a0315fb2ee6dd32b4a40be4934ce877ba760115fb2ee6dd32b4a40be4934ce877ba760115fb2ee6dd32b4a40be4934ce877ba76000000000000000018000000000000000015fb2ee6dd32b4a40be4934ce877ba76000000000000000018010000000000000015fb2ee6dd32b4a40be4934ce877ba760000000000000000)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 85, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "15fb2ee6dd32b4a40be4934ce877ba760600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0057000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(3f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13f00000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c2fc3862f090d81c96cb837ede1daae8)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201500f931617fbc474169be676ccd2171c2fc3862f090d81c96cb837ede1daae801c2fc3862f090d81c96cb837ede1daae801c2fc3862f090d81c96cb837ede1daae80000000000000000180000000000000000c2fc3862f090d81c96cb837ede1daae80000000000000000180100000000000000c2fc3862f090d81c96cb837ede1daae80000000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 86, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c2fc3862f090d81c96cb837ede1daae80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0058000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000ad14dc38e2a320b18e3f58744c9866b)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a3bb6ac591f1aff5737d4ab760395d440ad14dc38e2a320b18e3f58744c9866b010ad14dc38e2a320b18e3f58744c9866b010ad14dc38e2a320b18e3f58744c9866b00000000000000001800000000000000000ad14dc38e2a320b18e3f58744c9866b00000000000000001801000000000000000ad14dc38e2a320b18e3f58744c9866b0000000000000000)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 87, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0ad14dc38e2a320b18e3f58744c9866b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0059000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14100000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000dedc471cc667f57ade1401d88f9cb1e1)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20960255ae3ddf18e425e44359c36553f7dedc471cc667f57ade1401d88f9cb1e101dedc471cc667f57ade1401d88f9cb1e101dedc471cc667f57ade1401d88f9cb1e10000000000000000180000000000000000dedc471cc667f57ade1401d88f9cb1e10000000000000000180100000000000000dedc471cc667f57ade1401d88f9cb1e10000000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 88, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dedc471cc667f57ade1401d88f9cb1e10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14200000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a7848325e7f0283a3a28a43aa794948f)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2078f8069cbc15648b9c9f771db516f8a1a7848325e7f0283a3a28a43aa794948f01a7848325e7f0283a3a28a43aa794948f01a7848325e7f0283a3a28a43aa794948f0000000000000000180000000000000000a7848325e7f0283a3a28a43aa794948f0000000000000000180100000000000000a7848325e7f0283a3a28a43aa794948f0000000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 89, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a7848325e7f0283a3a28a43aa794948f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14300000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f534a1da1859b244123b38994a15a559)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202d9137739fded47a9ecbe60aa1fa4846f534a1da1859b244123b38994a15a55901f534a1da1859b244123b38994a15a55901f534a1da1859b244123b38994a15a5590000000000000000180000000000000000f534a1da1859b244123b38994a15a5590000000000000000180100000000000000f534a1da1859b244123b38994a15a5590000000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 90, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f534a1da1859b244123b38994a15a5590600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14400000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d2abfb464a84c2fdec8db04488b8fb4b)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e2a94b801782b4393313593f96707c10d2abfb464a84c2fdec8db04488b8fb4b01d2abfb464a84c2fdec8db04488b8fb4b01d2abfb464a84c2fdec8db04488b8fb4b0000000000000000180000000000000000d2abfb464a84c2fdec8db04488b8fb4b0000000000000000180100000000000000d2abfb464a84c2fdec8db04488b8fb4b0000000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 91, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d2abfb464a84c2fdec8db04488b8fb4b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14500000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a0cce55154e14ffa642ff2e2db66be28)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20764a76c84995dc08a1395c9d66a6ed2ba0cce55154e14ffa642ff2e2db66be2801a0cce55154e14ffa642ff2e2db66be2801a0cce55154e14ffa642ff2e2db66be280000000000000000180000000000000000a0cce55154e14ffa642ff2e2db66be280000000000000000180100000000000000a0cce55154e14ffa642ff2e2db66be280000000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 92, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a0cce55154e14ffa642ff2e2db66be280600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14600000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c6a203d9fe8ca20107904467a804d6ad)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2028f9841a7236c9efceb267f545694a95c6a203d9fe8ca20107904467a804d6ad01c6a203d9fe8ca20107904467a804d6ad01c6a203d9fe8ca20107904467a804d6ad0000000000000000180000000000000000c6a203d9fe8ca20107904467a804d6ad0000000000000000180100000000000000c6a203d9fe8ca20107904467a804d6ad0000000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 93, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c6a203d9fe8ca20107904467a804d6ad0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(005f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14700000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000aba344b7b6824bebe5e283d7aedd3fe1)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ade5cfb08640d0e74b74af2348673a3caba344b7b6824bebe5e283d7aedd3fe101aba344b7b6824bebe5e283d7aedd3fe101aba344b7b6824bebe5e283d7aedd3fe10000000000000000180000000000000000aba344b7b6824bebe5e283d7aedd3fe10000000000000000180100000000000000aba344b7b6824bebe5e283d7aedd3fe10000000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 94, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "aba344b7b6824bebe5e283d7aedd3fe10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0060000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14800000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006301c6a8ce09a0e611369b4cce570d04)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bc6681dfba31269d18ca4d8df7a3cfe16301c6a8ce09a0e611369b4cce570d04016301c6a8ce09a0e611369b4cce570d04016301c6a8ce09a0e611369b4cce570d0400000000000000001800000000000000006301c6a8ce09a0e611369b4cce570d0400000000000000001801000000000000006301c6a8ce09a0e611369b4cce570d040000000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 95, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6301c6a8ce09a0e611369b4cce570d040600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0061000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14900000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007e9863ae2a5041292f7f0ef7f07b49df)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20135069356a81e973d50c2ba0c1aaa3977e9863ae2a5041292f7f0ef7f07b49df017e9863ae2a5041292f7f0ef7f07b49df017e9863ae2a5041292f7f0ef7f07b49df00000000000000001800000000000000007e9863ae2a5041292f7f0ef7f07b49df00000000000000001801000000000000007e9863ae2a5041292f7f0ef7f07b49df0000000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 96, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7e9863ae2a5041292f7f0ef7f07b49df0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0062000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002d98df246ca39979a715098bbae4d0c3)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209b718105a84f8d380c494fea6a1bb73a2d98df246ca39979a715098bbae4d0c3012d98df246ca39979a715098bbae4d0c3012d98df246ca39979a715098bbae4d0c300000000000000001800000000000000002d98df246ca39979a715098bbae4d0c300000000000000001801000000000000002d98df246ca39979a715098bbae4d0c30000000000000000)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 97, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d98df246ca39979a715098bbae4d0c30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0063000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14b00000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008e97dad540508eaaf2fa95f18ac78172)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ce36d15e4fac797dda674984c4af25288e97dad540508eaaf2fa95f18ac78172018e97dad540508eaaf2fa95f18ac78172018e97dad540508eaaf2fa95f18ac7817200000000000000001800000000000000008e97dad540508eaaf2fa95f18ac7817200000000000000001801000000000000008e97dad540508eaaf2fa95f18ac781720000000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 98, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8e97dad540508eaaf2fa95f18ac781720600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0064000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14c00000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006fb561c14a1ada4a620475204af444e8)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201233806acfe93258f7221cd01c6d0b896fb561c14a1ada4a620475204af444e8016fb561c14a1ada4a620475204af444e8016fb561c14a1ada4a620475204af444e800000000000000001800000000000000006fb561c14a1ada4a620475204af444e800000000000000001801000000000000006fb561c14a1ada4a620475204af444e80000000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 99, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6fb561c14a1ada4a620475204af444e80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0065000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14d00000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bb7095613fded735c73b6ea01d82795c)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203b371dda97935cfe2477c8e0d458303fbb7095613fded735c73b6ea01d82795c01bb7095613fded735c73b6ea01d82795c01bb7095613fded735c73b6ea01d82795c0000000000000000180000000000000000bb7095613fded735c73b6ea01d82795c0000000000000000180100000000000000bb7095613fded735c73b6ea01d82795c0000000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 100, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bb7095613fded735c73b6ea01d82795c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0066000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14e00000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000059153db829a26325a230334314c43781)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f9ff3690146bbcd9388221112019585859153db829a26325a230334314c437810159153db829a26325a230334314c437810159153db829a26325a230334314c43781000000000000000018000000000000000059153db829a26325a230334314c43781000000000000000018010000000000000059153db829a26325a230334314c437810000000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 101, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "59153db829a26325a230334314c437810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0067000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(4f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14f00000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006357402f230d73d2daae9d8c2025ce42)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20de9649bed43934e319d80e400e6105036357402f230d73d2daae9d8c2025ce42016357402f230d73d2daae9d8c2025ce42016357402f230d73d2daae9d8c2025ce4200000000000000001800000000000000006357402f230d73d2daae9d8c2025ce4200000000000000001801000000000000006357402f230d73d2daae9d8c2025ce420000000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 102, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6357402f230d73d2daae9d8c2025ce420600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0068000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15000000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c9793c4c6eba9dd6c88e2d0657dc204c)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20db163a88112c6000052e51228358e8a5c9793c4c6eba9dd6c88e2d0657dc204c01c9793c4c6eba9dd6c88e2d0657dc204c01c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000180000000000000000c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000180100000000000000c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 103, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9793c4c6eba9dd6c88e2d0657dc204c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0069000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15100000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006bb8cf30dec210eb26166e9b2ec59d16)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20dfbc85dc5398c2c704180e629e705f076bb8cf30dec210eb26166e9b2ec59d16016bb8cf30dec210eb26166e9b2ec59d16016bb8cf30dec210eb26166e9b2ec59d1600000000000000001800000000000000006bb8cf30dec210eb26166e9b2ec59d1600000000000000001801000000000000006bb8cf30dec210eb26166e9b2ec59d160000000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 104, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6bb8cf30dec210eb26166e9b2ec59d160600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15200000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f134249305d490328cd19fc6a9fd977f)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20000e9ec609c12eb27d7c88e71d13ebebf134249305d490328cd19fc6a9fd977f01f134249305d490328cd19fc6a9fd977f01f134249305d490328cd19fc6a9fd977f0000000000000000180000000000000000f134249305d490328cd19fc6a9fd977f0000000000000000180100000000000000f134249305d490328cd19fc6a9fd977f0000000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 105, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f134249305d490328cd19fc6a9fd977f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15300000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000009f5e416aa52df7d31e6bbb268d1d98f2)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206d811ca4511b3d34af7edd8e492a4a4c9f5e416aa52df7d31e6bbb268d1d98f2019f5e416aa52df7d31e6bbb268d1d98f2019f5e416aa52df7d31e6bbb268d1d98f200000000000000001800000000000000009f5e416aa52df7d31e6bbb268d1d98f200000000000000001801000000000000009f5e416aa52df7d31e6bbb268d1d98f20000000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 106, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9f5e416aa52df7d31e6bbb268d1d98f20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15400000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007ed71f407e45ab01f93cf14abbdeba05)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206784da0210304c98e22385cee60681a57ed71f407e45ab01f93cf14abbdeba05017ed71f407e45ab01f93cf14abbdeba05017ed71f407e45ab01f93cf14abbdeba0500000000000000001800000000000000007ed71f407e45ab01f93cf14abbdeba0500000000000000001801000000000000007ed71f407e45ab01f93cf14abbdeba050000000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 107, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7ed71f407e45ab01f93cf14abbdeba050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15500000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ea8a5a120e3ffcc011aae1349b98b888)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2006314919f08caec879f26260704d59e5ea8a5a120e3ffcc011aae1349b98b88801ea8a5a120e3ffcc011aae1349b98b88801ea8a5a120e3ffcc011aae1349b98b8880000000000000000180000000000000000ea8a5a120e3ffcc011aae1349b98b8880000000000000000180100000000000000ea8a5a120e3ffcc011aae1349b98b8880000000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 108, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ea8a5a120e3ffcc011aae1349b98b8880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15600000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d4a022f19d261a6935f5a7149d92ab3c)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20fbd9fe69a85104bda9514f959eacc169d4a022f19d261a6935f5a7149d92ab3c01d4a022f19d261a6935f5a7149d92ab3c01d4a022f19d261a6935f5a7149d92ab3c0000000000000000180000000000000000d4a022f19d261a6935f5a7149d92ab3c0000000000000000180100000000000000d4a022f19d261a6935f5a7149d92ab3c0000000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 109, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4a022f19d261a6935f5a7149d92ab3c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(006f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15700000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007e22b1232a3a6e87a8ae384369bb9148)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b4981bcf96483454d47a6f28e2b03b9a7e22b1232a3a6e87a8ae384369bb9148017e22b1232a3a6e87a8ae384369bb9148017e22b1232a3a6e87a8ae384369bb914800000000000000001800000000000000007e22b1232a3a6e87a8ae384369bb914800000000000000001801000000000000007e22b1232a3a6e87a8ae384369bb91480000000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 110, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7e22b1232a3a6e87a8ae384369bb91480600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0070000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000016c328b69d73147c0daa70c63554420c)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202c5e693a491591189a26146af5c6c07116c328b69d73147c0daa70c63554420c0116c328b69d73147c0daa70c63554420c0116c328b69d73147c0daa70c63554420c000000000000000018000000000000000016c328b69d73147c0daa70c63554420c000000000000000018010000000000000016c328b69d73147c0daa70c63554420c0000000000000000)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 111, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "16c328b69d73147c0daa70c63554420c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0071000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15900000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a659bcdda9e3e90d119b68b46ec9d7a6)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d86695e1a2577a6b7d04ae60eb1321ada659bcdda9e3e90d119b68b46ec9d7a601a659bcdda9e3e90d119b68b46ec9d7a601a659bcdda9e3e90d119b68b46ec9d7a60000000000000000180000000000000000a659bcdda9e3e90d119b68b46ec9d7a60000000000000000180100000000000000a659bcdda9e3e90d119b68b46ec9d7a60000000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 112, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a659bcdda9e3e90d119b68b46ec9d7a60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0072000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15a00000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000eeffc42ef4d2275b088cefd590e74106)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20fc46659281b4980234a51e3b7b57a0cdeeffc42ef4d2275b088cefd590e7410601eeffc42ef4d2275b088cefd590e7410601eeffc42ef4d2275b088cefd590e741060000000000000000180000000000000000eeffc42ef4d2275b088cefd590e741060000000000000000180100000000000000eeffc42ef4d2275b088cefd590e741060000000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 113, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eeffc42ef4d2275b088cefd590e741060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0073000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15b00000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000be4c5b4957203f4f24de4354f109ff17)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200deafa362c90faa218564facfe34d575be4c5b4957203f4f24de4354f109ff1701be4c5b4957203f4f24de4354f109ff1701be4c5b4957203f4f24de4354f109ff170000000000000000180000000000000000be4c5b4957203f4f24de4354f109ff170000000000000000180100000000000000be4c5b4957203f4f24de4354f109ff170000000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 114, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "be4c5b4957203f4f24de4354f109ff170600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0074000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15c00000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006d0f9ea969c71b2525ac8dfcd91599bf)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20598ca23a5cc5e58067d49de822c0741e6d0f9ea969c71b2525ac8dfcd91599bf016d0f9ea969c71b2525ac8dfcd91599bf016d0f9ea969c71b2525ac8dfcd91599bf00000000000000001800000000000000006d0f9ea969c71b2525ac8dfcd91599bf00000000000000001801000000000000006d0f9ea969c71b2525ac8dfcd91599bf0000000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 115, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6d0f9ea969c71b2525ac8dfcd91599bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0075000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15d00000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ff0789d8e693706fbaa50096279d05c4)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bc53de0ba0c448a681b7dee01d18d701ff0789d8e693706fbaa50096279d05c401ff0789d8e693706fbaa50096279d05c401ff0789d8e693706fbaa50096279d05c40000000000000000180000000000000000ff0789d8e693706fbaa50096279d05c40000000000000000180100000000000000ff0789d8e693706fbaa50096279d05c40000000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 116, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ff0789d8e693706fbaa50096279d05c40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0076000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001b1995ec87323d5b5d014b61be7fd88a)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2078ce8931064bd4458ddbda43d36857dd1b1995ec87323d5b5d014b61be7fd88a011b1995ec87323d5b5d014b61be7fd88a011b1995ec87323d5b5d014b61be7fd88a00000000000000001800000000000000001b1995ec87323d5b5d014b61be7fd88a00000000000000001801000000000000001b1995ec87323d5b5d014b61be7fd88a0000000000000000)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 117, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b1995ec87323d5b5d014b61be7fd88a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0077000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(5f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15f00000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000dff528dad529f572bb6929c960430aca)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204a34024ccd17559d8bd6f89f41e2bba7dff528dad529f572bb6929c960430aca01dff528dad529f572bb6929c960430aca01dff528dad529f572bb6929c960430aca0000000000000000180000000000000000dff528dad529f572bb6929c960430aca0000000000000000180100000000000000dff528dad529f572bb6929c960430aca0000000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 118, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dff528dad529f572bb6929c960430aca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0078000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16000000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a4fe308978f53467bdc37b0b2869ab05)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c9d10c763ab08627dcf893cebb6805b4a4fe308978f53467bdc37b0b2869ab0501a4fe308978f53467bdc37b0b2869ab0501a4fe308978f53467bdc37b0b2869ab050000000000000000180000000000000000a4fe308978f53467bdc37b0b2869ab050000000000000000180100000000000000a4fe308978f53467bdc37b0b2869ab050000000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 119, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a4fe308978f53467bdc37b0b2869ab050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0079000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16100000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000fdff7332fde6980607bdb90b31e115c1)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2012713e2c81c52b05a90d0a8a3446e6f6fdff7332fde6980607bdb90b31e115c101fdff7332fde6980607bdb90b31e115c101fdff7332fde6980607bdb90b31e115c10000000000000000180000000000000000fdff7332fde6980607bdb90b31e115c10000000000000000180100000000000000fdff7332fde6980607bdb90b31e115c10000000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 120, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fdff7332fde6980607bdb90b31e115c10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16200000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000080f7084fb3d18db2c73276255c8a994d)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2066eade2c6f7314032c1ee9e167b5704680f7084fb3d18db2c73276255c8a994d0180f7084fb3d18db2c73276255c8a994d0180f7084fb3d18db2c73276255c8a994d000000000000000018000000000000000080f7084fb3d18db2c73276255c8a994d000000000000000018010000000000000080f7084fb3d18db2c73276255c8a994d0000000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 121, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "80f7084fb3d18db2c73276255c8a994d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16300000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a478174ca5ddc82fa03b6401eeda0a29)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205ddebccf021ca445c6bafc6185b4a5d5a478174ca5ddc82fa03b6401eeda0a2901a478174ca5ddc82fa03b6401eeda0a2901a478174ca5ddc82fa03b6401eeda0a290000000000000000180000000000000000a478174ca5ddc82fa03b6401eeda0a290000000000000000180100000000000000a478174ca5ddc82fa03b6401eeda0a290000000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 122, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a478174ca5ddc82fa03b6401eeda0a290600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16400000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006f6316856705df75052004e9955ed293)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200eb1e56f5c23d4597dab3581ddd769136f6316856705df75052004e9955ed293016f6316856705df75052004e9955ed293016f6316856705df75052004e9955ed29300000000000000001800000000000000006f6316856705df75052004e9955ed29300000000000000001801000000000000006f6316856705df75052004e9955ed2930000000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 123, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6f6316856705df75052004e9955ed2930600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000009f4dc4845f6d4b113667ae6db398096)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20fcaa7e0235aa6783dc17ae8de41b4aff09f4dc4845f6d4b113667ae6db3980960109f4dc4845f6d4b113667ae6db3980960109f4dc4845f6d4b113667ae6db398096000000000000000018000000000000000009f4dc4845f6d4b113667ae6db398096000000000000000018010000000000000009f4dc4845f6d4b113667ae6db3980960000000000000000)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 124, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "09f4dc4845f6d4b113667ae6db3980960600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16600000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000073a4c25ddc59459f43943c52c2d97306)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201289097bc78888003103cde36b31cf8a73a4c25ddc59459f43943c52c2d973060173a4c25ddc59459f43943c52c2d973060173a4c25ddc59459f43943c52c2d97306000000000000000018000000000000000073a4c25ddc59459f43943c52c2d97306000000000000000018010000000000000073a4c25ddc59459f43943c52c2d973060000000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 125, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "73a4c25ddc59459f43943c52c2d973060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(007f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16700000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a91125b15cab7b386dbc598f05463a45)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b94868125edbdb46b89b581c516193f1a91125b15cab7b386dbc598f05463a4501a91125b15cab7b386dbc598f05463a4501a91125b15cab7b386dbc598f05463a450000000000000000180000000000000000a91125b15cab7b386dbc598f05463a450000000000000000180100000000000000a91125b15cab7b386dbc598f05463a450000000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 126, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a91125b15cab7b386dbc598f05463a450600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0080000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000105fc5b111af9616113f5f27729a4d61)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20186d50bd8899e8632d3780064faf3773105fc5b111af9616113f5f27729a4d6101105fc5b111af9616113f5f27729a4d6101105fc5b111af9616113f5f27729a4d610000000000000000180000000000000000105fc5b111af9616113f5f27729a4d610000000000000000180100000000000000105fc5b111af9616113f5f27729a4d610000000000000000)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 127, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "105fc5b111af9616113f5f27729a4d610600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0081000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001042b3446d1e4f8b1e993ca76856f579)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e83339f32d102117f2337239ff33fbf91042b3446d1e4f8b1e993ca76856f579011042b3446d1e4f8b1e993ca76856f579011042b3446d1e4f8b1e993ca76856f57900000000000000001800000000000000001042b3446d1e4f8b1e993ca76856f57900000000000000001801000000000000001042b3446d1e4f8b1e993ca76856f5790000000000000000)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 128, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1042b3446d1e4f8b1e993ca76856f5790600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0082000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16a00000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000079bed52baece7dab96bb47b8ca20015a)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202f5a69a9754768237c710260de1e365e79bed52baece7dab96bb47b8ca20015a0179bed52baece7dab96bb47b8ca20015a0179bed52baece7dab96bb47b8ca20015a000000000000000018000000000000000079bed52baece7dab96bb47b8ca20015a000000000000000018010000000000000079bed52baece7dab96bb47b8ca20015a0000000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 129, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79bed52baece7dab96bb47b8ca20015a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0083000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000040640d1bbf8d007ca838216da95fd0f)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208182aa6a7df9856acce84afa6714dcbf040640d1bbf8d007ca838216da95fd0f01040640d1bbf8d007ca838216da95fd0f01040640d1bbf8d007ca838216da95fd0f0000000000000000180000000000000000040640d1bbf8d007ca838216da95fd0f0000000000000000180100000000000000040640d1bbf8d007ca838216da95fd0f0000000000000000)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 130, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "040640d1bbf8d007ca838216da95fd0f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0084000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16c00000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bc435b08651e2e25dc068fa63af524b7)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20445a402c91d59badf6c16b8350ff516fbc435b08651e2e25dc068fa63af524b701bc435b08651e2e25dc068fa63af524b701bc435b08651e2e25dc068fa63af524b70000000000000000180000000000000000bc435b08651e2e25dc068fa63af524b70000000000000000180100000000000000bc435b08651e2e25dc068fa63af524b70000000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 131, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bc435b08651e2e25dc068fa63af524b70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0085000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000228025fa847bdcd2aaf3565a386d0e73)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20dd1482fac3ebaee192b4b1bca6a0d40c228025fa847bdcd2aaf3565a386d0e7301228025fa847bdcd2aaf3565a386d0e7301228025fa847bdcd2aaf3565a386d0e730000000000000000180000000000000000228025fa847bdcd2aaf3565a386d0e730000000000000000180100000000000000228025fa847bdcd2aaf3565a386d0e730000000000000000)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 132, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "228025fa847bdcd2aaf3565a386d0e730600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0086000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16e00000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000071d368ca104cf2e24b5599da2ca01881)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200d4f46044c3122d42660c033fe5caf4771d368ca104cf2e24b5599da2ca018810171d368ca104cf2e24b5599da2ca018810171d368ca104cf2e24b5599da2ca01881000000000000000018000000000000000071d368ca104cf2e24b5599da2ca01881000000000000000018010000000000000071d368ca104cf2e24b5599da2ca018810000000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 133, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "71d368ca104cf2e24b5599da2ca018810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0087000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(6f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16f00000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000074fb87c19b9a71e14c5c8e7dc07f9dd6)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208895826eafceb1593220c40ae820305b74fb87c19b9a71e14c5c8e7dc07f9dd60174fb87c19b9a71e14c5c8e7dc07f9dd60174fb87c19b9a71e14c5c8e7dc07f9dd6000000000000000018000000000000000074fb87c19b9a71e14c5c8e7dc07f9dd6000000000000000018010000000000000074fb87c19b9a71e14c5c8e7dc07f9dd60000000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 134, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "74fb87c19b9a71e14c5c8e7dc07f9dd60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0088000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17000000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b9b5a7edeb3cc5ab92cad11447d5286b)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f23963bdbd45d9c5dc020abf43c03d52b9b5a7edeb3cc5ab92cad11447d5286b01b9b5a7edeb3cc5ab92cad11447d5286b01b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000180000000000000000b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000180100000000000000b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 135, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b9b5a7edeb3cc5ab92cad11447d5286b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0089000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17100000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c5eaad562f35ced76be73e3d099a2ab5)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e3eb72f16b2bfae179303bb6bff825a5c5eaad562f35ced76be73e3d099a2ab501c5eaad562f35ced76be73e3d099a2ab501c5eaad562f35ced76be73e3d099a2ab50000000000000000180000000000000000c5eaad562f35ced76be73e3d099a2ab50000000000000000180100000000000000c5eaad562f35ced76be73e3d099a2ab50000000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 136, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c5eaad562f35ced76be73e3d099a2ab50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17200000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b776e783b7fae908063ef0abac01f438)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20647eced646d4c742675db2a05b9cfe5ab776e783b7fae908063ef0abac01f43801b776e783b7fae908063ef0abac01f43801b776e783b7fae908063ef0abac01f4380000000000000000180000000000000000b776e783b7fae908063ef0abac01f4380000000000000000180100000000000000b776e783b7fae908063ef0abac01f4380000000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 137, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b776e783b7fae908063ef0abac01f4380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000034d654d52f62724b0d5649c4460735bb)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cd8d88266f573da6038a58a448d2f74334d654d52f62724b0d5649c4460735bb0134d654d52f62724b0d5649c4460735bb0134d654d52f62724b0d5649c4460735bb000000000000000018000000000000000034d654d52f62724b0d5649c4460735bb000000000000000018010000000000000034d654d52f62724b0d5649c4460735bb0000000000000000)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 138, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "34d654d52f62724b0d5649c4460735bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17400000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008125cbf0b192224c62581ba7d2fc8098)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209a3045a4611b6322606506bdc9f82cff8125cbf0b192224c62581ba7d2fc8098018125cbf0b192224c62581ba7d2fc8098018125cbf0b192224c62581ba7d2fc809800000000000000001800000000000000008125cbf0b192224c62581ba7d2fc809800000000000000001801000000000000008125cbf0b192224c62581ba7d2fc80980000000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 139, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8125cbf0b192224c62581ba7d2fc80980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17500000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000085f86c5bec52203f64e6fdfe726a1eda)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e81c37f5a116952962fe8fb76bf8e94f85f86c5bec52203f64e6fdfe726a1eda0185f86c5bec52203f64e6fdfe726a1eda0185f86c5bec52203f64e6fdfe726a1eda000000000000000018000000000000000085f86c5bec52203f64e6fdfe726a1eda000000000000000018010000000000000085f86c5bec52203f64e6fdfe726a1eda0000000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 140, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "85f86c5bec52203f64e6fdfe726a1eda0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17600000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000009b6aec499349e77607a5f99819ce70dd)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2048f833377f9ea5d6251e3d1c38ad748e9b6aec499349e77607a5f99819ce70dd019b6aec499349e77607a5f99819ce70dd019b6aec499349e77607a5f99819ce70dd00000000000000001800000000000000009b6aec499349e77607a5f99819ce70dd00000000000000001801000000000000009b6aec499349e77607a5f99819ce70dd0000000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 141, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9b6aec499349e77607a5f99819ce70dd0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(008f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17700000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ee28a86d8929d43e2ffcfa5350895347)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208f31fe361f32942e2d1c2c5693a36f79ee28a86d8929d43e2ffcfa535089534701ee28a86d8929d43e2ffcfa535089534701ee28a86d8929d43e2ffcfa53508953470000000000000000180000000000000000ee28a86d8929d43e2ffcfa53508953470000000000000000180100000000000000ee28a86d8929d43e2ffcfa53508953470000000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 142, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ee28a86d8929d43e2ffcfa53508953470600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0090000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17800000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005b80411af22132a594690d7bd7a28ab3)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202f8cc46f572c210d16a1f8c7260717cf5b80411af22132a594690d7bd7a28ab3015b80411af22132a594690d7bd7a28ab3015b80411af22132a594690d7bd7a28ab300000000000000001800000000000000005b80411af22132a594690d7bd7a28ab300000000000000001801000000000000005b80411af22132a594690d7bd7a28ab30000000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 143, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5b80411af22132a594690d7bd7a28ab30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0091000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17900000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007cdd88ff0c627024c86e2d95562a7f1a)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d5c8a18af0090347dd8f2d289fc4cc5b7cdd88ff0c627024c86e2d95562a7f1a017cdd88ff0c627024c86e2d95562a7f1a017cdd88ff0c627024c86e2d95562a7f1a00000000000000001800000000000000007cdd88ff0c627024c86e2d95562a7f1a00000000000000001801000000000000007cdd88ff0c627024c86e2d95562a7f1a0000000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 144, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7cdd88ff0c627024c86e2d95562a7f1a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0092000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000273a6621ee6beac7eb2fd98fdd9a0e38)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a7e1df3013132ca7b49bede1f2742bb3273a6621ee6beac7eb2fd98fdd9a0e3801273a6621ee6beac7eb2fd98fdd9a0e3801273a6621ee6beac7eb2fd98fdd9a0e380000000000000000180000000000000000273a6621ee6beac7eb2fd98fdd9a0e380000000000000000180100000000000000273a6621ee6beac7eb2fd98fdd9a0e380000000000000000)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 145, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "273a6621ee6beac7eb2fd98fdd9a0e380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0093000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003193736470483e900e18e39543537913)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c70d40c8b8508f36531d6831c506b1013193736470483e900e18e39543537913013193736470483e900e18e39543537913013193736470483e900e18e3954353791300000000000000001800000000000000003193736470483e900e18e3954353791300000000000000001801000000000000003193736470483e900e18e395435379130000000000000000)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 146, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3193736470483e900e18e395435379130600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0094000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17c00000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000eaeb1e85956c8a634bbc474fa07a166d)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20989dd93ddf47cfbf6fcd1a7cc2cb6896eaeb1e85956c8a634bbc474fa07a166d01eaeb1e85956c8a634bbc474fa07a166d01eaeb1e85956c8a634bbc474fa07a166d0000000000000000180000000000000000eaeb1e85956c8a634bbc474fa07a166d0000000000000000180100000000000000eaeb1e85956c8a634bbc474fa07a166d0000000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 147, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eaeb1e85956c8a634bbc474fa07a166d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0095000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17d00000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000eb73848fd02f7e910a25ec42f6669f26)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a07144d58918e906b4ec245ad3db594feb73848fd02f7e910a25ec42f6669f2601eb73848fd02f7e910a25ec42f6669f2601eb73848fd02f7e910a25ec42f6669f260000000000000000180000000000000000eb73848fd02f7e910a25ec42f6669f260000000000000000180100000000000000eb73848fd02f7e910a25ec42f6669f260000000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 148, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eb73848fd02f7e910a25ec42f6669f260600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0096000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17e00000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f281d6c1ceaf00801c87ea80d3ead06f)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b568354889f2e996907b7cf8e2412446f281d6c1ceaf00801c87ea80d3ead06f01f281d6c1ceaf00801c87ea80d3ead06f01f281d6c1ceaf00801c87ea80d3ead06f0000000000000000180000000000000000f281d6c1ceaf00801c87ea80d3ead06f0000000000000000180100000000000000f281d6c1ceaf00801c87ea80d3ead06f0000000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 149, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f281d6c1ceaf00801c87ea80d3ead06f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0097000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(7f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17f00000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000847df0424f9d7e98fec97476342fa9d8)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208483a27bc80cde29a58770141be255d5847df0424f9d7e98fec97476342fa9d801847df0424f9d7e98fec97476342fa9d801847df0424f9d7e98fec97476342fa9d80000000000000000180000000000000000847df0424f9d7e98fec97476342fa9d80000000000000000180100000000000000847df0424f9d7e98fec97476342fa9d80000000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 150, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "847df0424f9d7e98fec97476342fa9d80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0098000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002e8ff4ea1d84cacaa705b9f477f564e8)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203c1499632b6a3f4db87eb3de256003ae2e8ff4ea1d84cacaa705b9f477f564e8012e8ff4ea1d84cacaa705b9f477f564e8012e8ff4ea1d84cacaa705b9f477f564e800000000000000001800000000000000002e8ff4ea1d84cacaa705b9f477f564e800000000000000001801000000000000002e8ff4ea1d84cacaa705b9f477f564e80000000000000000)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 151, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2e8ff4ea1d84cacaa705b9f477f564e80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0099000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001c82ca5a0bdae0e182fdc5181a48e73a)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209ba64a009e62f7f586b6783aaaeedd8f1c82ca5a0bdae0e182fdc5181a48e73a011c82ca5a0bdae0e182fdc5181a48e73a011c82ca5a0bdae0e182fdc5181a48e73a00000000000000001800000000000000001c82ca5a0bdae0e182fdc5181a48e73a00000000000000001801000000000000001c82ca5a0bdae0e182fdc5181a48e73a0000000000000000)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 152, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1c82ca5a0bdae0e182fdc5181a48e73a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000039d336d4c8e4439c29a70bbd4d4ec8db)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a5468220bcffdcea082788ae41c17d0539d336d4c8e4439c29a70bbd4d4ec8db0139d336d4c8e4439c29a70bbd4d4ec8db0139d336d4c8e4439c29a70bbd4d4ec8db000000000000000018000000000000000039d336d4c8e4439c29a70bbd4d4ec8db000000000000000018010000000000000039d336d4c8e4439c29a70bbd4d4ec8db0000000000000000)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 153, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "39d336d4c8e4439c29a70bbd4d4ec8db0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18300000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e7241bfa54243ad9ecdca377e5658f67)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20196c0be33bd1d172dc5548453f8dc2dfe7241bfa54243ad9ecdca377e5658f6701e7241bfa54243ad9ecdca377e5658f6701e7241bfa54243ad9ecdca377e5658f670000000000000000180000000000000000e7241bfa54243ad9ecdca377e5658f670000000000000000180100000000000000e7241bfa54243ad9ecdca377e5658f670000000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 154, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e7241bfa54243ad9ecdca377e5658f670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18400000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000890e129087f90853a93bcb44dfa8fa32)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b5e02b3ad076d48fa561ad545852db8b890e129087f90853a93bcb44dfa8fa3201890e129087f90853a93bcb44dfa8fa3201890e129087f90853a93bcb44dfa8fa320000000000000000180000000000000000890e129087f90853a93bcb44dfa8fa320000000000000000180100000000000000890e129087f90853a93bcb44dfa8fa320000000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 155, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "890e129087f90853a93bcb44dfa8fa320600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18500000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000059cb529725016a164a07b48e0400171f)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202f68f9cd40b7fc16570b45d9ca10ea2f59cb529725016a164a07b48e0400171f0159cb529725016a164a07b48e0400171f0159cb529725016a164a07b48e0400171f000000000000000018000000000000000059cb529725016a164a07b48e0400171f000000000000000018010000000000000059cb529725016a164a07b48e0400171f0000000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 156, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "59cb529725016a164a07b48e0400171f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000004a22b1e015b37733cf2255db695793ba)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20efe51dc9f69095bf6da010b5ab133d204a22b1e015b37733cf2255db695793ba014a22b1e015b37733cf2255db695793ba014a22b1e015b37733cf2255db695793ba00000000000000001800000000000000004a22b1e015b37733cf2255db695793ba00000000000000001801000000000000004a22b1e015b37733cf2255db695793ba0000000000000000)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 157, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4a22b1e015b37733cf2255db695793ba0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(009f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000053cc2e7ea475ee95002272c0be680ec4)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ea0c2ef245532daf23504b416f45637f53cc2e7ea475ee95002272c0be680ec40153cc2e7ea475ee95002272c0be680ec40153cc2e7ea475ee95002272c0be680ec4000000000000000018000000000000000053cc2e7ea475ee95002272c0be680ec4000000000000000018010000000000000053cc2e7ea475ee95002272c0be680ec40000000000000000)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 158, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "53cc2e7ea475ee95002272c0be680ec40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003e97062e2df271400e49c9bb63fae409)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202f8fea86886652b8d2fc9d177361d2473e97062e2df271400e49c9bb63fae409013e97062e2df271400e49c9bb63fae409013e97062e2df271400e49c9bb63fae40900000000000000001800000000000000003e97062e2df271400e49c9bb63fae40900000000000000001801000000000000003e97062e2df271400e49c9bb63fae4090000000000000000)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 159, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3e97062e2df271400e49c9bb63fae4090600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18900000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a76bdc667d598439df52e2aa43e36711)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20766ac3b8c71ed97ece3f69d14d17b6b8a76bdc667d598439df52e2aa43e3671101a76bdc667d598439df52e2aa43e3671101a76bdc667d598439df52e2aa43e367110000000000000000180000000000000000a76bdc667d598439df52e2aa43e367110000000000000000180100000000000000a76bdc667d598439df52e2aa43e367110000000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 160, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a76bdc667d598439df52e2aa43e367110600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18a00000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000009a79baf30810ab6d22492ea14aa2c4f9)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b1e4b6721bf1255d0f8b6109b90bbedd9a79baf30810ab6d22492ea14aa2c4f9019a79baf30810ab6d22492ea14aa2c4f9019a79baf30810ab6d22492ea14aa2c4f900000000000000001800000000000000009a79baf30810ab6d22492ea14aa2c4f900000000000000001801000000000000009a79baf30810ab6d22492ea14aa2c4f90000000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 161, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9a79baf30810ab6d22492ea14aa2c4f90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000f83537d8bbe6efa939cee9a383a4581)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201505f663a9837a71c338ffbb6164a7bd0f83537d8bbe6efa939cee9a383a4581010f83537d8bbe6efa939cee9a383a4581010f83537d8bbe6efa939cee9a383a458100000000000000001800000000000000000f83537d8bbe6efa939cee9a383a458100000000000000001801000000000000000f83537d8bbe6efa939cee9a383a45810000000000000000)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 162, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0f83537d8bbe6efa939cee9a383a45810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18c00000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ff2ccceaee26a374be9de21939e2b0b6)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a8eae04673080fa35a9302a2cefe1e69ff2ccceaee26a374be9de21939e2b0b601ff2ccceaee26a374be9de21939e2b0b601ff2ccceaee26a374be9de21939e2b0b60000000000000000180000000000000000ff2ccceaee26a374be9de21939e2b0b60000000000000000180100000000000000ff2ccceaee26a374be9de21939e2b0b60000000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 163, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ff2ccceaee26a374be9de21939e2b0b60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18d00000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000827a343368e73a27ff5cbadbcb9b742a)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cb466e6e1f594df36a4f14bb6cd14e4e827a343368e73a27ff5cbadbcb9b742a01827a343368e73a27ff5cbadbcb9b742a01827a343368e73a27ff5cbadbcb9b742a0000000000000000180000000000000000827a343368e73a27ff5cbadbcb9b742a0000000000000000180100000000000000827a343368e73a27ff5cbadbcb9b742a0000000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 164, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "827a343368e73a27ff5cbadbcb9b742a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000134da7791425d1ca88f8df427f5aefdc)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20468d3a4451206c361218a5eb41f96354134da7791425d1ca88f8df427f5aefdc01134da7791425d1ca88f8df427f5aefdc01134da7791425d1ca88f8df427f5aefdc0000000000000000180000000000000000134da7791425d1ca88f8df427f5aefdc0000000000000000180100000000000000134da7791425d1ca88f8df427f5aefdc0000000000000000)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 165, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "134da7791425d1ca88f8df427f5aefdc0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(8f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18f00000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bc5c64ae3c648fb739aef0a8d299faeb)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e6971d3dfd0b372f71069497f9a98d3bc5c64ae3c648fb739aef0a8d299faeb01bc5c64ae3c648fb739aef0a8d299faeb01bc5c64ae3c648fb739aef0a8d299faeb0000000000000000180000000000000000bc5c64ae3c648fb739aef0a8d299faeb0000000000000000180100000000000000bc5c64ae3c648fb739aef0a8d299faeb0000000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 166, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bc5c64ae3c648fb739aef0a8d299faeb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19000000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ed8f89a89546bf2458512789330ba548)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200d953b39736a362cf134aa32fba17178ed8f89a89546bf2458512789330ba54801ed8f89a89546bf2458512789330ba54801ed8f89a89546bf2458512789330ba5480000000000000000180000000000000000ed8f89a89546bf2458512789330ba5480000000000000000180100000000000000ed8f89a89546bf2458512789330ba5480000000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 167, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ed8f89a89546bf2458512789330ba5480600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00a9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19100000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e8e0217659345865a411967a9deebad1)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209aec058d63e73e3638b6a290df9c601de8e0217659345865a411967a9deebad101e8e0217659345865a411967a9deebad101e8e0217659345865a411967a9deebad10000000000000000180000000000000000e8e0217659345865a411967a9deebad10000000000000000180100000000000000e8e0217659345865a411967a9deebad10000000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 168, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e8e0217659345865a411967a9deebad10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00aa000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000005f4dd977ddc79eb37b688957552d37f)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202967231c1d5ccde48860b197e39f0b6b05f4dd977ddc79eb37b688957552d37f0105f4dd977ddc79eb37b688957552d37f0105f4dd977ddc79eb37b688957552d37f000000000000000018000000000000000005f4dd977ddc79eb37b688957552d37f000000000000000018010000000000000005f4dd977ddc79eb37b688957552d37f0000000000000000)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 169, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "05f4dd977ddc79eb37b688957552d37f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ab000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003f67c0defea3d9a23d4cff11578e1db2)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200c2237ced6aaa6a2a32784bdd0d4dd873f67c0defea3d9a23d4cff11578e1db2013f67c0defea3d9a23d4cff11578e1db2013f67c0defea3d9a23d4cff11578e1db200000000000000001800000000000000003f67c0defea3d9a23d4cff11578e1db200000000000000001801000000000000003f67c0defea3d9a23d4cff11578e1db20000000000000000)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 170, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3f67c0defea3d9a23d4cff11578e1db20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ac000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19400000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c45e52e8edf0f1cdc60235568a9a80f3)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20065eb29cbc654e87aeb59a3808a741dac45e52e8edf0f1cdc60235568a9a80f301c45e52e8edf0f1cdc60235568a9a80f301c45e52e8edf0f1cdc60235568a9a80f30000000000000000180000000000000000c45e52e8edf0f1cdc60235568a9a80f30000000000000000180100000000000000c45e52e8edf0f1cdc60235568a9a80f30000000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 171, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c45e52e8edf0f1cdc60235568a9a80f30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ad000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002d0802cee5274dfe3ee0822dc74ba526)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206ae6a75c38b233b222ae6d22e57910c42d0802cee5274dfe3ee0822dc74ba526012d0802cee5274dfe3ee0822dc74ba526012d0802cee5274dfe3ee0822dc74ba52600000000000000001800000000000000002d0802cee5274dfe3ee0822dc74ba52600000000000000001801000000000000002d0802cee5274dfe3ee0822dc74ba5260000000000000000)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 172, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d0802cee5274dfe3ee0822dc74ba5260600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ae000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000107ac6915f540f49da9b8c97adfcf698)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201ef95742c8b854ef2afa357bfbbcac85107ac6915f540f49da9b8c97adfcf69801107ac6915f540f49da9b8c97adfcf69801107ac6915f540f49da9b8c97adfcf6980000000000000000180000000000000000107ac6915f540f49da9b8c97adfcf6980000000000000000180100000000000000107ac6915f540f49da9b8c97adfcf6980000000000000000)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 173, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "107ac6915f540f49da9b8c97adfcf6980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00af000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001138c991d55d34767c6f9d832fe9e1f4)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c0eff0a88636cb3873292079580d8cee1138c991d55d34767c6f9d832fe9e1f4011138c991d55d34767c6f9d832fe9e1f4011138c991d55d34767c6f9d832fe9e1f400000000000000001800000000000000001138c991d55d34767c6f9d832fe9e1f400000000000000001801000000000000001138c991d55d34767c6f9d832fe9e1f40000000000000000)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 174, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1138c991d55d34767c6f9d832fe9e1f40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19800000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000079513e82ebdd2a787c9d2e191053bb4c)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d3f78e29a659a15742148ca6fb4cc89079513e82ebdd2a787c9d2e191053bb4c0179513e82ebdd2a787c9d2e191053bb4c0179513e82ebdd2a787c9d2e191053bb4c000000000000000018000000000000000079513e82ebdd2a787c9d2e191053bb4c000000000000000018010000000000000079513e82ebdd2a787c9d2e191053bb4c0000000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 175, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79513e82ebdd2a787c9d2e191053bb4c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19900000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c9394de8260ecc3632969b4f1b0f68bb)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208c048917e73fc41d5685b4fb3801d0a5c9394de8260ecc3632969b4f1b0f68bb01c9394de8260ecc3632969b4f1b0f68bb01c9394de8260ecc3632969b4f1b0f68bb0000000000000000180000000000000000c9394de8260ecc3632969b4f1b0f68bb0000000000000000180100000000000000c9394de8260ecc3632969b4f1b0f68bb0000000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 176, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9394de8260ecc3632969b4f1b0f68bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000209be98768730c5da2f99b6e86388d66)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203e0d0aa8a3bf216c047781207df31bf1209be98768730c5da2f99b6e86388d6601209be98768730c5da2f99b6e86388d6601209be98768730c5da2f99b6e86388d660000000000000000180000000000000000209be98768730c5da2f99b6e86388d660000000000000000180100000000000000209be98768730c5da2f99b6e86388d660000000000000000)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 177, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "209be98768730c5da2f99b6e86388d660600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19b00000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000564bdc733addd56a58b44f57f9a73f2e)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5a7374a50850c07823888a559f1165d564bdc733addd56a58b44f57f9a73f2e01564bdc733addd56a58b44f57f9a73f2e01564bdc733addd56a58b44f57f9a73f2e0000000000000000180000000000000000564bdc733addd56a58b44f57f9a73f2e0000000000000000180100000000000000564bdc733addd56a58b44f57f9a73f2e0000000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 178, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "564bdc733addd56a58b44f57f9a73f2e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19c00000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000deba1bb3dc9abd91cc14acbca0ff0fd6)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2025822c0fbe88daee1d09f5e1d3963cb9deba1bb3dc9abd91cc14acbca0ff0fd601deba1bb3dc9abd91cc14acbca0ff0fd601deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000180000000000000000deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000180100000000000000deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 179, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "deba1bb3dc9abd91cc14acbca0ff0fd60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19d00000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ab0bc2212f0a720c5d14626e0db373de)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201a0ea324faaf99262a1f9dc5e2016f92ab0bc2212f0a720c5d14626e0db373de01ab0bc2212f0a720c5d14626e0db373de01ab0bc2212f0a720c5d14626e0db373de0000000000000000180000000000000000ab0bc2212f0a720c5d14626e0db373de0000000000000000180100000000000000ab0bc2212f0a720c5d14626e0db373de0000000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 180, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ab0bc2212f0a720c5d14626e0db373de0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000004bd7dd1bd4a35ddf81a039aacfbf903b)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2064aa13545ab52430acbb10d4d55bce1b4bd7dd1bd4a35ddf81a039aacfbf903b014bd7dd1bd4a35ddf81a039aacfbf903b014bd7dd1bd4a35ddf81a039aacfbf903b00000000000000001800000000000000004bd7dd1bd4a35ddf81a039aacfbf903b00000000000000001801000000000000004bd7dd1bd4a35ddf81a039aacfbf903b0000000000000000)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 181, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4bd7dd1bd4a35ddf81a039aacfbf903b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003b39630c52fb52ae278edacb2e2be73a)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a094b50e008834ddd3dcc641fea77c603b39630c52fb52ae278edacb2e2be73a013b39630c52fb52ae278edacb2e2be73a013b39630c52fb52ae278edacb2e2be73a00000000000000001800000000000000003b39630c52fb52ae278edacb2e2be73a00000000000000001801000000000000003b39630c52fb52ae278edacb2e2be73a0000000000000000)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(9f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 182, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3b39630c52fb52ae278edacb2e2be73a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a000000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000009554b2425669d03028bdcf4c3a19e47a)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b5ec15ec0f2640d319ed500a39e2f8de9554b2425669d03028bdcf4c3a19e47a019554b2425669d03028bdcf4c3a19e47a019554b2425669d03028bdcf4c3a19e47a00000000000000001800000000000000009554b2425669d03028bdcf4c3a19e47a00000000000000001801000000000000009554b2425669d03028bdcf4c3a19e47a0000000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 183, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9554b2425669d03028bdcf4c3a19e47a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00b9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001e496c579b0c04ac53db7dbcf04b934d)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2027b53a2d20ebf7912288652267875eff1e496c579b0c04ac53db7dbcf04b934d011e496c579b0c04ac53db7dbcf04b934d011e496c579b0c04ac53db7dbcf04b934d00000000000000001800000000000000001e496c579b0c04ac53db7dbcf04b934d00000000000000001801000000000000001e496c579b0c04ac53db7dbcf04b934d0000000000000000)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 184, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1e496c579b0c04ac53db7dbcf04b934d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ba000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a200000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a620b677ffe9a91f24c03c7f69af44a6)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(209cba9aabde7999dd16282cf8672b6bbaa620b677ffe9a91f24c03c7f69af44a601a620b677ffe9a91f24c03c7f69af44a601a620b677ffe9a91f24c03c7f69af44a60000000000000000180000000000000000a620b677ffe9a91f24c03c7f69af44a60000000000000000180100000000000000a620b677ffe9a91f24c03c7f69af44a60000000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 185, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a620b677ffe9a91f24c03c7f69af44a60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00bb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a300000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2092ee8d16312c4dba096572aa23b949e6a2e6cf8a6ce2ad91fd0c649caa1f09ee01a2e6cf8a6ce2ad91fd0c649caa1f09ee01a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000180000000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000180100000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 186, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2e6cf8a6ce2ad91fd0c649caa1f09ee0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00bc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a400000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d5eda9e6ee3f43280bdda6f9cf95765d)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20541916d315dd5b8c806654ef980461a1d5eda9e6ee3f43280bdda6f9cf95765d01d5eda9e6ee3f43280bdda6f9cf95765d01d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000180000000000000000d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000180100000000000000d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 187, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d5eda9e6ee3f43280bdda6f9cf95765d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00bd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000057f30f25561d491f96f284bda98f8a)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20fb5f7d6f47b910068402daa3b1dfcce20057f30f25561d491f96f284bda98f8a010057f30f25561d491f96f284bda98f8a010057f30f25561d491f96f284bda98f8a00000000000000001800000000000000000057f30f25561d491f96f284bda98f8a00000000000000001801000000000000000057f30f25561d491f96f284bda98f8a0000000000000000)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 188, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0057f30f25561d491f96f284bda98f8a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00be000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003e2af45915ab14ba48b59376644e40f5)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cd3bc81630e160696f192cfca5574f763e2af45915ab14ba48b59376644e40f5013e2af45915ab14ba48b59376644e40f5013e2af45915ab14ba48b59376644e40f500000000000000001800000000000000003e2af45915ab14ba48b59376644e40f500000000000000001801000000000000003e2af45915ab14ba48b59376644e40f50000000000000000)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 189, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3e2af45915ab14ba48b59376644e40f50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00bf000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003d970242497f893d311eef5fb1342c3b)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208b022ca8279a77d67c2b9bc6d86daca13d970242497f893d311eef5fb1342c3b013d970242497f893d311eef5fb1342c3b013d970242497f893d311eef5fb1342c3b00000000000000001800000000000000003d970242497f893d311eef5fb1342c3b00000000000000001801000000000000003d970242497f893d311eef5fb1342c3b0000000000000000)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 190, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3d970242497f893d311eef5fb1342c3b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002211046da4b8ba74d20b3e5b28a6baaa)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2024e6f0df8933c58b755dba07fb3988852211046da4b8ba74d20b3e5b28a6baaa012211046da4b8ba74d20b3e5b28a6baaa012211046da4b8ba74d20b3e5b28a6baaa00000000000000001800000000000000002211046da4b8ba74d20b3e5b28a6baaa00000000000000001801000000000000002211046da4b8ba74d20b3e5b28a6baaa0000000000000000)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 191, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2211046da4b8ba74d20b3e5b28a6baaa0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(a900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a900000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006543e6e0e513b678d09f60449e0349bf)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205a8ac20874e75c6a7596901c70bb5a726543e6e0e513b678d09f60449e0349bf016543e6e0e513b678d09f60449e0349bf016543e6e0e513b678d09f60449e0349bf00000000000000001800000000000000006543e6e0e513b678d09f60449e0349bf00000000000000001801000000000000006543e6e0e513b678d09f60449e0349bf0000000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 192, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6543e6e0e513b678d09f60449e0349bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(aa00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1aa00000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000efe692946cbf356b66d6fbdf32283be2)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202cd12c699fe0f071093dd4b6fabd142eefe692946cbf356b66d6fbdf32283be201efe692946cbf356b66d6fbdf32283be201efe692946cbf356b66d6fbdf32283be20000000000000000180000000000000000efe692946cbf356b66d6fbdf32283be20000000000000000180100000000000000efe692946cbf356b66d6fbdf32283be20000000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 193, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "efe692946cbf356b66d6fbdf32283be20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ab00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ab00000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000936ed062924fb9cba2b0166e5f4104bb)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20400a9a3231ce36c7c08dfb7d79936e0d936ed062924fb9cba2b0166e5f4104bb01936ed062924fb9cba2b0166e5f4104bb01936ed062924fb9cba2b0166e5f4104bb0000000000000000180000000000000000936ed062924fb9cba2b0166e5f4104bb0000000000000000180100000000000000936ed062924fb9cba2b0166e5f4104bb0000000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 194, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "936ed062924fb9cba2b0166e5f4104bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ac00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ac00000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f1a3af01af3cfcf01148b1dfcb6b0093)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207227a4751edb69d5d1943d3900c12898f1a3af01af3cfcf01148b1dfcb6b009301f1a3af01af3cfcf01148b1dfcb6b009301f1a3af01af3cfcf01148b1dfcb6b00930000000000000000180000000000000000f1a3af01af3cfcf01148b1dfcb6b00930000000000000000180100000000000000f1a3af01af3cfcf01148b1dfcb6b00930000000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 195, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f1a3af01af3cfcf01148b1dfcb6b00930600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ad00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ad00000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a877e2c67b134bbe6dfd29953cc41c9d)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20e95c0cdf010324c7501bae027431fb82a877e2c67b134bbe6dfd29953cc41c9d01a877e2c67b134bbe6dfd29953cc41c9d01a877e2c67b134bbe6dfd29953cc41c9d0000000000000000180000000000000000a877e2c67b134bbe6dfd29953cc41c9d0000000000000000180100000000000000a877e2c67b134bbe6dfd29953cc41c9d0000000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 196, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a877e2c67b134bbe6dfd29953cc41c9d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000276dda1a2decae4e4425f09965d70787)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2011b5fca8f8bf834d68fa916ead04cee9276dda1a2decae4e4425f09965d7078701276dda1a2decae4e4425f09965d7078701276dda1a2decae4e4425f09965d707870000000000000000180000000000000000276dda1a2decae4e4425f09965d707870000000000000000180100000000000000276dda1a2decae4e4425f09965d707870000000000000000)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ae00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ae00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 197, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "276dda1a2decae4e4425f09965d707870600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(af00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1af00000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008706f31b8c3613c8d252d5d408ae929b)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ec8162950fcbb8bcee6fe1aedae5948c8706f31b8c3613c8d252d5d408ae929b018706f31b8c3613c8d252d5d408ae929b018706f31b8c3613c8d252d5d408ae929b00000000000000001800000000000000008706f31b8c3613c8d252d5d408ae929b00000000000000001801000000000000008706f31b8c3613c8d252d5d408ae929b0000000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 198, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8706f31b8c3613c8d252d5d408ae929b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b000000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000885d9862f22c6067dddcabaa635be092)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20763866e2d023ff2de7f04b8505c08a17885d9862f22c6067dddcabaa635be09201885d9862f22c6067dddcabaa635be09201885d9862f22c6067dddcabaa635be0920000000000000000180000000000000000885d9862f22c6067dddcabaa635be0920000000000000000180100000000000000885d9862f22c6067dddcabaa635be0920000000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 199, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "885d9862f22c6067dddcabaa635be0920600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00c9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000032914277ecd6432f4fed796aaa166e)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bdfeec453c2f8c34e51a86bdfb8e576c0032914277ecd6432f4fed796aaa166e010032914277ecd6432f4fed796aaa166e010032914277ecd6432f4fed796aaa166e00000000000000001800000000000000000032914277ecd6432f4fed796aaa166e00000000000000001801000000000000000032914277ecd6432f4fed796aaa166e0000000000000000)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 200, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0032914277ecd6432f4fed796aaa166e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ca000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b200000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e2d5176b89352e17fbc33a3c8c6fb038)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2021ee81e6f16fef331a987c9cf0ef0e53e2d5176b89352e17fbc33a3c8c6fb03801e2d5176b89352e17fbc33a3c8c6fb03801e2d5176b89352e17fbc33a3c8c6fb0380000000000000000180000000000000000e2d5176b89352e17fbc33a3c8c6fb0380000000000000000180100000000000000e2d5176b89352e17fbc33a3c8c6fb0380000000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 201, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e2d5176b89352e17fbc33a3c8c6fb0380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00cb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b300000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000009f6d3f37cb317ef877f5b46f9c5c7541)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2038daff2db036bb0e33444abe91b83e8e9f6d3f37cb317ef877f5b46f9c5c7541019f6d3f37cb317ef877f5b46f9c5c7541019f6d3f37cb317ef877f5b46f9c5c754100000000000000001800000000000000009f6d3f37cb317ef877f5b46f9c5c754100000000000000001801000000000000009f6d3f37cb317ef877f5b46f9c5c75410000000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 202, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9f6d3f37cb317ef877f5b46f9c5c75410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00cc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b400000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e43ca37743c0313c76831b7cc39b40ed)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20c185bfbd182df604e323217fa7494086e43ca37743c0313c76831b7cc39b40ed01e43ca37743c0313c76831b7cc39b40ed01e43ca37743c0313c76831b7cc39b40ed0000000000000000180000000000000000e43ca37743c0313c76831b7cc39b40ed0000000000000000180100000000000000e43ca37743c0313c76831b7cc39b40ed0000000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 203, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e43ca37743c0313c76831b7cc39b40ed0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00cd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003fbf0e4be6eb414b740b5f3fe12b613b)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207500b352f539d92aaf3a6e4c93e8e08f3fbf0e4be6eb414b740b5f3fe12b613b013fbf0e4be6eb414b740b5f3fe12b613b013fbf0e4be6eb414b740b5f3fe12b613b00000000000000001800000000000000003fbf0e4be6eb414b740b5f3fe12b613b00000000000000001801000000000000003fbf0e4be6eb414b740b5f3fe12b613b0000000000000000)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 204, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3fbf0e4be6eb414b740b5f3fe12b613b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ce000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002417ff97c6bd0d992ed5a5ccc65ccfd9)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f10af8c8a23cb79e0139a626cb47db5f2417ff97c6bd0d992ed5a5ccc65ccfd9012417ff97c6bd0d992ed5a5ccc65ccfd9012417ff97c6bd0d992ed5a5ccc65ccfd900000000000000001800000000000000002417ff97c6bd0d992ed5a5ccc65ccfd900000000000000001801000000000000002417ff97c6bd0d992ed5a5ccc65ccfd90000000000000000)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 205, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2417ff97c6bd0d992ed5a5ccc65ccfd90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00cf000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001aff2d50fcc7b3d92694de841376564f)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205a1084a10c6e2e1e167e40a6c58dc1f31aff2d50fcc7b3d92694de841376564f011aff2d50fcc7b3d92694de841376564f011aff2d50fcc7b3d92694de841376564f00000000000000001800000000000000001aff2d50fcc7b3d92694de841376564f00000000000000001801000000000000001aff2d50fcc7b3d92694de841376564f0000000000000000)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 206, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1aff2d50fcc7b3d92694de841376564f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000a2cb534c8fd987369dab73c26a4c6df)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207dca773fe91869ef099e91c0dd3a4a390a2cb534c8fd987369dab73c26a4c6df010a2cb534c8fd987369dab73c26a4c6df010a2cb534c8fd987369dab73c26a4c6df00000000000000001800000000000000000a2cb534c8fd987369dab73c26a4c6df00000000000000001801000000000000000a2cb534c8fd987369dab73c26a4c6df0000000000000000)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 207, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0a2cb534c8fd987369dab73c26a4c6df0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(b900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b900000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000096faaa1c8cf58bdb0c0083dc87c2155d)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20a1968c863ec0e956504ea22f0d08240696faaa1c8cf58bdb0c0083dc87c2155d0196faaa1c8cf58bdb0c0083dc87c2155d0196faaa1c8cf58bdb0c0083dc87c2155d000000000000000018000000000000000096faaa1c8cf58bdb0c0083dc87c2155d000000000000000018010000000000000096faaa1c8cf58bdb0c0083dc87c2155d0000000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 208, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "96faaa1c8cf58bdb0c0083dc87c2155d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ba00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ba00000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bb5208a2dd01d35a5d821f95c6b88183)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20df064230ed09de155c52f6c5f9d75a12bb5208a2dd01d35a5d821f95c6b8818301bb5208a2dd01d35a5d821f95c6b8818301bb5208a2dd01d35a5d821f95c6b881830000000000000000180000000000000000bb5208a2dd01d35a5d821f95c6b881830000000000000000180100000000000000bb5208a2dd01d35a5d821f95c6b881830000000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 209, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bb5208a2dd01d35a5d821f95c6b881830600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(bb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bb00000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007be3d209c11406126e5d34afe98d65e1)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20872bb56cf743e1f31670938c4b0f61307be3d209c11406126e5d34afe98d65e1017be3d209c11406126e5d34afe98d65e1017be3d209c11406126e5d34afe98d65e100000000000000001800000000000000007be3d209c11406126e5d34afe98d65e100000000000000001801000000000000007be3d209c11406126e5d34afe98d65e10000000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 210, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7be3d209c11406126e5d34afe98d65e10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(bc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bc00000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000aebe883fff823f57e0c234ab0199fada)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f8e536fdf919fc558e19d73edb88197baebe883fff823f57e0c234ab0199fada01aebe883fff823f57e0c234ab0199fada01aebe883fff823f57e0c234ab0199fada0000000000000000180000000000000000aebe883fff823f57e0c234ab0199fada0000000000000000180100000000000000aebe883fff823f57e0c234ab0199fada0000000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 211, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "aebe883fff823f57e0c234ab0199fada0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(bd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bd00000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e3b5a034b2844346c05d292c9877204d)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2021020fe4809488101405a69c3057fb2ce3b5a034b2844346c05d292c9877204d01e3b5a034b2844346c05d292c9877204d01e3b5a034b2844346c05d292c9877204d0000000000000000180000000000000000e3b5a034b2844346c05d292c9877204d0000000000000000180100000000000000e3b5a034b2844346c05d292c9877204d0000000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 212, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e3b5a034b2844346c05d292c9877204d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(be00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1be00000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c8b78c34495e7c3eef36b3d29df6a5ca)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cc47f1ddf69f36f95428dc0303d58888c8b78c34495e7c3eef36b3d29df6a5ca01c8b78c34495e7c3eef36b3d29df6a5ca01c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000180000000000000000c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000180100000000000000c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 213, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c8b78c34495e7c3eef36b3d29df6a5ca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(bf00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bf00000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000088d4a94919c155ef0ac7933b615d70cb)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20debb333b2022d95114b9111dcd12a82c88d4a94919c155ef0ac7933b615d70cb0188d4a94919c155ef0ac7933b615d70cb0188d4a94919c155ef0ac7933b615d70cb000000000000000018000000000000000088d4a94919c155ef0ac7933b615d70cb000000000000000018010000000000000088d4a94919c155ef0ac7933b615d70cb0000000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 214, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "88d4a94919c155ef0ac7933b615d70cb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000026ce2493724fdfea9e95593f92d43bc9)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b42506c29e1385d4ae4ff2ad63ddfb9f26ce2493724fdfea9e95593f92d43bc90126ce2493724fdfea9e95593f92d43bc90126ce2493724fdfea9e95593f92d43bc9000000000000000018000000000000000026ce2493724fdfea9e95593f92d43bc9000000000000000018010000000000000026ce2493724fdfea9e95593f92d43bc90000000000000000)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 215, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "26ce2493724fdfea9e95593f92d43bc90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00d9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c100000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000fd5aa9e2b768e4e4740921b6d8b2a76e)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20336f64d9ced01da6ea088656d8793234fd5aa9e2b768e4e4740921b6d8b2a76e01fd5aa9e2b768e4e4740921b6d8b2a76e01fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000180000000000000000fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000180100000000000000fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 216, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fd5aa9e2b768e4e4740921b6d8b2a76e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00da000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c200000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000952ab40d091609334f2952c6c9df8797)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2064f20d46f6704f084aaf7212e640d493952ab40d091609334f2952c6c9df879701952ab40d091609334f2952c6c9df879701952ab40d091609334f2952c6c9df87970000000000000000180000000000000000952ab40d091609334f2952c6c9df87970000000000000000180100000000000000952ab40d091609334f2952c6c9df87970000000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 217, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "952ab40d091609334f2952c6c9df87970600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00db000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c300000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000851933a21e6033233f3b0a2045a1b78f)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20384778754b4624b6ea9c7cc1a4919c8d851933a21e6033233f3b0a2045a1b78f01851933a21e6033233f3b0a2045a1b78f01851933a21e6033233f3b0a2045a1b78f0000000000000000180000000000000000851933a21e6033233f3b0a2045a1b78f0000000000000000180100000000000000851933a21e6033233f3b0a2045a1b78f0000000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 218, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "851933a21e6033233f3b0a2045a1b78f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00dc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000b0d80343c78fdee761b4548cb78cd43)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208cf6396118e337e011002aaf781cd9350b0d80343c78fdee761b4548cb78cd43010b0d80343c78fdee761b4548cb78cd43010b0d80343c78fdee761b4548cb78cd4300000000000000001800000000000000000b0d80343c78fdee761b4548cb78cd4300000000000000001801000000000000000b0d80343c78fdee761b4548cb78cd430000000000000000)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c400000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 219, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0b0d80343c78fdee761b4548cb78cd430600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00dd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002307680e487dac6953be08c9ee8448bb)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2061f317d2586e861e76c4ab015f4cea962307680e487dac6953be08c9ee8448bb012307680e487dac6953be08c9ee8448bb012307680e487dac6953be08c9ee8448bb00000000000000001800000000000000002307680e487dac6953be08c9ee8448bb00000000000000001801000000000000002307680e487dac6953be08c9ee8448bb0000000000000000)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 220, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2307680e487dac6953be08c9ee8448bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00de000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c600000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000077559db426d139cd8abcce3609fbebaf)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205214aa9fef2b0bb4e9d0562b5555908d77559db426d139cd8abcce3609fbebaf0177559db426d139cd8abcce3609fbebaf0177559db426d139cd8abcce3609fbebaf000000000000000018000000000000000077559db426d139cd8abcce3609fbebaf000000000000000018010000000000000077559db426d139cd8abcce3609fbebaf0000000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 221, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "77559db426d139cd8abcce3609fbebaf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00df000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c700000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b525bad3eb698eb4a4b10d895d9ed90d)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201bfd65f39503e0a05efccf3e5a06497ab525bad3eb698eb4a4b10d895d9ed90d01b525bad3eb698eb4a4b10d895d9ed90d01b525bad3eb698eb4a4b10d895d9ed90d0000000000000000180000000000000000b525bad3eb698eb4a4b10d895d9ed90d0000000000000000180100000000000000b525bad3eb698eb4a4b10d895d9ed90d0000000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 222, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b525bad3eb698eb4a4b10d895d9ed90d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c800000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d75870f00b2075b4ddcf2da85c906bf0)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ead9c65b56f8d07c7c3df5d2350b1b6ed75870f00b2075b4ddcf2da85c906bf001d75870f00b2075b4ddcf2da85c906bf001d75870f00b2075b4ddcf2da85c906bf00000000000000000180000000000000000d75870f00b2075b4ddcf2da85c906bf00000000000000000180100000000000000d75870f00b2075b4ddcf2da85c906bf00000000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 223, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d75870f00b2075b4ddcf2da85c906bf00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001a401b4375a3c425313bc9009a047167)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2086366a06097042baff1c1f49cfa05d691a401b4375a3c425313bc9009a047167011a401b4375a3c425313bc9009a047167011a401b4375a3c425313bc9009a04716700000000000000001800000000000000001a401b4375a3c425313bc9009a04716700000000000000001801000000000000001a401b4375a3c425313bc9009a0471670000000000000000)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(c900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 224, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1a401b4375a3c425313bc9009a0471670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ca00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ca00000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d552b333c494f537dddbc1a8166a0ac1)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20334d42c3cc66c7828bc936a6df86f3f6d552b333c494f537dddbc1a8166a0ac101d552b333c494f537dddbc1a8166a0ac101d552b333c494f537dddbc1a8166a0ac10000000000000000180000000000000000d552b333c494f537dddbc1a8166a0ac10000000000000000180100000000000000d552b333c494f537dddbc1a8166a0ac10000000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 225, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d552b333c494f537dddbc1a8166a0ac10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000314ed7a6783a8b97dd1d0bf52a4e21f0)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20584ee50d1ee4d0f62cd6990888e0f3f1314ed7a6783a8b97dd1d0bf52a4e21f001314ed7a6783a8b97dd1d0bf52a4e21f001314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000180000000000000000314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000180100000000000000314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(cb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cb00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 226, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "314ed7a6783a8b97dd1d0bf52a4e21f00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(cc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cc00000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005e0655e98dc8bfadfb6388628cbd247f)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20737f7e112f2496fc9b74162b7da1d9d95e0655e98dc8bfadfb6388628cbd247f015e0655e98dc8bfadfb6388628cbd247f015e0655e98dc8bfadfb6388628cbd247f00000000000000001800000000000000005e0655e98dc8bfadfb6388628cbd247f00000000000000001801000000000000005e0655e98dc8bfadfb6388628cbd247f0000000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 227, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5e0655e98dc8bfadfb6388628cbd247f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001b567248bca3f083d80bd96c768245a1)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206becc175c2a6a1de3eafe5b68b2f09731b567248bca3f083d80bd96c768245a1011b567248bca3f083d80bd96c768245a1011b567248bca3f083d80bd96c768245a100000000000000001800000000000000001b567248bca3f083d80bd96c768245a100000000000000001801000000000000001b567248bca3f083d80bd96c768245a10000000000000000)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(cd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cd00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 228, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b567248bca3f083d80bd96c768245a10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ce00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ce00000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f0036e42f634572bdf355a1fe6e26e3e)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204d07387b139e1c0652483fd0778fd0d7f0036e42f634572bdf355a1fe6e26e3e01f0036e42f634572bdf355a1fe6e26e3e01f0036e42f634572bdf355a1fe6e26e3e0000000000000000180000000000000000f0036e42f634572bdf355a1fe6e26e3e0000000000000000180100000000000000f0036e42f634572bdf355a1fe6e26e3e0000000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 229, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f0036e42f634572bdf355a1fe6e26e3e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(cf00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cf00000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000058420ab20222ca72bfa68f3ee5a841ef)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201a4c67f870ca54f32117f7dcfec4d39658420ab20222ca72bfa68f3ee5a841ef0158420ab20222ca72bfa68f3ee5a841ef0158420ab20222ca72bfa68f3ee5a841ef000000000000000018000000000000000058420ab20222ca72bfa68f3ee5a841ef000000000000000018010000000000000058420ab20222ca72bfa68f3ee5a841ef0000000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 230, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "58420ab20222ca72bfa68f3ee5a841ef0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000004095c35cc25b3b0d6c17abfc5697b11e)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b6dbb0f6063161a4cea3d77086ca47464095c35cc25b3b0d6c17abfc5697b11e014095c35cc25b3b0d6c17abfc5697b11e014095c35cc25b3b0d6c17abfc5697b11e00000000000000001800000000000000004095c35cc25b3b0d6c17abfc5697b11e00000000000000001801000000000000004095c35cc25b3b0d6c17abfc5697b11e0000000000000000)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 231, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4095c35cc25b3b0d6c17abfc5697b11e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00e9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003936a227f7c50a2b11a96aa63ee5d681)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206d1bfb1c8c7b3dc66bca8ab837788b193936a227f7c50a2b11a96aa63ee5d681013936a227f7c50a2b11a96aa63ee5d681013936a227f7c50a2b11a96aa63ee5d68100000000000000001800000000000000003936a227f7c50a2b11a96aa63ee5d68100000000000000001801000000000000003936a227f7c50a2b11a96aa63ee5d6810000000000000000)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 232, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3936a227f7c50a2b11a96aa63ee5d6810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ea000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d200000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e74c4e03b0afea7811b8c1217cda8dff)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2084d570a089786c0d3d0ec12034f55c3de74c4e03b0afea7811b8c1217cda8dff01e74c4e03b0afea7811b8c1217cda8dff01e74c4e03b0afea7811b8c1217cda8dff0000000000000000180000000000000000e74c4e03b0afea7811b8c1217cda8dff0000000000000000180100000000000000e74c4e03b0afea7811b8c1217cda8dff0000000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 233, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e74c4e03b0afea7811b8c1217cda8dff0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00eb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d300000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000c9c26d8ac3cacdded7f424f54e026188)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206f6a245e395f09512908cd862c3f09fac9c26d8ac3cacdded7f424f54e02618801c9c26d8ac3cacdded7f424f54e02618801c9c26d8ac3cacdded7f424f54e0261880000000000000000180000000000000000c9c26d8ac3cacdded7f424f54e0261880000000000000000180100000000000000c9c26d8ac3cacdded7f424f54e0261880000000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 234, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9c26d8ac3cacdded7f424f54e0261880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ec000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d400000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007dffec101ae7114c1a15741081c8cb89)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d5d902eedbc92ec5137b79f4b63c69557dffec101ae7114c1a15741081c8cb89017dffec101ae7114c1a15741081c8cb89017dffec101ae7114c1a15741081c8cb8900000000000000001800000000000000007dffec101ae7114c1a15741081c8cb8900000000000000001801000000000000007dffec101ae7114c1a15741081c8cb890000000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 235, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7dffec101ae7114c1a15741081c8cb890600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ed000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d500000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000649dfd6317b400cdcf776a3d6dd7576c)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20431a93324b32f290b8cdf578724eba56649dfd6317b400cdcf776a3d6dd7576c01649dfd6317b400cdcf776a3d6dd7576c01649dfd6317b400cdcf776a3d6dd7576c0000000000000000180000000000000000649dfd6317b400cdcf776a3d6dd7576c0000000000000000180100000000000000649dfd6317b400cdcf776a3d6dd7576c0000000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 236, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "649dfd6317b400cdcf776a3d6dd7576c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ee000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d600000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204cb41564bddeb98359f9250f60fe6b1796b2b2714b20ffd7d898f0f6dbc0ef2e0196b2b2714b20ffd7d898f0f6dbc0ef2e0196b2b2714b20ffd7d898f0f6dbc0ef2e000000000000000018000000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e000000000000000018010000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e0000000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 237, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "96b2b2714b20ffd7d898f0f6dbc0ef2e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ef000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d700000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000dd5342be6e0af550e74f7c9677f8ef5d)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208d4cce8cbbc233b5d4a964e1b386f3bfdd5342be6e0af550e74f7c9677f8ef5d01dd5342be6e0af550e74f7c9677f8ef5d01dd5342be6e0af550e74f7c9677f8ef5d0000000000000000180000000000000000dd5342be6e0af550e74f7c9677f8ef5d0000000000000000180100000000000000dd5342be6e0af550e74f7c9677f8ef5d0000000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 238, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dd5342be6e0af550e74f7c9677f8ef5d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d800000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b98a067a11442f61adaf182b7cf2fee9bbe0a1295aa5912cacb9b5fb7e1d19ae01bbe0a1295aa5912cacb9b5fb7e1d19ae01bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000180000000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000180100000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 239, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bbe0a1295aa5912cacb9b5fb7e1d19ae0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(d900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d900000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005f2696bdb18b96742df37df9292e01f3)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cc36a5ae2c7f48fae059c7e3d83866e95f2696bdb18b96742df37df9292e01f3015f2696bdb18b96742df37df9292e01f3015f2696bdb18b96742df37df9292e01f300000000000000001800000000000000005f2696bdb18b96742df37df9292e01f300000000000000001801000000000000005f2696bdb18b96742df37df9292e01f30000000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 240, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5f2696bdb18b96742df37df9292e01f30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(da00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1da00000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000074b64c0c6942b1222562ddf0d5844388)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f9f8a9bf4260e155302cf4deefda867374b64c0c6942b1222562ddf0d58443880174b64c0c6942b1222562ddf0d58443880174b64c0c6942b1222562ddf0d5844388000000000000000018000000000000000074b64c0c6942b1222562ddf0d5844388000000000000000018010000000000000074b64c0c6942b1222562ddf0d58443880000000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 241, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "74b64c0c6942b1222562ddf0d58443880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000051284f46e73efbc9063583f4782707a5)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20cdb70393230e3bb3c2e0003edba2de2651284f46e73efbc9063583f4782707a50151284f46e73efbc9063583f4782707a50151284f46e73efbc9063583f4782707a5000000000000000018000000000000000051284f46e73efbc9063583f4782707a5000000000000000018010000000000000051284f46e73efbc9063583f4782707a50000000000000000)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(db00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1db00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 242, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "51284f46e73efbc9063583f4782707a50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000032f8afb94beea322d3b61781c994117b)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20789bc05942373c27a8378d039b226aa532f8afb94beea322d3b61781c994117b0132f8afb94beea322d3b61781c994117b0132f8afb94beea322d3b61781c994117b000000000000000018000000000000000032f8afb94beea322d3b61781c994117b000000000000000018010000000000000032f8afb94beea322d3b61781c994117b0000000000000000)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(dc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1dc00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 243, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "32f8afb94beea322d3b61781c994117b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(dd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1dd00000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006fa125ee17ddc74ed1f00da745c1828d)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b8eab9c0561fcaafda2ce4a36a0589056fa125ee17ddc74ed1f00da745c1828d016fa125ee17ddc74ed1f00da745c1828d016fa125ee17ddc74ed1f00da745c1828d00000000000000001800000000000000006fa125ee17ddc74ed1f00da745c1828d00000000000000001801000000000000006fa125ee17ddc74ed1f00da745c1828d0000000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 244, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6fa125ee17ddc74ed1f00da745c1828d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000020d830687585167e4cda1847fb25af7d)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20bb81d108fc344f8357785cc2824c0f0d20d830687585167e4cda1847fb25af7d0120d830687585167e4cda1847fb25af7d0120d830687585167e4cda1847fb25af7d000000000000000018000000000000000020d830687585167e4cda1847fb25af7d000000000000000018010000000000000020d830687585167e4cda1847fb25af7d0000000000000000)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(de00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1de00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 245, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "20d830687585167e4cda1847fb25af7d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002d2b3afdd656cb64ecd68061f025130c)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207b46a36cd748986777b11a0b82b9a7812d2b3afdd656cb64ecd68061f025130c012d2b3afdd656cb64ecd68061f025130c012d2b3afdd656cb64ecd68061f025130c00000000000000001800000000000000002d2b3afdd656cb64ecd68061f025130c00000000000000001801000000000000002d2b3afdd656cb64ecd68061f025130c0000000000000000)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(df00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1df00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 246, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d2b3afdd656cb64ecd68061f025130c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e000000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d9c0b673996aaf9357ee345be95f6e8f)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(200cb33b91ce5031a80b32c06c621ef1a0d9c0b673996aaf9357ee345be95f6e8f01d9c0b673996aaf9357ee345be95f6e8f01d9c0b673996aaf9357ee345be95f6e8f0000000000000000180000000000000000d9c0b673996aaf9357ee345be95f6e8f0000000000000000180100000000000000d9c0b673996aaf9357ee345be95f6e8f0000000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 247, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9c0b673996aaf9357ee345be95f6e8f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00f9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e100000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b4d2e481047df37180f18abe22835d13)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20306821708b0af71b0266468d2bc5282ab4d2e481047df37180f18abe22835d1301b4d2e481047df37180f18abe22835d1301b4d2e481047df37180f18abe22835d130000000000000000180000000000000000b4d2e481047df37180f18abe22835d130000000000000000180100000000000000b4d2e481047df37180f18abe22835d130000000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 248, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b4d2e481047df37180f18abe22835d130600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00fa000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e200000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000008beb41dcdae03337bb629a2ac423ce6f)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2007513514bcdc3beacdb600281923af188beb41dcdae03337bb629a2ac423ce6f018beb41dcdae03337bb629a2ac423ce6f018beb41dcdae03337bb629a2ac423ce6f00000000000000001800000000000000008beb41dcdae03337bb629a2ac423ce6f00000000000000001801000000000000008beb41dcdae03337bb629a2ac423ce6f0000000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 249, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8beb41dcdae03337bb629a2ac423ce6f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00fb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003bce5f7cdeb5dddded00aa75ea5a3641)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2086795bd6e6ea8809502e69537b00d5963bce5f7cdeb5dddded00aa75ea5a3641013bce5f7cdeb5dddded00aa75ea5a3641013bce5f7cdeb5dddded00aa75ea5a364100000000000000001800000000000000003bce5f7cdeb5dddded00aa75ea5a364100000000000000001801000000000000003bce5f7cdeb5dddded00aa75ea5a36410000000000000000)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 250, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3bce5f7cdeb5dddded00aa75ea5a36410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00fc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e400000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d61973b1426dcfd019ea0b876a427818)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(207859b4240ff63d4308920d2bf3248da7d61973b1426dcfd019ea0b876a42781801d61973b1426dcfd019ea0b876a42781801d61973b1426dcfd019ea0b876a4278180000000000000000180000000000000000d61973b1426dcfd019ea0b876a4278180000000000000000180100000000000000d61973b1426dcfd019ea0b876a4278180000000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 251, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d61973b1426dcfd019ea0b876a4278180600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00fd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002edfe021fc0ecb479372c3ca7c2e4501)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203dfa14cf163a9bc99ba9cde87fadd5ae2edfe021fc0ecb479372c3ca7c2e4501012edfe021fc0ecb479372c3ca7c2e4501012edfe021fc0ecb479372c3ca7c2e450100000000000000001800000000000000002edfe021fc0ecb479372c3ca7c2e450100000000000000001801000000000000002edfe021fc0ecb479372c3ca7c2e45010000000000000000)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 252, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2edfe021fc0ecb479372c3ca7c2e45010600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00fe000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000003d315c97226a518ec509ba4637eaec0)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b60599fe3379eb3d7fa333efaf33011003d315c97226a518ec509ba4637eaec00103d315c97226a518ec509ba4637eaec00103d315c97226a518ec509ba4637eaec0000000000000000018000000000000000003d315c97226a518ec509ba4637eaec0000000000000000018010000000000000003d315c97226a518ec509ba4637eaec00000000000000000)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 253, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "03d315c97226a518ec509ba4637eaec00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(00ff000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e700000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000b0dd377e982e561506786b7385fa32ec)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2027ff4de703ca8c8f2e7eb81231557603b0dd377e982e561506786b7385fa32ec01b0dd377e982e561506786b7385fa32ec01b0dd377e982e561506786b7385fa32ec0000000000000000180000000000000000b0dd377e982e561506786b7385fa32ec0000000000000000180100000000000000b0dd377e982e561506786b7385fa32ec0000000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 254, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b0dd377e982e561506786b7385fa32ec0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0000010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000506a595344bb2a9e2bd13abcf31aac37)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205fcc27350f9cee95fdb64305dab8c831506a595344bb2a9e2bd13abcf31aac3701506a595344bb2a9e2bd13abcf31aac3701506a595344bb2a9e2bd13abcf31aac370000000000000000180000000000000000506a595344bb2a9e2bd13abcf31aac370000000000000000180100000000000000506a595344bb2a9e2bd13abcf31aac370000000000000000)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 255, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "506a595344bb2a9e2bd13abcf31aac370600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0001010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002637d6609fdd6b29abc4776356f47736)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2002add1308a566b49937d29c9cbb8c8482637d6609fdd6b29abc4776356f47736012637d6609fdd6b29abc4776356f47736012637d6609fdd6b29abc4776356f4773600000000000000001800000000000000002637d6609fdd6b29abc4776356f4773600000000000000001801000000000000002637d6609fdd6b29abc4776356f477360000000000000000)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(e900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 256, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2637d6609fdd6b29abc4776356f477360600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0002010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ea00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ea00000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b0c00d94418838f91c0708fb38ee84c6cc0fdf2f8e9d841ae6a0fc181b311d5e01cc0fdf2f8e9d841ae6a0fc181b311d5e01cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000180000000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000180100000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 257, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "cc0fdf2f8e9d841ae6a0fc181b311d5e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0003010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(eb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1eb00000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000ef667f203781c5a864e493c030617396)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ffb1dba1486d294e464b03581dfbc2a4ef667f203781c5a864e493c03061739601ef667f203781c5a864e493c03061739601ef667f203781c5a864e493c0306173960000000000000000180000000000000000ef667f203781c5a864e493c0306173960000000000000000180100000000000000ef667f203781c5a864e493c0306173960000000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 258, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ef667f203781c5a864e493c0306173960600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0004010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ec00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ec00000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000054fa74659111dc9af7583bb04d83c287)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2066bbc1f5904a316ad32c011c315048c754fa74659111dc9af7583bb04d83c2870154fa74659111dc9af7583bb04d83c2870154fa74659111dc9af7583bb04d83c287000000000000000018000000000000000054fa74659111dc9af7583bb04d83c287000000000000000018010000000000000054fa74659111dc9af7583bb04d83c2870000000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 259, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "54fa74659111dc9af7583bb04d83c2870600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0005010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001a5520483ac83209c5cdf70604802198)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204aeea0e9d10e68c026577ae7dc199b4f1a5520483ac83209c5cdf70604802198011a5520483ac83209c5cdf70604802198011a5520483ac83209c5cdf7060480219800000000000000001800000000000000001a5520483ac83209c5cdf7060480219800000000000000001801000000000000001a5520483ac83209c5cdf706048021980000000000000000)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ed00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ed00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 260, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1a5520483ac83209c5cdf706048021980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0006010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ee00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ee00000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000007286e825296a5c779da7532825db017a)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202bc836610f02bdc264d4d4fafeefe8c17286e825296a5c779da7532825db017a017286e825296a5c779da7532825db017a017286e825296a5c779da7532825db017a00000000000000001800000000000000007286e825296a5c779da7532825db017a00000000000000001801000000000000007286e825296a5c779da7532825db017a0000000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 261, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7286e825296a5c779da7532825db017a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0007010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005224304f1f9cae6b9640f714bcfede5b)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208faeec6b93d9e386e91c7cb21faaf43f5224304f1f9cae6b9640f714bcfede5b015224304f1f9cae6b9640f714bcfede5b015224304f1f9cae6b9640f714bcfede5b00000000000000001800000000000000005224304f1f9cae6b9640f714bcfede5b00000000000000001801000000000000005224304f1f9cae6b9640f714bcfede5b0000000000000000)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ef00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ef00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 262, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5224304f1f9cae6b9640f714bcfede5b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0008010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000003a3d00266e8cc98a0b0d96d404c67302)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205a58280e5aaf38fa74afe84e16ea926e3a3d00266e8cc98a0b0d96d404c67302013a3d00266e8cc98a0b0d96d404c67302013a3d00266e8cc98a0b0d96d404c6730200000000000000001800000000000000003a3d00266e8cc98a0b0d96d404c6730200000000000000001801000000000000003a3d00266e8cc98a0b0d96d404c673020000000000000000)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 263, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3a3d00266e8cc98a0b0d96d404c673020600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0009010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f100000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d4ce913b40c06b4a6da3ad4be1ba9f52)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2010cbba373ab357d7b016b60d18f6e4e3d4ce913b40c06b4a6da3ad4be1ba9f5201d4ce913b40c06b4a6da3ad4be1ba9f5201d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000180000000000000000d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000180100000000000000d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 264, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4ce913b40c06b4a6da3ad4be1ba9f520600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000a010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f200000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000d9fc6954806cf0bfd786e0906e0463c6)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20694887d0056375bc961130f381936280d9fc6954806cf0bfd786e0906e0463c601d9fc6954806cf0bfd786e0906e0463c601d9fc6954806cf0bfd786e0906e0463c60000000000000000180000000000000000d9fc6954806cf0bfd786e0906e0463c60000000000000000180100000000000000d9fc6954806cf0bfd786e0906e0463c60000000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 265, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9fc6954806cf0bfd786e0906e0463c60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000b010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f300000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a4b2abccbe2060373336e6f97679b85c)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(206dd5a73576ad77500478a2aab5f656b6a4b2abccbe2060373336e6f97679b85c01a4b2abccbe2060373336e6f97679b85c01a4b2abccbe2060373336e6f97679b85c0000000000000000180000000000000000a4b2abccbe2060373336e6f97679b85c0000000000000000180100000000000000a4b2abccbe2060373336e6f97679b85c0000000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 266, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a4b2abccbe2060373336e6f97679b85c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000c010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f400000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000f493803322a1a4d5557e023e2aceb133)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2018d865f0ef6f264184b718b957c9067ef493803322a1a4d5557e023e2aceb13301f493803322a1a4d5557e023e2aceb13301f493803322a1a4d5557e023e2aceb1330000000000000000180000000000000000f493803322a1a4d5557e023e2aceb1330000000000000000180100000000000000f493803322a1a4d5557e023e2aceb1330000000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 267, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f493803322a1a4d5557e023e2aceb1330600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000d010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000002904008f54acf50441b365bccc68f28b)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20ff31b78cdadb3d57c0dc2b4ddbe844b92904008f54acf50441b365bccc68f28b012904008f54acf50441b365bccc68f28b012904008f54acf50441b365bccc68f28b00000000000000001800000000000000002904008f54acf50441b365bccc68f28b00000000000000001801000000000000002904008f54acf50441b365bccc68f28b0000000000000000)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 268, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2904008f54acf50441b365bccc68f28b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000e010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000036138a02faafe605e7a1bb57f54c9ebc)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2060821d1a4d301e1586acc6a104fcdaba36138a02faafe605e7a1bb57f54c9ebc0136138a02faafe605e7a1bb57f54c9ebc0136138a02faafe605e7a1bb57f54c9ebc000000000000000018000000000000000036138a02faafe605e7a1bb57f54c9ebc000000000000000018010000000000000036138a02faafe605e7a1bb57f54c9ebc0000000000000000)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 269, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "36138a02faafe605e7a1bb57f54c9ebc0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(000f010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f700000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000556e8bdc1c513fd3d497b19685926728)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(205b38bc80445c11ea4b8e37538aabfbf9556e8bdc1c513fd3d497b1968592672801556e8bdc1c513fd3d497b1968592672801556e8bdc1c513fd3d497b196859267280000000000000000180000000000000000556e8bdc1c513fd3d497b196859267280000000000000000180100000000000000556e8bdc1c513fd3d497b196859267280000000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 270, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "556e8bdc1c513fd3d497b196859267280600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0010010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000d9f66fec74789e6101c1e87e14dc81a)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(202b566e50f8c3c6bb05fb120bee4103f60d9f66fec74789e6101c1e87e14dc81a010d9f66fec74789e6101c1e87e14dc81a010d9f66fec74789e6101c1e87e14dc81a00000000000000001800000000000000000d9f66fec74789e6101c1e87e14dc81a00000000000000001801000000000000000d9f66fec74789e6101c1e87e14dc81a0000000000000000)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 271, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0d9f66fec74789e6101c1e87e14dc81a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0011010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(f900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f900000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a183fc80ed35aa30be91e3ea89490d67)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(203125dbb7368b1c8245a984d1428f7601a183fc80ed35aa30be91e3ea89490d6701a183fc80ed35aa30be91e3ea89490d6701a183fc80ed35aa30be91e3ea89490d670000000000000000180000000000000000a183fc80ed35aa30be91e3ea89490d670000000000000000180100000000000000a183fc80ed35aa30be91e3ea89490d670000000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 272, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a183fc80ed35aa30be91e3ea89490d670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0012010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(020000000000000024a68bdda274c32fe7ed6bf128171107)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20869ba0cd244d85f21a5ac5a2be71e5f824a68bdda274c32fe7ed6bf1281711070124a68bdda274c32fe7ed6bf1281711070124a68bdda274c32fe7ed6bf128171107000000000000000018000000000000000024a68bdda274c32fe7ed6bf128171107000000000000000018010000000000000024a68bdda274c32fe7ed6bf1281711070000000000000000)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(fa00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fa00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 273, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "24a68bdda274c32fe7ed6bf1281711070600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0013010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000001d728da8ad6e255d02cc6730d88bc0f5)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20b8b0ec99d764403ed28b7ea3476a95b11d728da8ad6e255d02cc6730d88bc0f5011d728da8ad6e255d02cc6730d88bc0f5011d728da8ad6e255d02cc6730d88bc0f500000000000000001800000000000000001d728da8ad6e255d02cc6730d88bc0f500000000000000001801000000000000001d728da8ad6e255d02cc6730d88bc0f50000000000000000)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(fb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fb00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 274, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1d728da8ad6e255d02cc6730d88bc0f50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0014010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(fc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fc00000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000bf0e08b012fd151bc679b1c7b43f02c1)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2022b09aae095d5cde4308dbb20a21924cbf0e08b012fd151bc679b1c7b43f02c101bf0e08b012fd151bc679b1c7b43f02c101bf0e08b012fd151bc679b1c7b43f02c10000000000000000180000000000000000bf0e08b012fd151bc679b1c7b43f02c10000000000000000180100000000000000bf0e08b012fd151bc679b1c7b43f02c10000000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 275, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bf0e08b012fd151bc679b1c7b43f02c10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0015010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(fd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fd00000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000006064dab8c11634d0bd6d9deda445eb0d)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(2037616274f065eef5e6c5aec60aac8b956064dab8c11634d0bd6d9deda445eb0d016064dab8c11634d0bd6d9deda445eb0d016064dab8c11634d0bd6d9deda445eb0d00000000000000001800000000000000006064dab8c11634d0bd6d9deda445eb0d00000000000000001801000000000000006064dab8c11634d0bd6d9deda445eb0d0000000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 276, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6064dab8c11634d0bd6d9deda445eb0d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0016010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000000aeb71c35e3ad9447a9cb02fdccbc560)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d23cc26a797ef01ad5ea1789ea0d4e250aeb71c35e3ad9447a9cb02fdccbc560010aeb71c35e3ad9447a9cb02fdccbc560010aeb71c35e3ad9447a9cb02fdccbc56000000000000000001800000000000000000aeb71c35e3ad9447a9cb02fdccbc56000000000000000001801000000000000000aeb71c35e3ad9447a9cb02fdccbc5600000000000000000)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(fe00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fe00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 277, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0aeb71c35e3ad9447a9cb02fdccbc5600600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0017010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(ff00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ff00000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000e30eed68232a168c46b84a690aa7c580)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20aca59f259ce65a36c1695a6ae9bae2aae30eed68232a168c46b84a690aa7c58001e30eed68232a168c46b84a690aa7c58001e30eed68232a168c46b84a690aa7c5800000000000000000180000000000000000e30eed68232a168c46b84a690aa7c5800000000000000000180100000000000000e30eed68232a168c46b84a690aa7c5800000000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 278, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e30eed68232a168c46b84a690aa7c5800600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000004d1ae1553cac951a9b10df7bd3361fc6)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0600000000000000)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 0113c36400b15300bab522510fc4cee1444c0effb6049ea20bed8ad024c77b2079 }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(204a3633dd320ecc4a8ef65e458cabf2944d1ae1553cac951a9b10df7bd3361fc6014d1ae1553cac951a9b10df7bd3361fc6014d1ae1553cac951a9b10df7bd3361fc600000000000000001800000000000000004d1ae1553cac951a9b10df7bd3361fc600000000000000001801000000000000004d1ae1553cac951a9b10df7bd3361fc60000000000000000)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0001000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10001000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 279, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4d1ae1553cac951a9b10df7bd3361fc60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10101000000000000))] }), events: [], gas_used: 160, status: Keep(ABORTED { code: 264, location: 00000000000000000000000000000001::VASP }) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0019000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180100000000000000a2a4b23f5916b324c365bb91786801380000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 24, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2a4b23f5916b324c365bb91786801380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10200000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bd7274c6b2a874f316af7b0b1a1add62)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060fd3e46986c9411f7fc6ccce1ac4ad4bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add6201bd7274c6b2a874f316af7b0b1a1add620000000000000000180000000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000180100000000000000bd7274c6b2a874f316af7b0b1a1add620000000000000000)), (AccessPath { address: bd7274c6b2a874f316af7b0b1a1add62, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 25, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bd7274c6b2a874f316af7b0b1a1add620600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000018da06a3cf5e1d6075fa744eebd32fb7)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a7660127b0d4d5813c9c47ca99693be18da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb70118da06a3cf5e1d6075fa744eebd32fb7000000000000000018000000000000000018da06a3cf5e1d6075fa744eebd32fb7000000000000000018010000000000000018da06a3cf5e1d6075fa744eebd32fb70000000000000000)), (AccessPath { address: 18da06a3cf5e1d6075fa744eebd32fb7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 26, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "18da06a3cf5e1d6075fa744eebd32fb70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10400000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000094713995e6e80e20e8478b613c5d0a1c)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ed7f9bbda84ca34619971897d744b7db94713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c0194713995e6e80e20e8478b613c5d0a1c000000000000000018000000000000000094713995e6e80e20e8478b613c5d0a1c000000000000000018010000000000000094713995e6e80e20e8478b613c5d0a1c0000000000000000)), (AccessPath { address: 94713995e6e80e20e8478b613c5d0a1c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 27, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "94713995e6e80e20e8478b613c5d0a1c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003eaa3cd380f64d53a9774c807ed24edd)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2099564e392e1b66cfc4cc132dee4260af3eaa3cd380f64d53a9774c807ed24edd013eaa3cd380f64d53a9774c807ed24edd013eaa3cd380f64d53a9774c807ed24edd00000000000000001800000000000000003eaa3cd380f64d53a9774c807ed24edd00000000000000001801000000000000003eaa3cd380f64d53a9774c807ed24edd0000000000000000)), (AccessPath { address: 3eaa3cd380f64d53a9774c807ed24edd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 28, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3eaa3cd380f64d53a9774c807ed24edd0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10600000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000adbd34af209df0d2405a410ac1cf5899)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a968f3bbde7dfdeee91e900b40d5dc9aadbd34af209df0d2405a410ac1cf589901adbd34af209df0d2405a410ac1cf589901adbd34af209df0d2405a410ac1cf58990000000000000000180000000000000000adbd34af209df0d2405a410ac1cf58990000000000000000180100000000000000adbd34af209df0d2405a410ac1cf58990000000000000000)), (AccessPath { address: adbd34af209df0d2405a410ac1cf5899, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 29, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "adbd34af209df0d2405a410ac1cf58990600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(001f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10700000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008a19a2e1b098c8751c40062f1b9fdc0a)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20700d63590df528affe6468249273db0a8a19a2e1b098c8751c40062f1b9fdc0a018a19a2e1b098c8751c40062f1b9fdc0a018a19a2e1b098c8751c40062f1b9fdc0a00000000000000001800000000000000008a19a2e1b098c8751c40062f1b9fdc0a00000000000000001801000000000000008a19a2e1b098c8751c40062f1b9fdc0a0000000000000000)), (AccessPath { address: 8a19a2e1b098c8751c40062f1b9fdc0a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 30, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8a19a2e1b098c8751c40062f1b9fdc0a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0020000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10800000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ed8203a4f08409faa853fe075dda380a)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f3487802e7529d97a2d15e64247e4cf0ed8203a4f08409faa853fe075dda380a01ed8203a4f08409faa853fe075dda380a01ed8203a4f08409faa853fe075dda380a0000000000000000180000000000000000ed8203a4f08409faa853fe075dda380a0000000000000000180100000000000000ed8203a4f08409faa853fe075dda380a0000000000000000)), (AccessPath { address: ed8203a4f08409faa853fe075dda380a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 31, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ed8203a4f08409faa853fe075dda380a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0021000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001b90d2c4f35d14315a3cd0a479cca525)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20420a2e51feec470742c0edfb09116b3e1b90d2c4f35d14315a3cd0a479cca525011b90d2c4f35d14315a3cd0a479cca525011b90d2c4f35d14315a3cd0a479cca52500000000000000001800000000000000001b90d2c4f35d14315a3cd0a479cca52500000000000000001801000000000000001b90d2c4f35d14315a3cd0a479cca5250000000000000000)), (AccessPath { address: 1b90d2c4f35d14315a3cd0a479cca525, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 32, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b90d2c4f35d14315a3cd0a479cca5250600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0022000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10a00000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ef0fcf810ddae697b22f7f55fb0e129d)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20425b2e8f85238a3a9891c3e5708efbccef0fcf810ddae697b22f7f55fb0e129d01ef0fcf810ddae697b22f7f55fb0e129d01ef0fcf810ddae697b22f7f55fb0e129d0000000000000000180000000000000000ef0fcf810ddae697b22f7f55fb0e129d0000000000000000180100000000000000ef0fcf810ddae697b22f7f55fb0e129d0000000000000000)), (AccessPath { address: ef0fcf810ddae697b22f7f55fb0e129d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 33, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ef0fcf810ddae697b22f7f55fb0e129d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0023000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000079b8a091728e922cf5e95193d6059bde)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205955b4e2d80a99d8e468385a502cdd1979b8a091728e922cf5e95193d6059bde0179b8a091728e922cf5e95193d6059bde0179b8a091728e922cf5e95193d6059bde000000000000000018000000000000000079b8a091728e922cf5e95193d6059bde000000000000000018010000000000000079b8a091728e922cf5e95193d6059bde0000000000000000)), (AccessPath { address: 79b8a091728e922cf5e95193d6059bde, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 34, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79b8a091728e922cf5e95193d6059bde0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0024000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000c20cd359a7c1d7969894aa18fc7e671)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bc72d0d28fa1602d67834afdfbab476e0c20cd359a7c1d7969894aa18fc7e671010c20cd359a7c1d7969894aa18fc7e671010c20cd359a7c1d7969894aa18fc7e67100000000000000001800000000000000000c20cd359a7c1d7969894aa18fc7e67100000000000000001801000000000000000c20cd359a7c1d7969894aa18fc7e6710000000000000000)), (AccessPath { address: 0c20cd359a7c1d7969894aa18fc7e671, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10c00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 35, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0c20cd359a7c1d7969894aa18fc7e6710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0025000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000029bb56db24ab8d1cce6c6adbd153a783)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20fa6451c6cf7b3fc64443a3479dbd1db129bb56db24ab8d1cce6c6adbd153a7830129bb56db24ab8d1cce6c6adbd153a7830129bb56db24ab8d1cce6c6adbd153a783000000000000000018000000000000000029bb56db24ab8d1cce6c6adbd153a783000000000000000018010000000000000029bb56db24ab8d1cce6c6adbd153a7830000000000000000)), (AccessPath { address: 29bb56db24ab8d1cce6c6adbd153a783, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 36, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "29bb56db24ab8d1cce6c6adbd153a7830600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0026000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000260fa2ad9ca38b504e1777068e898ae1)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203f993bafbc6af2c3e90974fb5d042306260fa2ad9ca38b504e1777068e898ae101260fa2ad9ca38b504e1777068e898ae101260fa2ad9ca38b504e1777068e898ae10000000000000000180000000000000000260fa2ad9ca38b504e1777068e898ae10000000000000000180100000000000000260fa2ad9ca38b504e1777068e898ae10000000000000000)), (AccessPath { address: 260fa2ad9ca38b504e1777068e898ae1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 37, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "260fa2ad9ca38b504e1777068e898ae10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0027000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10f00000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e88fb52e5cf15cc0930d4c1875826b9e)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20deb91349d35a7230d55a45015b354447e88fb52e5cf15cc0930d4c1875826b9e01e88fb52e5cf15cc0930d4c1875826b9e01e88fb52e5cf15cc0930d4c1875826b9e0000000000000000180000000000000000e88fb52e5cf15cc0930d4c1875826b9e0000000000000000180100000000000000e88fb52e5cf15cc0930d4c1875826b9e0000000000000000)), (AccessPath { address: e88fb52e5cf15cc0930d4c1875826b9e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 38, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e88fb52e5cf15cc0930d4c1875826b9e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0028000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11000000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006aa7a4136fedb0739cf6f1477ac63860)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b37c74ada403d58f5da406e7a81d97946aa7a4136fedb0739cf6f1477ac63860016aa7a4136fedb0739cf6f1477ac63860016aa7a4136fedb0739cf6f1477ac6386000000000000000001800000000000000006aa7a4136fedb0739cf6f1477ac6386000000000000000001801000000000000006aa7a4136fedb0739cf6f1477ac638600000000000000000)), (AccessPath { address: 6aa7a4136fedb0739cf6f1477ac63860, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 39, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6aa7a4136fedb0739cf6f1477ac638600600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0029000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11100000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000061873a394a612d7855d4759d7c414c20)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201a3fe2f45f16b96b5ccc4e57b144f2c361873a394a612d7855d4759d7c414c200161873a394a612d7855d4759d7c414c200161873a394a612d7855d4759d7c414c20000000000000000018000000000000000061873a394a612d7855d4759d7c414c20000000000000000018010000000000000061873a394a612d7855d4759d7c414c200000000000000000)), (AccessPath { address: 61873a394a612d7855d4759d7c414c20, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 40, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "61873a394a612d7855d4759d7c414c200600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11200000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005d7559ad559f58c2e432441243aa23da)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f16dea2553779dec8cd23a56692988415d7559ad559f58c2e432441243aa23da015d7559ad559f58c2e432441243aa23da015d7559ad559f58c2e432441243aa23da00000000000000001800000000000000005d7559ad559f58c2e432441243aa23da00000000000000001801000000000000005d7559ad559f58c2e432441243aa23da0000000000000000)), (AccessPath { address: 5d7559ad559f58c2e432441243aa23da, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 41, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5d7559ad559f58c2e432441243aa23da0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11300000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d9fbbaadbad9a031d0fe0f592cb29527)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d2c6307eb821535463bb174ebd937438d9fbbaadbad9a031d0fe0f592cb2952701d9fbbaadbad9a031d0fe0f592cb2952701d9fbbaadbad9a031d0fe0f592cb295270000000000000000180000000000000000d9fbbaadbad9a031d0fe0f592cb295270000000000000000180100000000000000d9fbbaadbad9a031d0fe0f592cb295270000000000000000)), (AccessPath { address: d9fbbaadbad9a031d0fe0f592cb29527, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 42, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9fbbaadbad9a031d0fe0f592cb295270600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000be47417b8a0d45cf5612162bfe99241)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20baac25d982278cf7c59a189ccf07822d0be47417b8a0d45cf5612162bfe99241010be47417b8a0d45cf5612162bfe99241010be47417b8a0d45cf5612162bfe9924100000000000000001800000000000000000be47417b8a0d45cf5612162bfe9924100000000000000001801000000000000000be47417b8a0d45cf5612162bfe992410000000000000000)), (AccessPath { address: 0be47417b8a0d45cf5612162bfe99241, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11400000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 43, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0be47417b8a0d45cf5612162bfe992410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11500000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006b7e8c5bdf9c0176fb0c5ff818993080)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20206c65bf1702a005f5fbf5e5f72cc5736b7e8c5bdf9c0176fb0c5ff818993080016b7e8c5bdf9c0176fb0c5ff818993080016b7e8c5bdf9c0176fb0c5ff81899308000000000000000001800000000000000006b7e8c5bdf9c0176fb0c5ff81899308000000000000000001801000000000000006b7e8c5bdf9c0176fb0c5ff8189930800000000000000000)), (AccessPath { address: 6b7e8c5bdf9c0176fb0c5ff818993080, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 44, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6b7e8c5bdf9c0176fb0c5ff8189930800600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11600000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000069686b4b87d6428785bb5673256caeca)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bc038750080396e9da363f7387291ae669686b4b87d6428785bb5673256caeca0169686b4b87d6428785bb5673256caeca0169686b4b87d6428785bb5673256caeca000000000000000018000000000000000069686b4b87d6428785bb5673256caeca000000000000000018010000000000000069686b4b87d6428785bb5673256caeca0000000000000000)), (AccessPath { address: 69686b4b87d6428785bb5673256caeca, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 45, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "69686b4b87d6428785bb5673256caeca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(002f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000aa90b6e45e43b08c8e9e54155bba25a)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206ce0e682f4683e6f790c2cf17a9cad3e0aa90b6e45e43b08c8e9e54155bba25a010aa90b6e45e43b08c8e9e54155bba25a010aa90b6e45e43b08c8e9e54155bba25a00000000000000001800000000000000000aa90b6e45e43b08c8e9e54155bba25a00000000000000001801000000000000000aa90b6e45e43b08c8e9e54155bba25a0000000000000000)), (AccessPath { address: 0aa90b6e45e43b08c8e9e54155bba25a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 46, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0aa90b6e45e43b08c8e9e54155bba25a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0030000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11800000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bda1fabdfdb41ee558aa750114ef9f8a)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2022538bc10d28186b1d67e4a9e70a22f4bda1fabdfdb41ee558aa750114ef9f8a01bda1fabdfdb41ee558aa750114ef9f8a01bda1fabdfdb41ee558aa750114ef9f8a0000000000000000180000000000000000bda1fabdfdb41ee558aa750114ef9f8a0000000000000000180100000000000000bda1fabdfdb41ee558aa750114ef9f8a0000000000000000)), (AccessPath { address: bda1fabdfdb41ee558aa750114ef9f8a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 47, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bda1fabdfdb41ee558aa750114ef9f8a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0031000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000d7292bbbe2668b668d8c41db71289f6)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202586c1c33917645df426dae013e51ec90d7292bbbe2668b668d8c41db71289f6010d7292bbbe2668b668d8c41db71289f6010d7292bbbe2668b668d8c41db71289f600000000000000001800000000000000000d7292bbbe2668b668d8c41db71289f600000000000000001801000000000000000d7292bbbe2668b668d8c41db71289f60000000000000000)), (AccessPath { address: 0d7292bbbe2668b668d8c41db71289f6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 48, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0d7292bbbe2668b668d8c41db71289f60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0032000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11a00000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f7729d87a5feee44c2de1719f15897cb)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2057911e723641a53969561209b10d55f9f7729d87a5feee44c2de1719f15897cb01f7729d87a5feee44c2de1719f15897cb01f7729d87a5feee44c2de1719f15897cb0000000000000000180000000000000000f7729d87a5feee44c2de1719f15897cb0000000000000000180100000000000000f7729d87a5feee44c2de1719f15897cb0000000000000000)), (AccessPath { address: f7729d87a5feee44c2de1719f15897cb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 49, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f7729d87a5feee44c2de1719f15897cb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0033000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11b00000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008c748ecf43f8a7b81657b2ec45064031)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f6e3e34896f9e9a69f8c47f5a76f995e8c748ecf43f8a7b81657b2ec45064031018c748ecf43f8a7b81657b2ec45064031018c748ecf43f8a7b81657b2ec4506403100000000000000001800000000000000008c748ecf43f8a7b81657b2ec4506403100000000000000001801000000000000008c748ecf43f8a7b81657b2ec450640310000000000000000)), (AccessPath { address: 8c748ecf43f8a7b81657b2ec45064031, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 50, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8c748ecf43f8a7b81657b2ec450640310600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0034000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11c00000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a9bcd9b71da6dfabe0dcb58f3a549f06)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205fecb137832d1c9472e42bd0ecf15b72a9bcd9b71da6dfabe0dcb58f3a549f0601a9bcd9b71da6dfabe0dcb58f3a549f0601a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000180000000000000000a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000180100000000000000a9bcd9b71da6dfabe0dcb58f3a549f060000000000000000)), (AccessPath { address: a9bcd9b71da6dfabe0dcb58f3a549f06, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 51, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a9bcd9b71da6dfabe0dcb58f3a549f060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0035000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002c84eeb61d1e68f453ca71985d10f6f2)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2008ddebf23921e2a611f7e908d12fd0922c84eeb61d1e68f453ca71985d10f6f2012c84eeb61d1e68f453ca71985d10f6f2012c84eeb61d1e68f453ca71985d10f6f200000000000000001800000000000000002c84eeb61d1e68f453ca71985d10f6f200000000000000001801000000000000002c84eeb61d1e68f453ca71985d10f6f20000000000000000)), (AccessPath { address: 2c84eeb61d1e68f453ca71985d10f6f2, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 52, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2c84eeb61d1e68f453ca71985d10f6f20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0036000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11e00000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000fb825bbe1d45b1d59c545fadcf3ea807)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2080e15fe49bf4ff07f4dc329c9da66fa8fb825bbe1d45b1d59c545fadcf3ea80701fb825bbe1d45b1d59c545fadcf3ea80701fb825bbe1d45b1d59c545fadcf3ea8070000000000000000180000000000000000fb825bbe1d45b1d59c545fadcf3ea8070000000000000000180100000000000000fb825bbe1d45b1d59c545fadcf3ea8070000000000000000)), (AccessPath { address: fb825bbe1d45b1d59c545fadcf3ea807, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 53, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fb825bbe1d45b1d59c545fadcf3ea8070600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0037000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000007b551af18fb0a9a29d76510e385076a)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201afa290c4dc192f121e1d63ea39570a407b551af18fb0a9a29d76510e385076a0107b551af18fb0a9a29d76510e385076a0107b551af18fb0a9a29d76510e385076a000000000000000018000000000000000007b551af18fb0a9a29d76510e385076a000000000000000018010000000000000007b551af18fb0a9a29d76510e385076a0000000000000000)), (AccessPath { address: 07b551af18fb0a9a29d76510e385076a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(1f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe11f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 54, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "07b551af18fb0a9a29d76510e385076a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0038000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000022427c7f32111b7f6db7ec8685d4d939)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c8b3338dd3176802eacc9e3e03e1eb8e22427c7f32111b7f6db7ec8685d4d9390122427c7f32111b7f6db7ec8685d4d9390122427c7f32111b7f6db7ec8685d4d939000000000000000018000000000000000022427c7f32111b7f6db7ec8685d4d939000000000000000018010000000000000022427c7f32111b7f6db7ec8685d4d9390000000000000000)), (AccessPath { address: 22427c7f32111b7f6db7ec8685d4d939, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 55, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "22427c7f32111b7f6db7ec8685d4d9390600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0039000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12100000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000efea1a9a890a41b863c82372962aee1f)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20108a16ec3c36b81144b56bcd95e7d918efea1a9a890a41b863c82372962aee1f01efea1a9a890a41b863c82372962aee1f01efea1a9a890a41b863c82372962aee1f0000000000000000180000000000000000efea1a9a890a41b863c82372962aee1f0000000000000000180100000000000000efea1a9a890a41b863c82372962aee1f0000000000000000)), (AccessPath { address: efea1a9a890a41b863c82372962aee1f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 56, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "efea1a9a890a41b863c82372962aee1f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000035cc01d14f3f98920c9e175d34f0fe71)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204a21d175ea2e97a695b663bf53c841a635cc01d14f3f98920c9e175d34f0fe710135cc01d14f3f98920c9e175d34f0fe710135cc01d14f3f98920c9e175d34f0fe71000000000000000018000000000000000035cc01d14f3f98920c9e175d34f0fe71000000000000000018010000000000000035cc01d14f3f98920c9e175d34f0fe710000000000000000)), (AccessPath { address: 35cc01d14f3f98920c9e175d34f0fe71, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 57, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "35cc01d14f3f98920c9e175d34f0fe710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12300000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000751fde96a4324046f314a0e6e3e5003f)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209a6f5e638ae34edd8d58ffd5a0168b25751fde96a4324046f314a0e6e3e5003f01751fde96a4324046f314a0e6e3e5003f01751fde96a4324046f314a0e6e3e5003f0000000000000000180000000000000000751fde96a4324046f314a0e6e3e5003f0000000000000000180100000000000000751fde96a4324046f314a0e6e3e5003f0000000000000000)), (AccessPath { address: 751fde96a4324046f314a0e6e3e5003f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 58, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "751fde96a4324046f314a0e6e3e5003f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12400000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e8290c44403f4dfdd53a952ced454909)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d32f91c41851e95256e7fc8a2af02026e8290c44403f4dfdd53a952ced45490901e8290c44403f4dfdd53a952ced45490901e8290c44403f4dfdd53a952ced4549090000000000000000180000000000000000e8290c44403f4dfdd53a952ced4549090000000000000000180100000000000000e8290c44403f4dfdd53a952ced4549090000000000000000)), (AccessPath { address: e8290c44403f4dfdd53a952ced454909, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 59, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e8290c44403f4dfdd53a952ced4549090600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12500000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d85197f810ece92b30c74c725df246ed)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200d7ccfd3e1e9eb7cbc4f9bc5c1efb251d85197f810ece92b30c74c725df246ed01d85197f810ece92b30c74c725df246ed01d85197f810ece92b30c74c725df246ed0000000000000000180000000000000000d85197f810ece92b30c74c725df246ed0000000000000000180100000000000000d85197f810ece92b30c74c725df246ed0000000000000000)), (AccessPath { address: d85197f810ece92b30c74c725df246ed, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 60, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d85197f810ece92b30c74c725df246ed0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12600000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000942ffa09d513cf6cb237d0d56f93c8d9)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2078c17b32f5629cbd8220459219ac5516942ffa09d513cf6cb237d0d56f93c8d901942ffa09d513cf6cb237d0d56f93c8d901942ffa09d513cf6cb237d0d56f93c8d90000000000000000180000000000000000942ffa09d513cf6cb237d0d56f93c8d90000000000000000180100000000000000942ffa09d513cf6cb237d0d56f93c8d90000000000000000)), (AccessPath { address: 942ffa09d513cf6cb237d0d56f93c8d9, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 61, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "942ffa09d513cf6cb237d0d56f93c8d90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(003f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12700000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008fbaa3076d9b39b8e9f5279516fbb371)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cc6cd5aec6bf56d89b64ab25699880cf8fbaa3076d9b39b8e9f5279516fbb371018fbaa3076d9b39b8e9f5279516fbb371018fbaa3076d9b39b8e9f5279516fbb37100000000000000001800000000000000008fbaa3076d9b39b8e9f5279516fbb37100000000000000001801000000000000008fbaa3076d9b39b8e9f5279516fbb3710000000000000000)), (AccessPath { address: 8fbaa3076d9b39b8e9f5279516fbb371, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 62, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8fbaa3076d9b39b8e9f5279516fbb3710600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0040000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12800000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c6daac0308c0998af86967dc877feba1)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2046fdaea743be387a7932f5af65a940cfc6daac0308c0998af86967dc877feba101c6daac0308c0998af86967dc877feba101c6daac0308c0998af86967dc877feba10000000000000000180000000000000000c6daac0308c0998af86967dc877feba10000000000000000180100000000000000c6daac0308c0998af86967dc877feba10000000000000000)), (AccessPath { address: c6daac0308c0998af86967dc877feba1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 63, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c6daac0308c0998af86967dc877feba10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0041000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12900000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b462db060d37fb076603bc0ecd18c9b4)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f2968b6cbdca36419b62fca6d88f6fbeb462db060d37fb076603bc0ecd18c9b401b462db060d37fb076603bc0ecd18c9b401b462db060d37fb076603bc0ecd18c9b40000000000000000180000000000000000b462db060d37fb076603bc0ecd18c9b40000000000000000180100000000000000b462db060d37fb076603bc0ecd18c9b40000000000000000)), (AccessPath { address: b462db060d37fb076603bc0ecd18c9b4, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 64, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b462db060d37fb076603bc0ecd18c9b40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0042000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001e8d662a08070a2481416e992fd010bf)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208b075c3c7b2a72118e6fb5db606bcf181e8d662a08070a2481416e992fd010bf011e8d662a08070a2481416e992fd010bf011e8d662a08070a2481416e992fd010bf00000000000000001800000000000000001e8d662a08070a2481416e992fd010bf00000000000000001801000000000000001e8d662a08070a2481416e992fd010bf0000000000000000)), (AccessPath { address: 1e8d662a08070a2481416e992fd010bf, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 65, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1e8d662a08070a2481416e992fd010bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0043000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12b00000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007515842c1f2ebc82111ad756aee02de3)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202f75a821f2b34f8aca1fb99979ddce8a7515842c1f2ebc82111ad756aee02de3017515842c1f2ebc82111ad756aee02de3017515842c1f2ebc82111ad756aee02de300000000000000001800000000000000007515842c1f2ebc82111ad756aee02de300000000000000001801000000000000007515842c1f2ebc82111ad756aee02de30000000000000000)), (AccessPath { address: 7515842c1f2ebc82111ad756aee02de3, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 66, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7515842c1f2ebc82111ad756aee02de30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0044000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12c00000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d13fc3ec93da44c2f5f25e9e683c3925)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206bf26914bb51b074e88d39ec266a2423d13fc3ec93da44c2f5f25e9e683c392501d13fc3ec93da44c2f5f25e9e683c392501d13fc3ec93da44c2f5f25e9e683c39250000000000000000180000000000000000d13fc3ec93da44c2f5f25e9e683c39250000000000000000180100000000000000d13fc3ec93da44c2f5f25e9e683c39250000000000000000)), (AccessPath { address: d13fc3ec93da44c2f5f25e9e683c3925, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 67, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d13fc3ec93da44c2f5f25e9e683c39250600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0045000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12d00000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d4c322dd3ff3e381d216809a5bbc6673)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209d3e2917d1d9aebd688acbe059d9d352d4c322dd3ff3e381d216809a5bbc667301d4c322dd3ff3e381d216809a5bbc667301d4c322dd3ff3e381d216809a5bbc66730000000000000000180000000000000000d4c322dd3ff3e381d216809a5bbc66730000000000000000180100000000000000d4c322dd3ff3e381d216809a5bbc66730000000000000000)), (AccessPath { address: d4c322dd3ff3e381d216809a5bbc6673, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 68, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4c322dd3ff3e381d216809a5bbc66730600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0046000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12e00000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a6ec09a5ab949f718bb346d2ccc3c479)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2002f44d7d0052946fbee9fe7161117f2fa6ec09a5ab949f718bb346d2ccc3c47901a6ec09a5ab949f718bb346d2ccc3c47901a6ec09a5ab949f718bb346d2ccc3c4790000000000000000180000000000000000a6ec09a5ab949f718bb346d2ccc3c4790000000000000000180100000000000000a6ec09a5ab949f718bb346d2ccc3c4790000000000000000)), (AccessPath { address: a6ec09a5ab949f718bb346d2ccc3c479, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 69, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a6ec09a5ab949f718bb346d2ccc3c4790600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0047000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000320f0abd774da4f29d8e3dc38dc4d3b8)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207b84066600ac7ab30afbbd6c74b82101320f0abd774da4f29d8e3dc38dc4d3b801320f0abd774da4f29d8e3dc38dc4d3b801320f0abd774da4f29d8e3dc38dc4d3b80000000000000000180000000000000000320f0abd774da4f29d8e3dc38dc4d3b80000000000000000180100000000000000320f0abd774da4f29d8e3dc38dc4d3b80000000000000000)), (AccessPath { address: 320f0abd774da4f29d8e3dc38dc4d3b8, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(2f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe12f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 70, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "320f0abd774da4f29d8e3dc38dc4d3b80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0048000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13000000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000974c1264ab4930fc501eac9859a5456e)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204990a2a717bd5995b66b79903348e1a6974c1264ab4930fc501eac9859a5456e01974c1264ab4930fc501eac9859a5456e01974c1264ab4930fc501eac9859a5456e0000000000000000180000000000000000974c1264ab4930fc501eac9859a5456e0000000000000000180100000000000000974c1264ab4930fc501eac9859a5456e0000000000000000)), (AccessPath { address: 974c1264ab4930fc501eac9859a5456e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 71, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "974c1264ab4930fc501eac9859a5456e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0049000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000027af2c1e0297a29792b6e2adb90e66e5)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ce1227563c894533d99d9531acfaca6527af2c1e0297a29792b6e2adb90e66e50127af2c1e0297a29792b6e2adb90e66e50127af2c1e0297a29792b6e2adb90e66e5000000000000000018000000000000000027af2c1e0297a29792b6e2adb90e66e5000000000000000018010000000000000027af2c1e0297a29792b6e2adb90e66e50000000000000000)), (AccessPath { address: 27af2c1e0297a29792b6e2adb90e66e5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 72, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "27af2c1e0297a29792b6e2adb90e66e50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13200000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ddf9e60becd5a7974bb5bb589b211f14)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20792bae4346bd4f1f99ed8117e8272a43ddf9e60becd5a7974bb5bb589b211f1401ddf9e60becd5a7974bb5bb589b211f1401ddf9e60becd5a7974bb5bb589b211f140000000000000000180000000000000000ddf9e60becd5a7974bb5bb589b211f140000000000000000180100000000000000ddf9e60becd5a7974bb5bb589b211f140000000000000000)), (AccessPath { address: ddf9e60becd5a7974bb5bb589b211f14, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 73, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ddf9e60becd5a7974bb5bb589b211f140600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13300000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008fcac8f60395bd154a7dce263158975f)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d23cdb70c4ecd2e8d9475d1ef86df1eb8fcac8f60395bd154a7dce263158975f018fcac8f60395bd154a7dce263158975f018fcac8f60395bd154a7dce263158975f00000000000000001800000000000000008fcac8f60395bd154a7dce263158975f00000000000000001801000000000000008fcac8f60395bd154a7dce263158975f0000000000000000)), (AccessPath { address: 8fcac8f60395bd154a7dce263158975f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 74, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8fcac8f60395bd154a7dce263158975f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13400000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008031d6b041f23daa9501c11a35145e65)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e4a312d8f4f1363dbb02fd5d96860b3e8031d6b041f23daa9501c11a35145e65018031d6b041f23daa9501c11a35145e65018031d6b041f23daa9501c11a35145e6500000000000000001800000000000000008031d6b041f23daa9501c11a35145e6500000000000000001801000000000000008031d6b041f23daa9501c11a35145e650000000000000000)), (AccessPath { address: 8031d6b041f23daa9501c11a35145e65, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 75, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8031d6b041f23daa9501c11a35145e650600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13500000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f2f44d0632c87242b7efcfe58bc3303f)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c30cb7560427c19158903b1e72950a66f2f44d0632c87242b7efcfe58bc3303f01f2f44d0632c87242b7efcfe58bc3303f01f2f44d0632c87242b7efcfe58bc3303f0000000000000000180000000000000000f2f44d0632c87242b7efcfe58bc3303f0000000000000000180100000000000000f2f44d0632c87242b7efcfe58bc3303f0000000000000000)), (AccessPath { address: f2f44d0632c87242b7efcfe58bc3303f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 76, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f2f44d0632c87242b7efcfe58bc3303f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002dfc87af8b151803a1b2f8f9a7020b33)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207fafa9a4eb0c367d4e325389b6f3244f2dfc87af8b151803a1b2f8f9a7020b33012dfc87af8b151803a1b2f8f9a7020b33012dfc87af8b151803a1b2f8f9a7020b3300000000000000001800000000000000002dfc87af8b151803a1b2f8f9a7020b3300000000000000001801000000000000002dfc87af8b151803a1b2f8f9a7020b330000000000000000)), (AccessPath { address: 2dfc87af8b151803a1b2f8f9a7020b33, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 77, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2dfc87af8b151803a1b2f8f9a7020b330600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(004f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000013089ea0a50f1945acc5cb56bdc3e7de)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d127f7530b4f6ec33dfa17f6fdeb872e13089ea0a50f1945acc5cb56bdc3e7de0113089ea0a50f1945acc5cb56bdc3e7de0113089ea0a50f1945acc5cb56bdc3e7de000000000000000018000000000000000013089ea0a50f1945acc5cb56bdc3e7de000000000000000018010000000000000013089ea0a50f1945acc5cb56bdc3e7de0000000000000000)), (AccessPath { address: 13089ea0a50f1945acc5cb56bdc3e7de, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 78, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "13089ea0a50f1945acc5cb56bdc3e7de0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0050000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13800000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ecdd42a647ec1c13a8a3424ab281ca0e)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bad256bab31519774f2ccea1e722279cecdd42a647ec1c13a8a3424ab281ca0e01ecdd42a647ec1c13a8a3424ab281ca0e01ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000180000000000000000ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000180100000000000000ecdd42a647ec1c13a8a3424ab281ca0e0000000000000000)), (AccessPath { address: ecdd42a647ec1c13a8a3424ab281ca0e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 79, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ecdd42a647ec1c13a8a3424ab281ca0e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0051000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13900000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000cee4c5dd50f7a3018d771de13906e705)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20579797ba4d6db98d5a60eddce8ff70d2cee4c5dd50f7a3018d771de13906e70501cee4c5dd50f7a3018d771de13906e70501cee4c5dd50f7a3018d771de13906e7050000000000000000180000000000000000cee4c5dd50f7a3018d771de13906e7050000000000000000180100000000000000cee4c5dd50f7a3018d771de13906e7050000000000000000)), (AccessPath { address: cee4c5dd50f7a3018d771de13906e705, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 80, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "cee4c5dd50f7a3018d771de13906e7050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0052000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13a00000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000641035b1277b13993c513e82e1f043a4)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bb67f9aba825ea91273e81a5514f32e4641035b1277b13993c513e82e1f043a401641035b1277b13993c513e82e1f043a401641035b1277b13993c513e82e1f043a40000000000000000180000000000000000641035b1277b13993c513e82e1f043a40000000000000000180100000000000000641035b1277b13993c513e82e1f043a40000000000000000)), (AccessPath { address: 641035b1277b13993c513e82e1f043a4, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 81, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "641035b1277b13993c513e82e1f043a40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0053000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003276d99d93e6af57edd286e3cb86bfd1)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20479aaceffe1e6880a8b42c12dbce4b503276d99d93e6af57edd286e3cb86bfd1013276d99d93e6af57edd286e3cb86bfd1013276d99d93e6af57edd286e3cb86bfd100000000000000001800000000000000003276d99d93e6af57edd286e3cb86bfd100000000000000001801000000000000003276d99d93e6af57edd286e3cb86bfd10000000000000000)), (AccessPath { address: 3276d99d93e6af57edd286e3cb86bfd1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 82, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3276d99d93e6af57edd286e3cb86bfd10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0054000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000004bc635f47956cc91dbd61f890af4cc3c)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20eb89e3188800b3d2c488653e9bf32ed94bc635f47956cc91dbd61f890af4cc3c014bc635f47956cc91dbd61f890af4cc3c014bc635f47956cc91dbd61f890af4cc3c00000000000000001800000000000000004bc635f47956cc91dbd61f890af4cc3c00000000000000001801000000000000004bc635f47956cc91dbd61f890af4cc3c0000000000000000)), (AccessPath { address: 4bc635f47956cc91dbd61f890af4cc3c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13c00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 83, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4bc635f47956cc91dbd61f890af4cc3c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0055000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13d00000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a8650a3db064920a9cfc86775a275ce5)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d753df922e304ccf5946697675333d2aa8650a3db064920a9cfc86775a275ce501a8650a3db064920a9cfc86775a275ce501a8650a3db064920a9cfc86775a275ce50000000000000000180000000000000000a8650a3db064920a9cfc86775a275ce50000000000000000180100000000000000a8650a3db064920a9cfc86775a275ce50000000000000000)), (AccessPath { address: a8650a3db064920a9cfc86775a275ce5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 84, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a8650a3db064920a9cfc86775a275ce50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0056000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000015fb2ee6dd32b4a40be4934ce877ba76)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203a5768cdd3296943da5acbdadf3a4a0315fb2ee6dd32b4a40be4934ce877ba760115fb2ee6dd32b4a40be4934ce877ba760115fb2ee6dd32b4a40be4934ce877ba76000000000000000018000000000000000015fb2ee6dd32b4a40be4934ce877ba76000000000000000018010000000000000015fb2ee6dd32b4a40be4934ce877ba760000000000000000)), (AccessPath { address: 15fb2ee6dd32b4a40be4934ce877ba76, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 85, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "15fb2ee6dd32b4a40be4934ce877ba760600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0057000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(3f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe13f00000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c2fc3862f090d81c96cb837ede1daae8)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201500f931617fbc474169be676ccd2171c2fc3862f090d81c96cb837ede1daae801c2fc3862f090d81c96cb837ede1daae801c2fc3862f090d81c96cb837ede1daae80000000000000000180000000000000000c2fc3862f090d81c96cb837ede1daae80000000000000000180100000000000000c2fc3862f090d81c96cb837ede1daae80000000000000000)), (AccessPath { address: c2fc3862f090d81c96cb837ede1daae8, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 86, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c2fc3862f090d81c96cb837ede1daae80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0058000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000ad14dc38e2a320b18e3f58744c9866b)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a3bb6ac591f1aff5737d4ab760395d440ad14dc38e2a320b18e3f58744c9866b010ad14dc38e2a320b18e3f58744c9866b010ad14dc38e2a320b18e3f58744c9866b00000000000000001800000000000000000ad14dc38e2a320b18e3f58744c9866b00000000000000001801000000000000000ad14dc38e2a320b18e3f58744c9866b0000000000000000)), (AccessPath { address: 0ad14dc38e2a320b18e3f58744c9866b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 87, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0ad14dc38e2a320b18e3f58744c9866b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0059000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14100000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000dedc471cc667f57ade1401d88f9cb1e1)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20960255ae3ddf18e425e44359c36553f7dedc471cc667f57ade1401d88f9cb1e101dedc471cc667f57ade1401d88f9cb1e101dedc471cc667f57ade1401d88f9cb1e10000000000000000180000000000000000dedc471cc667f57ade1401d88f9cb1e10000000000000000180100000000000000dedc471cc667f57ade1401d88f9cb1e10000000000000000)), (AccessPath { address: dedc471cc667f57ade1401d88f9cb1e1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 88, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dedc471cc667f57ade1401d88f9cb1e10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14200000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a7848325e7f0283a3a28a43aa794948f)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2078f8069cbc15648b9c9f771db516f8a1a7848325e7f0283a3a28a43aa794948f01a7848325e7f0283a3a28a43aa794948f01a7848325e7f0283a3a28a43aa794948f0000000000000000180000000000000000a7848325e7f0283a3a28a43aa794948f0000000000000000180100000000000000a7848325e7f0283a3a28a43aa794948f0000000000000000)), (AccessPath { address: a7848325e7f0283a3a28a43aa794948f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 89, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a7848325e7f0283a3a28a43aa794948f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14300000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f534a1da1859b244123b38994a15a559)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202d9137739fded47a9ecbe60aa1fa4846f534a1da1859b244123b38994a15a55901f534a1da1859b244123b38994a15a55901f534a1da1859b244123b38994a15a5590000000000000000180000000000000000f534a1da1859b244123b38994a15a5590000000000000000180100000000000000f534a1da1859b244123b38994a15a5590000000000000000)), (AccessPath { address: f534a1da1859b244123b38994a15a559, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 90, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f534a1da1859b244123b38994a15a5590600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14400000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d2abfb464a84c2fdec8db04488b8fb4b)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e2a94b801782b4393313593f96707c10d2abfb464a84c2fdec8db04488b8fb4b01d2abfb464a84c2fdec8db04488b8fb4b01d2abfb464a84c2fdec8db04488b8fb4b0000000000000000180000000000000000d2abfb464a84c2fdec8db04488b8fb4b0000000000000000180100000000000000d2abfb464a84c2fdec8db04488b8fb4b0000000000000000)), (AccessPath { address: d2abfb464a84c2fdec8db04488b8fb4b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 91, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d2abfb464a84c2fdec8db04488b8fb4b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14500000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a0cce55154e14ffa642ff2e2db66be28)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20764a76c84995dc08a1395c9d66a6ed2ba0cce55154e14ffa642ff2e2db66be2801a0cce55154e14ffa642ff2e2db66be2801a0cce55154e14ffa642ff2e2db66be280000000000000000180000000000000000a0cce55154e14ffa642ff2e2db66be280000000000000000180100000000000000a0cce55154e14ffa642ff2e2db66be280000000000000000)), (AccessPath { address: a0cce55154e14ffa642ff2e2db66be28, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 92, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a0cce55154e14ffa642ff2e2db66be280600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14600000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c6a203d9fe8ca20107904467a804d6ad)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2028f9841a7236c9efceb267f545694a95c6a203d9fe8ca20107904467a804d6ad01c6a203d9fe8ca20107904467a804d6ad01c6a203d9fe8ca20107904467a804d6ad0000000000000000180000000000000000c6a203d9fe8ca20107904467a804d6ad0000000000000000180100000000000000c6a203d9fe8ca20107904467a804d6ad0000000000000000)), (AccessPath { address: c6a203d9fe8ca20107904467a804d6ad, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 93, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c6a203d9fe8ca20107904467a804d6ad0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(005f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14700000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000aba344b7b6824bebe5e283d7aedd3fe1)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ade5cfb08640d0e74b74af2348673a3caba344b7b6824bebe5e283d7aedd3fe101aba344b7b6824bebe5e283d7aedd3fe101aba344b7b6824bebe5e283d7aedd3fe10000000000000000180000000000000000aba344b7b6824bebe5e283d7aedd3fe10000000000000000180100000000000000aba344b7b6824bebe5e283d7aedd3fe10000000000000000)), (AccessPath { address: aba344b7b6824bebe5e283d7aedd3fe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 94, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "aba344b7b6824bebe5e283d7aedd3fe10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0060000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14800000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006301c6a8ce09a0e611369b4cce570d04)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bc6681dfba31269d18ca4d8df7a3cfe16301c6a8ce09a0e611369b4cce570d04016301c6a8ce09a0e611369b4cce570d04016301c6a8ce09a0e611369b4cce570d0400000000000000001800000000000000006301c6a8ce09a0e611369b4cce570d0400000000000000001801000000000000006301c6a8ce09a0e611369b4cce570d040000000000000000)), (AccessPath { address: 6301c6a8ce09a0e611369b4cce570d04, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 95, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6301c6a8ce09a0e611369b4cce570d040600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0061000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14900000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007e9863ae2a5041292f7f0ef7f07b49df)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20135069356a81e973d50c2ba0c1aaa3977e9863ae2a5041292f7f0ef7f07b49df017e9863ae2a5041292f7f0ef7f07b49df017e9863ae2a5041292f7f0ef7f07b49df00000000000000001800000000000000007e9863ae2a5041292f7f0ef7f07b49df00000000000000001801000000000000007e9863ae2a5041292f7f0ef7f07b49df0000000000000000)), (AccessPath { address: 7e9863ae2a5041292f7f0ef7f07b49df, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 96, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7e9863ae2a5041292f7f0ef7f07b49df0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0062000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002d98df246ca39979a715098bbae4d0c3)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209b718105a84f8d380c494fea6a1bb73a2d98df246ca39979a715098bbae4d0c3012d98df246ca39979a715098bbae4d0c3012d98df246ca39979a715098bbae4d0c300000000000000001800000000000000002d98df246ca39979a715098bbae4d0c300000000000000001801000000000000002d98df246ca39979a715098bbae4d0c30000000000000000)), (AccessPath { address: 2d98df246ca39979a715098bbae4d0c3, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 97, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d98df246ca39979a715098bbae4d0c30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0063000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14b00000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008e97dad540508eaaf2fa95f18ac78172)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ce36d15e4fac797dda674984c4af25288e97dad540508eaaf2fa95f18ac78172018e97dad540508eaaf2fa95f18ac78172018e97dad540508eaaf2fa95f18ac7817200000000000000001800000000000000008e97dad540508eaaf2fa95f18ac7817200000000000000001801000000000000008e97dad540508eaaf2fa95f18ac781720000000000000000)), (AccessPath { address: 8e97dad540508eaaf2fa95f18ac78172, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 98, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8e97dad540508eaaf2fa95f18ac781720600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0064000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14c00000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006fb561c14a1ada4a620475204af444e8)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201233806acfe93258f7221cd01c6d0b896fb561c14a1ada4a620475204af444e8016fb561c14a1ada4a620475204af444e8016fb561c14a1ada4a620475204af444e800000000000000001800000000000000006fb561c14a1ada4a620475204af444e800000000000000001801000000000000006fb561c14a1ada4a620475204af444e80000000000000000)), (AccessPath { address: 6fb561c14a1ada4a620475204af444e8, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 99, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6fb561c14a1ada4a620475204af444e80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0065000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14d00000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bb7095613fded735c73b6ea01d82795c)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203b371dda97935cfe2477c8e0d458303fbb7095613fded735c73b6ea01d82795c01bb7095613fded735c73b6ea01d82795c01bb7095613fded735c73b6ea01d82795c0000000000000000180000000000000000bb7095613fded735c73b6ea01d82795c0000000000000000180100000000000000bb7095613fded735c73b6ea01d82795c0000000000000000)), (AccessPath { address: bb7095613fded735c73b6ea01d82795c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 100, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bb7095613fded735c73b6ea01d82795c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0066000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14e00000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000059153db829a26325a230334314c43781)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f9ff3690146bbcd9388221112019585859153db829a26325a230334314c437810159153db829a26325a230334314c437810159153db829a26325a230334314c43781000000000000000018000000000000000059153db829a26325a230334314c43781000000000000000018010000000000000059153db829a26325a230334314c437810000000000000000)), (AccessPath { address: 59153db829a26325a230334314c43781, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 101, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "59153db829a26325a230334314c437810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0067000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(4f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe14f00000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006357402f230d73d2daae9d8c2025ce42)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20de9649bed43934e319d80e400e6105036357402f230d73d2daae9d8c2025ce42016357402f230d73d2daae9d8c2025ce42016357402f230d73d2daae9d8c2025ce4200000000000000001800000000000000006357402f230d73d2daae9d8c2025ce4200000000000000001801000000000000006357402f230d73d2daae9d8c2025ce420000000000000000)), (AccessPath { address: 6357402f230d73d2daae9d8c2025ce42, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 102, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6357402f230d73d2daae9d8c2025ce420600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0068000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15000000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c9793c4c6eba9dd6c88e2d0657dc204c)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20db163a88112c6000052e51228358e8a5c9793c4c6eba9dd6c88e2d0657dc204c01c9793c4c6eba9dd6c88e2d0657dc204c01c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000180000000000000000c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000180100000000000000c9793c4c6eba9dd6c88e2d0657dc204c0000000000000000)), (AccessPath { address: c9793c4c6eba9dd6c88e2d0657dc204c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 103, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9793c4c6eba9dd6c88e2d0657dc204c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0069000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15100000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006bb8cf30dec210eb26166e9b2ec59d16)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20dfbc85dc5398c2c704180e629e705f076bb8cf30dec210eb26166e9b2ec59d16016bb8cf30dec210eb26166e9b2ec59d16016bb8cf30dec210eb26166e9b2ec59d1600000000000000001800000000000000006bb8cf30dec210eb26166e9b2ec59d1600000000000000001801000000000000006bb8cf30dec210eb26166e9b2ec59d160000000000000000)), (AccessPath { address: 6bb8cf30dec210eb26166e9b2ec59d16, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 104, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6bb8cf30dec210eb26166e9b2ec59d160600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15200000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f134249305d490328cd19fc6a9fd977f)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20000e9ec609c12eb27d7c88e71d13ebebf134249305d490328cd19fc6a9fd977f01f134249305d490328cd19fc6a9fd977f01f134249305d490328cd19fc6a9fd977f0000000000000000180000000000000000f134249305d490328cd19fc6a9fd977f0000000000000000180100000000000000f134249305d490328cd19fc6a9fd977f0000000000000000)), (AccessPath { address: f134249305d490328cd19fc6a9fd977f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 105, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f134249305d490328cd19fc6a9fd977f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15300000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000009f5e416aa52df7d31e6bbb268d1d98f2)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206d811ca4511b3d34af7edd8e492a4a4c9f5e416aa52df7d31e6bbb268d1d98f2019f5e416aa52df7d31e6bbb268d1d98f2019f5e416aa52df7d31e6bbb268d1d98f200000000000000001800000000000000009f5e416aa52df7d31e6bbb268d1d98f200000000000000001801000000000000009f5e416aa52df7d31e6bbb268d1d98f20000000000000000)), (AccessPath { address: 9f5e416aa52df7d31e6bbb268d1d98f2, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 106, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9f5e416aa52df7d31e6bbb268d1d98f20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15400000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007ed71f407e45ab01f93cf14abbdeba05)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206784da0210304c98e22385cee60681a57ed71f407e45ab01f93cf14abbdeba05017ed71f407e45ab01f93cf14abbdeba05017ed71f407e45ab01f93cf14abbdeba0500000000000000001800000000000000007ed71f407e45ab01f93cf14abbdeba0500000000000000001801000000000000007ed71f407e45ab01f93cf14abbdeba050000000000000000)), (AccessPath { address: 7ed71f407e45ab01f93cf14abbdeba05, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 107, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7ed71f407e45ab01f93cf14abbdeba050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15500000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ea8a5a120e3ffcc011aae1349b98b888)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2006314919f08caec879f26260704d59e5ea8a5a120e3ffcc011aae1349b98b88801ea8a5a120e3ffcc011aae1349b98b88801ea8a5a120e3ffcc011aae1349b98b8880000000000000000180000000000000000ea8a5a120e3ffcc011aae1349b98b8880000000000000000180100000000000000ea8a5a120e3ffcc011aae1349b98b8880000000000000000)), (AccessPath { address: ea8a5a120e3ffcc011aae1349b98b888, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 108, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ea8a5a120e3ffcc011aae1349b98b8880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15600000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d4a022f19d261a6935f5a7149d92ab3c)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20fbd9fe69a85104bda9514f959eacc169d4a022f19d261a6935f5a7149d92ab3c01d4a022f19d261a6935f5a7149d92ab3c01d4a022f19d261a6935f5a7149d92ab3c0000000000000000180000000000000000d4a022f19d261a6935f5a7149d92ab3c0000000000000000180100000000000000d4a022f19d261a6935f5a7149d92ab3c0000000000000000)), (AccessPath { address: d4a022f19d261a6935f5a7149d92ab3c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 109, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4a022f19d261a6935f5a7149d92ab3c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(006f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15700000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007e22b1232a3a6e87a8ae384369bb9148)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b4981bcf96483454d47a6f28e2b03b9a7e22b1232a3a6e87a8ae384369bb9148017e22b1232a3a6e87a8ae384369bb9148017e22b1232a3a6e87a8ae384369bb914800000000000000001800000000000000007e22b1232a3a6e87a8ae384369bb914800000000000000001801000000000000007e22b1232a3a6e87a8ae384369bb91480000000000000000)), (AccessPath { address: 7e22b1232a3a6e87a8ae384369bb9148, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 110, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7e22b1232a3a6e87a8ae384369bb91480600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0070000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000016c328b69d73147c0daa70c63554420c)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202c5e693a491591189a26146af5c6c07116c328b69d73147c0daa70c63554420c0116c328b69d73147c0daa70c63554420c0116c328b69d73147c0daa70c63554420c000000000000000018000000000000000016c328b69d73147c0daa70c63554420c000000000000000018010000000000000016c328b69d73147c0daa70c63554420c0000000000000000)), (AccessPath { address: 16c328b69d73147c0daa70c63554420c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 111, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "16c328b69d73147c0daa70c63554420c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0071000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15900000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a659bcdda9e3e90d119b68b46ec9d7a6)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d86695e1a2577a6b7d04ae60eb1321ada659bcdda9e3e90d119b68b46ec9d7a601a659bcdda9e3e90d119b68b46ec9d7a601a659bcdda9e3e90d119b68b46ec9d7a60000000000000000180000000000000000a659bcdda9e3e90d119b68b46ec9d7a60000000000000000180100000000000000a659bcdda9e3e90d119b68b46ec9d7a60000000000000000)), (AccessPath { address: a659bcdda9e3e90d119b68b46ec9d7a6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 112, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a659bcdda9e3e90d119b68b46ec9d7a60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0072000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15a00000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000eeffc42ef4d2275b088cefd590e74106)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20fc46659281b4980234a51e3b7b57a0cdeeffc42ef4d2275b088cefd590e7410601eeffc42ef4d2275b088cefd590e7410601eeffc42ef4d2275b088cefd590e741060000000000000000180000000000000000eeffc42ef4d2275b088cefd590e741060000000000000000180100000000000000eeffc42ef4d2275b088cefd590e741060000000000000000)), (AccessPath { address: eeffc42ef4d2275b088cefd590e74106, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 113, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eeffc42ef4d2275b088cefd590e741060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0073000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15b00000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000be4c5b4957203f4f24de4354f109ff17)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200deafa362c90faa218564facfe34d575be4c5b4957203f4f24de4354f109ff1701be4c5b4957203f4f24de4354f109ff1701be4c5b4957203f4f24de4354f109ff170000000000000000180000000000000000be4c5b4957203f4f24de4354f109ff170000000000000000180100000000000000be4c5b4957203f4f24de4354f109ff170000000000000000)), (AccessPath { address: be4c5b4957203f4f24de4354f109ff17, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 114, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "be4c5b4957203f4f24de4354f109ff170600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0074000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15c00000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006d0f9ea969c71b2525ac8dfcd91599bf)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20598ca23a5cc5e58067d49de822c0741e6d0f9ea969c71b2525ac8dfcd91599bf016d0f9ea969c71b2525ac8dfcd91599bf016d0f9ea969c71b2525ac8dfcd91599bf00000000000000001800000000000000006d0f9ea969c71b2525ac8dfcd91599bf00000000000000001801000000000000006d0f9ea969c71b2525ac8dfcd91599bf0000000000000000)), (AccessPath { address: 6d0f9ea969c71b2525ac8dfcd91599bf, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 115, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6d0f9ea969c71b2525ac8dfcd91599bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0075000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15d00000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ff0789d8e693706fbaa50096279d05c4)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bc53de0ba0c448a681b7dee01d18d701ff0789d8e693706fbaa50096279d05c401ff0789d8e693706fbaa50096279d05c401ff0789d8e693706fbaa50096279d05c40000000000000000180000000000000000ff0789d8e693706fbaa50096279d05c40000000000000000180100000000000000ff0789d8e693706fbaa50096279d05c40000000000000000)), (AccessPath { address: ff0789d8e693706fbaa50096279d05c4, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 116, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ff0789d8e693706fbaa50096279d05c40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0076000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001b1995ec87323d5b5d014b61be7fd88a)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2078ce8931064bd4458ddbda43d36857dd1b1995ec87323d5b5d014b61be7fd88a011b1995ec87323d5b5d014b61be7fd88a011b1995ec87323d5b5d014b61be7fd88a00000000000000001800000000000000001b1995ec87323d5b5d014b61be7fd88a00000000000000001801000000000000001b1995ec87323d5b5d014b61be7fd88a0000000000000000)), (AccessPath { address: 1b1995ec87323d5b5d014b61be7fd88a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 117, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b1995ec87323d5b5d014b61be7fd88a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0077000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(5f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe15f00000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000dff528dad529f572bb6929c960430aca)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204a34024ccd17559d8bd6f89f41e2bba7dff528dad529f572bb6929c960430aca01dff528dad529f572bb6929c960430aca01dff528dad529f572bb6929c960430aca0000000000000000180000000000000000dff528dad529f572bb6929c960430aca0000000000000000180100000000000000dff528dad529f572bb6929c960430aca0000000000000000)), (AccessPath { address: dff528dad529f572bb6929c960430aca, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 118, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dff528dad529f572bb6929c960430aca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0078000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16000000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a4fe308978f53467bdc37b0b2869ab05)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c9d10c763ab08627dcf893cebb6805b4a4fe308978f53467bdc37b0b2869ab0501a4fe308978f53467bdc37b0b2869ab0501a4fe308978f53467bdc37b0b2869ab050000000000000000180000000000000000a4fe308978f53467bdc37b0b2869ab050000000000000000180100000000000000a4fe308978f53467bdc37b0b2869ab050000000000000000)), (AccessPath { address: a4fe308978f53467bdc37b0b2869ab05, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 119, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a4fe308978f53467bdc37b0b2869ab050600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0079000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16100000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000fdff7332fde6980607bdb90b31e115c1)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2012713e2c81c52b05a90d0a8a3446e6f6fdff7332fde6980607bdb90b31e115c101fdff7332fde6980607bdb90b31e115c101fdff7332fde6980607bdb90b31e115c10000000000000000180000000000000000fdff7332fde6980607bdb90b31e115c10000000000000000180100000000000000fdff7332fde6980607bdb90b31e115c10000000000000000)), (AccessPath { address: fdff7332fde6980607bdb90b31e115c1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 120, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fdff7332fde6980607bdb90b31e115c10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16200000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000080f7084fb3d18db2c73276255c8a994d)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2066eade2c6f7314032c1ee9e167b5704680f7084fb3d18db2c73276255c8a994d0180f7084fb3d18db2c73276255c8a994d0180f7084fb3d18db2c73276255c8a994d000000000000000018000000000000000080f7084fb3d18db2c73276255c8a994d000000000000000018010000000000000080f7084fb3d18db2c73276255c8a994d0000000000000000)), (AccessPath { address: 80f7084fb3d18db2c73276255c8a994d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 121, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "80f7084fb3d18db2c73276255c8a994d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16300000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a478174ca5ddc82fa03b6401eeda0a29)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205ddebccf021ca445c6bafc6185b4a5d5a478174ca5ddc82fa03b6401eeda0a2901a478174ca5ddc82fa03b6401eeda0a2901a478174ca5ddc82fa03b6401eeda0a290000000000000000180000000000000000a478174ca5ddc82fa03b6401eeda0a290000000000000000180100000000000000a478174ca5ddc82fa03b6401eeda0a290000000000000000)), (AccessPath { address: a478174ca5ddc82fa03b6401eeda0a29, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 122, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a478174ca5ddc82fa03b6401eeda0a290600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16400000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006f6316856705df75052004e9955ed293)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200eb1e56f5c23d4597dab3581ddd769136f6316856705df75052004e9955ed293016f6316856705df75052004e9955ed293016f6316856705df75052004e9955ed29300000000000000001800000000000000006f6316856705df75052004e9955ed29300000000000000001801000000000000006f6316856705df75052004e9955ed2930000000000000000)), (AccessPath { address: 6f6316856705df75052004e9955ed293, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 123, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6f6316856705df75052004e9955ed2930600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000009f4dc4845f6d4b113667ae6db398096)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20fcaa7e0235aa6783dc17ae8de41b4aff09f4dc4845f6d4b113667ae6db3980960109f4dc4845f6d4b113667ae6db3980960109f4dc4845f6d4b113667ae6db398096000000000000000018000000000000000009f4dc4845f6d4b113667ae6db398096000000000000000018010000000000000009f4dc4845f6d4b113667ae6db3980960000000000000000)), (AccessPath { address: 09f4dc4845f6d4b113667ae6db398096, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 124, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "09f4dc4845f6d4b113667ae6db3980960600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16600000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000073a4c25ddc59459f43943c52c2d97306)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201289097bc78888003103cde36b31cf8a73a4c25ddc59459f43943c52c2d973060173a4c25ddc59459f43943c52c2d973060173a4c25ddc59459f43943c52c2d97306000000000000000018000000000000000073a4c25ddc59459f43943c52c2d97306000000000000000018010000000000000073a4c25ddc59459f43943c52c2d973060000000000000000)), (AccessPath { address: 73a4c25ddc59459f43943c52c2d97306, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 125, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "73a4c25ddc59459f43943c52c2d973060600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(007f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16700000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a91125b15cab7b386dbc598f05463a45)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b94868125edbdb46b89b581c516193f1a91125b15cab7b386dbc598f05463a4501a91125b15cab7b386dbc598f05463a4501a91125b15cab7b386dbc598f05463a450000000000000000180000000000000000a91125b15cab7b386dbc598f05463a450000000000000000180100000000000000a91125b15cab7b386dbc598f05463a450000000000000000)), (AccessPath { address: a91125b15cab7b386dbc598f05463a45, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 126, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a91125b15cab7b386dbc598f05463a450600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0080000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000105fc5b111af9616113f5f27729a4d61)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20186d50bd8899e8632d3780064faf3773105fc5b111af9616113f5f27729a4d6101105fc5b111af9616113f5f27729a4d6101105fc5b111af9616113f5f27729a4d610000000000000000180000000000000000105fc5b111af9616113f5f27729a4d610000000000000000180100000000000000105fc5b111af9616113f5f27729a4d610000000000000000)), (AccessPath { address: 105fc5b111af9616113f5f27729a4d61, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 127, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "105fc5b111af9616113f5f27729a4d610600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0081000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001042b3446d1e4f8b1e993ca76856f579)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e83339f32d102117f2337239ff33fbf91042b3446d1e4f8b1e993ca76856f579011042b3446d1e4f8b1e993ca76856f579011042b3446d1e4f8b1e993ca76856f57900000000000000001800000000000000001042b3446d1e4f8b1e993ca76856f57900000000000000001801000000000000001042b3446d1e4f8b1e993ca76856f5790000000000000000)), (AccessPath { address: 1042b3446d1e4f8b1e993ca76856f579, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 128, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1042b3446d1e4f8b1e993ca76856f5790600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0082000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16a00000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000079bed52baece7dab96bb47b8ca20015a)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202f5a69a9754768237c710260de1e365e79bed52baece7dab96bb47b8ca20015a0179bed52baece7dab96bb47b8ca20015a0179bed52baece7dab96bb47b8ca20015a000000000000000018000000000000000079bed52baece7dab96bb47b8ca20015a000000000000000018010000000000000079bed52baece7dab96bb47b8ca20015a0000000000000000)), (AccessPath { address: 79bed52baece7dab96bb47b8ca20015a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 129, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79bed52baece7dab96bb47b8ca20015a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0083000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000040640d1bbf8d007ca838216da95fd0f)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208182aa6a7df9856acce84afa6714dcbf040640d1bbf8d007ca838216da95fd0f01040640d1bbf8d007ca838216da95fd0f01040640d1bbf8d007ca838216da95fd0f0000000000000000180000000000000000040640d1bbf8d007ca838216da95fd0f0000000000000000180100000000000000040640d1bbf8d007ca838216da95fd0f0000000000000000)), (AccessPath { address: 040640d1bbf8d007ca838216da95fd0f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 130, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "040640d1bbf8d007ca838216da95fd0f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0084000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16c00000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bc435b08651e2e25dc068fa63af524b7)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20445a402c91d59badf6c16b8350ff516fbc435b08651e2e25dc068fa63af524b701bc435b08651e2e25dc068fa63af524b701bc435b08651e2e25dc068fa63af524b70000000000000000180000000000000000bc435b08651e2e25dc068fa63af524b70000000000000000180100000000000000bc435b08651e2e25dc068fa63af524b70000000000000000)), (AccessPath { address: bc435b08651e2e25dc068fa63af524b7, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 131, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bc435b08651e2e25dc068fa63af524b70600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0085000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000228025fa847bdcd2aaf3565a386d0e73)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20dd1482fac3ebaee192b4b1bca6a0d40c228025fa847bdcd2aaf3565a386d0e7301228025fa847bdcd2aaf3565a386d0e7301228025fa847bdcd2aaf3565a386d0e730000000000000000180000000000000000228025fa847bdcd2aaf3565a386d0e730000000000000000180100000000000000228025fa847bdcd2aaf3565a386d0e730000000000000000)), (AccessPath { address: 228025fa847bdcd2aaf3565a386d0e73, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16d00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 132, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "228025fa847bdcd2aaf3565a386d0e730600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0086000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16e00000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000071d368ca104cf2e24b5599da2ca01881)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200d4f46044c3122d42660c033fe5caf4771d368ca104cf2e24b5599da2ca018810171d368ca104cf2e24b5599da2ca018810171d368ca104cf2e24b5599da2ca01881000000000000000018000000000000000071d368ca104cf2e24b5599da2ca01881000000000000000018010000000000000071d368ca104cf2e24b5599da2ca018810000000000000000)), (AccessPath { address: 71d368ca104cf2e24b5599da2ca01881, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 133, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "71d368ca104cf2e24b5599da2ca018810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0087000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(6f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe16f00000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000074fb87c19b9a71e14c5c8e7dc07f9dd6)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208895826eafceb1593220c40ae820305b74fb87c19b9a71e14c5c8e7dc07f9dd60174fb87c19b9a71e14c5c8e7dc07f9dd60174fb87c19b9a71e14c5c8e7dc07f9dd6000000000000000018000000000000000074fb87c19b9a71e14c5c8e7dc07f9dd6000000000000000018010000000000000074fb87c19b9a71e14c5c8e7dc07f9dd60000000000000000)), (AccessPath { address: 74fb87c19b9a71e14c5c8e7dc07f9dd6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 134, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "74fb87c19b9a71e14c5c8e7dc07f9dd60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0088000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17000000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b9b5a7edeb3cc5ab92cad11447d5286b)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f23963bdbd45d9c5dc020abf43c03d52b9b5a7edeb3cc5ab92cad11447d5286b01b9b5a7edeb3cc5ab92cad11447d5286b01b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000180000000000000000b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000180100000000000000b9b5a7edeb3cc5ab92cad11447d5286b0000000000000000)), (AccessPath { address: b9b5a7edeb3cc5ab92cad11447d5286b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 135, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b9b5a7edeb3cc5ab92cad11447d5286b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0089000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17100000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c5eaad562f35ced76be73e3d099a2ab5)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e3eb72f16b2bfae179303bb6bff825a5c5eaad562f35ced76be73e3d099a2ab501c5eaad562f35ced76be73e3d099a2ab501c5eaad562f35ced76be73e3d099a2ab50000000000000000180000000000000000c5eaad562f35ced76be73e3d099a2ab50000000000000000180100000000000000c5eaad562f35ced76be73e3d099a2ab50000000000000000)), (AccessPath { address: c5eaad562f35ced76be73e3d099a2ab5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 136, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c5eaad562f35ced76be73e3d099a2ab50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17200000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b776e783b7fae908063ef0abac01f438)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20647eced646d4c742675db2a05b9cfe5ab776e783b7fae908063ef0abac01f43801b776e783b7fae908063ef0abac01f43801b776e783b7fae908063ef0abac01f4380000000000000000180000000000000000b776e783b7fae908063ef0abac01f4380000000000000000180100000000000000b776e783b7fae908063ef0abac01f4380000000000000000)), (AccessPath { address: b776e783b7fae908063ef0abac01f438, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 137, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b776e783b7fae908063ef0abac01f4380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000034d654d52f62724b0d5649c4460735bb)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cd8d88266f573da6038a58a448d2f74334d654d52f62724b0d5649c4460735bb0134d654d52f62724b0d5649c4460735bb0134d654d52f62724b0d5649c4460735bb000000000000000018000000000000000034d654d52f62724b0d5649c4460735bb000000000000000018010000000000000034d654d52f62724b0d5649c4460735bb0000000000000000)), (AccessPath { address: 34d654d52f62724b0d5649c4460735bb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 138, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "34d654d52f62724b0d5649c4460735bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17400000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008125cbf0b192224c62581ba7d2fc8098)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209a3045a4611b6322606506bdc9f82cff8125cbf0b192224c62581ba7d2fc8098018125cbf0b192224c62581ba7d2fc8098018125cbf0b192224c62581ba7d2fc809800000000000000001800000000000000008125cbf0b192224c62581ba7d2fc809800000000000000001801000000000000008125cbf0b192224c62581ba7d2fc80980000000000000000)), (AccessPath { address: 8125cbf0b192224c62581ba7d2fc8098, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 139, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8125cbf0b192224c62581ba7d2fc80980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17500000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000085f86c5bec52203f64e6fdfe726a1eda)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e81c37f5a116952962fe8fb76bf8e94f85f86c5bec52203f64e6fdfe726a1eda0185f86c5bec52203f64e6fdfe726a1eda0185f86c5bec52203f64e6fdfe726a1eda000000000000000018000000000000000085f86c5bec52203f64e6fdfe726a1eda000000000000000018010000000000000085f86c5bec52203f64e6fdfe726a1eda0000000000000000)), (AccessPath { address: 85f86c5bec52203f64e6fdfe726a1eda, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 140, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "85f86c5bec52203f64e6fdfe726a1eda0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17600000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000009b6aec499349e77607a5f99819ce70dd)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2048f833377f9ea5d6251e3d1c38ad748e9b6aec499349e77607a5f99819ce70dd019b6aec499349e77607a5f99819ce70dd019b6aec499349e77607a5f99819ce70dd00000000000000001800000000000000009b6aec499349e77607a5f99819ce70dd00000000000000001801000000000000009b6aec499349e77607a5f99819ce70dd0000000000000000)), (AccessPath { address: 9b6aec499349e77607a5f99819ce70dd, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 141, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9b6aec499349e77607a5f99819ce70dd0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(008f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17700000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ee28a86d8929d43e2ffcfa5350895347)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208f31fe361f32942e2d1c2c5693a36f79ee28a86d8929d43e2ffcfa535089534701ee28a86d8929d43e2ffcfa535089534701ee28a86d8929d43e2ffcfa53508953470000000000000000180000000000000000ee28a86d8929d43e2ffcfa53508953470000000000000000180100000000000000ee28a86d8929d43e2ffcfa53508953470000000000000000)), (AccessPath { address: ee28a86d8929d43e2ffcfa5350895347, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 142, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ee28a86d8929d43e2ffcfa53508953470600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0090000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17800000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005b80411af22132a594690d7bd7a28ab3)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202f8cc46f572c210d16a1f8c7260717cf5b80411af22132a594690d7bd7a28ab3015b80411af22132a594690d7bd7a28ab3015b80411af22132a594690d7bd7a28ab300000000000000001800000000000000005b80411af22132a594690d7bd7a28ab300000000000000001801000000000000005b80411af22132a594690d7bd7a28ab30000000000000000)), (AccessPath { address: 5b80411af22132a594690d7bd7a28ab3, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 143, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5b80411af22132a594690d7bd7a28ab30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0091000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17900000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007cdd88ff0c627024c86e2d95562a7f1a)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d5c8a18af0090347dd8f2d289fc4cc5b7cdd88ff0c627024c86e2d95562a7f1a017cdd88ff0c627024c86e2d95562a7f1a017cdd88ff0c627024c86e2d95562a7f1a00000000000000001800000000000000007cdd88ff0c627024c86e2d95562a7f1a00000000000000001801000000000000007cdd88ff0c627024c86e2d95562a7f1a0000000000000000)), (AccessPath { address: 7cdd88ff0c627024c86e2d95562a7f1a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 144, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7cdd88ff0c627024c86e2d95562a7f1a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0092000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000273a6621ee6beac7eb2fd98fdd9a0e38)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a7e1df3013132ca7b49bede1f2742bb3273a6621ee6beac7eb2fd98fdd9a0e3801273a6621ee6beac7eb2fd98fdd9a0e3801273a6621ee6beac7eb2fd98fdd9a0e380000000000000000180000000000000000273a6621ee6beac7eb2fd98fdd9a0e380000000000000000180100000000000000273a6621ee6beac7eb2fd98fdd9a0e380000000000000000)), (AccessPath { address: 273a6621ee6beac7eb2fd98fdd9a0e38, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 145, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "273a6621ee6beac7eb2fd98fdd9a0e380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0093000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003193736470483e900e18e39543537913)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c70d40c8b8508f36531d6831c506b1013193736470483e900e18e39543537913013193736470483e900e18e39543537913013193736470483e900e18e3954353791300000000000000001800000000000000003193736470483e900e18e3954353791300000000000000001801000000000000003193736470483e900e18e395435379130000000000000000)), (AccessPath { address: 3193736470483e900e18e39543537913, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 146, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3193736470483e900e18e395435379130600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0094000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17c00000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000eaeb1e85956c8a634bbc474fa07a166d)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20989dd93ddf47cfbf6fcd1a7cc2cb6896eaeb1e85956c8a634bbc474fa07a166d01eaeb1e85956c8a634bbc474fa07a166d01eaeb1e85956c8a634bbc474fa07a166d0000000000000000180000000000000000eaeb1e85956c8a634bbc474fa07a166d0000000000000000180100000000000000eaeb1e85956c8a634bbc474fa07a166d0000000000000000)), (AccessPath { address: eaeb1e85956c8a634bbc474fa07a166d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 147, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eaeb1e85956c8a634bbc474fa07a166d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0095000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17d00000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000eb73848fd02f7e910a25ec42f6669f26)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a07144d58918e906b4ec245ad3db594feb73848fd02f7e910a25ec42f6669f2601eb73848fd02f7e910a25ec42f6669f2601eb73848fd02f7e910a25ec42f6669f260000000000000000180000000000000000eb73848fd02f7e910a25ec42f6669f260000000000000000180100000000000000eb73848fd02f7e910a25ec42f6669f260000000000000000)), (AccessPath { address: eb73848fd02f7e910a25ec42f6669f26, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 148, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "eb73848fd02f7e910a25ec42f6669f260600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0096000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17e00000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f281d6c1ceaf00801c87ea80d3ead06f)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b568354889f2e996907b7cf8e2412446f281d6c1ceaf00801c87ea80d3ead06f01f281d6c1ceaf00801c87ea80d3ead06f01f281d6c1ceaf00801c87ea80d3ead06f0000000000000000180000000000000000f281d6c1ceaf00801c87ea80d3ead06f0000000000000000180100000000000000f281d6c1ceaf00801c87ea80d3ead06f0000000000000000)), (AccessPath { address: f281d6c1ceaf00801c87ea80d3ead06f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 149, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f281d6c1ceaf00801c87ea80d3ead06f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0097000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(7f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe17f00000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000847df0424f9d7e98fec97476342fa9d8)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208483a27bc80cde29a58770141be255d5847df0424f9d7e98fec97476342fa9d801847df0424f9d7e98fec97476342fa9d801847df0424f9d7e98fec97476342fa9d80000000000000000180000000000000000847df0424f9d7e98fec97476342fa9d80000000000000000180100000000000000847df0424f9d7e98fec97476342fa9d80000000000000000)), (AccessPath { address: 847df0424f9d7e98fec97476342fa9d8, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 150, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "847df0424f9d7e98fec97476342fa9d80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0098000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002e8ff4ea1d84cacaa705b9f477f564e8)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203c1499632b6a3f4db87eb3de256003ae2e8ff4ea1d84cacaa705b9f477f564e8012e8ff4ea1d84cacaa705b9f477f564e8012e8ff4ea1d84cacaa705b9f477f564e800000000000000001800000000000000002e8ff4ea1d84cacaa705b9f477f564e800000000000000001801000000000000002e8ff4ea1d84cacaa705b9f477f564e80000000000000000)), (AccessPath { address: 2e8ff4ea1d84cacaa705b9f477f564e8, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 151, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2e8ff4ea1d84cacaa705b9f477f564e80600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0099000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001c82ca5a0bdae0e182fdc5181a48e73a)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209ba64a009e62f7f586b6783aaaeedd8f1c82ca5a0bdae0e182fdc5181a48e73a011c82ca5a0bdae0e182fdc5181a48e73a011c82ca5a0bdae0e182fdc5181a48e73a00000000000000001800000000000000001c82ca5a0bdae0e182fdc5181a48e73a00000000000000001801000000000000001c82ca5a0bdae0e182fdc5181a48e73a0000000000000000)), (AccessPath { address: 1c82ca5a0bdae0e182fdc5181a48e73a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 152, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1c82ca5a0bdae0e182fdc5181a48e73a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009a000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000039d336d4c8e4439c29a70bbd4d4ec8db)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a5468220bcffdcea082788ae41c17d0539d336d4c8e4439c29a70bbd4d4ec8db0139d336d4c8e4439c29a70bbd4d4ec8db0139d336d4c8e4439c29a70bbd4d4ec8db000000000000000018000000000000000039d336d4c8e4439c29a70bbd4d4ec8db000000000000000018010000000000000039d336d4c8e4439c29a70bbd4d4ec8db0000000000000000)), (AccessPath { address: 39d336d4c8e4439c29a70bbd4d4ec8db, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 153, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "39d336d4c8e4439c29a70bbd4d4ec8db0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009b000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18300000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e7241bfa54243ad9ecdca377e5658f67)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20196c0be33bd1d172dc5548453f8dc2dfe7241bfa54243ad9ecdca377e5658f6701e7241bfa54243ad9ecdca377e5658f6701e7241bfa54243ad9ecdca377e5658f670000000000000000180000000000000000e7241bfa54243ad9ecdca377e5658f670000000000000000180100000000000000e7241bfa54243ad9ecdca377e5658f670000000000000000)), (AccessPath { address: e7241bfa54243ad9ecdca377e5658f67, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 154, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e7241bfa54243ad9ecdca377e5658f670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009c000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18400000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000890e129087f90853a93bcb44dfa8fa32)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b5e02b3ad076d48fa561ad545852db8b890e129087f90853a93bcb44dfa8fa3201890e129087f90853a93bcb44dfa8fa3201890e129087f90853a93bcb44dfa8fa320000000000000000180000000000000000890e129087f90853a93bcb44dfa8fa320000000000000000180100000000000000890e129087f90853a93bcb44dfa8fa320000000000000000)), (AccessPath { address: 890e129087f90853a93bcb44dfa8fa32, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 155, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "890e129087f90853a93bcb44dfa8fa320600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009d000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18500000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000059cb529725016a164a07b48e0400171f)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202f68f9cd40b7fc16570b45d9ca10ea2f59cb529725016a164a07b48e0400171f0159cb529725016a164a07b48e0400171f0159cb529725016a164a07b48e0400171f000000000000000018000000000000000059cb529725016a164a07b48e0400171f000000000000000018010000000000000059cb529725016a164a07b48e0400171f0000000000000000)), (AccessPath { address: 59cb529725016a164a07b48e0400171f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 156, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "59cb529725016a164a07b48e0400171f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009e000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000004a22b1e015b37733cf2255db695793ba)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20efe51dc9f69095bf6da010b5ab133d204a22b1e015b37733cf2255db695793ba014a22b1e015b37733cf2255db695793ba014a22b1e015b37733cf2255db695793ba00000000000000001800000000000000004a22b1e015b37733cf2255db695793ba00000000000000001801000000000000004a22b1e015b37733cf2255db695793ba0000000000000000)), (AccessPath { address: 4a22b1e015b37733cf2255db695793ba, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 157, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4a22b1e015b37733cf2255db695793ba0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(009f000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000053cc2e7ea475ee95002272c0be680ec4)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ea0c2ef245532daf23504b416f45637f53cc2e7ea475ee95002272c0be680ec40153cc2e7ea475ee95002272c0be680ec40153cc2e7ea475ee95002272c0be680ec4000000000000000018000000000000000053cc2e7ea475ee95002272c0be680ec4000000000000000018010000000000000053cc2e7ea475ee95002272c0be680ec40000000000000000)), (AccessPath { address: 53cc2e7ea475ee95002272c0be680ec4, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 158, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "53cc2e7ea475ee95002272c0be680ec40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003e97062e2df271400e49c9bb63fae409)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202f8fea86886652b8d2fc9d177361d2473e97062e2df271400e49c9bb63fae409013e97062e2df271400e49c9bb63fae409013e97062e2df271400e49c9bb63fae40900000000000000001800000000000000003e97062e2df271400e49c9bb63fae40900000000000000001801000000000000003e97062e2df271400e49c9bb63fae4090000000000000000)), (AccessPath { address: 3e97062e2df271400e49c9bb63fae409, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 159, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3e97062e2df271400e49c9bb63fae4090600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18900000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a76bdc667d598439df52e2aa43e36711)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20766ac3b8c71ed97ece3f69d14d17b6b8a76bdc667d598439df52e2aa43e3671101a76bdc667d598439df52e2aa43e3671101a76bdc667d598439df52e2aa43e367110000000000000000180000000000000000a76bdc667d598439df52e2aa43e367110000000000000000180100000000000000a76bdc667d598439df52e2aa43e367110000000000000000)), (AccessPath { address: a76bdc667d598439df52e2aa43e36711, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 160, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a76bdc667d598439df52e2aa43e367110600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18a00000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000009a79baf30810ab6d22492ea14aa2c4f9)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b1e4b6721bf1255d0f8b6109b90bbedd9a79baf30810ab6d22492ea14aa2c4f9019a79baf30810ab6d22492ea14aa2c4f9019a79baf30810ab6d22492ea14aa2c4f900000000000000001800000000000000009a79baf30810ab6d22492ea14aa2c4f900000000000000001801000000000000009a79baf30810ab6d22492ea14aa2c4f90000000000000000)), (AccessPath { address: 9a79baf30810ab6d22492ea14aa2c4f9, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 161, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9a79baf30810ab6d22492ea14aa2c4f90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000f83537d8bbe6efa939cee9a383a4581)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201505f663a9837a71c338ffbb6164a7bd0f83537d8bbe6efa939cee9a383a4581010f83537d8bbe6efa939cee9a383a4581010f83537d8bbe6efa939cee9a383a458100000000000000001800000000000000000f83537d8bbe6efa939cee9a383a458100000000000000001801000000000000000f83537d8bbe6efa939cee9a383a45810000000000000000)), (AccessPath { address: 0f83537d8bbe6efa939cee9a383a4581, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18b00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 162, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0f83537d8bbe6efa939cee9a383a45810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18c00000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ff2ccceaee26a374be9de21939e2b0b6)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a8eae04673080fa35a9302a2cefe1e69ff2ccceaee26a374be9de21939e2b0b601ff2ccceaee26a374be9de21939e2b0b601ff2ccceaee26a374be9de21939e2b0b60000000000000000180000000000000000ff2ccceaee26a374be9de21939e2b0b60000000000000000180100000000000000ff2ccceaee26a374be9de21939e2b0b60000000000000000)), (AccessPath { address: ff2ccceaee26a374be9de21939e2b0b6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 163, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ff2ccceaee26a374be9de21939e2b0b60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18d00000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000827a343368e73a27ff5cbadbcb9b742a)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cb466e6e1f594df36a4f14bb6cd14e4e827a343368e73a27ff5cbadbcb9b742a01827a343368e73a27ff5cbadbcb9b742a01827a343368e73a27ff5cbadbcb9b742a0000000000000000180000000000000000827a343368e73a27ff5cbadbcb9b742a0000000000000000180100000000000000827a343368e73a27ff5cbadbcb9b742a0000000000000000)), (AccessPath { address: 827a343368e73a27ff5cbadbcb9b742a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 164, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "827a343368e73a27ff5cbadbcb9b742a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000134da7791425d1ca88f8df427f5aefdc)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20468d3a4451206c361218a5eb41f96354134da7791425d1ca88f8df427f5aefdc01134da7791425d1ca88f8df427f5aefdc01134da7791425d1ca88f8df427f5aefdc0000000000000000180000000000000000134da7791425d1ca88f8df427f5aefdc0000000000000000180100000000000000134da7791425d1ca88f8df427f5aefdc0000000000000000)), (AccessPath { address: 134da7791425d1ca88f8df427f5aefdc, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 165, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "134da7791425d1ca88f8df427f5aefdc0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(8f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe18f00000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bc5c64ae3c648fb739aef0a8d299faeb)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e6971d3dfd0b372f71069497f9a98d3bc5c64ae3c648fb739aef0a8d299faeb01bc5c64ae3c648fb739aef0a8d299faeb01bc5c64ae3c648fb739aef0a8d299faeb0000000000000000180000000000000000bc5c64ae3c648fb739aef0a8d299faeb0000000000000000180100000000000000bc5c64ae3c648fb739aef0a8d299faeb0000000000000000)), (AccessPath { address: bc5c64ae3c648fb739aef0a8d299faeb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 166, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bc5c64ae3c648fb739aef0a8d299faeb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19000000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ed8f89a89546bf2458512789330ba548)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200d953b39736a362cf134aa32fba17178ed8f89a89546bf2458512789330ba54801ed8f89a89546bf2458512789330ba54801ed8f89a89546bf2458512789330ba5480000000000000000180000000000000000ed8f89a89546bf2458512789330ba5480000000000000000180100000000000000ed8f89a89546bf2458512789330ba5480000000000000000)), (AccessPath { address: ed8f89a89546bf2458512789330ba548, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 167, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ed8f89a89546bf2458512789330ba5480600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00a9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19100000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e8e0217659345865a411967a9deebad1)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209aec058d63e73e3638b6a290df9c601de8e0217659345865a411967a9deebad101e8e0217659345865a411967a9deebad101e8e0217659345865a411967a9deebad10000000000000000180000000000000000e8e0217659345865a411967a9deebad10000000000000000180100000000000000e8e0217659345865a411967a9deebad10000000000000000)), (AccessPath { address: e8e0217659345865a411967a9deebad1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 168, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e8e0217659345865a411967a9deebad10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00aa000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000005f4dd977ddc79eb37b688957552d37f)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202967231c1d5ccde48860b197e39f0b6b05f4dd977ddc79eb37b688957552d37f0105f4dd977ddc79eb37b688957552d37f0105f4dd977ddc79eb37b688957552d37f000000000000000018000000000000000005f4dd977ddc79eb37b688957552d37f000000000000000018010000000000000005f4dd977ddc79eb37b688957552d37f0000000000000000)), (AccessPath { address: 05f4dd977ddc79eb37b688957552d37f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19200000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 169, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "05f4dd977ddc79eb37b688957552d37f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ab000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003f67c0defea3d9a23d4cff11578e1db2)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200c2237ced6aaa6a2a32784bdd0d4dd873f67c0defea3d9a23d4cff11578e1db2013f67c0defea3d9a23d4cff11578e1db2013f67c0defea3d9a23d4cff11578e1db200000000000000001800000000000000003f67c0defea3d9a23d4cff11578e1db200000000000000001801000000000000003f67c0defea3d9a23d4cff11578e1db20000000000000000)), (AccessPath { address: 3f67c0defea3d9a23d4cff11578e1db2, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 170, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3f67c0defea3d9a23d4cff11578e1db20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ac000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19400000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c45e52e8edf0f1cdc60235568a9a80f3)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20065eb29cbc654e87aeb59a3808a741dac45e52e8edf0f1cdc60235568a9a80f301c45e52e8edf0f1cdc60235568a9a80f301c45e52e8edf0f1cdc60235568a9a80f30000000000000000180000000000000000c45e52e8edf0f1cdc60235568a9a80f30000000000000000180100000000000000c45e52e8edf0f1cdc60235568a9a80f30000000000000000)), (AccessPath { address: c45e52e8edf0f1cdc60235568a9a80f3, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 171, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c45e52e8edf0f1cdc60235568a9a80f30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ad000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002d0802cee5274dfe3ee0822dc74ba526)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206ae6a75c38b233b222ae6d22e57910c42d0802cee5274dfe3ee0822dc74ba526012d0802cee5274dfe3ee0822dc74ba526012d0802cee5274dfe3ee0822dc74ba52600000000000000001800000000000000002d0802cee5274dfe3ee0822dc74ba52600000000000000001801000000000000002d0802cee5274dfe3ee0822dc74ba5260000000000000000)), (AccessPath { address: 2d0802cee5274dfe3ee0822dc74ba526, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 172, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d0802cee5274dfe3ee0822dc74ba5260600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ae000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000107ac6915f540f49da9b8c97adfcf698)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201ef95742c8b854ef2afa357bfbbcac85107ac6915f540f49da9b8c97adfcf69801107ac6915f540f49da9b8c97adfcf69801107ac6915f540f49da9b8c97adfcf6980000000000000000180000000000000000107ac6915f540f49da9b8c97adfcf6980000000000000000180100000000000000107ac6915f540f49da9b8c97adfcf6980000000000000000)), (AccessPath { address: 107ac6915f540f49da9b8c97adfcf698, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 173, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "107ac6915f540f49da9b8c97adfcf6980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00af000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001138c991d55d34767c6f9d832fe9e1f4)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c0eff0a88636cb3873292079580d8cee1138c991d55d34767c6f9d832fe9e1f4011138c991d55d34767c6f9d832fe9e1f4011138c991d55d34767c6f9d832fe9e1f400000000000000001800000000000000001138c991d55d34767c6f9d832fe9e1f400000000000000001801000000000000001138c991d55d34767c6f9d832fe9e1f40000000000000000)), (AccessPath { address: 1138c991d55d34767c6f9d832fe9e1f4, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 174, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1138c991d55d34767c6f9d832fe9e1f40600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19800000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000079513e82ebdd2a787c9d2e191053bb4c)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d3f78e29a659a15742148ca6fb4cc89079513e82ebdd2a787c9d2e191053bb4c0179513e82ebdd2a787c9d2e191053bb4c0179513e82ebdd2a787c9d2e191053bb4c000000000000000018000000000000000079513e82ebdd2a787c9d2e191053bb4c000000000000000018010000000000000079513e82ebdd2a787c9d2e191053bb4c0000000000000000)), (AccessPath { address: 79513e82ebdd2a787c9d2e191053bb4c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 175, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "79513e82ebdd2a787c9d2e191053bb4c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19900000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c9394de8260ecc3632969b4f1b0f68bb)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208c048917e73fc41d5685b4fb3801d0a5c9394de8260ecc3632969b4f1b0f68bb01c9394de8260ecc3632969b4f1b0f68bb01c9394de8260ecc3632969b4f1b0f68bb0000000000000000180000000000000000c9394de8260ecc3632969b4f1b0f68bb0000000000000000180100000000000000c9394de8260ecc3632969b4f1b0f68bb0000000000000000)), (AccessPath { address: c9394de8260ecc3632969b4f1b0f68bb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 176, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9394de8260ecc3632969b4f1b0f68bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000209be98768730c5da2f99b6e86388d66)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203e0d0aa8a3bf216c047781207df31bf1209be98768730c5da2f99b6e86388d6601209be98768730c5da2f99b6e86388d6601209be98768730c5da2f99b6e86388d660000000000000000180000000000000000209be98768730c5da2f99b6e86388d660000000000000000180100000000000000209be98768730c5da2f99b6e86388d660000000000000000)), (AccessPath { address: 209be98768730c5da2f99b6e86388d66, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19a00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 177, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "209be98768730c5da2f99b6e86388d660600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19b00000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000564bdc733addd56a58b44f57f9a73f2e)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5a7374a50850c07823888a559f1165d564bdc733addd56a58b44f57f9a73f2e01564bdc733addd56a58b44f57f9a73f2e01564bdc733addd56a58b44f57f9a73f2e0000000000000000180000000000000000564bdc733addd56a58b44f57f9a73f2e0000000000000000180100000000000000564bdc733addd56a58b44f57f9a73f2e0000000000000000)), (AccessPath { address: 564bdc733addd56a58b44f57f9a73f2e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 178, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "564bdc733addd56a58b44f57f9a73f2e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9c00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19c00000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000deba1bb3dc9abd91cc14acbca0ff0fd6)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2025822c0fbe88daee1d09f5e1d3963cb9deba1bb3dc9abd91cc14acbca0ff0fd601deba1bb3dc9abd91cc14acbca0ff0fd601deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000180000000000000000deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000180100000000000000deba1bb3dc9abd91cc14acbca0ff0fd60000000000000000)), (AccessPath { address: deba1bb3dc9abd91cc14acbca0ff0fd6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 179, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "deba1bb3dc9abd91cc14acbca0ff0fd60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9d00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19d00000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ab0bc2212f0a720c5d14626e0db373de)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201a0ea324faaf99262a1f9dc5e2016f92ab0bc2212f0a720c5d14626e0db373de01ab0bc2212f0a720c5d14626e0db373de01ab0bc2212f0a720c5d14626e0db373de0000000000000000180000000000000000ab0bc2212f0a720c5d14626e0db373de0000000000000000180100000000000000ab0bc2212f0a720c5d14626e0db373de0000000000000000)), (AccessPath { address: ab0bc2212f0a720c5d14626e0db373de, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 180, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ab0bc2212f0a720c5d14626e0db373de0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000004bd7dd1bd4a35ddf81a039aacfbf903b)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2064aa13545ab52430acbb10d4d55bce1b4bd7dd1bd4a35ddf81a039aacfbf903b014bd7dd1bd4a35ddf81a039aacfbf903b014bd7dd1bd4a35ddf81a039aacfbf903b00000000000000001800000000000000004bd7dd1bd4a35ddf81a039aacfbf903b00000000000000001801000000000000004bd7dd1bd4a35ddf81a039aacfbf903b0000000000000000)), (AccessPath { address: 4bd7dd1bd4a35ddf81a039aacfbf903b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9e00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19e00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 181, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4bd7dd1bd4a35ddf81a039aacfbf903b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003b39630c52fb52ae278edacb2e2be73a)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a094b50e008834ddd3dcc641fea77c603b39630c52fb52ae278edacb2e2be73a013b39630c52fb52ae278edacb2e2be73a013b39630c52fb52ae278edacb2e2be73a00000000000000001800000000000000003b39630c52fb52ae278edacb2e2be73a00000000000000001801000000000000003b39630c52fb52ae278edacb2e2be73a0000000000000000)), (AccessPath { address: 3b39630c52fb52ae278edacb2e2be73a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(9f00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe19f00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 182, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3b39630c52fb52ae278edacb2e2be73a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a000000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000009554b2425669d03028bdcf4c3a19e47a)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b5ec15ec0f2640d319ed500a39e2f8de9554b2425669d03028bdcf4c3a19e47a019554b2425669d03028bdcf4c3a19e47a019554b2425669d03028bdcf4c3a19e47a00000000000000001800000000000000009554b2425669d03028bdcf4c3a19e47a00000000000000001801000000000000009554b2425669d03028bdcf4c3a19e47a0000000000000000)), (AccessPath { address: 9554b2425669d03028bdcf4c3a19e47a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 183, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9554b2425669d03028bdcf4c3a19e47a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00b9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001e496c579b0c04ac53db7dbcf04b934d)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2027b53a2d20ebf7912288652267875eff1e496c579b0c04ac53db7dbcf04b934d011e496c579b0c04ac53db7dbcf04b934d011e496c579b0c04ac53db7dbcf04b934d00000000000000001800000000000000001e496c579b0c04ac53db7dbcf04b934d00000000000000001801000000000000001e496c579b0c04ac53db7dbcf04b934d0000000000000000)), (AccessPath { address: 1e496c579b0c04ac53db7dbcf04b934d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 184, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1e496c579b0c04ac53db7dbcf04b934d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ba000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a200000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a620b677ffe9a91f24c03c7f69af44a6)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(209cba9aabde7999dd16282cf8672b6bbaa620b677ffe9a91f24c03c7f69af44a601a620b677ffe9a91f24c03c7f69af44a601a620b677ffe9a91f24c03c7f69af44a60000000000000000180000000000000000a620b677ffe9a91f24c03c7f69af44a60000000000000000180100000000000000a620b677ffe9a91f24c03c7f69af44a60000000000000000)), (AccessPath { address: a620b677ffe9a91f24c03c7f69af44a6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 185, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a620b677ffe9a91f24c03c7f69af44a60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00bb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a300000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2092ee8d16312c4dba096572aa23b949e6a2e6cf8a6ce2ad91fd0c649caa1f09ee01a2e6cf8a6ce2ad91fd0c649caa1f09ee01a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000180000000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000180100000000000000a2e6cf8a6ce2ad91fd0c649caa1f09ee0000000000000000)), (AccessPath { address: a2e6cf8a6ce2ad91fd0c649caa1f09ee, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 186, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a2e6cf8a6ce2ad91fd0c649caa1f09ee0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00bc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a400000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d5eda9e6ee3f43280bdda6f9cf95765d)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20541916d315dd5b8c806654ef980461a1d5eda9e6ee3f43280bdda6f9cf95765d01d5eda9e6ee3f43280bdda6f9cf95765d01d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000180000000000000000d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000180100000000000000d5eda9e6ee3f43280bdda6f9cf95765d0000000000000000)), (AccessPath { address: d5eda9e6ee3f43280bdda6f9cf95765d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 187, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d5eda9e6ee3f43280bdda6f9cf95765d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00bd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000057f30f25561d491f96f284bda98f8a)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20fb5f7d6f47b910068402daa3b1dfcce20057f30f25561d491f96f284bda98f8a010057f30f25561d491f96f284bda98f8a010057f30f25561d491f96f284bda98f8a00000000000000001800000000000000000057f30f25561d491f96f284bda98f8a00000000000000001801000000000000000057f30f25561d491f96f284bda98f8a0000000000000000)), (AccessPath { address: 0057f30f25561d491f96f284bda98f8a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 188, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0057f30f25561d491f96f284bda98f8a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00be000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003e2af45915ab14ba48b59376644e40f5)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cd3bc81630e160696f192cfca5574f763e2af45915ab14ba48b59376644e40f5013e2af45915ab14ba48b59376644e40f5013e2af45915ab14ba48b59376644e40f500000000000000001800000000000000003e2af45915ab14ba48b59376644e40f500000000000000001801000000000000003e2af45915ab14ba48b59376644e40f50000000000000000)), (AccessPath { address: 3e2af45915ab14ba48b59376644e40f5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 189, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3e2af45915ab14ba48b59376644e40f50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00bf000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003d970242497f893d311eef5fb1342c3b)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208b022ca8279a77d67c2b9bc6d86daca13d970242497f893d311eef5fb1342c3b013d970242497f893d311eef5fb1342c3b013d970242497f893d311eef5fb1342c3b00000000000000001800000000000000003d970242497f893d311eef5fb1342c3b00000000000000001801000000000000003d970242497f893d311eef5fb1342c3b0000000000000000)), (AccessPath { address: 3d970242497f893d311eef5fb1342c3b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 190, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3d970242497f893d311eef5fb1342c3b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002211046da4b8ba74d20b3e5b28a6baaa)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2024e6f0df8933c58b755dba07fb3988852211046da4b8ba74d20b3e5b28a6baaa012211046da4b8ba74d20b3e5b28a6baaa012211046da4b8ba74d20b3e5b28a6baaa00000000000000001800000000000000002211046da4b8ba74d20b3e5b28a6baaa00000000000000001801000000000000002211046da4b8ba74d20b3e5b28a6baaa0000000000000000)), (AccessPath { address: 2211046da4b8ba74d20b3e5b28a6baaa, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 191, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2211046da4b8ba74d20b3e5b28a6baaa0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(a900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1a900000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006543e6e0e513b678d09f60449e0349bf)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205a8ac20874e75c6a7596901c70bb5a726543e6e0e513b678d09f60449e0349bf016543e6e0e513b678d09f60449e0349bf016543e6e0e513b678d09f60449e0349bf00000000000000001800000000000000006543e6e0e513b678d09f60449e0349bf00000000000000001801000000000000006543e6e0e513b678d09f60449e0349bf0000000000000000)), (AccessPath { address: 6543e6e0e513b678d09f60449e0349bf, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 192, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6543e6e0e513b678d09f60449e0349bf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(aa00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1aa00000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000efe692946cbf356b66d6fbdf32283be2)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202cd12c699fe0f071093dd4b6fabd142eefe692946cbf356b66d6fbdf32283be201efe692946cbf356b66d6fbdf32283be201efe692946cbf356b66d6fbdf32283be20000000000000000180000000000000000efe692946cbf356b66d6fbdf32283be20000000000000000180100000000000000efe692946cbf356b66d6fbdf32283be20000000000000000)), (AccessPath { address: efe692946cbf356b66d6fbdf32283be2, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 193, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "efe692946cbf356b66d6fbdf32283be20600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ab00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ab00000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000936ed062924fb9cba2b0166e5f4104bb)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20400a9a3231ce36c7c08dfb7d79936e0d936ed062924fb9cba2b0166e5f4104bb01936ed062924fb9cba2b0166e5f4104bb01936ed062924fb9cba2b0166e5f4104bb0000000000000000180000000000000000936ed062924fb9cba2b0166e5f4104bb0000000000000000180100000000000000936ed062924fb9cba2b0166e5f4104bb0000000000000000)), (AccessPath { address: 936ed062924fb9cba2b0166e5f4104bb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 194, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "936ed062924fb9cba2b0166e5f4104bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ac00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ac00000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f1a3af01af3cfcf01148b1dfcb6b0093)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207227a4751edb69d5d1943d3900c12898f1a3af01af3cfcf01148b1dfcb6b009301f1a3af01af3cfcf01148b1dfcb6b009301f1a3af01af3cfcf01148b1dfcb6b00930000000000000000180000000000000000f1a3af01af3cfcf01148b1dfcb6b00930000000000000000180100000000000000f1a3af01af3cfcf01148b1dfcb6b00930000000000000000)), (AccessPath { address: f1a3af01af3cfcf01148b1dfcb6b0093, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 195, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f1a3af01af3cfcf01148b1dfcb6b00930600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ad00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ad00000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a877e2c67b134bbe6dfd29953cc41c9d)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20e95c0cdf010324c7501bae027431fb82a877e2c67b134bbe6dfd29953cc41c9d01a877e2c67b134bbe6dfd29953cc41c9d01a877e2c67b134bbe6dfd29953cc41c9d0000000000000000180000000000000000a877e2c67b134bbe6dfd29953cc41c9d0000000000000000180100000000000000a877e2c67b134bbe6dfd29953cc41c9d0000000000000000)), (AccessPath { address: a877e2c67b134bbe6dfd29953cc41c9d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 196, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a877e2c67b134bbe6dfd29953cc41c9d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000276dda1a2decae4e4425f09965d70787)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2011b5fca8f8bf834d68fa916ead04cee9276dda1a2decae4e4425f09965d7078701276dda1a2decae4e4425f09965d7078701276dda1a2decae4e4425f09965d707870000000000000000180000000000000000276dda1a2decae4e4425f09965d707870000000000000000180100000000000000276dda1a2decae4e4425f09965d707870000000000000000)), (AccessPath { address: 276dda1a2decae4e4425f09965d70787, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ae00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ae00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 197, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "276dda1a2decae4e4425f09965d707870600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(af00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1af00000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008706f31b8c3613c8d252d5d408ae929b)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ec8162950fcbb8bcee6fe1aedae5948c8706f31b8c3613c8d252d5d408ae929b018706f31b8c3613c8d252d5d408ae929b018706f31b8c3613c8d252d5d408ae929b00000000000000001800000000000000008706f31b8c3613c8d252d5d408ae929b00000000000000001801000000000000008706f31b8c3613c8d252d5d408ae929b0000000000000000)), (AccessPath { address: 8706f31b8c3613c8d252d5d408ae929b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 198, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8706f31b8c3613c8d252d5d408ae929b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b000000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000885d9862f22c6067dddcabaa635be092)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20763866e2d023ff2de7f04b8505c08a17885d9862f22c6067dddcabaa635be09201885d9862f22c6067dddcabaa635be09201885d9862f22c6067dddcabaa635be0920000000000000000180000000000000000885d9862f22c6067dddcabaa635be0920000000000000000180100000000000000885d9862f22c6067dddcabaa635be0920000000000000000)), (AccessPath { address: 885d9862f22c6067dddcabaa635be092, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 199, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "885d9862f22c6067dddcabaa635be0920600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00c9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000032914277ecd6432f4fed796aaa166e)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bdfeec453c2f8c34e51a86bdfb8e576c0032914277ecd6432f4fed796aaa166e010032914277ecd6432f4fed796aaa166e010032914277ecd6432f4fed796aaa166e00000000000000001800000000000000000032914277ecd6432f4fed796aaa166e00000000000000001801000000000000000032914277ecd6432f4fed796aaa166e0000000000000000)), (AccessPath { address: 0032914277ecd6432f4fed796aaa166e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 200, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0032914277ecd6432f4fed796aaa166e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ca000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b200000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e2d5176b89352e17fbc33a3c8c6fb038)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2021ee81e6f16fef331a987c9cf0ef0e53e2d5176b89352e17fbc33a3c8c6fb03801e2d5176b89352e17fbc33a3c8c6fb03801e2d5176b89352e17fbc33a3c8c6fb0380000000000000000180000000000000000e2d5176b89352e17fbc33a3c8c6fb0380000000000000000180100000000000000e2d5176b89352e17fbc33a3c8c6fb0380000000000000000)), (AccessPath { address: e2d5176b89352e17fbc33a3c8c6fb038, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 201, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e2d5176b89352e17fbc33a3c8c6fb0380600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00cb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b300000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000009f6d3f37cb317ef877f5b46f9c5c7541)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2038daff2db036bb0e33444abe91b83e8e9f6d3f37cb317ef877f5b46f9c5c7541019f6d3f37cb317ef877f5b46f9c5c7541019f6d3f37cb317ef877f5b46f9c5c754100000000000000001800000000000000009f6d3f37cb317ef877f5b46f9c5c754100000000000000001801000000000000009f6d3f37cb317ef877f5b46f9c5c75410000000000000000)), (AccessPath { address: 9f6d3f37cb317ef877f5b46f9c5c7541, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 202, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "9f6d3f37cb317ef877f5b46f9c5c75410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00cc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b400000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e43ca37743c0313c76831b7cc39b40ed)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20c185bfbd182df604e323217fa7494086e43ca37743c0313c76831b7cc39b40ed01e43ca37743c0313c76831b7cc39b40ed01e43ca37743c0313c76831b7cc39b40ed0000000000000000180000000000000000e43ca37743c0313c76831b7cc39b40ed0000000000000000180100000000000000e43ca37743c0313c76831b7cc39b40ed0000000000000000)), (AccessPath { address: e43ca37743c0313c76831b7cc39b40ed, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 203, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e43ca37743c0313c76831b7cc39b40ed0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00cd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003fbf0e4be6eb414b740b5f3fe12b613b)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207500b352f539d92aaf3a6e4c93e8e08f3fbf0e4be6eb414b740b5f3fe12b613b013fbf0e4be6eb414b740b5f3fe12b613b013fbf0e4be6eb414b740b5f3fe12b613b00000000000000001800000000000000003fbf0e4be6eb414b740b5f3fe12b613b00000000000000001801000000000000003fbf0e4be6eb414b740b5f3fe12b613b0000000000000000)), (AccessPath { address: 3fbf0e4be6eb414b740b5f3fe12b613b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 204, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3fbf0e4be6eb414b740b5f3fe12b613b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ce000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002417ff97c6bd0d992ed5a5ccc65ccfd9)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f10af8c8a23cb79e0139a626cb47db5f2417ff97c6bd0d992ed5a5ccc65ccfd9012417ff97c6bd0d992ed5a5ccc65ccfd9012417ff97c6bd0d992ed5a5ccc65ccfd900000000000000001800000000000000002417ff97c6bd0d992ed5a5ccc65ccfd900000000000000001801000000000000002417ff97c6bd0d992ed5a5ccc65ccfd90000000000000000)), (AccessPath { address: 2417ff97c6bd0d992ed5a5ccc65ccfd9, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 205, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2417ff97c6bd0d992ed5a5ccc65ccfd90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00cf000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001aff2d50fcc7b3d92694de841376564f)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205a1084a10c6e2e1e167e40a6c58dc1f31aff2d50fcc7b3d92694de841376564f011aff2d50fcc7b3d92694de841376564f011aff2d50fcc7b3d92694de841376564f00000000000000001800000000000000001aff2d50fcc7b3d92694de841376564f00000000000000001801000000000000001aff2d50fcc7b3d92694de841376564f0000000000000000)), (AccessPath { address: 1aff2d50fcc7b3d92694de841376564f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b700000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 206, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1aff2d50fcc7b3d92694de841376564f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000a2cb534c8fd987369dab73c26a4c6df)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207dca773fe91869ef099e91c0dd3a4a390a2cb534c8fd987369dab73c26a4c6df010a2cb534c8fd987369dab73c26a4c6df010a2cb534c8fd987369dab73c26a4c6df00000000000000001800000000000000000a2cb534c8fd987369dab73c26a4c6df00000000000000001801000000000000000a2cb534c8fd987369dab73c26a4c6df0000000000000000)), (AccessPath { address: 0a2cb534c8fd987369dab73c26a4c6df, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 207, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0a2cb534c8fd987369dab73c26a4c6df0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(b900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1b900000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000096faaa1c8cf58bdb0c0083dc87c2155d)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20a1968c863ec0e956504ea22f0d08240696faaa1c8cf58bdb0c0083dc87c2155d0196faaa1c8cf58bdb0c0083dc87c2155d0196faaa1c8cf58bdb0c0083dc87c2155d000000000000000018000000000000000096faaa1c8cf58bdb0c0083dc87c2155d000000000000000018010000000000000096faaa1c8cf58bdb0c0083dc87c2155d0000000000000000)), (AccessPath { address: 96faaa1c8cf58bdb0c0083dc87c2155d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 208, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "96faaa1c8cf58bdb0c0083dc87c2155d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ba00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ba00000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bb5208a2dd01d35a5d821f95c6b88183)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20df064230ed09de155c52f6c5f9d75a12bb5208a2dd01d35a5d821f95c6b8818301bb5208a2dd01d35a5d821f95c6b8818301bb5208a2dd01d35a5d821f95c6b881830000000000000000180000000000000000bb5208a2dd01d35a5d821f95c6b881830000000000000000180100000000000000bb5208a2dd01d35a5d821f95c6b881830000000000000000)), (AccessPath { address: bb5208a2dd01d35a5d821f95c6b88183, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 209, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bb5208a2dd01d35a5d821f95c6b881830600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(bb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bb00000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007be3d209c11406126e5d34afe98d65e1)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20872bb56cf743e1f31670938c4b0f61307be3d209c11406126e5d34afe98d65e1017be3d209c11406126e5d34afe98d65e1017be3d209c11406126e5d34afe98d65e100000000000000001800000000000000007be3d209c11406126e5d34afe98d65e100000000000000001801000000000000007be3d209c11406126e5d34afe98d65e10000000000000000)), (AccessPath { address: 7be3d209c11406126e5d34afe98d65e1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 210, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7be3d209c11406126e5d34afe98d65e10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(bc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bc00000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000aebe883fff823f57e0c234ab0199fada)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f8e536fdf919fc558e19d73edb88197baebe883fff823f57e0c234ab0199fada01aebe883fff823f57e0c234ab0199fada01aebe883fff823f57e0c234ab0199fada0000000000000000180000000000000000aebe883fff823f57e0c234ab0199fada0000000000000000180100000000000000aebe883fff823f57e0c234ab0199fada0000000000000000)), (AccessPath { address: aebe883fff823f57e0c234ab0199fada, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 211, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "aebe883fff823f57e0c234ab0199fada0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(bd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bd00000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e3b5a034b2844346c05d292c9877204d)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2021020fe4809488101405a69c3057fb2ce3b5a034b2844346c05d292c9877204d01e3b5a034b2844346c05d292c9877204d01e3b5a034b2844346c05d292c9877204d0000000000000000180000000000000000e3b5a034b2844346c05d292c9877204d0000000000000000180100000000000000e3b5a034b2844346c05d292c9877204d0000000000000000)), (AccessPath { address: e3b5a034b2844346c05d292c9877204d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 212, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e3b5a034b2844346c05d292c9877204d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(be00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1be00000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c8b78c34495e7c3eef36b3d29df6a5ca)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cc47f1ddf69f36f95428dc0303d58888c8b78c34495e7c3eef36b3d29df6a5ca01c8b78c34495e7c3eef36b3d29df6a5ca01c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000180000000000000000c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000180100000000000000c8b78c34495e7c3eef36b3d29df6a5ca0000000000000000)), (AccessPath { address: c8b78c34495e7c3eef36b3d29df6a5ca, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 213, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c8b78c34495e7c3eef36b3d29df6a5ca0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(bf00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1bf00000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000088d4a94919c155ef0ac7933b615d70cb)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20debb333b2022d95114b9111dcd12a82c88d4a94919c155ef0ac7933b615d70cb0188d4a94919c155ef0ac7933b615d70cb0188d4a94919c155ef0ac7933b615d70cb000000000000000018000000000000000088d4a94919c155ef0ac7933b615d70cb000000000000000018010000000000000088d4a94919c155ef0ac7933b615d70cb0000000000000000)), (AccessPath { address: 88d4a94919c155ef0ac7933b615d70cb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 214, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "88d4a94919c155ef0ac7933b615d70cb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000026ce2493724fdfea9e95593f92d43bc9)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b42506c29e1385d4ae4ff2ad63ddfb9f26ce2493724fdfea9e95593f92d43bc90126ce2493724fdfea9e95593f92d43bc90126ce2493724fdfea9e95593f92d43bc9000000000000000018000000000000000026ce2493724fdfea9e95593f92d43bc9000000000000000018010000000000000026ce2493724fdfea9e95593f92d43bc90000000000000000)), (AccessPath { address: 26ce2493724fdfea9e95593f92d43bc9, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 215, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "26ce2493724fdfea9e95593f92d43bc90600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00d9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c100000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000fd5aa9e2b768e4e4740921b6d8b2a76e)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20336f64d9ced01da6ea088656d8793234fd5aa9e2b768e4e4740921b6d8b2a76e01fd5aa9e2b768e4e4740921b6d8b2a76e01fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000180000000000000000fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000180100000000000000fd5aa9e2b768e4e4740921b6d8b2a76e0000000000000000)), (AccessPath { address: fd5aa9e2b768e4e4740921b6d8b2a76e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 216, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "fd5aa9e2b768e4e4740921b6d8b2a76e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00da000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c200000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000952ab40d091609334f2952c6c9df8797)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2064f20d46f6704f084aaf7212e640d493952ab40d091609334f2952c6c9df879701952ab40d091609334f2952c6c9df879701952ab40d091609334f2952c6c9df87970000000000000000180000000000000000952ab40d091609334f2952c6c9df87970000000000000000180100000000000000952ab40d091609334f2952c6c9df87970000000000000000)), (AccessPath { address: 952ab40d091609334f2952c6c9df8797, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 217, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "952ab40d091609334f2952c6c9df87970600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00db000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c300000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000851933a21e6033233f3b0a2045a1b78f)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20384778754b4624b6ea9c7cc1a4919c8d851933a21e6033233f3b0a2045a1b78f01851933a21e6033233f3b0a2045a1b78f01851933a21e6033233f3b0a2045a1b78f0000000000000000180000000000000000851933a21e6033233f3b0a2045a1b78f0000000000000000180100000000000000851933a21e6033233f3b0a2045a1b78f0000000000000000)), (AccessPath { address: 851933a21e6033233f3b0a2045a1b78f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 218, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "851933a21e6033233f3b0a2045a1b78f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00dc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000b0d80343c78fdee761b4548cb78cd43)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208cf6396118e337e011002aaf781cd9350b0d80343c78fdee761b4548cb78cd43010b0d80343c78fdee761b4548cb78cd43010b0d80343c78fdee761b4548cb78cd4300000000000000001800000000000000000b0d80343c78fdee761b4548cb78cd4300000000000000001801000000000000000b0d80343c78fdee761b4548cb78cd430000000000000000)), (AccessPath { address: 0b0d80343c78fdee761b4548cb78cd43, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c400000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 219, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0b0d80343c78fdee761b4548cb78cd430600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00dd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002307680e487dac6953be08c9ee8448bb)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2061f317d2586e861e76c4ab015f4cea962307680e487dac6953be08c9ee8448bb012307680e487dac6953be08c9ee8448bb012307680e487dac6953be08c9ee8448bb00000000000000001800000000000000002307680e487dac6953be08c9ee8448bb00000000000000001801000000000000002307680e487dac6953be08c9ee8448bb0000000000000000)), (AccessPath { address: 2307680e487dac6953be08c9ee8448bb, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 220, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2307680e487dac6953be08c9ee8448bb0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00de000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c600000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000077559db426d139cd8abcce3609fbebaf)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205214aa9fef2b0bb4e9d0562b5555908d77559db426d139cd8abcce3609fbebaf0177559db426d139cd8abcce3609fbebaf0177559db426d139cd8abcce3609fbebaf000000000000000018000000000000000077559db426d139cd8abcce3609fbebaf000000000000000018010000000000000077559db426d139cd8abcce3609fbebaf0000000000000000)), (AccessPath { address: 77559db426d139cd8abcce3609fbebaf, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 221, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "77559db426d139cd8abcce3609fbebaf0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00df000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c700000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b525bad3eb698eb4a4b10d895d9ed90d)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201bfd65f39503e0a05efccf3e5a06497ab525bad3eb698eb4a4b10d895d9ed90d01b525bad3eb698eb4a4b10d895d9ed90d01b525bad3eb698eb4a4b10d895d9ed90d0000000000000000180000000000000000b525bad3eb698eb4a4b10d895d9ed90d0000000000000000180100000000000000b525bad3eb698eb4a4b10d895d9ed90d0000000000000000)), (AccessPath { address: b525bad3eb698eb4a4b10d895d9ed90d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 222, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b525bad3eb698eb4a4b10d895d9ed90d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c800000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d75870f00b2075b4ddcf2da85c906bf0)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ead9c65b56f8d07c7c3df5d2350b1b6ed75870f00b2075b4ddcf2da85c906bf001d75870f00b2075b4ddcf2da85c906bf001d75870f00b2075b4ddcf2da85c906bf00000000000000000180000000000000000d75870f00b2075b4ddcf2da85c906bf00000000000000000180100000000000000d75870f00b2075b4ddcf2da85c906bf00000000000000000)), (AccessPath { address: d75870f00b2075b4ddcf2da85c906bf0, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 223, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d75870f00b2075b4ddcf2da85c906bf00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001a401b4375a3c425313bc9009a047167)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2086366a06097042baff1c1f49cfa05d691a401b4375a3c425313bc9009a047167011a401b4375a3c425313bc9009a047167011a401b4375a3c425313bc9009a04716700000000000000001800000000000000001a401b4375a3c425313bc9009a04716700000000000000001801000000000000001a401b4375a3c425313bc9009a0471670000000000000000)), (AccessPath { address: 1a401b4375a3c425313bc9009a047167, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(c900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1c900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 224, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1a401b4375a3c425313bc9009a0471670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ca00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ca00000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d552b333c494f537dddbc1a8166a0ac1)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20334d42c3cc66c7828bc936a6df86f3f6d552b333c494f537dddbc1a8166a0ac101d552b333c494f537dddbc1a8166a0ac101d552b333c494f537dddbc1a8166a0ac10000000000000000180000000000000000d552b333c494f537dddbc1a8166a0ac10000000000000000180100000000000000d552b333c494f537dddbc1a8166a0ac10000000000000000)), (AccessPath { address: d552b333c494f537dddbc1a8166a0ac1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 225, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d552b333c494f537dddbc1a8166a0ac10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000314ed7a6783a8b97dd1d0bf52a4e21f0)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20584ee50d1ee4d0f62cd6990888e0f3f1314ed7a6783a8b97dd1d0bf52a4e21f001314ed7a6783a8b97dd1d0bf52a4e21f001314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000180000000000000000314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000180100000000000000314ed7a6783a8b97dd1d0bf52a4e21f00000000000000000)), (AccessPath { address: 314ed7a6783a8b97dd1d0bf52a4e21f0, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(cb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cb00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 226, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "314ed7a6783a8b97dd1d0bf52a4e21f00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(cc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cc00000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005e0655e98dc8bfadfb6388628cbd247f)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20737f7e112f2496fc9b74162b7da1d9d95e0655e98dc8bfadfb6388628cbd247f015e0655e98dc8bfadfb6388628cbd247f015e0655e98dc8bfadfb6388628cbd247f00000000000000001800000000000000005e0655e98dc8bfadfb6388628cbd247f00000000000000001801000000000000005e0655e98dc8bfadfb6388628cbd247f0000000000000000)), (AccessPath { address: 5e0655e98dc8bfadfb6388628cbd247f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 227, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5e0655e98dc8bfadfb6388628cbd247f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001b567248bca3f083d80bd96c768245a1)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206becc175c2a6a1de3eafe5b68b2f09731b567248bca3f083d80bd96c768245a1011b567248bca3f083d80bd96c768245a1011b567248bca3f083d80bd96c768245a100000000000000001800000000000000001b567248bca3f083d80bd96c768245a100000000000000001801000000000000001b567248bca3f083d80bd96c768245a10000000000000000)), (AccessPath { address: 1b567248bca3f083d80bd96c768245a1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(cd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cd00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 228, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1b567248bca3f083d80bd96c768245a10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ce00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ce00000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f0036e42f634572bdf355a1fe6e26e3e)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204d07387b139e1c0652483fd0778fd0d7f0036e42f634572bdf355a1fe6e26e3e01f0036e42f634572bdf355a1fe6e26e3e01f0036e42f634572bdf355a1fe6e26e3e0000000000000000180000000000000000f0036e42f634572bdf355a1fe6e26e3e0000000000000000180100000000000000f0036e42f634572bdf355a1fe6e26e3e0000000000000000)), (AccessPath { address: f0036e42f634572bdf355a1fe6e26e3e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 229, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f0036e42f634572bdf355a1fe6e26e3e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(cf00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1cf00000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000058420ab20222ca72bfa68f3ee5a841ef)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201a4c67f870ca54f32117f7dcfec4d39658420ab20222ca72bfa68f3ee5a841ef0158420ab20222ca72bfa68f3ee5a841ef0158420ab20222ca72bfa68f3ee5a841ef000000000000000018000000000000000058420ab20222ca72bfa68f3ee5a841ef000000000000000018010000000000000058420ab20222ca72bfa68f3ee5a841ef0000000000000000)), (AccessPath { address: 58420ab20222ca72bfa68f3ee5a841ef, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 230, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "58420ab20222ca72bfa68f3ee5a841ef0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000004095c35cc25b3b0d6c17abfc5697b11e)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b6dbb0f6063161a4cea3d77086ca47464095c35cc25b3b0d6c17abfc5697b11e014095c35cc25b3b0d6c17abfc5697b11e014095c35cc25b3b0d6c17abfc5697b11e00000000000000001800000000000000004095c35cc25b3b0d6c17abfc5697b11e00000000000000001801000000000000004095c35cc25b3b0d6c17abfc5697b11e0000000000000000)), (AccessPath { address: 4095c35cc25b3b0d6c17abfc5697b11e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 231, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4095c35cc25b3b0d6c17abfc5697b11e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00e9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003936a227f7c50a2b11a96aa63ee5d681)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206d1bfb1c8c7b3dc66bca8ab837788b193936a227f7c50a2b11a96aa63ee5d681013936a227f7c50a2b11a96aa63ee5d681013936a227f7c50a2b11a96aa63ee5d68100000000000000001800000000000000003936a227f7c50a2b11a96aa63ee5d68100000000000000001801000000000000003936a227f7c50a2b11a96aa63ee5d6810000000000000000)), (AccessPath { address: 3936a227f7c50a2b11a96aa63ee5d681, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d100000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 232, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3936a227f7c50a2b11a96aa63ee5d6810600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ea000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d200000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e74c4e03b0afea7811b8c1217cda8dff)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2084d570a089786c0d3d0ec12034f55c3de74c4e03b0afea7811b8c1217cda8dff01e74c4e03b0afea7811b8c1217cda8dff01e74c4e03b0afea7811b8c1217cda8dff0000000000000000180000000000000000e74c4e03b0afea7811b8c1217cda8dff0000000000000000180100000000000000e74c4e03b0afea7811b8c1217cda8dff0000000000000000)), (AccessPath { address: e74c4e03b0afea7811b8c1217cda8dff, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 233, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e74c4e03b0afea7811b8c1217cda8dff0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00eb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d300000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000c9c26d8ac3cacdded7f424f54e026188)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206f6a245e395f09512908cd862c3f09fac9c26d8ac3cacdded7f424f54e02618801c9c26d8ac3cacdded7f424f54e02618801c9c26d8ac3cacdded7f424f54e0261880000000000000000180000000000000000c9c26d8ac3cacdded7f424f54e0261880000000000000000180100000000000000c9c26d8ac3cacdded7f424f54e0261880000000000000000)), (AccessPath { address: c9c26d8ac3cacdded7f424f54e026188, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 234, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "c9c26d8ac3cacdded7f424f54e0261880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ec000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d400000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007dffec101ae7114c1a15741081c8cb89)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d5d902eedbc92ec5137b79f4b63c69557dffec101ae7114c1a15741081c8cb89017dffec101ae7114c1a15741081c8cb89017dffec101ae7114c1a15741081c8cb8900000000000000001800000000000000007dffec101ae7114c1a15741081c8cb8900000000000000001801000000000000007dffec101ae7114c1a15741081c8cb890000000000000000)), (AccessPath { address: 7dffec101ae7114c1a15741081c8cb89, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 235, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7dffec101ae7114c1a15741081c8cb890600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ed000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d500000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000649dfd6317b400cdcf776a3d6dd7576c)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20431a93324b32f290b8cdf578724eba56649dfd6317b400cdcf776a3d6dd7576c01649dfd6317b400cdcf776a3d6dd7576c01649dfd6317b400cdcf776a3d6dd7576c0000000000000000180000000000000000649dfd6317b400cdcf776a3d6dd7576c0000000000000000180100000000000000649dfd6317b400cdcf776a3d6dd7576c0000000000000000)), (AccessPath { address: 649dfd6317b400cdcf776a3d6dd7576c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 236, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "649dfd6317b400cdcf776a3d6dd7576c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ee000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d600000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204cb41564bddeb98359f9250f60fe6b1796b2b2714b20ffd7d898f0f6dbc0ef2e0196b2b2714b20ffd7d898f0f6dbc0ef2e0196b2b2714b20ffd7d898f0f6dbc0ef2e000000000000000018000000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e000000000000000018010000000000000096b2b2714b20ffd7d898f0f6dbc0ef2e0000000000000000)), (AccessPath { address: 96b2b2714b20ffd7d898f0f6dbc0ef2e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 237, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "96b2b2714b20ffd7d898f0f6dbc0ef2e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ef000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d700000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000dd5342be6e0af550e74f7c9677f8ef5d)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208d4cce8cbbc233b5d4a964e1b386f3bfdd5342be6e0af550e74f7c9677f8ef5d01dd5342be6e0af550e74f7c9677f8ef5d01dd5342be6e0af550e74f7c9677f8ef5d0000000000000000180000000000000000dd5342be6e0af550e74f7c9677f8ef5d0000000000000000180100000000000000dd5342be6e0af550e74f7c9677f8ef5d0000000000000000)), (AccessPath { address: dd5342be6e0af550e74f7c9677f8ef5d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 238, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "dd5342be6e0af550e74f7c9677f8ef5d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f0000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d800000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b98a067a11442f61adaf182b7cf2fee9bbe0a1295aa5912cacb9b5fb7e1d19ae01bbe0a1295aa5912cacb9b5fb7e1d19ae01bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000180000000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000180100000000000000bbe0a1295aa5912cacb9b5fb7e1d19ae0000000000000000)), (AccessPath { address: bbe0a1295aa5912cacb9b5fb7e1d19ae, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 239, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bbe0a1295aa5912cacb9b5fb7e1d19ae0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f1000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(d900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1d900000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005f2696bdb18b96742df37df9292e01f3)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cc36a5ae2c7f48fae059c7e3d83866e95f2696bdb18b96742df37df9292e01f3015f2696bdb18b96742df37df9292e01f3015f2696bdb18b96742df37df9292e01f300000000000000001800000000000000005f2696bdb18b96742df37df9292e01f300000000000000001801000000000000005f2696bdb18b96742df37df9292e01f30000000000000000)), (AccessPath { address: 5f2696bdb18b96742df37df9292e01f3, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 240, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5f2696bdb18b96742df37df9292e01f30600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f2000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(da00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1da00000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000074b64c0c6942b1222562ddf0d5844388)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f9f8a9bf4260e155302cf4deefda867374b64c0c6942b1222562ddf0d58443880174b64c0c6942b1222562ddf0d58443880174b64c0c6942b1222562ddf0d5844388000000000000000018000000000000000074b64c0c6942b1222562ddf0d5844388000000000000000018010000000000000074b64c0c6942b1222562ddf0d58443880000000000000000)), (AccessPath { address: 74b64c0c6942b1222562ddf0d5844388, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 241, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "74b64c0c6942b1222562ddf0d58443880600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f3000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000051284f46e73efbc9063583f4782707a5)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20cdb70393230e3bb3c2e0003edba2de2651284f46e73efbc9063583f4782707a50151284f46e73efbc9063583f4782707a50151284f46e73efbc9063583f4782707a5000000000000000018000000000000000051284f46e73efbc9063583f4782707a5000000000000000018010000000000000051284f46e73efbc9063583f4782707a50000000000000000)), (AccessPath { address: 51284f46e73efbc9063583f4782707a5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(db00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1db00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 242, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "51284f46e73efbc9063583f4782707a50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f4000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000032f8afb94beea322d3b61781c994117b)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20789bc05942373c27a8378d039b226aa532f8afb94beea322d3b61781c994117b0132f8afb94beea322d3b61781c994117b0132f8afb94beea322d3b61781c994117b000000000000000018000000000000000032f8afb94beea322d3b61781c994117b000000000000000018010000000000000032f8afb94beea322d3b61781c994117b0000000000000000)), (AccessPath { address: 32f8afb94beea322d3b61781c994117b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(dc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1dc00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 243, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "32f8afb94beea322d3b61781c994117b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f5000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(dd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1dd00000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006fa125ee17ddc74ed1f00da745c1828d)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b8eab9c0561fcaafda2ce4a36a0589056fa125ee17ddc74ed1f00da745c1828d016fa125ee17ddc74ed1f00da745c1828d016fa125ee17ddc74ed1f00da745c1828d00000000000000001800000000000000006fa125ee17ddc74ed1f00da745c1828d00000000000000001801000000000000006fa125ee17ddc74ed1f00da745c1828d0000000000000000)), (AccessPath { address: 6fa125ee17ddc74ed1f00da745c1828d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 244, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6fa125ee17ddc74ed1f00da745c1828d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f6000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000020d830687585167e4cda1847fb25af7d)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20bb81d108fc344f8357785cc2824c0f0d20d830687585167e4cda1847fb25af7d0120d830687585167e4cda1847fb25af7d0120d830687585167e4cda1847fb25af7d000000000000000018000000000000000020d830687585167e4cda1847fb25af7d000000000000000018010000000000000020d830687585167e4cda1847fb25af7d0000000000000000)), (AccessPath { address: 20d830687585167e4cda1847fb25af7d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(de00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1de00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 245, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "20d830687585167e4cda1847fb25af7d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f7000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002d2b3afdd656cb64ecd68061f025130c)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207b46a36cd748986777b11a0b82b9a7812d2b3afdd656cb64ecd68061f025130c012d2b3afdd656cb64ecd68061f025130c012d2b3afdd656cb64ecd68061f025130c00000000000000001800000000000000002d2b3afdd656cb64ecd68061f025130c00000000000000001801000000000000002d2b3afdd656cb64ecd68061f025130c0000000000000000)), (AccessPath { address: 2d2b3afdd656cb64ecd68061f025130c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(df00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1df00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 246, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2d2b3afdd656cb64ecd68061f025130c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f8000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e000000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d9c0b673996aaf9357ee345be95f6e8f)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(200cb33b91ce5031a80b32c06c621ef1a0d9c0b673996aaf9357ee345be95f6e8f01d9c0b673996aaf9357ee345be95f6e8f01d9c0b673996aaf9357ee345be95f6e8f0000000000000000180000000000000000d9c0b673996aaf9357ee345be95f6e8f0000000000000000180100000000000000d9c0b673996aaf9357ee345be95f6e8f0000000000000000)), (AccessPath { address: d9c0b673996aaf9357ee345be95f6e8f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 247, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9c0b673996aaf9357ee345be95f6e8f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00f9000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e100000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b4d2e481047df37180f18abe22835d13)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20306821708b0af71b0266468d2bc5282ab4d2e481047df37180f18abe22835d1301b4d2e481047df37180f18abe22835d1301b4d2e481047df37180f18abe22835d130000000000000000180000000000000000b4d2e481047df37180f18abe22835d130000000000000000180100000000000000b4d2e481047df37180f18abe22835d130000000000000000)), (AccessPath { address: b4d2e481047df37180f18abe22835d13, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 248, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b4d2e481047df37180f18abe22835d130600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00fa000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e200000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000008beb41dcdae03337bb629a2ac423ce6f)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2007513514bcdc3beacdb600281923af188beb41dcdae03337bb629a2ac423ce6f018beb41dcdae03337bb629a2ac423ce6f018beb41dcdae03337bb629a2ac423ce6f00000000000000001800000000000000008beb41dcdae03337bb629a2ac423ce6f00000000000000001801000000000000008beb41dcdae03337bb629a2ac423ce6f0000000000000000)), (AccessPath { address: 8beb41dcdae03337bb629a2ac423ce6f, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 249, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "8beb41dcdae03337bb629a2ac423ce6f0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00fb000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003bce5f7cdeb5dddded00aa75ea5a3641)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2086795bd6e6ea8809502e69537b00d5963bce5f7cdeb5dddded00aa75ea5a3641013bce5f7cdeb5dddded00aa75ea5a3641013bce5f7cdeb5dddded00aa75ea5a364100000000000000001800000000000000003bce5f7cdeb5dddded00aa75ea5a364100000000000000001801000000000000003bce5f7cdeb5dddded00aa75ea5a36410000000000000000)), (AccessPath { address: 3bce5f7cdeb5dddded00aa75ea5a3641, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e300000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 250, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3bce5f7cdeb5dddded00aa75ea5a36410600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00fc000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e400000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d61973b1426dcfd019ea0b876a427818)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(207859b4240ff63d4308920d2bf3248da7d61973b1426dcfd019ea0b876a42781801d61973b1426dcfd019ea0b876a42781801d61973b1426dcfd019ea0b876a4278180000000000000000180000000000000000d61973b1426dcfd019ea0b876a4278180000000000000000180100000000000000d61973b1426dcfd019ea0b876a4278180000000000000000)), (AccessPath { address: d61973b1426dcfd019ea0b876a427818, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 251, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d61973b1426dcfd019ea0b876a4278180600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00fd000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002edfe021fc0ecb479372c3ca7c2e4501)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203dfa14cf163a9bc99ba9cde87fadd5ae2edfe021fc0ecb479372c3ca7c2e4501012edfe021fc0ecb479372c3ca7c2e4501012edfe021fc0ecb479372c3ca7c2e450100000000000000001800000000000000002edfe021fc0ecb479372c3ca7c2e450100000000000000001801000000000000002edfe021fc0ecb479372c3ca7c2e45010000000000000000)), (AccessPath { address: 2edfe021fc0ecb479372c3ca7c2e4501, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 252, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2edfe021fc0ecb479372c3ca7c2e45010600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00fe000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000003d315c97226a518ec509ba4637eaec0)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b60599fe3379eb3d7fa333efaf33011003d315c97226a518ec509ba4637eaec00103d315c97226a518ec509ba4637eaec00103d315c97226a518ec509ba4637eaec0000000000000000018000000000000000003d315c97226a518ec509ba4637eaec0000000000000000018010000000000000003d315c97226a518ec509ba4637eaec00000000000000000)), (AccessPath { address: 03d315c97226a518ec509ba4637eaec0, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 253, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "03d315c97226a518ec509ba4637eaec00600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(00ff000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e700000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000b0dd377e982e561506786b7385fa32ec)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2027ff4de703ca8c8f2e7eb81231557603b0dd377e982e561506786b7385fa32ec01b0dd377e982e561506786b7385fa32ec01b0dd377e982e561506786b7385fa32ec0000000000000000180000000000000000b0dd377e982e561506786b7385fa32ec0000000000000000180100000000000000b0dd377e982e561506786b7385fa32ec0000000000000000)), (AccessPath { address: b0dd377e982e561506786b7385fa32ec, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 254, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "b0dd377e982e561506786b7385fa32ec0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0000010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000506a595344bb2a9e2bd13abcf31aac37)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205fcc27350f9cee95fdb64305dab8c831506a595344bb2a9e2bd13abcf31aac3701506a595344bb2a9e2bd13abcf31aac3701506a595344bb2a9e2bd13abcf31aac370000000000000000180000000000000000506a595344bb2a9e2bd13abcf31aac370000000000000000180100000000000000506a595344bb2a9e2bd13abcf31aac370000000000000000)), (AccessPath { address: 506a595344bb2a9e2bd13abcf31aac37, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 255, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "506a595344bb2a9e2bd13abcf31aac370600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0001010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002637d6609fdd6b29abc4776356f47736)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2002add1308a566b49937d29c9cbb8c8482637d6609fdd6b29abc4776356f47736012637d6609fdd6b29abc4776356f47736012637d6609fdd6b29abc4776356f4773600000000000000001800000000000000002637d6609fdd6b29abc4776356f4773600000000000000001801000000000000002637d6609fdd6b29abc4776356f477360000000000000000)), (AccessPath { address: 2637d6609fdd6b29abc4776356f47736, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(e900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1e900000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 256, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2637d6609fdd6b29abc4776356f477360600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0002010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ea00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ea00000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b0c00d94418838f91c0708fb38ee84c6cc0fdf2f8e9d841ae6a0fc181b311d5e01cc0fdf2f8e9d841ae6a0fc181b311d5e01cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000180000000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000180100000000000000cc0fdf2f8e9d841ae6a0fc181b311d5e0000000000000000)), (AccessPath { address: cc0fdf2f8e9d841ae6a0fc181b311d5e, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 257, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "cc0fdf2f8e9d841ae6a0fc181b311d5e0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0003010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(eb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1eb00000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000ef667f203781c5a864e493c030617396)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ffb1dba1486d294e464b03581dfbc2a4ef667f203781c5a864e493c03061739601ef667f203781c5a864e493c03061739601ef667f203781c5a864e493c0306173960000000000000000180000000000000000ef667f203781c5a864e493c0306173960000000000000000180100000000000000ef667f203781c5a864e493c0306173960000000000000000)), (AccessPath { address: ef667f203781c5a864e493c030617396, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 258, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "ef667f203781c5a864e493c0306173960600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0004010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ec00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ec00000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000054fa74659111dc9af7583bb04d83c287)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2066bbc1f5904a316ad32c011c315048c754fa74659111dc9af7583bb04d83c2870154fa74659111dc9af7583bb04d83c2870154fa74659111dc9af7583bb04d83c287000000000000000018000000000000000054fa74659111dc9af7583bb04d83c287000000000000000018010000000000000054fa74659111dc9af7583bb04d83c2870000000000000000)), (AccessPath { address: 54fa74659111dc9af7583bb04d83c287, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 259, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "54fa74659111dc9af7583bb04d83c2870600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0005010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001a5520483ac83209c5cdf70604802198)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204aeea0e9d10e68c026577ae7dc199b4f1a5520483ac83209c5cdf70604802198011a5520483ac83209c5cdf70604802198011a5520483ac83209c5cdf7060480219800000000000000001800000000000000001a5520483ac83209c5cdf7060480219800000000000000001801000000000000001a5520483ac83209c5cdf706048021980000000000000000)), (AccessPath { address: 1a5520483ac83209c5cdf70604802198, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ed00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ed00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 260, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1a5520483ac83209c5cdf706048021980600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0006010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ee00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ee00000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000007286e825296a5c779da7532825db017a)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202bc836610f02bdc264d4d4fafeefe8c17286e825296a5c779da7532825db017a017286e825296a5c779da7532825db017a017286e825296a5c779da7532825db017a00000000000000001800000000000000007286e825296a5c779da7532825db017a00000000000000001801000000000000007286e825296a5c779da7532825db017a0000000000000000)), (AccessPath { address: 7286e825296a5c779da7532825db017a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 261, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "7286e825296a5c779da7532825db017a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0007010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005224304f1f9cae6b9640f714bcfede5b)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208faeec6b93d9e386e91c7cb21faaf43f5224304f1f9cae6b9640f714bcfede5b015224304f1f9cae6b9640f714bcfede5b015224304f1f9cae6b9640f714bcfede5b00000000000000001800000000000000005224304f1f9cae6b9640f714bcfede5b00000000000000001801000000000000005224304f1f9cae6b9640f714bcfede5b0000000000000000)), (AccessPath { address: 5224304f1f9cae6b9640f714bcfede5b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ef00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ef00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 262, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5224304f1f9cae6b9640f714bcfede5b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0008010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000003a3d00266e8cc98a0b0d96d404c67302)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205a58280e5aaf38fa74afe84e16ea926e3a3d00266e8cc98a0b0d96d404c67302013a3d00266e8cc98a0b0d96d404c67302013a3d00266e8cc98a0b0d96d404c6730200000000000000001800000000000000003a3d00266e8cc98a0b0d96d404c6730200000000000000001801000000000000003a3d00266e8cc98a0b0d96d404c673020000000000000000)), (AccessPath { address: 3a3d00266e8cc98a0b0d96d404c67302, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 263, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "3a3d00266e8cc98a0b0d96d404c673020600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0009010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f100000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d4ce913b40c06b4a6da3ad4be1ba9f52)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2010cbba373ab357d7b016b60d18f6e4e3d4ce913b40c06b4a6da3ad4be1ba9f5201d4ce913b40c06b4a6da3ad4be1ba9f5201d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000180000000000000000d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000180100000000000000d4ce913b40c06b4a6da3ad4be1ba9f520000000000000000)), (AccessPath { address: d4ce913b40c06b4a6da3ad4be1ba9f52, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 264, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d4ce913b40c06b4a6da3ad4be1ba9f520600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000a010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f200000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f200000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000d9fc6954806cf0bfd786e0906e0463c6)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20694887d0056375bc961130f381936280d9fc6954806cf0bfd786e0906e0463c601d9fc6954806cf0bfd786e0906e0463c601d9fc6954806cf0bfd786e0906e0463c60000000000000000180000000000000000d9fc6954806cf0bfd786e0906e0463c60000000000000000180100000000000000d9fc6954806cf0bfd786e0906e0463c60000000000000000)), (AccessPath { address: d9fc6954806cf0bfd786e0906e0463c6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 265, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "d9fc6954806cf0bfd786e0906e0463c60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000b010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f300000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f300000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a4b2abccbe2060373336e6f97679b85c)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(206dd5a73576ad77500478a2aab5f656b6a4b2abccbe2060373336e6f97679b85c01a4b2abccbe2060373336e6f97679b85c01a4b2abccbe2060373336e6f97679b85c0000000000000000180000000000000000a4b2abccbe2060373336e6f97679b85c0000000000000000180100000000000000a4b2abccbe2060373336e6f97679b85c0000000000000000)), (AccessPath { address: a4b2abccbe2060373336e6f97679b85c, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 266, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a4b2abccbe2060373336e6f97679b85c0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000c010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f400000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f400000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000f493803322a1a4d5557e023e2aceb133)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2018d865f0ef6f264184b718b957c9067ef493803322a1a4d5557e023e2aceb13301f493803322a1a4d5557e023e2aceb13301f493803322a1a4d5557e023e2aceb1330000000000000000180000000000000000f493803322a1a4d5557e023e2aceb1330000000000000000180100000000000000f493803322a1a4d5557e023e2aceb1330000000000000000)), (AccessPath { address: f493803322a1a4d5557e023e2aceb133, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 267, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "f493803322a1a4d5557e023e2aceb1330600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000d010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000002904008f54acf50441b365bccc68f28b)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20ff31b78cdadb3d57c0dc2b4ddbe844b92904008f54acf50441b365bccc68f28b012904008f54acf50441b365bccc68f28b012904008f54acf50441b365bccc68f28b00000000000000001800000000000000002904008f54acf50441b365bccc68f28b00000000000000001801000000000000002904008f54acf50441b365bccc68f28b0000000000000000)), (AccessPath { address: 2904008f54acf50441b365bccc68f28b, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f500000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 268, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "2904008f54acf50441b365bccc68f28b0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000e010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000036138a02faafe605e7a1bb57f54c9ebc)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2060821d1a4d301e1586acc6a104fcdaba36138a02faafe605e7a1bb57f54c9ebc0136138a02faafe605e7a1bb57f54c9ebc0136138a02faafe605e7a1bb57f54c9ebc000000000000000018000000000000000036138a02faafe605e7a1bb57f54c9ebc000000000000000018010000000000000036138a02faafe605e7a1bb57f54c9ebc0000000000000000)), (AccessPath { address: 36138a02faafe605e7a1bb57f54c9ebc, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f600000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f600000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 269, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "36138a02faafe605e7a1bb57f54c9ebc0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(000f010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f700000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f700000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000556e8bdc1c513fd3d497b19685926728)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(205b38bc80445c11ea4b8e37538aabfbf9556e8bdc1c513fd3d497b1968592672801556e8bdc1c513fd3d497b1968592672801556e8bdc1c513fd3d497b196859267280000000000000000180000000000000000556e8bdc1c513fd3d497b196859267280000000000000000180100000000000000556e8bdc1c513fd3d497b196859267280000000000000000)), (AccessPath { address: 556e8bdc1c513fd3d497b19685926728, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 270, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "556e8bdc1c513fd3d497b196859267280600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0010010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000d9f66fec74789e6101c1e87e14dc81a)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(202b566e50f8c3c6bb05fb120bee4103f60d9f66fec74789e6101c1e87e14dc81a010d9f66fec74789e6101c1e87e14dc81a010d9f66fec74789e6101c1e87e14dc81a00000000000000001800000000000000000d9f66fec74789e6101c1e87e14dc81a00000000000000001801000000000000000d9f66fec74789e6101c1e87e14dc81a0000000000000000)), (AccessPath { address: 0d9f66fec74789e6101c1e87e14dc81a, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f800000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f800000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 271, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0d9f66fec74789e6101c1e87e14dc81a0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0011010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(f900000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1f900000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a183fc80ed35aa30be91e3ea89490d67)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(203125dbb7368b1c8245a984d1428f7601a183fc80ed35aa30be91e3ea89490d6701a183fc80ed35aa30be91e3ea89490d6701a183fc80ed35aa30be91e3ea89490d670000000000000000180000000000000000a183fc80ed35aa30be91e3ea89490d670000000000000000180100000000000000a183fc80ed35aa30be91e3ea89490d670000000000000000)), (AccessPath { address: a183fc80ed35aa30be91e3ea89490d67, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 272, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "a183fc80ed35aa30be91e3ea89490d670600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0012010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(020000000000000024a68bdda274c32fe7ed6bf128171107)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20869ba0cd244d85f21a5ac5a2be71e5f824a68bdda274c32fe7ed6bf1281711070124a68bdda274c32fe7ed6bf1281711070124a68bdda274c32fe7ed6bf128171107000000000000000018000000000000000024a68bdda274c32fe7ed6bf128171107000000000000000018010000000000000024a68bdda274c32fe7ed6bf1281711070000000000000000)), (AccessPath { address: 24a68bdda274c32fe7ed6bf128171107, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(fa00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fa00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 273, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "24a68bdda274c32fe7ed6bf1281711070600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0013010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000001d728da8ad6e255d02cc6730d88bc0f5)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20b8b0ec99d764403ed28b7ea3476a95b11d728da8ad6e255d02cc6730d88bc0f5011d728da8ad6e255d02cc6730d88bc0f5011d728da8ad6e255d02cc6730d88bc0f500000000000000001800000000000000001d728da8ad6e255d02cc6730d88bc0f500000000000000001801000000000000001d728da8ad6e255d02cc6730d88bc0f50000000000000000)), (AccessPath { address: 1d728da8ad6e255d02cc6730d88bc0f5, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(fb00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fb00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 274, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "1d728da8ad6e255d02cc6730d88bc0f50600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0014010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(fc00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fc00000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000bf0e08b012fd151bc679b1c7b43f02c1)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2022b09aae095d5cde4308dbb20a21924cbf0e08b012fd151bc679b1c7b43f02c101bf0e08b012fd151bc679b1c7b43f02c101bf0e08b012fd151bc679b1c7b43f02c10000000000000000180000000000000000bf0e08b012fd151bc679b1c7b43f02c10000000000000000180100000000000000bf0e08b012fd151bc679b1c7b43f02c10000000000000000)), (AccessPath { address: bf0e08b012fd151bc679b1c7b43f02c1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 275, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "bf0e08b012fd151bc679b1c7b43f02c10600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0015010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(fd00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fd00000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000006064dab8c11634d0bd6d9deda445eb0d)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(2037616274f065eef5e6c5aec60aac8b956064dab8c11634d0bd6d9deda445eb0d016064dab8c11634d0bd6d9deda445eb0d016064dab8c11634d0bd6d9deda445eb0d00000000000000001800000000000000006064dab8c11634d0bd6d9deda445eb0d00000000000000001801000000000000006064dab8c11634d0bd6d9deda445eb0d0000000000000000)), (AccessPath { address: 6064dab8c11634d0bd6d9deda445eb0d, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 276, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "6064dab8c11634d0bd6d9deda445eb0d0600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0016010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000000aeb71c35e3ad9447a9cb02fdccbc560)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d23cc26a797ef01ad5ea1789ea0d4e250aeb71c35e3ad9447a9cb02fdccbc560010aeb71c35e3ad9447a9cb02fdccbc560010aeb71c35e3ad9447a9cb02fdccbc56000000000000000001800000000000000000aeb71c35e3ad9447a9cb02fdccbc56000000000000000001801000000000000000aeb71c35e3ad9447a9cb02fdccbc5600000000000000000)), (AccessPath { address: 0aeb71c35e3ad9447a9cb02fdccbc560, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(fe00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1fe00000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 277, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "0aeb71c35e3ad9447a9cb02fdccbc5600600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0017010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(ff00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe1ff00000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000e30eed68232a168c46b84a690aa7c580)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20aca59f259ce65a36c1695a6ae9bae2aae30eed68232a168c46b84a690aa7c58001e30eed68232a168c46b84a690aa7c58001e30eed68232a168c46b84a690aa7c5800000000000000000180000000000000000e30eed68232a168c46b84a690aa7c5800000000000000000180100000000000000e30eed68232a168c46b84a690aa7c5800000000000000000)), (AccessPath { address: e30eed68232a168c46b84a690aa7c580, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 278, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "e30eed68232a168c46b84a690aa7c5800600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018010000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000004d1ae1553cac951a9b10df7bd3361fc6)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0600000000000000)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01f77125176049225bbd80e0c748fee99fcf2f0bd3dffe435e7f24e069152047eb }, Value(5455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(204a3633dd320ecc4a8ef65e458cabf2944d1ae1553cac951a9b10df7bd3361fc6014d1ae1553cac951a9b10df7bd3361fc6014d1ae1553cac951a9b10df7bd3361fc600000000000000001800000000000000004d1ae1553cac951a9b10df7bd3361fc600000000000000001801000000000000004d1ae1553cac951a9b10df7bd3361fc60000000000000000)), (AccessPath { address: 4d1ae1553cac951a9b10df7bd3361fc6, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0001000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10001000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 279, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "4d1ae1553cac951a9b10df7bd3361fc60600000000000000" }], gas_used: 1070, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10101000000000000))] }), events: [], gas_used: 160, status: Keep(ABORTED { code: 264, location: 00000000000000000000000000000001::VASP }) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::valid_creator_already_vasp.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::valid_creator_already_vasp.exp index f0067c32ab..8cad760bf9 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::valid_creator_already_vasp.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::vasps::valid_creator_already_vasp.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0190e68263acecae0bd3a5a9743faa6048c63cf6340cb32ba533057dca572d4ec5 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019902a9c8deb492420ccaa758f8ca0a63f4232590d0a91cae7c2545a46ea8d5f2 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01551080891c02034478a6da89eefbdff38f1578ff7e46efccd518d06401fbee92 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7 }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01f02a5f4d464d8bb73f195be22bd78572c777c09a86c370e8b1441392c8de8304 }, Value(0018000000000000001800000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(04000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0131326e1e1d0f542d5ddda666797bd5a2a44b8094e2881a25065c61d45838cfe0 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 016e1ef5334765d3904d23267cdd8101cc1ea4cb8d0543bb9fd5f5c130d66dd007 }, Value(000000ffffffffffffffff00000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001801000000000000005455a8193f1dfc1b113ecc54d067afe1)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001802000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001803000000000000005455a8193f1dfc1b113ecc54d067afe10000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01fed7a7652e644876be3d2437c82d8e9c5a858fb4c0bf56f4913bf56b23b89b4c }, Value(0000000000000000))] }), events: [ContractEvent { key: EventKey([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 23, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("CreateAccountEvent"), type_params: [] }), event_data: "5455a8193f1dfc1b113ecc54d067afe10500000000000000" }], gas_used: 1722, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::charge_gas_invalid_args.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::charge_gas_invalid_args.exp index 5eea68477e..5b03e9e00a 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::charge_gas_invalid_args.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::charge_gas_invalid_args.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10100000000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_arbitrary_script_execution.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_arbitrary_script_execution.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_arbitrary_script_execution.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_arbitrary_script_execution.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_libra_root_sender.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_diem_root_sender.exp similarity index 72% rename from language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_libra_root_sender.exp rename to language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_diem_root_sender.exp index e227fe463e..adf41d658f 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_libra_root_sender.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_no_publishing_diem_root_sender.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 00f88676b437e39b542d320278feed12b88969d0e8942b2a7c639cced2e358a37d }, Value(a11ceb0b010000000601000203020a050c0607120a081c100c2c2b000000010001000002000100020303010300014d036d61780373756d00000000000000000000000000000001000100020a0a000a012404060a00020a01020600000000000000000201010001060a000a01160c020a020200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 00000000000000000000000000000001, path: 007fdd4786eafe2ee13c40e5053f7b2b04bfa4655c87738289f9cba124c888856e }, Value(a11ceb0b010000000601000203020a050c0607120a081c100c2c2b000000010001000002000100020303010300014d036d61780373756d00000000000000000000000000000001000100020a0a000a012404060a00020a01020600000000000000000201010001060a000a01160c020a020200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing.exp index 28554da6ba..a125cb2064 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(0f000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(31420f0000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0078f646ec644e6168918884b8d7a53151f3ea502b5cef76f0d9604a498a9b550c }, Value(a11ceb0b010000000601000203020a050c0607120a081c100c2c2b000000010001000002000100020303010300014d036d61780373756d5455a8193f1dfc1b113ecc54d067afe1000100020a0a000a012404060a00020a01020600000000000000000201010001060a000a01160c020a020200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(0f000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(31420f0000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 00ffebf7c37220cd9d350345960a2c803faf7314e8bab5d735bd0f6875dca180e2 }, Value(a11ceb0b010000000601000203020a050c0607120a081c100c2c2b000000010001000002000100020303010300014d036d61780373756d5455a8193f1dfc1b113ecc54d067afe1000100020a0a000a012404060a00020a01020600000000000000000201010001060a000a01160c020a020200))] }), events: [], gas_used: 15, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing_invalid_address.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing_invalid_address.exp index 204c2ea728..a5eb4cc81e 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing_invalid_address.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_open_publishing_invalid_address.exp @@ -1 +1 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(3f420f0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_publish_from_libra_root.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_publish_from_diem_root.exp similarity index 100% rename from language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_publish_from_libra_root.exp rename to language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::test_publish_from_diem_root.exp diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::verify_simple_payment.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::verify_simple_payment.exp index 8a9e6e3bb7..be963fe27d 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::verify_simple_payment.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::verify_txn::verify_simple_payment.exp @@ -8,5 +8,5 @@ Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), even Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(MAX_GAS_UNITS_BELOW_MIN_TRANSACTION_GAS_UNITS) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(MAX_GAS_UNITS_EXCEEDS_MAX_GAS_UNITS_BOUND) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(EXCEEDED_MAX_TRANSACTION_SIZE) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(9fbb0d0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 017449a5c97108bea03b973f2513ecaa2da09ecb840257a6ac5152dc922f614a95 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(9fbb0d0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(9fbb0d0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0112899569c230296a5e8e0926fccdbf7a7a449010f9edd3dbe6300119ae2ce811 }, Value(01000000000000000000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10b00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(9fbb0d0000000000))] }), events: [], gas_used: 1, status: Keep(MISCELLANEOUS_ERROR) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::bad_writesets.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::bad_writesets.exp index 14a67cf0a5..1b2532f507 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::bad_writesets.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::bad_writesets.exp @@ -1,4 +1,4 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(REJECTED_WRITE_SET) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(INVALID_WRITE_SET) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(INVALID_WRITE_SET) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::invalid_write_set_signer.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::invalid_write_set_signer.exp index f653f1c0f2..c6e1dba860 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::invalid_write_set_signer.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::invalid_write_set_signer.exp @@ -1,2 +1,2 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(INVALID_AUTH_KEY) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::transfer_and_execute_writeset.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::transfer_and_execute_writeset.exp index c397b5ca3a..9fc43dc0af 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::transfer_and_execute_writeset.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::transfer_and_execute_writeset.exp @@ -1,4 +1,4 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }, ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b58851001a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000b1e55ed, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b588510010000000000000000000000000b1e55ed010000000000000000000000000b1e55ed00000000000000001800000000000000000000000000000000000000000b1e55ed00000000000000001801000000000000000000000000000000000000000b1e55ed0100000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20d88e78203e6688f0587d58ad01b0232da2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380a00000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(0200000000000000a2a4b23f5916b324c365bb9178680138))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }, ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: a2a4b23f5916b324c365bb9178680138, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(208e0d19280063fa870fe4dbb85cc724091a398451c5c11e1e76e64cdc7b58851001a2a4b23f5916b324c365bb917868013801a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380000000000000000180000000000000000a2a4b23f5916b324c365bb91786801380b00000000000000))] }), events: [], gas_used: 130, status: Keep(EXECUTED) }]) diff --git a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::verify_and_execute_writeset.exp b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::verify_and_execute_writeset.exp index 8f9bc01564..7b61d00581 100644 --- a/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::verify_and_execute_writeset.exp +++ b/language/testing-infra/e2e-tests/goldens/language_e2e_testsuite::tests::write_set::verify_and_execute_writeset.exp @@ -1,4 +1,4 @@ -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01cc3019332ad35a38c479c561ec953c5ffa2ceab30717688f681070c4536efb3d }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01ca1cdf0d3f9f145c25fbc8b486f00b7dc6c3e0bb70d8e56f754894ee6e2217f7 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) -Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 01a85fca6da4e127a8214a813986f2959674e4b008cf24c1a2022cf1344b910683 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01a63e88f1013330b49bdcaff1e276af4735aad9e76c5950bcb07d6c22019640f2 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01e4097626eacd0ae644bde4b512aebdb30c4a43869a6eb10a04867ac76a8750a4 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 019ee9121a481430c723f6f34ebe7a47a3407e55037e177411480853d3c50b2f50 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01bd2815ee2bf508840a11724140ed989e38a7cfcc4fd4acbb07c12a378adff8f5 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 014326deb3fb20f8254346fbf222b3319927889eb26b2a42e48810563361fa8cb4 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }, ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("LibraConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 017e5211cd62277ca6687dd30e8a887c619a708ddc493016583100ea20dc58e2b6 }, Value(0100000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 014302b4f0b63b6ea4b9422e2330a84e9841e7c770d5367a1bdaed57c1e4f8a689 }, Value(010000000000000001000000000000001811000000000000000000000000000000000000000a550c18))] }), events: [ContractEvent { key: EventKey([17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemBlock"), name: Identifier("NewBlockEvent"), type_params: [] }), event_data: "000000000000000051c1b9fc2f32d6f2fff669823ef31cbe000100000000000000" }], gas_used: 100000000, status: Keep(EXECUTED) }]) +Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [(AccessPath { address: 0000000000000000000000000a550c18, path: 016edc90b5d6f91be693914cbcd20af9b2bd811b6262fec2e84e9a9038d3577b83 }, Value(0200000000000000010000000000000002000000000000001804000000000000000000000000000000000000000a550c18)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(201304972f9242cbc3528a1e286323471ab891baa37e0053b85651693a79854a00010000000000000000000000000a550c18010000000000000000000000000a550c1800000000000000001802000000000000000000000000000000000000000a550c1800000000000000001803000000000000000000000000000000000000000a550c180200000000000000)), (AccessPath { address: 0000000000000000000000000a550c18, path: 01268272535a3df2f4754fc249b8b1a800c58dc73133274b3cb80bb1399e45ad44 }, Value(01000000000000001801000000000000000000000000000000000000000a550c18)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01684f16ca7e938e275c452d44baa0dace7046e81079defdf883206b5515825893 }, Value(20f5b9d6f01a99e74c790e2f330c092fa05455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe1015455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe100000000000000001800000000000000005455a8193f1dfc1b113ecc54d067afe10a00000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01445c13812a56977ca14aa83aeb741e0980dd21c4e520328d1fb7c14069072039 }, Value(0000000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01807dd31c6bcf80b607468202866125fb10ca3c699c18eb861c7be19a19e08b96 }, Value(00)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 0105112f3114d1ce16f77e34ec67b24a842064993b095934cc8b13f3a21cdb33b7 }, Value(0500000000000000)), (AccessPath { address: 5455a8193f1dfc1b113ecc54d067afe1, path: 01d1b675b79aba856295d1e1e35b927c3de7529aa4915a980325a9fd75bc1b6253 }, Value(02000000000000005455a8193f1dfc1b113ecc54d067afe1))] }), events: [ContractEvent { key: EventKey([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 0, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemAccount"), name: Identifier("AdminTransactionEvent"), type_params: [] }), event_data: "0000000000000000" }, ContractEvent { key: EventKey([4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]), index: 1, type: Struct(StructTag { address: 00000000000000000000000000000001, module: Identifier("DiemConfig"), name: Identifier("NewEpochEvent"), type_params: [] }), event_data: "0200000000000000" }], gas_used: 0, status: Keep(EXECUTED) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(SEQUENCE_NUMBER_TOO_OLD) }]) Ok([TransactionOutput { write_set: WriteSet(WriteSetMut { write_set: [] }), events: [], gas_used: 0, status: Discard(SEQUENCE_NUMBER_TOO_NEW) }]) diff --git a/language/testing-infra/e2e-tests/src/account.rs b/language/testing-infra/e2e-tests/src/account.rs index e699107b2f..c0501bfedd 100644 --- a/language/testing-infra/e2e-tests/src/account.rs +++ b/language/testing-infra/e2e-tests/src/account.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Test infrastructure for modeling Libra accounts. +//! Test infrastructure for modeling Diem accounts. use crate::{gas_costs, keygen::KeyGen}; use anyhow::{Error, Result}; -use libra_crypto::ed25519::*; -use libra_types::{ +use diem_crypto::ed25519::*; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::{ self, from_currency_code_string, type_tag_for_currency_code, AccountResource, - BalanceResource, RoleId, COIN1_NAME, + BalanceResource, RoleId, XUS_NAME, }, chain_id::ChainId, event::EventHandle, @@ -34,18 +34,18 @@ use vm_genesis::GENESIS_KEYPAIR; // TTL is 86400s. Initial time was set to 0. pub const DEFAULT_EXPIRATION_TIME: u64 = 40_000; -pub fn coin1_tmp_currency_code() -> Identifier { - from_currency_code_string(COIN1_NAME).unwrap() +pub fn xus_currency_code() -> Identifier { + from_currency_code_string(XUS_NAME).unwrap() } pub fn currency_code(code: &str) -> Identifier { from_currency_code_string(code).unwrap() } -/// Details about a Libra account. +/// Details about a Diem account. /// /// Tests will typically create a set of `Account` instances to run transactions on. This type -/// encodes the logic to operate on and verify operations on any Libra account. +/// encodes the logic to operate on and verify operations on any Diem account. #[derive(Debug, Clone, Eq, PartialEq)] pub struct Account { addr: AccountAddress, @@ -59,7 +59,7 @@ impl Account { /// Creates a new account in memory. /// /// The account returned by this constructor is a purely logical entity, meaning that it does - /// not automatically get added to the Libra store. To add an account to the store, use + /// not automatically get added to the Diem store. To add an account to the store, use /// [`AccountData`] instances with /// [`FakeExecutor::add_account_data`][crate::executor::FakeExecutor::add_account_data]. /// This function returns distinct values upon every call. @@ -79,7 +79,7 @@ impl Account { /// Like with [`Account::new`], the account returned by this constructor is a purely logical /// entity. pub fn with_keypair(privkey: Ed25519PrivateKey, pubkey: Ed25519PublicKey) -> Self { - let addr = libra_types::account_address::from_public_key(&pubkey); + let addr = diem_types::account_address::from_public_key(&pubkey); Account { addr, privkey, @@ -115,12 +115,12 @@ impl Account { } } - /// Creates a new account representing the libra root account in memory. + /// Creates a new account representing the diem root account in memory. /// - /// The address will be [`libra_root_address`][account_config::libra_root_address], and + /// The address will be [`diem_root_address`][account_config::diem_root_address], and /// the account will use [`GENESIS_KEYPAIR`][struct@GENESIS_KEYPAIR] as its keypair. - pub fn new_libra_root() -> Self { - Self::new_genesis_account(account_config::libra_root_address()) + pub fn new_diem_root() -> Self { + Self::new_genesis_account(account_config::diem_root_address()) } /// Creates a new account representing treasury compliance in memory. @@ -274,7 +274,7 @@ impl TransactionBuilder { self.max_gas_amount.unwrap_or(gas_costs::TXN_RESERVED), self.gas_unit_price.unwrap_or(0), self.gas_currency_code - .unwrap_or_else(|| COIN1_NAME.to_owned()), + .unwrap_or_else(|| XUS_NAME.to_owned()), self.ttl.unwrap_or(DEFAULT_EXPIRATION_TIME), ChainId::test(), ) @@ -288,7 +288,7 @@ impl TransactionBuilder { self.max_gas_amount.unwrap_or(gas_costs::TXN_RESERVED), self.gas_unit_price.unwrap_or(0), self.gas_currency_code - .unwrap_or_else(|| COIN1_NAME.to_owned()), + .unwrap_or_else(|| XUS_NAME.to_owned()), self.ttl.unwrap_or(DEFAULT_EXPIRATION_TIME), self.chain_id.unwrap_or_else(ChainId::test), ) @@ -336,7 +336,7 @@ impl Balance { #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum AccountRoleSpecifier { - LibraRoot, + DiemRoot, TreasuryCompliance, DesignatedDealer, Validator, @@ -348,7 +348,7 @@ pub enum AccountRoleSpecifier { impl AccountRoleSpecifier { pub fn id(&self) -> u64 { match self { - Self::LibraRoot => 0, + Self::DiemRoot => 0, Self::TreasuryCompliance => 1, Self::DesignatedDealer => 2, Self::Validator => 3, @@ -484,7 +484,7 @@ impl AccountData { Self::with_account( Account::new(), balance, - coin1_tmp_currency_code(), + xus_currency_code(), sequence_number, AccountRoleSpecifier::ParentVASP, ) @@ -497,7 +497,7 @@ impl AccountData { Self::with_account( Account::new_from_seed(seed), balance, - coin1_tmp_currency_code(), + xus_currency_code(), sequence_number, AccountRoleSpecifier::ParentVASP, ) @@ -600,7 +600,7 @@ impl AccountData { ]) } - /// Returns the (Move value) layout of the LibraAccount::LibraAccount struct + /// Returns the (Move value) layout of the DiemAccount::DiemAccount struct pub fn layout() -> MoveStructLayout { use MoveStructLayout as S; use MoveTypeLayout as T; diff --git a/language/testing-infra/e2e-tests/src/account_universe.rs b/language/testing-infra/e2e-tests/src/account_universe.rs index f8194441e5..496c866086 100644 --- a/language/testing-infra/e2e-tests/src/account_universe.rs +++ b/language/testing-infra/e2e-tests/src/account_universe.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! A model to test properties of common Libra transactions. +//! A model to test properties of common Diem transactions. //! -//! The structs and functions in this module together form a simplified *model* of how common Libra +//! The structs and functions in this module together form a simplified *model* of how common Diem //! transactions should behave. This model is then used as an *oracle* for property-based tests -- //! the results of executing transactions through the VM should match the results computed using //! this model. @@ -23,12 +23,12 @@ pub use rotate_key::*; pub use universe::*; use crate::{ - account::{self, coin1_tmp_currency_code, Account, AccountData}, + account::{self, xus_currency_code, Account, AccountData}, executor::FakeExecutor, gas_costs, transaction_status_eq, }; -use libra_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey}; -use libra_types::{ +use diem_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey}; +use diem_types::{ transaction::{SignedTransaction, TransactionStatus}, vm_status::{known_locations, KeptVMStatus, StatusCode}, }; @@ -129,7 +129,7 @@ pub struct AccountCurrent { impl AccountCurrent { fn new(initial_data: AccountData) -> Self { - let balance = initial_data.balance(&coin1_tmp_currency_code()); + let balance = initial_data.balance(&xus_currency_code()); let sequence_number = initial_data.sequence_number(); let sent_events_count = initial_data.sent_events_count(); let received_events_count = initial_data.received_events_count(); @@ -250,7 +250,7 @@ pub fn txn_one_account_result( gas_used: u64, low_gas_used: u64, ) -> (TransactionStatus, bool) { - // The transactions set the gas cost to 1 microlibra. + // The transactions set the gas cost to 1 microdiem. let enough_max_gas = sender.balance >= gas_costs::TXN_RESERVED * gas_price; // This means that we'll get through the main part of the transaction. let enough_to_transfer = sender.balance >= amount; @@ -408,7 +408,7 @@ pub fn assert_accounts_match( .read_account_resource(&account.account()) .expect("account resource must exist"); let resource_balance = executor - .read_balance_resource(account.account(), account::coin1_tmp_currency_code()) + .read_balance_resource(account.account(), account::xus_currency_code()) .expect("account balance resource must exist"); let auth_key = account.account().auth_key(); prop_assert_eq!( diff --git a/language/testing-infra/e2e-tests/src/account_universe/bad_transaction.rs b/language/testing-infra/e2e-tests/src/account_universe/bad_transaction.rs index d5a35c68f9..2865b5171d 100644 --- a/language/testing-infra/e2e-tests/src/account_universe/bad_transaction.rs +++ b/language/testing-infra/e2e-tests/src/account_universe/bad_transaction.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,13 +6,13 @@ use crate::{ common_transactions::{empty_txn, EMPTY_SCRIPT}, gas_costs, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{self, Ed25519PrivateKey, Ed25519PublicKey}, test_utils::KeyPair, }; -use libra_proptest_helpers::Index; -use libra_types::{ - account_config::COIN1_NAME, +use diem_proptest_helpers::Index; +use diem_types::{ + account_config::XUS_NAME, transaction::{Script, SignedTransaction, TransactionStatus}, vm_status::StatusCode, }; @@ -50,7 +50,7 @@ impl AUTransactionGen for SequenceNumberMismatchGen { seq, gas_costs::TXN_RESERVED, 0, - COIN1_NAME.to_string(), + XUS_NAME.to_string(), ); ( @@ -91,7 +91,7 @@ impl AUTransactionGen for InsufficientBalanceGen { sender.sequence_number, max_gas_unit, self.gas_unit_price, - COIN1_NAME.to_string(), + XUS_NAME.to_string(), ); // TODO: Move such config to AccountUniverse diff --git a/language/testing-infra/e2e-tests/src/account_universe/create_account.rs b/language/testing-infra/e2e-tests/src/account_universe/create_account.rs index 8f85f5691b..3b5b35ee6f 100644 --- a/language/testing-infra/e2e-tests/src/account_universe/create_account.rs +++ b/language/testing-infra/e2e-tests/src/account_universe/create_account.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ - account::{coin1_tmp_currency_code, Account, AccountData, AccountRoleSpecifier}, + account::{xus_currency_code, Account, AccountData, AccountRoleSpecifier}, account_universe::{ txn_one_account_result, AUTransactionGen, AccountPair, AccountPairGen, AccountUniverse, }, common_transactions::create_account_txn, gas_costs, }; -use libra_proptest_helpers::Index; -use libra_types::{ +use diem_proptest_helpers::Index; +use diem_types::{ account_config, transaction::{SignedTransaction, TransactionStatus}, vm_status::{AbortLocation, KeptVMStatus, StatusCode}, @@ -43,7 +43,7 @@ impl AUTransactionGen for CreateAccountGen { &self.new_account, sender.sequence_number, self.amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); let mut gas_used = sender.create_account_gas_cost(); @@ -62,7 +62,7 @@ impl AUTransactionGen for CreateAccountGen { universe.add_account(AccountData::with_account( self.new_account.clone(), self.amount, - coin1_tmp_currency_code(), + xus_currency_code(), 0, AccountRoleSpecifier::default(), )); @@ -102,7 +102,7 @@ impl AUTransactionGen for CreateExistingAccountGen { receiver.account(), sender.sequence_number, self.amount, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); // This transaction should never work, but it will fail differently if there's not enough diff --git a/language/testing-infra/e2e-tests/src/account_universe/peer_to_peer.rs b/language/testing-infra/e2e-tests/src/account_universe/peer_to_peer.rs index 3d1dc86d86..e8c1032ffc 100644 --- a/language/testing-infra/e2e-tests/src/account_universe/peer_to_peer.rs +++ b/language/testing-infra/e2e-tests/src/account_universe/peer_to_peer.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ account_universe::{AUTransactionGen, AccountPair, AccountPairGen, AccountUniverse}, common_transactions::peer_to_peer_txn, }; -use libra_types::{ +use diem_types::{ transaction::{SignedTransaction, TransactionStatus}, vm_status::{known_locations, KeptVMStatus, StatusCode}, }; diff --git a/language/testing-infra/e2e-tests/src/account_universe/rotate_key.rs b/language/testing-infra/e2e-tests/src/account_universe/rotate_key.rs index 6a9bb44934..b7cac88f54 100644 --- a/language/testing-infra/e2e-tests/src/account_universe/rotate_key.rs +++ b/language/testing-infra/e2e-tests/src/account_universe/rotate_key.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,12 +6,12 @@ use crate::{ common_transactions::rotate_key_txn, gas_costs, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{self, Ed25519PrivateKey, Ed25519PublicKey}, test_utils::KeyPair, }; -use libra_proptest_helpers::Index; -use libra_types::{ +use diem_proptest_helpers::Index; +use diem_types::{ transaction::{authenticator::AuthenticationKey, SignedTransaction, TransactionStatus}, vm_status::{KeptVMStatus, StatusCode}, }; diff --git a/language/testing-infra/e2e-tests/src/account_universe/universe.rs b/language/testing-infra/e2e-tests/src/account_universe/universe.rs index b9b61a31f9..44889ec729 100644 --- a/language/testing-infra/e2e-tests/src/account_universe/universe.rs +++ b/language/testing-infra/e2e-tests/src/account_universe/universe.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Logic for account universes. This is not in the parent module to enforce privacy. @@ -8,7 +8,7 @@ use crate::{ account_universe::{default_num_accounts, default_num_transactions, AccountCurrent}, executor::FakeExecutor, }; -use libra_proptest_helpers::{pick_slice_idxs, Index}; +use diem_proptest_helpers::{pick_slice_idxs, Index}; use proptest::{ collection::{vec, SizeRange}, prelude::*, diff --git a/language/testing-infra/e2e-tests/src/common_transactions.rs b/language/testing-infra/e2e-tests/src/common_transactions.rs index 1bc1668cd8..84d0304213 100644 --- a/language/testing-infra/e2e-tests/src/common_transactions.rs +++ b/language/testing-infra/e2e-tests/src/common_transactions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Support for encoding transactions for common situations. @@ -6,7 +6,7 @@ use crate::account::Account; use compiled_stdlib::transaction_scripts::StdlibScript; use compiler::Compiler; -use libra_types::{ +use diem_types::{ account_config, transaction::{RawTransaction, Script, SignedTransaction, TransactionArgument}, }; @@ -15,15 +15,15 @@ use once_cell::sync::Lazy; pub static CREATE_ACCOUNT_SCRIPT: Lazy> = Lazy::new(|| { let code = " - import 0x1.Libra; - import 0x1.LibraAccount; + import 0x1.Diem; + import 0x1.DiemAccount; main(account: &signer, fresh_address: address, auth_key_prefix: vector, initial_amount: u64) { - let with_cap: LibraAccount.WithdrawCapability; + let with_cap: DiemAccount.WithdrawCapability; let name: vector; name = h\"\"; - LibraAccount.create_parent_vasp_account( + DiemAccount.create_parent_vasp_account( copy(account), copy(fresh_address), move(auth_key_prefix), @@ -31,15 +31,15 @@ pub static CREATE_ACCOUNT_SCRIPT: Lazy> = Lazy::new(|| { false ); if (copy(initial_amount) > 0) { - with_cap = LibraAccount.extract_withdraw_capability(copy(account)); - LibraAccount.pay_from( + with_cap = DiemAccount.extract_withdraw_capability(copy(account)); + DiemAccount.pay_from( &with_cap, move(fresh_address), move(initial_amount), h\"\", h\"\" ); - LibraAccount.restore_withdraw_capability(move(with_cap)); + DiemAccount.restore_withdraw_capability(move(with_cap)); } return; } @@ -134,7 +134,7 @@ pub fn peer_to_peer_txn( StdlibScript::PeerToPeerWithMetadata .compiled_bytes() .into_vec(), - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], args, )) .sequence_number(seq_num) diff --git a/language/testing-infra/e2e-tests/src/compile.rs b/language/testing-infra/e2e-tests/src/compile.rs index 36736f4870..1f9cc539f6 100644 --- a/language/testing-infra/e2e-tests/src/compile.rs +++ b/language/testing-infra/e2e-tests/src/compile.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Support for compiling scripts and modules in tests. use compiler::Compiler; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, transaction::{Module, Script}, }; diff --git a/language/testing-infra/e2e-tests/src/currencies.rs b/language/testing-infra/e2e-tests/src/currencies.rs index 5d5a43e279..704edba45e 100644 --- a/language/testing-infra/e2e-tests/src/currencies.rs +++ b/language/testing-infra/e2e-tests/src/currencies.rs @@ -1,33 +1,33 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{account::Account, compile, executor::FakeExecutor}; -use libra_types::{account_address::AccountAddress, transaction::WriteSetPayload}; +use diem_types::{account_address::AccountAddress, transaction::WriteSetPayload}; pub fn add_currency_to_system( executor: &mut FakeExecutor, currency_code_to_register: &str, - current_lr_sequence_number: u64, + current_dr_sequence_number: u64, ) -> u64 { - let lr_account = Account::new_libra_root(); - let mut lr_sequence_number = current_lr_sequence_number; + let dr_account = Account::new_diem_root(); + let mut dr_sequence_number = current_dr_sequence_number; { let compiled_script = { let script = " - import 0x1.LibraTransactionPublishingOption; + import 0x1.DiemTransactionPublishingOption; main(config: &signer) { - LibraTransactionPublishingOption.set_open_module(move(config), false); + DiemTransactionPublishingOption.set_open_module(move(config), false); return; } "; - compile::compile_script_with_address(lr_account.address(), "file_name", script, vec![]) + compile::compile_script_with_address(dr_account.address(), "file_name", script, vec![]) }; - let txn = lr_account + let txn = dr_account .transaction() .script(compiled_script) - .sequence_number(lr_sequence_number) + .sequence_number(dr_sequence_number) .sign(); executor.execute_and_apply(txn); @@ -35,18 +35,18 @@ pub fn add_currency_to_system( executor.new_block(); - lr_sequence_number += 1; + dr_sequence_number += 1; let (compiled_module, module) = { let module = format!( r#" module {} {{ - import 0x1.Libra; + import 0x1.Diem; import 0x1.FixedPoint32; resource {currency_code} {{ x: bool }} - public init(lr_account: &signer, tc_account: &signer) {{ - Libra.register_SCS_currency( - move(lr_account), + public init(dr_account: &signer, tc_account: &signer) {{ + Diem.register_SCS_currency( + move(dr_account), move(tc_account), FixedPoint32.create_from_rational(1, 1), 100, @@ -68,30 +68,30 @@ pub fn add_currency_to_system( ) }; - let txn = lr_account + let txn = dr_account .transaction() .module(module) - .sequence_number(lr_sequence_number) + .sequence_number(dr_sequence_number) .sign(); executor.execute_and_apply(txn); - lr_sequence_number += 1; + dr_sequence_number += 1; { let compiled_script = { let script = format!( r#" import 0x1.{currency_code}; - main(lr_account: &signer, tc_account: &signer) {{ - {currency_code}.init(move(lr_account), move(tc_account)); + main(dr_account: &signer, tc_account: &signer) {{ + {currency_code}.init(move(dr_account), move(tc_account)); return; }} "#, currency_code = currency_code_to_register ); compile::compile_script_with_address( - lr_account.address(), + dr_account.address(), "file_name", &script, vec![compiled_module], @@ -102,15 +102,15 @@ pub fn add_currency_to_system( execute_as: *Account::new_blessed_tc().address(), script: compiled_script, }; - let txn = lr_account + let txn = dr_account .transaction() .write_set(write_set_payload) - .sequence_number(lr_sequence_number) + .sequence_number(dr_sequence_number) .sign(); executor.execute_and_apply(txn); }; executor.new_block(); - lr_sequence_number + 1 + dr_sequence_number + 1 } diff --git a/language/testing-infra/e2e-tests/src/data_store.rs b/language/testing-infra/e2e-tests/src/data_store.rs index 686d676404..bfa24d642e 100644 --- a/language/testing-infra/e2e-tests/src/data_store.rs +++ b/language/testing-infra/e2e-tests/src/data_store.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Support for mocking the Libra data store. +//! Support for mocking the Diem data store. use crate::account::AccountData; use anyhow::Result; use compiled_stdlib::StdLibOptions; -use libra_state_view::StateView; -use libra_types::{ +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, on_chain_config::ConfigStorage, transaction::ChangeSet, write_set::{WriteOp, WriteSet}, }; -use libra_vm::data_cache::RemoteStorage; +use diem_vm::data_cache::RemoteStorage; use move_core_types::{ account_address::AccountAddress, language_storage::{ModuleId, StructTag}, diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/basic_strategy.rs b/language/testing-infra/e2e-tests/src/execution_strategies/basic_strategy.rs index f7884ff3ba..dad55412b8 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/basic_strategy.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/basic_strategy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -7,7 +7,7 @@ use crate::{ execution_strategies::types::{Block, Executor, ExecutorResult, PartitionStrategy}, executor::FakeExecutor, }; -use libra_types::{transaction::SignedTransaction, vm_status::VMStatus}; +use diem_types::{transaction::SignedTransaction, vm_status::VMStatus}; #[derive(Debug, Clone)] pub struct BasicStrategy; diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/guided_strategy.rs b/language/testing-infra/e2e-tests/src/execution_strategies/guided_strategy.rs index d14446e1e9..069776787e 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/guided_strategy.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/guided_strategy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -6,7 +6,7 @@ use crate::{ execution_strategies::types::{Block, Executor, ExecutorResult, PartitionStrategy}, executor::FakeExecutor, }; -use libra_types::{transaction::SignedTransaction, vm_status::VMStatus}; +use diem_types::{transaction::SignedTransaction, vm_status::VMStatus}; #[derive(Debug, Clone, PartialEq)] pub enum AnnotatedTransaction { diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/mod.rs b/language/testing-infra/e2e-tests/src/execution_strategies/mod.rs index 61f0952ecb..f36b2da0e2 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/mod.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/multi_strategy.rs b/language/testing-infra/e2e-tests/src/execution_strategies/multi_strategy.rs index 7fa8c10d3f..5cda307ff9 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/multi_strategy.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/multi_strategy.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use crate::execution_strategies::types::{Block, Executor, ExecutorResult}; -use libra_types::transaction::TransactionOutput; +use diem_types::transaction::TransactionOutput; use std::{collections::BTreeMap, error::Error, fmt}; #[derive(Debug)] diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/random_strategy.rs b/language/testing-infra/e2e-tests/src/execution_strategies/random_strategy.rs index eb492b37a8..ee6eeaa1bd 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/random_strategy.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/random_strategy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -6,7 +6,7 @@ use crate::{ execution_strategies::types::{Block, Executor, ExecutorResult, PartitionStrategy}, executor::FakeExecutor, }; -use libra_types::{transaction::SignedTransaction, vm_status::VMStatus}; +use diem_types::{transaction::SignedTransaction, vm_status::VMStatus}; use rand::{ rngs::{OsRng, StdRng}, Rng, SeedableRng, diff --git a/language/testing-infra/e2e-tests/src/execution_strategies/types.rs b/language/testing-infra/e2e-tests/src/execution_strategies/types.rs index 021a574c72..c5e055ec6b 100644 --- a/language/testing-infra/e2e-tests/src/execution_strategies/types.rs +++ b/language/testing-infra/e2e-tests/src/execution_strategies/types.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_types::transaction::{SignedTransaction, TransactionOutput}; +use diem_types::transaction::{SignedTransaction, TransactionOutput}; pub type Block = Vec; pub type ExecutorResult = Result, T>; diff --git a/language/testing-infra/e2e-tests/src/executor.rs b/language/testing-infra/e2e-tests/src/executor.rs index e81e5fb509..b4ae910ca7 100644 --- a/language/testing-infra/e2e-tests/src/executor.rs +++ b/language/testing-infra/e2e-tests/src/executor.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Support for running the VM to execute and verify transactions. @@ -10,9 +10,9 @@ use crate::{ keygen::KeyGen, }; use compiled_stdlib::{stdlib_modules, transaction_scripts::StdlibScript, StdLibOptions}; -use libra_crypto::HashValue; -use libra_state_view::StateView; -use libra_types::{ +use diem_crypto::HashValue; +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, account_config::{AccountResource, BalanceResource, CORE_CODE_ADDRESS}, block_metadata::{new_block_event_key, BlockMetadata, NewBlockEvent}, @@ -23,8 +23,8 @@ use libra_types::{ vm_status::{KeptVMStatus, VMStatus}, write_set::WriteSet, }; -use libra_vm::{ - data_cache::RemoteStorage, txn_effects_to_writeset_and_events, LibraVM, LibraVMValidator, +use diem_vm::{ + data_cache::RemoteStorage, txn_effects_to_writeset_and_events, DiemVM, DiemVMValidator, VMExecutor, VMValidator, }; use move_core_types::{ @@ -44,7 +44,7 @@ static RNG_SEED: [u8; 32] = [9u8; 32]; /// Provides an environment to run a VM instance. /// -/// This struct is a mock in-memory implementation of the Libra executor. +/// This struct is a mock in-memory implementation of the Diem executor. #[derive(Debug)] pub struct FakeExecutor { data_store: FakeDataStore, @@ -223,7 +223,7 @@ impl FakeExecutor { &self, txn_block: Vec, ) -> Result, VMStatus> { - LibraVM::execute_block_and_keep_vm_status( + DiemVM::execute_block_and_keep_vm_status( txn_block .into_iter() .map(Transaction::UserTransaction) @@ -257,7 +257,7 @@ impl FakeExecutor { &self, txn_block: Vec, ) -> Result, VMStatus> { - let output = LibraVM::execute_block(txn_block, &self.data_store); + let output = DiemVM::execute_block(txn_block, &self.data_store); if let Some(logger) = &self.executed_output { logger.log(format!("{:?}\n", output).as_str()); } @@ -281,7 +281,7 @@ impl FakeExecutor { /// Verifies the given transaction by running it through the VM verifier. pub fn verify_transaction(&self, txn: SignedTransaction) -> VMValidatorResult { - let vm = LibraVMValidator::new(self.get_state_view()); + let vm = DiemVMValidator::new(self.get_state_view()); vm.validate_transaction(txn, &self.data_store) } diff --git a/language/testing-infra/e2e-tests/src/gas_costs.rs b/language/testing-infra/e2e-tests/src/gas_costs.rs index 99cba09127..d8b099f107 100644 --- a/language/testing-infra/e2e-tests/src/gas_costs.rs +++ b/language/testing-infra/e2e-tests/src/gas_costs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Gas costs for common transactions. @@ -8,15 +8,15 @@ use crate::{ common_transactions::{create_account_txn, peer_to_peer_txn, rotate_key_txn}, executor::FakeExecutor, }; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ account_config, transaction::{authenticator::AuthenticationKey, SignedTransaction}, }; use once_cell::sync::Lazy; /// The gas each transaction is configured to reserve. If the gas available in the account, -/// converted to microlibra, falls below this threshold, transactions are expected to fail with +/// converted to microdiem, falls below this threshold, transactions are expected to fail with /// an insufficient balance. pub const TXN_RESERVED: u64 = 500_000; @@ -35,7 +35,7 @@ pub static CREATE_ACCOUNT_FIRST: Lazy = Lazy::new(|| { &receiver, 10, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); compute_gas_used(txn, &mut executor) }); @@ -55,14 +55,14 @@ pub static CREATE_ACCOUNT_NEXT: Lazy = Lazy::new(|| { &Account::new(), 10, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), create_account_txn( sender.account(), &Account::new(), 11, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), ]; let output = &executor @@ -90,7 +90,7 @@ pub static CREATE_ACCOUNT_TOO_LOW_FIRST: Lazy = Lazy::new(|| { &receiver, 10, balance + 1, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); compute_gas_used(txn, &mut executor) }); @@ -113,14 +113,14 @@ pub static CREATE_ACCOUNT_TOO_LOW_NEXT: Lazy = Lazy::new(|| { &Account::new(), 10, 10, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), create_account_txn( sender.account(), &Account::new(), 11, balance, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), ]; let output = &executor @@ -146,7 +146,7 @@ pub static CREATE_EXISTING_ACCOUNT_FIRST: Lazy = Lazy::new(|| { receiver.account(), 10, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ); compute_gas_used(txn, &mut executor) }); @@ -168,14 +168,14 @@ pub static CREATE_EXISTING_ACCOUNT_NEXT: Lazy = Lazy::new(|| { &Account::new(), 10, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), create_account_txn( sender.account(), receiver.account(), 11, 20_000, - account_config::coin1_tmp_tag(), + account_config::xus_tag(), ), ]; let output = &executor diff --git a/language/testing-infra/e2e-tests/src/golden_outputs.rs b/language/testing-infra/e2e-tests/src/golden_outputs.rs index 16ce75136b..a4ada16cad 100644 --- a/language/testing-infra/e2e-tests/src/golden_outputs.rs +++ b/language/testing-infra/e2e-tests/src/golden_outputs.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use goldenfile::Mint; diff --git a/language/testing-infra/e2e-tests/src/keygen.rs b/language/testing-infra/e2e-tests/src/keygen.rs index 68ea121652..00373e1477 100644 --- a/language/testing-infra/e2e-tests/src/keygen.rs +++ b/language/testing-infra/e2e-tests/src/keygen.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, PrivateKey, Uniform, }; diff --git a/language/testing-infra/e2e-tests/src/lib.rs b/language/testing-infra/e2e-tests/src/lib.rs index 58d5d5cb14..3f81dd6256 100644 --- a/language/testing-infra/e2e-tests/src/lib.rs +++ b/language/testing-infra/e2e-tests/src/lib.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -//! Test infrastructure for the Libra VM. +//! Test infrastructure for the Diem VM. //! -//! This crate contains helpers for executing tests against the Libra VM. +//! This crate contains helpers for executing tests against the Diem VM. -use libra_types::{transaction::TransactionStatus, vm_status::KeptVMStatus}; +use diem_types::{transaction::TransactionStatus, vm_status::KeptVMStatus}; pub mod account; pub mod account_universe; diff --git a/language/testing-infra/e2e-tests/src/proptest_types.rs b/language/testing-infra/e2e-tests/src/proptest_types.rs index 7d96ffc276..869176e0dc 100644 --- a/language/testing-infra/e2e-tests/src/proptest_types.rs +++ b/language/testing-infra/e2e-tests/src/proptest_types.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::account::{coin1_tmp_currency_code, Account, AccountData, AccountRoleSpecifier}; +use crate::account::{xus_currency_code, Account, AccountData, AccountRoleSpecifier}; use proptest::prelude::*; impl Arbitrary for Account { @@ -36,7 +36,7 @@ impl AccountData { AccountData::with_account_and_event_counts( account, balance, - coin1_tmp_currency_code(), // TODO: Vary account balance currency? + xus_currency_code(), // TODO: Vary account balance currency? sequence_number, sent_events_count, received_events_count, diff --git a/language/testing-infra/functional-tests/Cargo.toml b/language/testing-infra/functional-tests/Cargo.toml index a8d08d7174..f51efb6297 100644 --- a/language/testing-infra/functional-tests/Cargo.toml +++ b/language/testing-infra/functional-tests/Cargo.toml @@ -1,25 +1,25 @@ [package] name = "functional-tests" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra functional tests" +authors = ["Diem Association "] +description = "Diem functional tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" [dependencies] anyhow = "1.0.34" hex = "0.4.2" -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } language-e2e-tests = { path = "../e2e-tests", version = "0.1.0" } -libra-config = { path = "../../../config", version = "0.1.0", features = ["fuzzing"] } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../../config", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } once_cell = "1.4.1" regex = { version = "1.4.2", default-features = false, features = ["std", "perf"] } thiserror = "1.0.22" diff --git a/language/testing-infra/functional-tests/src/checker/directives.rs b/language/testing-infra/functional-tests/src/checker/directives.rs index 6da70ee56a..8bf4b5836d 100644 --- a/language/testing-infra/functional-tests/src/checker/directives.rs +++ b/language/testing-infra/functional-tests/src/checker/directives.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{common::Sp, errors::*}; diff --git a/language/testing-infra/functional-tests/src/checker/matcher.rs b/language/testing-infra/functional-tests/src/checker/matcher.rs index 51cb0a3564..78032f228c 100644 --- a/language/testing-infra/functional-tests/src/checker/matcher.rs +++ b/language/testing-infra/functional-tests/src/checker/matcher.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements a matcher that checks if an evaluation log matches the diff --git a/language/testing-infra/functional-tests/src/checker/mod.rs b/language/testing-infra/functional-tests/src/checker/mod.rs index d5d873b0d8..d24132c414 100644 --- a/language/testing-infra/functional-tests/src/checker/mod.rs +++ b/language/testing-infra/functional-tests/src/checker/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod directives; diff --git a/language/testing-infra/functional-tests/src/checker/tests/matcher_tests.rs b/language/testing-infra/functional-tests/src/checker/tests/matcher_tests.rs index 7858d6c4a6..736998710d 100644 --- a/language/testing-infra/functional-tests/src/checker/tests/matcher_tests.rs +++ b/language/testing-infra/functional-tests/src/checker/tests/matcher_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{checker::*, evaluator::*}; diff --git a/language/testing-infra/functional-tests/src/checker/tests/mod.rs b/language/testing-infra/functional-tests/src/checker/tests/mod.rs index 06f2035a4b..b19bd7021b 100644 --- a/language/testing-infra/functional-tests/src/checker/tests/mod.rs +++ b/language/testing-infra/functional-tests/src/checker/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod matcher_tests; diff --git a/language/testing-infra/functional-tests/src/checker/tests/parse_directives.rs b/language/testing-infra/functional-tests/src/checker/tests/parse_directives.rs index 8b7658e1cd..ed19d96647 100644 --- a/language/testing-infra/functional-tests/src/checker/tests/parse_directives.rs +++ b/language/testing-infra/functional-tests/src/checker/tests/parse_directives.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{checker::*, common::Sp, errors::*}; diff --git a/language/testing-infra/functional-tests/src/common.rs b/language/testing-infra/functional-tests/src/common.rs index 1e89ace4f8..17ff4fffc4 100644 --- a/language/testing-infra/functional-tests/src/common.rs +++ b/language/testing-infra/functional-tests/src/common.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::convert::AsRef; diff --git a/language/testing-infra/functional-tests/src/compiler.rs b/language/testing-infra/functional-tests/src/compiler.rs index abba5af18f..e142900ff0 100644 --- a/language/testing-infra/functional-tests/src/compiler.rs +++ b/language/testing-infra/functional-tests/src/compiler.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use vm::file_format::{CompiledModule, CompiledScript}; pub trait Compiler { diff --git a/language/testing-infra/functional-tests/src/config/block_metadata.rs b/language/testing-infra/functional-tests/src/config/block_metadata.rs index 983aa04b7e..cfa800c5bf 100644 --- a/language/testing-infra/functional-tests/src/config/block_metadata.rs +++ b/language/testing-infra/functional-tests/src/config/block_metadata.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{config::global::Config as GlobalConfig, errors::*}; -use libra_crypto::HashValue; -use libra_types::{account_address::AccountAddress, block_metadata::BlockMetadata}; +use diem_crypto::HashValue; +use diem_types::{account_address::AccountAddress, block_metadata::BlockMetadata}; use std::str::FromStr; #[derive(Debug)] diff --git a/language/testing-infra/functional-tests/src/config/global.rs b/language/testing-infra/functional-tests/src/config/global.rs index 5bce9a9fd3..68848b1b74 100644 --- a/language/testing-infra/functional-tests/src/config/global.rs +++ b/language/testing-infra/functional-tests/src/config/global.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // The config holds the options that define the testing environment. // A config entry starts with "//!", differentiating it from a directive. use crate::{errors::*, genesis_accounts::make_genesis_accounts}; +use diem_crypto::PrivateKey; +use diem_types::account_config; use language_e2e_tests::{ account::{Account, AccountData, AccountRoleSpecifier}, keygen::KeyGen, }; -use libra_crypto::PrivateKey; -use libra_types::account_config; use move_core_types::identifier::Identifier; use once_cell::sync::Lazy; use std::{ @@ -20,7 +20,7 @@ use std::{ static DEFAULT_BALANCE: Lazy = Lazy::new(|| Balance { amount: 1_000_000, - currency_code: account_config::from_currency_code_string(account_config::COIN1_NAME).unwrap(), + currency_code: account_config::from_currency_code_string(account_config::XUS_NAME).unwrap(), }); #[derive(Debug)] @@ -42,9 +42,9 @@ impl FromStr for Balance { fn from_str(s: &str) -> Result { // TODO: Try to get this from the on-chain config? - let coin_types = vec!["LBR", "Coin1"]; + let coin_types = vec!["XDX", "XUS"]; let mut coin_type: Vec<&str> = coin_types.into_iter().filter(|x| s.ends_with(x)).collect(); - let currency_code = coin_type.pop().unwrap_or("Coin1"); + let currency_code = coin_type.pop().unwrap_or("XUS"); if !coin_type.is_empty() { return Err(ErrorKind::Other( "Multiple coin types supplied for account. Accounts are single currency" diff --git a/language/testing-infra/functional-tests/src/config/mod.rs b/language/testing-infra/functional-tests/src/config/mod.rs index e882de63f7..3ff5258bc1 100644 --- a/language/testing-infra/functional-tests/src/config/mod.rs +++ b/language/testing-infra/functional-tests/src/config/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod block_metadata; diff --git a/language/testing-infra/functional-tests/src/config/transaction.rs b/language/testing-infra/functional-tests/src/config/transaction.rs index 80819c7733..49d89960a2 100644 --- a/language/testing-infra/functional-tests/src/config/transaction.rs +++ b/language/testing-infra/functional-tests/src/config/transaction.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{config::global::Config as GlobalConfig, errors::*, evaluator::Stage}; diff --git a/language/testing-infra/functional-tests/src/errors.rs b/language/testing-infra/functional-tests/src/errors.rs index fcd22f3a06..a5039d8b65 100644 --- a/language/testing-infra/functional-tests/src/errors.rs +++ b/language/testing-infra/functional-tests/src/errors.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub use anyhow::{anyhow, bail, format_err, Error, Result}; -use libra_types::{transaction::TransactionOutput, vm_status::VMStatus}; +use diem_types::{transaction::TransactionOutput, vm_status::VMStatus}; use thiserror::Error; /// Defines all errors in this crate. diff --git a/language/testing-infra/functional-tests/src/evaluator.rs b/language/testing-infra/functional-tests/src/evaluator.rs index 4af26dbc78..6953e17002 100644 --- a/language/testing-infra/functional-tests/src/evaluator.rs +++ b/language/testing-infra/functional-tests/src/evaluator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,23 +8,23 @@ use crate::{ }; use bytecode_verifier::DependencyChecker; use compiled_stdlib::{stdlib_modules, transaction_scripts::StdlibScript, StdLibOptions}; -use language_e2e_tests::executor::FakeExecutor; -use libra_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey}; -use libra_state_view::StateView; -use libra_types::{ +use diem_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey}; +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_config, - account_config::COIN1_NAME, + account_config::XUS_NAME, block_metadata::BlockMetadata, chain_id::ChainId, on_chain_config::VMPublishingOption, transaction::{ Module as TransactionModule, RawTransaction, Script as TransactionScript, - SignedTransaction, Transaction as LibraTransaction, TransactionOutput, TransactionStatus, + SignedTransaction, Transaction as DiemTransaction, TransactionOutput, TransactionStatus, }, vm_status::KeptVMStatus, }; +use language_e2e_tests::executor::FakeExecutor; use mirai_annotations::checked_verify; use move_core_types::{ gas_schedule::{GasAlgebra, GasConstants}, @@ -62,13 +62,13 @@ pub struct Transaction<'a> { pub input: String, } -/// Commands that drives the operation of LibraVM. Such as: +/// Commands that drives the operation of DiemVM. Such as: /// 1. Execute user transaction /// 2. Publish a new block metadata /// -/// In the future we will add more commands to mimic the full public API of LibraVM, -/// including reloading the on-chain configuration that will affect the code path for LibraVM, -/// cleaning the cache in the LibraVM, etc. +/// In the future we will add more commands to mimic the full public API of DiemVM, +/// including reloading the on-chain configuration that will affect the code path for DiemVM, +/// cleaning the cache in the DiemVM, etc. #[derive(Debug)] pub enum Command<'a> { Transaction(Transaction<'a>), @@ -312,7 +312,7 @@ fn get_transaction_parameters<'a>( let gas_currency_code = config .gas_currency_code .clone() - .unwrap_or_else(|| COIN1_NAME.to_owned()); + .unwrap_or_else(|| XUS_NAME.to_owned()); let max_number_of_gas_units = GasConstants::default().maximum_number_of_gas_units; let max_gas_amount = config.max_gas.unwrap_or_else(|| { if gas_unit_price == 0 { @@ -693,7 +693,7 @@ pub fn eval_block_metadata( log: &mut EvaluationLog, ) -> Result { let outputs = - executor.execute_transaction_block(vec![LibraTransaction::BlockMetadata(block_metadata)]); + executor.execute_transaction_block(vec![DiemTransaction::BlockMetadata(block_metadata)]); match outputs { Ok(mut outputs) => { diff --git a/language/testing-infra/functional-tests/src/genesis_accounts.rs b/language/testing-infra/functional-tests/src/genesis_accounts.rs index 37ba26e6ef..42100aa198 100644 --- a/language/testing-infra/functional-tests/src/genesis_accounts.rs +++ b/language/testing-infra/functional-tests/src/genesis_accounts.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::account_config; use language_e2e_tests::account::Account; -use libra_types::account_config; use std::collections::BTreeMap; // These are special-cased since they are generated in genesis, and therefore we don't want // their account states to be generated. -pub const LIBRA_ROOT_NAME: &str = "libraroot"; +pub const DIEM_ROOT_NAME: &str = "diemroot"; pub const TREASURY_COMPLIANCE_NAME: &str = "blessed"; pub const TESTNET_DD: &str = "testnetdd"; pub fn make_genesis_accounts() -> BTreeMap { let mut m = BTreeMap::new(); - m.insert(LIBRA_ROOT_NAME.to_string(), Account::new_libra_root()); + m.insert(DIEM_ROOT_NAME.to_string(), Account::new_diem_root()); m.insert( TESTNET_DD.to_string(), Account::new_genesis_account(account_config::testnet_dd_account_address()), diff --git a/language/testing-infra/functional-tests/src/lib.rs b/language/testing-infra/functional-tests/src/lib.rs index 1c18a5bec9..faad29e543 100644 --- a/language/testing-infra/functional-tests/src/lib.rs +++ b/language/testing-infra/functional-tests/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/testing-infra/functional-tests/src/preprocessor.rs b/language/testing-infra/functional-tests/src/preprocessor.rs index 2a5c4a633d..d13b6b8ffa 100644 --- a/language/testing-infra/functional-tests/src/preprocessor.rs +++ b/language/testing-infra/functional-tests/src/preprocessor.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/functional-tests/src/tests/block_metadata_config_tests.rs b/language/testing-infra/functional-tests/src/tests/block_metadata_config_tests.rs index f29c304e67..d3b2061753 100644 --- a/language/testing-infra/functional-tests/src/tests/block_metadata_config_tests.rs +++ b/language/testing-infra/functional-tests/src/tests/block_metadata_config_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,7 +12,7 @@ use crate::{ parse_each_line_as, }, }; -use libra_types::block_metadata::BlockMetadata; +use diem_types::block_metadata::BlockMetadata; #[test] fn parse_simple_positive() { diff --git a/language/testing-infra/functional-tests/src/tests/global_config_tests.rs b/language/testing-infra/functional-tests/src/tests/global_config_tests.rs index d91f8672b6..9d83eec3e5 100644 --- a/language/testing-infra/functional-tests/src/tests/global_config_tests.rs +++ b/language/testing-infra/functional-tests/src/tests/global_config_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -55,7 +55,7 @@ fn build_global_config_1() { assert!(config.accounts.contains_key("default")); assert!(config.accounts.contains_key("alice")); let bob = config.accounts.get("bob").unwrap(); - assert_eq!(bob.balance(IdentStr::new("Coin1").unwrap()), 2000); + assert_eq!(bob.balance(IdentStr::new("XUS").unwrap()), 2000); assert_eq!(bob.sequence_number(), 10); } @@ -85,31 +85,31 @@ fn build_global_config_4() { assert_eq!(config.accounts.len(), 1); let default = config.accounts.get("default").unwrap(); - assert_eq!(default.balance(IdentStr::new("Coin1").unwrap()), 50); + assert_eq!(default.balance(IdentStr::new("XUS").unwrap()), 50); } #[rustfmt::skip] #[test] fn build_global_config_5() { let config = parse_and_build_config(r" - //! account: default, 50Coin1, + //! account: default, 50XUS, ").unwrap(); assert_eq!(config.accounts.len(), 1); let default = config.accounts.get("default").unwrap(); - assert_eq!(default.balance(IdentStr::new("Coin1").unwrap()), 50); + assert_eq!(default.balance(IdentStr::new("XUS").unwrap()), 50); } #[rustfmt::skip] #[test] fn build_global_config_6() { let config = parse_and_build_config(r" - //! account: bob, 51Coin1, + //! account: bob, 51XUS, ").unwrap(); assert_eq!(config.accounts.len(), 2); let default = config.accounts.get("bob").unwrap(); - assert_eq!(default.balance(IdentStr::new("Coin1").unwrap()), 51); + assert_eq!(default.balance(IdentStr::new("XUS").unwrap()), 51); } #[rustfmt::skip] diff --git a/language/testing-infra/functional-tests/src/tests/mod.rs b/language/testing-infra/functional-tests/src/tests/mod.rs index 61d961f429..fc937c01af 100644 --- a/language/testing-infra/functional-tests/src/tests/mod.rs +++ b/language/testing-infra/functional-tests/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod block_metadata_config_tests; diff --git a/language/testing-infra/functional-tests/src/tests/preprocessor_tests.rs b/language/testing-infra/functional-tests/src/tests/preprocessor_tests.rs index ed495bc7eb..85a4ab1161 100644 --- a/language/testing-infra/functional-tests/src/tests/preprocessor_tests.rs +++ b/language/testing-infra/functional-tests/src/tests/preprocessor_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/functional-tests/src/tests/transaction_config_tests.rs b/language/testing-infra/functional-tests/src/tests/transaction_config_tests.rs index bdd2360483..7599b3872e 100644 --- a/language/testing-infra/functional-tests/src/tests/transaction_config_tests.rs +++ b/language/testing-infra/functional-tests/src/tests/transaction_config_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/functional-tests/src/testsuite.rs b/language/testing-infra/functional-tests/src/testsuite.rs index 4b957b6f85..2fa2d4f47e 100644 --- a/language/testing-infra/functional-tests/src/testsuite.rs +++ b/language/testing-infra/functional-tests/src/testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/module-generation/Cargo.toml b/language/testing-infra/module-generation/Cargo.toml index fd9bcf00eb..5b88491e16 100644 --- a/language/testing-infra/module-generation/Cargo.toml +++ b/language/testing-infra/module-generation/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "module-generation" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra binary module generation" +authors = ["Diem Association "] +description = "Diem binary module generation" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,8 +16,8 @@ bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } ir-to-bytecode = { path = "../../compiler/ir-to-bytecode", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } [features] diff --git a/language/testing-infra/module-generation/src/generator.rs b/language/testing-infra/module-generation/src/generator.rs index fc1408120f..0c2ccfa95c 100644 --- a/language/testing-infra/module-generation/src/generator.rs +++ b/language/testing-infra/module-generation/src/generator.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{options::ModuleGeneratorOptions, padding::Pad, utils::random_string}; use bytecode_verifier::verify_module; +use diem_types::account_address::AccountAddress; use ir_to_bytecode::compiler::compile_module; -use libra_types::account_address::AccountAddress; use move_ir_types::{ast::*, location::*}; use rand::{rngs::StdRng, Rng}; use std::collections::{BTreeSet, VecDeque}; diff --git a/language/testing-infra/module-generation/src/lib.rs b/language/testing-infra/module-generation/src/lib.rs index 3a4a97e8ce..e88356821f 100644 --- a/language/testing-infra/module-generation/src/lib.rs +++ b/language/testing-infra/module-generation/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod generator; diff --git a/language/testing-infra/module-generation/src/options.rs b/language/testing-infra/module-generation/src/options.rs index c4c57767a2..10857a7328 100644 --- a/language/testing-infra/module-generation/src/options.rs +++ b/language/testing-infra/module-generation/src/options.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Defines constants and options that are used for module generation diff --git a/language/testing-infra/module-generation/src/padding.rs b/language/testing-infra/module-generation/src/padding.rs index 64f10d9e3a..44be5a07e2 100644 --- a/language/testing-infra/module-generation/src/padding.rs +++ b/language/testing-infra/module-generation/src/padding.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{options::ModuleGeneratorOptions, utils::random_string}; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::Identifier; use rand::{rngs::StdRng, Rng, SeedableRng}; use vm::file_format::{Bytecode, CompiledModuleMut, Signature}; diff --git a/language/testing-infra/module-generation/src/utils.rs b/language/testing-infra/module-generation/src/utils.rs index 57d8c8d617..0035f7f7ab 100644 --- a/language/testing-infra/module-generation/src/utils.rs +++ b/language/testing-infra/module-generation/src/utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use rand::{distributions::Alphanumeric, rngs::StdRng, Rng}; diff --git a/language/testing-infra/test-generation/Cargo.toml b/language/testing-infra/test-generation/Cargo.toml index 82a7ae26d7..5dc2ee73e8 100644 --- a/language/testing-infra/test-generation/Cargo.toml +++ b/language/testing-infra/test-generation/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "test-generation" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra test generation" +authors = ["Diem Association "] +description = "Diem test generation" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -20,18 +20,18 @@ getrandom = "0.2.0" crossbeam-channel = "0.5.0" bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } -libra-config = { path = "../../../config", version = "0.1.0" } -libra-logger = { path = "../../../common/logger", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../../config", version = "0.1.0" } +diem-logger = { path = "../../../common/logger", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../../move-vm/runtime", version = "0.1.0" } move-vm-types = { path = "../../move-vm/types", version = "0.1.0" } module-generation = { path = "../module-generation", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } language-e2e-tests = { path = "../e2e-tests", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } [features] mirai-contracts = [] diff --git a/language/testing-infra/test-generation/measure-coverage.sh b/language/testing-infra/test-generation/measure-coverage.sh index 0146d4ada8..bb48199f54 100755 --- a/language/testing-infra/test-generation/measure-coverage.sh +++ b/language/testing-infra/test-generation/measure-coverage.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # Check that the test directory and report path arguments are provided diff --git a/language/testing-infra/test-generation/src/abstract_state.rs b/language/testing-infra/test-generation/src/abstract_state.rs index 045e254e24..ebcadb79b9 100644 --- a/language/testing-infra/test-generation/src/abstract_state.rs +++ b/language/testing-infra/test-generation/src/abstract_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{borrow_graph::BorrowGraph, error::VMError}; diff --git a/language/testing-infra/test-generation/src/borrow_graph.rs b/language/testing-infra/test-generation/src/borrow_graph.rs index 4721c7041c..87f2c0f83c 100644 --- a/language/testing-infra/test-generation/src/borrow_graph.rs +++ b/language/testing-infra/test-generation/src/borrow_graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::abstract_state::Mutability; diff --git a/language/testing-infra/test-generation/src/bytecode_generator.rs b/language/testing-infra/test-generation/src/bytecode_generator.rs index f79ef35372..4c67c8ee9d 100644 --- a/language/testing-infra/test-generation/src/bytecode_generator.rs +++ b/language/testing-infra/test-generation/src/bytecode_generator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,7 +10,7 @@ use crate::{ control_flow_graph::CFG, substitute, summaries, }; -use libra_logger::{debug, error, warn}; +use diem_logger::{debug, error, warn}; use rand::{rngs::StdRng, Rng}; use vm::{ access::ModuleAccess, diff --git a/language/testing-infra/test-generation/src/config.rs b/language/testing-infra/test-generation/src/config.rs index 505dd3d39b..71012da48d 100644 --- a/language/testing-infra/test-generation/src/config.rs +++ b/language/testing-infra/test-generation/src/config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use module_generation::ModuleGeneratorOptions; @@ -83,7 +83,7 @@ pub fn module_generation_settings() -> ModuleGeneratorOptions { #[derive(Debug, StructOpt)] #[structopt( name = "Bytecode Test Generator", - author = "Libra", + author = "Diem", about = "Tool for generating tests for the bytecode verifier and Move VM runtime." )] pub struct Args { diff --git a/language/testing-infra/test-generation/src/control_flow_graph.rs b/language/testing-infra/test-generation/src/control_flow_graph.rs index 4de3d27185..0376bbe509 100644 --- a/language/testing-infra/test-generation/src/control_flow_graph.rs +++ b/language/testing-infra/test-generation/src/control_flow_graph.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::abstract_state::{AbstractValue, BorrowState}; -use libra_logger::debug; +use diem_logger::debug; use rand::{rngs::StdRng, Rng}; use std::collections::{HashMap, VecDeque}; use vm::file_format::{Bytecode, Kind, Signature, SignatureToken}; diff --git a/language/testing-infra/test-generation/src/error.rs b/language/testing-infra/test-generation/src/error.rs index d988c357ab..04943055db 100644 --- a/language/testing-infra/test-generation/src/error.rs +++ b/language/testing-infra/test-generation/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::fmt; diff --git a/language/testing-infra/test-generation/src/lib.rs b/language/testing-infra/test-generation/src/lib.rs index 2bc1f91cf4..022e22099e 100644 --- a/language/testing-infra/test-generation/src/lib.rs +++ b/language/testing-infra/test-generation/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -19,12 +19,12 @@ use crate::config::{Args, EXECUTE_UNVERIFIED_MODULE, RUN_ON_VM}; use bytecode_generator::BytecodeGenerator; use bytecode_verifier::verify_module; use crossbeam_channel::{bounded, unbounded, Receiver, Sender}; +use diem_logger::{debug, error, info}; +use diem_state_view::StateView; +use diem_types::{account_address::AccountAddress, vm_status::StatusCode}; +use diem_vm::DiemVM; use getrandom::getrandom; use language_e2e_tests::executor::FakeExecutor; -use libra_logger::{debug, error, info}; -use libra_state_view::StateView; -use libra_types::{account_address::AccountAddress, vm_status::StatusCode}; -use libra_vm::LibraVM; use module_generation::generate_module; use move_core_types::{ gas_schedule::{GasAlgebra, GasUnits}, @@ -103,9 +103,9 @@ fn execute_function_in_module( module.identifier_at(entry_name_idx) }; { - let libra_vm = LibraVM::new(state_view); + let diem_vm = DiemVM::new(state_view); - let internals = libra_vm.internals(); + let internals = diem_vm.internals(); let log_context = NoContextLog::new(); let gas_schedule = internals.gas_schedule(&log_context)?; diff --git a/language/testing-infra/test-generation/src/main.rs b/language/testing-infra/test-generation/src/main.rs index a7395d29a5..9f6b95a244 100644 --- a/language/testing-infra/test-generation/src/main.rs +++ b/language/testing-infra/test-generation/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,7 +11,7 @@ fn setup_log() { if env::var("RUST_LOG").is_err() { env::set_var("RUST_LOG", "info"); } - ::libra_logger::Logger::new().init(); + ::diem_logger::Logger::new().init(); } pub fn main() { diff --git a/language/testing-infra/test-generation/src/summaries.rs b/language/testing-infra/test-generation/src/summaries.rs index df22772dd9..10f1e55231 100644 --- a/language/testing-infra/test-generation/src/summaries.rs +++ b/language/testing-infra/test-generation/src/summaries.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/test-generation/src/transitions.rs b/language/testing-infra/test-generation/src/transitions.rs index d08a4c6b22..3dba69e6d8 100644 --- a/language/testing-infra/test-generation/src/transitions.rs +++ b/language/testing-infra/test-generation/src/transitions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/testing-infra/test-generation/tests/boolean_instructions.rs b/language/testing-infra/test-generation/tests/boolean_instructions.rs index 3f81d68865..0cb1c969a0 100644 --- a/language/testing-infra/test-generation/tests/boolean_instructions.rs +++ b/language/testing-infra/test-generation/tests/boolean_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/call_graph.rs b/language/testing-infra/test-generation/tests/call_graph.rs index 3dc9509fc4..12b8fec7c0 100644 --- a/language/testing-infra/test-generation/tests/call_graph.rs +++ b/language/testing-infra/test-generation/tests/call_graph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/common.rs b/language/testing-infra/test-generation/tests/common.rs index ef95e6f5c3..cc66827e6d 100644 --- a/language/testing-infra/test-generation/tests/common.rs +++ b/language/testing-infra/test-generation/tests/common.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/comparison_instructions.rs b/language/testing-infra/test-generation/tests/comparison_instructions.rs index 39f224ca7a..ed454f0e27 100644 --- a/language/testing-infra/test-generation/tests/comparison_instructions.rs +++ b/language/testing-infra/test-generation/tests/comparison_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/control_flow_instructions.rs b/language/testing-infra/test-generation/tests/control_flow_instructions.rs index bbe0c20807..f4325ec5c6 100644 --- a/language/testing-infra/test-generation/tests/control_flow_instructions.rs +++ b/language/testing-infra/test-generation/tests/control_flow_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/generic_instructions.rs b/language/testing-infra/test-generation/tests/generic_instructions.rs index c1cef584c1..46aaeb5c23 100644 --- a/language/testing-infra/test-generation/tests/generic_instructions.rs +++ b/language/testing-infra/test-generation/tests/generic_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/integer_instructions.rs b/language/testing-infra/test-generation/tests/integer_instructions.rs index 60e2b4ff12..a6c44fc258 100644 --- a/language/testing-infra/test-generation/tests/integer_instructions.rs +++ b/language/testing-infra/test-generation/tests/integer_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/load_instructions.rs b/language/testing-infra/test-generation/tests/load_instructions.rs index b73e969a40..584cc966c4 100644 --- a/language/testing-infra/test-generation/tests/load_instructions.rs +++ b/language/testing-infra/test-generation/tests/load_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/local_instructions.rs b/language/testing-infra/test-generation/tests/local_instructions.rs index a381aaea28..b56f245da4 100644 --- a/language/testing-infra/test-generation/tests/local_instructions.rs +++ b/language/testing-infra/test-generation/tests/local_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/reference_instructions.rs b/language/testing-infra/test-generation/tests/reference_instructions.rs index b3316f34c9..80dd2200fe 100644 --- a/language/testing-infra/test-generation/tests/reference_instructions.rs +++ b/language/testing-infra/test-generation/tests/reference_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/special_instructions.rs b/language/testing-infra/test-generation/tests/special_instructions.rs index b50652a55f..5a2c9ec345 100644 --- a/language/testing-infra/test-generation/tests/special_instructions.rs +++ b/language/testing-infra/test-generation/tests/special_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/testing-infra/test-generation/tests/struct_instructions.rs b/language/testing-infra/test-generation/tests/struct_instructions.rs index fbbf16cd7c..c3d451b165 100644 --- a/language/testing-infra/test-generation/tests/struct_instructions.rs +++ b/language/testing-infra/test-generation/tests/struct_instructions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 extern crate test_generation; diff --git a/language/tools/disassembler/Cargo.toml b/language/tools/disassembler/Cargo.toml index cc093583af..3da2bff0b0 100644 --- a/language/tools/disassembler/Cargo.toml +++ b/language/tools/disassembler/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "disassembler" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] license = "Apache-2.0" publish = false edition = "2018" @@ -12,8 +12,8 @@ colored = "2.0.0" bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } bytecode-source-map = { path = "../../compiler/bytecode-source-map", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } diff --git a/language/tools/disassembler/src/disassembler.rs b/language/tools/disassembler/src/disassembler.rs index 31ac7d370c..c4c7c5a819 100644 --- a/language/tools/disassembler/src/disassembler.rs +++ b/language/tools/disassembler/src/disassembler.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, format_err, Result}; diff --git a/language/tools/disassembler/src/lib.rs b/language/tools/disassembler/src/lib.rs index d3d1b9d64d..ff30060eef 100644 --- a/language/tools/disassembler/src/lib.rs +++ b/language/tools/disassembler/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod disassembler; diff --git a/language/tools/disassembler/src/main.rs b/language/tools/disassembler/src/main.rs index b8c984f9de..5fe149f8e3 100644 --- a/language/tools/disassembler/src/main.rs +++ b/language/tools/disassembler/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/genesis-viewer/Cargo.toml b/language/tools/genesis-viewer/Cargo.toml index 9710f6feeb..026a70de7e 100644 --- a/language/tools/genesis-viewer/Cargo.toml +++ b/language/tools/genesis-viewer/Cargo.toml @@ -1,18 +1,18 @@ [package] name = "genesis-viewer" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra genesis viewer" +authors = ["Diem Association "] +description = "Diem genesis viewer" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } resource-viewer = { path = "../resource-viewer", version = "0.1.0"} vm-genesis = { path = "../vm-genesis", version = "0.1.0" } diff --git a/language/tools/genesis-viewer/src/main.rs b/language/tools/genesis-viewer/src/main.rs index 555e4b6d6a..57ef71eb06 100644 --- a/language/tools/genesis-viewer/src/main.rs +++ b/language/tools/genesis-viewer/src/main.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use compiled_stdlib::StdLibOptions; -use libra_types::{ +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, contract_event::ContractEvent, diff --git a/language/tools/move-cli/Cargo.toml b/language/tools/move-cli/Cargo.toml index 7fe0f5a25e..c9a9126e05 100644 --- a/language/tools/move-cli/Cargo.toml +++ b/language/tools/move-cli/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-cli" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] description = "CLI frontend for the Move compiler and VM" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,10 +19,10 @@ structopt = "0.3.21" compiled-stdlib = { path = "../../stdlib/compiled", version = "0.1.0" } disassembler = { path = "../disassembler", version = "0.1.0" } errmapgen = { path = "../../move-prover/errmapgen", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } move-coverage = { path = "../move-coverage", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-lang = { path = "../../move-lang", version = "0.0.1" } diff --git a/language/tools/move-cli/README.md b/language/tools/move-cli/README.md index f285334c2e..48ebf24059 100644 --- a/language/tools/move-cli/README.md +++ b/language/tools/move-cli/README.md @@ -6,7 +6,7 @@ mimics the Move memory model ## Installation ```shell -$ cargo install --path libra/language/tools/move-cli +$ cargo install --path diem/language/tools/move-cli ``` or ```shell @@ -442,25 +442,25 @@ are the following: [`Vector`](https://github.com/libra/libra/blob/master/language/stdlib/modules/Vector.move), and [`Signer`](https://github.com/libra/libra/blob/master/language/stdlib/modules/Signer.move). -* **libra:** This includes all of the modules in the `stdlib` mode, along with - all of the other modules that comprise the Libra Framework as defined +* **diem:** This includes all of the modules in the `stdlib` mode, along with + all of the other modules that comprise the Diem Framework as defined [here](https://github.com/libra/libra/blob/master/language/stdlib/modules/doc/overview.md). ### Running with genesis state -You can run the Move CLI using the modules from the Libra Framework by using -the `--mode libra` mode flag in your commands. However, a number of the Libra +You can run the Move CLI using the modules from the Diem Framework by using +the `--mode diem` mode flag in your commands. However, a number of the Diem Framework modules require a specific initialization sequence to be run in genesis in order to function properly. The `tests/testsuite/liba_smoke` test uses the CLI to run a fairly -realistic Libra genesis setup to initialize these modules, and also contains a +realistic Diem genesis setup to initialize these modules, and also contains a few basic transactions. If you want to experiment with running -different transactions with the Libra semantics, you can use this test as a +different transactions with the Diem semantics, you can use this test as a starting point, and add your scripts/modules as you wish. You'll need to update the `args.txt` file as well to exercise these new scripts as well, and then you can run them just like any other Move CLI test: ```shell -$ move test ./tests/testsuite/libra_smoke +$ move test ./tests/testsuite/diem_smoke ``` diff --git a/language/tools/move-cli/src/lib.rs b/language/tools/move-cli/src/lib.rs index 235654b40b..9f4aa9570c 100644 --- a/language/tools/move-cli/src/lib.rs +++ b/language/tools/move-cli/src/lib.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use disassembler::disassembler::Disassembler; // TODO: do we want to make these Move core types or allow this to be customizable? -use libra_types::{contract_event::ContractEvent, event::EventKey}; +use diem_types::{contract_event::ContractEvent, event::EventKey}; use move_core_types::{ account_address::AccountAddress, identifier::Identifier, diff --git a/language/tools/move-cli/src/main.rs b/language/tools/move-cli/src/main.rs index b7029e6c38..7e89ed4294 100644 --- a/language/tools/move-cli/src/main.rs +++ b/language/tools/move-cli/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use errmapgen::ErrorMapping; @@ -616,7 +616,7 @@ fn explain_error( match error.into_vm_status() { VMStatus::MoveAbort(AbortLocation::Module(id), abort_code) => { // try to use move-explain to explain the abort - // TODO: this will only work for errors in the stdlib or Libra Framework. We should + // TODO: this will only work for errors in the stdlib or Diem Framework. We should // add code to build an ErrorMapping for modules in move_lib as well let error_descriptions: ErrorMapping = lcs::from_bytes(compiled_stdlib::ERROR_DESCRIPTIONS)?; diff --git a/language/tools/move-cli/src/package.rs b/language/tools/move-cli/src/package.rs index 7976e23c8d..b950bbe8a5 100644 --- a/language/tools/move-cli/src/package.rs +++ b/language/tools/move-cli/src/package.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{anyhow, bail, Result}; @@ -59,8 +59,8 @@ static PACKAGE_STDLIB: Lazy = Lazy::new(|| MovePackage { deps: vec![], }); -static PACKAGE_LIBRA: Lazy = Lazy::new(|| MovePackage { - name: "libra", +static PACKAGE_DIEM: Lazy = Lazy::new(|| MovePackage { + name: "diem", sources: vec![SourceFilter { source_dir: &DIR_STDLIB, inclusion: None, // include everything @@ -252,7 +252,7 @@ pub fn parse_mode_from_string(mode: &str) -> Result { match mode { "bare" => Ok(Mode(vec![])), "stdlib" => Ok(Mode(vec![&*PACKAGE_STDLIB])), - "libra" => Ok(Mode(vec![&*PACKAGE_LIBRA])), + "diem" => Ok(Mode(vec![&*PACKAGE_DIEM])), _ => bail!("Invalid mode for dependency: {}", mode), } } diff --git a/language/tools/move-cli/src/test.rs b/language/tools/move-cli/src/test.rs index 6549a40c78..14dfef1b70 100644 --- a/language/tools/move-cli/src/test.rs +++ b/language/tools/move-cli/src/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{DEFAULT_BUILD_DIR, DEFAULT_PACKAGE_DIR, DEFAULT_STORAGE_DIR}; diff --git a/language/tools/move-cli/tests/cli_tests.rs b/language/tools/move-cli/tests/cli_tests.rs index 94d80b452a..fab4c84ee3 100644 --- a/language/tools/move-cli/tests/cli_tests.rs +++ b/language/tools/move-cli/tests/cli_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_cli::test; diff --git a/language/tools/move-cli/tests/cli_testsuite.rs b/language/tools/move-cli/tests/cli_testsuite.rs index 92495e8782..2aaffd01e4 100644 --- a/language/tools/move-cli/tests/cli_testsuite.rs +++ b/language/tools/move-cli/tests/cli_testsuite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_cli::test; diff --git a/language/tools/move-cli/tests/testsuite/compare_smoke/args.exp b/language/tools/move-cli/tests/testsuite/compare_smoke/args.exp index d848da639a..4fe1e275c9 100644 --- a/language/tools/move-cli/tests/testsuite/compare_smoke/args.exp +++ b/language/tools/move-cli/tests/testsuite/compare_smoke/args.exp @@ -1,4 +1,4 @@ -Command `publish src/modules --mode libra`: -Command `run src/scripts/compare.move --mode libra --dry-run`: -Command `run src/scripts/set.move --mode libra --dry-run`: +Command `publish src/modules --mode diem`: +Command `run src/scripts/compare.move --mode diem --dry-run`: +Command `run src/scripts/set.move --mode diem --dry-run`: Execution aborted with code 999 in module 00000000000000000000000000000002::Set. diff --git a/language/tools/move-cli/tests/testsuite/compare_smoke/args.txt b/language/tools/move-cli/tests/testsuite/compare_smoke/args.txt index 013d425768..402bdc832c 100644 --- a/language/tools/move-cli/tests/testsuite/compare_smoke/args.txt +++ b/language/tools/move-cli/tests/testsuite/compare_smoke/args.txt @@ -1,3 +1,3 @@ -publish src/modules --mode libra -run src/scripts/compare.move --mode libra --dry-run -run src/scripts/set.move --mode libra --dry-run +publish src/modules --mode diem +run src/scripts/compare.move --mode diem --dry-run +run src/scripts/set.move --mode diem --dry-run diff --git a/language/tools/move-cli/tests/testsuite/compare_smoke/src/modules/NameService.move b/language/tools/move-cli/tests/testsuite/compare_smoke/src/modules/NameService.move index abd7634e6e..caa41b336f 100644 --- a/language/tools/move-cli/tests/testsuite/compare_smoke/src/modules/NameService.move +++ b/language/tools/move-cli/tests/testsuite/compare_smoke/src/modules/NameService.move @@ -5,7 +5,7 @@ address 0x2 { // the account address of each list node is actually the address bound to the key(name) module NameService { use 0x2::SortedLinkedList::{Self, EntryHandle}; - use 0x1::LibraBlock; + use 0x1::DiemBlock; use 0x1::Signer; use 0x1::Vector; @@ -31,7 +31,7 @@ module NameService { fun add_expirtation(account: &signer) acquires Expiration { let sender = Signer::address_of(account); - let current_block = LibraBlock::get_current_block_height(); + let current_block = DiemBlock::get_current_block_height(); if (!exists(sender)) { move_to(account, Expiration {expire_on_block_height: Vector::singleton(current_block + EXPIRE_AFTER())}); } else { @@ -90,7 +90,7 @@ module NameService { } public fun is_expired(entry: EntryHandle): bool acquires Expiration { - let current_block_height = LibraBlock::get_current_block_height(); + let current_block_height = DiemBlock::get_current_block_height(); current_block_height > expire_on_block_height(entry) } } diff --git a/language/tools/move-cli/tests/testsuite/diem_smoke/args.exp b/language/tools/move-cli/tests/testsuite/diem_smoke/args.exp new file mode 100644 index 0000000000..f6dce1c40d --- /dev/null +++ b/language/tools/move-cli/tests/testsuite/diem_smoke/args.exp @@ -0,0 +1,132 @@ +Command `run genesis.move --mode diem --signers 0xA550C18 0xB1E55ED -v`: +Compiling transaction script... +Emitted 2 events: +Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000A550C18), U64(0)] }))) as the 0th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000B1E55ED), U64(1)] }))) as the 1th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Changed resource(s) under 2 address(es): + Changed 28 resource(s) under address 0000000000000000000000000A550C18: + Added type 0x1::DiemTimestamp::CurrentTimeMicroseconds: [U64(0)] + Added type 0x1::Event::EventHandleGenerator: [U64(18), Address(a550c18)] + Added type 0x1::Roles::RoleId: [U64(0)] + Added type 0x1::AccountFreezing::FreezeEventsHolder: [[U64(0), [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::AccountFreezing::FreezingBit: [false] + Added type 0x1::ChainId::ChainId: [U8(0)] + Added type 0x1::DiemConfig::Configuration: [U64(0), U64(0), [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::XDX::Reserve: [[false], [false], [[U64(0)]]] + Added type 0x1::DualAttestation::Limit: [U64(1000000000)] + Added type 0x1::SlidingNonce::SlidingNonce: [U64(0), U128(0)] + Added type 0x1::DiemAccount::AccountOperationsCapability: [[false], [U64(2), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::DiemAccount::DiemAccount: [[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], [[[Address(a550c18)]]], [[[Address(a550c18)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], U64(0)] + Added type 0x1::DiemAccount::DiemWriteSetManager: [[U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::DiemSystem::CapabilityHolder: [[false]] + Added type 0x1::DiemBlock::BlockMetadata: [U64(0), [U64(0), [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::DiemConfig::DiemConfig<0x1::RegisteredCurrencies::RegisteredCurrencies>: [[[[88, 85, 83], [88, 68, 88]]]] + Added type 0x1::DiemConfig::DiemConfig<0x1::DiemTransactionPublishingOption::DiemTransactionPublishingOption>: [[[], true]] + Added type 0x1::DiemConfig::DiemConfig<0x1::DiemSystem::DiemSystem>: [[U8(0), []]] + Added type 0x1::DiemConfig::DiemConfig<0x1::DiemVMConfig::DiemVMConfig>: [[[[], [], [U64(4), U64(9), U64(600), U64(600), U64(8), U64(4000000), U64(0), U64(10000), U64(4096), U64(1000), U64(800)]]]] + Added type 0x1::DiemConfig::DiemConfig<0x1::DiemVersion::DiemVersion>: [[U64(1)]] + Added type 0x1::DiemConfig::ModifyConfigCapability<0x1::RegisteredCurrencies::RegisteredCurrencies>: [false] + Added type 0x1::DiemConfig::ModifyConfigCapability<0x1::DiemTransactionPublishingOption::DiemTransactionPublishingOption>: [false] + Added type 0x1::DiemConfig::ModifyConfigCapability<0x1::DiemVMConfig::DiemVMConfig>: [false] + Added type 0x1::DiemConfig::ModifyConfigCapability<0x1::DiemVersion::DiemVersion>: [false] + Added type 0x1::Diem::CurrencyInfo<0x1::XUS::XUS>: [U128(0), U64(0), [U64(4294967296)], false, U64(1000000), U64(100), [88, 85, 83], true, [U64(0), [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::Diem::CurrencyInfo<0x1::XDX::XDX>: [U128(0), U64(0), [U64(4294967296)], true, U64(1000000), U64(1000), [88, 68, 88], false, [U64(0), [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] + Added type 0x1::AccountLimits::LimitsDefinition<0x1::XUS::XUS>: [U64(18446744073709551615), U64(18446744073709551615), U64(86400000000), U64(18446744073709551615)] + Added type 0x1::AccountLimits::LimitsDefinition<0x1::XDX::XDX>: [U64(18446744073709551615), U64(18446744073709551615), U64(86400000000), U64(18446744073709551615)] + Changed 8 resource(s) under address 0000000000000000000000000B1E55ED: + Added type 0x1::Event::EventHandleGenerator: [U64(2), Address(b1e55ed)] + Added type 0x1::Roles::RoleId: [U64(1)] + Added type 0x1::AccountFreezing::FreezingBit: [false] + Added type 0x1::SlidingNonce::SlidingNonce: [U64(0), U128(0)] + Added type 0x1::DiemAccount::DiemAccount: [[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], [[[Address(b1e55ed)]]], [[[Address(b1e55ed)]]], [U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 30, 85, 237]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 30, 85, 237]], U64(0)] + Added type 0x1::Diem::BurnCapability<0x1::XUS::XUS>: [false] + Added type 0x1::Diem::MintCapability<0x1::XUS::XUS>: [false] + Added type 0x1::TransactionFee::TransactionFee<0x1::XUS::XUS>: [[U64(0)], [[U64(0)]]] +Command `run ../../../../../stdlib/transaction_scripts/create_designated_dealer.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xDD x"00000000000000000000000000000000" b"DD" true -v`: +Compiling transaction script... +Emitted 1 events: +Emitted Value(Container(StructC(RefCell { value: [Address(000000000000000000000000000000DD), U64(2)] }))) as the 2th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Changed resource(s) under 2 address(es): + Changed 10 resource(s) under address 000000000000000000000000000000DD: + Added type 0x1::Event::EventHandleGenerator: [U64(5), Address(dd)] + Added type 0x1::Roles::RoleId: [U64(2)] + Added type 0x1::AccountFreezing::FreezingBit: [false] + Added type 0x1::DesignatedDealer::Dealer: [[U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] + Added type 0x1::DualAttestation::Credential: [[68, 68], [], [], U64(18446744073709551615), [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] + Added type 0x1::DiemAccount::DiemAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] + Added type 0x1::Diem::Preburn<0x1::XUS::XUS>: [[U64(0)]] + Added type 0x1::DesignatedDealer::TierInfo<0x1::XUS::XUS>: [U64(0), U64(0), [500000000000, 5000000000000, 50000000000000, 500000000000000]] + Added type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(0)]] + Added type 0x1::DiemAccount::Balance<0x1::XDX::XDX>: [[U64(0)]] + Changed 1 resource(s) under address 0000000000000000000000000A550C18: + Changed type 0x1::DiemAccount::AccountOperationsCapability: [[false], [U64(3), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] +Command `run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xA x"00000000000000000000000000000000" b"VASP_A" true -v`: +Compiling transaction script... +Emitted 1 events: +Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000000000A), U64(5)] }))) as the 3th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Changed resource(s) under 2 address(es): + Changed 8 resource(s) under address 0000000000000000000000000000000A: + Added type 0x1::Event::EventHandleGenerator: [U64(4), Address(a)] + Added type 0x1::Roles::RoleId: [U64(5)] + Added type 0x1::AccountFreezing::FreezingBit: [false] + Added type 0x1::VASP::ParentVASP: [U64(0)] + Added type 0x1::DualAttestation::Credential: [[86, 65, 83, 80, 95, 65], [], [], U64(18446744073709551615), [U64(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]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]]] + Added type 0x1::DiemAccount::DiemAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] + Added type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(0)]] + Added type 0x1::DiemAccount::Balance<0x1::XDX::XDX>: [[U64(0)]] + Changed 1 resource(s) under address 0000000000000000000000000A550C18: + Changed type 0x1::DiemAccount::AccountOperationsCapability: [[false], [U64(4), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] +Command `run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xB x"00000000000000000000000000000000" b"VASP_B" true -v`: +Compiling transaction script... +Emitted 1 events: +Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000000000B), U64(5)] }))) as the 4th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Changed resource(s) under 2 address(es): + Changed 8 resource(s) under address 0000000000000000000000000000000B: + Added type 0x1::Event::EventHandleGenerator: [U64(4), Address(b)] + Added type 0x1::Roles::RoleId: [U64(5)] + Added type 0x1::AccountFreezing::FreezingBit: [false] + Added type 0x1::VASP::ParentVASP: [U64(0)] + Added type 0x1::DualAttestation::Credential: [[86, 65, 83, 80, 95, 66], [], [], U64(18446744073709551615), [U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]]] + Added type 0x1::DiemAccount::DiemAccount: [[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, 11], [[[Address(b)]]], [[[Address(b)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], U64(0)] + Added type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(0)]] + Added type 0x1::DiemAccount::Balance<0x1::XDX::XDX>: [[U64(0)]] + Changed 1 resource(s) under address 0000000000000000000000000A550C18: + Changed type 0x1::DiemAccount::AccountOperationsCapability: [[false], [U64(5), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] +Command `run ../../../../../stdlib/transaction_scripts/tiered_mint.move --mode diem --type-args 0x1::XUS::XUS --signers 0xB1E55ED --args 0 0xDD 1000 0 -v`: +Compiling transaction script... +Emitted 3 events: +Emitted Value(Container(StructC(RefCell { value: [Container(VecU8(RefCell { value: [88, 85, 83] })), Address(000000000000000000000000000000DD), U64(1000)] }))) as the 0th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] +Emitted Value(Container(StructC(RefCell { value: [U64(1000), Container(VecU8(RefCell { value: [88, 85, 83] }))] }))) as the 0th event to stream [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] +Emitted Value(Container(StructC(RefCell { value: [U64(1000), Container(VecU8(RefCell { value: [88, 85, 83] })), Address(00000000000000000000000000000000), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] +Changed resource(s) under 2 address(es): + Changed 4 resource(s) under address 000000000000000000000000000000DD: + Changed type 0x1::DesignatedDealer::Dealer: [[U64(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] + Changed type 0x1::DiemAccount::DiemAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] + Changed type 0x1::DesignatedDealer::TierInfo<0x1::XUS::XUS>: [U64(0), U64(1000), [500000000000, 5000000000000, 50000000000000, 500000000000000]] + Changed type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(1000)]] + Changed 1 resource(s) under address 0000000000000000000000000A550C18: + Changed type 0x1::Diem::CurrencyInfo<0x1::XUS::XUS>: [U128(1000), U64(0), [U64(4294967296)], false, U64(1000000), U64(100), [88, 85, 83], true, [U64(1), [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] +Command `run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode diem --type-args 0x1::XUS::XUS --signers 0xDD --args 0xA 700 x"" x"" -v`: +Compiling transaction script... +Emitted 2 events: +Emitted Value(Container(StructC(RefCell { value: [U64(700), Container(VecU8(RefCell { value: [88, 85, 83] })), Address(0000000000000000000000000000000A), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] +Emitted Value(Container(StructC(RefCell { value: [U64(700), Container(VecU8(RefCell { value: [88, 85, 83] })), Address(000000000000000000000000000000DD), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10] +Changed resource(s) under 2 address(es): + Changed 2 resource(s) under address 0000000000000000000000000000000A: + Changed type 0x1::DiemAccount::DiemAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] + Changed type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(700)]] + Changed 2 resource(s) under address 000000000000000000000000000000DD: + Changed type 0x1::DiemAccount::DiemAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(1), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] + Changed type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(300)]] +Command `run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode diem --type-args 0x1::XUS::XUS --signers 0xA --args 0xB 500 x"" x"" -v`: +Compiling transaction script... +Emitted 2 events: +Emitted Value(Container(StructC(RefCell { value: [U64(500), Container(VecU8(RefCell { value: [88, 85, 83] })), Address(0000000000000000000000000000000B), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10] +Emitted Value(Container(StructC(RefCell { value: [U64(500), Container(VecU8(RefCell { value: [88, 85, 83] })), Address(0000000000000000000000000000000A), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11] +Changed resource(s) under 2 address(es): + Changed 2 resource(s) under address 0000000000000000000000000000000A: + Changed type 0x1::DiemAccount::DiemAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] + Changed type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(200)]] + Changed 2 resource(s) under address 0000000000000000000000000000000B: + Changed type 0x1::DiemAccount::DiemAccount: [[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, 11], [[[Address(b)]]], [[[Address(b)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], U64(0)] + Changed type 0x1::DiemAccount::Balance<0x1::XUS::XUS>: [[U64(500)]] diff --git a/language/tools/move-cli/tests/testsuite/diem_smoke/args.txt b/language/tools/move-cli/tests/testsuite/diem_smoke/args.txt new file mode 100644 index 0000000000..3926def109 --- /dev/null +++ b/language/tools/move-cli/tests/testsuite/diem_smoke/args.txt @@ -0,0 +1,22 @@ +# Smoke test that runs a mock of Diem genesis and tries a few basic transactions + +# Run a realistic mock of the genesis process +run genesis.move --mode diem --signers 0xA550C18 0xB1E55ED -v + +# Create DD account at 0xDD with a balance in each currency +run ../../../../../stdlib/transaction_scripts/create_designated_dealer.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xDD x"00000000000000000000000000000000" b"DD" true -v + +# create parent VASP account at 0xA with a balance in each currency +run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xA x"00000000000000000000000000000000" b"VASP_A" true -v + +# create parent VASP account at 0xB with a balance in each currency +run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode diem --type-args 0x1::XDX::XDX --signers 0xB1E55ED --args 0 0xB x"00000000000000000000000000000000" b"VASP_B" true -v + +# mint 1000 XUS to 0xDD +run ../../../../../stdlib/transaction_scripts/tiered_mint.move --mode diem --type-args 0x1::XUS::XUS --signers 0xB1E55ED --args 0 0xDD 1000 0 -v + +# transfer 700 XUS from 0xDD to 0xA +run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode diem --type-args 0x1::XUS::XUS --signers 0xDD --args 0xA 700 x"" x"" -v + +# transfer 500 XUS from 0xA to 0xB +run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode diem --type-args 0x1::XUS::XUS --signers 0xA --args 0xB 500 x"" x"" -v diff --git a/language/tools/move-cli/tests/testsuite/diem_smoke/genesis.move b/language/tools/move-cli/tests/testsuite/diem_smoke/genesis.move new file mode 100644 index 0000000000..ebe4fcf0ee --- /dev/null +++ b/language/tools/move-cli/tests/testsuite/diem_smoke/genesis.move @@ -0,0 +1,89 @@ +script { + use 0x1::AccountFreezing; + use 0x1::ChainId; + use 0x1::XUS; + use 0x1::DualAttestation; + use 0x1::XDX; + use 0x1::Diem; + use 0x1::DiemAccount; + use 0x1::DiemBlock; + use 0x1::DiemConfig; + use 0x1::DiemSystem; + use 0x1::DiemTimestamp; + use 0x1::DiemTransactionPublishingOption; + use 0x1::DiemVersion; + use 0x1::TransactionFee; + use 0x1::DiemVMConfig; + use 0x1::Vector; + + fun initialize( + dr_account: &signer, + tc_account: &signer, + ) { + let dummy_auth_key = x"0000000000000000000000000000000000000000000000000000000000000000"; + let dr_auth_key = copy dummy_auth_key; + let tc_auth_key = dummy_auth_key; + + // no script allowlist + allow open publishing + let initial_script_allow_list = Vector::empty(); + let is_open_module = true; + let instruction_schedule = Vector::empty(); + let native_schedule = Vector::empty(); + let chain_id = 0; + + DiemAccount::initialize(dr_account, x"00000000000000000000000000000000"); + + ChainId::initialize(dr_account, chain_id); + + // On-chain config setup + DiemConfig::initialize(dr_account); + + // Currency setup + Diem::initialize(dr_account); + + // Currency setup + XUS::initialize(dr_account, tc_account); + + XDX::initialize( + dr_account, + tc_account, + ); + + AccountFreezing::initialize(dr_account); + + TransactionFee::initialize(tc_account); + + DiemSystem::initialize_validator_set( + dr_account, + ); + DiemVersion::initialize( + dr_account, + ); + DualAttestation::initialize( + dr_account, + ); + DiemBlock::initialize_block_metadata(dr_account); + + let dr_rotate_key_cap = DiemAccount::extract_key_rotation_capability(dr_account); + DiemAccount::rotate_authentication_key(&dr_rotate_key_cap, dr_auth_key); + DiemAccount::restore_key_rotation_capability(dr_rotate_key_cap); + + DiemTransactionPublishingOption::initialize( + dr_account, + initial_script_allow_list, + is_open_module, + ); + + DiemVMConfig::initialize( + dr_account, + instruction_schedule, + native_schedule, + ); + + let tc_rotate_key_cap = DiemAccount::extract_key_rotation_capability(tc_account); + DiemAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key); + DiemAccount::restore_key_rotation_capability(tc_rotate_key_cap); + DiemTimestamp::set_time_has_started(dr_account); + } + +} diff --git a/language/tools/move-cli/tests/testsuite/libra_smoke/args.exp b/language/tools/move-cli/tests/testsuite/libra_smoke/args.exp deleted file mode 100644 index dcd7b0d9d9..0000000000 --- a/language/tools/move-cli/tests/testsuite/libra_smoke/args.exp +++ /dev/null @@ -1,132 +0,0 @@ -Command `run genesis.move --mode libra --signers 0xA550C18 0xB1E55ED -v`: -Compiling transaction script... -Emitted 2 events: -Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000A550C18), U64(0)] }))) as the 0th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000B1E55ED), U64(1)] }))) as the 1th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Changed resource(s) under 2 address(es): - Changed 28 resource(s) under address 0000000000000000000000000A550C18: - Added type 0x1::Event::EventHandleGenerator: [U64(18), Address(a550c18)] - Added type 0x1::LibraTimestamp::CurrentTimeMicroseconds: [U64(0)] - Added type 0x1::Roles::RoleId: [U64(0)] - Added type 0x1::AccountFreezing::FreezeEventsHolder: [[U64(0), [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::AccountFreezing::FreezingBit: [false] - Added type 0x1::ChainId::ChainId: [U8(0)] - Added type 0x1::LibraConfig::Configuration: [U64(0), U64(0), [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::LBR::Reserve: [[false], [false], [[U64(0)]]] - Added type 0x1::DualAttestation::Limit: [U64(1000000000)] - Added type 0x1::SlidingNonce::SlidingNonce: [U64(0), U128(0)] - Added type 0x1::LibraAccount::AccountOperationsCapability: [[false], [U64(2), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::LibraAccount::LibraAccount: [[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], [[[Address(a550c18)]]], [[[Address(a550c18)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], U64(0)] - Added type 0x1::LibraAccount::LibraWriteSetManager: [[U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::LibraSystem::CapabilityHolder: [[false]] - Added type 0x1::LibraBlock::BlockMetadata: [U64(0), [U64(0), [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::AccountLimits::LimitsDefinition<0x1::Coin1::Coin1>: [U64(18446744073709551615), U64(18446744073709551615), U64(86400000000), U64(18446744073709551615)] - Added type 0x1::AccountLimits::LimitsDefinition<0x1::LBR::LBR>: [U64(18446744073709551615), U64(18446744073709551615), U64(86400000000), U64(18446744073709551615)] - Added type 0x1::LibraConfig::LibraConfig<0x1::RegisteredCurrencies::RegisteredCurrencies>: [[[[67, 111, 105, 110, 49], [76, 66, 82]]]] - Added type 0x1::LibraConfig::LibraConfig<0x1::LibraTransactionPublishingOption::LibraTransactionPublishingOption>: [[[], true]] - Added type 0x1::LibraConfig::LibraConfig<0x1::LibraSystem::LibraSystem>: [[U8(0), []]] - Added type 0x1::LibraConfig::LibraConfig<0x1::LibraVMConfig::LibraVMConfig>: [[[[], [], [U64(4), U64(9), U64(600), U64(600), U64(8), U64(4000000), U64(0), U64(10000), U64(4096), U64(1000), U64(800)]]]] - Added type 0x1::LibraConfig::LibraConfig<0x1::LibraVersion::LibraVersion>: [[U64(1)]] - Added type 0x1::LibraConfig::ModifyConfigCapability<0x1::RegisteredCurrencies::RegisteredCurrencies>: [false] - Added type 0x1::LibraConfig::ModifyConfigCapability<0x1::LibraTransactionPublishingOption::LibraTransactionPublishingOption>: [false] - Added type 0x1::LibraConfig::ModifyConfigCapability<0x1::LibraVMConfig::LibraVMConfig>: [false] - Added type 0x1::LibraConfig::ModifyConfigCapability<0x1::LibraVersion::LibraVersion>: [false] - Added type 0x1::Libra::CurrencyInfo<0x1::Coin1::Coin1>: [U128(0), U64(0), [U64(4294967296)], false, U64(1000000), U64(100), [67, 111, 105, 110, 49], true, [U64(0), [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Added type 0x1::Libra::CurrencyInfo<0x1::LBR::LBR>: [U128(0), U64(0), [U64(4294967296)], true, U64(1000000), U64(1000), [76, 66, 82], false, [U64(0), [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] - Changed 8 resource(s) under address 0000000000000000000000000B1E55ED: - Added type 0x1::Event::EventHandleGenerator: [U64(2), Address(b1e55ed)] - Added type 0x1::Roles::RoleId: [U64(1)] - Added type 0x1::AccountFreezing::FreezingBit: [false] - Added type 0x1::SlidingNonce::SlidingNonce: [U64(0), U128(0)] - Added type 0x1::LibraAccount::LibraAccount: [[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], [[[Address(b1e55ed)]]], [[[Address(b1e55ed)]]], [U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 30, 85, 237]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 30, 85, 237]], U64(0)] - Added type 0x1::Libra::BurnCapability<0x1::Coin1::Coin1>: [false] - Added type 0x1::Libra::MintCapability<0x1::Coin1::Coin1>: [false] - Added type 0x1::TransactionFee::TransactionFee<0x1::Coin1::Coin1>: [[U64(0)], [[U64(0)]]] -Command `run ../../../../../stdlib/transaction_scripts/create_designated_dealer.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xDD x"00000000000000000000000000000000" b"DD" true -v`: -Compiling transaction script... -Emitted 1 events: -Emitted Value(Container(StructC(RefCell { value: [Address(000000000000000000000000000000DD), U64(2)] }))) as the 2th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Changed resource(s) under 2 address(es): - Changed 10 resource(s) under address 000000000000000000000000000000DD: - Added type 0x1::Event::EventHandleGenerator: [U64(5), Address(dd)] - Added type 0x1::Roles::RoleId: [U64(2)] - Added type 0x1::AccountFreezing::FreezingBit: [false] - Added type 0x1::DesignatedDealer::Dealer: [[U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] - Added type 0x1::DualAttestation::Credential: [[68, 68], [], [], U64(18446744073709551615), [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] - Added type 0x1::LibraAccount::LibraAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] - Added type 0x1::Libra::Preburn<0x1::Coin1::Coin1>: [[U64(0)]] - Added type 0x1::DesignatedDealer::TierInfo<0x1::Coin1::Coin1>: [U64(0), U64(0), [500000000000, 5000000000000, 50000000000000, 500000000000000]] - Added type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(0)]] - Added type 0x1::LibraAccount::Balance<0x1::LBR::LBR>: [[U64(0)]] - Changed 1 resource(s) under address 0000000000000000000000000A550C18: - Changed type 0x1::LibraAccount::AccountOperationsCapability: [[false], [U64(3), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] -Command `run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xA x"00000000000000000000000000000000" b"VASP_A" true -v`: -Compiling transaction script... -Emitted 1 events: -Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000000000A), U64(5)] }))) as the 3th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Changed resource(s) under 2 address(es): - Changed 8 resource(s) under address 0000000000000000000000000000000A: - Added type 0x1::Event::EventHandleGenerator: [U64(4), Address(a)] - Added type 0x1::Roles::RoleId: [U64(5)] - Added type 0x1::AccountFreezing::FreezingBit: [false] - Added type 0x1::VASP::ParentVASP: [U64(0)] - Added type 0x1::DualAttestation::Credential: [[86, 65, 83, 80, 95, 65], [], [], U64(18446744073709551615), [U64(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]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]]] - Added type 0x1::LibraAccount::LibraAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] - Added type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(0)]] - Added type 0x1::LibraAccount::Balance<0x1::LBR::LBR>: [[U64(0)]] - Changed 1 resource(s) under address 0000000000000000000000000A550C18: - Changed type 0x1::LibraAccount::AccountOperationsCapability: [[false], [U64(4), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] -Command `run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xB x"00000000000000000000000000000000" b"VASP_B" true -v`: -Compiling transaction script... -Emitted 1 events: -Emitted Value(Container(StructC(RefCell { value: [Address(0000000000000000000000000000000B), U64(5)] }))) as the 4th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Changed resource(s) under 2 address(es): - Changed 8 resource(s) under address 0000000000000000000000000000000B: - Added type 0x1::Event::EventHandleGenerator: [U64(4), Address(b)] - Added type 0x1::Roles::RoleId: [U64(5)] - Added type 0x1::AccountFreezing::FreezingBit: [false] - Added type 0x1::VASP::ParentVASP: [U64(0)] - Added type 0x1::DualAttestation::Credential: [[86, 65, 83, 80, 95, 66], [], [], U64(18446744073709551615), [U64(0), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]]] - Added type 0x1::LibraAccount::LibraAccount: [[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, 11], [[[Address(b)]]], [[[Address(b)]]], [U64(0), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], U64(0)] - Added type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(0)]] - Added type 0x1::LibraAccount::Balance<0x1::LBR::LBR>: [[U64(0)]] - Changed 1 resource(s) under address 0000000000000000000000000A550C18: - Changed type 0x1::LibraAccount::AccountOperationsCapability: [[false], [U64(5), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] -Command `run ../../../../../stdlib/transaction_scripts/tiered_mint.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xB1E55ED --args 0 0xDD 1000 0 -v`: -Compiling transaction script... -Emitted 3 events: -Emitted Value(Container(StructC(RefCell { value: [Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(000000000000000000000000000000DD), U64(1000)] }))) as the 0th event to stream [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] -Emitted Value(Container(StructC(RefCell { value: [U64(1000), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] }))] }))) as the 0th event to stream [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24] -Emitted Value(Container(StructC(RefCell { value: [U64(1000), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(00000000000000000000000000000000), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] -Changed resource(s) under 2 address(es): - Changed 4 resource(s) under address 000000000000000000000000000000DD: - Changed type 0x1::DesignatedDealer::Dealer: [[U64(1), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]]] - Changed type 0x1::LibraAccount::LibraAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(0), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] - Changed type 0x1::DesignatedDealer::TierInfo<0x1::Coin1::Coin1>: [U64(0), U64(1000), [500000000000, 5000000000000, 50000000000000, 500000000000000]] - Changed type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(1000)]] - Changed 1 resource(s) under address 0000000000000000000000000A550C18: - Changed type 0x1::Libra::CurrencyInfo<0x1::Coin1::Coin1>: [U128(1000), U64(0), [U64(4294967296)], false, U64(1000000), U64(100), [67, 111, 105, 110, 49], true, [U64(1), [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]], [U64(0), [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 85, 12, 24]]] -Command `run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xDD --args 0xA 700 x"" x"" -v`: -Compiling transaction script... -Emitted 2 events: -Emitted Value(Container(StructC(RefCell { value: [U64(700), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(0000000000000000000000000000000A), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221] -Emitted Value(Container(StructC(RefCell { value: [U64(700), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(000000000000000000000000000000DD), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10] -Changed resource(s) under 2 address(es): - Changed 2 resource(s) under address 0000000000000000000000000000000A: - Changed type 0x1::LibraAccount::LibraAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] - Changed type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(700)]] - Changed 2 resource(s) under address 000000000000000000000000000000DD: - Changed type 0x1::LibraAccount::LibraAccount: [[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, 221], [[[Address(dd)]]], [[[Address(dd)]]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], [U64(1), [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221]], U64(0)] - Changed type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(300)]] -Command `run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xA --args 0xB 500 x"" x"" -v`: -Compiling transaction script... -Emitted 2 events: -Emitted Value(Container(StructC(RefCell { value: [U64(500), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(0000000000000000000000000000000B), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10] -Emitted Value(Container(StructC(RefCell { value: [U64(500), Container(VecU8(RefCell { value: [67, 111, 105, 110, 49] })), Address(0000000000000000000000000000000A), Container(VecU8(RefCell { value: [] }))] }))) as the 0th event to stream [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11] -Changed resource(s) under 2 address(es): - Changed 2 resource(s) under address 0000000000000000000000000000000A: - Changed type 0x1::LibraAccount::LibraAccount: [[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], [[[Address(a)]]], [[[Address(a)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], [U64(1), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]], U64(0)] - Changed type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(200)]] - Changed 2 resource(s) under address 0000000000000000000000000000000B: - Changed type 0x1::LibraAccount::LibraAccount: [[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, 11], [[[Address(b)]]], [[[Address(b)]]], [U64(1), [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], [U64(0), [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11]], U64(0)] - Changed type 0x1::LibraAccount::Balance<0x1::Coin1::Coin1>: [[U64(500)]] diff --git a/language/tools/move-cli/tests/testsuite/libra_smoke/args.txt b/language/tools/move-cli/tests/testsuite/libra_smoke/args.txt deleted file mode 100644 index 4e50367b55..0000000000 --- a/language/tools/move-cli/tests/testsuite/libra_smoke/args.txt +++ /dev/null @@ -1,22 +0,0 @@ -# Smoke test that runs a mock of Libra genesis and tries a few basic transactions - -# Run a realistic mock of the genesis process -run genesis.move --mode libra --signers 0xA550C18 0xB1E55ED -v - -# Create DD account at 0xDD with a balance in each currency -run ../../../../../stdlib/transaction_scripts/create_designated_dealer.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xDD x"00000000000000000000000000000000" b"DD" true -v - -# create parent VASP account at 0xA with a balance in each currency -run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xA x"00000000000000000000000000000000" b"VASP_A" true -v - -# create parent VASP account at 0xB with a balance in each currency -run ../../../../../stdlib/transaction_scripts/create_parent_vasp_account.move --mode libra --type-args 0x1::LBR::LBR --signers 0xB1E55ED --args 0 0xB x"00000000000000000000000000000000" b"VASP_B" true -v - -# mint 1000 Coin1 to 0xDD -run ../../../../../stdlib/transaction_scripts/tiered_mint.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xB1E55ED --args 0 0xDD 1000 0 -v - -# transfer 700 Coin1 from 0xDD to 0xA -run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xDD --args 0xA 700 x"" x"" -v - -# transfer 500 Coin1 from 0xA to 0xB -run ../../../../../stdlib/transaction_scripts/peer_to_peer_with_metadata.move --mode libra --type-args 0x1::Coin1::Coin1 --signers 0xA --args 0xB 500 x"" x"" -v diff --git a/language/tools/move-cli/tests/testsuite/libra_smoke/genesis.move b/language/tools/move-cli/tests/testsuite/libra_smoke/genesis.move deleted file mode 100644 index 36a6f74359..0000000000 --- a/language/tools/move-cli/tests/testsuite/libra_smoke/genesis.move +++ /dev/null @@ -1,89 +0,0 @@ -script { - use 0x1::AccountFreezing; - use 0x1::ChainId; - use 0x1::Coin1; - use 0x1::DualAttestation; - use 0x1::LBR; - use 0x1::Libra; - use 0x1::LibraAccount; - use 0x1::LibraBlock; - use 0x1::LibraConfig; - use 0x1::LibraSystem; - use 0x1::LibraTimestamp; - use 0x1::LibraTransactionPublishingOption; - use 0x1::LibraVersion; - use 0x1::TransactionFee; - use 0x1::LibraVMConfig; - use 0x1::Vector; - - fun initialize( - lr_account: &signer, - tc_account: &signer, - ) { - let dummy_auth_key = x"0000000000000000000000000000000000000000000000000000000000000000"; - let lr_auth_key = copy dummy_auth_key; - let tc_auth_key = dummy_auth_key; - - // no script allowlist + allow open publishing - let initial_script_allow_list = Vector::empty(); - let is_open_module = true; - let instruction_schedule = Vector::empty(); - let native_schedule = Vector::empty(); - let chain_id = 0; - - LibraAccount::initialize(lr_account, x"00000000000000000000000000000000"); - - ChainId::initialize(lr_account, chain_id); - - // On-chain config setup - LibraConfig::initialize(lr_account); - - // Currency setup - Libra::initialize(lr_account); - - // Currency setup - Coin1::initialize(lr_account, tc_account); - - LBR::initialize( - lr_account, - tc_account, - ); - - AccountFreezing::initialize(lr_account); - - TransactionFee::initialize(tc_account); - - LibraSystem::initialize_validator_set( - lr_account, - ); - LibraVersion::initialize( - lr_account, - ); - DualAttestation::initialize( - lr_account, - ); - LibraBlock::initialize_block_metadata(lr_account); - - let lr_rotate_key_cap = LibraAccount::extract_key_rotation_capability(lr_account); - LibraAccount::rotate_authentication_key(&lr_rotate_key_cap, lr_auth_key); - LibraAccount::restore_key_rotation_capability(lr_rotate_key_cap); - - LibraTransactionPublishingOption::initialize( - lr_account, - initial_script_allow_list, - is_open_module, - ); - - LibraVMConfig::initialize( - lr_account, - instruction_schedule, - native_schedule, - ); - - let tc_rotate_key_cap = LibraAccount::extract_key_rotation_capability(tc_account); - LibraAccount::rotate_authentication_key(&tc_rotate_key_cap, tc_auth_key); - LibraAccount::restore_key_rotation_capability(tc_rotate_key_cap); - LibraTimestamp::set_time_has_started(lr_account); - } - -} diff --git a/language/tools/move-coverage/Cargo.toml b/language/tools/move-coverage/Cargo.toml index 286328f448..3fd681d592 100644 --- a/language/tools/move-coverage/Cargo.toml +++ b/language/tools/move-coverage/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-coverage" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Move VM code coverage" +authors = ["Diem Association "] +description = "Diem Move VM code coverage" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,14 +19,14 @@ codespan = { version = "0.8.0", features = ["serialization"] } colored = "2.0.0" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-types = { path = "../../../types", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-ir-types = { path = "../../move-ir/types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } vm = { path = "../../vm", version = "0.1.0" } bytecode-source-map = { path = "../../compiler/bytecode-source-map", version = "0.1.0" } bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/language/tools/move-coverage/baseline/coverage_report b/language/tools/move-coverage/baseline/coverage_report index d09b08e781..66ad46af78 100644 --- a/language/tools/move-coverage/baseline/coverage_report +++ b/language/tools/move-coverage/baseline/coverage_report @@ -5,7 +5,7 @@ Module 00000000000000000000000000000000::Debug >>> % Module coverage: NaN Module 00000000000000000000000000000000::Testnet >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraTimestamp +Module 00000000000000000000000000000000::DiemTimestamp >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::Association >>> % Module coverage: 100.00 @@ -33,13 +33,13 @@ Module 00000000000000000000000000000000::Offer >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::Event >>> % Module coverage: 92.25 -Module 00000000000000000000000000000000::LibraConfig +Module 00000000000000000000000000000000::DiemConfig >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::RegisteredCurrencies >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::FixedPoint32 >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::Libra +Module 00000000000000000000000000000000::Diem >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::Coin1 >>> % Module coverage: 100.00 @@ -51,27 +51,27 @@ Module 00000000000000000000000000000000::Option >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::Signature >>> % Module coverage: NaN -Module 00000000000000000000000000000000::LibraTransactionTimeout +Module 00000000000000000000000000000000::DiemTransactionTimeout >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraAccount +Module 00000000000000000000000000000000::DiemAccount >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::ValidatorConfig >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraSystem +Module 00000000000000000000000000000000::DiemSystem >>> % Module coverage: 98.98 Module 00000000000000000000000000000000::TransactionFee >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraWriteSetManager +Module 00000000000000000000000000000000::DiemWriteSetManager >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraBlock +Module 00000000000000000000000000000000::DiemBlock >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LBR +Module 00000000000000000000000000000000::XDX >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::Genesis >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraVMConfig +Module 00000000000000000000000000000000::DiemVMConfig >>> % Module coverage: 100.00 -Module 00000000000000000000000000000000::LibraVersion +Module 00000000000000000000000000000000::DiemVersion >>> % Module coverage: 100.00 Module 00000000000000000000000000000000::SharedEd25519PublicKey >>> % Module coverage: 100.00 diff --git a/language/tools/move-coverage/check_coverage.bash b/language/tools/move-coverage/check_coverage.bash index ee94e22f18..a0ba158c0f 100755 --- a/language/tools/move-coverage/check_coverage.bash +++ b/language/tools/move-coverage/check_coverage.bash @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 TRACE_PATH=$HOME/trace diff --git a/language/tools/move-coverage/src/bin/coverage-summaries.rs b/language/tools/move-coverage/src/bin/coverage-summaries.rs index b1220a9926..d158d0d83e 100644 --- a/language/tools/move-coverage/src/bin/coverage-summaries.rs +++ b/language/tools/move-coverage/src/bin/coverage-summaries.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/move-coverage/src/bin/move-trace-conversion.rs b/language/tools/move-coverage/src/bin/move-trace-conversion.rs index 97b4ee152e..3a1a307a83 100644 --- a/language/tools/move-coverage/src/bin/move-trace-conversion.rs +++ b/language/tools/move-coverage/src/bin/move-trace-conversion.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/move-coverage/src/bin/source-coverage.rs b/language/tools/move-coverage/src/bin/source-coverage.rs index 2c21dd426d..eab4514526 100644 --- a/language/tools/move-coverage/src/bin/source-coverage.rs +++ b/language/tools/move-coverage/src/bin/source-coverage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/move-coverage/src/coverage_map.rs b/language/tools/move-coverage/src/coverage_map.rs index f93869cb87..ed6ba12e50 100644 --- a/language/tools/move-coverage/src/coverage_map.rs +++ b/language/tools/move-coverage/src/coverage_map.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::{format_err, Result}; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::identifier::{IdentStr, Identifier}; use serde::{Deserialize, Serialize}; use std::{ diff --git a/language/tools/move-coverage/src/lib.rs b/language/tools/move-coverage/src/lib.rs index 3f74326420..75d6234d36 100644 --- a/language/tools/move-coverage/src/lib.rs +++ b/language/tools/move-coverage/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod coverage_map; diff --git a/language/tools/move-coverage/src/source_coverage.rs b/language/tools/move-coverage/src/source_coverage.rs index 392545e831..87c1b681c0 100644 --- a/language/tools/move-coverage/src/source_coverage.rs +++ b/language/tools/move-coverage/src/source_coverage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/move-coverage/src/summary.rs b/language/tools/move-coverage/src/summary.rs index d489df09ab..c05a4ea322 100644 --- a/language/tools/move-coverage/src/summary.rs +++ b/language/tools/move-coverage/src/summary.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/tools/move-coverage/utils.sh b/language/tools/move-coverage/utils.sh index f21a0f5874..6bac99d3ea 100644 --- a/language/tools/move-coverage/utils.sh +++ b/language/tools/move-coverage/utils.sh @@ -1,4 +1,4 @@ -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 alias coverage_update="pkill cargo; cargo run --release --bin move-trace-conversion -- -f $HOME/trace -u trace.mvcov -o trace.mvcov; rm -rf $HOME/trace" diff --git a/language/tools/move-explain/Cargo.toml b/language/tools/move-explain/Cargo.toml index 4b18c1c4ff..b946e3f027 100644 --- a/language/tools/move-explain/Cargo.toml +++ b/language/tools/move-explain/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "move-explain" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Move abort code explanations" +authors = ["Diem Association "] +description = "Diem Move abort code explanations" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,7 +12,7 @@ edition = "2018" [dependencies] structopt = "0.3.21" compiled-stdlib = { path = "../../stdlib/compiled", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } errmapgen = { path = "../../move-prover/errmapgen", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/tools/move-explain/src/lib.rs b/language/tools/move-explain/src/lib.rs index fd637764e0..199149b6d8 100644 --- a/language/tools/move-explain/src/lib.rs +++ b/language/tools/move-explain/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use errmapgen::{ErrorContext, ErrorMapping}; diff --git a/language/tools/move-explain/src/main.rs b/language/tools/move-explain/src/main.rs index e14bce4be3..957e5cde3e 100644 --- a/language/tools/move-explain/src/main.rs +++ b/language/tools/move-explain/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::{ diff --git a/language/tools/resource-viewer/Cargo.toml b/language/tools/resource-viewer/Cargo.toml index 59d7e6fc77..85dd3f8291 100644 --- a/language/tools/resource-viewer/Cargo.toml +++ b/language/tools/resource-viewer/Cargo.toml @@ -1,19 +1,19 @@ [package] name = "resource-viewer" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra genesis viewer" +authors = ["Diem Association "] +description = "Diem genesis viewer" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../../move-vm/runtime", version = "0.1.0" } move-vm-types = { path = "../../move-vm/types", version = "0.1.0" } diff --git a/language/tools/resource-viewer/src/cached_access_path_table.rs b/language/tools/resource-viewer/src/cached_access_path_table.rs index f684273876..9d849a9d12 100644 --- a/language/tools/resource-viewer/src/cached_access_path_table.rs +++ b/language/tools/resource-viewer/src/cached_access_path_table.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{anyhow, Result}; diff --git a/language/tools/resource-viewer/src/fat_type.rs b/language/tools/resource-viewer/src/fat_type.rs index ccd2e516a2..1c66b4d48c 100644 --- a/language/tools/resource-viewer/src/fat_type.rs +++ b/language/tools/resource-viewer/src/fat_type.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Loaded representation for runtime types. -use libra_types::{account_address::AccountAddress, vm_status::StatusCode}; +use diem_types::{account_address::AccountAddress, vm_status::StatusCode}; use move_core_types::{ identifier::Identifier, language_storage::{StructTag, TypeTag}, diff --git a/language/tools/resource-viewer/src/lib.rs b/language/tools/resource-viewer/src/lib.rs index 0c6f32647e..bcc2ac8f18 100644 --- a/language/tools/resource-viewer/src/lib.rs +++ b/language/tools/resource-viewer/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,8 +7,8 @@ use crate::{ resolver::Resolver, }; use anyhow::{anyhow, Result}; -use libra_state_view::StateView; -use libra_types::{ +use diem_state_view::StateView; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_state::AccountState, contract_event::ContractEvent, }; diff --git a/language/tools/resource-viewer/src/module_cache.rs b/language/tools/resource-viewer/src/module_cache.rs index 6957920157..7696fa079e 100644 --- a/language/tools/resource-viewer/src/module_cache.rs +++ b/language/tools/resource-viewer/src/module_cache.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::language_storage::ModuleId; diff --git a/language/tools/resource-viewer/src/resolver.rs b/language/tools/resource-viewer/src/resolver.rs index 5da568d974..e2c263f6e7 100644 --- a/language/tools/resource-viewer/src/resolver.rs +++ b/language/tools/resource-viewer/src/resolver.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,7 +7,7 @@ use crate::{ }; use anyhow::{anyhow, Result}; use compiled_stdlib::{stdlib_modules, StdLibOptions}; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use move_core_types::{ identifier::{IdentStr, Identifier}, language_storage::{ModuleId, StructTag, TypeTag}, diff --git a/language/tools/vm-genesis/Cargo.toml b/language/tools/vm-genesis/Cargo.toml index 8e72a6c0b2..a26846585e 100644 --- a/language/tools/vm-genesis/Cargo.toml +++ b/language/tools/vm-genesis/Cargo.toml @@ -2,10 +2,10 @@ name = "vm-genesis" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra vm genesis" +authors = ["Diem Association "] +description = "Diem vm genesis" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -16,25 +16,25 @@ rand = "0.7.3" bytecode-verifier = { path = "../../bytecode-verifier", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../../config", version = "0.1.0" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-state-view = { path = "../../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libra-network-address = { path = "../../../network/network-address", version = "0.1.0" } +diem-config = { path = "../../../config", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-state-view = { path = "../../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-network-address = { path = "../../../network/network-address", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } move-vm-runtime = { path = "../../move-vm/runtime", version = "0.1.0"} move-vm-types = { path = "../../move-vm/types", version = "0.1.0" } compiled-stdlib = { path = "../../stdlib/compiled", version = "0.1.0" } transaction-builder = { path = "../../transaction-builder", version = "0.1.0"} vm = { path = "../../vm", version = "0.1.0" } -libra-vm = { path = "../../libra-vm", version = "0.1.0" } +diem-vm = { path = "../../diem-vm", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" proptest-derive = "0.2.0" -libra-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } +diem-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing", "move-vm-types/fuzzing"] +fuzzing = ["diem-types/fuzzing", "move-vm-types/fuzzing"] diff --git a/language/tools/vm-genesis/genesis/genesis.blob b/language/tools/vm-genesis/genesis/genesis.blob index 93590220d8..96bbb489f9 100644 Binary files a/language/tools/vm-genesis/genesis/genesis.blob and b/language/tools/vm-genesis/genesis/genesis.blob differ diff --git a/language/tools/vm-genesis/src/genesis_context.rs b/language/tools/vm-genesis/src/genesis_context.rs index 3c1c528e94..b317ba0430 100644 --- a/language/tools/vm-genesis/src/genesis_context.rs +++ b/language/tools/vm-genesis/src/genesis_context.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::Result; -use libra_state_view::StateView; -use libra_types::access_path::AccessPath; +use diem_state_view::StateView; +use diem_types::access_path::AccessPath; use move_core_types::language_storage::ModuleId; use std::collections::HashMap; use vm::CompiledModule; diff --git a/language/tools/vm-genesis/src/genesis_gas_schedule.rs b/language/tools/vm-genesis/src/genesis_gas_schedule.rs index fba795d024..141456e6f6 100644 --- a/language/tools/vm-genesis/src/genesis_gas_schedule.rs +++ b/language/tools/vm-genesis/src/genesis_gas_schedule.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file contains the starting gas schedule published at genesis. @@ -121,7 +121,7 @@ pub static INITIAL_GAS_SCHEDULE: Lazy = Lazy::new(|| { ), (Nop, GasCost::new(1, 1)), ]; - // Note that the LibraVM is expecting the table sorted by instruction order. + // Note that the DiemVM is expecting the table sorted by instruction order. instrs.sort_by_key(|cost| instruction_key(&cost.0)); let mut native_table = vec![ diff --git a/language/tools/vm-genesis/src/lib.rs b/language/tools/vm-genesis/src/lib.rs index be40a8f29f..c4dde04843 100644 --- a/language/tools/vm-genesis/src/lib.rs +++ b/language/tools/vm-genesis/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -8,11 +8,11 @@ pub mod genesis_gas_schedule; use crate::{genesis_context::GenesisStateView, genesis_gas_schedule::INITIAL_GAS_SCHEDULE}; use compiled_stdlib::{stdlib_modules, transaction_scripts::StdlibScript, StdLibOptions}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, PrivateKey, Uniform, }; -use libra_types::{ +use diem_types::{ account_address, account_config::{ self, @@ -26,7 +26,7 @@ use libra_types::{ WriteSetPayload, }, }; -use libra_vm::{data_cache::StateViewCache, txn_effects_to_writeset_and_events}; +use diem_vm::{data_cache::StateViewCache, txn_effects_to_writeset_and_events}; use move_core_types::{ account_address::AccountAddress, gas_schedule::{CostTable, GasAlgebra, GasUnits}, @@ -72,7 +72,7 @@ pub type OperatorAssignment = (Option, Name, Script); pub type OperatorRegistration = (Ed25519PublicKey, Name, Script); pub fn encode_genesis_transaction( - libra_root_key: Ed25519PublicKey, + diem_root_key: Ed25519PublicKey, treasury_compliance_key: Ed25519PublicKey, operator_assignments: &[OperatorAssignment], operator_registrations: &[OperatorRegistration], @@ -80,7 +80,7 @@ pub fn encode_genesis_transaction( chain_id: ChainId, ) -> Transaction { Transaction::GenesisTransaction(WriteSetPayload::Direct(encode_genesis_change_set( - &libra_root_key, + &diem_root_key, &treasury_compliance_key, operator_assignments, operator_registrations, @@ -102,7 +102,7 @@ fn merge_txn_effects( } pub fn encode_genesis_change_set( - libra_root_key: &Ed25519PublicKey, + diem_root_key: &Ed25519PublicKey, treasury_compliance_key: &Ed25519PublicKey, operator_assignments: &[OperatorAssignment], operator_registrations: &[OperatorRegistration], @@ -122,20 +122,20 @@ pub fn encode_genesis_change_set( let mut session = move_vm.new_session(&data_cache); let log_context = NoContextLog::new(); - let lbr_ty = TypeTag::Struct(StructTag { - address: *account_config::LBR_MODULE.address(), - module: account_config::LBR_MODULE.name().to_owned(), - name: account_config::LBR_STRUCT_NAME.to_owned(), + let xdx_ty = TypeTag::Struct(StructTag { + address: *account_config::XDX_MODULE.address(), + module: account_config::XDX_MODULE.name().to_owned(), + name: account_config::XDX_STRUCT_NAME.to_owned(), type_params: vec![], }); create_and_initialize_main_accounts( &mut session, &log_context, - &libra_root_key, + &diem_root_key, &treasury_compliance_key, vm_publishing_option, - &lbr_ty, + &xdx_ty, chain_id, ); // generate the genesis WriteSet @@ -239,16 +239,16 @@ fn exec_script( fn create_and_initialize_main_accounts( session: &mut Session, log_context: &impl LogContext, - libra_root_key: &Ed25519PublicKey, + diem_root_key: &Ed25519PublicKey, treasury_compliance_key: &Ed25519PublicKey, publishing_option: VMPublishingOption, - lbr_ty: &TypeTag, + xdx_ty: &TypeTag, chain_id: ChainId, ) { - let libra_root_auth_key = AuthenticationKey::ed25519(libra_root_key); + let diem_root_auth_key = AuthenticationKey::ed25519(diem_root_key); let treasury_compliance_auth_key = AuthenticationKey::ed25519(treasury_compliance_key); - let root_libra_root_address = account_config::libra_root_address(); + let root_diem_root_address = account_config::diem_root_address(); let tc_account_address = account_config::treasury_compliance_account_address(); let initial_allow_list = Value::constant_vector_generic( @@ -269,14 +269,14 @@ fn create_and_initialize_main_accounts( exec_function( session, log_context, - root_libra_root_address, + root_diem_root_address, GENESIS_MODULE_NAME, "initialize", vec![], vec![ - Value::transaction_argument_signer_reference(root_libra_root_address), + Value::transaction_argument_signer_reference(root_diem_root_address), Value::transaction_argument_signer_reference(tc_account_address), - Value::vector_u8(libra_root_auth_key.to_vec()), + Value::vector_u8(diem_root_auth_key.to_vec()), Value::vector_u8(treasury_compliance_auth_key.to_vec()), initial_allow_list, Value::bool(publishing_option.is_open_module), @@ -293,12 +293,12 @@ fn create_and_initialize_main_accounts( exec_function( session, log_context, - root_libra_root_address, - "LibraAccount", + root_diem_root_address, + "DiemAccount", "epilogue", - vec![lbr_ty.clone()], + vec![xdx_ty.clone()], vec![ - Value::transaction_argument_signer_reference(root_libra_root_address), + Value::transaction_argument_signer_reference(root_diem_root_address), Value::u64(/* txn_sequence_number */ 0), Value::u64(/* txn_gas_price */ 0), Value::u64(/* txn_max_gas_units */ 0), @@ -314,7 +314,7 @@ fn create_and_initialize_testnet_minting( ) { let genesis_auth_key = AuthenticationKey::ed25519(public_key); let create_dd_script = encode_create_designated_dealer_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, account_config::testnet_dd_account_address(), genesis_auth_key.prefix().to_vec(), @@ -322,8 +322,8 @@ fn create_and_initialize_testnet_minting( true, // add_all_currencies ); - let mint_max_coin1_tmp = transaction_builder::encode_tiered_mint_script( - account_config::coin1_tmp_tag(), + let mint_max_xus = transaction_builder::encode_tiered_mint_script( + account_config::xus_tag(), 0, account_config::testnet_dd_account_address(), std::u64::MAX / 2, @@ -343,7 +343,7 @@ fn create_and_initialize_testnet_minting( account_config::treasury_compliance_account_address(), "DesignatedDealer", "update_tier", - vec![account_config::coin1_tmp_tag()], + vec![account_config::xus_tag()], vec![ Value::transaction_argument_signer_reference( account_config::treasury_compliance_account_address(), @@ -354,13 +354,13 @@ fn create_and_initialize_testnet_minting( ], ); - // mint Coin1. + // mint XUS. let treasury_compliance_account_address = account_config::treasury_compliance_account_address(); exec_script( session, log_context, treasury_compliance_account_address, - &mint_max_coin1_tmp, + &mint_max_xus, ); let testnet_dd_account_address = account_config::testnet_dd_account_address(); @@ -381,7 +381,7 @@ fn create_and_initialize_owners_operators( operator_assignments: &[OperatorAssignment], operator_registrations: &[OperatorRegistration], ) { - let libra_root_address = account_config::libra_root_address(); + let diem_root_address = account_config::diem_root_address(); // Create accounts for each validator owner. The inputs for creating an account are the auth // key prefix and account address. Internally move then computes the auth key as auth key @@ -389,7 +389,7 @@ fn create_and_initialize_owners_operators( // account address from the name and not the public key. for (owner_key, owner_name, _op_assignment) in operator_assignments { let staged_owner_auth_key = - libra_config::utils::default_validator_owner_auth_key_from_name(owner_name); + diem_config::utils::default_validator_owner_auth_key_from_name(owner_name); let owner_address = staged_owner_auth_key.derived_address(); let create_owner_script = transaction_builder::encode_create_validator_account_script( 0, @@ -400,7 +400,7 @@ fn create_and_initialize_owners_operators( exec_script( session, log_context, - libra_root_address, + diem_root_address, &create_owner_script, ); @@ -433,14 +433,14 @@ fn create_and_initialize_owners_operators( exec_script( session, log_context, - libra_root_address, + diem_root_address, &create_operator_script, ); } // Set the validator operator for each validator owner for (_owner_key, owner_name, op_assignment) in operator_assignments { - let owner_address = libra_config::utils::validator_owner_account_from_name(owner_name); + let owner_address = diem_config::utils::validator_owner_account_from_name(owner_name); exec_script(session, log_context, owner_address, op_assignment); } @@ -452,16 +452,16 @@ fn create_and_initialize_owners_operators( // Add each validator to the validator set for (_owner_key, owner_name, _op_assignment) in operator_assignments { - let owner_address = libra_config::utils::validator_owner_account_from_name(owner_name); + let owner_address = diem_config::utils::validator_owner_account_from_name(owner_name); exec_function( session, log_context, - libra_root_address, - "LibraSystem", + diem_root_address, + "DiemSystem", "add_validator", vec![], vec![ - Value::transaction_argument_signer_reference(libra_root_address), + Value::transaction_argument_signer_reference(diem_root_address), Value::address(owner_address), ], ); @@ -502,8 +502,8 @@ fn reconfigure(session: &mut Session, log_context: &impl LogCont exec_function( session, log_context, - account_config::libra_root_address(), - "LibraConfig", + account_config::diem_root_address(), + "DiemConfig", "emit_genesis_reconfiguration_event", vec![], vec![], @@ -512,10 +512,10 @@ fn reconfigure(session: &mut Session, log_context: &impl LogCont /// Verify the consistency of the genesis `WriteSet` fn verify_genesis_write_set(events: &[ContractEvent]) { - // (1) first event is account creation event for LibraRoot - let create_libra_root_event = &events[0]; + // (1) first event is account creation event for DiemRoot + let create_diem_root_event = &events[0]; assert_eq!( - *create_libra_root_event.key(), + *create_diem_root_event.key(), CreateAccountEvent::event_key(), ); @@ -582,7 +582,7 @@ impl Validator { let name = index.to_string().as_bytes().to_vec(); let key = Ed25519PrivateKey::generate(rng); let operator_address = account_address::from_public_key(&key.public_key()); - let owner_address = libra_config::utils::validator_owner_account_from_name(&name); + let owner_address = diem_config::utils::validator_owner_account_from_name(&name); Self { index, diff --git a/language/transaction-builder/Cargo.toml b/language/transaction-builder/Cargo.toml index 6d61f333ea..6a37ad8d71 100644 --- a/language/transaction-builder/Cargo.toml +++ b/language/transaction-builder/Cargo.toml @@ -1,17 +1,17 @@ [package] name = "transaction-builder" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra transaction-builder" +authors = ["Diem Association "] +description = "Diem transaction-builder" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" [dependencies] mirai-annotations = "1.10.1" -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } transaction-builder-generated = { path = "../../client/transaction-builder", version = "0.1.0" } [features] diff --git a/language/transaction-builder/generator/Cargo.toml b/language/transaction-builder/generator/Cargo.toml index 3d8c99c3aa..65853bf06b 100644 --- a/language/transaction-builder/generator/Cargo.toml +++ b/language/transaction-builder/generator/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transaction-builder-generator" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra transaction-builder" +authors = ["Diem Association "] +description = "Diem transaction-builder" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -18,8 +18,8 @@ serde-reflection = "0.3.2" serde-generate = "0.16.1" serde_yaml = "0.8.14" -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../move-core/types", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } diff --git a/language/transaction-builder/generator/README.md b/language/transaction-builder/generator/README.md index e123a1b9ae..c2e130df58 100644 --- a/language/transaction-builder/generator/README.md +++ b/language/transaction-builder/generator/README.md @@ -6,7 +6,7 @@ custom_edit_url: https://github.com/libra/libra/edit/master/language/transaction # Transaction Builder Generator -A *transaction builder* is a helper function that converts its arguments into the payload of a Libra transaction calling a particular Move script. +A *transaction builder* is a helper function that converts its arguments into the payload of a Diem transaction calling a particular Move script. In Rust, the signature of such a function typically looks like this: ```rust @@ -21,10 +21,10 @@ pub fn encode_peer_to_peer_with_metadata_script( This crate provide a binary tool `generate-transaction-builders` to generate and install transaction builders in several programming languages. -The tool will also generate and install type definitions for Libra types such as `TypeTag`, `AccountAddress`, and `Script`. +The tool will also generate and install type definitions for Diem types such as `TypeTag`, `AccountAddress`, and `Script`. -In practice, hashing and signing Libra transactions additionally requires a runtime library for Libra Canonical Serialization ("LCS"). -Such a library will be installed together with the Libra types. +In practice, hashing and signing Diem transactions additionally requires a runtime library for Diem Canonical Serialization ("LCS"). +Such a library will be installed together with the Diem types. ## Supported Languages @@ -39,25 +39,25 @@ The following languages are currently supported: * Go >= 1.13 -* Rust (NOTE: Code generation of dependency-free Rust is experimental. Consider using the libraries of the Libra repository instead.) +* Rust (NOTE: Code generation of dependency-free Rust is experimental. Consider using the libraries of the Diem repository instead.) ## Quick Start -From the root of the Libra repository, run `cargo build -p transaction-builder-generator`. +From the root of the Diem repository, run `cargo build -p transaction-builder-generator`. You may browse command line options with `target/debug/generate-transaction-builders --help`. ### Python -To install Python3 modules `serde`, `lcs`, `libra_types`, and `libra_stdlib` into a target directory `$DEST`, run: +To install Python3 modules `serde`, `lcs`, `diem_types`, and `diem_stdlib` into a target directory `$DEST`, run: ```bash target/debug/generate-transaction-builders \ --language python3 \ - --module-name libra_stdlib \ - --with-libra-types "testsuite/generate-format/tests/staged/libra.yaml" \ + --module-name diem_stdlib \ + --with-diem-types "testsuite/generate-format/tests/staged/diem.yaml" \ --target-source-dir "$DEST" \ - --with-custom-libra-code language/transaction-builder/generator/examples/python3/custom_libra_code/*.py -- \ + --with-custom-diem-code language/transaction-builder/generator/examples/python3/custom_diem_code/*.py -- \ "language/stdlib/compiled/transaction_scripts/abi" ``` Next, you may copy and execute the [Python demo file](examples/python3/stdlib_demo.py) with: @@ -68,32 +68,32 @@ PYTHONPATH="$PYTHONPATH:$DEST" python3 "$DEST/stdlib_demo.py" ### C++ -To install C++ files `serde.hpp`, `lcs.hpp`, `libra_types.hpp`, `libra_stdlib.hpp`, `libra_stdlib.cpp` into a target directory `$DEST`, run: +To install C++ files `serde.hpp`, `lcs.hpp`, `diem_types.hpp`, `diem_stdlib.hpp`, `diem_stdlib.cpp` into a target directory `$DEST`, run: ```bash target/debug/generate-transaction-builders \ --language cpp \ - --module-name libra_stdlib \ - --with-libra-types "testsuite/generate-format/tests/staged/libra.yaml" \ + --module-name diem_stdlib \ + --with-diem-types "testsuite/generate-format/tests/staged/diem.yaml" \ --target-source-dir "$DEST" \ "language/stdlib/compiled/transaction_scripts/abi" ``` Next, you may copy and execute the [C++ demo file](examples/cpp/stdlib_demo.cpp) with: ```bash cp language/transaction-builder/generator/examples/cpp/stdlib_demo.cpp "$DEST" -clang++ --std=c++17 -I "$DEST" "$DEST/libra_stdlib.cpp" "$DEST/stdlib_demo.cpp" -o "$DEST/stdlib_demo" +clang++ --std=c++17 -I "$DEST" "$DEST/diem_stdlib.cpp" "$DEST/stdlib_demo.cpp" -o "$DEST/stdlib_demo" "$DEST/stdlib_demo" ``` ### Java -To install Java source packages `com.novi.serde`, `com.novi.lcs`, `org.libra.types`, and `org.libra.stdlib` into a target directory `$DEST`, run: +To install Java source packages `com.novi.serde`, `com.novi.lcs`, `org.diem.types`, and `org.diem.stdlib` into a target directory `$DEST`, run: ```bash target/debug/generate-transaction-builders \ --language java \ - --module-name org.libra.stdlib \ - --with-libra-types "testsuite/generate-format/tests/staged/libra.yaml" \ + --module-name org.diem.stdlib \ + --with-diem-types "testsuite/generate-format/tests/staged/diem.yaml" \ --target-source-dir "$DEST" \ - --with-custom-libra-code language/transaction-builder/generator/examples/java/custom_libra_code/*.java -- \ + --with-custom-diem-code language/transaction-builder/generator/examples/java/custom_diem_code/*.java -- \ "language/stdlib/compiled/transaction_scripts/abi" ``` Next, you may copy and execute the [Java demo file](examples/java/StdlibDemo.java) with: @@ -105,14 +105,14 @@ java -enableassertions -cp "$DEST" StdlibDemo ### Go -To generate the Go "packages" `testing/libratypes`, and `testing/librastdlib` into a target directory `$DEST`, run: +To generate the Go "packages" `testing/diemtypes`, and `testing/diemstdlib` into a target directory `$DEST`, run: ```bash target/debug/generate-transaction-builders \ --language go \ - --module-name librastdlib \ - --libra-package-name testing \ - --with-libra-types "testsuite/generate-format/tests/staged/libra.yaml" \ + --module-name diemstdlib \ + --diem-package-name testing \ + --with-diem-types "testsuite/generate-format/tests/staged/diem.yaml" \ --target-source-dir "$DEST" \ "language/stdlib/compiled/transaction_scripts/abi" ``` @@ -125,12 +125,12 @@ cp language/transaction-builder/generator/examples/golang/stdlib_demo.go "$DEST" ### Rust (experimental) -To install dependency-free Rust crates `libra-types` and `libra-stdlib` into a target directory `$DEST`, run: +To install dependency-free Rust crates `diem-types` and `diem-stdlib` into a target directory `$DEST`, run: ```bash target/debug/generate-transaction-builders \ --language rust \ - --module-name libra-stdlib \ - --with-libra-types "testsuite/generate-format/tests/staged/libra.yaml" \ + --module-name diem-stdlib \ + --with-diem-types "testsuite/generate-format/tests/staged/diem.yaml" \ --target-source-dir "$DEST" \ "language/stdlib/compiled/transaction_scripts/abi" ``` @@ -141,7 +141,7 @@ Next, you may copy and execute the [Rust demo file](examples/rust/stdlib_demo.rs Supporting transaction builders in an additional programming language boils down to providing the following items: -1. Code generation for Libra types (Rust library and tool), +1. Code generation for Diem types (Rust library and tool), 2. LCS runtime (library in target language), @@ -150,9 +150,9 @@ Supporting transaction builders in an additional programming language boils down Items (1) and (2) are provided by the Rust library `serde-generate` which is developed in a separate [github repository](https://github.com/novifinancial/serde-reflection). -Item (3) --- this tool --- is currently developed in the Libra repository. +Item (3) --- this tool --- is currently developed in the Diem repository. -Items (2) and (3) are mostly independent. Both crucially depend on (1) to be sufficiently stable, therefore our suggestion for adding a new language is first to open a new github issue in `serde-generate` and contact the Libra maintainers. +Items (2) and (3) are mostly independent. Both crucially depend on (1) to be sufficiently stable, therefore our suggestion for adding a new language is first to open a new github issue in `serde-generate` and contact the Diem maintainers. The new issue created on `serde-generate` should include: diff --git a/language/transaction-builder/generator/examples/cpp/stdlib_demo.cpp b/language/transaction-builder/generator/examples/cpp/stdlib_demo.cpp index 6d90bd0e0a..3383fd8b7d 100644 --- a/language/transaction-builder/generator/examples/cpp/stdlib_demo.cpp +++ b/language/transaction-builder/generator/examples/cpp/stdlib_demo.cpp @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -#include "libra_stdlib.hpp" -#include "libra_types.hpp" +#include "diem_stdlib.hpp" +#include "diem_types.hpp" #include -using namespace libra_stdlib; -using namespace libra_types; +using namespace diem_stdlib; +using namespace diem_types; int main() { auto token = TypeTag{TypeTag::Struct{StructTag{ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, - {"LBR"}, - {"LBR"}, + {"XDX"}, + {"XDX"}, {}, }}}; auto payee = AccountAddress{0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, diff --git a/language/transaction-builder/generator/examples/golang/stdlib_demo.go b/language/transaction-builder/generator/examples/golang/stdlib_demo.go index 83d226983e..6d6554e645 100644 --- a/language/transaction-builder/generator/examples/golang/stdlib_demo.go +++ b/language/transaction-builder/generator/examples/golang/stdlib_demo.go @@ -1,26 +1,26 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 package main import ( "fmt" - stdlib "testing/librastdlib" - libra "testing/libratypes" + stdlib "testing/diemstdlib" + diem "testing/diemtypes" ) func main() { - token := &libra.TypeTag__Struct{ - Value: libra.StructTag{ - Address: libra.AccountAddress( + token := &diem.TypeTag__Struct{ + Value: diem.StructTag{ + Address: diem.AccountAddress( [16]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, ), - Module: libra.Identifier("LBR"), - Name: libra.Identifier("LBR"), - TypeParams: []libra.TypeTag{}, + Module: diem.Identifier("XDX"), + Name: diem.Identifier("XDX"), + TypeParams: []diem.TypeTag{}, }, } - payee := libra.AccountAddress( + payee := diem.AccountAddress( [16]uint8{0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, ) amount := uint64(1_234_567) diff --git a/language/transaction-builder/generator/examples/java/StdlibDemo.java b/language/transaction-builder/generator/examples/java/StdlibDemo.java index f71b2dedb1..64de920ef0 100644 --- a/language/transaction-builder/generator/examples/java/StdlibDemo.java +++ b/language/transaction-builder/generator/examples/java/StdlibDemo.java @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 import java.util.Arrays; @@ -6,22 +6,22 @@ import com.novi.serde.Bytes; import com.novi.serde.Unsigned; // used as documentation. -import org.libra.stdlib.Helpers; -import org.libra.stdlib.ScriptCall;; -import org.libra.types.AccountAddress; -import org.libra.types.Identifier; -import org.libra.types.Script; -import org.libra.types.StructTag; -import org.libra.types.TypeTag; +import org.diem.stdlib.Helpers; +import org.diem.stdlib.ScriptCall;; +import org.diem.types.AccountAddress; +import org.diem.types.Identifier; +import org.diem.types.Script; +import org.diem.types.StructTag; +import org.diem.types.TypeTag; public class StdlibDemo { public static void main(String[] args) throws Exception { StructTag.Builder builder = new StructTag.Builder(); builder.address = AccountAddress.valueOf(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}); - builder.module = new Identifier("LBR"); - builder.name = new Identifier("LBR"); - builder.type_params = new ArrayList(); + builder.module = new Identifier("XDX"); + builder.name = new Identifier("XDX"); + builder.type_params = new ArrayList(); StructTag tag = builder.build(); TypeTag token = new TypeTag.Struct(tag); diff --git a/language/transaction-builder/generator/examples/java/custom_libra_code/AccountAddress.java b/language/transaction-builder/generator/examples/java/custom_diem_code/AccountAddress.java similarity index 93% rename from language/transaction-builder/generator/examples/java/custom_libra_code/AccountAddress.java rename to language/transaction-builder/generator/examples/java/custom_diem_code/AccountAddress.java index 10fc36884d..a8f0a35fb9 100644 --- a/language/transaction-builder/generator/examples/java/custom_libra_code/AccountAddress.java +++ b/language/transaction-builder/generator/examples/java/custom_diem_code/AccountAddress.java @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 static final int LENGTH = 16; diff --git a/language/transaction-builder/generator/examples/python3/custom_libra_code/AccountAddress.py b/language/transaction-builder/generator/examples/python3/custom_diem_code/AccountAddress.py similarity index 94% rename from language/transaction-builder/generator/examples/python3/custom_libra_code/AccountAddress.py rename to language/transaction-builder/generator/examples/python3/custom_diem_code/AccountAddress.py index f3ee5f7766..1943ecb7e5 100644 --- a/language/transaction-builder/generator/examples/python3/custom_libra_code/AccountAddress.py +++ b/language/transaction-builder/generator/examples/python3/custom_diem_code/AccountAddress.py @@ -1,4 +1,4 @@ -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 LENGTH = 16 # type: int diff --git a/language/transaction-builder/generator/examples/python3/stdlib_demo.py b/language/transaction-builder/generator/examples/python3/stdlib_demo.py index c61cf51853..5347113977 100644 --- a/language/transaction-builder/generator/examples/python3/stdlib_demo.py +++ b/language/transaction-builder/generator/examples/python3/stdlib_demo.py @@ -1,23 +1,23 @@ -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # pyre-strict -import libra_types as libra +import diem_types as diem import serde_types as st -import libra_stdlib as stdlib +import diem_stdlib as stdlib def main() -> None: - token = libra.TypeTag__Struct( - value=libra.StructTag( - address=libra.AccountAddress.from_bytes(b"\x00" * 15 + b"\x01"), - module=libra.Identifier("LBR"), - name=libra.Identifier("LBR"), + token = diem.TypeTag__Struct( + value=diem.StructTag( + address=diem.AccountAddress.from_bytes(b"\x00" * 15 + b"\x01"), + module=diem.Identifier("XDX"), + name=diem.Identifier("XDX"), type_params=[], ) ) - payee = libra.AccountAddress.from_bytes(b"\x22" * 16) + payee = diem.AccountAddress.from_bytes(b"\x22" * 16) amount = st.uint64(1_234_567) script = stdlib.encode_peer_to_peer_with_metadata_script(token, payee, amount, b"", b"") diff --git a/language/transaction-builder/generator/examples/rust/stdlib_demo.rs b/language/transaction-builder/generator/examples/rust/stdlib_demo.rs index d95ae89205..234c4f8274 100644 --- a/language/transaction-builder/generator/examples/rust/stdlib_demo.rs +++ b/language/transaction-builder/generator/examples/rust/stdlib_demo.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use libra_canonical_serialization as lcs; -use libra_stdlib::{encode_peer_to_peer_with_metadata_script, ScriptCall}; -use libra_types::{AccountAddress, Identifier, TypeTag, StructTag}; +use diem_stdlib::{encode_peer_to_peer_with_metadata_script, ScriptCall}; +use diem_types::{AccountAddress, Identifier, TypeTag, StructTag}; use serde_bytes::ByteBuf as Bytes; fn main() { let token = TypeTag::Struct(StructTag { address: AccountAddress([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - module: Identifier("LBR".into()), - name: Identifier("LBR".into()), + module: Identifier("XDX".into()), + name: Identifier("XDX".into()), type_params: Vec::new(), }); let payee = AccountAddress([0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, diff --git a/language/transaction-builder/generator/src/common.rs b/language/transaction-builder/generator/src/common.rs index 8668e46dac..9af310979d 100644 --- a/language/transaction-builder/generator/src/common.rs +++ b/language/transaction-builder/generator/src/common.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use heck::CamelCase; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_reflection::{ContainerFormat, Format, Named, VariantFormat}; use std::collections::{BTreeMap, BTreeSet}; @@ -90,9 +90,9 @@ pub(crate) fn mangle_type(type_tag: &TypeTag) -> String { } } -pub(crate) fn get_external_definitions(libra_types: &str) -> serde_generate::ExternalDefinitions { +pub(crate) fn get_external_definitions(diem_types: &str) -> serde_generate::ExternalDefinitions { let definitions = vec![( - libra_types, + diem_types, vec!["AccountAddress", "TypeTag", "Script", "TransactionArgument"], )]; definitions diff --git a/language/transaction-builder/generator/src/cpp.rs b/language/transaction-builder/generator/src/cpp.rs index 2bc3f3bc32..bfcf90df08 100644 --- a/language/transaction-builder/generator/src/cpp.rs +++ b/language/transaction-builder/generator/src/cpp.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_generate::indent::{IndentConfig, IndentedWriter}; @@ -87,7 +87,7 @@ where self.out, r#"#pragma once -#include "libra_types.hpp" +#include "diem_types.hpp" "# ) } @@ -97,7 +97,7 @@ where self.out, r#" using namespace serde; -using namespace libra_types; +using namespace diem_types; "# ) } diff --git a/language/transaction-builder/generator/src/generate.rs b/language/transaction-builder/generator/src/generate.rs index 4a3c71104d..f4839f37dd 100644 --- a/language/transaction-builder/generator/src/generate.rs +++ b/language/transaction-builder/generator/src/generate.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! # Code generator for Move script builders @@ -41,15 +41,15 @@ struct Options { #[structopt(long)] target_source_dir: Option, - /// Also install the libra types described by the given YAML file, along with the LCS runtime. + /// Also install the diem types described by the given YAML file, along with the LCS runtime. #[structopt(long)] - with_libra_types: Option, + with_diem_types: Option, /// Module name for the transaction builders installed in the `target_source_dir`. /// * Rust crates may contain a version number, e.g. "test:1.2.0". /// * In Java, this is expected to be a package name, e.g. "com.test" to create Java files in `com/test`. /// * In Go, this is expected to be of the format "go_module/path/go_package_name", - /// and `libra_types` is assumed to be in "go_module/path/libra_types". + /// and `diem_types` is assumed to be in "go_module/path/diem_types". #[structopt(long)] module_name: Option, @@ -57,19 +57,19 @@ struct Options { #[structopt(long)] serde_package_name: Option, - /// Optional version number for the `libra_types` module (useful in Rust). - /// If `--with-libra-types` is passed, this will be the version of the generated `libra_types` module. + /// Optional version number for the `diem_types` module (useful in Rust). + /// If `--with-diem-types` is passed, this will be the version of the generated `diem_types` module. #[structopt(long, default_value = "0.1.0")] - libra_version_number: String, + diem_version_number: String, - /// Optional package name (Python) or module path (Go) of the `libra_types` dependency. + /// Optional package name (Python) or module path (Go) of the `diem_types` dependency. #[structopt(long)] - libra_package_name: Option, + diem_package_name: Option, - /// Read custom code for Libra containers from the given file paths. Containers will be matched with file stems. + /// Read custom code for Diem containers from the given file paths. Containers will be matched with file stems. /// (e.g. `AddressAccount` <- `path/to/AddressAccount.py`) #[structopt(long)] - with_custom_libra_code: Vec, + with_custom_diem_code: Vec, } fn main() { @@ -85,7 +85,7 @@ fn main() { Language::Python3 => buildgen::python3::output( &mut out, options.serde_package_name.clone(), - options.libra_package_name.clone(), + options.diem_package_name.clone(), &abis, ) .unwrap(), @@ -102,7 +102,7 @@ fn main() { buildgen::golang::output( &mut out, options.serde_package_name.clone(), - options.libra_package_name.clone(), + options.diem_package_name.clone(), options.module_name.as_deref().unwrap_or("main").to_string(), &abis, ) @@ -114,8 +114,8 @@ fn main() { Some(dir) => dir, }; - // Libra types - if let Some(registry_file) = options.with_libra_types { + // Diem types + if let Some(registry_file) = options.with_diem_types { let installer: Box>> = match options.language { Language::Python3 => Box::new(serdegen::python3::Installer::new( @@ -142,26 +142,26 @@ fn main() { let content = std::fs::read_to_string(registry_file).expect("registry file must be readable"); let registry = serde_yaml::from_str::(content.as_str()).unwrap(); - let (libra_package_name, libra_package_path) = match options.language { + let (diem_package_name, diem_package_path) = match options.language { Language::Rust => ( - if options.libra_version_number == "0.1.0" { - "libra-types".to_string() + if options.diem_version_number == "0.1.0" { + "diem-types".to_string() } else { - format!("libra-types:{}", options.libra_version_number) + format!("diem-types:{}", options.diem_version_number) }, - vec!["libra-types"], + vec!["diem-types"], ), - Language::Java => ("org.libra.types".to_string(), vec!["org", "libra", "types"]), - Language::Go => ("libratypes".to_string(), vec!["libratypes"]), - _ => ("libra_types".to_string(), vec!["libra_types"]), + Language::Java => ("org.diem.types".to_string(), vec!["org", "diem", "types"]), + Language::Go => ("diemtypes".to_string(), vec!["diemtypes"]), + _ => ("diem_types".to_string(), vec!["diem_types"]), }; - let custom_libra_code = buildgen::read_custom_code_from_paths( - &libra_package_path, - options.with_custom_libra_code.into_iter(), + let custom_diem_code = buildgen::read_custom_code_from_paths( + &diem_package_path, + options.with_custom_diem_code.into_iter(), ); - let config = serdegen::CodeGeneratorConfig::new(libra_package_name) + let config = serdegen::CodeGeneratorConfig::new(diem_package_name) .with_encodings(vec![serdegen::Encoding::Lcs]) - .with_custom_code(custom_libra_code); + .with_custom_code(custom_diem_code); installer.install_module(&config, ®istry).unwrap(); } @@ -171,18 +171,18 @@ fn main() { Language::Python3 => Box::new(buildgen::python3::Installer::new( install_dir, options.serde_package_name, - options.libra_package_name, + options.diem_package_name, )), Language::Rust => Box::new(buildgen::rust::Installer::new( install_dir, - options.libra_version_number, + options.diem_version_number, )), Language::Cpp => Box::new(buildgen::cpp::Installer::new(install_dir)), Language::Java => Box::new(buildgen::java::Installer::new(install_dir)), Language::Go => Box::new(buildgen::golang::Installer::new( install_dir, options.serde_package_name, - options.libra_package_name, + options.diem_package_name, )), }; diff --git a/language/transaction-builder/generator/src/golang.rs b/language/transaction-builder/generator/src/golang.rs index a85b27f1a7..5d92dc4ee5 100644 --- a/language/transaction-builder/generator/src/golang.rs +++ b/language/transaction-builder/generator/src/golang.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_generate::{ golang, @@ -21,14 +21,14 @@ use std::{ pub fn output( out: &mut dyn Write, serde_module_path: Option, - libra_module_path: Option, + diem_module_path: Option, package_name: String, abis: &[ScriptABI], ) -> Result<()> { let mut emitter = GoEmitter { out: IndentedWriter::new(out, IndentConfig::Tab), serde_module_path, - libra_module_path, + diem_module_path, package_name, }; emitter.output_script_call_enum_with_imports(abis)?; @@ -60,9 +60,9 @@ struct GoEmitter { /// Go module path for Serde runtime packages /// `None` to use the default path. serde_module_path: Option, - /// Go module path for Libra types. + /// Go module path for Diem types. /// `None` to use an empty path. - libra_module_path: Option, + diem_module_path: Option, /// Name of the package owning the generated definitions (e.g. "my_package") package_name: String, } @@ -72,12 +72,11 @@ where T: Write, { fn output_script_call_enum_with_imports(&mut self, abis: &[ScriptABI]) -> Result<()> { - let libra_types_package = match &self.libra_module_path { - Some(path) => format!("{}/libratypes", path), - None => "libratypes".into(), + let diem_types_package = match &self.diem_module_path { + Some(path) => format!("{}/diemtypes", path), + None => "diemtypes".into(), }; - let mut external_definitions = - crate::common::get_external_definitions(&libra_types_package); + let mut external_definitions = crate::common::get_external_definitions(&diem_types_package); // Add standard imports external_definitions.insert("fmt".to_string(), Vec::new()); @@ -122,8 +121,8 @@ where writeln!( self.out, r#" -// Build a Libra `Script` from a structured object `ScriptCall`. -func EncodeScript(call ScriptCall) libratypes.Script {{"# +// Build a Diem `Script` from a structured object `ScriptCall`. +func EncodeScript(call ScriptCall) diemtypes.Script {{"# )?; self.out.indent(); writeln!(self.out, "switch call := call.(type) {{")?; @@ -152,8 +151,8 @@ func EncodeScript(call ScriptCall) libratypes.Script {{"# writeln!( self.out, r#" -// Try to recognize a Libra `Script` and convert it into a structured object `ScriptCall`. -func DecodeScript(script *libratypes.Script) (ScriptCall, error) {{ +// Try to recognize a Diem `Script` and convert it into a structured object `ScriptCall`. +func DecodeScript(script *diemtypes.Script) (ScriptCall, error) {{ if helper := script_decoder_map[string(script.Code)]; helper != nil {{ val, err := helper(script) return val, err @@ -167,7 +166,7 @@ func DecodeScript(script *libratypes.Script) (ScriptCall, error) {{ fn output_script_encoder_function(&mut self, abi: &ScriptABI) -> Result<()> { writeln!( self.out, - "\n{}func Encode{}Script({}) libratypes.Script {{", + "\n{}func Encode{}Script({}) diemtypes.Script {{", Self::quote_doc(abi.doc()), abi.name().to_camel_case(), [ @@ -180,10 +179,10 @@ func DecodeScript(script *libratypes.Script) (ScriptCall, error) {{ self.out.indent(); writeln!( self.out, - r#"return libratypes.Script {{ + r#"return diemtypes.Script {{ Code: append([]byte(nil), {}_code...), - TyArgs: []libratypes.TypeTag{{{}}}, - Args: []libratypes.TransactionArgument{{{}}}, + TyArgs: []diemtypes.TypeTag{{{}}}, + Args: []diemtypes.TransactionArgument{{{}}}, }}"#, abi.name(), Self::quote_type_arguments(abi.ty_args()), @@ -196,7 +195,7 @@ func DecodeScript(script *libratypes.Script) (ScriptCall, error) {{ fn output_script_decoder_function(&mut self, abi: &ScriptABI) -> Result<()> { writeln!( self.out, - "\nfunc decode_{}_script(script *libratypes.Script) (ScriptCall, error) {{", + "\nfunc decode_{}_script(script *diemtypes.Script) (ScriptCall, error) {{", abi.name(), )?; self.out.indent(); @@ -247,7 +246,7 @@ func DecodeScript(script *libratypes.Script) (ScriptCall, error) {{ writeln!( self.out, r#" -var script_decoder_map = map[string]func(*libratypes.Script) (ScriptCall, error) {{"# +var script_decoder_map = map[string]func(*diemtypes.Script) (ScriptCall, error) {{"# )?; self.out.indent(); for abi in abis { @@ -288,8 +287,8 @@ var script_decoder_map = map[string]func(*libratypes.Script) (ScriptCall, error) writeln!( self.out, r#" -func decode_{0}_argument(arg libratypes.TransactionArgument) (value {1}, err error) {{ - if arg, ok := arg.(*libratypes.TransactionArgument__{2}); ok {{ +func decode_{0}_argument(arg diemtypes.TransactionArgument) (value {1}, err error) {{ + if arg, ok := arg.(*diemtypes.TransactionArgument__{2}); ok {{ {3} }} else {{ err = fmt.Errorf("Was expecting a {2} argument") @@ -326,7 +325,7 @@ func decode_{0}_argument(arg libratypes.TransactionArgument) (value {1}, err err fn quote_type_parameters(ty_args: &[TypeArgumentABI]) -> Vec { ty_args .iter() - .map(|ty_arg| format!("{} libratypes.TypeTag", ty_arg.name())) + .map(|ty_arg| format!("{} diemtypes.TypeTag", ty_arg.name())) .collect() } @@ -358,7 +357,7 @@ func decode_{0}_argument(arg libratypes.TransactionArgument) (value {1}, err err U8 => "uint8".into(), U64 => "uint64".into(), U128 => "serde.Uint128".into(), - Address => "libratypes.AccountAddress".into(), + Address => "diemtypes.AccountAddress".into(), Vector(type_tag) => match type_tag.as_ref() { U8 => "[]byte".into(), _ => common::type_not_allowed(type_tag), @@ -371,13 +370,13 @@ func decode_{0}_argument(arg libratypes.TransactionArgument) (value {1}, err err fn quote_transaction_argument(type_tag: &TypeTag, name: &str) -> String { use TypeTag::*; match type_tag { - Bool => format!("(*libratypes.TransactionArgument__Bool)(&{})", name), - U8 => format!("(*libratypes.TransactionArgument__U8)(&{})", name), - U64 => format!("(*libratypes.TransactionArgument__U64)(&{})", name), - U128 => format!("(*libratypes.TransactionArgument__U128)(&{})", name), - Address => format!("&libratypes.TransactionArgument__Address{{{}}}", name), + Bool => format!("(*diemtypes.TransactionArgument__Bool)(&{})", name), + U8 => format!("(*diemtypes.TransactionArgument__U8)(&{})", name), + U64 => format!("(*diemtypes.TransactionArgument__U64)(&{})", name), + U128 => format!("(*diemtypes.TransactionArgument__U128)(&{})", name), + Address => format!("&diemtypes.TransactionArgument__Address{{{}}}", name), Vector(type_tag) => match type_tag.as_ref() { - U8 => format!("(*libratypes.TransactionArgument__U8Vector)(&{})", name), + U8 => format!("(*diemtypes.TransactionArgument__U8Vector)(&{})", name), _ => common::type_not_allowed(type_tag), }, @@ -389,19 +388,19 @@ func decode_{0}_argument(arg libratypes.TransactionArgument) (value {1}, err err pub struct Installer { install_dir: PathBuf, serde_module_path: Option, - libra_module_path: Option, + diem_module_path: Option, } impl Installer { pub fn new( install_dir: PathBuf, serde_module_path: Option, - libra_module_path: Option, + diem_module_path: Option, ) -> Self { Installer { install_dir, serde_module_path, - libra_module_path, + diem_module_path, } } } @@ -420,7 +419,7 @@ impl crate::SourceInstaller for Installer { output( &mut file, self.serde_module_path.clone(), - self.libra_module_path.clone(), + self.diem_module_path.clone(), name.to_string(), abis, )?; diff --git a/language/transaction-builder/generator/src/java.rs b/language/transaction-builder/generator/src/java.rs index 8a6c05895f..3f9ee3808a 100644 --- a/language/transaction-builder/generator/src/java.rs +++ b/language/transaction-builder/generator/src/java.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_generate::{ indent::{IndentConfig, IndentedWriter}, @@ -78,7 +78,7 @@ fn write_script_call_files( package_name: &str, abis: &[ScriptABI], ) -> Result<()> { - let external_definitions = crate::common::get_external_definitions("org.libra.types"); + let external_definitions = crate::common::get_external_definitions("org.diem.types"); let script_registry: BTreeMap<_, _> = vec![( "ScriptCall".to_string(), common::make_abi_enum_container(abis), @@ -150,10 +150,10 @@ where import java.math.BigInteger; import java.lang.IllegalArgumentException; import java.lang.IndexOutOfBoundsException; -import org.libra.types.AccountAddress; -import org.libra.types.Script; -import org.libra.types.TransactionArgument; -import org.libra.types.TypeTag; +import org.diem.types.AccountAddress; +import org.diem.types.Script; +import org.diem.types.TransactionArgument; +import org.diem.types.TypeTag; import com.novi.serde.Int128; import com.novi.serde.Unsigned; import com.novi.serde.Bytes; @@ -167,7 +167,7 @@ import com.novi.serde.Bytes; self.out, r#" /** - * Build a Libra {{@link org.libra.types.Script}} from a structured value {{@link ScriptCall}}. + * Build a Diem {{@link org.diem.types.Script}} from a structured value {{@link ScriptCall}}. * * @param call {{@link ScriptCall}} value to encode. * @return Encoded script. @@ -184,9 +184,9 @@ public static Script encode_script(ScriptCall call) {{ self.out, r#" /** - * Try to recognize a Libra {{@link org.libra.types.Script}} and convert it into a structured value {{@code ScriptCall}}. + * Try to recognize a Diem {{@link org.diem.types.Script}} and convert it into a structured value {{@code ScriptCall}}. * - * @param script {{@link org.libra.types.Script}} values to decode. + * @param script {{@link org.diem.types.Script}} values to decode. * @return Decoded {{@link ScriptCall}} value. */ public static ScriptCall decode_script(Script script) throws IllegalArgumentException, IndexOutOfBoundsException {{ @@ -234,7 +234,7 @@ public static ScriptCall decode_script(Script script) throws IllegalArgumentExce Self::quote_doc( abi.doc(), [quoted_type_params_doc, quoted_params_doc].concat(), - "Encoded {@link org.libra.types.Script} value.", + "Encoded {@link org.diem.types.Script} value.", ), abi.name(), [quoted_type_params, quoted_params].concat().join(", ") diff --git a/language/transaction-builder/generator/src/lib.rs b/language/transaction-builder/generator/src/lib.rs index 7dfcd85cbc..ac6a385fbd 100644 --- a/language/transaction-builder/generator/src/lib.rs +++ b/language/transaction-builder/generator/src/lib.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::transaction::ScriptABI; +use diem_types::transaction::ScriptABI; use serde_generate::CustomCode; use std::io::Read; @@ -51,7 +51,7 @@ pub trait SourceInstaller { ) -> std::result::Result<(), Self::Error>; } -/// How to read custom code to inject in Libra containers. +/// How to read custom code to inject in Diem containers. pub fn read_custom_code_from_paths<'a, I>(package: &'a [&'a str], paths: I) -> CustomCode where I: Iterator, diff --git a/language/transaction-builder/generator/src/python3.rs b/language/transaction-builder/generator/src/python3.rs index 0d28900e14..6c79bca896 100644 --- a/language/transaction-builder/generator/src/python3.rs +++ b/language/transaction-builder/generator/src/python3.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use heck::{CamelCase, ShoutySnakeCase}; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_generate::{ indent::{IndentConfig, IndentedWriter}, @@ -20,13 +20,13 @@ use std::{ pub fn output( out: &mut dyn Write, serde_package_name: Option, - libra_package_name: Option, + diem_package_name: Option, abis: &[ScriptABI], ) -> Result<()> { let mut emitter = PythonEmitter { out: IndentedWriter::new(out, IndentConfig::Space(4)), serde_package_name, - libra_package_name, + diem_package_name, }; emitter.output_script_call_enum_with_imports(abis)?; emitter.output_additional_imports()?; @@ -58,8 +58,8 @@ struct PythonEmitter { out: IndentedWriter, /// Package where to find the serde module (if any). serde_package_name: Option, - /// Package where to find the libra module (if any). - libra_package_name: Option, + /// Package where to find the diem module (if any). + diem_package_name: Option, } impl PythonEmitter @@ -70,8 +70,8 @@ where writeln!( self.out, r#" -from {}libra_types import (Script, TypeTag, AccountAddress, TransactionArgument, TransactionArgument__Bool, TransactionArgument__U8, TransactionArgument__U64, TransactionArgument__U128, TransactionArgument__Address, TransactionArgument__U8Vector)"#, - match &self.libra_package_name { +from {}diem_types import (Script, TypeTag, AccountAddress, TransactionArgument, TransactionArgument__Bool, TransactionArgument__U8, TransactionArgument__U64, TransactionArgument__U128, TransactionArgument__Address, TransactionArgument__U8Vector)"#, + match &self.diem_package_name { None => "".into(), Some(package) => package.clone() + ".", }, @@ -83,7 +83,7 @@ from {}libra_types import (Script, TypeTag, AccountAddress, TransactionArgument, self.out, r#" def encode_script(call: ScriptCall) -> Script: - """Build a Libra `Script` from a structured object `ScriptCall`. + """Build a Diem `Script` from a structured object `ScriptCall`. """ helper = SCRIPT_ENCODER_MAP[call.__class__] return helper(call) @@ -96,7 +96,7 @@ def encode_script(call: ScriptCall) -> Script: self.out, r#" def decode_script(script: Script) -> ScriptCall: - """Try to recognize a Libra `Script` and convert it into a structured object `ScriptCall`. + """Try to recognize a Diem `Script` and convert it into a structured object `ScriptCall`. """ helper = SCRIPT_DECODER_MAP.get(script.code) if helper is None: @@ -107,11 +107,11 @@ def decode_script(script: Script) -> ScriptCall: } fn output_script_call_enum_with_imports(&mut self, abis: &[ScriptABI]) -> Result<()> { - let libra_types_module = match &self.libra_package_name { - None => "libra_types".into(), - Some(package) => format!("{}.libra_types", package), + let diem_types_module = match &self.diem_package_name { + None => "diem_types".into(), + Some(package) => format!("{}.diem_types", package), }; - let external_definitions = crate::common::get_external_definitions(&libra_types_module); + let external_definitions = crate::common::get_external_definitions(&diem_types_module); let script_registry: BTreeMap<_, _> = vec![( "ScriptCall".to_string(), crate::common::make_abi_enum_container(abis), @@ -388,19 +388,19 @@ def decode_{}_argument(arg: TransactionArgument) -> {}: pub struct Installer { install_dir: PathBuf, serde_package_name: Option, - libra_package_name: Option, + diem_package_name: Option, } impl Installer { pub fn new( install_dir: PathBuf, serde_package_name: Option, - libra_package_name: Option, + diem_package_name: Option, ) -> Self { Installer { install_dir, serde_package_name, - libra_package_name, + diem_package_name, } } @@ -423,7 +423,7 @@ impl crate::SourceInstaller for Installer { output( &mut file, self.serde_package_name.clone(), - self.libra_package_name.clone(), + self.diem_package_name.clone(), abis, )?; Ok(()) diff --git a/language/transaction-builder/generator/src/rust.rs b/language/transaction-builder/generator/src/rust.rs index 384c560252..bfb6270309 100644 --- a/language/transaction-builder/generator/src/rust.rs +++ b/language/transaction-builder/generator/src/rust.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::common; -use libra_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; +use diem_types::transaction::{ArgumentABI, ScriptABI, TypeArgumentABI}; use move_core_types::language_storage::TypeTag; use serde_generate::{ indent::{IndentConfig, IndentedWriter}, @@ -17,7 +17,7 @@ use std::{ }; /// Output transaction builders in Rust for the given ABIs. -/// If `local_types` is true, we generate a file suitable for the Libra codebase itself +/// If `local_types` is true, we generate a file suitable for the Diem codebase itself /// rather than using serde-generated, standalone definitions. pub fn output(out: &mut dyn Write, abis: &[ScriptABI], local_types: bool) -> Result<()> { let mut emitter = RustEmitter { @@ -56,7 +56,7 @@ pub fn output(out: &mut dyn Write, abis: &[ScriptABI], local_types: bool) -> Res struct RustEmitter { /// Writer. out: IndentedWriter, - /// Whether we are targetting the Libra repository itself (as opposed to generated Libra types). + /// Whether we are targetting the Diem repository itself (as opposed to generated Diem types). local_types: bool, } @@ -69,7 +69,7 @@ where writeln!( self.out, r#" -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // This file was generated. Do not modify! @@ -81,7 +81,7 @@ where writeln!( self.out, r#"//! Conversion library between a structured representation of a Move script call (`ScriptCall`) and the -//! standard LCS-compatible representation used in Libra transactions (`Script`). +//! standard LCS-compatible representation used in Diem transactions (`Script`). //! //! This code was generated by compiling known Script interfaces ("ABIs") with the tool `transaction-builder-generator`. "# @@ -147,14 +147,14 @@ impl ScriptCall { vec![ ("move_core_types::language_storage", vec!["TypeTag"]), ( - "libra_types::transaction", + "diem_types::transaction", vec!["Script", "TransactionArgument"], ), - ("libra_types::account_address", vec!["AccountAddress"]), + ("diem_types::account_address", vec!["AccountAddress"]), ] } else { vec![( - "libra_types", + "diem_types", vec!["AccountAddress", "TypeTag", "Script", "TransactionArgument"], )] }; @@ -173,7 +173,7 @@ impl ScriptCall { writeln!( self.out, r#" -/// Build a Libra `Script` from a structured object `ScriptCall`. +/// Build a Diem `Script` from a structured object `ScriptCall`. pub fn encode(self) -> Script {{"# )?; self.out.indent(); @@ -207,7 +207,7 @@ pub fn encode(self) -> Script {{"# writeln!( self.out, r#" -/// Try to recognize a Libra `Script` and convert it into a structured object `ScriptCall`. +/// Try to recognize a Diem `Script` and convert it into a structured object `ScriptCall`. pub fn decode(script: &Script) -> Option {{ match SCRIPT_DECODER_MAP.get({}) {{ Some(decoder) => decoder(script), @@ -476,14 +476,14 @@ fn decode_{}_argument(arg: TransactionArgument) -> Option<{}> {{ pub struct Installer { install_dir: PathBuf, - libra_types_version: String, + diem_types_version: String, } impl Installer { - pub fn new(install_dir: PathBuf, libra_types_version: String) -> Self { + pub fn new(install_dir: PathBuf, diem_types_version: String) -> Self { Installer { install_dir, - libra_types_version, + diem_types_version, } } } @@ -518,9 +518,9 @@ edition = "2018" once_cell = "1.4.0" serde = {{ version = "1.0", features = ["derive"] }} serde_bytes = "0.11" -libra-types = {{ path = "../libra-types", version = "{}" }} +diem-types = {{ path = "../diem-types", version = "{}" }} "#, - name, version, self.libra_types_version, + name, version, self.diem_types_version, )?; std::fs::create_dir(dir_path.join("src"))?; let source_path = dir_path.join("src/lib.rs"); diff --git a/language/transaction-builder/generator/tests/cli.rs b/language/transaction-builder/generator/tests/cli.rs index d6f5fc50e5..44733d9a15 100644 --- a/language/transaction-builder/generator/tests/cli.rs +++ b/language/transaction-builder/generator/tests/cli.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{io::Write, process::Command}; @@ -22,7 +22,7 @@ fn test_examples_in_readme() -> std::io::Result<()> { write!(&mut test_script, "{}", quotes.next().unwrap())?; write!(&mut test_script, "{}", quotes.next().unwrap())?; let output = Command::new("bash") - .current_dir("../../..") // root of Libra + .current_dir("../../..") // root of Diem .env("DEST", dir.path()) .arg("-e") .arg("-x") @@ -41,7 +41,7 @@ fn test_examples_in_readme() -> std::io::Result<()> { let mut test_script = std::fs::File::create(dir.path().join("test.sh"))?; write!(&mut test_script, "{}", quotes.next().unwrap())?; let output = Command::new("bash") - .current_dir("../../..") // root of Libra + .current_dir("../../..") // root of Diem .env("DEST", dir.path()) .arg("-e") .arg("-x") diff --git a/language/transaction-builder/generator/tests/generation.rs b/language/transaction-builder/generator/tests/generation.rs index 2489b73843..b69a84b599 100644 --- a/language/transaction-builder/generator/tests/generation.rs +++ b/language/transaction-builder/generator/tests/generation.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::transaction::ScriptABI; +use diem_types::transaction::ScriptABI; use serde_generate as serdegen; use serde_generate::SourceInstaller as _; use serde_reflection::Registry; @@ -10,8 +10,8 @@ use tempfile::tempdir; use transaction_builder_generator as buildgen; use transaction_builder_generator::SourceInstaller as _; -fn get_libra_registry() -> Registry { - let path = "../../../testsuite/generate-format/tests/staged/libra.yaml"; +fn get_diem_registry() -> Registry { + let path = "../../../testsuite/generate-format/tests/staged/diem.yaml"; let content = std::fs::read_to_string(path).unwrap(); serde_yaml::from_str::(content.as_str()).unwrap() } @@ -21,33 +21,33 @@ fn get_stdlib_script_abis() -> Vec { buildgen::read_abis(path).expect("reading ABI files should not fail") } -const EXPECTED_OUTPUT : &str = "225 1 161 28 235 11 1 0 0 0 7 1 0 2 2 2 4 3 6 16 4 22 2 5 24 29 7 53 97 8 150 1 16 0 0 0 1 1 0 0 2 0 1 0 0 3 2 3 1 1 0 4 1 3 0 1 5 1 6 12 1 8 0 5 6 8 0 5 3 10 2 10 2 0 5 6 12 5 3 10 2 10 2 1 9 0 12 76 105 98 114 97 65 99 99 111 117 110 116 18 87 105 116 104 100 114 97 119 67 97 112 97 98 105 108 105 116 121 27 101 120 116 114 97 99 116 95 119 105 116 104 100 114 97 119 95 99 97 112 97 98 105 108 105 116 121 8 112 97 121 95 102 114 111 109 27 114 101 115 116 111 114 101 95 119 105 116 104 100 114 97 119 95 99 97 112 97 98 105 108 105 116 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 4 1 12 11 0 17 0 12 5 14 5 10 1 10 2 11 3 11 4 56 0 11 5 17 2 2 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 76 66 82 3 76 66 82 0 4 3 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 1 135 214 18 0 0 0 0 0 4 0 4 0 \n"; +const EXPECTED_OUTPUT: &str = "224 1 161 28 235 11 1 0 0 0 7 1 0 2 2 2 4 3 6 16 4 22 2 5 24 29 7 53 96 8 149 1 16 0 0 0 1 1 0 0 2 0 1 0 0 3 2 3 1 1 0 4 1 3 0 1 5 1 6 12 1 8 0 5 6 8 0 5 3 10 2 10 2 0 5 6 12 5 3 10 2 10 2 1 9 0 11 68 105 101 109 65 99 99 111 117 110 116 18 87 105 116 104 100 114 97 119 67 97 112 97 98 105 108 105 116 121 27 101 120 116 114 97 99 116 95 119 105 116 104 100 114 97 119 95 99 97 112 97 98 105 108 105 116 121 8 112 97 121 95 102 114 111 109 27 114 101 115 116 111 114 101 95 119 105 116 104 100 114 97 119 95 99 97 112 97 98 105 108 105 116 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 4 1 12 11 0 17 0 12 5 14 5 10 1 10 2 11 3 11 4 56 0 11 5 17 2 2 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 88 68 88 3 88 68 88 0 4 3 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 1 135 214 18 0 0 0 0 0 4 0 4 0 \n"; -// Cannot run this test in the CI of Libra. +// Cannot run this test in the CI of Diem. #[test] #[ignore] fn test_that_python_code_parses_and_passes_pyre_check() { - let registry = get_libra_registry(); + let registry = get_diem_registry(); let abis = get_stdlib_script_abis(); let dir = tempdir().unwrap(); let src_dir_path = dir.path().join("src"); let installer = serdegen::python3::Installer::new(src_dir_path.clone(), /* package */ None); - let paths = std::fs::read_dir("examples/python3/custom_libra_code") + let paths = std::fs::read_dir("examples/python3/custom_diem_code") .unwrap() .map(|e| e.unwrap().path()); - let config = serdegen::CodeGeneratorConfig::new("libra_types".to_string()) + let config = serdegen::CodeGeneratorConfig::new("diem_types".to_string()) .with_encodings(vec![serdegen::Encoding::Lcs]) .with_custom_code(buildgen::read_custom_code_from_paths( - &["libra_types"], + &["diem_types"], paths, )); installer.install_module(&config, ®istry).unwrap(); installer.install_serde_runtime().unwrap(); installer.install_lcs_runtime().unwrap(); - let stdlib_dir_path = src_dir_path.join("libra_stdlib"); + let stdlib_dir_path = src_dir_path.join("diem_stdlib"); std::fs::create_dir_all(stdlib_dir_path.clone()).unwrap(); let source_path = stdlib_dir_path.join("__init__.py"); @@ -77,7 +77,7 @@ fn test_that_python_code_parses_and_passes_pyre_check() { EXPECTED_OUTPUT ); - // This temporarily requires a checkout of serde-reflection.git next to libra.git + // This temporarily requires a checkout of serde-reflection.git next to diem.git // Hopefully, numpy's next release will include typeshed (.pyi) files and we will only // require a local install of numpy (on top of python3 and pyre). let status = Command::new("cp") @@ -121,27 +121,27 @@ fn test_that_python_code_parses_and_passes_pyre_check() { #[test] fn test_that_rust_code_compiles() { - let registry = get_libra_registry(); + let registry = get_diem_registry(); let abis = get_stdlib_script_abis(); let dir = tempdir().unwrap(); let installer = serdegen::rust::Installer::new(dir.path().to_path_buf()); - let config = serdegen::CodeGeneratorConfig::new("libra-types".to_string()); + let config = serdegen::CodeGeneratorConfig::new("diem-types".to_string()); installer.install_module(&config, ®istry).unwrap(); - let stdlib_dir_path = dir.path().join("libra-stdlib"); + let stdlib_dir_path = dir.path().join("diem-stdlib"); std::fs::create_dir_all(stdlib_dir_path.clone()).unwrap(); let mut cargo = std::fs::File::create(&stdlib_dir_path.join("Cargo.toml")).unwrap(); write!( cargo, r#"[package] -name = "libra-stdlib" +name = "diem-stdlib" version = "0.1.0" edition = "2018" [dependencies] -libra-types = {{ path = "../libra-types", version = "0.1.0" }} +diem-types = {{ path = "../diem-types", version = "0.1.0" }} serde_bytes = "0.11" serde = {{ version = "1.0.114", features = ["derive"] }} libra-canonical-serialization = "0.1.0" @@ -168,7 +168,7 @@ test = false // Use a stable `target` dir to avoid downloading and recompiling crates everytime. let target_dir = std::env::current_dir().unwrap().join("../../target"); let status = Command::new("cargo") - .current_dir(dir.path().join("libra-stdlib")) + .current_dir(dir.path().join("diem-stdlib")) .arg("build") .arg("--target-dir") .arg(target_dir.clone()) @@ -189,11 +189,11 @@ test = false #[test] #[ignore] fn test_that_cpp_code_compiles_and_demo_runs() { - let registry = get_libra_registry(); + let registry = get_diem_registry(); let abis = get_stdlib_script_abis(); let dir = tempdir().unwrap(); - let config = serdegen::CodeGeneratorConfig::new("libra_types".to_string()) + let config = serdegen::CodeGeneratorConfig::new("diem_types".to_string()) .with_encodings(vec![serdegen::Encoding::Lcs]); let lcs_installer = serdegen::cpp::Installer::new(dir.path().to_path_buf()); lcs_installer.install_module(&config, ®istry).unwrap(); @@ -202,7 +202,7 @@ fn test_that_cpp_code_compiles_and_demo_runs() { let abi_installer = buildgen::cpp::Installer::new(dir.path().to_path_buf()); abi_installer - .install_transaction_builders("libra_stdlib", &abis) + .install_transaction_builders("diem_stdlib", &abis) .unwrap(); std::fs::copy( @@ -214,7 +214,7 @@ fn test_that_cpp_code_compiles_and_demo_runs() { let status = Command::new("clang++") .arg("--std=c++17") .arg("-g") - .arg(dir.path().join("libra_stdlib.cpp")) + .arg(dir.path().join("diem_stdlib.cpp")) .arg(dir.path().join("stdlib_demo.cpp")) .arg("-o") .arg(dir.path().join("stdlib_demo")) @@ -235,17 +235,17 @@ fn test_that_cpp_code_compiles_and_demo_runs() { #[test] #[ignore] fn test_that_java_code_compiles_and_demo_runs() { - let registry = get_libra_registry(); + let registry = get_diem_registry(); let abis = get_stdlib_script_abis(); let dir = tempdir().unwrap(); - let paths = std::fs::read_dir("examples/java/custom_libra_code") + let paths = std::fs::read_dir("examples/java/custom_diem_code") .unwrap() .map(|e| e.unwrap().path()); - let config = serdegen::CodeGeneratorConfig::new("org.libra.types".to_string()) + let config = serdegen::CodeGeneratorConfig::new("org.diem.types".to_string()) .with_encodings(vec![serdegen::Encoding::Lcs]) .with_custom_code(buildgen::read_custom_code_from_paths( - &["org", "libra", "types"], + &["org", "diem", "types"], paths, )); let lcs_installer = serdegen::java::Installer::new(dir.path().to_path_buf()); @@ -255,7 +255,7 @@ fn test_that_java_code_compiles_and_demo_runs() { let abi_installer = buildgen::java::Installer::new(dir.path().to_path_buf()); abi_installer - .install_transaction_builders("org.libra.stdlib", &abis) + .install_transaction_builders("org.diem.stdlib", &abis) .unwrap(); std::fs::copy( @@ -268,8 +268,8 @@ fn test_that_java_code_compiles_and_demo_runs() { std::iter::empty() .chain(std::fs::read_dir(dir.path().join("com/novi/serde")).unwrap()) .chain(std::fs::read_dir(dir.path().join("com/novi/lcs")).unwrap()) - .chain(std::fs::read_dir(dir.path().join("org/libra/types")).unwrap()) - .chain(std::fs::read_dir(dir.path().join("org/libra/stdlib")).unwrap()) + .chain(std::fs::read_dir(dir.path().join("org/diem/types")).unwrap()) + .chain(std::fs::read_dir(dir.path().join("org/diem/stdlib")).unwrap()) .map(|e| e.unwrap().path()) .chain(std::iter::once(dir.path().join("StdlibDemo.java"))) }; @@ -312,11 +312,11 @@ fn test_that_java_code_compiles_and_demo_runs() { #[test] #[ignore] fn test_that_golang_code_compiles_and_demo_runs() { - let registry = get_libra_registry(); + let registry = get_diem_registry(); let abis = get_stdlib_script_abis(); let dir = tempdir().unwrap(); - let config = serdegen::CodeGeneratorConfig::new("libratypes".to_string()) + let config = serdegen::CodeGeneratorConfig::new("diemtypes".to_string()) .with_encodings(vec![serdegen::Encoding::Lcs]); let lcs_installer = serdegen::golang::Installer::new( dir.path().to_path_buf(), @@ -330,7 +330,7 @@ fn test_that_golang_code_compiles_and_demo_runs() { Some("testing".to_string()), ); abi_installer - .install_transaction_builders("librastdlib", &abis) + .install_transaction_builders("diemstdlib", &abis) .unwrap(); std::fs::copy( diff --git a/language/transaction-builder/src/lib.rs b/language/transaction-builder/src/lib.rs index d880f622ab..ba8c1b3be2 100644 --- a/language/transaction-builder/src/lib.rs +++ b/language/transaction-builder/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/vm/Cargo.toml b/language/vm/Cargo.toml index 5efa0bb593..5de6c655cc 100644 --- a/language/vm/Cargo.toml +++ b/language/vm/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "vm" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra vm" +authors = ["Diem Association "] +description = "Diem vm" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,19 +16,19 @@ mirai-annotations = "1.10.1" proptest = { version = "0.10.1", optional = true } proptest-derive = { version = "0.2.0", optional = true } ref-cast = "1.0.3" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../move-core/types", version = "0.1.0" } num-variants = { path = "../../common/num-variants", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" proptest-derive = "0.2.0" -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } move-core-types = { path = "../move-core/types", version = "0.1.0", features = ["fuzzing"] } serde_json = "1.0.60" [features] default = [] -fuzzing = ["proptest", "proptest-derive", "libra-proptest-helpers", "move-core-types/fuzzing"] +fuzzing = ["proptest", "proptest-derive", "diem-proptest-helpers", "move-core-types/fuzzing"] diff --git a/language/vm/README.md b/language/vm/README.md index 10769bedbd..d1ac77287a 100644 --- a/language/vm/README.md +++ b/language/vm/README.md @@ -29,7 +29,7 @@ are private, and types carry no functions or methods. The MoveVM core crate provides the definition of the file format and all utilities related to the file format: * A simple Rust abstraction over the file format - (`libra/language/vm/src/file_format.rs`) and the bytecodes. These Rust + (`diem/language/vm/src/file_format.rs`) and the bytecodes. These Rust structures are widely used in the code base. * Serialization and deserialization of the file format. These define the on-chain binary representation of the code. @@ -37,7 +37,7 @@ utilities related to the file format: * A proptest infrastructure for the file format. The `CompiledModule` and `CompiledScript` definitions in -`libra/language/vm/src/file_format.rs` are the top-level structs for a Move +`diem/language/vm/src/file_format.rs` are the top-level structs for a Move *Module* or *Transaction Script*, respectively. These structs provide a simple abstraction over the file format. Additionally, a set of [*Views*](https://github.com/libra/libra/blob/master/language/vm/src/views.rs) are defined to easily navigate and inspect diff --git a/language/vm/serializer-tests/Cargo.toml b/language/vm/serializer-tests/Cargo.toml index b945ec9d7d..77c9884742 100644 --- a/language/vm/serializer-tests/Cargo.toml +++ b/language/vm/serializer-tests/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "serializer-tests" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra serializer tests" +authors = ["Diem Association "] +description = "Diem serializer tests" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dev-dependencies] -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } proptest = "0.10.1" proptest-derive = "0.2.0" vm = { path = "../", version = "0.1.0", features = ["fuzzing"] } diff --git a/language/vm/serializer-tests/src/lib.rs b/language/vm/serializer-tests/src/lib.rs index 7a4e45db9c..5496168458 100644 --- a/language/vm/serializer-tests/src/lib.rs +++ b/language/vm/serializer-tests/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/vm/serializer-tests/tests/serializer_tests.rs b/language/vm/serializer-tests/tests/serializer_tests.rs index a93807460a..d9538ff83f 100644 --- a/language/vm/serializer-tests/tests/serializer_tests.rs +++ b/language/vm/serializer-tests/tests/serializer_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proptest::prelude::*; diff --git a/language/vm/src/access.rs b/language/vm/src/access.rs index 65d6a73c9d..09832c36a1 100644 --- a/language/vm/src/access.rs +++ b/language/vm/src/access.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Defines accessors for compiled modules. diff --git a/language/vm/src/check_bounds.rs b/language/vm/src/check_bounds.rs index d12a5982bc..66b157a1d9 100644 --- a/language/vm/src/check_bounds.rs +++ b/language/vm/src/check_bounds.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/constant.rs b/language/vm/src/constant.rs index 1048f29aec..38313ef7de 100644 --- a/language/vm/src/constant.rs +++ b/language/vm/src/constant.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::file_format::{Constant, SignatureToken}; diff --git a/language/vm/src/deserializer.rs b/language/vm/src/deserializer.rs index d29be85238..5cf740df01 100644 --- a/language/vm/src/deserializer.rs +++ b/language/vm/src/deserializer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{errors::*, file_format::*, file_format_common::*}; @@ -295,9 +295,9 @@ fn deserialize_compiled_module(binary: &[u8]) -> BinaryLoaderResult) -> BinaryLoaderResult<()> { - let mut magic = [0u8; BinaryConstants::LIBRA_MAGIC_SIZE]; + let mut magic = [0u8; BinaryConstants::DIEM_MAGIC_SIZE]; if let Ok(count) = cursor.read(&mut magic) { - if count != BinaryConstants::LIBRA_MAGIC_SIZE || magic != BinaryConstants::LIBRA_MAGIC { + if count != BinaryConstants::DIEM_MAGIC_SIZE || magic != BinaryConstants::DIEM_MAGIC { return Err(PartialVMError::new(StatusCode::BAD_MAGIC)); } } else { diff --git a/language/vm/src/errors.rs b/language/vm/src/errors.rs index bef3639efd..1db4c1c0fe 100644 --- a/language/vm/src/errors.rs +++ b/language/vm/src/errors.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/file_format.rs b/language/vm/src/file_format.rs index 586b7020ad..218bb64cee 100644 --- a/language/vm/src/file_format.rs +++ b/language/vm/src/file_format.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Binary format for transactions and modules. @@ -11,7 +11,7 @@ //! //! Overall the binary format is structured in a number of sections: //! - **Header**: this must start at offset 0 in the binary. It contains a blob that starts every -//! Libra binary, followed by the version of the VM used to compile the code, and last is the +//! Diem binary, followed by the version of the VM used to compile the code, and last is the //! number of tables present in this binary. //! - **Table Specification**: it's a number of tuple of the form //! `(table type, starting_offset, byte_count)`. The number of entries is specified in the @@ -207,7 +207,7 @@ pub const NO_TYPE_ARGUMENTS: SignatureIndex = SignatureIndex(0); /// The `address` is a reference to the account that holds the code and the `name` is used as a /// key in order to load the module. /// -/// Modules live in the *code* namespace of an LibraAccount. +/// Modules live in the *code* namespace of an DiemAccount. /// /// Modules introduce a scope made of all types defined in the module and all functions. /// Type definitions (fields) are private to the module. Outside the module a diff --git a/language/vm/src/file_format_common.rs b/language/vm/src/file_format_common.rs index d00c9be365..4d7b5a2538 100644 --- a/language/vm/src/file_format_common.rs +++ b/language/vm/src/file_format_common.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Constants for the binary format. @@ -23,11 +23,11 @@ use std::{ pub enum BinaryConstants {} impl BinaryConstants { /// The blob that must start a binary. - pub const LIBRA_MAGIC_SIZE: usize = 4; - pub const LIBRA_MAGIC: [u8; BinaryConstants::LIBRA_MAGIC_SIZE] = [0xA1, 0x1C, 0xEB, 0x0B]; - /// The `LIBRA_MAGIC` size, 4 byte for major version and 1 byte + pub const DIEM_MAGIC_SIZE: usize = 4; + pub const DIEM_MAGIC: [u8; BinaryConstants::DIEM_MAGIC_SIZE] = [0xA1, 0x1C, 0xEB, 0x0B]; + /// The `DIEM_MAGIC` size, 4 byte for major version and 1 byte /// for table count. - pub const HEADER_SIZE: usize = BinaryConstants::LIBRA_MAGIC_SIZE + 5; + pub const HEADER_SIZE: usize = BinaryConstants::DIEM_MAGIC_SIZE + 5; /// A (Table Type, Start Offset, Byte Count) size, which is 1 byte for the type and /// 4 bytes for the offset/count. pub const TABLE_HEADER_SIZE: u8 = size_of::() as u8 * 2 + 1; diff --git a/language/vm/src/internals.rs b/language/vm/src/internals.rs index 6bb5748f73..028690e3b0 100644 --- a/language/vm/src/internals.rs +++ b/language/vm/src/internals.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Types meant for use by other parts of this crate, and by other crates that are designed to diff --git a/language/vm/src/lib.rs b/language/vm/src/lib.rs index 7b4a9badd6..d8d5d74439 100644 --- a/language/vm/src/lib.rs +++ b/language/vm/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/language/vm/src/normalized.rs b/language/vm/src/normalized.rs index 25db29798c..d27ac518c4 100644 --- a/language/vm/src/normalized.rs +++ b/language/vm/src/normalized.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/proptest_types.rs b/language/vm/src/proptest_types.rs index 5fe23654ef..0f0b93640a 100644 --- a/language/vm/src/proptest_types.rs +++ b/language/vm/src/proptest_types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Utilities for property-based testing. diff --git a/language/vm/src/proptest_types/constants.rs b/language/vm/src/proptest_types/constants.rs index d54944405e..69e5e93d3c 100644 --- a/language/vm/src/proptest_types/constants.rs +++ b/language/vm/src/proptest_types/constants.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::file_format::{Constant, SignatureToken}; diff --git a/language/vm/src/proptest_types/functions.rs b/language/vm/src/proptest_types/functions.rs index 36ba3fa93c..6041524df5 100644 --- a/language/vm/src/proptest_types/functions.rs +++ b/language/vm/src/proptest_types/functions.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/proptest_types/signature.rs b/language/vm/src/proptest_types/signature.rs index f67ac9148a..0ddb6b0428 100644 --- a/language/vm/src/proptest_types/signature.rs +++ b/language/vm/src/proptest_types/signature.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::file_format::{ diff --git a/language/vm/src/proptest_types/types.rs b/language/vm/src/proptest_types/types.rs index b74c5fafa7..9547e8856e 100644 --- a/language/vm/src/proptest_types/types.rs +++ b/language/vm/src/proptest_types/types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/serializer.rs b/language/vm/src/serializer.rs index 5487fb7d91..6e0ac0a067 100644 --- a/language/vm/src/serializer.rs +++ b/language/vm/src/serializer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Serialization of transactions and modules. @@ -285,7 +285,7 @@ fn serialize_table_index( } fn serialize_magic(binary: &mut BinaryData) -> Result<()> { - for byte in &BinaryConstants::LIBRA_MAGIC { + for byte in &BinaryConstants::DIEM_MAGIC { binary.push(*byte)?; } Ok(()) diff --git a/language/vm/src/unit_tests/binary_tests.rs b/language/vm/src/unit_tests/binary_tests.rs index e45115f60c..fcef352642 100644 --- a/language/vm/src/unit_tests/binary_tests.rs +++ b/language/vm/src/unit_tests/binary_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::file_format_common::*; diff --git a/language/vm/src/unit_tests/deserializer_tests.rs b/language/vm/src/unit_tests/deserializer_tests.rs index 03c1d04d06..4007fa652a 100644 --- a/language/vm/src/unit_tests/deserializer_tests.rs +++ b/language/vm/src/unit_tests/deserializer_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -35,7 +35,7 @@ fn malformed_simple() { ); // only magic - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); res = CompiledScript::deserialize(&binary); assert_eq!( res.expect_err("Expected malformed binary").major_status(), @@ -43,7 +43,7 @@ fn malformed_simple() { ); // bad version - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(2); // version binary.push(0); binary.push(0); @@ -57,7 +57,7 @@ fn malformed_simple() { ); // bad version - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(2); // version binary.push(0); binary.push(0); @@ -71,7 +71,7 @@ fn malformed_simple() { ); // bad uleb (more than allowed for table count) - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -86,7 +86,7 @@ fn malformed_simple() { ); // bad uleb (too big) - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -110,7 +110,7 @@ fn malformed_simple() { ); // no tables - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -123,7 +123,7 @@ fn malformed_simple() { ); // missing tables - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -136,7 +136,7 @@ fn malformed_simple() { ); // missing table content - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -152,7 +152,7 @@ fn malformed_simple() { ); // bad table header (bad offset) - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -168,7 +168,7 @@ fn malformed_simple() { ); // bad table header (bad offset) - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -190,7 +190,7 @@ fn malformed_simple() { ); // incomplete table - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -209,7 +209,7 @@ fn malformed_simple() { ); // unknown table - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -228,7 +228,7 @@ fn malformed_simple() { ); // duplicate table - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); @@ -254,7 +254,7 @@ fn malformed_simple() { ); // bad table in script - binary = BinaryConstants::LIBRA_MAGIC.to_vec(); + binary = BinaryConstants::DIEM_MAGIC.to_vec(); binary.push(1); // version binary.push(0); binary.push(0); diff --git a/language/vm/src/unit_tests/mod.rs b/language/vm/src/unit_tests/mod.rs index 1717abfe90..70487623b2 100644 --- a/language/vm/src/unit_tests/mod.rs +++ b/language/vm/src/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod binary_tests; diff --git a/language/vm/src/unit_tests/number_tests.rs b/language/vm/src/unit_tests/number_tests.rs index 4c951a83a9..168aaa727f 100644 --- a/language/vm/src/unit_tests/number_tests.rs +++ b/language/vm/src/unit_tests/number_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::file_format_common::*; diff --git a/language/vm/src/unit_tests/signature_token_tests.rs b/language/vm/src/unit_tests/signature_token_tests.rs index 7bc502147b..1c9dea1818 100644 --- a/language/vm/src/unit_tests/signature_token_tests.rs +++ b/language/vm/src/unit_tests/signature_token_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/language/vm/src/views.rs b/language/vm/src/views.rs index 1548055a17..47f61f1d36 100644 --- a/language/vm/src/views.rs +++ b/language/vm/src/views.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! An alternate representation of the file format built on top of the existing format. diff --git a/mempool/Cargo.toml b/mempool/Cargo.toml index b04ea22a6f..ca76f1a905 100644 --- a/mempool/Cargo.toml +++ b/mempool/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-mempool" +name = "diem-mempool" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra mempool" +authors = ["Diem Association "] +description = "Diem mempool" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -23,15 +23,15 @@ tokio = { version = "0.2.22", features = ["full"] } bounded-executor = { path = "../common/bounded-executor", version = "0.1.0" } channel = { path = "../common/channel", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-infallible = { path = "../common/infallible", version = "0.1.0" } -libra-proptest-helpers = { path = "../common/proptest-helpers", optional = true } -libra-trace = { path = "../common/trace", version = "0.1.0" } -libra-types = { path = "../types", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-infallible = { path = "../common/infallible", version = "0.1.0" } +diem-proptest-helpers = { path = "../common/proptest-helpers", optional = true } +diem-trace = { path = "../common/trace", version = "0.1.0" } +diem-types = { path = "../types", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } mirai-annotations = "1.10.1" network = { path = "../network", version = "0.1.0" } rand = "0.7.3" @@ -46,11 +46,11 @@ storage-service = { path = "../storage/storage-service", version = "0.1.0", opti [dev-dependencies] proptest = "0.10.1" -libra-config = { path = "../config", version = "0.1.0", features = ["fuzzing"] } -libra-network-address = { path = "../network/network-address", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0", features = ["fuzzing"] } +diem-network-address = { path = "../network/network-address", version = "0.1.0" } storage-interface = { path = "../storage/storage-interface", version = "0.1.0", features = ["fuzzing"] } [features] default = [] failpoints = ["fail/failpoints", "vm-validator/failpoints"] -fuzzing = ["proptest", "libra-types/fuzzing", "storage-interface/fuzzing", "libra-config/fuzzing",] +fuzzing = ["proptest", "diem-types/fuzzing", "storage-interface/fuzzing", "diem-config/fuzzing",] diff --git a/mempool/src/core_mempool/index.rs b/mempool/src/core_mempool/index.rs index 32f8b37ac2..0e2128bf66 100644 --- a/mempool/src/core_mempool/index.rs +++ b/mempool/src/core_mempool/index.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// This module provides various indexes used by Mempool @@ -7,8 +7,8 @@ use crate::{ counters, logging::{LogEntry, LogSchema}, }; -use libra_logger::prelude::*; -use libra_types::{account_address::AccountAddress, transaction::GovernanceRole}; +use diem_logger::prelude::*; +use diem_types::{account_address::AccountAddress, transaction::GovernanceRole}; use rand::seq::SliceRandom; use std::{ cmp::Ordering, diff --git a/mempool/src/core_mempool/mempool.rs b/mempool/src/core_mempool/mempool.rs index f0e5dfba26..ad79a13fdd 100644 --- a/mempool/src/core_mempool/mempool.rs +++ b/mempool/src/core_mempool/mempool.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! mempool is used to track transactions which have been submitted but not yet @@ -13,10 +13,10 @@ use crate::{ counters, logging::{LogEntry, LogSchema, TxnsLog}, }; -use libra_config::config::NodeConfig; -use libra_logger::prelude::*; -use libra_trace::prelude::*; -use libra_types::{ +use diem_config::config::NodeConfig; +use diem_logger::prelude::*; +use diem_trace::prelude::*; +use diem_types::{ account_address::AccountAddress, mempool_status::{MempoolStatus, MempoolStatusCode}, transaction::{GovernanceRole, SignedTransaction}, @@ -133,7 +133,7 @@ impl Mempool { } let expiration_time = - libra_infallible::duration_since_epoch() + self.system_transaction_timeout; + diem_infallible::duration_since_epoch() + self.system_transaction_timeout; if timeline_state != TimelineState::NonQualified { self.metrics_cache .insert((txn.sender(), txn.sequence_number()), SystemTime::now()); diff --git a/mempool/src/core_mempool/mod.rs b/mempool/src/core_mempool/mod.rs index 07a4de3f3c..d7ce867a82 100644 --- a/mempool/src/core_mempool/mod.rs +++ b/mempool/src/core_mempool/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod index; diff --git a/mempool/src/core_mempool/transaction.rs b/mempool/src/core_mempool/transaction.rs index 1ff400ae9a..b65d691a10 100644 --- a/mempool/src/core_mempool/transaction.rs +++ b/mempool/src/core_mempool/transaction.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::{ +use diem_types::{ account_address::AccountAddress, transaction::{GovernanceRole, SignedTransaction}, }; diff --git a/mempool/src/core_mempool/transaction_store.rs b/mempool/src/core_mempool/transaction_store.rs index ffae34bf07..eaef86dc36 100644 --- a/mempool/src/core_mempool/transaction_store.rs +++ b/mempool/src/core_mempool/transaction_store.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -14,9 +14,9 @@ use crate::{ logging::{LogEntry, LogEvent, LogSchema, TxnsLog}, }; use anyhow::{format_err, Result}; -use libra_config::config::MempoolConfig; -use libra_logger::prelude::*; -use libra_types::{ +use diem_config::config::MempoolConfig; +use diem_logger::prelude::*; +use diem_types::{ account_address::AccountAddress, mempool_status::{MempoolStatus, MempoolStatusCode}, transaction::SignedTransaction, @@ -385,7 +385,7 @@ impl TransactionStore { &mut self, metrics_cache: &TtlCache<(AccountAddress, u64), SystemTime>, ) { - let now = libra_infallible::duration_since_epoch(); + let now = diem_infallible::duration_since_epoch(); self.gc(now, true, metrics_cache); } diff --git a/mempool/src/core_mempool/ttl_cache.rs b/mempool/src/core_mempool/ttl_cache.rs index 1a182e9ed2..375c2965e5 100644 --- a/mempool/src/core_mempool/ttl_cache.rs +++ b/mempool/src/core_mempool/ttl_cache.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{ diff --git a/mempool/src/counters.rs b/mempool/src/counters.rs index 1724925bb1..775a2bcaa6 100644 --- a/mempool/src/counters.rs +++ b/mempool/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ +use diem_metrics::{ register_histogram, register_histogram_vec, register_int_counter, register_int_counter_vec, register_int_gauge, register_int_gauge_vec, DurationHistogram, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, @@ -75,7 +75,7 @@ pub const UNKNOWN_PEER: &str = "unknown_peer"; /// Counter tracking size of various indices in core mempool pub static CORE_MEMPOOL_INDEX_SIZE: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_core_mempool_index_size", + "diem_core_mempool_index_size", "Size of a core mempool index", &["index"] ) @@ -85,7 +85,7 @@ pub static CORE_MEMPOOL_INDEX_SIZE: Lazy = Lazy::new(|| { /// Counter tracking number of txns removed from core mempool pub static CORE_MEMPOOL_REMOVED_TXNS: Lazy = Lazy::new(|| { register_int_counter!( - "libra_core_mempool_removed_txns_count", + "diem_core_mempool_removed_txns_count", "Number of txns removed from core mempool" ) .unwrap() @@ -95,7 +95,7 @@ pub static CORE_MEMPOOL_REMOVED_TXNS: Lazy = Lazy::new(|| { /// (e.g. time from txn entering core mempool to being pulled in consensus block) pub static CORE_MEMPOOL_TXN_COMMIT_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_core_mempool_txn_commit_latency", + "diem_core_mempool_txn_commit_latency", "Latency of txn reaching various stages in core mempool after insertion", &["stage"] ) @@ -106,7 +106,7 @@ pub static CORE_MEMPOOL_TXN_COMMIT_LATENCY: Lazy = Lazy::new(|| { /// how many txns were actually cleaned up in this GC event pub static CORE_MEMPOOL_GC_EVENT_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_core_mempool_gc_event_count", + "diem_core_mempool_gc_event_count", "Number of times the periodic garbage-collection event occurs, regardless of how many txns were actually removed", &["type"]) .unwrap() @@ -115,7 +115,7 @@ pub static CORE_MEMPOOL_GC_EVENT_COUNT: Lazy = Lazy::new(|| { /// Counter tracking time for how long a transaction stayed in core-mempool before being garbage-collected pub static CORE_MEMPOOL_GC_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_core_mempool_gc_latency", + "diem_core_mempool_gc_latency", "How long a transaction stayed in core mempool before garbage-collected", &["type", "status"] ) @@ -136,7 +136,7 @@ pub static PENDING_MEMPOOL_NETWORK_EVENTS: Lazy = Lazy::new(|| { /// (e.g. # txns in block pulled by consensus, # txns committed from state sync) pub static MEMPOOL_SERVICE_TXNS: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_mempool_service_transactions", + "diem_mempool_service_transactions", "Number of transactions handled in one request/response between mempool and consensus/state sync", &["type"] ) @@ -147,7 +147,7 @@ pub static MEMPOOL_SERVICE_TXNS: Lazy = Lazy::new(|| { /// A 'fail' result means the mempool's callback response to consensus/state sync failed. pub static MEMPOOL_SERVICE_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_mempool_service_latency_ms", + "diem_mempool_service_latency_ms", "Latency of mempool processing request from consensus/state sync", &["type", "result"] ) @@ -157,7 +157,7 @@ pub static MEMPOOL_SERVICE_LATENCY: Lazy = Lazy::new(|| { /// Counter for types of network messages received by shared mempool pub static SHARED_MEMPOOL_EVENTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_shared_mempool_events", + "diem_shared_mempool_events", "Number of network events received by shared mempool", &["event"] // type of event: "new_peer", "lost_peer", "message" ) @@ -167,7 +167,7 @@ pub static SHARED_MEMPOOL_EVENTS: Lazy = Lazy::new(|| { /// Counter for tracking e2e latency for mempool to process txn submission requests from clients and peers pub static PROCESS_TXN_SUBMISSION_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_shared_mempool_request_latency", + "diem_shared_mempool_request_latency", "Latency of mempool processing txn submission requests", &["network", "sender"] // sender of txn(s) ) @@ -177,7 +177,7 @@ pub static PROCESS_TXN_SUBMISSION_LATENCY: Lazy = Lazy::new(|| { /// Tracks latency of different stages of txn processing (e.g. vm validation, storage read) pub static PROCESS_TXN_BREAKDOWN_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_mempool_process_txn_breakdown_latency", + "diem_mempool_process_txn_breakdown_latency", "Latency of different stages of processing txns in mempool", &["portion"] ) @@ -187,7 +187,7 @@ pub static PROCESS_TXN_BREAKDOWN_LATENCY: Lazy = Lazy::new(|| { /// Counter for tracking latency for mempool to broadcast to a peer pub static SHARED_MEMPOOL_BROADCAST_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_broadcast_latency", + "diem_broadcast_latency", "Latency of mempool executing broadcast to another peer", &["network", "recipient"] ) @@ -197,7 +197,7 @@ pub static SHARED_MEMPOOL_BROADCAST_LATENCY: Lazy = Lazy::new(|| { /// Counter for tracking roundtrip-time from sending a broadcast to receiving ACK for that broadcast pub static SHARED_MEMPOOL_BROADCAST_RTT: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_shared_mempool_broadcast_roundtrip_latency", + "diem_shared_mempool_broadcast_roundtrip_latency", "Time elapsed between sending a broadcast and receiving an ACK for that broadcast", &["network", "recipient"] ) @@ -207,7 +207,7 @@ pub static SHARED_MEMPOOL_BROADCAST_RTT: Lazy = Lazy::new(|| { /// Counter tracking number of mempool broadcasts that have not been ACK'ed for pub static SHARED_MEMPOOL_PENDING_BROADCASTS_COUNT: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_shared_mempool_pending_broadcasts_count", + "diem_shared_mempool_pending_broadcasts_count", "Number of mempool broadcasts not ACK'ed for yet", &["network", "recipient"] ) @@ -216,7 +216,7 @@ pub static SHARED_MEMPOOL_PENDING_BROADCASTS_COUNT: Lazy = Lazy::ne pub static SHARED_MEMPOOL_TRANSACTIONS_PROCESSED: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_shared_mempool_transactions_processed", + "diem_shared_mempool_transactions_processed", "Number of transactions received and handled by shared mempool", &[ // state of transaction processing: "received", "success", status code from failed txn processing @@ -230,7 +230,7 @@ pub static SHARED_MEMPOOL_TRANSACTIONS_PROCESSED: Lazy = Lazy::ne /// Counter for number of transactions in each mempool broadcast sent pub static SHARED_MEMPOOL_TRANSACTION_BROADCAST_SIZE: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_shared_mempool_transaction_broadcast", + "diem_shared_mempool_transaction_broadcast", "Number of transactions in each mempool broadcast sent", &["network", "recipient"] ) @@ -239,7 +239,7 @@ pub static SHARED_MEMPOOL_TRANSACTION_BROADCAST_SIZE: Lazy = Lazy: pub static SHARED_MEMPOOL_BROADCAST_TYPE_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_shared_mempool_rebroadcast_count", + "diem_shared_mempool_rebroadcast_count", "Number of various types of broadcasts executed by shared mempool", &["network", "recipient", "type"] ) @@ -248,7 +248,7 @@ pub static SHARED_MEMPOOL_BROADCAST_TYPE_COUNT: Lazy = Lazy::new( pub static SHARED_MEMPOOL_ACK_TYPE_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_shared_mempool_ack_count", + "diem_shared_mempool_ack_count", "Number of various types of ACKs sent/received by shared mempool", &["network", "recipient", "direction", "type"] ) @@ -257,7 +257,7 @@ pub static SHARED_MEMPOOL_ACK_TYPE_COUNT: Lazy = Lazy::new(|| { pub static TASK_SPAWN_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_mempool_bounded_executor_spawn_latency", + "diem_mempool_bounded_executor_spawn_latency", "Time it takes for mempool's coordinator to spawn async tasks", &["task", "stage"] ) @@ -266,7 +266,7 @@ pub static TASK_SPAWN_LATENCY: Lazy = Lazy::new(|| { pub static CORE_MEMPOOL_INVARIANT_VIOLATION_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_mempool_core_mempool_invariant_violated_count", + "diem_mempool_core_mempool_invariant_violated_count", "Number of times a core mempool invariant was violated" ) .unwrap() @@ -274,16 +274,16 @@ pub static CORE_MEMPOOL_INVARIANT_VIOLATION_COUNT: Lazy = Lazy::new( pub static VM_RECONFIG_UPDATE_FAIL_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_mempool_vm_reconfig_update_fail_count", + "diem_mempool_vm_reconfig_update_fail_count", "Number of times mempool's VM reconfig update failed" ) .unwrap() }); -/// Counter for failed Libra network sends +/// Counter for failed Diem network sends pub static NETWORK_SEND_FAIL: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_mempool_network_send_fail_count", + "diem_mempool_network_send_fail_count", "Number of times mempool network send failure occurs", &["type"] ) @@ -292,7 +292,7 @@ pub static NETWORK_SEND_FAIL: Lazy = Lazy::new(|| { pub static UNEXPECTED_NETWORK_MSG_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_mempool_unexpected_network_count", + "diem_mempool_unexpected_network_count", "Number of unexpected network msgs received", &["network", "peer"] ) @@ -302,7 +302,7 @@ pub static UNEXPECTED_NETWORK_MSG_COUNT: Lazy = Lazy::new(|| { /// Counter for failed callback response to JSON RPC pub static CLIENT_CALLBACK_FAIL: Lazy = Lazy::new(|| { register_int_counter!( - "libra_mempool_json_rpc_callback_fail_count", + "diem_mempool_json_rpc_callback_fail_count", "Number of times callback to JSON RPC failed in mempool" ) .unwrap() @@ -312,7 +312,7 @@ pub static CLIENT_CALLBACK_FAIL: Lazy = Lazy::new(|| { /// did not send pub static INVALID_ACK_RECEIVED_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_mempool_unrecognized_ack_received_count", + "diem_mempool_unrecognized_ack_received_count", "Number of ACK messages received with an invalid request_id that this node's mempool did not send", &["network", "sender", "type"] ) @@ -322,7 +322,7 @@ pub static INVALID_ACK_RECEIVED_COUNT: Lazy = Lazy::new(|| { /// Counter for number of times a DB read resulted in error pub static DB_ERROR: Lazy = Lazy::new(|| { register_int_counter!( - "libra_mempool_db_error_count", + "diem_mempool_db_error_count", "Number of times a DB read error was encountered in mempool" ) .unwrap() @@ -334,7 +334,7 @@ pub static DB_ERROR: Lazy = Lazy::new(|| { /// ranking of a network pub static UPSTREAM_NETWORK: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_mempool_upstream_network", + "diem_mempool_upstream_network", "The preference of the network mempool is broadcasting to" ) .unwrap() @@ -344,7 +344,7 @@ pub static UPSTREAM_NETWORK: Lazy = Lazy::new(|| { /// broadcast to, summed across each of its networks pub static ACTIVE_UPSTREAM_PEERS_COUNT: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_mempool_active_upstream_peers_count", + "diem_mempool_active_upstream_peers_count", "Number of active upstream peers for the node of this mempool", &["network"] ) @@ -355,7 +355,7 @@ pub static ACTIVE_UPSTREAM_PEERS_COUNT: Lazy = Lazy::new(|| { pub static MAIN_LOOP: Lazy = Lazy::new(|| { DurationHistogram::new( register_histogram!( - "libra_mempool_main_loop", + "diem_mempool_main_loop", "Duration of the each run of the event loop" ) .unwrap(), diff --git a/mempool/src/lib.rs b/mempool/src/lib.rs index cb6e26884f..986dd18222 100644 --- a/mempool/src/lib.rs +++ b/mempool/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/mempool/src/logging.rs b/mempool/src/logging.rs index 73ba52f6a0..852b770d20 100644 --- a/mempool/src/logging.rs +++ b/mempool/src/logging.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::shared_mempool::{ @@ -6,9 +6,9 @@ use crate::shared_mempool::{ types::{CommitNotification, ConsensusRequest}, }; use anyhow::Error; -use libra_config::{config::PeerNetworkId, network_id::NetworkId}; -use libra_logger::Schema; -use libra_types::{account_address::AccountAddress, on_chain_config::OnChainConfigPayload}; +use diem_config::{config::PeerNetworkId, network_id::NetworkId}; +use diem_logger::Schema; +use diem_types::{account_address::AccountAddress, on_chain_config::OnChainConfigPayload}; use serde::Serialize; use std::{fmt, time::SystemTime}; diff --git a/mempool/src/shared_mempool/coordinator.rs b/mempool/src/shared_mempool/coordinator.rs index 3346bdb22a..171b28a9ec 100644 --- a/mempool/src/shared_mempool/coordinator.rs +++ b/mempool/src/shared_mempool/coordinator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Processes that are directly spawned by shared mempool runtime initialization @@ -17,17 +17,17 @@ use crate::{ use ::network::protocols::network::Event; use anyhow::Result; use bounded_executor::BoundedExecutor; -use channel::libra_channel; +use channel::diem_channel; +use diem_config::{config::PeerNetworkId, network_id::NodeNetworkId}; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_trace::prelude::*; +use diem_types::{on_chain_config::OnChainConfigPayload, transaction::SignedTransaction}; use futures::{ channel::{mpsc, oneshot}, stream::{select_all, FuturesUnordered}, StreamExt, }; -use libra_config::{config::PeerNetworkId, network_id::NodeNetworkId}; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_trace::prelude::*; -use libra_types::{on_chain_config::OnChainConfigPayload, transaction::SignedTransaction}; use std::{ ops::Deref, sync::Arc, @@ -47,7 +47,7 @@ pub(crate) async fn coordinator( )>, mut consensus_requests: mpsc::Receiver, mut state_sync_requests: mpsc::Receiver, - mut mempool_reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + mut mempool_reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) where V: TransactionValidation, { diff --git a/mempool/src/shared_mempool/mod.rs b/mempool/src/shared_mempool/mod.rs index 1107ad58c4..bf6865d835 100644 --- a/mempool/src/shared_mempool/mod.rs +++ b/mempool/src/shared_mempool/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod network; diff --git a/mempool/src/shared_mempool/network.rs b/mempool/src/shared_mempool/network.rs index 24eeed2e65..c1d63967ef 100644 --- a/mempool/src/shared_mempool/network.rs +++ b/mempool/src/shared_mempool/network.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Interface between Mempool and Network layers. use crate::counters; use channel::message_queues::QueueStyle; +use diem_metrics::IntCounterVec; +use diem_types::{transaction::SignedTransaction, PeerId}; use fail::fail_point; -use libra_metrics::IntCounterVec; -use libra_types::{transaction::SignedTransaction, PeerId}; use network::{ error::NetworkError, peer_manager::{ConnectionRequestSender, PeerManagerRequestSender}, @@ -39,7 +39,7 @@ pub enum MempoolSyncMsg { } /// Protocol id for mempool direct-send calls -pub const MEMPOOL_DIRECT_SEND_PROTOCOL: &[u8] = b"/libra/direct-send/0.1.0/mempool/0.1.0"; +pub const MEMPOOL_DIRECT_SEND_PROTOCOL: &[u8] = b"/diem/direct-send/0.1.0/mempool/0.1.0"; /// The interface from Network to Mempool layer. /// diff --git a/mempool/src/shared_mempool/peer_manager.rs b/mempool/src/shared_mempool/peer_manager.rs index 0769b07590..66f0285685 100644 --- a/mempool/src/shared_mempool/peer_manager.rs +++ b/mempool/src/shared_mempool/peer_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,14 +10,14 @@ use crate::{ types::{notify_subscribers, SharedMempool, SharedMempoolNotification}, }, }; -use itertools::Itertools; -use libra_config::{ +use diem_config::{ config::{MempoolConfig, PeerNetworkId, UpstreamConfig}, network_id::NetworkId, }; -use libra_infallible::Mutex; -use libra_logger::prelude::*; -use libra_types::transaction::SignedTransaction; +use diem_infallible::Mutex; +use diem_logger::prelude::*; +use diem_types::transaction::SignedTransaction; +use itertools::Itertools; use netcore::transport::ConnectionOrigin; use rand::seq::SliceRandom; use serde::{Deserialize, Serialize}; @@ -236,7 +236,7 @@ impl PeerManager { // If the number of un-ACK'ed un-expired broadcasts reaches this threshold, we do not broadcast anymore // and wait until an ACK is received or a sent broadcast expires // This helps rate-limit egress network bandwidth and not overload a remote peer or this - // node's Libra network sender + // node's Diem network sender if pending_broadcasts >= self.mempool_config.max_broadcasts_per_peer { return; } diff --git a/mempool/src/shared_mempool/runtime.rs b/mempool/src/shared_mempool/runtime.rs index 72eba42553..65f1967628 100644 --- a/mempool/src/shared_mempool/runtime.rs +++ b/mempool/src/shared_mempool/runtime.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,14 +12,14 @@ use crate::{ CommitNotification, ConsensusRequest, SubmissionStatus, }; use anyhow::Result; -use channel::libra_channel; +use channel::diem_channel; +use diem_config::{config::NodeConfig, network_id::NodeNetworkId}; +use diem_infallible::{Mutex, RwLock}; +use diem_types::{on_chain_config::OnChainConfigPayload, transaction::SignedTransaction}; use futures::channel::{ mpsc::{self, Receiver, UnboundedSender}, oneshot, }; -use libra_config::{config::NodeConfig, network_id::NodeNetworkId}; -use libra_infallible::{Mutex, RwLock}; -use libra_types::{on_chain_config::OnChainConfigPayload, transaction::SignedTransaction}; use std::{collections::HashMap, sync::Arc}; use storage_interface::DbReader; use tokio::runtime::{Builder, Handle, Runtime}; @@ -40,7 +40,7 @@ pub(crate) fn start_shared_mempool( client_events: mpsc::Receiver<(SignedTransaction, oneshot::Sender>)>, consensus_requests: mpsc::Receiver, state_sync_requests: mpsc::Receiver, - mempool_reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + mempool_reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, db: Arc, validator: Arc>, subscribers: Vec>, @@ -98,7 +98,7 @@ pub fn bootstrap( client_events: Receiver<(SignedTransaction, oneshot::Sender>)>, consensus_requests: Receiver, state_sync_requests: Receiver, - mempool_reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + mempool_reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> Runtime { let runtime = Builder::new() .thread_name("shared-mem") diff --git a/mempool/src/shared_mempool/tasks.rs b/mempool/src/shared_mempool/tasks.rs index 07a9235df9..fc6838410e 100644 --- a/mempool/src/shared_mempool/tasks.rs +++ b/mempool/src/shared_mempool/tasks.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Tasks that are executed by coordinators (short-lived compared to coordinators) @@ -16,17 +16,17 @@ use crate::{ SubmissionStatus, }; use anyhow::Result; -use futures::{channel::oneshot, stream::FuturesUnordered}; -use libra_config::config::PeerNetworkId; -use libra_infallible::{Mutex, RwLock}; -use libra_logger::prelude::*; -use libra_metrics::HistogramTimer; -use libra_types::{ +use diem_config::config::PeerNetworkId; +use diem_infallible::{Mutex, RwLock}; +use diem_logger::prelude::*; +use diem_metrics::HistogramTimer; +use diem_types::{ mempool_status::{MempoolStatus, MempoolStatusCode}, on_chain_config::OnChainConfigPayload, transaction::SignedTransaction, vm_status::DiscardedVMStatus, }; +use futures::{channel::oneshot, stream::FuturesUnordered}; use rayon::prelude::*; use std::{ cmp, @@ -405,7 +405,7 @@ pub(crate) async fn process_consensus_request(mempool: &Mutex, req: let mut mempool = mempool.lock(); // gc before pulling block as extra protection against txns that may expire in consensus // Note: this gc operation relies on the fact that consensus uses the system time to determine block timestamp - let curr_time = libra_infallible::duration_since_epoch(); + let curr_time = diem_infallible::duration_since_epoch(); mempool.gc_by_expiration_time(curr_time); let block_size = cmp::max(max_block_size, 1); txns = mempool.get_block(block_size, exclude_transactions); diff --git a/mempool/src/shared_mempool/types.rs b/mempool/src/shared_mempool/types.rs index 49e1021e2b..22758a6fda 100644 --- a/mempool/src/shared_mempool/types.rs +++ b/mempool/src/shared_mempool/types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Objects used by/related to shared mempool @@ -8,24 +8,24 @@ use crate::{ shared_mempool::{network::MempoolNetworkSender, peer_manager::PeerManager}, }; use anyhow::Result; -use channel::libra_channel::Receiver; -use futures::{ - channel::{mpsc, mpsc::UnboundedSender, oneshot}, - future::Future, - task::{Context, Poll}, -}; -use libra_config::{ +use channel::diem_channel::Receiver; +use diem_config::{ config::{MempoolConfig, PeerNetworkId}, network_id::NodeNetworkId, }; -use libra_infallible::{Mutex, RwLock}; -use libra_types::{ +use diem_infallible::{Mutex, RwLock}; +use diem_types::{ account_address::AccountAddress, mempool_status::MempoolStatus, - on_chain_config::{ConfigID, LibraVersion, OnChainConfig, OnChainConfigPayload, VMConfig}, + on_chain_config::{ConfigID, DiemVersion, OnChainConfig, OnChainConfigPayload, VMConfig}, transaction::SignedTransaction, vm_status::DiscardedVMStatus, }; +use futures::{ + channel::{mpsc, mpsc::UnboundedSender, oneshot}, + future::Future, + task::{Context, Poll}, +}; use std::{collections::HashMap, fmt, pin::Pin, sync::Arc, task::Waker, time::Instant}; use storage_interface::DbReader; use subscription_service::ReconfigSubscription; @@ -245,7 +245,7 @@ pub type MempoolClientSender = mpsc::Sender<(SignedTransaction, oneshot::Sender>)>; /// On-chain configs that mempool subscribes to for reconfiguration -const MEMPOOL_SUBSCRIBED_CONFIGS: &[ConfigID] = &[LibraVersion::CONFIG_ID, VMConfig::CONFIG_ID]; +const MEMPOOL_SUBSCRIBED_CONFIGS: &[ConfigID] = &[DiemVersion::CONFIG_ID, VMConfig::CONFIG_ID]; /// Creates mempool's subscription bundle for on-chain reconfiguration pub fn gen_mempool_reconfig_subscription( diff --git a/mempool/src/tests/common.rs b/mempool/src/tests/common.rs index 36b5c9c51d..9dcf7bfafe 100644 --- a/mempool/src/tests/common.rs +++ b/mempool/src/tests/common.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::core_mempool::{CoreMempool, TimelineState, TxnPointer}; use anyhow::{format_err, Result}; -use libra_config::config::NodeConfig; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; -use libra_types::{ +use diem_config::config::NodeConfig; +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, Uniform}; +use diem_types::{ account_address::AccountAddress, - account_config::COIN1_NAME, + account_config::XUS_NAME, chain_id::ChainId, mempool_status::MempoolStatusCode, transaction::{GovernanceRole, RawTransaction, Script, SignedTransaction}, @@ -79,7 +79,7 @@ impl TestTransaction { Script::new(vec![], vec![], vec![]), max_gas_amount, self.gas_price, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), exp_timestamp_secs, ChainId::test(), ); diff --git a/mempool/src/tests/core_mempool_test.rs b/mempool/src/tests/core_mempool_test.rs index e933a9aecc..c6b85a0836 100644 --- a/mempool/src/tests/core_mempool_test.rs +++ b/mempool/src/tests/core_mempool_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,8 +8,8 @@ use crate::{ TestTransaction, }, }; -use libra_config::config::NodeConfig; -use libra_types::transaction::{GovernanceRole, SignedTransaction}; +use diem_config::config::NodeConfig; +use diem_types::transaction::{GovernanceRole, SignedTransaction}; use std::{ collections::HashSet, time::{Duration, SystemTime}, @@ -68,7 +68,7 @@ fn test_transaction_ordering() { #[test] fn test_ordering_of_governance_transactions() { let gov_roles = vec![ - GovernanceRole::LibraRoot, + GovernanceRole::DiemRoot, GovernanceRole::TreasuryCompliance, GovernanceRole::Validator, GovernanceRole::ValidatorOperator, diff --git a/mempool/src/tests/fuzzing.rs b/mempool/src/tests/fuzzing.rs index af8d4cb514..f435572092 100644 --- a/mempool/src/tests/fuzzing.rs +++ b/mempool/src/tests/fuzzing.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ core_mempool::{CoreMempool, TimelineState}, shared_mempool::{peer_manager::PeerManager, tasks, types::SharedMempool}, }; -use libra_config::config::NodeConfig; -use libra_infallible::{Mutex, RwLock}; -use libra_types::transaction::SignedTransaction; +use diem_config::config::NodeConfig; +use diem_infallible::{Mutex, RwLock}; +use diem_types::transaction::SignedTransaction; use proptest::{ arbitrary::any, prelude::*, diff --git a/mempool/src/tests/mocks.rs b/mempool/src/tests/mocks.rs index 7212b298f0..e14e63b9e2 100644 --- a/mempool/src/tests/mocks.rs +++ b/mempool/src/tests/mocks.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,17 +8,17 @@ use crate::{ CommitNotification, ConsensusRequest, SubmissionStatus, }; use anyhow::{format_err, Result}; -use channel::{self, libra_channel, message_queues::QueueStyle}; -use futures::channel::{mpsc, oneshot}; -use libra_config::{ +use channel::{self, diem_channel, message_queues::QueueStyle}; +use diem_config::{ config::{NetworkConfig, NodeConfig}, network_id::{NetworkId, NodeNetworkId}, }; -use libra_infallible::{Mutex, RwLock}; -use libra_types::{ +use diem_infallible::{Mutex, RwLock}; +use diem_types::{ mempool_status::MempoolStatusCode, transaction::{GovernanceRole, SignedTransaction}, }; +use futures::channel::{mpsc, oneshot}; use network::{ peer_manager::{conn_notifs_channel, ConnectionRequestSender, PeerManagerRequestSender}, protocols::network::{NewNetworkEvents, NewNetworkSender}, @@ -58,11 +58,11 @@ impl MockSharedMempool { let mempool = Arc::new(Mutex::new(CoreMempool::new(&config))); let (network_reqs_tx, _network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_network_notifs_tx, network_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (_, conn_notifs_rx) = conn_notifs_channel::new(); let network_sender = MempoolNetworkSender::new( PeerManagerRequestSender::new(network_reqs_tx), @@ -79,7 +79,7 @@ impl MockSharedMempool { Some(state_sync) => (None, state_sync), }; let (_reconfig_event_publisher, reconfig_event_subscriber) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let network_handles = vec![( NodeNetworkId::new(NetworkId::Validator, 0), network_sender, diff --git a/mempool/src/tests/mod.rs b/mempool/src/tests/mod.rs index 76d7a3ea7e..aaa380b4ac 100644 --- a/mempool/src/tests/mod.rs +++ b/mempool/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] diff --git a/mempool/src/tests/shared_mempool_test.rs b/mempool/src/tests/shared_mempool_test.rs index 6647777423..b5b0a0e63c 100644 --- a/mempool/src/tests/shared_mempool_test.rs +++ b/mempool/src/tests/shared_mempool_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,7 +9,17 @@ use crate::{ tests::common::{batch_add_signed_txn, TestTransaction}, CommitNotification, CommittedTransaction, ConsensusRequest, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; +use diem_config::{ + config::{NetworkConfig, NodeConfig, RoleType, UpstreamConfig}, + network_id::{NetworkContext, NetworkId, NodeNetworkId}, +}; +use diem_infallible::{Mutex, RwLock}; +use diem_network_address::NetworkAddress; +use diem_types::{ + transaction::{GovernanceRole, SignedTransaction}, + PeerId, +}; use futures::{ channel::{ mpsc::{self, unbounded, UnboundedReceiver}, @@ -20,16 +30,6 @@ use futures::{ sink::SinkExt, StreamExt, }; -use libra_config::{ - config::{NetworkConfig, NodeConfig, RoleType, UpstreamConfig}, - network_id::{NetworkContext, NetworkId, NodeNetworkId}, -}; -use libra_infallible::{Mutex, RwLock}; -use libra_network_address::NetworkAddress; -use libra_types::{ - transaction::{GovernanceRole, SignedTransaction}, - PeerId, -}; use netcore::transport::ConnectionOrigin; use network::{ peer_manager::{ @@ -52,9 +52,9 @@ use vm_validator::mocks::mock_vm_validator::MockVMValidator; struct SharedMempoolNetwork { mempools: HashMap>>, network_reqs_rxs: - HashMap>, + HashMap>, network_notifs_txs: - HashMap>, + HashMap>, network_conn_event_notifs_txs: HashMap, runtimes: HashMap, subscribers: HashMap>, @@ -71,11 +71,11 @@ fn init_single_shared_mempool( ) { let mempool = Arc::new(Mutex::new(CoreMempool::new(&config))); let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (network_notifs_tx, network_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (conn_status_tx, conn_status_rx) = conn_notifs_channel::new(); let network_sender = MempoolNetworkSender::new( PeerManagerRequestSender::new(network_reqs_tx), @@ -92,7 +92,7 @@ fn init_single_shared_mempool( let (_consensus_sender, consensus_events) = mpsc::channel(1_024); let (_state_sync_sender, state_sync_events) = mpsc::channel(1_024); let (_reconfig_events, reconfig_events_receiver) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let runtime = Builder::new() .thread_name("shared-mem") @@ -134,11 +134,11 @@ fn init_smp_multiple_networks( let mut network_handles = vec![]; for (idx, (network_id, peer_id)) in network_ids.iter().enumerate() { let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (network_notifs_tx, network_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (conn_status_tx, conn_status_rx) = conn_notifs_channel::new(); let network_sender = MempoolNetworkSender::new( PeerManagerRequestSender::new(network_reqs_tx), @@ -162,7 +162,7 @@ fn init_smp_multiple_networks( let (_consensus_sender, consensus_events) = mpsc::channel(1_024); let (_state_sync_sender, state_sync_events) = mpsc::channel(1_024); let (_reconfig_events, reconfig_events_receiver) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let runtime = Builder::new() .thread_name("shared-mem") diff --git a/network/Cargo.toml b/network/Cargo.toml index 94df12f706..859ae19a60 100644 --- a/network/Cargo.toml +++ b/network/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "network" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra network" +authors = ["Diem Association "] +description = "Diem network" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -28,19 +28,19 @@ tokio = { version = "0.2.22", features = ["full"] } tokio-retry = "0.2.0" tokio-util = { version = "0.3.1", features = ["codec"] } -bitvec = { path = "../common/bitvec", version = "0.1.0", package = "libra-bitvec" } +bitvec = { path = "../common/bitvec", version = "0.1.0", package = "diem-bitvec" } channel = { path = "../common/channel", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } -libra-infallible = { path = "../common/infallible", version = "0.1.0" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-network-address = { path = "../network/network-address", version = "0.1.0" } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } -libra-types = { path = "../types", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } +diem-infallible = { path = "../common/infallible", version = "0.1.0" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-network-address = { path = "../network/network-address", version = "0.1.0" } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } +diem-types = { path = "../types", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } memsocket = { path = "../network/memsocket", version = "0.1.0", optional = true } netcore = { path = "../network/netcore", version = "0.1.0" } num-variants = { path = "../common/num-variants", version = "0.1.0" } @@ -48,8 +48,8 @@ short-hex-str = { path = "../common/short-hex-str", version = "0.1.0" } [dev-dependencies] criterion = "0.3.3" -libra-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } +diem-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } memsocket = { path = "../network/memsocket", version = "0.1.0" } network-builder = {path = "../network/builder", version = "0.1.0"} proptest = { version = "0.10.1", default-features = true } @@ -60,8 +60,8 @@ socket-bench-server = { path = "../network/socket-bench-server", version = "0.1. [features] default = [] -fuzzing = ["bitvec/fuzzing", "libra-proptest-helpers", "libra-types/fuzzing", "libra-network-address/fuzzing", "libra-crypto/fuzzing", "memsocket/testing", "netcore/fuzzing", "proptest", "proptest-derive", "rand_core"] -testing = ["libra-config/testing", "memsocket/testing", "netcore/testing"] +fuzzing = ["bitvec/fuzzing", "diem-proptest-helpers", "diem-types/fuzzing", "diem-network-address/fuzzing", "diem-crypto/fuzzing", "memsocket/testing", "netcore/fuzzing", "proptest", "proptest-derive", "rand_core"] +testing = ["diem-config/testing", "memsocket/testing", "netcore/testing"] [[bench]] name = "socket_bench" diff --git a/network/README.md b/network/README.md index 7faec9ae6f..ca29367992 100644 --- a/network/README.md +++ b/network/README.md @@ -126,5 +126,5 @@ negotiation, etc. │   ├── health_checker # protocol for health probing │   ├── network # components for interaction with applications │   ├── rpc # protocol for remote procedure calls - │   └── wire # protocol for LibraNet handshakes and messaging + │   └── wire # protocol for DiemNet handshakes and messaging └── testutils # utilities for testing diff --git a/network/benches/network_bench.rs b/network/benches/network_bench.rs index cccdef2090..7558fd5999 100644 --- a/network/benches/network_bench.rs +++ b/network/benches/network_bench.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Allow KiB, MiB consts @@ -13,13 +13,13 @@ use criterion::{ criterion_group, criterion_main, AxisScale, Bencher, Criterion, ParameterizedBenchmark, PlotConfiguration, Throughput, }; +use diem_types::PeerId; use futures::{ channel::mpsc, executor::block_on, sink::SinkExt, stream::{FuturesUnordered, StreamExt}, }; -use libra_types::PeerId; use network::protocols::{network::Event, rpc::error::RpcError}; use network_builder::dummy::{setup_network, DummyMsg, DummyNetworkSender}; use std::time::Duration; @@ -123,7 +123,7 @@ async fn send_rpc( } fn network_crate_benchmark(c: &mut Criterion) { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); // Parameterize benchmarks over the message length. let msg_lens = vec![32usize, 256, 1 * KiB, 4 * KiB, 64 * KiB, 256 * KiB, 1 * MiB]; diff --git a/network/benches/socket_bench.rs b/network/benches/socket_bench.rs index b57963d8a9..2b6a654c7f 100644 --- a/network/benches/socket_bench.rs +++ b/network/benches/socket_bench.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Allow KiB, MiB consts @@ -42,15 +42,15 @@ use criterion::{ criterion_group, criterion_main, AxisScale, Bencher, Criterion, ParameterizedBenchmark, PlotConfiguration, Throughput, }; +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ executor::block_on, io::{AsyncRead, AsyncWrite}, sink::{Sink, SinkExt}, stream::{self, FuturesUnordered, Stream, StreamExt}, }; -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use netcore::{ compat::IoCompat, transport::{memory::MemoryTransport, tcp::TcpTransport, Transport}, @@ -214,7 +214,7 @@ fn bench_tcp_noise_send(b: &mut Bencher, msg_len: &usize, server_addr: NetworkAd /// `$TCP_NOISE_ADDR` for /// benchmarks `remote_tcp`, `remote_tcp+noise` and `remote_tcp+nodelay` respectively. fn socket_bench(c: &mut Criterion) { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let rt = Runtime::new().unwrap(); let executor = rt.handle().clone(); @@ -372,7 +372,7 @@ fn bench_client_connection( /// time: [-9.0403% -4.6666% -0.6491%] (p = 0.06 > 0.05) /// thrpt: [+0.6533% +4.8951% +9.9388%] fn connection_bench(c: &mut Criterion) { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let concurrency_param: Vec = vec![16, 32, 64, 128]; let args = Args::from_env(); let bench = if let Some(noise_addr) = args.tcp_noise_addr { diff --git a/network/builder/Cargo.toml b/network/builder/Cargo.toml index 1178a478ab..0875d64483 100644 --- a/network/builder/Cargo.toml +++ b/network/builder/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "network-builder" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra Onchain Discovery Protocol" +authors = ["Diem Association "] +description = "Diem Onchain Discovery Protocol" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -21,16 +21,16 @@ tokio-retry = "0.2.0" channel = { path = "../../common/channel", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = {path = "../../common/metrics", version = "0.1.0"} -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-network-address-encryption = {path = "../../config/management/network-address-encryption", version = "0.1.0"} -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = {path = "../../common/metrics", version = "0.1.0"} +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-network-address-encryption = {path = "../../config/management/network-address-encryption", version = "0.1.0"} +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } netcore = { path = "../../network/netcore", version = "0.1.0" } network = { path = "../../network", version = "0.1.0" } network-simple-onchain-discovery = { path = "../../network/simple-onchain-discovery", version = "0.1.0"} diff --git a/network/builder/src/builder.rs b/network/builder/src/builder.rs index ea79feb204..d59f638dd9 100644 --- a/network/builder/src/builder.rs +++ b/network/builder/src/builder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Remotely authenticated vs. unauthenticated network end-points: @@ -10,7 +10,7 @@ //! connect to or accept connections from an end-point running in authenticated mode as //! long as the latter is in its trusted peers set. use channel::{self, message_queues::QueueStyle}; -use libra_config::{ +use diem_config::{ config::{ DiscoveryMethod, NetworkConfig, RoleType, CONNECTION_BACKOFF_BASE, CONNECTIVITY_CHECK_INTERVAL_MS, MAX_CONCURRENT_NETWORK_NOTIFS, MAX_CONCURRENT_NETWORK_REQS, @@ -19,13 +19,13 @@ use libra_config::{ }, network_id::NetworkContext, }; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_logger::prelude::*; -use libra_metrics::IntCounterVec; -use libra_network_address::NetworkAddress; -use libra_network_address_encryption::Encryptor; -use libra_types::{chain_id::ChainId, PeerId}; +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_logger::prelude::*; +use diem_metrics::IntCounterVec; +use diem_network_address::NetworkAddress; +use diem_network_address_encryption::Encryptor; +use diem_types::{chain_id::ChainId, PeerId}; use network::{ connectivity_manager::{builder::ConnectivityManagerBuilder, ConnectivityRequest}, logging::NetworkSchema, diff --git a/network/builder/src/dummy.rs b/network/builder/src/dummy.rs index 59b8f66d22..4b5ec9de8d 100644 --- a/network/builder/src/dummy.rs +++ b/network/builder/src/dummy.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Integration tests for validator_network. use crate::builder::NetworkBuilder; use channel::message_queues::QueueStyle; -use futures::{executor::block_on, StreamExt}; -use libra_config::{ +use diem_config::{ config::{RoleType, NETWORK_CHANNEL_SIZE}, network_id::{NetworkContext, NetworkId}, }; -use libra_crypto::{test_utils::TEST_SEED, x25519, Uniform}; -use libra_infallible::RwLock; -use libra_metrics::IntCounterVec; -use libra_network_address::NetworkAddress; -use libra_types::{chain_id::ChainId, PeerId}; +use diem_crypto::{test_utils::TEST_SEED, x25519, Uniform}; +use diem_infallible::RwLock; +use diem_metrics::IntCounterVec; +use diem_network_address::NetworkAddress; +use diem_types::{chain_id::ChainId, PeerId}; +use futures::{executor::block_on, StreamExt}; use netcore::transport::ConnectionOrigin; use network::{ error::NetworkError, diff --git a/network/builder/src/lib.rs b/network/builder/src/lib.rs index 1914a5134e..19347c406e 100644 --- a/network/builder/src/lib.rs +++ b/network/builder/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub use network::protocols::rpc::error::RpcError; diff --git a/network/builder/src/test.rs b/network/builder/src/test.rs index 060fdd177c..55f7e70e34 100644 --- a/network/builder/src/test.rs +++ b/network/builder/src/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Integration tests for validator_network. @@ -14,7 +14,7 @@ fn test_network_builder() { #[test] fn test_direct_send() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut tn = setup_network(); let dialer_peer_id = tn.dialer_peer_id; let mut dialer_events = tn.dialer_events; @@ -59,7 +59,7 @@ fn test_direct_send() { #[test] fn test_rpc() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut tn = setup_network(); let dialer_peer_id = tn.dialer_peer_id; let mut dialer_events = tn.dialer_events; diff --git a/network/memsocket/Cargo.toml b/network/memsocket/Cargo.toml index 28d3c5130e..124b6c0d2c 100644 --- a/network/memsocket/Cargo.toml +++ b/network/memsocket/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "memsocket" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra memsocket" +authors = ["Diem Association "] +description = "Diem memsocket" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" publish = false @@ -13,8 +13,8 @@ publish = false futures = "0.3.8" bytes = "0.5.6" once_cell = "1.4.1" -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [features] default = [] diff --git a/network/memsocket/src/lib.rs b/network/memsocket/src/lib.rs index fa9ee821d8..cf1e278858 100644 --- a/network/memsocket/src/lib.rs +++ b/network/memsocket/src/lib.rs @@ -1,7 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytes::{buf::BufExt, Buf, Bytes}; +use diem_infallible::Mutex; use futures::{ channel::mpsc::{self, UnboundedReceiver, UnboundedSender}, io::{AsyncRead, AsyncWrite, Error, ErrorKind, Result}, @@ -9,7 +10,6 @@ use futures::{ stream::{FusedStream, Stream}, task::{Context, Poll}, }; -use libra_infallible::Mutex; use once_cell::sync::Lazy; use std::{collections::HashMap, num::NonZeroU16, pin::Pin}; diff --git a/network/memsocket/tests/memory_listener.rs b/network/memsocket/tests/memory_listener.rs index 48102c5b0e..9ffe57ee56 100644 --- a/network/memsocket/tests/memory_listener.rs +++ b/network/memsocket/tests/memory_listener.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use futures::{ diff --git a/network/memsocket/tests/memory_socket.rs b/network/memsocket/tests/memory_socket.rs index b3da7a66ac..5937f04356 100644 --- a/network/memsocket/tests/memory_socket.rs +++ b/network/memsocket/tests/memory_socket.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use futures::{ diff --git a/network/netcore/Cargo.toml b/network/netcore/Cargo.toml index 9947b48c9e..232e760720 100644 --- a/network/netcore/Cargo.toml +++ b/network/netcore/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "netcore" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra netcore" +authors = ["Diem Association "] +description = "Diem netcore" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,13 +17,13 @@ serde = { version = "1.0.117", default-features = false } tokio = { version = "0.2.22", features = ["full"] } url = { version = "2.1.1" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } -libra-network-address = { path = "../network-address", version = "0.1.0" } -libra-types = { path = "../../types" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-network-address = { path = "../network-address", version = "0.1.0" } +diem-types = { path = "../../types" } memsocket = { path = "../memsocket", version = "0.1.0", optional = true } [dev-dependencies] -libra-logger = { path = "../../common/logger", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } memsocket = { path = "../memsocket", version = "0.1.0" } [features] diff --git a/network/netcore/src/compat.rs b/network/netcore/src/compat.rs index 1b6854838d..91d59ac87d 100644 --- a/network/netcore/src/compat.rs +++ b/network/netcore/src/compat.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides a compatibility shim between traits in the `futures` and `tokio` crate. diff --git a/network/netcore/src/framing.rs b/network/netcore/src/framing.rs index a2d02de1e6..6a97ed0542 100644 --- a/network/netcore/src/framing.rs +++ b/network/netcore/src/framing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use bytes::BytesMut; diff --git a/network/netcore/src/lib.rs b/network/netcore/src/lib.rs index 39b43d1e63..33981de328 100644 --- a/network/netcore/src/lib.rs +++ b/network/netcore/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Core types and traits for building Peer to Peer networks. diff --git a/network/netcore/src/transport/and_then.rs b/network/netcore/src/transport/and_then.rs index ad7d341cdb..47f788a6a3 100644 --- a/network/netcore/src/transport/and_then.rs +++ b/network/netcore/src/transport/and_then.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::transport::{ConnectionOrigin, Transport}; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{future::Future, stream::Stream}; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use pin_project::pin_project; use std::{ pin::Pin, diff --git a/network/netcore/src/transport/boxed.rs b/network/netcore/src/transport/boxed.rs index 59c7d2b163..557326cfd7 100644 --- a/network/netcore/src/transport/boxed.rs +++ b/network/netcore/src/transport/boxed.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::transport::Transport; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ future::{Future, FutureExt}, stream::{Stream, StreamExt}, }; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use std::pin::Pin; pub type Listener = diff --git a/network/netcore/src/transport/memory.rs b/network/netcore/src/transport/memory.rs index 053566c07f..f9a727f8c5 100644 --- a/network/netcore/src/transport/memory.rs +++ b/network/netcore/src/transport/memory.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::transport::Transport; +use diem_network_address::{parse_memory, NetworkAddress, Protocol}; +use diem_types::PeerId; use futures::{future, stream::Stream}; -use libra_network_address::{parse_memory, NetworkAddress, Protocol}; -use libra_types::PeerId; use memsocket::{MemoryListener, MemorySocket}; use std::{ io, @@ -99,13 +99,13 @@ impl Stream for Listener { #[cfg(test)] mod test { use crate::transport::{memory::MemoryTransport, Transport}; + use diem_types::PeerId; use futures::{ executor::block_on, future::join, io::{AsyncReadExt, AsyncWriteExt}, stream::StreamExt, }; - use libra_types::PeerId; #[test] fn simple_listen_and_dial() -> Result<(), ::std::io::Error> { diff --git a/network/netcore/src/transport/mod.rs b/network/netcore/src/transport/mod.rs index 346dd9d430..5737ac9ed7 100644 --- a/network/netcore/src/transport/mod.rs +++ b/network/netcore/src/transport/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Low-level module for establishing connections with peers @@ -11,9 +11,9 @@ //! [`Transport`]: crate::transport::Transport //! [`TransportExt`]: crate::transport::TransportExt +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{future::Future, stream::Stream}; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use serde::{export::Formatter, Serialize}; use std::fmt; diff --git a/network/netcore/src/transport/proxy_protocol.rs b/network/netcore/src/transport/proxy_protocol.rs index 3fe9774cf0..0eabb13904 100644 --- a/network/netcore/src/transport/proxy_protocol.rs +++ b/network/netcore/src/transport/proxy_protocol.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! # An implementation of ProxyProtocol for HAProxy @@ -15,8 +15,8 @@ //! - An address space that doesn't match the size expected is rejected e.g. too big for IPv4 //! - Address space that's larger than the current supported requests is rejected +use diem_network_address::NetworkAddress; use futures::io::{AsyncRead, AsyncReadExt}; -use libra_network_address::NetworkAddress; use std::{ convert::TryInto, io, diff --git a/network/netcore/src/transport/tcp.rs b/network/netcore/src/transport/tcp.rs index 16f285a269..b2c9ff7466 100644 --- a/network/netcore/src/transport/tcp.rs +++ b/network/netcore/src/transport/tcp.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! TCP Transport use crate::{compat::IoCompat, transport::Transport}; +use diem_network_address::{parse_dns_tcp, parse_ip_tcp, parse_tcp, IpFilter, NetworkAddress}; +use diem_types::PeerId; use futures::{ future::{self, Either, Future}, io::{AsyncRead, AsyncWrite}, ready, stream::Stream, }; -use libra_network_address::{parse_dns_tcp, parse_ip_tcp, parse_tcp, IpFilter, NetworkAddress}; -use libra_types::PeerId; use std::{ convert::TryFrom, fmt::Debug, @@ -328,12 +328,12 @@ impl AsyncWrite for TcpSocket { mod test { use super::*; use crate::transport::{ConnectionOrigin, Transport, TransportExt}; + use diem_types::PeerId; use futures::{ future::{join, FutureExt}, io::{AsyncReadExt, AsyncWriteExt}, stream::StreamExt, }; - use libra_types::PeerId; use tokio::runtime::Runtime; #[tokio::test] diff --git a/network/network-address/Cargo.toml b/network/network-address/Cargo.toml index cc0ee36ee7..818a46c257 100644 --- a/network/network-address/Cargo.toml +++ b/network/network-address/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-network-address" +name = "diem-network-address" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra types" +authors = ["Diem Association "] +description = "Diem types" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,8 +19,8 @@ static_assertions = "1.1.0" thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } [dev-dependencies] @@ -28,8 +28,8 @@ anyhow = "1.0.34" proptest = "0.10.1" proptest-derive = "0.2.0" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "proptest-derive", "libra-crypto/fuzzing"] +fuzzing = ["proptest", "proptest-derive", "diem-crypto/fuzzing"] diff --git a/network/network-address/src/encrypted.rs b/network/network-address/src/encrypted.rs index ac02aff4d4..9dba73d39d 100644 --- a/network/network-address/src/encrypted.rs +++ b/network/network-address/src/encrypted.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{NetworkAddress, ParseError}; @@ -6,7 +6,7 @@ use aes_gcm::{ aead::{generic_array::GenericArray, AeadInPlace, NewAead}, Aes256Gcm, }; -use libra_crypto::{compat::Sha3_256, hkdf::Hkdf}; +use diem_crypto::{compat::Sha3_256, hkdf::Hkdf}; use move_core_types::account_address::AccountAddress; #[cfg(any(test, feature = "fuzzing"))] use proptest::prelude::*; @@ -40,19 +40,19 @@ pub const TEST_SHARED_VAL_NETADDR_KEY_VERSION: KeyVersion = 0; /// Note: modifying this salt is a backwards-incompatible protocol change. /// /// For readers, the HKDF salt is equal to the following hex string: -/// `"dfc8ffcc7f62ea4e5b9bc41ee7969b44275419ebaad1db27d2a191b6d1db6d13"` which is -/// also equal to the hash value `SHA3-256(b"LIBRA_ENCRYPTED_NETWORK_ADDRESS_SALT")`. +/// `"7ffda2ae982a2ebfab2a4da62f76fe33592c85e02445b875f02ded51a520ba2a"` which is +/// also equal to the hash value `SHA3-256(b"DIEM_ENCRYPTED_NETWORK_ADDRESS_SALT")`. /// /// ``` -/// use libra_network_address::encrypted::HKDF_SALT; -/// use libra_crypto::hash::HashValue; +/// use diem_network_address::encrypted::HKDF_SALT; +/// use diem_crypto::hash::HashValue; /// -/// let derived_salt = HashValue::sha3_256_of(b"LIBRA_ENCRYPTED_NETWORK_ADDRESS_SALT"); +/// let derived_salt = HashValue::sha3_256_of(b"DIEM_ENCRYPTED_NETWORK_ADDRESS_SALT"); /// assert_eq!(HKDF_SALT.as_ref(), derived_salt.as_ref()); /// ``` pub const HKDF_SALT: [u8; 32] = [ - 0xdf, 0xc8, 0xff, 0xcc, 0x7f, 0x62, 0xea, 0x4e, 0x5b, 0x9b, 0xc4, 0x1e, 0xe7, 0x96, 0x9b, 0x44, - 0x27, 0x54, 0x19, 0xeb, 0xaa, 0xd1, 0xdb, 0x27, 0xd2, 0xa1, 0x91, 0xb6, 0xd1, 0xdb, 0x6d, 0x13, + 0x7f, 0xfd, 0xa2, 0xae, 0x98, 0x2a, 0x2e, 0xbf, 0xab, 0x2a, 0x4d, 0xa6, 0x2f, 0x76, 0xfe, 0x33, + 0x59, 0x2c, 0x85, 0xe0, 0x24, 0x45, 0xb8, 0x75, 0xf0, 0x2d, 0xed, 0x51, 0xa5, 0x20, 0xba, 0x2a, ]; /// An encrypted `NetworkAddress`. diff --git a/network/network-address/src/lib.rs b/network/network-address/src/lib.rs index 223fe1c652..b5d11c251d 100644 --- a/network/network-address/src/lib.rs +++ b/network/network-address/src/lib.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::encrypted::{EncNetworkAddress, Key, KeyVersion}; -use libra_crypto::{ +use diem_crypto::{ traits::{CryptoMaterialError, ValidCryptoMaterialStringExt}, x25519, }; @@ -27,7 +27,7 @@ pub mod encrypted; const MAX_DNS_NAME_SIZE: usize = 255; -/// Libra `NetworkAddress` is a compact, efficient, self-describing and +/// Diem `NetworkAddress` is a compact, efficient, self-describing and /// future-proof network address represented as a stack of protocols. Essentially /// libp2p's [multiaddr](https://multiformats.io/multiaddr/) but using [`lcs`] to /// describe the binary format. @@ -43,7 +43,7 @@ const MAX_DNS_NAME_SIZE: usize = 255; /// 3. Perform a Noise IK handshake and assume the peer's static pubkey is /// ``. After this step, we will have a secure, authenticated /// connection with the peer. -/// 4. Perform a LibraNet version negotiation handshake (version 1). +/// 4. Perform a DiemNet version negotiation handshake (version 1). /// /// One key concept behind `NetworkAddress` is that it is fully self-describing, /// which allows us to easily "pre-negotiate" protocols while also allowing for @@ -55,7 +55,7 @@ const MAX_DNS_NAME_SIZE: usize = 255; /// transport protocol to use; in this sense, the secure transport protocol is /// "pre-negotiated" by the dialier selecting which advertised protocol to use. /// -/// In addition, `NetworkAddress` is integrated with the LibraNet concept of a +/// In addition, `NetworkAddress` is integrated with the DiemNet concept of a /// [`Transport`], which takes a `NetworkAddress` when dialing and peels off /// [`Protocols`] to establish a connection and perform initial handshakes. /// Similarly, the `Transport` takes `NetworkAddress` to listen on, which tells @@ -84,7 +84,7 @@ const MAX_DNS_NAME_SIZE: usize = 255; /// // \ '-- uvarint number of protocols /// // '-- length of encoded network address /// -/// use libra_network_address::NetworkAddress; +/// use diem_network_address::NetworkAddress; /// use lcs; /// use std::{str::FromStr, convert::TryFrom}; /// @@ -229,8 +229,8 @@ impl NetworkAddress { /// ### Example /// /// ```rust - /// use libra_crypto::{traits::ValidCryptoMaterialStringExt, x25519}; - /// use libra_network_address::NetworkAddress; + /// use diem_crypto::{traits::ValidCryptoMaterialStringExt, x25519}; + /// use diem_network_address::NetworkAddress; /// use std::str::FromStr; /// /// let pubkey_str = "080e287879c918794170e258bfaddd75acac5b3e350419044655e4983a487120"; @@ -252,10 +252,10 @@ impl NetworkAddress { .push(Protocol::Handshake(handshake_version)) } - /// Check that a `NetworkAddress` looks like a typical LibraNet address with + /// Check that a `NetworkAddress` looks like a typical DiemNet address with /// associated protocols. /// - /// "typical" LibraNet addresses begin with a transport protocol: + /// "typical" DiemNet addresses begin with a transport protocol: /// /// `"/ip4//tcp/"` or /// `"/ip6//tcp/"` or @@ -271,15 +271,15 @@ impl NetworkAddress { /// ### Example /// /// ```rust - /// use libra_network_address::NetworkAddress; + /// use diem_network_address::NetworkAddress; /// use std::str::FromStr; /// /// let addr_str = "/ip4/1.2.3.4/tcp/6180/ln-noise-ik/080e287879c918794170e258bfaddd75acac5b3e350419044655e4983a487120/ln-handshake/0"; /// let addr = NetworkAddress::from_str(addr_str).unwrap(); - /// assert!(addr.is_libranet_addr()); + /// assert!(addr.is_diemnet_addr()); /// ``` - pub fn is_libranet_addr(&self) -> bool { - parse_libranet_protos(self.as_slice()).is_some() + pub fn is_diemnet_addr(&self) -> bool { + parse_diemnet_protos(self.as_slice()).is_some() } /// A temporary, hacky function to parse out the first `/ln-noise-ik/` from @@ -459,7 +459,7 @@ impl Arbitrary for NetworkAddress { } #[cfg(any(test, feature = "fuzzing"))] -pub fn arb_libranet_addr() -> impl Strategy { +pub fn arb_diemnet_addr() -> impl Strategy { let arb_transport_protos = prop_oneof![ any::().prop_map(|port| vec![Protocol::Memory(port)]), any::<(Ipv4Addr, u16)>() @@ -473,12 +473,12 @@ pub fn arb_libranet_addr() -> impl Strategy { any::<(DnsName, u16)>() .prop_map(|(name, port)| vec![Protocol::Dns6(name), Protocol::Tcp(port)]), ]; - let arb_libranet_protos = any::<(x25519::PublicKey, u8)>() + let arb_diemnet_protos = any::<(x25519::PublicKey, u8)>() .prop_map(|(pubkey, hs)| vec![Protocol::NoiseIK(pubkey), Protocol::Handshake(hs)]); - (arb_transport_protos, arb_libranet_protos).prop_map( - |(mut transport_protos, mut libranet_protos)| { - transport_protos.append(&mut libranet_protos); + (arb_transport_protos, arb_diemnet_protos).prop_map( + |(mut transport_protos, mut diemnet_protos)| { + transport_protos.append(&mut diemnet_protos); NetworkAddress::new(transport_protos) }, ) @@ -747,10 +747,10 @@ pub fn parse_handshake(protos: &[Protocol]) -> Option<(u8, &[Protocol])> { } } -/// parse canonical libranet protocols +/// parse canonical diemnet protocols /// -/// See: `NetworkAddress::is_libranet_addr(&self)` -fn parse_libranet_protos(protos: &[Protocol]) -> Option<&[Protocol]> { +/// See: `NetworkAddress::is_diemnet_addr(&self)` +fn parse_diemnet_protos(protos: &[Protocol]) -> Option<&[Protocol]> { // parse base transport layer // --- // parse_ip_tcp @@ -1029,18 +1029,18 @@ mod test { } #[test] - fn test_is_libranet_addr(addr in arb_libranet_addr()) { - assert!(addr.is_libranet_addr(), "addr.is_libranet_addr() = false; addr: '{}'", addr); + fn test_is_diemnet_addr(addr in arb_diemnet_addr()) { + assert!(addr.is_diemnet_addr(), "addr.is_diemnet_addr() = false; addr: '{}'", addr); } #[test] - fn test_is_not_libranet_addr_with_trailing( - addr in arb_libranet_addr(), + fn test_is_not_diemnet_addr_with_trailing( + addr in arb_diemnet_addr(), addr_suffix in any::(), ) { - // A valid LibraNet addr w/ unexpected trailing protocols should not parse. + // A valid DiemNet addr w/ unexpected trailing protocols should not parse. let addr = addr.extend_from_slice(addr_suffix.as_slice()); - assert!(!addr.is_libranet_addr(), "addr.is_libranet_addr() = true; addr: '{}'", addr); + assert!(!addr.is_diemnet_addr(), "addr.is_diemnet_addr() = true; addr: '{}'", addr); } } } diff --git a/network/simple-onchain-discovery/Cargo.toml b/network/simple-onchain-discovery/Cargo.toml index 32e3077754..1d95214431 100644 --- a/network/simple-onchain-discovery/Cargo.toml +++ b/network/simple-onchain-discovery/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "network-simple-onchain-discovery" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra socket bench server" +authors = ["Diem Association "] +description = "Diem socket bench server" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -17,14 +17,14 @@ tokio = { version = "0.2.22", features = ["full"] } channel = {path = "../../common/channel", version = "0.1.0"} lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0"} -libra-crypto = {path = "../../crypto/crypto", version = "0.1.0"} -libra-logger = {path = "../../common/logger", version = "0.1.0"} -libra-metrics = {path = "../../common/metrics", version = "0.1.0"} -libra-network-address = {path = "../../network/network-address", version = "0.1.0"} -libra-network-address-encryption = {path = "../../config/management/network-address-encryption", version = "0.1.0"} -libra-types = {path = "../../types", version = "0.1.0"} -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0"} +diem-crypto = {path = "../../crypto/crypto", version = "0.1.0"} +diem-logger = {path = "../../common/logger", version = "0.1.0"} +diem-metrics = {path = "../../common/metrics", version = "0.1.0"} +diem-network-address = {path = "../../network/network-address", version = "0.1.0"} +diem-network-address-encryption = {path = "../../config/management/network-address-encryption", version = "0.1.0"} +diem-types = {path = "../../types", version = "0.1.0"} +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } network = {path = "../../network", version = "0.1.0"} subscription-service = { path = "../../common/subscription-service", version = "0.1.0" } diff --git a/network/simple-onchain-discovery/src/builder.rs b/network/simple-onchain-discovery/src/builder.rs index c86db2f86b..2136816258 100644 --- a/network/simple-onchain-discovery/src/builder.rs +++ b/network/simple-onchain-discovery/src/builder.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::ConfigurationChangeListener; -use channel::libra_channel; -use libra_config::network_id::NetworkContext; -use libra_network_address_encryption::Encryptor; -use libra_types::on_chain_config::OnChainConfigPayload; +use channel::diem_channel; +use diem_config::network_id::NetworkContext; +use diem_network_address_encryption::Encryptor; +use diem_types::on_chain_config::OnChainConfigPayload; use network::connectivity_manager::ConnectivityRequest; use std::sync::Arc; use tokio::runtime::Handle; @@ -14,7 +14,7 @@ struct ConfigurationChangeListenerConfig { network_context: Arc, encryptor: Encryptor, conn_mgr_reqs_tx: channel::Sender, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, } impl ConfigurationChangeListenerConfig { @@ -22,7 +22,7 @@ impl ConfigurationChangeListenerConfig { network_context: Arc, encryptor: Encryptor, conn_mgr_reqs_tx: channel::Sender, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> Self { Self { network_context, @@ -51,7 +51,7 @@ impl ConfigurationChangeListenerBuilder { network_context: Arc, encryptor: Encryptor, conn_mgr_reqs_tx: channel::Sender, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> ConfigurationChangeListenerBuilder { Self { config: Some(ConfigurationChangeListenerConfig::new( diff --git a/network/simple-onchain-discovery/src/lib.rs b/network/simple-onchain-discovery/src/lib.rs index 22bca1e559..fb8e95dd2d 100644 --- a/network/simple-onchain-discovery/src/lib.rs +++ b/network/simple-onchain-discovery/src/lib.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use channel::libra_channel::{self, Receiver}; -use futures::{sink::SinkExt, StreamExt}; -use libra_config::{config::RoleType, network_id::NetworkContext}; -use libra_crypto::x25519; -use libra_logger::prelude::*; -use libra_metrics::{ +use channel::diem_channel::{self, Receiver}; +use diem_config::{config::RoleType, network_id::NetworkContext}; +use diem_crypto::x25519; +use diem_logger::prelude::*; +use diem_metrics::{ register_histogram, register_int_counter_vec, DurationHistogram, IntCounterVec, }; -use libra_network_address::NetworkAddress; -use libra_network_address_encryption::{Encryptor, Error as EncryptorError}; -use libra_types::on_chain_config::{OnChainConfigPayload, ValidatorSet, ON_CHAIN_CONFIG_REGISTRY}; +use diem_network_address::NetworkAddress; +use diem_network_address_encryption::{Encryptor, Error as EncryptorError}; +use diem_types::on_chain_config::{OnChainConfigPayload, ValidatorSet, ON_CHAIN_CONFIG_REGISTRY}; +use futures::{sink::SinkExt, StreamExt}; use network::{ connectivity_manager::{ConnectivityRequest, DiscoverySource}, counters::inc_by_with_context, @@ -51,7 +51,7 @@ pub static EVENT_PROCESSING_LOOP_BUSY_DURATION_S: Lazy = Lazy pub static DISCOVERY_COUNTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_simple_onchain_discovery_counts", + "diem_simple_onchain_discovery_counts", "Histogram of busy time of spent in event processing loop", &["role_type", "network_id", "peer_id", "metric"] ) @@ -64,7 +64,7 @@ pub struct ConfigurationChangeListener { network_context: Arc, encryptor: Encryptor, conn_mgr_reqs_tx: channel::Sender, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, } pub fn gen_simple_discovery_reconfig_subscription( @@ -142,7 +142,7 @@ impl ConfigurationChangeListener { network_context: Arc, encryptor: Encryptor, conn_mgr_reqs_tx: channel::Sender, - reconfig_events: libra_channel::Receiver<(), OnChainConfigPayload>, + reconfig_events: diem_channel::Receiver<(), OnChainConfigPayload>, ) -> Self { Self { network_context, diff --git a/network/socket-bench-server/Cargo.toml b/network/socket-bench-server/Cargo.toml index 4b790223b3..7c5c0a2894 100644 --- a/network/socket-bench-server/Cargo.toml +++ b/network/socket-bench-server/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "socket-bench-server" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra socket bench server" +authors = ["Diem Association "] +description = "Diem socket bench server" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,12 +14,12 @@ futures = "0.3.8" tokio = { version = "0.2.22", features = ["full"] } tokio-util = { version = "0.3.1", features = ["codec"] } -libra-crypto = { path = "../../crypto/crypto" } -libra-config = { path = "../../config" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-network-address = { path = "../network-address", version = "0.1.0" } -libra-types = { path = "../../types" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto" } +diem-config = { path = "../../config" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-network-address = { path = "../network-address", version = "0.1.0" } +diem-types = { path = "../../types" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } memsocket = { path = "../../network/memsocket", version = "0.1.0" } netcore = { path = "../../network/netcore", version = "0.1.0", features = ["fuzzing", "testing"] } network = { path = "../../network", version = "0.1.0", features = ["testing", "fuzzing"] } diff --git a/network/socket-bench-server/src/lib.rs b/network/socket-bench-server/src/lib.rs index 5bbeb522ec..febefff1f3 100644 --- a/network/socket-bench-server/src/lib.rs +++ b/network/socket-bench-server/src/lib.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] +use diem_config::network_id::NetworkContext; +use diem_crypto::{test_utils::TEST_SEED, x25519, Uniform as _}; +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ future::Future, io::{AsyncRead, AsyncWrite}, sink::SinkExt, stream::{Stream, StreamExt}, }; -use libra_config::network_id::NetworkContext; -use libra_crypto::{test_utils::TEST_SEED, x25519, Uniform as _}; -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use memsocket::MemorySocket; use netcore::{ compat::IoCompat, diff --git a/network/socket-bench-server/src/main.rs b/network/socket-bench-server/src/main.rs index 2b96b87735..f87a5ef7aa 100644 --- a/network/socket-bench-server/src/main.rs +++ b/network/socket-bench-server/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -16,13 +16,13 @@ //! //! `RUSTFLAGS="-Ctarget-cpu=skylake -Ctarget-feature=+aes,+sse2,+sse4.1,+ssse3" TCP_ADDR=/ip6/::1/tcp/12345 cargo x bench -p network remote_tcp` -use libra_logger::info; +use diem_logger::info; use netcore::transport::tcp::TcpTransport; use socket_bench_server::{build_tcp_noise_transport, start_stream_server, Args}; use tokio::runtime::Builder; fn main() { - ::libra_logger::Logger::new().init(); + ::diem_logger::Logger::new().init(); let args = Args::from_env(); diff --git a/network/src/connectivity_manager/builder.rs b/network/src/connectivity_manager/builder.rs index 7e20aeb6c3..78cdea622b 100644 --- a/network/src/connectivity_manager/builder.rs +++ b/network/src/connectivity_manager/builder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,13 +6,13 @@ use crate::{ counters, peer_manager::{conn_notifs_channel, ConnectionRequestSender}, }; +use diem_config::network_id::NetworkContext; +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::stream::StreamExt; use futures_util::stream::Fuse; -use libra_config::network_id::NetworkContext; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use std::{ collections::{HashMap, HashSet}, sync::Arc, diff --git a/network/src/connectivity_manager/mod.rs b/network/src/connectivity_manager/mod.rs index b27ee61e42..6240899151 100644 --- a/network/src/connectivity_manager/mod.rs +++ b/network/src/connectivity_manager/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The ConnectivityManager actor is responsible for ensuring that we are @@ -31,17 +31,17 @@ use crate::{ logging::NetworkSchema, peer_manager::{self, conn_notifs_channel, ConnectionRequestSender, PeerManagerError}, }; +use diem_config::network_id::NetworkContext; +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ channel::oneshot, future::{BoxFuture, FutureExt}, stream::{FusedStream, FuturesUnordered, Stream, StreamExt}, }; -use libra_config::network_id::NetworkContext; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use num_variants::NumVariants; use rand::{ prelude::{SeedableRng, SmallRng}, diff --git a/network/src/connectivity_manager/test.rs b/network/src/connectivity_manager/test.rs index b900754b6d..012a13724e 100644 --- a/network/src/connectivity_manager/test.rs +++ b/network/src/connectivity_manager/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -6,13 +6,13 @@ use crate::{ peer::DisconnectReason, peer_manager::{conn_notifs_channel, ConnectionRequest}, }; -use channel::{libra_channel, message_queues::QueueStyle}; +use channel::{diem_channel, message_queues::QueueStyle}; use core::str::FromStr; +use diem_config::{config::RoleType, network_id::NetworkId}; +use diem_crypto::{test_utils::TEST_SEED, x25519, Uniform}; +use diem_logger::info; +use diem_network_address::NetworkAddress; use futures::SinkExt; -use libra_config::{config::RoleType, network_id::NetworkId}; -use libra_crypto::{test_utils::TEST_SEED, x25519, Uniform}; -use libra_logger::info; -use libra_network_address::NetworkAddress; use netcore::transport::ConnectionOrigin; use rand::rngs::StdRng; use std::{io, num::NonZeroUsize}; @@ -26,7 +26,7 @@ fn setup_conn_mgr( eligible_peers: Vec, seed_addrs: HashMap>, ) -> ( - libra_channel::Receiver, + diem_channel::Receiver, conn_notifs_channel::Sender, channel::Sender, channel::Sender<()>, @@ -52,13 +52,13 @@ fn setup_conn_mgr_with_context( seed_addrs: HashMap>, seed_pubkeys: HashMap>, ) -> ( - libra_channel::Receiver, + diem_channel::Receiver, conn_notifs_channel::Sender, channel::Sender, channel::Sender<()>, ) { let (connection_reqs_tx, connection_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (connection_notifs_tx, connection_notifs_rx) = conn_notifs_channel::new(); let (conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(0); let (ticker_tx, ticker_rx) = channel::new_test(0); @@ -97,7 +97,7 @@ fn gen_peer() -> ( let pubkey = x25519::PrivateKey::generate_for_testing().public_key(); let pubkeys: HashSet<_> = [pubkey].iter().copied().collect(); let addr = NetworkAddress::from_str("/ip4/127.0.0.1/tcp/9090").unwrap(); - let addr = addr.append_prod_protos(pubkey, libra_config::config::HANDSHAKE_VERSION); + let addr = addr.append_prod_protos(pubkey, diem_config::config::HANDSHAKE_VERSION); (peer_id, pubkey, pubkeys, addr) } @@ -163,7 +163,7 @@ async fn send_notification_await_delivery( } async fn expect_disconnect_request( - connection_reqs_rx: &mut libra_channel::Receiver, + connection_reqs_rx: &mut diem_channel::Receiver, connection_notifs_tx: &mut conn_notifs_channel::Sender, peer_id: PeerId, address: NetworkAddress, @@ -192,7 +192,7 @@ async fn expect_disconnect_request( } async fn expect_dial_request( - connection_reqs_rx: &mut libra_channel::Receiver, + connection_reqs_rx: &mut diem_channel::Receiver, connection_notifs_tx: &mut conn_notifs_channel::Sender, conn_mgr_reqs_tx: &mut channel::Sender, peer_id: PeerId, @@ -231,7 +231,7 @@ async fn expect_dial_request( } async fn expect_num_dials( - connection_reqs_rx: &mut libra_channel::Receiver, + connection_reqs_rx: &mut diem_channel::Receiver, connection_notifs_tx: &mut conn_notifs_channel::Sender, conn_mgr_reqs_tx: &mut channel::Sender, num_expected: usize, @@ -266,7 +266,7 @@ async fn expect_num_dials( #[test] fn connect_to_seeds_on_startup() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (seed_peer_id, _, _, seed_addr) = gen_peer(); let seed_addrs: HashMap<_, _> = vec![(seed_peer_id, vec![seed_addr.clone()])] @@ -377,7 +377,7 @@ fn connect_to_seeds_on_startup() { #[test] fn addr_change() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let other_addr = NetworkAddress::from_str("/ip4/127.0.0.1/tcp/9090").unwrap(); @@ -492,7 +492,7 @@ fn addr_change() { #[test] fn lost_connection() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let other_addr = NetworkAddress::from_str("/ip4/127.0.0.1/tcp/9090").unwrap(); @@ -566,7 +566,7 @@ fn lost_connection() { #[test] fn disconnect() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let other_pubkey = x25519::PrivateKey::generate_for_testing().public_key(); @@ -648,7 +648,7 @@ fn disconnect() { // Tests that connectivity manager retries dials and disconnects on failure. #[test] fn retry_on_failure() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let other_pubkey = x25519::PrivateKey::generate_for_testing().public_key(); @@ -767,7 +767,7 @@ fn retry_on_failure() { // Tests that if we dial an already connected peer or disconnect from an already disconnected // peer, connectivity manager does not send any additional dial or disconnect requests. fn no_op_requests() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let other_pubkey = x25519::PrivateKey::generate_for_testing().public_key(); @@ -878,7 +878,7 @@ fn no_op_requests() { #[test] fn backoff_on_failure() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let eligible_peers = vec![]; let seed_addrs = HashMap::new(); @@ -963,7 +963,7 @@ fn backoff_on_failure() { // multiple listen addresses and some of them don't work. #[test] fn multiple_addrs_basic() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let eligible_peers = vec![other_peer_id]; @@ -1038,7 +1038,7 @@ fn multiple_addrs_basic() { // retry more times than there are addresses. #[test] fn multiple_addrs_wrapping() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let eligible_peers = vec![other_peer_id]; @@ -1127,7 +1127,7 @@ fn multiple_addrs_wrapping() { // multiple listen addrs and then that peer advertises a smaller number of addrs. #[test] fn multiple_addrs_shrinking() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let other_peer_id = PeerId::random(); let eligible_peers = vec![other_peer_id]; @@ -1221,7 +1221,7 @@ fn multiple_addrs_shrinking() { #[test] fn public_connection_limit() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let mut seed_addrs: HashMap> = HashMap::new(); let mut seed_pubkeys: HashMap> = HashMap::new(); @@ -1278,7 +1278,7 @@ fn basic_update_eligible_peers() { PeerId::random(), )); let (connection_reqs_tx, _connection_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (_connection_notifs_tx, connection_notifs_rx) = conn_notifs_channel::new(); let (_conn_mgr_reqs_tx, conn_mgr_reqs_rx) = channel::new_test(0); let (_ticker_tx, ticker_rx) = channel::new_test::<()>(0); diff --git a/network/src/constants.rs b/network/src/constants.rs index ac0d4fa8cd..d543d64d30 100644 --- a/network/src/constants.rs +++ b/network/src/constants.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// A collection of constants and default values for configuring various network components. diff --git a/network/src/counters.rs b/network/src/counters.rs index 7079842ba7..5ec78fa5b6 100644 --- a/network/src/counters.rs +++ b/network/src/counters.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::protocols::wire::handshake::v1::ProtocolId; -use libra_config::network_id::NetworkContext; -use libra_metrics::{ +use diem_config::network_id::NetworkContext; +use diem_metrics::{ register_histogram_vec, register_int_counter_vec, register_int_gauge, register_int_gauge_vec, Histogram, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, }; -use libra_types::PeerId; +use diem_types::PeerId; use netcore::transport::ConnectionOrigin; use once_cell::sync::Lazy; @@ -23,18 +23,18 @@ pub const SENT_LABEL: &str = "sent"; pub const SUCCEEDED_LABEL: &str = "succeeded"; pub const FAILED_LABEL: &str = "failed"; -pub static LIBRA_NETWORK_PEERS: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_PEERS: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_network_peers", + "diem_network_peers", "Number of peers, and their associated state", &["role_type", "state"] ) .unwrap() }); -pub static LIBRA_CONNECTIONS: Lazy = Lazy::new(|| { +pub static DIEM_CONNECTIONS: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_connections", + "diem_connections", "Number of current connections and their direction", &["role_type", "network_id", "peer_id", "direction"] ) @@ -42,7 +42,7 @@ pub static LIBRA_CONNECTIONS: Lazy = Lazy::new(|| { }); pub fn connections(network_context: &NetworkContext, origin: ConnectionOrigin) -> IntGauge { - LIBRA_CONNECTIONS.with_label_values(&[ + DIEM_CONNECTIONS.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -50,9 +50,9 @@ pub fn connections(network_context: &NetworkContext, origin: ConnectionOrigin) - ]) } -pub static LIBRA_NETWORK_PEER_CONNECTED: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_PEER_CONNECTED: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_network_peer_connected", + "diem_network_peer_connected", "Indicates if we are connected to a particular peer", &["role_type", "network_id", "peer_id", "remote_peer_id"] ) @@ -61,7 +61,7 @@ pub static LIBRA_NETWORK_PEER_CONNECTED: Lazy = Lazy::new(|| { pub fn peer_connected(network_context: &NetworkContext, remote_peer_id: &PeerId, v: i64) { if network_context.role().is_validator() { - LIBRA_NETWORK_PEER_CONNECTED + DIEM_NETWORK_PEER_CONNECTED .with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), @@ -89,9 +89,9 @@ pub fn inc_by_with_context( .inc_by(val) } -pub static LIBRA_NETWORK_PENDING_CONNECTION_UPGRADES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_PENDING_CONNECTION_UPGRADES: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_network_pending_connection_upgrades", + "diem_network_pending_connection_upgrades", "Number of concurrent inbound or outbound connections we're currently negotiating", &["role_type", "network_id", "peer_id", "direction"] ) @@ -102,7 +102,7 @@ pub fn pending_connection_upgrades( network_context: &NetworkContext, direction: ConnectionOrigin, ) -> IntGauge { - LIBRA_NETWORK_PENDING_CONNECTION_UPGRADES.with_label_values(&[ + DIEM_NETWORK_PENDING_CONNECTION_UPGRADES.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -110,9 +110,9 @@ pub fn pending_connection_upgrades( ]) } -pub static LIBRA_NETWORK_CONNECTION_UPGRADE_TIME: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_CONNECTION_UPGRADE_TIME: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_network_connection_upgrade_time_seconds", + "diem_network_connection_upgrade_time_seconds", "Time to complete a new inbound or outbound connection upgrade", &["role_type", "network_id", "peer_id", "direction", "state"] ) @@ -124,7 +124,7 @@ pub fn connection_upgrade_time( direction: ConnectionOrigin, state: &'static str, ) -> Histogram { - LIBRA_NETWORK_CONNECTION_UPGRADE_TIME.with_label_values(&[ + DIEM_NETWORK_CONNECTION_UPGRADE_TIME.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -133,18 +133,18 @@ pub fn connection_upgrade_time( ]) } -pub static LIBRA_NETWORK_DISCOVERY_NOTES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_DISCOVERY_NOTES: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_network_discovery_notes", - "Libra network discovery notes", + "diem_network_discovery_notes", + "Diem network discovery notes", &["role_type"] ) .unwrap() }); -pub static LIBRA_NETWORK_RPC_MESSAGES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_RPC_MESSAGES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_rpc_messages", + "diem_network_rpc_messages", "Number of RPC messages", &["role_type", "network_id", "peer_id", "type", "state"] ) @@ -156,7 +156,7 @@ pub fn rpc_messages( type_label: &'static str, state_label: &'static str, ) -> IntCounter { - LIBRA_NETWORK_RPC_MESSAGES.with_label_values(&[ + DIEM_NETWORK_RPC_MESSAGES.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -165,9 +165,9 @@ pub fn rpc_messages( ]) } -pub static LIBRA_NETWORK_RPC_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_RPC_BYTES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_rpc_bytes", + "diem_network_rpc_bytes", "Number of RPC bytes transferred", &["role_type", "network_id", "peer_id", "type", "state"] ) @@ -179,7 +179,7 @@ pub fn rpc_bytes( type_label: &'static str, state_label: &'static str, ) -> IntCounter { - LIBRA_NETWORK_RPC_BYTES.with_label_values(&[ + DIEM_NETWORK_RPC_BYTES.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -190,7 +190,7 @@ pub fn rpc_bytes( pub static INVALID_NETWORK_MESSAGES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_invalid_messages", + "diem_network_invalid_messages", "Number of invalid messages (RPC/direct_send)", &["role_type", "network_id", "peer_id", "type"] ) @@ -199,16 +199,16 @@ pub static INVALID_NETWORK_MESSAGES: Lazy = Lazy::new(|| { pub static PEER_SEND_FAILURES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_peer_send_failures", + "diem_network_peer_send_failures", "Number of messages failed to send to peer", &["role_type", "network_id", "peer_id", "protocol_id"] ) .unwrap() }); -pub static LIBRA_NETWORK_OUTBOUND_RPC_REQUEST_LATENCY: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_OUTBOUND_RPC_REQUEST_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_network_outbound_rpc_request_latency_seconds", + "diem_network_outbound_rpc_request_latency_seconds", "Outbound RPC request latency in seconds", &["role_type", "network_id", "peer_id", "protocol_id"] ) @@ -219,7 +219,7 @@ pub fn outbound_rpc_request_latency( network_context: &NetworkContext, protocol_id: ProtocolId, ) -> Histogram { - LIBRA_NETWORK_OUTBOUND_RPC_REQUEST_LATENCY.with_label_values(&[ + DIEM_NETWORK_OUTBOUND_RPC_REQUEST_LATENCY.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -227,9 +227,9 @@ pub fn outbound_rpc_request_latency( ]) } -pub static LIBRA_NETWORK_INBOUND_RPC_HANDLER_LATENCY: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_INBOUND_RPC_HANDLER_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_network_inbound_rpc_handler_latency_seconds", + "diem_network_inbound_rpc_handler_latency_seconds", "Inbound RPC request application handler latency in seconds", &["role_type", "network_id", "peer_id", "protocol_id"] ) @@ -240,7 +240,7 @@ pub fn inbound_rpc_handler_latency( network_context: &NetworkContext, protocol_id: ProtocolId, ) -> Histogram { - LIBRA_NETWORK_INBOUND_RPC_HANDLER_LATENCY.with_label_values(&[ + DIEM_NETWORK_INBOUND_RPC_HANDLER_LATENCY.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -248,9 +248,9 @@ pub fn inbound_rpc_handler_latency( ]) } -pub static LIBRA_NETWORK_DIRECT_SEND_MESSAGES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_DIRECT_SEND_MESSAGES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_direct_send_messages", + "diem_network_direct_send_messages", "Number of direct send messages", &["role_type", "network_id", "peer_id", "state"] ) @@ -261,7 +261,7 @@ pub fn direct_send_messages( network_context: &NetworkContext, state_label: &'static str, ) -> IntCounter { - LIBRA_NETWORK_DIRECT_SEND_MESSAGES.with_label_values(&[ + DIEM_NETWORK_DIRECT_SEND_MESSAGES.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -269,9 +269,9 @@ pub fn direct_send_messages( ]) } -pub static LIBRA_NETWORK_DIRECT_SEND_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_NETWORK_DIRECT_SEND_BYTES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_direct_send_bytes", + "diem_network_direct_send_bytes", "Number of direct send bytes transferred", &["role_type", "network_id", "peer_id", "state"] ) @@ -282,7 +282,7 @@ pub fn direct_send_bytes( network_context: &NetworkContext, state_label: &'static str, ) -> IntCounter { - LIBRA_NETWORK_DIRECT_SEND_BYTES.with_label_values(&[ + DIEM_NETWORK_DIRECT_SEND_BYTES.with_label_values(&[ network_context.role().as_str(), network_context.network_id().as_str(), network_context.peer_id().short_str().as_str(), @@ -294,7 +294,7 @@ pub fn direct_send_bytes( /// DirectSends. pub static PENDING_NETWORK_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_pending_network_notifications", + "diem_network_pending_network_notifications", "Number of pending inbound network notifications by state", &["state"] ) @@ -304,7 +304,7 @@ pub static PENDING_NETWORK_NOTIFICATIONS: Lazy = Lazy::new(|| { /// Counter of pending requests in Network Provider pub static PENDING_NETWORK_REQUESTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_pending_requests", + "diem_network_pending_requests", "Number of pending outbound network requests by state", &["state"] ) @@ -314,7 +314,7 @@ pub static PENDING_NETWORK_REQUESTS: Lazy = Lazy::new(|| { /// Counter of pending network events to Health Checker. pub static PENDING_HEALTH_CHECKER_NETWORK_EVENTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_pending_health_check_events", + "diem_network_pending_health_check_events", "Number of pending health check events by state", &["state"] ) @@ -324,7 +324,7 @@ pub static PENDING_HEALTH_CHECKER_NETWORK_EVENTS: Lazy = Lazy::ne /// Counter of pending network events to Discovery. pub static PENDING_DISCOVERY_NETWORK_EVENTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_pending_discovery_events", + "diem_network_pending_discovery_events", "Number of pending discovery events by state", &["state"] ) @@ -334,7 +334,7 @@ pub static PENDING_DISCOVERY_NETWORK_EVENTS: Lazy = Lazy::new(|| /// Counter of pending requests in Peer Manager pub static PENDING_PEER_MANAGER_REQUESTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_network_pending_peer_manager_requests", + "diem_network_pending_peer_manager_requests", "Number of pending peer manager requests by state", &["state"] ) @@ -348,7 +348,7 @@ pub static PENDING_PEER_MANAGER_REQUESTS: Lazy = Lazy::new(|| { /// Counter of pending requests in Connectivity Manager pub static PENDING_CONNECTIVITY_MANAGER_REQUESTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_connectivity_manager_requests", + "diem_network_pending_connectivity_manager_requests", "Number of pending connectivity manager requests" ) .unwrap() @@ -357,7 +357,7 @@ pub static PENDING_CONNECTIVITY_MANAGER_REQUESTS: Lazy = Lazy::new(|| /// Counter of pending Connection Handler notifications to PeerManager. pub static PENDING_CONNECTION_HANDLER_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_connection_handler_notifications", + "diem_network_pending_connection_handler_notifications", "Number of pending connection handler notifications" ) .unwrap() @@ -366,7 +366,7 @@ pub static PENDING_CONNECTION_HANDLER_NOTIFICATIONS: Lazy = Lazy::new( /// Counter of pending dial requests in Peer Manager pub static PENDING_PEER_MANAGER_DIAL_REQUESTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_peer_manager_dial_requests", + "diem_network_pending_peer_manager_dial_requests", "Number of pending peer manager dial requests" ) .unwrap() @@ -375,7 +375,7 @@ pub static PENDING_PEER_MANAGER_DIAL_REQUESTS: Lazy = Lazy::new(|| { /// Counter of messages pending in queue to be sent out on the wire. pub static PENDING_WIRE_MESSAGES: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_wire_messages", + "diem_network_pending_wire_messages", "Number of pending wire messages" ) .unwrap() @@ -384,7 +384,7 @@ pub static PENDING_WIRE_MESSAGES: Lazy = Lazy::new(|| { /// Counter of pending requests in Direct Send pub static PENDING_DIRECT_SEND_REQUESTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_direct_send_requests", + "diem_network_pending_direct_send_requests", "Number of pending direct send requests" ) .unwrap() @@ -393,7 +393,7 @@ pub static PENDING_DIRECT_SEND_REQUESTS: Lazy = Lazy::new(|| { /// Counter of pending Direct Send notifications to Network Provider pub static PENDING_DIRECT_SEND_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_direct_send_notifications", + "diem_network_pending_direct_send_notifications", "Number of pending direct send notifications" ) .unwrap() @@ -402,7 +402,7 @@ pub static PENDING_DIRECT_SEND_NOTIFICATIONS: Lazy = Lazy::new(|| { /// Counter of pending requests in RPC pub static PENDING_RPC_REQUESTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_rpc_requests", + "diem_network_pending_rpc_requests", "Number of pending rpc requests" ) .unwrap() @@ -411,7 +411,7 @@ pub static PENDING_RPC_REQUESTS: Lazy = Lazy::new(|| { /// Counter of pending RPC notifications to Network Provider pub static PENDING_RPC_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_rpc_notifications", + "diem_network_pending_rpc_notifications", "Number of pending rpc notifications" ) .unwrap() @@ -420,7 +420,7 @@ pub static PENDING_RPC_NOTIFICATIONS: Lazy = Lazy::new(|| { /// Counter of pending requests for each remote peer pub static PENDING_PEER_REQUESTS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_peer_requests", + "diem_network_pending_peer_requests", "Number of pending peer requests" ) .unwrap() @@ -429,7 +429,7 @@ pub static PENDING_PEER_REQUESTS: Lazy = Lazy::new(|| { /// Counter of pending RPC events from Peer to Rpc actor. pub static PENDING_PEER_RPC_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_peer_rpc_notifications", + "diem_network_pending_peer_rpc_notifications", "Number of pending peer rpc notifications" ) .unwrap() @@ -438,7 +438,7 @@ pub static PENDING_PEER_RPC_NOTIFICATIONS: Lazy = Lazy::new(|| { /// Counter of pending DirectSend events from Peer to DirectSend actor.. pub static PENDING_PEER_DIRECT_SEND_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_peer_direct_send_notifications", + "diem_network_pending_peer_direct_send_notifications", "Number of pending peer direct send notifications" ) .unwrap() @@ -447,7 +447,7 @@ pub static PENDING_PEER_DIRECT_SEND_NOTIFICATIONS: Lazy = Lazy::new(|| /// Counter of pending connection notifications from Peer to NetworkProvider. pub static PENDING_PEER_NETWORK_NOTIFICATIONS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_network_pending_peer_network_notifications", + "diem_network_pending_peer_network_notifications", "Number of pending peer network notifications" ) .unwrap() diff --git a/network/src/error.rs b/network/src/error.rs index 520737ba63..42375cb0e3 100644 --- a/network/src/error.rs +++ b/network/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::peer_manager::PeerManagerError; diff --git a/network/src/fuzzing.rs b/network/src/fuzzing.rs index 91f6ac8b05..f6febae424 100644 --- a/network/src/fuzzing.rs +++ b/network/src/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,9 +8,9 @@ use crate::{ }, testutils::fake_socket::ReadOnlyTestSocketVec, }; +use diem_config::network_id::NetworkId; +use diem_types::chain_id::ChainId; use futures::executor::block_on; -use libra_config::network_id::NetworkId; -use libra_types::chain_id::ChainId; use proptest::{collection::btree_map, prelude::*}; // diff --git a/network/src/interface/mod.rs b/network/src/interface/mod.rs index 8320ba8af1..166edfc8cc 100644 --- a/network/src/interface/mod.rs +++ b/network/src/interface/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Module exposing generic network interface to a single connected peer. @@ -23,15 +23,15 @@ use crate::{ transport::Connection, ProtocolId, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; +use channel::{self, diem_channel, message_queues::QueueStyle}; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; +use diem_types::PeerId; use futures::{ io::{AsyncRead, AsyncWrite}, stream::StreamExt, FutureExt, SinkExt, }; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; -use libra_types::PeerId; use std::{fmt::Debug, marker::PhantomData, num::NonZeroUsize, sync::Arc, time::Duration}; use tokio::runtime::Handle; @@ -74,8 +74,8 @@ where channel_size: usize, max_frame_size: usize, ) -> ( - libra_channel::Sender, - libra_channel::Receiver, + diem_channel::Sender, + diem_channel::Receiver, ) { let peer_id = connection.metadata.remote_peer_id; @@ -139,15 +139,15 @@ where executor.spawn(ds.start()); // TODO: Add label for peer. - let (requests_tx, requests_rx) = libra_channel::new( + let (requests_tx, requests_rx) = diem_channel::new( QueueStyle::FIFO, - NonZeroUsize::new(channel_size).expect("libra_channel cannot be of size 0"), + NonZeroUsize::new(channel_size).expect("diem_channel cannot be of size 0"), Some(&counters::PENDING_NETWORK_REQUESTS), ); // TODO: Add label for peer. - let (notifs_tx, notifs_rx) = libra_channel::new( + let (notifs_tx, notifs_rx) = diem_channel::new( QueueStyle::FIFO, - NonZeroUsize::new(channel_size).expect("libra_channel cannot be of size 0"), + NonZeroUsize::new(channel_size).expect("diem_channel cannot be of size 0"), Some(&counters::PENDING_NETWORK_NOTIFICATIONS), ); @@ -237,7 +237,7 @@ where fn handle_rpc_notification( peer_id: PeerId, notif: RpcNotification, - mut notifs_tx: libra_channel::Sender, + mut notifs_tx: diem_channel::Sender, ) { trace!("RpcNotification::{:?}", notif); match notif { @@ -258,7 +258,7 @@ where fn handle_ds_notification( peer_id: PeerId, notif: DirectSendNotification, - mut notifs_tx: libra_channel::Sender, + mut notifs_tx: diem_channel::Sender, ) { trace!("DirectSendNotification::{:?}", notif); match notif { diff --git a/network/src/lib.rs b/network/src/lib.rs index 822bfb846d..606c101e55 100644 --- a/network/src/lib.rs +++ b/network/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // diff --git a/network/src/logging.rs b/network/src/logging.rs index 80d863e56f..68414dbf0d 100644 --- a/network/src/logging.rs +++ b/network/src/logging.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! //! This module is to contain all networking logging information. //! //! ``` -//! use libra_config::network_id::NetworkContext; -//! use libra_logger::info; -//! use libra_network_address::NetworkAddress; -//! use libra_types::PeerId; +//! use diem_config::network_id::NetworkContext; +//! use diem_logger::info; +//! use diem_network_address::NetworkAddress; +//! use diem_types::PeerId; //! use network::logging::NetworkSchema; //! //! info!( @@ -25,10 +25,10 @@ use crate::{ connectivity_manager::DiscoverySource, transport::{ConnectionId, ConnectionMetadata}, }; -use libra_config::network_id::NetworkContext; -use libra_logger::Schema; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; +use diem_config::network_id::NetworkContext; +use diem_logger::Schema; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use netcore::transport::ConnectionOrigin; #[derive(Schema)] diff --git a/network/src/noise/error.rs b/network/src/noise/error.rs index e275243fc0..2a5a80a1fe 100644 --- a/network/src/noise/error.rs +++ b/network/src/noise/error.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::noise::NoiseError; -use libra_types::PeerId; +use diem_crypto::noise::NoiseError; +use diem_types::PeerId; use short_hex_str::ShortHexStr; use std::io; use thiserror::Error; diff --git a/network/src/noise/fuzzing.rs b/network/src/noise/fuzzing.rs index bf68315c49..d0a091580a 100644 --- a/network/src/noise/fuzzing.rs +++ b/network/src/noise/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // @@ -12,11 +12,11 @@ use crate::{ noise::{stream::NoiseStream, AntiReplayTimestamps, HandshakeAuthMode, NoiseUpgrader}, testutils::fake_socket::{ReadOnlyTestSocket, ReadWriteTestSocket}, }; +use diem_config::network_id::NetworkContext; +use diem_crypto::{noise::NoiseSession, test_utils::TEST_SEED, x25519, Uniform as _}; +use diem_types::PeerId; use futures::{executor::block_on, future::join}; use futures_util::io::AsyncReadExt; -use libra_config::network_id::NetworkContext; -use libra_crypto::{noise::NoiseSession, test_utils::TEST_SEED, x25519, Uniform as _}; -use libra_types::PeerId; use once_cell::sync::Lazy; use rand_core::SeedableRng; @@ -101,7 +101,7 @@ fn generate_first_two_messages() -> (Vec, Vec) { (init_msg, resp_msg) } -pub fn generate_corpus(gen: &mut libra_proptest_helpers::ValueGenerator) -> Vec { +pub fn generate_corpus(gen: &mut diem_proptest_helpers::ValueGenerator) -> Vec { let (init_msg, resp_msg) = generate_first_two_messages(); // choose a random one let strategy = proptest::arbitrary::any::(); diff --git a/network/src/noise/handshake.rs b/network/src/noise/handshake.rs index 00a374442f..14ba126db3 100644 --- a/network/src/noise/handshake.rs +++ b/network/src/noise/handshake.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The handshake module implements the handshake part of the protocol. @@ -11,12 +11,12 @@ //! [stream]: network::noise::stream use crate::noise::{error::NoiseHandshakeError, stream::NoiseStream}; +use diem_config::network_id::NetworkContext; +use diem_crypto::{noise, x25519}; +use diem_infallible::{duration_since_epoch, RwLock}; +use diem_logger::trace; +use diem_types::PeerId; use futures::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; -use libra_config::network_id::NetworkContext; -use libra_crypto::{noise, x25519}; -use libra_infallible::{duration_since_epoch, RwLock}; -use libra_logger::trace; -use libra_types::PeerId; use netcore::transport::ConnectionOrigin; use std::{ collections::{HashMap, HashSet}, @@ -76,7 +76,7 @@ pub enum HandshakeAuthMode { /// In `Mutual` mode, both sides will authenticate each other with their /// `trusted_peers` set. We also include replay attack mitigation in this mode. /// - /// For example, in the Libra validator network, validator peers will only + /// For example, in the Diem validator network, validator peers will only /// allow connections from other validator peers. They will use this mode to /// check that inbound connections authenticate to a network public key /// actually contained in the current validator set. @@ -443,8 +443,8 @@ impl NoiseUpgrader { mod test { use super::*; use crate::testutils::fake_socket::ReadWriteTestSocket; + use diem_crypto::{test_utils::TEST_SEED, traits::Uniform as _}; use futures::{executor::block_on, future::join}; - use libra_crypto::{test_utils::TEST_SEED, traits::Uniform as _}; use memsocket::MemorySocket; use rand::SeedableRng as _; @@ -657,7 +657,7 @@ mod test { #[test] fn test_handshake_client_peerid_mismatch_fails_server_only_auth() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let ((mut client, _), (server, server_public_key)) = build_peers(false /* is_mutual_auth */); diff --git a/network/src/noise/mod.rs b/network/src/noise/mod.rs index 9cedb6f905..f05874ff06 100644 --- a/network/src/noise/mod.rs +++ b/network/src/noise/mod.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This crate implements wrappers around our [Noise][noise] implementation. //! Noise is a protocol framework to encrypt and authentication connections. -//! We use Noise to secure connections between peers in Libra. +//! We use Noise to secure connections between peers in Diem. //! Specifically, we use the [Noise IK][ik] handshake which is a one round-trip protocol //! (the client sends one message, then the server responds). //! For more information about Noise and our implementation, refer to the [crypto] crate. @@ -14,11 +14,11 @@ //! use network::noise::{AntiReplayTimestamps, HandshakeAuthMode, NoiseUpgrader}; //! use futures::{executor, future, io::{AsyncReadExt, AsyncWriteExt}}; //! use memsocket::MemorySocket; -//! use libra_config::{config::RoleType, network_id::{NetworkContext, NetworkId}}; -//! use libra_crypto::{x25519, ed25519, Uniform, PrivateKey, test_utils::TEST_SEED}; -//! use libra_infallible::RwLock; +//! use diem_config::{config::RoleType, network_id::{NetworkContext, NetworkId}}; +//! use diem_crypto::{x25519, ed25519, Uniform, PrivateKey, test_utils::TEST_SEED}; +//! use diem_infallible::RwLock; //! use rand::{rngs::StdRng, SeedableRng}; -//! use libra_types::PeerId; +//! use diem_types::PeerId; //! use std::{collections::{HashSet, HashMap}, io, sync::Arc}; //! //! fn example() -> io::Result<()> { @@ -95,7 +95,7 @@ //! //! [noise]: http://noiseprotocol.org/ //! [ik]: https://noiseexplorer.com/patterns/IK -//! [crypto]: ../libra_crypto/noise/index.html +//! [crypto]: ../diem_crypto/noise/index.html pub mod error; pub mod handshake; diff --git a/network/src/noise/stream.rs b/network/src/noise/stream.rs index bbd053b823..5d53049739 100644 --- a/network/src/noise/stream.rs +++ b/network/src/noise/stream.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The socket module implements the post-handshake part of the protocol. @@ -19,8 +19,8 @@ use std::{ task::{Context, Poll}, }; -use libra_crypto::{noise, x25519}; -use libra_logger::prelude::*; +use diem_crypto::{noise, x25519}; +use diem_logger::prelude::*; // // NoiseStream @@ -550,14 +550,14 @@ mod test { noise::{AntiReplayTimestamps, HandshakeAuthMode, NoiseUpgrader}, testutils::fake_socket::{ReadOnlyTestSocket, ReadWriteTestSocket}, }; + use diem_config::network_id::NetworkContext; + use diem_crypto::{test_utils::TEST_SEED, traits::Uniform as _, x25519}; + use diem_types::PeerId; use futures::{ executor::block_on, future::join, io::{AsyncReadExt, AsyncWriteExt}, }; - use libra_config::network_id::NetworkContext; - use libra_crypto::{test_utils::TEST_SEED, traits::Uniform as _, x25519}; - use libra_types::PeerId; use memsocket::MemorySocket; use rand::SeedableRng as _; use std::io; diff --git a/network/src/peer/fuzzing.rs b/network/src/peer/fuzzing.rs index b4cd0b934f..3b2765ad70 100644 --- a/network/src/peer/fuzzing.rs +++ b/network/src/peer/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,11 +13,11 @@ use crate::{ transport::{Connection, ConnectionId, ConnectionMetadata}, ProtocolId, }; +use diem_config::network_id::NetworkContext; +use diem_network_address::NetworkAddress; +use diem_proptest_helpers::ValueGenerator; +use diem_types::PeerId; use futures::{executor::block_on, future, io::AsyncReadExt, sink::SinkExt, stream::StreamExt}; -use libra_config::network_id::NetworkContext; -use libra_network_address::NetworkAddress; -use libra_proptest_helpers::ValueGenerator; -use libra_types::PeerId; use memsocket::MemorySocket; use netcore::{compat::IoCompat, transport::ConnectionOrigin}; use proptest::{arbitrary::any, collection::vec}; diff --git a/network/src/peer/mod.rs b/network/src/peer/mod.rs index 3a31ac442d..f08a73e907 100644 --- a/network/src/peer/mod.rs +++ b/network/src/peer/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The Peer actor owns the underlying connection and is responsible for listening for @@ -14,6 +14,9 @@ use crate::{ ProtocolId, }; use bytes::BytesMut; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; +use diem_types::PeerId; use futures::{ self, channel::oneshot, @@ -21,9 +24,6 @@ use futures::{ stream::StreamExt, FutureExt, SinkExt, TryFutureExt, }; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; -use libra_types::PeerId; use netcore::compat::IoCompat; use serde::{export::Formatter, Serialize}; use std::{fmt::Debug, io, sync::Arc}; diff --git a/network/src/peer/test.rs b/network/src/peer/test.rs index 7d763a015a..9b45537b0a 100644 --- a/network/src/peer/test.rs +++ b/network/src/peer/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,10 +11,10 @@ use crate::{ transport::{Connection, ConnectionId, ConnectionMetadata}, ProtocolId, }; +use diem_config::network_id::NetworkContext; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{future::join, io::AsyncWriteExt, stream::StreamExt, SinkExt}; -use libra_config::network_id::NetworkContext; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use memsocket::MemorySocket; use netcore::{compat::IoCompat, transport::ConnectionOrigin}; use std::{str::FromStr, time::Duration}; @@ -162,7 +162,7 @@ async fn assert_peer_disconnected_event( #[test] fn peer_send_message() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( peer, @@ -198,7 +198,7 @@ fn peer_send_message() { #[test] fn peer_recv_message() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( peer, @@ -246,7 +246,7 @@ fn peer_recv_message() { // we won't deadlock. #[test] fn peer_open_substream_simultaneous() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( ( @@ -315,7 +315,7 @@ fn peer_open_substream_simultaneous() { #[test] fn peer_disconnect_request() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( peer, @@ -341,7 +341,7 @@ fn peer_disconnect_request() { #[test] fn peer_disconnect_connection_lost() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( peer, @@ -366,7 +366,7 @@ fn peer_disconnect_connection_lost() { #[test] fn peer_terminates_when_request_tx_has_dropped() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( peer, diff --git a/network/src/peer_manager/builder.rs b/network/src/peer_manager/builder.rs index 05be816447..239d0948db 100644 --- a/network/src/peer_manager/builder.rs +++ b/network/src/peer_manager/builder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,17 +9,17 @@ use crate::{ PeerManagerNotification, PeerManagerRequest, PeerManagerRequestSender, }, protocols::wire::handshake::v1::SupportedProtocols, - transport::{self, Connection, LibraNetTransport, LIBRA_TCP_TRANSPORT}, + transport::{self, Connection, DiemNetTransport, DIEM_TCP_TRANSPORT}, ProtocolId, }; -use channel::{self, libra_channel, message_queues::QueueStyle}; -use libra_config::{config::HANDSHAKE_VERSION, network_id::NetworkContext}; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_logger::prelude::*; -use libra_metrics::IntCounterVec; -use libra_network_address::NetworkAddress; -use libra_types::{chain_id::ChainId, PeerId}; +use channel::{self, diem_channel, message_queues::QueueStyle}; +use diem_config::{config::HANDSHAKE_VERSION, network_id::NetworkContext}; +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_logger::prelude::*; +use diem_metrics::IntCounterVec; +use diem_network_address::NetworkAddress; +use diem_types::{chain_id::ChainId, PeerId}; #[cfg(any(test, feature = "testing", feature = "fuzzing"))] use netcore::transport::memory::MemoryTransport; use netcore::transport::{ @@ -97,13 +97,13 @@ impl TransportContext { struct PeerManagerContext { // TODO(philiphayes): better support multiple listening addrs - pm_reqs_tx: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, - pm_reqs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, - connection_reqs_tx: libra_channel::Sender, - connection_reqs_rx: libra_channel::Receiver, + pm_reqs_tx: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, + pm_reqs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + connection_reqs_tx: diem_channel::Sender, + connection_reqs_rx: diem_channel::Receiver, upstream_handlers: - HashMap>, + HashMap>, connection_event_handlers: Vec, max_concurrent_network_reqs: usize, @@ -114,14 +114,14 @@ struct PeerManagerContext { impl PeerManagerContext { fn new( - pm_reqs_tx: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, - pm_reqs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, - connection_reqs_tx: libra_channel::Sender, - connection_reqs_rx: libra_channel::Receiver, + pm_reqs_tx: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, + pm_reqs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + connection_reqs_tx: diem_channel::Sender, + connection_reqs_rx: diem_channel::Receiver, upstream_handlers: HashMap< ProtocolId, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, >, connection_event_handlers: Vec, @@ -149,7 +149,7 @@ impl PeerManagerContext { fn add_upstream_handler( &mut self, protocol_id: ProtocolId, - channel: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + channel: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, ) -> &mut Self { self.upstream_handlers.insert(protocol_id, channel); self @@ -164,8 +164,8 @@ impl PeerManagerContext { #[cfg(any(test, feature = "testing", feature = "fuzzing"))] type MemoryPeerManager = - PeerManager, NoiseStream>; -type TcpPeerManager = PeerManager, NoiseStream>; + PeerManager, NoiseStream>; +type TcpPeerManager = PeerManager, NoiseStream>; #[derive(Debug, PartialEq, PartialOrd)] enum State { @@ -206,13 +206,13 @@ impl PeerManagerBuilder { inbound_connection_limit: usize, ) -> Self { // Setup channel to send requests to peer manager. - let (pm_reqs_tx, pm_reqs_rx) = libra_channel::new( + let (pm_reqs_tx, pm_reqs_rx) = diem_channel::new( QueueStyle::FIFO, NonZeroUsize::new(channel_size).unwrap(), Some(&counters::PENDING_PEER_MANAGER_REQUESTS), ); // Setup channel to send connection requests to peer manager. - let (connection_reqs_tx, connection_reqs_rx) = libra_channel::new( + let (connection_reqs_tx, connection_reqs_rx) = diem_channel::new( QueueStyle::FIFO, NonZeroUsize::new(channel_size).unwrap(), None, @@ -253,7 +253,7 @@ impl PeerManagerBuilder { self.listen_address.clone() } - pub fn connection_reqs_tx(&self) -> libra_channel::Sender { + pub fn connection_reqs_tx(&self) -> diem_channel::Sender { self.peer_manager_context .as_ref() .expect("Cannot access connection_reqs once PeerManager has been built") @@ -273,7 +273,7 @@ impl PeerManagerBuilder { pub fn build(&mut self, executor: &Handle) -> &mut Self { assert_eq!(self.state, State::CREATED); self.state = State::BUILT; - use libra_network_address::Protocol::*; + use diem_network_address::Protocol::*; let transport_context = self .transport_context @@ -291,8 +291,8 @@ impl PeerManagerBuilder { match self.listen_address.as_slice() { [Ip4(_), Tcp(_)] | [Ip6(_), Tcp(_)] => { self.tcp_peer_manager = Some(self.build_with_transport( - LibraNetTransport::new( - LIBRA_TCP_TRANSPORT.clone(), + DiemNetTransport::new( + DIEM_TCP_TRANSPORT.clone(), self.network_context.clone(), key, maybe_trusted_peers, @@ -307,7 +307,7 @@ impl PeerManagerBuilder { #[cfg(any(test, feature = "testing", feature = "fuzzing"))] [Memory(_)] => { self.memory_peer_manager = Some(self.build_with_transport( - LibraNetTransport::new( + DiemNetTransport::new( MemoryTransport, self.network_context.clone(), key, @@ -405,7 +405,7 @@ impl PeerManagerBuilder { counter: Option<&'static IntCounterVec>, ) -> ( PeerManagerRequestSender, - libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, ConnectionRequestSender, conn_notifs_channel::Receiver, ) { @@ -415,7 +415,7 @@ impl PeerManagerBuilder { .augment_direct_send_protocols(direct_send_protocols.clone()) .augment_rpc_protocols(rpc_protocols.clone()); - let (network_notifs_tx, network_notifs_rx) = libra_channel::new( + let (network_notifs_tx, network_notifs_rx) = diem_channel::new( queue_preference, NonZeroUsize::new(max_queue_size_per_peer).unwrap(), counter, diff --git a/network/src/peer_manager/conn_notifs_channel.rs b/network/src/peer_manager/conn_notifs_channel.rs index fec779fe90..0e213b415f 100644 --- a/network/src/peer_manager/conn_notifs_channel.rs +++ b/network/src/peer_manager/conn_notifs_channel.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! `conn_notifs_channel` is a channel which delivers to the receiver only the last of N @@ -9,24 +9,24 @@ //! and `conn_notifs_channel::Sender` which behave similarly to existing mpsc data structures. use crate::peer_manager::ConnectionNotification; -use channel::{libra_channel, message_queues::QueueStyle}; -use libra_types::PeerId; +use channel::{diem_channel, message_queues::QueueStyle}; +use diem_types::PeerId; use std::num::NonZeroUsize; -pub type Sender = libra_channel::Sender; -pub type Receiver = libra_channel::Receiver; +pub type Sender = diem_channel::Sender; +pub type Receiver = diem_channel::Receiver; pub fn new() -> (Sender, Receiver) { - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None) + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None) } #[cfg(test)] mod test { use super::*; use crate::peer::DisconnectReason; + use diem_config::network_id::NetworkContext; + use diem_network_address::NetworkAddress; use futures::{executor::block_on, future::FutureExt, stream::StreamExt}; - use libra_config::network_id::NetworkContext; - use libra_network_address::NetworkAddress; use netcore::transport::ConnectionOrigin; fn send_new_peer(sender: &mut Sender, peer_id: PeerId) { diff --git a/network/src/peer_manager/error.rs b/network/src/peer_manager/error.rs index fc6f910841..ddaf3f16c4 100644 --- a/network/src/peer_manager/error.rs +++ b/network/src/peer_manager/error.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Errors that originate from the PeerManager module +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::channel::{mpsc, oneshot}; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use thiserror::Error; #[derive(Debug, Error)] diff --git a/network/src/peer_manager/mod.rs b/network/src/peer_manager/mod.rs index 324d796538..990c6c875c 100644 --- a/network/src/peer_manager/mod.rs +++ b/network/src/peer_manager/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The PeerManager module is responsible for establishing connections between Peers and for @@ -25,7 +25,11 @@ use crate::{ }; use anyhow::format_err; use bytes::Bytes; -use channel::{self, libra_channel}; +use channel::{self, diem_channel}; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ channel::oneshot, future::{BoxFuture, FutureExt}, @@ -33,10 +37,6 @@ use futures::{ sink::SinkExt, stream::{Fuse, FuturesUnordered, StreamExt}, }; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use netcore::transport::{ConnectionOrigin, Transport}; use serde::Serialize; use std::{ @@ -124,19 +124,19 @@ impl std::fmt::Display for ConnectionNotification { /// from PeerManager. #[derive(Clone)] pub struct PeerManagerRequestSender { - inner: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, + inner: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, } /// Convenience wrapper which makes it easy to issue connection requests and await the responses /// from PeerManager. #[derive(Clone)] pub struct ConnectionRequestSender { - inner: libra_channel::Sender, + inner: diem_channel::Sender, } impl PeerManagerRequestSender { /// Construct a new PeerManagerRequestSender with a raw channel::Sender - pub fn new(inner: libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>) -> Self { + pub fn new(inner: diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>) -> Self { Self { inner } } @@ -213,8 +213,8 @@ impl PeerManagerRequestSender { } impl ConnectionRequestSender { - /// Construct a new ConnectionRequestSender with a raw libra_channel::Sender - pub fn new(inner: libra_channel::Sender) -> Self { + /// Construct a new ConnectionRequestSender with a raw diem_channel::Sender + pub fn new(inner: diem_channel::Sender) -> Self { Self { inner } } @@ -255,15 +255,15 @@ where PeerId, ( ConnectionMetadata, - libra_channel::Sender, + diem_channel::Sender, ), >, /// Channel to receive requests from other actors. - requests_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + requests_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, /// Upstream handlers for RPC and DirectSend protocols. The handlers are promised fair delivery /// of messages across (PeerId, ProtocolId). upstream_handlers: - HashMap>, + HashMap>, /// Channels to send NewPeer/LostPeer notifications to. connection_event_handlers: Vec, /// Channel used to send Dial requests to the ConnectionHandler actor @@ -271,7 +271,7 @@ where /// Sender for connection events. transport_notifs_tx: channel::Sender>, /// Receiver for connection requests. - connection_reqs_rx: libra_channel::Receiver, + connection_reqs_rx: diem_channel::Receiver, /// Receiver for connection events. transport_notifs_rx: channel::Receiver>, /// A map of outstanding disconnect requests. @@ -303,11 +303,11 @@ where transport: TTransport, network_context: Arc, listen_addr: NetworkAddress, - requests_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, - connection_reqs_rx: libra_channel::Receiver, + requests_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + connection_reqs_rx: diem_channel::Receiver, upstream_handlers: HashMap< ProtocolId, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, >, connection_event_handlers: Vec, channel_size: usize, @@ -367,7 +367,7 @@ where let outbound = total.saturating_sub(inbound); let role = self.network_context.role().as_str(); - counters::LIBRA_NETWORK_PEERS + counters::DIEM_NETWORK_PEERS .with_label_values(&[role, "connected"]) .set(total as i64); @@ -812,7 +812,7 @@ where fn spawn_peer_network_events_handler( &self, peer_id: PeerId, - network_events: libra_channel::Receiver, + network_events: diem_channel::Receiver, ) { let mut upstream_handlers = self.upstream_handlers.clone(); let network_context = self.network_context.clone(); @@ -836,14 +836,14 @@ where peer_id: PeerId, upstream_handlers: &mut HashMap< ProtocolId, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, >, ) { match inbound_event { NetworkNotification::RecvMessage(msg) => { let protocol_id = msg.protocol_id; if let Some(handler) = upstream_handlers.get_mut(&protocol_id) { - // Send over libra channel for fairness. + // Send over diem channel for fairness. if let Err(send_err) = handler.push( (peer_id, protocol_id), PeerManagerNotification::RecvMessage(peer_id, msg), @@ -869,7 +869,7 @@ where NetworkNotification::RecvRpc(rpc_req) => { let protocol_id = rpc_req.protocol_id; if let Some(handler) = upstream_handlers.get_mut(&protocol_id) { - // Send over libra channel for fairness. + // Send over diem channel for fairness. if let Err(err) = handler.push( (peer_id, protocol_id), PeerManagerNotification::RecvRpc(peer_id, rpc_req), diff --git a/network/src/peer_manager/tests.rs b/network/src/peer_manager/tests.rs index 15b233ae46..8ae384e2f4 100644 --- a/network/src/peer_manager/tests.rs +++ b/network/src/peer_manager/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,11 +16,11 @@ use crate::{ transport::{Connection, ConnectionId, ConnectionMetadata}, ProtocolId, }; -use channel::{libra_channel, message_queues::QueueStyle}; +use channel::{diem_channel, message_queues::QueueStyle}; +use diem_config::{config::MAX_INBOUND_CONNECTIONS, network_id::NetworkContext}; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{channel::oneshot, io::AsyncWriteExt, sink::SinkExt, stream::StreamExt}; -use libra_config::{config::MAX_INBOUND_CONNECTIONS, network_id::NetworkContext}; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use memsocket::MemorySocket; use netcore::{ compat::IoCompat, @@ -77,17 +77,17 @@ fn build_test_peer_manager( BoxedTransport, impl std::error::Error + Sync + Send + 'static>, MemorySocket, >, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, - libra_channel::Sender, - libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>, + diem_channel::Sender, + diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, conn_notifs_channel::Receiver, ) { let (peer_manager_request_tx, peer_manager_request_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (connection_reqs_tx, connection_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (hello_tx, hello_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (conn_status_tx, conn_status_rx) = conn_notifs_channel::new(); let peer_manager = PeerManager::new( @@ -229,7 +229,7 @@ fn create_connection( #[test] fn peer_manager_simultaneous_dial_two_inbound() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -277,7 +277,7 @@ fn peer_manager_simultaneous_dial_two_inbound() { #[test] fn peer_manager_simultaneous_dial_inbound_outbound_remote_id_larger() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -326,7 +326,7 @@ fn peer_manager_simultaneous_dial_inbound_outbound_remote_id_larger() { #[test] fn peer_manager_simultaneous_dial_inbound_outbound_own_id_larger() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -375,7 +375,7 @@ fn peer_manager_simultaneous_dial_inbound_outbound_own_id_larger() { #[test] fn peer_manager_simultaneous_dial_outbound_inbound_remote_id_larger() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -424,7 +424,7 @@ fn peer_manager_simultaneous_dial_outbound_inbound_remote_id_larger() { #[test] fn peer_manager_simultaneous_dial_outbound_inbound_own_id_larger() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -473,7 +473,7 @@ fn peer_manager_simultaneous_dial_outbound_inbound_own_id_larger() { #[test] fn peer_manager_simultaneous_dial_two_outbound() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. @@ -560,7 +560,7 @@ fn peer_manager_simultaneous_dial_disconnect_event() { #[test] fn test_dial_disconnect() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut runtime = ::tokio::runtime::Runtime::new().unwrap(); // Create a list of ordered PeerIds so we can ensure how PeerIds will be compared. diff --git a/network/src/protocols/direct_send/mod.rs b/network/src/protocols/direct_send/mod.rs index 0718828829..b440cefb7a 100644 --- a/network/src/protocols/direct_send/mod.rs +++ b/network/src/protocols/direct_send/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Implementation of DirectSend as per Libra wire protocol v1. +//! Implementation of DirectSend as per Diem wire protocol v1. //! //! Design: //! ------- @@ -27,9 +27,9 @@ use crate::{ ProtocolId, }; use bytes::Bytes; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; use futures::{sink::SinkExt, stream::StreamExt}; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; use serde::Serialize; use std::{fmt::Debug, sync::Arc}; diff --git a/network/src/protocols/direct_send/test.rs b/network/src/protocols/direct_send/test.rs index 47c0ee353d..cdbbbcc558 100644 --- a/network/src/protocols/direct_send/test.rs +++ b/network/src/protocols/direct_send/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,10 +13,10 @@ use crate::{ ProtocolId, }; use bytes::Bytes; +use diem_config::network_id::NetworkContext; +use diem_logger::debug; +use diem_types::PeerId; use futures::{sink::SinkExt, stream::StreamExt}; -use libra_config::network_id::NetworkContext; -use libra_logger::debug; -use libra_types::PeerId; use once_cell::sync::Lazy; use serial_test::serial; use std::sync::Arc; @@ -31,8 +31,8 @@ static MESSAGE_2: Lazy> = Lazy::new(|| Vec::from("Direct Send 2")); // surprising counter readings if tests are run in parallel. Since we use counter values in some // test cases, we run tests serially and reset counters in each test. fn reset_counters() { - counters::LIBRA_NETWORK_DIRECT_SEND_BYTES.reset(); - counters::LIBRA_NETWORK_DIRECT_SEND_MESSAGES.reset(); + counters::DIEM_NETWORK_DIRECT_SEND_BYTES.reset(); + counters::DIEM_NETWORK_DIRECT_SEND_MESSAGES.reset(); } fn start_direct_send_actor( @@ -102,7 +102,7 @@ async fn expect_send_message_request( #[test] #[serial] fn test_inbound_msg() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (_network_context, _ds_requests_tx, mut ds_notifs_rx, mut peer_notifs_tx, _peer_reqs_rx) = @@ -182,7 +182,7 @@ fn test_outbound_msg() { #[test] #[serial] fn test_send_failure() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (network_context, mut ds_requests_tx, _ds_notifs_rx, _peer_notifs_tx, mut peer_reqs_rx) = diff --git a/network/src/protocols/health_checker/builder.rs b/network/src/protocols/health_checker/builder.rs index 01ca0574b8..3d8786c531 100644 --- a/network/src/protocols/health_checker/builder.rs +++ b/network/src/protocols/health_checker/builder.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::protocols::health_checker::{ HealthChecker, HealthCheckerNetworkEvents, HealthCheckerNetworkSender, }; +use diem_config::network_id::NetworkContext; use futures::stream::StreamExt; use futures_util::stream::Fuse; -use libra_config::network_id::NetworkContext; use std::{sync::Arc, time::Duration}; use tokio::{ runtime::Handle, diff --git a/network/src/protocols/health_checker/mod.rs b/network/src/protocols/health_checker/mod.rs index fb6ec3877a..bc5f6ec9c4 100644 --- a/network/src/protocols/health_checker/mod.rs +++ b/network/src/protocols/health_checker/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Protocol used to ensure peer liveness @@ -31,14 +31,14 @@ use crate::{ }; use bytes::Bytes; use channel::message_queues::QueueStyle; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; +use diem_metrics::IntCounterVec; +use diem_types::PeerId; use futures::{ channel::oneshot, stream::{FusedStream, FuturesUnordered, Stream, StreamExt}, }; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; -use libra_metrics::IntCounterVec; -use libra_types::PeerId; use rand::{rngs::SmallRng, Rng, SeedableRng}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, sync::Arc, time::Duration}; diff --git a/network/src/protocols/health_checker/test.rs b/network/src/protocols/health_checker/test.rs index 7f0c39eeb5..3cdf853380 100644 --- a/network/src/protocols/health_checker/test.rs +++ b/network/src/protocols/health_checker/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -12,10 +12,10 @@ use crate::{ }, ProtocolId, }; -use channel::{libra_channel, message_queues::QueueStyle}; +use channel::{diem_channel, message_queues::QueueStyle}; +use diem_config::{config::RoleType, network_id::NetworkId}; +use diem_network_address::NetworkAddress; use futures::sink::SinkExt; -use libra_config::{config::RoleType, network_id::NetworkId}; -use libra_network_address::NetworkAddress; use netcore::transport::ConnectionOrigin; use std::{num::NonZeroUsize, str::FromStr}; use tokio::runtime::Runtime; @@ -26,20 +26,20 @@ fn setup_permissive_health_checker( rt: &mut Runtime, ping_failures_tolerated: u64, ) -> ( - libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, - libra_channel::Receiver, + diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Receiver, conn_notifs_channel::Sender, channel::Sender<()>, ) { let (ticker_tx, ticker_rx) = channel::new_test(0); let (peer_mgr_reqs_tx, peer_mgr_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (connection_reqs_tx, connection_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (network_notifs_tx, network_notifs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(1).unwrap(), None); let (connection_notifs_tx, connection_notifs_rx) = conn_notifs_channel::new(); let hc_network_tx = HealthCheckerNetworkSender::new( @@ -70,9 +70,9 @@ fn setup_permissive_health_checker( fn setup_strict_health_checker( rt: &mut Runtime, ) -> ( - libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, - libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, - libra_channel::Receiver, + diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Receiver, conn_notifs_channel::Sender, channel::Sender<()>, ) { @@ -80,7 +80,7 @@ fn setup_strict_health_checker( } async fn expect_ping( - network_reqs_rx: &mut libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + network_reqs_rx: &mut diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, ) -> (Ping, oneshot::Sender>) { let req = network_reqs_rx.next().await.unwrap(); let rpc_req = match req { @@ -101,7 +101,7 @@ async fn expect_ping( } async fn expect_ping_send_ok( - network_reqs_rx: &mut libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + network_reqs_rx: &mut diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, ) { let (ping, res_tx) = expect_ping(network_reqs_rx).await; let res_data = lcs::to_bytes(&HealthCheckerMsg::Pong(Pong(ping.0))).unwrap(); @@ -109,7 +109,7 @@ async fn expect_ping_send_ok( } async fn expect_ping_send_notok( - network_reqs_rx: &mut libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + network_reqs_rx: &mut diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, ) { let (_ping_msg, res_tx) = expect_ping(network_reqs_rx).await; // This mock ping request must fail. @@ -117,7 +117,7 @@ async fn expect_ping_send_notok( } async fn expect_ping_timeout( - network_reqs_rx: &mut libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, + network_reqs_rx: &mut diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerRequest>, ) { let (_ping_msg, _res_tx) = expect_ping(network_reqs_rx).await; // Sleep for ping timeout plus a little bit. @@ -127,7 +127,7 @@ async fn expect_ping_timeout( async fn send_inbound_ping( peer_id: PeerId, ping: u32, - network_notifs_tx: &mut libra_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, + network_notifs_tx: &mut diem_channel::Sender<(PeerId, ProtocolId), PeerManagerNotification>, ) -> oneshot::Receiver> { let protocol_id = ProtocolId::HealthCheckerRpc; let data = lcs::to_bytes(&HealthCheckerMsg::Ping(Ping(ping))) @@ -162,7 +162,7 @@ async fn expect_pong(res_rx: oneshot::Receiver>) { async fn expect_disconnect( expected_peer_id: PeerId, - connection_reqs_rx: &mut libra_channel::Receiver, + connection_reqs_rx: &mut diem_channel::Receiver, ) { let req = connection_reqs_rx.next().await.unwrap(); let (peer_id, res_tx) = match req { @@ -192,7 +192,7 @@ async fn send_new_peer_notification( #[test] fn outbound() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (mut network_reqs_rx, _, _, mut connection_notifs_tx, mut ticker_tx) = setup_strict_health_checker(&mut rt); @@ -216,7 +216,7 @@ fn outbound() { #[test] fn inbound() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (_network_reqs_rx, mut network_notifs_tx, _, mut connection_notifs_tx, _ticker_tx) = setup_strict_health_checker(&mut rt); @@ -237,7 +237,7 @@ fn inbound() { #[test] fn outbound_failure_permissive() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ping_failures_tolerated = 10; let (mut network_reqs_rx, _, mut connection_reqs_rx, mut connection_notifs_tx, mut ticker_tx) = @@ -267,7 +267,7 @@ fn outbound_failure_permissive() { #[test] fn ping_success_resets_fail_counter() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let failures_triggered = 10; let ping_failures_tolerated = 2 * 10; @@ -313,7 +313,7 @@ fn ping_success_resets_fail_counter() { #[test] fn outbound_failure_strict() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (mut network_reqs_rx, _, mut connection_reqs_rx, mut connection_notifs_tx, mut ticker_tx) = setup_strict_health_checker(&mut rt); @@ -340,7 +340,7 @@ fn outbound_failure_strict() { #[test] fn ping_timeout() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (mut network_reqs_rx, _, mut connection_reqs_rx, mut connection_notifs_tx, mut ticker_tx) = setup_strict_health_checker(&mut rt); diff --git a/network/src/protocols/identity.rs b/network/src/protocols/identity.rs index 9909882abb..8a873b16a2 100644 --- a/network/src/protocols/identity.rs +++ b/network/src/protocols/identity.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Protocol used to exchange supported protocol information with a remote. @@ -48,9 +48,9 @@ mod tests { }, ProtocolId, }; + use diem_config::network_id::NetworkId; + use diem_types::chain_id::ChainId; use futures::{executor::block_on, future::join}; - use libra_config::network_id::NetworkId; - use libra_types::chain_id::ChainId; use memsocket::MemorySocket; use std::collections::BTreeMap; diff --git a/network/src/protocols/mod.rs b/network/src/protocols/mod.rs index 7542a43951..6a6398b523 100644 --- a/network/src/protocols/mod.rs +++ b/network/src/protocols/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Protocols used by network module for external APIs and internal functionality diff --git a/network/src/protocols/network/mod.rs b/network/src/protocols/network/mod.rs index 83c2797296..2ca494b57f 100644 --- a/network/src/protocols/network/mod.rs +++ b/network/src/protocols/network/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Convenience Network API for Libra +//! Convenience Network API for Diem pub use crate::protocols::rpc::error::RpcError; use crate::{ @@ -13,16 +13,16 @@ use crate::{ ProtocolId, }; use bytes::Bytes; -use channel::libra_channel; +use channel::diem_channel; +use diem_logger::prelude::*; +use diem_network_address::NetworkAddress; +use diem_types::PeerId; use futures::{ channel::oneshot, future, stream::{FilterMap, FusedStream, Map, Select, Stream, StreamExt}, task::{Context, Poll}, }; -use libra_logger::prelude::*; -use libra_network_address::NetworkAddress; -use libra_types::PeerId; use netcore::transport::ConnectionOrigin; use pin_project::pin_project; use serde::{de::DeserializeOwned, Serialize}; @@ -83,12 +83,12 @@ pub struct NetworkEvents { #[pin] event_stream: Select< FilterMap< - libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, + diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, future::Ready>>, fn(PeerManagerNotification) -> future::Ready>>, >, Map< - libra_channel::Receiver, + diem_channel::Receiver, fn(ConnectionNotification) -> Event, >, >, @@ -98,15 +98,15 @@ pub struct NetworkEvents { /// Trait specifying the signature for `new()` `NetworkEvents` pub trait NewNetworkEvents { fn new( - peer_mgr_notifs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, - connection_notifs_rx: libra_channel::Receiver, + peer_mgr_notifs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, + connection_notifs_rx: diem_channel::Receiver, ) -> Self; } impl NewNetworkEvents for NetworkEvents { fn new( - peer_mgr_notifs_rx: libra_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, - connection_notifs_rx: libra_channel::Receiver, + peer_mgr_notifs_rx: diem_channel::Receiver<(PeerId, ProtocolId), PeerManagerNotification>, + connection_notifs_rx: diem_channel::Receiver, ) -> Self { let data_event_stream = peer_mgr_notifs_rx.filter_map( peer_mgr_notif_to_event @@ -197,7 +197,7 @@ impl FusedStream for NetworkEvents { /// keys. /// /// `NetworkSender` is in fact a thin wrapper around a `PeerManagerRequestSender`, which in turn is -/// a thin wrapper on `libra_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>`, +/// a thin wrapper on `diem_channel::Sender<(PeerId, ProtocolId), PeerManagerRequest>`, /// mostly focused on providing a more ergonomic API. However, network applications will usually /// provide their own thin wrapper around `NetworkSender` that narrows the API to the specific /// interface they need. For instance, `mempool` only requires direct-send functionality so its diff --git a/network/src/protocols/rpc/error.rs b/network/src/protocols/rpc/error.rs index 9c25ac6c89..b8e896dcf7 100644 --- a/network/src/protocols/rpc/error.rs +++ b/network/src/protocols/rpc/error.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Rpc protocol errors use crate::peer_manager::PeerManagerError; use anyhow::anyhow; +use diem_types::PeerId; use futures::channel::{mpsc, oneshot}; -use libra_types::PeerId; use std::io; use thiserror::Error; diff --git a/network/src/protocols/rpc/fuzzing.rs b/network/src/protocols/rpc/fuzzing.rs index 08f27bf5aa..f6d2c4cc8c 100644 --- a/network/src/protocols/rpc/fuzzing.rs +++ b/network/src/protocols/rpc/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,13 +10,13 @@ use crate::{ transport::ConnectionMetadata, ProtocolId, }; +use diem_config::network_id::NetworkContext; +use diem_proptest_helpers::ValueGenerator; +use diem_types::PeerId; use futures::{ future::{self, FutureExt}, stream::StreamExt, }; -use libra_config::network_id::NetworkContext; -use libra_proptest_helpers::ValueGenerator; -use libra_types::PeerId; use proptest::{arbitrary::any, collection::vec, prop_oneof, strategy::Strategy}; use std::io; use tokio::runtime; diff --git a/network/src/protocols/rpc/mod.rs b/network/src/protocols/rpc/mod.rs index 4764c119d1..758f701a25 100644 --- a/network/src/protocols/rpc/mod.rs +++ b/network/src/protocols/rpc/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! Implementation of the RPC protocol as per Libra wire protocol v1. +//! Implementation of the RPC protocol as per Diem wire protocol v1. //! //! Design: //! ------- @@ -55,6 +55,9 @@ use crate::{ ProtocolId, }; use bytes::Bytes; +use diem_config::network_id::NetworkContext; +use diem_logger::prelude::*; +use diem_types::PeerId; use error::RpcError; use futures::{ channel::oneshot, @@ -63,9 +66,6 @@ use futures::{ stream::{FuturesUnordered, StreamExt}, task::Context, }; -use libra_config::network_id::NetworkContext; -use libra_logger::prelude::*; -use libra_types::PeerId; use serde::Serialize; use std::{collections::HashMap, fmt::Debug, sync::Arc, time::Duration}; diff --git a/network/src/protocols/rpc/test.rs b/network/src/protocols/rpc/test.rs index 429bbbf169..57ce547e35 100644 --- a/network/src/protocols/rpc/test.rs +++ b/network/src/protocols/rpc/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // // NB: We run all tests serially because some tests need to inspect counters to verify certain code @@ -14,9 +14,9 @@ use crate::{ transport::ConnectionMetadata, }; use anyhow::anyhow; +use diem_config::network_id::NetworkContext; +use diem_types::PeerId; use futures::future::join; -use libra_config::network_id::NetworkContext; -use libra_types::PeerId; use serial_test::serial; use std::sync::Arc; use tokio::runtime::{Handle, Runtime}; @@ -25,8 +25,8 @@ static RPC_PROTOCOL_A: ProtocolId = ProtocolId::ConsensusRpc; static RPC_PROTOCOL_B: ProtocolId = ProtocolId::HealthCheckerRpc; fn reset_counters() { - counters::LIBRA_NETWORK_RPC_MESSAGES.reset(); - counters::LIBRA_NETWORK_RPC_BYTES.reset(); + counters::DIEM_NETWORK_RPC_MESSAGES.reset(); + counters::DIEM_NETWORK_RPC_BYTES.reset(); } fn start_rpc_actor( @@ -164,7 +164,7 @@ fn create_network_response(request_id: RequestId, raw_response: Bytes) -> Networ #[test] #[serial] fn outbound_rpc_success() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( @@ -222,7 +222,7 @@ fn outbound_rpc_success() { #[test] #[serial] fn outbound_rpc_concurrent() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( @@ -315,7 +315,7 @@ fn outbound_rpc_concurrent() { #[test] #[serial] fn outbound_rpc_timeout() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (_network_context, mut rpc_requests_tx, _rpc_notifs_rx, mut peer_reqs_rx, _peer_notifs_tx) = @@ -357,7 +357,7 @@ fn outbound_rpc_timeout() { #[test] #[serial] fn outbound_cancellation_before_send() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (network_context, mut rpc_requests_tx, _rpc_notifs_rx, _peer_reqs_rx, _peer_notifs_tx) = @@ -395,7 +395,7 @@ fn outbound_cancellation_before_send() { #[test] #[serial] fn outbound_cancellation_before_recv() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (network_context, mut rpc_requests_tx, _rpc_notifs_rx, mut peer_reqs_rx, _peer_notifs_tx) = @@ -439,7 +439,7 @@ fn outbound_cancellation_before_recv() { #[test] #[serial] fn outbound_rpc_failed_request_delivery() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (_network_context, mut rpc_requests_tx, _rpc_notifs_rx, mut peer_reqs_rx, _peer_notifs_tx) = @@ -477,7 +477,7 @@ fn outbound_rpc_failed_request_delivery() { #[test] #[serial] fn inbound_rpc_success() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( @@ -528,7 +528,7 @@ fn inbound_rpc_success() { #[test] #[serial] fn inbound_rpc_concurrent() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( @@ -609,7 +609,7 @@ fn inbound_rpc_concurrent() { #[test] #[serial] fn inbound_rpc_timeout() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (network_context, _rpc_requests_tx, _rpc_notifs_rx, _peer_reqs_rx, mut peer_notifs_tx) = @@ -641,7 +641,7 @@ fn inbound_rpc_timeout() { #[test] #[serial] fn inbound_rpc_failed_response_delivery() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( @@ -697,7 +697,7 @@ fn inbound_rpc_failed_response_delivery() { #[test] #[serial] fn inbound_rpc_failed_upstream_delivery() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let (network_context, _rpc_requests_tx, rpc_notifs_rx, _peer_reqs_rx, mut peer_notifs_tx) = @@ -731,7 +731,7 @@ fn inbound_rpc_failed_upstream_delivery() { #[test] #[serial] fn concurrent_inbound_outbound() { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let mut rt = Runtime::new().unwrap(); let ( diff --git a/network/src/protocols/wire/handshake.rs b/network/src/protocols/wire/handshake.rs index 313312905f..3d76414ae7 100644 --- a/network/src/protocols/wire/handshake.rs +++ b/network/src/protocols/wire/handshake.rs @@ -1,5 +1,5 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -// v1 of the LibraNet handshake protocol. +// v1 of the DiemNet handshake protocol. pub mod v1; diff --git a/network/src/protocols/wire/handshake/v1/mod.rs b/network/src/protocols/wire/handshake/v1/mod.rs index c5c923bf63..4b88714f1d 100644 --- a/network/src/protocols/wire/handshake/v1/mod.rs +++ b/network/src/protocols/wire/handshake/v1/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the structs transported during the network handshake protocol v1. @@ -10,8 +10,8 @@ //! supported over that messaging protocol. On receipt, both ends will determine the highest //! intersecting messaging protocol version and use that for the remainder of the session. -use libra_config::network_id::NetworkId; -use libra_types::chain_id::ChainId; +use diem_config::network_id::NetworkId; +use diem_types::chain_id::ChainId; use serde::{export::Formatter, Deserialize, Serialize}; use std::{collections::BTreeMap, convert::TryInto, fmt, iter::Iterator}; use thiserror::Error; @@ -109,7 +109,7 @@ impl SupportedProtocols { // MessageProtocolVersion // -/// Enum representing different versions of the Libra network protocol. These should be listed from +/// Enum representing different versions of the Diem network protocol. These should be listed from /// old to new, old having the smallest value. /// We derive `PartialOrd` since nodes need to find highest intersecting protocol version. #[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Copy, Hash, Deserialize, Serialize)] @@ -140,16 +140,16 @@ impl fmt::Display for MessagingProtocolVersion { // HandshakeMsg // -/// An enum to list the possible errors during the libra handshake negotiation +/// An enum to list the possible errors during the diem handshake negotiation #[derive(Debug, Error)] pub enum HandshakeError { - #[error("libra-handshake: the received message has a different chain id: {0}, expected: {1}")] + #[error("diem-handshake: the received message has a different chain id: {0}, expected: {1}")] InvalidChainId(ChainId, ChainId), #[error( - "libra-handshake: the received message has an different network id: {0}, expected: {1}" + "diem-handshake: the received message has an different network id: {0}, expected: {1}" )] InvalidNetworkId(NetworkId, NetworkId), - #[error("libra-handshake: could not find an intersection of supported protocol with the peer")] + #[error("diem-handshake: could not find an intersection of supported protocol with the peer")] NoCommonProtocols, } diff --git a/network/src/protocols/wire/handshake/v1/test.rs b/network/src/protocols/wire/handshake/v1/test.rs index 43e849566e..b178b0996e 100644 --- a/network/src/protocols/wire/handshake/v1/test.rs +++ b/network/src/protocols/wire/handshake/v1/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/network/src/protocols/wire/messaging.rs b/network/src/protocols/wire/messaging.rs index 3938a017ad..fe9488db1d 100644 --- a/network/src/protocols/wire/messaging.rs +++ b/network/src/protocols/wire/messaging.rs @@ -1,5 +1,5 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -// v1 of the LibraNet messaging protocol. +// v1 of the DiemNet messaging protocol. pub mod v1; diff --git a/network/src/protocols/wire/messaging/v1/mod.rs b/network/src/protocols/wire/messaging/v1/mod.rs index 680ee8451e..b0c22b5576 100644 --- a/network/src/protocols/wire/messaging/v1/mod.rs +++ b/network/src/protocols/wire/messaging/v1/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the structs transported during the network messaging protocol v1. diff --git a/network/src/protocols/wire/messaging/v1/test.rs b/network/src/protocols/wire/messaging/v1/test.rs index 2e040430bc..70d44312dc 100644 --- a/network/src/protocols/wire/messaging/v1/test.rs +++ b/network/src/protocols/wire/messaging/v1/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/network/src/protocols/wire/mod.rs b/network/src/protocols/wire/mod.rs index ac6e619268..cd149b335d 100644 --- a/network/src/protocols/wire/mod.rs +++ b/network/src/protocols/wire/mod.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This module defines the structs transported during the LibraNet handshake protocol and -//! the LibraNet messaging protocol. +//! This module defines the structs transported during the DiemNet handshake protocol and +//! the DiemNet messaging protocol. //! The handshake protocol is executed prior to executing the messaging protocol, and is used to //! determine the version of messaging protocol to use. Each node only supports one version of the //! handshake protocol on an end-point, and that is advertised as part of its discovery diff --git a/network/src/testutils/fake_socket.rs b/network/src/testutils/fake_socket.rs index 322b79bea7..94dd00b100 100644 --- a/network/src/testutils/fake_socket.rs +++ b/network/src/testutils/fake_socket.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! diff --git a/network/src/testutils/mod.rs b/network/src/testutils/mod.rs index 5a874bb64d..e100cfa7fb 100644 --- a/network/src/testutils/mod.rs +++ b/network/src/testutils/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod fake_socket; diff --git a/network/src/transport/mod.rs b/network/src/transport/mod.rs index d317620c9f..a8f3f98cc3 100644 --- a/network/src/transport/mod.rs +++ b/network/src/transport/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,20 +9,20 @@ use crate::{ wire::handshake::v1::{HandshakeMsg, MessagingProtocolVersion, SupportedProtocols}, }, }; +use diem_config::{ + config::HANDSHAKE_VERSION, + network_id::{NetworkContext, NetworkId}, +}; +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_logger::prelude::*; +use diem_network_address::{parse_dns_tcp, parse_ip_tcp, parse_memory, NetworkAddress}; +use diem_types::{chain_id::ChainId, PeerId}; use futures::{ future::{Future, FutureExt}, io::{AsyncRead, AsyncWrite}, stream::{Stream, StreamExt, TryStreamExt}, }; -use libra_config::{ - config::HANDSHAKE_VERSION, - network_id::{NetworkContext, NetworkId}, -}; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_logger::prelude::*; -use libra_network_address::{parse_dns_tcp, parse_ip_tcp, parse_memory, NetworkAddress}; -use libra_types::{chain_id::ChainId, PeerId}; use netcore::transport::{proxy_protocol, tcp, ConnectionOrigin, Transport}; use serde::{export::Formatter, Serialize}; use std::{ @@ -52,14 +52,14 @@ pub const SUPPORTED_MESSAGING_PROTOCOL: MessagingProtocolVersion = MessagingProt /// Global connection-id generator. static CONNECTION_ID_GENERATOR: ConnectionIdGenerator = ConnectionIdGenerator::new(); -/// tcp::Transport with Libra-specific configuration applied. -pub const LIBRA_TCP_TRANSPORT: tcp::TcpTransport = tcp::TcpTransport { +/// tcp::Transport with Diem-specific configuration applied. +pub const DIEM_TCP_TRANSPORT: tcp::TcpTransport = tcp::TcpTransport { // Use default options. recv_buffer_size: None, send_buffer_size: None, ttl: None, keepalive: None, - // Use TCP_NODELAY for libra tcp connections. + // Use TCP_NODELAY for diem tcp connections. nodelay: Some(true), }; @@ -262,7 +262,7 @@ async fn upgrade_inbound( .await .map_err(|err| add_pp_addr(proxy_protocol_enabled, err, &addr))?; - // try to negotiate common libranet version and supported application protocols + // try to negotiate common diemnet version and supported application protocols let (messaging_protocol, application_protocols) = handshake_msg .perform_handshake(&remote_handshake) .map_err(|err| { @@ -336,7 +336,7 @@ async fn upgrade_outbound( }; let remote_handshake = exchange_handshake(&handshake_msg, &mut socket).await?; - // try to negotiate common libranet version and supported application protocols + // try to negotiate common diemnet version and supported application protocols let (messaging_protocol, application_protocols) = handshake_msg .perform_handshake(&remote_handshake) .map_err(|e| { @@ -361,7 +361,7 @@ async fn upgrade_outbound( }) } -/// The common LibraNet Transport. +/// The common DiemNet Transport. /// /// The base transport layer is pluggable, so long as it provides a reliable, /// ordered, connection-oriented, byte-stream abstraction (e.g., TCP). We currently @@ -373,14 +373,14 @@ async fn upgrade_outbound( /// the `Handshake` protocol. // TODO(philiphayes): rework Transport trait, possibly include Upgrade trait. // ideas in this PR thread: https://github.com/libra/libra/pull/3478#issuecomment-617385633 -pub struct LibraNetTransport { +pub struct DiemNetTransport { base_transport: TTransport, ctxt: Arc, identity_pubkey: x25519::PublicKey, enable_proxy_protocol: bool, } -impl LibraNetTransport +impl DiemNetTransport where TTransport: Transport, TTransport::Output: TSocket, @@ -430,7 +430,7 @@ where fn parse_dial_addr( addr: &NetworkAddress, ) -> io::Result<(NetworkAddress, x25519::PublicKey, u8)> { - use libra_network_address::Protocol::*; + use diem_network_address::Protocol::*; let protos = addr.as_slice(); @@ -453,7 +453,7 @@ where ) })?; - // parse out the libranet protocols (noise ik and handshake) + // parse out the diemnet protocols (noise ik and handshake) match base_transport_suffix { [NoiseIK(pubkey), Handshake(version)] => { let base_addr = NetworkAddress::try_from(base_transport_protos.to_vec()) @@ -500,7 +500,7 @@ where ) -> io::Result< impl Future>>> + Send + 'static, > { - // parse libranet protocols + // parse diemnet protocols // TODO(philiphayes): `Transport` trait should include parsing in `dial`? let (base_addr, pubkey, handshake_version) = Self::parse_dial_addr(&addr)?; @@ -584,14 +584,14 @@ where } } -// If using `LibraNetTransport` as a `Transport` trait, then all upgrade futures +// If using `DiemNetTransport` as a `Transport` trait, then all upgrade futures // and listening streams must be boxed, since `upgrade_inbound` and `upgrade_outbound` // are async fns (and therefore unnamed types). // // TODO(philiphayes): We can change these `Pin>> to `impl Future<..>` // when/if this rust feature is stabilized: https://github.com/rust-lang/rust/issues/63063 -impl Transport for LibraNetTransport +impl Transport for DiemNetTransport where TTransport: Transport + Send + 'static, TTransport::Output: TSocket, diff --git a/network/src/transport/test.rs b/network/src/transport/test.rs index c5e4d64b47..63edc6ea98 100644 --- a/network/src/transport/test.rs +++ b/network/src/transport/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,12 +6,12 @@ use crate::{ transport::*, }; use bytes::{Bytes, BytesMut}; +use diem_config::{config::HANDSHAKE_VERSION, network_id::NetworkContext}; +use diem_crypto::{test_utils::TEST_SEED, traits::Uniform, x25519}; +use diem_infallible::RwLock; +use diem_network_address::{NetworkAddress, Protocol::*}; +use diem_types::{chain_id::ChainId, PeerId}; use futures::{future, io::AsyncWriteExt, stream::StreamExt}; -use libra_config::{config::HANDSHAKE_VERSION, network_id::NetworkContext}; -use libra_crypto::{test_utils::TEST_SEED, traits::Uniform, x25519}; -use libra_infallible::RwLock; -use libra_network_address::{NetworkAddress, Protocol::*}; -use libra_types::{chain_id::ChainId, PeerId}; use netcore::{ framing::{read_u16frame, write_u16frame}, transport::{memory, ConnectionOrigin, Transport}, @@ -50,8 +50,8 @@ fn setup( auth: Auth, ) -> ( Runtime, - (PeerId, LibraNetTransport), - (PeerId, LibraNetTransport), + (PeerId, DiemNetTransport), + (PeerId, DiemNetTransport), Option>>>>, SupportedProtocols, ) @@ -90,7 +90,7 @@ where [ProtocolId::ConsensusRpc, ProtocolId::DiscoveryDirectSend].iter(), ); let chain_id = ChainId::default(); - let listener_transport = LibraNetTransport::new( + let listener_transport = DiemNetTransport::new( base_transport.clone(), NetworkContext::mock_with_peer_id(listener_peer_id), listener_key, @@ -101,7 +101,7 @@ where false, /* Disable proxy protocol */ ); - let dialer_transport = LibraNetTransport::new( + let dialer_transport = DiemNetTransport::new( base_transport, NetworkContext::mock_with_peer_id(dialer_peer_id), dialer_key, @@ -294,7 +294,7 @@ fn test_transport_rejects_unauthed_dialer( } //////////////////////////////////////// -// LibraNetTransport // +// DiemNetTransport // //////////////////////////////////////// #[test] @@ -327,13 +327,13 @@ fn test_memory_transport_rejects_unauthed_dialer() { } ///////////////////////////////////// -// LibraNetTransport // +// DiemNetTransport // ///////////////////////////////////// #[test] fn test_tcp_transport_mutual_auth() { test_transport_success( - LIBRA_TCP_TRANSPORT.clone(), + DIEM_TCP_TRANSPORT.clone(), Auth::Mutual, "/ip4/127.0.0.1/tcp/0", expect_ip4_tcp_noise_addr, @@ -343,7 +343,7 @@ fn test_tcp_transport_mutual_auth() { #[test] fn test_tcp_transport_server_only_auth() { test_transport_success( - LIBRA_TCP_TRANSPORT.clone(), + DIEM_TCP_TRANSPORT.clone(), Auth::ServerOnly, "/ip4/127.0.0.1/tcp/0", expect_ip4_tcp_noise_addr, @@ -353,7 +353,7 @@ fn test_tcp_transport_server_only_auth() { #[test] fn test_tcp_transport_rejects_unauthed_dialer() { test_transport_rejects_unauthed_dialer( - LIBRA_TCP_TRANSPORT.clone(), + DIEM_TCP_TRANSPORT.clone(), "/ip4/127.0.0.1/tcp/0", expect_ip4_tcp_noise_addr, ); diff --git a/scripts/cargo_check_dependencies.sh b/scripts/cargo_check_dependencies.sh index 1ecb197b06..182a2856c8 100755 --- a/scripts/cargo_check_dependencies.sh +++ b/scripts/cargo_check_dependencies.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # This script assumes it runs in the same directory as a Cargo.toml file diff --git a/scripts/cargo_update_outdated.sh b/scripts/cargo_update_outdated.sh index 4ba1b5ea4d..d594c6ebf3 100755 --- a/scripts/cargo_update_outdated.sh +++ b/scripts/cargo_update_outdated.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # This script modifies local cargo files to reflect compatibility (semver) @@ -9,8 +9,8 @@ # It requires cargo-edit and cargo-outdated # Example usage: -# libra$ ./scripts/cargo_update_outdated.sh -# libra$ git commit --all -m "Update dependencies" +# diem$ ./scripts/cargo_update_outdated.sh +# diem$ git commit --all -m "Update dependencies" set -e # check install for outdated & edit diff --git a/scripts/changed-files.sh b/scripts/changed-files.sh index 51d9b0c5a0..9e6192368c 100755 --- a/scripts/changed-files.sh +++ b/scripts/changed-files.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e diff --git a/scripts/cli/start_cli_swarm.sh b/scripts/cli/start_cli_swarm.sh index 9e5183456f..07ada21b17 100755 --- a/scripts/cli/start_cli_swarm.sh +++ b/scripts/cli/start_cli_swarm.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 print_help() @@ -7,7 +7,7 @@ print_help() echo "Build spawn a local swarm and open the CLI." echo "\`$0 -r|--release\` to use release build or" echo "\`$0\` to use debug build." - echo "Use -- to pass arguments directly to libra-swarm." + echo "Use -- to pass arguments directly to diem-swarm." } source "$HOME/.cargo/env" @@ -35,6 +35,6 @@ done echo "Building and running swarm in $RELEASE mode with the following flags: $FLAGS" -cargo build -p libra-node $FLAGS +cargo build -p diem-node $FLAGS cargo build -p cli $FLAGS -cargo run -p libra-swarm -- -s --libra-node $SCRIPT_PATH/../../target/$RELEASE/libra-node --cli-path $SCRIPT_PATH/../../target/$RELEASE/cli "$@" +cargo run -p diem-swarm -- -s --diem-node $SCRIPT_PATH/../../target/$RELEASE/diem-node --cli-path $SCRIPT_PATH/../../target/$RELEASE/cli "$@" diff --git a/scripts/cli/start_cli_testnet.sh b/scripts/cli/start_cli_testnet.sh index 7850ce6f07..fe07a9b5aa 100755 --- a/scripts/cli/start_cli_testnet.sh +++ b/scripts/cli/start_cli_testnet.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 print_help() @@ -13,7 +13,7 @@ source "$HOME/.cargo/env" SCRIPT_PATH="$(dirname $0)" -RUN_PARAMS="--url https://testnet.libra.org/v1 --waypoint_url https://testnet.libra.org/waypoint.txt --chain-id TESTNET" +RUN_PARAMS="--url https://testnet.diem.com/v1 --waypoint_url https://testnet.diem.com/waypoint.txt --chain-id TESTNET" RELEASE="" while [[ ! -z "$1" ]]; do diff --git a/scripts/cluster_test_pod_template.yaml b/scripts/cluster_test_pod_template.yaml index c0979e8e31..9c9718b999 100644 --- a/scripts/cluster_test_pod_template.yaml +++ b/scripts/cluster_test_pod_template.yaml @@ -15,7 +15,7 @@ spec: effect: "NoSchedule" containers: - name: main - image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/libra/cluster_test:{cluster_test_image_tag} + image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/diem/cluster_test:{cluster_test_image_tag} imagePullPolicy: Always env: [{env_variables}] command: [timeout, "{timeout_secs}", cluster-test, --deploy={image_tag} {extra_args}] diff --git a/scripts/ct-k8s-status.sh b/scripts/ct-k8s-status.sh index 1aade80f40..7e5cd497e3 100755 --- a/scripts/ct-k8s-status.sh +++ b/scripts/ct-k8s-status.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -euo pipefail diff --git a/scripts/cti b/scripts/cti index c68d53ac59..6f5876df62 100755 --- a/scripts/cti +++ b/scripts/cti @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 set -e set -o pipefail diff --git a/scripts/dev_setup.sh b/scripts/dev_setup.sh index 06fdd23848..134e76440c 100755 --- a/scripts/dev_setup.sh +++ b/scripts/dev_setup.sh @@ -1,7 +1,7 @@ #!/bin/bash -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 -# This script sets up the environment for the Libra build by installing necessary dependencies. +# This script sets up the environment for the Diem build by installing necessary dependencies. # # Usage ./dev_setup.sh # v - verbose, print all statements @@ -37,7 +37,7 @@ function usage { echo "-y installs or updates Move prover tools: z3, dotnet, boogie" echo "-v verbose mode" echo "If no toolchain component is selected with -t, -o, -y, or -p, the behavior is as if -t had been provided." - echo "This command must be called from the root folder of the Libra project." + echo "This command must be called from the root folder of the Diem project." } function add_to_profile { @@ -391,10 +391,10 @@ function install_z3 { function welcome_message { cat <"] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" description = "A Lightweight and Secure JSON RPC Client" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -18,10 +18,10 @@ thiserror = "1.0.22" ureq = { version = "1.5.2", features = ["json", "native-tls"], default-features = false } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] anyhow = "1.0.34" @@ -29,14 +29,14 @@ futures = "0.3.8" proptest = "0.10.1" tokio = { version = "0.2.22", features = ["full"] } -libra-config = { path = "../../config", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0"} -libra-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } -libradb = { path = "../../storage/libradb", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0"} +diem-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diemdb = { path = "../../storage/diemdb", version = "0.1.0" } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } vm-validator = { path = "../../vm-validator", version = "0.1.0" } [features] -fuzzing = ["proptest", "libra-proptest-helpers"] +fuzzing = ["proptest", "diem-proptest-helpers"] diff --git a/secure/json-rpc/README.md b/secure/json-rpc/README.md index d0feb2f0c5..9c300fbc44 100644 --- a/secure/json-rpc/README.md +++ b/secure/json-rpc/README.md @@ -6,11 +6,11 @@ custom_edit_url: https://github.com/libra/libra/edit/master/secure/json-rpc/READ # Secure JSON RPC The secure JSON RPC crate provides a lightweight and minimal JSON RPC client to talk to -the JSON RPC service offered by Libra nodes. This is useful for various security-critical -components (e.g., the key manager), as it allows interaction with the Libra blockchain in a +the JSON RPC service offered by Diem nodes. This is useful for various security-critical +components (e.g., the key manager), as it allows interaction with the Diem blockchain in a lightweight manner. -Note: while a JSON RPC client implementation already exists in the Libra codebase, this +Note: while a JSON RPC client implementation already exists in the Diem codebase, this aims to provide a simpler implementation with fewer dependencies. ## Overview diff --git a/secure/json-rpc/src/lib.rs b/secure/json-rpc/src/lib.rs index b30a09798c..4f5b855864 100644 --- a/secure/json-rpc/src/lib.rs +++ b/secure/json-rpc/src/lib.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The purpose of the JsonRpcClient presented here is to provide a lightweight and secure -//! JSON RPC client to talk to the JSON RPC service offered by Libra Full Nodes. This is useful +//! JSON RPC client to talk to the JSON RPC service offered by Diem Full Nodes. This is useful //! for various security-critical components (e.g., the secure key manager), as it allows -//! interaction with the Libra blockchain in a minimal and secure manner. +//! interaction with the Diem blockchain in a minimal and secure manner. //! -//! Note: While a JSON RPC client implementation already exists in the Libra codebase, this +//! Note: While a JSON RPC client implementation already exists in the Diem codebase, this //! provides a simpler and (hopefully) more secure implementation with fewer dependencies. #![forbid(unsafe_code)] -use hex::FromHexError; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_state::AccountState, account_state_blob::AccountStateBlob, transaction::SignedTransaction, }; +use hex::FromHexError; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; use std::{convert::TryFrom, env, io}; @@ -74,7 +74,7 @@ impl JsonRpcClient { Self { host } } - /// Submits a signed transaction to the Libra blockchain. This is done by sending a submit() + /// Submits a signed transaction to the Diem blockchain. This is done by sending a submit() /// request to the JSON RPC server using the given transaction. pub fn submit_transaction(&self, signed_transaction: SignedTransaction) -> Result<(), Error> { let method = "submit".into(); @@ -385,11 +385,10 @@ impl From<&Vec> for Bytes { mod test { use super::*; use anyhow::Result; - use futures::{channel::mpsc::channel, StreamExt}; - use libra_config::utils; - use libra_crypto::HashValue; - use libra_json_rpc::test_bootstrap; - use libra_types::{ + use diem_config::utils; + use diem_crypto::HashValue; + use diem_json_rpc::test_bootstrap; + use diem_types::{ account_address::AccountAddress, account_state_blob::{AccountStateBlob, AccountStateWithProof}, block_info::BlockInfo, @@ -401,7 +400,8 @@ mod test { proof::{AccumulatorConsistencyProof, SparseMerkleProof}, transaction::{TransactionListWithProof, TransactionWithProof, Version}, }; - use libradb::errors::LibraDbError::NotFound; + use diemdb::errors::DiemDbError::NotFound; + use futures::{channel::mpsc::channel, StreamExt}; use std::{collections::BTreeMap, sync::Arc}; use storage_interface::{DbReader, Order, StartupInfo, TreeState}; use tokio::runtime::Runtime; @@ -448,7 +448,7 @@ mod test { map.insert(account, account_state_with_proof); // Populate the test database with the test data and create the client/server - let mock_db = MockLibraDB::new(map); + let mock_db = MockDiemDB::new(map); let (client, _server) = create_client_and_server(mock_db, true); // Ensure the client returns the correct AccountState @@ -470,7 +470,7 @@ mod test { map.insert(account, account_state_with_proof); // Populate the test database with the test data and create the client/server - let mock_db = MockLibraDB::new(map); + let mock_db = MockDiemDB::new(map); let (client, _server) = create_client_and_server(mock_db, true); // Ensure the client returns the latest AccountState (even though no version was specified) @@ -504,7 +504,7 @@ mod test { map.insert(account, account_state_with_proof); // Populate the test database with the test data and create the client/server - let mock_db = MockLibraDB::new(map); + let mock_db = MockDiemDB::new(map); let (client, _server) = create_client_and_server(mock_db, true); // Ensure the client returns an error for the missing AccountState @@ -516,7 +516,7 @@ mod test { /// and the server is a JSON server that serves the JSON RPC requests. The server communicates /// with the given database to handle each JSON RPC request. If mock_validator is set to true, /// the server is also given a mock vm validator to validate any submitted transactions. - fn create_client_and_server(db: MockLibraDB, mock_validator: bool) -> (JsonRpcClient, Runtime) { + fn create_client_and_server(db: MockDiemDB, mock_validator: bool) -> (JsonRpcClient, Runtime) { let address = "0.0.0.0"; let port = utils::get_available_port(); let host = format!("{}:{}", address, port); @@ -545,18 +545,18 @@ mod test { } /// Returns an empty mock database for testing. - fn create_empty_mock_db() -> MockLibraDB { - MockLibraDB::new(BTreeMap::new()) + fn create_empty_mock_db() -> MockDiemDB { + MockDiemDB::new(BTreeMap::new()) } - // This offers a simple mock of LibraDB for testing. + // This offers a simple mock of DiemDB for testing. #[derive(Clone)] - pub struct MockLibraDB { + pub struct MockDiemDB { account_states_with_proof: BTreeMap, } - /// A mock libra database for test purposes. - impl MockLibraDB { + /// A mock diem database for test purposes. + impl MockDiemDB { pub fn new( account_states_with_proof: BTreeMap, ) -> Self { @@ -568,7 +568,7 @@ mod test { /// We only require implementing a subset of these API calls for testing purposes. To keep /// our code as minimal as possible, the unimplemented API calls simply return an error. - impl DbReader for MockLibraDB { + impl DbReader for MockDiemDB { fn get_transactions( &self, _start_version: u64, @@ -692,8 +692,8 @@ pub mod fuzzing { AccountStateResponse, AccountStateWithProofResponse, Bytes, SubmitTransactionResponse, TransactionView, TransactionViewResponse, VMStatusView, }; - use libra_proptest_helpers::Index; - use libra_types::proptest_types::{arb_json_value, AccountInfoUniverse, AccountStateBlobGen}; + use diem_proptest_helpers::Index; + use diem_types::proptest_types::{arb_json_value, AccountInfoUniverse, AccountStateBlobGen}; use proptest::prelude::*; use ureq::Response; @@ -823,8 +823,8 @@ pub mod fuzzing { #[cfg(test)] mod test_helpers { - use libra_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; - use libra_types::{ + use diem_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; + use diem_types::{ account_address::AccountAddress, account_config::{AccountResource, BalanceResource}, account_state::AccountState, diff --git a/secure/key-manager/Cargo.toml b/secure/key-manager/Cargo.toml index fa66934a85..e16ceef7fa 100644 --- a/secure/key-manager/Cargo.toml +++ b/secure/key-manager/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "libra-key-manager" +name = "diem-key-manager" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra Key Manager" +authors = ["Diem Association "] +description = "Diem Key Manager" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -14,17 +14,17 @@ once_cell = "1.4.1" serde = { version = "1.0.117", features = ["rc"], default-features = false } thiserror = "1.0.22" -libra-config = { path = "../../config", version = "0.1.0"} -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0"} -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } -libra-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0" } -libra-secure-time = { path = "../../secure/time", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0"} +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0"} +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } +diem-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0" } +diem-secure-time = { path = "../../secure/time", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } transaction-builder-generated = { path = "../../client/transaction-builder", version = "0.1.0" } [dev-dependencies] @@ -36,14 +36,14 @@ tokio = { version = "0.2.22", features = ["full"] } executor = { path = "../../execution/executor", version = "0.1.0" } executor-test-helpers = { path = "../../execution/executor-test-helpers", version = "0.1.0" } executor-types = { path = "../../execution/executor-types", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } -libra-vm = { path = "../../language/libra-vm", version = "0.1.0" } -libradb = { path = "../../storage/libradb", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } +diem-vm = { path = "../../language/diem-vm", version = "0.1.0" } +diemdb = { path = "../../storage/diemdb", version = "0.1.0" } storage-interface= { path = "../../storage/storage-interface", version = "0.1.0" } vm-validator = { path = "../../vm-validator", version = "0.1.0" } [features] -testing = [ "libra-secure-storage/testing" ] -fuzzing = ["libradb/fuzzing", "libra-json-rpc/fuzzing", "libra-config/fuzzing" ] +testing = [ "diem-secure-storage/testing" ] +fuzzing = ["diemdb/fuzzing", "diem-json-rpc/fuzzing", "diem-config/fuzzing" ] diff --git a/secure/key-manager/README.md b/secure/key-manager/README.md index d4a5a38d37..b739c5a1f2 100644 --- a/secure/key-manager/README.md +++ b/secure/key-manager/README.md @@ -6,7 +6,7 @@ custom_edit_url: https://github.com/libra/libra/edit/master/secure/key-manager/R # Key Manager The Key Manager is the primary service responsible for managing and rotating cryptographic -keys used by validator nodes and validator full nodes in the Libra payment network. +keys used by validator nodes and validator full nodes in the Diem payment network. ## Overview @@ -18,8 +18,8 @@ structures and error types, refer to the key manager specification: This crate defines the key manager implementation. Internally, the crate includes: - `KeyManager`: the key manager struct containing the logic for the key manager component. - - `LibraInterface`: the interface the key manager uses to communicate with the Libra blockchain. - - `JsonRpcLibraInterface`: the `LibraInterface` implementation using the JSON RPC endpoints. + - `DiemInterface`: the interface the key manager uses to communicate with the Diem blockchain. + - `JsonRpcDiemInterface`: the `DiemInterface` implementation using the JSON RPC endpoints. ## How is this module organized? diff --git a/secure/key-manager/src/counters.rs b/secure/key-manager/src/counters.rs index 80b5470af3..a1a6ebd86d 100644 --- a/secure/key-manager/src/counters.rs +++ b/secure/key-manager/src/counters.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_secure_push_metrics::{register_int_counter_vec, IntCounterVec}; +use diem_secure_push_metrics::{register_int_counter_vec, IntCounterVec}; use once_cell::sync::Lazy; /// The metrics counter for the key manager. static COUNTER: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_key_manager_state", + "diem_key_manager_state", "Outcome for key operations", &["key", "state"] ) diff --git a/secure/key-manager/src/libra_interface.rs b/secure/key-manager/src/diem_interface.rs similarity index 88% rename from secure/key-manager/src/libra_interface.rs rename to secure/key-manager/src/diem_interface.rs index 7a7c6812b6..b4626d23b6 100644 --- a/secure/key-manager/src/libra_interface.rs +++ b/secure/key-manager/src/diem_interface.rs @@ -1,19 +1,19 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Error; -use libra_secure_json_rpc::JsonRpcClient; -use libra_types::{ +use diem_secure_json_rpc::JsonRpcClient; +use diem_types::{ account_address::AccountAddress, account_config, account_state::AccountState, on_chain_config::config_address, transaction::Transaction, validator_config::ValidatorConfig, validator_info::ValidatorInfo, }; -/// This defines a generic trait used to interact with the Libra blockchain. In production, this +/// This defines a generic trait used to interact with the Diem blockchain. In production, this /// will be talking to a JSON-RPC service. For tests, this may be an executor and storage directly. -pub trait LibraInterface { +pub trait DiemInterface { /// Retrieves the current time from the blockchain, this is returned as microseconds. - fn libra_timestamp(&self) -> Result; + fn diem_timestamp(&self) -> Result; /// Retrieves the last reconfiguration time from the blockchain, this is returned as /// microseconds. @@ -39,7 +39,7 @@ pub trait LibraInterface { fn retrieve_account_state(&self, account: AccountAddress) -> Result; } -/// This implements the LibraInterface by talking directly to the JSON RPC API. +/// This implements the DiemInterface by talking directly to the JSON RPC API. /// /// DISCLAIMER: this implementation assumes that the json rpc client explicitly trusts the json rpc /// server that is responding to its requests (e.g., the client assumes the server has already been @@ -52,11 +52,11 @@ pub trait LibraInterface { /// rpc server we're talking to. Although we won't be able to guarantee freshness, it's better than /// simply trusting the response for correctness.. #[derive(Clone)] -pub struct JsonRpcLibraInterface { +pub struct JsonRpcDiemInterface { client: JsonRpcClient, } -impl JsonRpcLibraInterface { +impl JsonRpcDiemInterface { pub fn new(json_rpc_endpoint: String) -> Self { Self { client: JsonRpcClient::new(json_rpc_endpoint), @@ -64,19 +64,19 @@ impl JsonRpcLibraInterface { } } -impl LibraInterface for JsonRpcLibraInterface { - fn libra_timestamp(&self) -> Result { - let account = account_config::libra_root_address(); - let libra_timestamp_resource = self +impl DiemInterface for JsonRpcDiemInterface { + fn diem_timestamp(&self) -> Result { + let account = account_config::diem_root_address(); + let diem_timestamp_resource = self .retrieve_account_state(account)? - .get_libra_timestamp_resource(); + .get_diem_timestamp_resource(); - match libra_timestamp_resource { + match diem_timestamp_resource { Ok(timestamp_resource) => timestamp_resource - .map(|timestamp_resource| timestamp_resource.libra_timestamp.microseconds) + .map(|timestamp_resource| timestamp_resource.diem_timestamp.microseconds) .ok_or_else(|| { Error::DataDoesNotExist(format!( - "LibraTimestampResource not found for account: {:?}", + "DiemTimestampResource not found for account: {:?}", account )) }), diff --git a/secure/key-manager/src/lib.rs b/secure/key-manager/src/lib.rs index 0edcc3c7b1..47793f201a 100644 --- a/secure/key-manager/src/lib.rs +++ b/secure/key-manager/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The purpose of KeyManager is to rotate consensus key (and eventually the network key). It is not @@ -14,9 +14,9 @@ //! evaluates the current time from the last reconfiguration and logs that delta with greater //! levels of severity depending on the delta. //! -//! KeyManager talks to Libra via the LibraInterface that may either be a direct link into -//! `LibraDB`/`Executor`, JSON-RPC, or some other concoction. -//! KeyManager talks to its own storage through the `LibraSecureStorage::Storage trait. +//! KeyManager talks to Diem via the DiemInterface that may either be a direct link into +//! `DiemDB`/`Executor`, JSON-RPC, or some other concoction. +//! KeyManager talks to its own storage through the `DiemSecureStorage::Storage trait. #![forbid(unsafe_code)] use crate::{ @@ -25,24 +25,24 @@ use crate::{ SUBMITTED_ROTATION_TRANSACTION, UNEXPECTED_ERROR_ENCOUNTERED, WAITING_ON_RECONFIGURATION, WAITING_ON_TRANSACTION_EXECUTION, }, - libra_interface::LibraInterface, + diem_interface::DiemInterface, logging::{LogEntry, LogEvent, LogSchema}, }; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_global_constants::{CONSENSUS_KEY, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT}; -use libra_logger::prelude::*; -use libra_secure_storage::{CryptoStorage, KVStorage}; -use libra_secure_time::TimeService; -use libra_types::{ +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_global_constants::{CONSENSUS_KEY, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT}; +use diem_logger::prelude::*; +use diem_secure_storage::{CryptoStorage, KVStorage}; +use diem_secure_time::TimeService; +use diem_types::{ account_address::AccountAddress, - account_config::COIN1_NAME, + account_config::XUS_NAME, chain_id::ChainId, transaction::{RawTransaction, SignedTransaction, Transaction}, }; use thiserror::Error; pub mod counters; -pub mod libra_interface; +pub mod diem_interface; pub mod logging; #[cfg(test)] @@ -76,7 +76,7 @@ pub enum Error { #[error("Data does not exist: {0}")] DataDoesNotExist(String), #[error( - "The libra_timestamp value on-chain isn't increasing. Last value: {0}, Current value: {1}" + "The diem_timestamp value on-chain isn't increasing. Last value: {0}, Current value: {1}" )] LivenessError(u64, u64), #[error("Unable to retrieve the account address: {0}, storage error: {1}")] @@ -96,17 +96,17 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_secure_storage::Error) -> Self { +impl From for Error { + fn from(error: diem_secure_storage::Error) -> Self { Error::StorageError(error.to_string()) } } pub struct KeyManager { - libra: LI, + diem: LI, storage: S, time_service: T, - last_checked_libra_timestamp: u64, + last_checked_diem_timestamp: u64, rotation_period_secs: u64, // The frequency by which to rotate all keys sleep_period_secs: u64, // The amount of time to sleep between key management checks txn_expiration_secs: u64, // The time after which a rotation transaction expires @@ -115,12 +115,12 @@ pub struct KeyManager { impl KeyManager where - LI: LibraInterface, + LI: DiemInterface, S: KVStorage + CryptoStorage, T: TimeService, { pub fn new( - libra: LI, + diem: LI, storage: S, time_service: T, rotation_period_secs: u64, @@ -129,10 +129,10 @@ where chain_id: ChainId, ) -> Self { Self { - libra, + diem, storage, time_service, - last_checked_libra_timestamp: 0, + last_checked_diem_timestamp: 0, rotation_period_secs, sleep_period_secs, txn_expiration_secs, @@ -191,7 +191,7 @@ where pub fn compare_storage_to_config(&self) -> Result<(), Error> { let owner_account = self.get_account_from_storage(OWNER_ACCOUNT)?; - let validator_config = self.libra.retrieve_validator_config(owner_account)?; + let validator_config = self.diem.retrieve_validator_config(owner_account)?; let storage_key = self.storage.get_public_key(CONSENSUS_KEY)?.public_key; let config_key = validator_config.consensus_public_key; @@ -204,8 +204,8 @@ where pub fn compare_info_to_config(&self) -> Result<(), Error> { let owner_account = self.get_account_from_storage(OWNER_ACCOUNT)?; - let validator_config = self.libra.retrieve_validator_config(owner_account)?; - let validator_info = self.libra.retrieve_validator_info(owner_account)?; + let validator_config = self.diem.retrieve_validator_config(owner_account)?; + let validator_info = self.diem.retrieve_validator_info(owner_account)?; let info_key = validator_info.consensus_public_key(); let config_key = validator_config.consensus_public_key; @@ -218,16 +218,16 @@ where pub fn last_reconfiguration(&self) -> Result { // Convert the time to seconds - Ok(self.libra.last_reconfiguration()? / 1_000_000) + Ok(self.diem.last_reconfiguration()? / 1_000_000) } pub fn last_rotation(&self) -> Result { Ok(self.storage.get_public_key(CONSENSUS_KEY)?.last_update) } - pub fn libra_timestamp(&self) -> Result { + pub fn diem_timestamp(&self) -> Result { // Convert the time to seconds - Ok(self.libra.libra_timestamp()? / 1_000_000) + Ok(self.diem.diem_timestamp()? / 1_000_000) } pub fn resubmit_consensus_key_transaction(&mut self) -> Result<(), Error> { @@ -254,12 +254,12 @@ where info!(LogSchema::new(LogEntry::TransactionSubmitted).event(LogEvent::Pending)); let operator_account = self.get_account_from_storage(OPERATOR_ACCOUNT)?; - let seq_id = self.libra.retrieve_sequence_number(operator_account)?; + let seq_id = self.diem.retrieve_sequence_number(operator_account)?; let expiration = self.time_service.now() + self.txn_expiration_secs; // Retrieve existing network information as registered on-chain let owner_account = self.get_account_from_storage(OWNER_ACCOUNT)?; - let validator_config = self.libra.retrieve_validator_config(owner_account)?; + let validator_config = self.diem.retrieve_validator_config(owner_account)?; let txn = build_rotation_transaction( owner_account, @@ -276,7 +276,7 @@ where let txn_signature = self.storage.sign(OPERATOR_KEY, &txn)?; let signed_txn = SignedTransaction::new(txn, operator_pubkey, txn_signature); - self.libra + self.diem .submit_transaction(Transaction::UserTransaction(signed_txn))?; info!(LogSchema::new(LogEntry::TransactionSubmitted).event(LogEvent::Success)); @@ -285,25 +285,25 @@ where Ok(consensus_key) } - /// Ensures that the libra_timestamp() value registered on-chain is strictly monotonically + /// Ensures that the diem_timestamp() value registered on-chain is strictly monotonically /// increasing. fn ensure_timestamp_progress(&mut self) -> Result<(), Error> { - let current_libra_timestamp = self.libra.libra_timestamp()?; - if current_libra_timestamp <= self.last_checked_libra_timestamp { + let current_diem_timestamp = self.diem.diem_timestamp()?; + if current_diem_timestamp <= self.last_checked_diem_timestamp { return Err(Error::LivenessError( - self.last_checked_libra_timestamp, - current_libra_timestamp, + self.last_checked_diem_timestamp, + current_diem_timestamp, )); } - self.last_checked_libra_timestamp = current_libra_timestamp; + self.last_checked_diem_timestamp = current_diem_timestamp; Ok(()) } /// Evaluates the current status of the key manager by performing various state checks between /// secure storage and the blockchain. /// - /// Note: every time this function is called, the libra_timestamp registered on-chain must be + /// Note: every time this function is called, the diem_timestamp registered on-chain must be /// strictly monotonically increasing. This helps to ensure that the blockchain is making /// progress. Otherwise, if no progress is being made on-chain, a reconfiguration event is /// unlikely, and the key manager will be unable to rotate keys. @@ -399,7 +399,7 @@ pub fn build_rotation_transaction( script, MAX_GAS_AMOUNT, GAS_UNIT_PRICE, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), expiration_timestamp_secs, chain_id, ) diff --git a/secure/key-manager/src/logging.rs b/secure/key-manager/src/logging.rs index 09ad5f671c..990f649f47 100644 --- a/secure/key-manager/src/logging.rs +++ b/secure/key-manager/src/logging.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Error; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_logger::Schema; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_logger::Schema; use serde::Serialize; #[derive(Schema)] diff --git a/secure/key-manager/src/main.rs b/secure/key-manager/src/main.rs index f282e56498..5292f25dd1 100644 --- a/secure/key-manager/src/main.rs +++ b/secure/key-manager/src/main.rs @@ -1,21 +1,21 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Usage: ./key-manager node.config #![forbid(unsafe_code)] -use libra_config::config::KeyManagerConfig; -use libra_key_manager::{ +use diem_config::config::KeyManagerConfig; +use diem_key_manager::{ counters, - libra_interface::JsonRpcLibraInterface, + diem_interface::JsonRpcDiemInterface, logging::{LogEntry, LogEvent, LogSchema}, Error, KeyManager, }; -use libra_logger::info; -use libra_secure_push_metrics::MetricsPusher; -use libra_secure_storage::Storage; -use libra_secure_time::RealTimeService; +use diem_logger::info; +use diem_secure_push_metrics::MetricsPusher; +use diem_secure_storage::Storage; +use diem_secure_time::RealTimeService; use std::{convert::TryInto, env, process}; fn main() { @@ -34,7 +34,7 @@ fn main() { process::exit(1); }); - libra_logger::Logger::new() + diem_logger::Logger::new() .channel_size(key_manager_config.logger.chan_size) .is_async(key_manager_config.logger.is_async) .level(key_manager_config.logger.level) @@ -57,14 +57,14 @@ fn create_and_execute_key_manager(key_manager_config: KeyManagerConfig) -> Resul ); let json_rpc_endpoint = key_manager_config.json_rpc_endpoint; - let libra_interface = JsonRpcLibraInterface::new(json_rpc_endpoint.clone()); + let diem_interface = JsonRpcDiemInterface::new(json_rpc_endpoint.clone()); let storage: Storage = (&key_manager_config.secure_backend) .try_into() .expect("Unable to initialize storage"); let time_service = RealTimeService::new(); let mut key_manager = KeyManager::new( - libra_interface, + diem_interface, storage, time_service, key_manager_config.rotation_period_secs, diff --git a/secure/key-manager/src/tests.rs b/secure/key-manager/src/tests.rs index 98a1cd4c3c..f62a1d7da4 100644 --- a/secure/key-manager/src/tests.rs +++ b/secure/key-manager/src/tests.rs @@ -1,32 +1,29 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ - libra_interface::JsonRpcLibraInterface, Action, Error, KeyManager, LibraInterface, - GAS_UNIT_PRICE, MAX_GAS_AMOUNT, + diem_interface::JsonRpcDiemInterface, Action, DiemInterface, Error, KeyManager, GAS_UNIT_PRICE, + MAX_GAS_AMOUNT, }; use anyhow::Result; -use executor::Executor; -use executor_types::BlockExecutor; -use futures::{channel::mpsc::channel, StreamExt}; -use libra_config::{ +use diem_config::{ config::{KeyManagerConfig, NodeConfig}, utils, utils::get_genesis_txn, }; -use libra_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; -use libra_global_constants::{ +use diem_crypto::{ed25519::Ed25519PrivateKey, HashValue, PrivateKey, Uniform}; +use diem_global_constants::{ CONSENSUS_KEY, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT, OWNER_KEY, }; -use libra_secure_storage::{InMemoryStorageInternal, KVStorage}; -use libra_secure_time::{MockTimeService, TimeService}; -use libra_types::{ +use diem_secure_storage::{InMemoryStorageInternal, KVStorage}; +use diem_secure_time::{MockTimeService, TimeService}; +use diem_types::{ account_address::AccountAddress, account_config, - account_config::LBR_NAME, + account_config::XDX_NAME, account_state::AccountState, block_info::BlockInfo, - block_metadata::{BlockMetadata, LibraBlockResource}, + block_metadata::{BlockMetadata, DiemBlockResource}, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, mempool_status::{MempoolStatus, MempoolStatusCode}, on_chain_config::{ConfigurationResource, ValidatorSet}, @@ -34,8 +31,11 @@ use libra_types::{ validator_config::ValidatorConfig, validator_info::ValidatorInfo, }; -use libra_vm::LibraVM; -use libradb::LibraDB; +use diem_vm::DiemVM; +use diemdb::DiemDB; +use executor::Executor; +use executor_types::BlockExecutor; +use futures::{channel::mpsc::channel, StreamExt}; use rand::{rngs::StdRng, SeedableRng}; use std::{cell::RefCell, collections::BTreeMap, convert::TryFrom, sync::Arc}; use storage_interface::{DbReader, DbReaderWriter}; @@ -46,23 +46,23 @@ use vm_validator::{ const TXN_EXPIRATION_SECS: u64 = 100; -struct Node { - executor: Executor, - libra: LibraInterfaceTestHarness, +struct Node { + executor: Executor, + diem: DiemInterfaceTestHarness, key_manager: KeyManager< - LibraInterfaceTestHarness, + DiemInterfaceTestHarness, InMemoryStorageInternal, MockTimeService, >, time: MockTimeService, } -impl Node { +impl Node { pub fn new( - executor: Executor, - libra: LibraInterfaceTestHarness, + executor: Executor, + diem: DiemInterfaceTestHarness, key_manager: KeyManager< - LibraInterfaceTestHarness, + DiemInterfaceTestHarness, InMemoryStorageInternal, MockTimeService, >, @@ -70,14 +70,14 @@ impl Node { ) -> Self { Self { executor, - libra, + diem, key_manager, time, } } - // Increments the libra_timestamp on the blockchain by executing an empty block. - fn update_libra_timestamp(&mut self) { + // Increments the diem_timestamp on the blockchain by executing an empty block. + fn update_diem_timestamp(&mut self) { self.execute_and_commit(vec![]); } @@ -135,19 +135,19 @@ impl Node { } } -/// The struct below is a LibraInterface wrapper that exposes several additional methods to better -/// test the internal state of a LibraInterface implementation (e.g., during end-to-end and +/// The struct below is a DiemInterface wrapper that exposes several additional methods to better +/// test the internal state of a DiemInterface implementation (e.g., during end-to-end and /// integration tests). #[derive(Clone)] -struct LibraInterfaceTestHarness { - libra: T, +struct DiemInterfaceTestHarness { + diem: T, submitted_transactions: Arc>>, } -impl LibraInterfaceTestHarness { - fn new(libra: T) -> Self { +impl DiemInterfaceTestHarness { + fn new(diem: T) -> Self { Self { - libra, + diem, submitted_transactions: Arc::new(RefCell::new(Vec::new())), } } @@ -155,18 +155,18 @@ impl LibraInterfaceTestHarness { /// Returns the validator set associated with the validator set address. fn retrieve_validator_set(&self) -> Result { let account = account_config::validator_set_address(); - let account_state = self.libra.retrieve_account_state(account)?; + let account_state = self.diem.retrieve_account_state(account)?; Ok(account_state .get_validator_set()? .ok_or_else(|| Error::DataDoesNotExist("ValidatorSetResource".into()))?) } - /// Returns the libra block resource associated with the association address. - fn retrieve_libra_block_resource(&self) -> Result { - let account = account_config::libra_root_address(); - let account_state = self.libra.retrieve_account_state(account)?; + /// Returns the diem block resource associated with the association address. + fn retrieve_diem_block_resource(&self) -> Result { + let account = account_config::diem_root_address(); + let account_state = self.diem.retrieve_account_state(account)?; account_state - .get_libra_block_resource()? + .get_diem_block_resource()? .ok_or_else(|| Error::DataDoesNotExist("BlockMetadata".into())) } @@ -177,47 +177,47 @@ impl LibraInterfaceTestHarness { } } -impl LibraInterface for LibraInterfaceTestHarness { - fn libra_timestamp(&self) -> Result { - self.libra.libra_timestamp() +impl DiemInterface for DiemInterfaceTestHarness { + fn diem_timestamp(&self) -> Result { + self.diem.diem_timestamp() } fn last_reconfiguration(&self) -> Result { - self.libra.last_reconfiguration() + self.diem.last_reconfiguration() } fn retrieve_sequence_number(&self, account: AccountAddress) -> Result { - self.libra.retrieve_sequence_number(account) + self.diem.retrieve_sequence_number(account) } fn submit_transaction(&self, transaction: Transaction) -> Result<(), Error> { self.submitted_transactions .borrow_mut() .push(transaction.clone()); - self.libra.submit_transaction(transaction) + self.diem.submit_transaction(transaction) } fn retrieve_validator_config(&self, account: AccountAddress) -> Result { - self.libra.retrieve_validator_config(account) + self.diem.retrieve_validator_config(account) } fn retrieve_validator_info(&self, account: AccountAddress) -> Result { - self.libra.retrieve_validator_info(account) + self.diem.retrieve_validator_info(account) } fn retrieve_account_state(&self, account: AccountAddress) -> Result { - self.libra.retrieve_account_state(account) + self.diem.retrieve_account_state(account) } } -/// A mock libra interface implementation that stores a pointer to the LibraDB from which to +/// A mock diem interface implementation that stores a pointer to the DiemDB from which to /// process API requests. #[derive(Clone)] -struct MockLibraInterface { - storage: Arc, +struct MockDiemInterface { + storage: Arc, } -impl MockLibraInterface { +impl MockDiemInterface { fn retrieve_validator_set_resource(&self) -> Result { let account = account_config::validator_set_address(); let account_state = self.retrieve_account_state(account)?; @@ -227,7 +227,7 @@ impl MockLibraInterface { } pub fn retrieve_configuration_resource(&self) -> Result { - let account = libra_types::on_chain_config::config_address(); + let account = diem_types::on_chain_config::config_address(); let account_state = self.retrieve_account_state(account)?; account_state .get_configuration_resource()? @@ -235,18 +235,18 @@ impl MockLibraInterface { } } -impl LibraInterface for MockLibraInterface { - fn libra_timestamp(&self) -> Result { - let account = account_config::libra_root_address(); +impl DiemInterface for MockDiemInterface { + fn diem_timestamp(&self) -> Result { + let account = account_config::diem_root_address(); let blob = self .storage .get_latest_account_state(account)? .ok_or_else(|| Error::DataDoesNotExist("AccountState".into()))?; let account_state = AccountState::try_from(&blob)?; Ok(account_state - .get_libra_timestamp_resource()? - .ok_or_else(|| Error::DataDoesNotExist("LibraTimestampResource".into()))? - .libra_timestamp + .get_diem_timestamp_resource()? + .ok_or_else(|| Error::DataDoesNotExist("DiemTimestampResource".into()))? + .diem_timestamp .microseconds) } @@ -312,69 +312,69 @@ impl LibraInterface for MockLibraInterface { // Creates and returns NodeConfig and KeyManagerConfig structs that are consistent for testing. fn get_test_configs() -> (NodeConfig, KeyManagerConfig) { - let (node_config, _) = libra_genesis_tool::test_config(); + let (node_config, _) = diem_genesis_tool::test_config(); let key_manager_config = KeyManagerConfig::default(); (node_config, key_manager_config) } -// Creates and returns a test node that uses the JsonRpcLibraInterface. +// Creates and returns a test node that uses the JsonRpcDiemInterface. // This setup is useful for testing nodes as they operate in a production environment. -fn setup_node_using_json_rpc() -> (Node, Runtime) { +fn setup_node_using_json_rpc() -> (Node, Runtime) { let (node_config, key_manager_config) = get_test_configs(); - let (_storage, db_rw) = setup_libra_db(&node_config); - let (libra, server) = setup_libra_interface_and_json_server(db_rw.clone()); + let (_storage, db_rw) = setup_diem_db(&node_config); + let (diem, server) = setup_diem_interface_and_json_server(db_rw.clone()); let executor = Executor::new(db_rw); ( - setup_node(&node_config, &key_manager_config, executor, libra), + setup_node(&node_config, &key_manager_config, executor, diem), server, ) } -// Creates and returns a Node using the MockLibraInterface implementation. +// Creates and returns a Node using the MockDiemInterface implementation. // This setup is useful for testing and verifying new development features quickly. -fn setup_node_using_test_mocks() -> Node { +fn setup_node_using_test_mocks() -> Node { let (node_config, key_manager_config) = get_test_configs(); - let (storage, db_rw) = setup_libra_db(&node_config); - let libra = MockLibraInterface { storage }; + let (storage, db_rw) = setup_diem_db(&node_config); + let diem = MockDiemInterface { storage }; let executor = Executor::new(db_rw); - setup_node(&node_config, &key_manager_config, executor, libra) + setup_node(&node_config, &key_manager_config, executor, diem) } -// Creates and returns a libra database and database reader/writer pair bootstrapped with genesis. -fn setup_libra_db(config: &NodeConfig) -> (Arc, DbReaderWriter) { - let (storage, db_rw) = DbReaderWriter::wrap(LibraDB::new_for_test(&config.storage.dir())); - executor_test_helpers::bootstrap_genesis::(&db_rw, get_genesis_txn(config).unwrap()) +// Creates and returns a diem database and database reader/writer pair bootstrapped with genesis. +fn setup_diem_db(config: &NodeConfig) -> (Arc, DbReaderWriter) { + let (storage, db_rw) = DbReaderWriter::wrap(DiemDB::new_for_test(&config.storage.dir())); + executor_test_helpers::bootstrap_genesis::(&db_rw, get_genesis_txn(config).unwrap()) .expect("Failed to execute genesis"); (storage, db_rw) } -// Creates and returns a node for testing using the given config, executor and libra interface +// Creates and returns a node for testing using the given config, executor and diem interface // wrapper implementation. -fn setup_node( +fn setup_node( node_config: &NodeConfig, key_manager_config: &KeyManagerConfig, - executor: Executor, - libra: T, + executor: Executor, + diem: T, ) -> Node { let time = MockTimeService::new(); - let libra_test_harness = LibraInterfaceTestHarness::new(libra); + let diem_test_harness = DiemInterfaceTestHarness::new(diem); let storage = setup_secure_storage(&node_config, time.clone()); let key_manager = KeyManager::new( - libra_test_harness.clone(), + diem_test_harness.clone(), storage, time.clone(), key_manager_config.rotation_period_secs, key_manager_config.sleep_period_secs, key_manager_config.txn_expiration_secs, - libra_types::chain_id::ChainId::test(), + diem_types::chain_id::ChainId::test(), ); - Node::new(executor, libra_test_harness, key_manager, time) + Node::new(executor, diem_test_harness, key_manager, time) } // Creates and returns a secure storage implementation (based on an in memory storage engine) for @@ -399,8 +399,7 @@ fn setup_secure_storage( .set(OPERATOR_KEY, operator_key.private_key()) .unwrap(); - let operator_account = - libra_types::account_address::from_public_key(&operator_key.public_key()); + let operator_account = diem_types::account_address::from_public_key(&operator_key.public_key()); sec_storage.set(OPERATOR_ACCOUNT, operator_account).unwrap(); // Initialize the consensus key in storage @@ -413,19 +412,17 @@ fn setup_secure_storage( sec_storage } -// Generates and returns a (libra interface, server) pair, where the libra interface is a JSON RPC +// Generates and returns a (diem interface, server) pair, where the diem interface is a JSON RPC // based interface using the lightweight JSON client internally, and the server is a JSON server // that serves the JSON RPC requests. The server communicates with the given database reader/writer // to handle each JSON RPC request. -fn setup_libra_interface_and_json_server( - db_rw: DbReaderWriter, -) -> (JsonRpcLibraInterface, Runtime) { +fn setup_diem_interface_and_json_server(db_rw: DbReaderWriter) -> (JsonRpcDiemInterface, Runtime) { let address = "0.0.0.0"; let port = utils::get_available_port(); let host = format!("{}:{}", address, port); let (mp_sender, mut mp_events) = channel(1024); - let server = libra_json_rpc::test_bootstrap(host.parse().unwrap(), db_rw.reader, mp_sender); + let server = diem_json_rpc::test_bootstrap(host.parse().unwrap(), db_rw.reader, mp_sender); // Provide a VMValidator to the runtime. server.spawn(async move { @@ -441,31 +438,31 @@ fn setup_libra_interface_and_json_server( }); let json_rpc_endpoint = format!("http://{}", host); - let libra = JsonRpcLibraInterface::new(json_rpc_endpoint); + let diem = JsonRpcDiemInterface::new(json_rpc_endpoint); - (libra, server) + (diem, server) } #[test] // This simple test just proves that genesis took effect and the values are on-chain (in storage). fn test_ability_to_read_move_data() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_ability_to_read_move_data(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_ability_to_read_move_data(node); } -fn verify_ability_to_read_move_data(mut node: Node) { +fn verify_ability_to_read_move_data(mut node: Node) { let owner_account = node.get_account_from_storage(OWNER_ACCOUNT); - node.libra.last_reconfiguration().unwrap(); - node.libra.retrieve_validator_set().unwrap(); - node.libra.retrieve_validator_config(owner_account).unwrap(); - node.libra.retrieve_validator_info(owner_account).unwrap(); - node.libra.retrieve_libra_block_resource().unwrap(); + node.diem.last_reconfiguration().unwrap(); + node.diem.retrieve_validator_set().unwrap(); + node.diem.retrieve_validator_config(owner_account).unwrap(); + node.diem.retrieve_validator_info(owner_account).unwrap(); + node.diem.retrieve_diem_block_resource().unwrap(); } #[test] @@ -473,19 +470,19 @@ fn verify_ability_to_read_move_data(mut node: Node) { // unexpected failure). To do this, the test generates a new keypair locally, creates a new rotation // transaction manually and executes the transaction on-chain. fn test_manual_rotation_on_chain() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_manual_rotation_on_chain(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_manual_rotation_on_chain(node); } -fn verify_manual_rotation_on_chain(mut node: Node) { +fn verify_manual_rotation_on_chain(mut node: Node) { let owner_account = node.get_account_from_storage(OWNER_ACCOUNT); - let genesis_config = node.libra.retrieve_validator_config(owner_account).unwrap(); - let genesis_info = node.libra.retrieve_validator_info(owner_account).unwrap(); + let genesis_config = node.diem.retrieve_validator_config(owner_account).unwrap(); + let genesis_info = node.diem.retrieve_validator_info(owner_account).unwrap(); // Check on-chain consensus state matches the genesis state let consensus_pubkey = node.get_key_from_storage(CONSENSUS_KEY).public_key(); @@ -509,7 +506,7 @@ fn verify_manual_rotation_on_chain(mut node: Node) { Vec::new(), Vec::new(), node.time.now() + TXN_EXPIRATION_SECS, - libra_types::chain_id::ChainId::test(), + diem_types::chain_id::ChainId::test(), ); let txn1 = txn1 .sign(&operator_privkey, operator_privkey.public_key()) @@ -518,8 +515,8 @@ fn verify_manual_rotation_on_chain(mut node: Node) { node.execute_and_commit(vec![txn1]); - let new_config = node.libra.retrieve_validator_config(owner_account).unwrap(); - let new_info = node.libra.retrieve_validator_info(owner_account).unwrap(); + let new_config = node.diem.retrieve_validator_config(owner_account).unwrap(); + let new_info = node.diem.retrieve_validator_info(owner_account).unwrap(); // Check on-chain consensus state has been rotated assert_ne!(new_pubkey, consensus_pubkey); @@ -530,29 +527,29 @@ fn verify_manual_rotation_on_chain(mut node: Node) { #[test] // This verifies that the key manager is properly setup and that a basic rotation can be performed. fn test_key_manager_init_and_basic_rotation() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_init_and_basic_rotation(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_init_and_basic_rotation(node); } -fn verify_init_and_basic_rotation(mut node: Node) { +fn verify_init_and_basic_rotation(mut node: Node) { // Verify correct initialization (on-chain and in storage) node.key_manager.compare_storage_to_config().unwrap(); node.key_manager.compare_info_to_config().unwrap(); assert_eq!(node.time.now(), node.key_manager.last_rotation().unwrap()); // No executions yet assert_eq!(0, node.key_manager.last_reconfiguration().unwrap()); - assert_eq!(0, node.key_manager.libra_timestamp().unwrap()); + assert_eq!(0, node.key_manager.diem_timestamp().unwrap()); // Perform key rotation locally let owner_account = node.get_account_from_storage(OWNER_ACCOUNT); - let genesis_info = node.libra.retrieve_validator_info(owner_account).unwrap(); + let genesis_info = node.diem.retrieve_validator_info(owner_account).unwrap(); let new_key = node.key_manager.rotate_consensus_key().unwrap(); - let pre_exe_rotated_info = node.libra.retrieve_validator_info(owner_account).unwrap(); + let pre_exe_rotated_info = node.diem.retrieve_validator_info(owner_account).unwrap(); assert_eq!( genesis_info.consensus_public_key(), pre_exe_rotated_info.consensus_public_key() @@ -563,8 +560,8 @@ fn verify_init_and_basic_rotation(mut node: Node) { node.time.increment_by(301); // Execute key rotation on-chain - node.execute_and_commit(node.libra.take_all_transactions()); - let rotated_info = node.libra.retrieve_validator_info(owner_account).unwrap(); + node.execute_and_commit(node.diem.take_all_transactions()); + let rotated_info = node.diem.retrieve_validator_info(owner_account).unwrap(); assert_ne!( genesis_info.consensus_public_key(), rotated_info.consensus_public_key() @@ -572,17 +569,17 @@ fn verify_init_and_basic_rotation(mut node: Node) { assert_eq!(rotated_info.consensus_public_key(), &new_key); // Executions have occurred but nothing after our rotation - assert_ne!(0, node.key_manager.libra_timestamp().unwrap()); + assert_ne!(0, node.key_manager.diem_timestamp().unwrap()); assert_eq!( node.key_manager.last_reconfiguration(), - node.key_manager.libra_timestamp() + node.key_manager.diem_timestamp() ); // Executions have occurred after our rotation - node.execute_and_commit(node.libra.take_all_transactions()); + node.execute_and_commit(node.diem.take_all_transactions()); assert_ne!( node.key_manager.last_reconfiguration(), - node.key_manager.libra_timestamp() + node.key_manager.diem_timestamp() ); } @@ -591,37 +588,37 @@ fn verify_init_and_basic_rotation(mut node: Node) { // To do this, the test repeatedly calls "execute_once_and_sleep" -- identical to the main "execute" // loop. fn test_execute() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_execute(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_execute(node); } -fn verify_execute(mut node: Node) { +fn verify_execute(mut node: Node) { let (_, key_manager_config) = get_test_configs(); // Verify correct initial state (i.e., nothing to be done by key manager) assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Verify rotation required after enough time node.time .increment_by(key_manager_config.rotation_period_secs); - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::FullKeyRotation, node.key_manager.evaluate_status().unwrap() ); // Verify a single execution iteration will perform the rotation and re-sync everything - node.update_libra_timestamp(); + node.update_diem_timestamp(); node.key_manager.execute_once().unwrap(); // Verify nothing to be done after rotation except wait for transaction execution - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::WaitForTransactionExecution, node.key_manager.evaluate_status().unwrap() @@ -630,14 +627,14 @@ fn verify_execute(mut node: Node) { // Verify rotation transaction not executed, now expired node.time .increment_by(key_manager_config.txn_expiration_secs); - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::SubmitKeyRotationTransaction, node.key_manager.evaluate_status().unwrap() ); // Let's execute the expired transaction and see that a resubmission is still required - node.execute_and_commit(node.libra.take_all_transactions()); + node.execute_and_commit(node.diem.take_all_transactions()); assert_eq!( Action::SubmitKeyRotationTransaction, node.key_manager.evaluate_status().unwrap() @@ -645,42 +642,42 @@ fn verify_execute(mut node: Node) { // Verify that a single execution iteration will resubmit the transaction, which can then be // executed to re-sync everything up (on-chain). - node.update_libra_timestamp(); + node.update_diem_timestamp(); node.key_manager.execute_once().unwrap(); - node.execute_and_commit(node.libra.take_all_transactions()); + node.execute_and_commit(node.diem.take_all_transactions()); assert_eq!( Action::NoAction, node.key_manager.evaluate_status().unwrap() ); - assert_ne!(0, node.libra.last_reconfiguration().unwrap()); + assert_ne!(0, node.diem.last_reconfiguration().unwrap()); } #[test] // This tests the key manager's ability to detect liveness errors on the blockchain. fn test_liveness_error() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_liveness_error(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_liveness_error(node); } -fn verify_liveness_error(mut node: Node) { +fn verify_liveness_error(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Verify no action is required by the key manager - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::NoAction, node.key_manager.evaluate_status().unwrap() ); // Verify a single execution iteration will detect a liveness error because - // the libra timestamp on-chain hasn't been updated since it was last checked. + // the diem timestamp on-chain hasn't been updated since it was last checked. match node.key_manager.execute_once() { Err(Error::LivenessError(last_timestamp, current_timestamp)) => { assert_eq!(last_timestamp, current_timestamp) @@ -692,22 +689,22 @@ fn verify_liveness_error(mut node: Node) { #[test] // This tests the key manager's ability to detect missing accounts in storage. fn test_missing_account_error() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_missing_account_error(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_missing_account_error(node); } -fn verify_missing_account_error(mut node: Node) { +fn verify_missing_account_error(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Reset storage to wipe all account addresses - node.update_libra_timestamp(); + node.update_diem_timestamp(); node.key_manager.storage.reset_and_clear().unwrap(); // Verify a single execution iteration will detect the missing account address @@ -724,22 +721,22 @@ fn verify_missing_account_error(mut node: Node) { // This tests the key manager's ability to detect mismatches between the validator // config and the validator set. fn test_validator_config_info_mismatch() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_validator_config_info_mismatch(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_validator_config_info_mismatch(node); } -fn verify_validator_config_info_mismatch(mut node: Node) { +fn verify_validator_config_info_mismatch(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Verify no action is required by the key manager - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::NoAction, node.key_manager.evaluate_status().unwrap() @@ -760,9 +757,9 @@ fn verify_validator_config_info_mismatch(mut node: Node) { script, MAX_GAS_AMOUNT, GAS_UNIT_PRICE, - LBR_NAME.to_owned(), + XDX_NAME.to_owned(), node.time.now() + TXN_EXPIRATION_SECS, - libra_types::chain_id::ChainId::test(), + diem_types::chain_id::ChainId::test(), ); // Sign and execute the validator config update transaction @@ -775,7 +772,7 @@ fn verify_validator_config_info_mismatch(mut node: Node) { // Verify the key manager will detect a key mismatch between the validator // config and the validator set - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::WaitForReconfiguration, node.key_manager.evaluate_status().unwrap() @@ -786,22 +783,22 @@ fn verify_validator_config_info_mismatch(mut node: Node) { // This tests the key manager's ability to detect mismatches between storage and // the blockchain. fn test_storage_blockchain_mismatch() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_storage_blockchain_mismatch(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_storage_blockchain_mismatch(node); } -fn verify_storage_blockchain_mismatch(mut node: Node) { +fn verify_storage_blockchain_mismatch(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Verify no action is required by the key manager - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::NoAction, node.key_manager.evaluate_status().unwrap() @@ -812,7 +809,7 @@ fn verify_storage_blockchain_mismatch(mut node: Node) { // Verify the key manager will detect a key mismatch between storage and the // blockchain and thus wait for transaction execution - node.update_libra_timestamp(); + node.update_diem_timestamp(); assert_eq!( Action::WaitForTransactionExecution, node.key_manager.evaluate_status().unwrap() @@ -822,22 +819,22 @@ fn verify_storage_blockchain_mismatch(mut node: Node) { #[test] // This tests the key manager's ability to detect generic storage errors. fn test_storage_error() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_storage_error(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_storage_error(node); } -fn verify_storage_error(mut node: Node) { +fn verify_storage_error(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Update the consensus key to an invalid value to force a storage error - node.update_libra_timestamp(); + node.update_diem_timestamp(); node.key_manager .storage .set(CONSENSUS_KEY, "invalid value") @@ -853,22 +850,22 @@ fn verify_storage_error(mut node: Node) { #[test] // This tests the key manager's ability to handle missing data errors. fn test_missing_data_error() { - // Test the mock libra interface implementation + // Test the mock diem interface implementation let node = setup_node_using_test_mocks(); verify_missing_data(node); - // Test the json libra interface implementation + // Test the json diem interface implementation let (node, _runtime) = setup_node_using_json_rpc(); verify_missing_data(node); } -fn verify_missing_data(mut node: Node) { +fn verify_missing_data(mut node: Node) { // Verify correct initial state assert_eq!(0, node.time.now()); - assert_eq!(0, node.libra.last_reconfiguration().unwrap()); + assert_eq!(0, node.diem.last_reconfiguration().unwrap()); // Update the owner account to an account that will not have any state on chain - node.update_libra_timestamp(); + node.update_diem_timestamp(); node.key_manager .storage .set(OWNER_ACCOUNT, "00000000000000000000000000000001") diff --git a/secure/net/Cargo.toml b/secure/net/Cargo.toml index 152593c5bc..1f8bb29608 100644 --- a/secure/net/Cargo.toml +++ b/secure/net/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-secure-net" +name = "diem-secure-net" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -description = "Libra's Simple Network Substrate" -homepage = "https://libra.org" +description = "Diem's Simple Network Substrate" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,9 +14,9 @@ once_cell = "1.4.1" serde = { version = "1.0.117", features = ["rc"], default-features = false } thiserror = "1.0.22" -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-secure-push-metrics = { path = "../../secure/push-metrics", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] -libra-config = { path = "../../config", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } diff --git a/secure/net/src/lib.rs b/secure/net/src/lib.rs index a9b6bc9ddc..01b34c4b60 100644 --- a/secure/net/src/lib.rs +++ b/secure/net/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -15,8 +15,8 @@ //! Internally both the client and server leverage a NetworkStream that communications in blocks //! where a block is a length prefixed array of bytes. -use libra_logger::{info, trace, warn, Schema}; -use libra_secure_push_metrics::{register_int_counter_vec, IntCounterVec}; +use diem_logger::{info, trace, warn, Schema}; +use diem_secure_push_metrics::{register_int_counter_vec, IntCounterVec}; use once_cell::sync::Lazy; use serde::Serialize; use std::{ @@ -78,7 +78,7 @@ impl NetworkMode { static EVENT_COUNTER: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_secure_net_events", + "diem_secure_net_events", "Outcome of secure net events", &["service", "mode", "method", "result"] ) @@ -513,7 +513,7 @@ impl NetworkStream { #[cfg(test)] mod test { use super::*; - use libra_config::utils; + use diem_config::utils; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; /// Read, Write, Connect timeout in milliseconds. diff --git a/secure/push-metrics/Cargo.toml b/secure/push-metrics/Cargo.toml index f5af5ecd77..a540e11834 100644 --- a/secure/push-metrics/Cargo.toml +++ b/secure/push-metrics/Cargo.toml @@ -1,16 +1,16 @@ [package] -name = "libra-secure-push-metrics" +name = "diem-secure-push-metrics" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libra-util" +authors = ["Diem Association "] +description = "Diem diem-util" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] ureq = { version = "1.5.2", features = ["json", "native-tls"], default-features = false } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics-core = { path = "../../common/metrics-core", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics-core = { path = "../../common/metrics-core", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/secure/push-metrics/src/lib.rs b/secure/push-metrics/src/lib.rs index 66c2c66b27..b823257f62 100644 --- a/secure/push-metrics/src/lib.rs +++ b/secure/push-metrics/src/lib.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] // Re-export counter types from prometheus crate -pub use libra_metrics_core::{ +pub use diem_metrics_core::{ register_histogram, register_histogram_vec, register_int_counter, register_int_counter_vec, register_int_gauge, register_int_gauge_vec, Histogram, HistogramTimer, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, }; -use libra_logger::{error, info}; -use libra_metrics_core::{Encoder, TextEncoder}; +use diem_logger::{error, info}; +use diem_metrics_core::{Encoder, TextEncoder}; use std::{env, sync::mpsc, thread, thread::JoinHandle, time::Duration}; const DEFAULT_PUSH_FREQUENCY_SECS: u64 = 15; @@ -29,7 +29,7 @@ impl MetricsPusher { fn push(push_metrics_endpoint: &str) { let mut buffer = Vec::new(); - if let Err(e) = TextEncoder::new().encode(&libra_metrics_core::gather(), &mut buffer) { + if let Err(e) = TextEncoder::new().encode(&diem_metrics_core::gather(), &mut buffer) { error!("Failed to encode push metrics: {}.", e.to_string()); } else { let response = ureq::post(&push_metrics_endpoint) diff --git a/secure/storage/Cargo.toml b/secure/storage/Cargo.toml index 5396d6061c..bb03dc75e2 100644 --- a/secure/storage/Cargo.toml +++ b/secure/storage/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-secure-storage" +name = "diem-secure-storage" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -description = "Libra's Persistent, Secure Storage" -homepage = "https://libra.org" +description = "Diem's Persistent, Secure Storage" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,20 +19,20 @@ serde_json = "1.0.60" thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-github-client = { path = "github", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-secure-time = { path = "../time", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-vault-client = { path = "vault", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-github-client = { path = "github", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-secure-time = { path = "../time", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-vault-client = { path = "vault", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } -libra-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } rand = "0.7.3" [features] -fuzzing = ["libra-crypto/fuzzing"] +fuzzing = ["diem-crypto/fuzzing"] testing = [] diff --git a/secure/storage/README.md b/secure/storage/README.md index f4192f64d5..be407f43ac 100644 --- a/secure/storage/README.md +++ b/secure/storage/README.md @@ -5,9 +5,9 @@ custom_edit_url: https://github.com/libra/libra/edit/master/secure/storage/READM --- # Secure Storage -Secure storage provides a secure, persistent data store for sensitive data in the Libra +Secure storage provides a secure, persistent data store for sensitive data in the Diem blockchain. Examples of sensitive data here include information required for safety and -identity within Libra, such as cryptographic keys and consensus safety rules, as well as +identity within Diem, such as cryptographic keys and consensus safety rules, as well as run-time configuration data. ## Overview @@ -30,7 +30,7 @@ both `KVStorage` and `CryptoStorage`: Github repository. - `Vault`: The Vault secure storage implementation uses the Vault Storage Engine (an engine offered by HashiCorp: https://www.vaultproject.io/). The Vault secure storage implementation -is the one primarily used in production environments by nodes in the Libra blockchain. +is the one primarily used in production environments by nodes in the Diem blockchain. - `InMemory`: The InMemory secure storage implementation provides a simple in-memory storage engine. This engine should only be used for testing, as it does not offer any persistence, or security (i.e., data is simply held in DRAM and may be lost on a crash, or restart). diff --git a/secure/storage/github/Cargo.toml b/secure/storage/github/Cargo.toml index 17e2748aee..82281f9f25 100644 --- a/secure/storage/github/Cargo.toml +++ b/secure/storage/github/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-github-client" +name = "diem-github-client" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -description = "Libra's Restful GitHub Client" -homepage = "https://libra.org" +description = "Diem's Restful GitHub Client" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,7 +15,7 @@ serde_json = "1.0.60" thiserror = "1.0.22" ureq = { version = "1.5.2", features = ["json", "native-tls"], default-features = false } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] base64 = "0.13.0" diff --git a/secure/storage/github/src/lib.rs b/secure/storage/github/src/lib.rs index dc35632e97..491aef1911 100644 --- a/secure/storage/github/src/lib.rs +++ b/secure/storage/github/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -78,7 +78,7 @@ impl Client { let resp = self .upgrade_request(ureq::delete(&self.url(path))) - .send_json(json!({ "message": "libra-secure", "sha": hash })); + .send_json(json!({ "message": "diem-secure", "sha": hash })); match resp.status() { 200 => Ok(()), @@ -153,10 +153,10 @@ impl Client { pub fn put(&self, path: &str, content: &str) -> Result<(), Error> { let json = match self.get_sha(path) { Ok(hash) => { - json!({ "content": content, "message": format!("[libra-management] {}", path), "sha": hash }) + json!({ "content": content, "message": format!("[diem-management] {}", path), "sha": hash }) } Err(Error::NotFound(_)) => { - json!({ "content": content, "message": format!("[libra-management] {}", path) }) + json!({ "content": content, "message": format!("[diem-management] {}", path) }) } Err(e) => return Err(e), }; diff --git a/secure/storage/src/crypto_kv_storage.rs b/secure/storage/src/crypto_kv_storage.rs index 44f7094a55..b58ac35eb5 100644 --- a/secure/storage/src/crypto_kv_storage.rs +++ b/secure/storage/src/crypto_kv_storage.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoStorage, Error, KVStorage, PublicKeyResponse}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, PrivateKey, SigningKey, Uniform, diff --git a/secure/storage/src/crypto_storage.rs b/secure/storage/src/crypto_storage.rs index 09a8bd69f3..1fcd3e0a0c 100644 --- a/secure/storage/src/crypto_storage.rs +++ b/secure/storage/src/crypto_storage.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Error; +use diem_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}; use enum_dispatch::enum_dispatch; -use libra_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}; use serde::{Deserialize, Serialize}; /// CryptoStorage provides an abstraction for secure generation and handling of cryptographic keys. @@ -20,7 +20,7 @@ pub trait CryptoStorage { /// This is not intended to be used in production and the API may throw unimplemented if /// not used correctly. As this is purely a testing API, there is no defined behavior for /// importing a key for a given name if that name already exists. It only exists to allow - /// Libra to be run in test environments where a set of deterministic keys must be generated. + /// Diem to be run in test environments where a set of deterministic keys must be generated. fn import_private_key(&mut self, name: &str, key: Ed25519PrivateKey) -> Result<(), Error>; /// Returns the Ed25519 private key stored at 'name' and identified by 'version', which is the @@ -47,7 +47,7 @@ pub trait CryptoStorage { /// Signs the provided securely-hashable struct, using the 'named' private /// key. // The FQDNs on the next line help macros don't remove them - fn sign( + fn sign( &self, name: &str, message: &T, @@ -56,7 +56,7 @@ pub trait CryptoStorage { /// Signs the provided securely-hashable struct, using the 'named' and 'versioned' private key. This may fail /// even if the 'named' key exists but the version is not present. // The FQDNs on the next line help macros, don't remove them - fn sign_using_version( + fn sign_using_version( &self, name: &str, version: Ed25519PublicKey, diff --git a/secure/storage/src/error.rs b/secure/storage/src/error.rs index a947fa6507..298e937ef2 100644 --- a/secure/storage/src/error.rs +++ b/secure/storage/src/error.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; @@ -53,21 +53,21 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_vault_client::Error) -> Self { +impl From for Error { + fn from(error: diem_vault_client::Error) -> Self { match error { - libra_vault_client::Error::NotFound(_, key) => Self::KeyNotSet(key), - libra_vault_client::Error::HttpError(403, _, _) => Self::PermissionDenied, + diem_vault_client::Error::NotFound(_, key) => Self::KeyNotSet(key), + diem_vault_client::Error::HttpError(403, _, _) => Self::PermissionDenied, _ => Self::InternalError(format!("{}", error)), } } } -impl From for Error { - fn from(error: libra_github_client::Error) -> Self { +impl From for Error { + fn from(error: diem_github_client::Error) -> Self { match error { - libra_github_client::Error::NotFound(key) => Self::KeyNotSet(key), - libra_github_client::Error::HttpError(403, _) => Self::PermissionDenied, + diem_github_client::Error::NotFound(key) => Self::KeyNotSet(key), + diem_github_client::Error::HttpError(403, _) => Self::PermissionDenied, _ => Self::InternalError(format!("{}", error)), } } diff --git a/secure/storage/src/github.rs b/secure/storage/src/github.rs index fe621cd20a..beb5f99091 100644 --- a/secure/storage/src/github.rs +++ b/secure/storage/src/github.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoKVStorage, Error, GetResponse, KVStorage}; -use libra_github_client::Client; -use libra_secure_time::{RealTimeService, TimeService}; +use diem_github_client::Client; +use diem_secure_time::{RealTimeService, TimeService}; use serde::{de::DeserializeOwned, Serialize}; /// GitHubStorage leverages a GitHub repository to provide a file system approach to key / value diff --git a/secure/storage/src/in_memory.rs b/secure/storage/src/in_memory.rs index 8e038a15cd..ce93888e4c 100644 --- a/secure/storage/src/in_memory.rs +++ b/secure/storage/src/in_memory.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoKVStorage, Error, GetResponse, KVStorage}; -use libra_secure_time::{RealTimeService, TimeService}; +use diem_secure_time::{RealTimeService, TimeService}; use serde::{de::DeserializeOwned, Serialize}; use std::collections::HashMap; @@ -10,7 +10,7 @@ use std::collections::HashMap; /// threads (or must be wrapped by a Arc>). This provides no permission checks and simply /// is a proof of concept to unblock building of applications without more complex data stores. /// Internally, it retains all data, which means that it must make copies of all key material which -/// violates the Libra code base. It violates it because the anticipation is that data stores would +/// violates the Diem code base. It violates it because the anticipation is that data stores would /// securely handle key material. This should not be used in production. pub type InMemoryStorage = InMemoryStorageInternal; diff --git a/secure/storage/src/kv_storage.rs b/secure/storage/src/kv_storage.rs index 746e12df8e..0568b91318 100644 --- a/secure/storage/src/kv_storage.rs +++ b/secure/storage/src/kv_storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Error; diff --git a/secure/storage/src/lib.rs b/secure/storage/src/lib.rs index d7b97e480b..47346c7bcc 100644 --- a/secure/storage/src/lib.rs +++ b/secure/storage/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/secure/storage/src/namespaced_storage.rs b/secure/storage/src/namespaced_storage.rs index 1e0ee5599b..186dfd1fb5 100644 --- a/secure/storage/src/namespaced_storage.rs +++ b/secure/storage/src/namespaced_storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoKVStorage, Error, GetResponse, KVStorage, Storage}; @@ -52,7 +52,7 @@ impl CryptoKVStorage for NamespacedStorage {} mod test { use super::*; use crate::OnDiskStorage; - use libra_temppath::TempPath; + use diem_temppath::TempPath; #[test] fn test_different_namespaces() { diff --git a/secure/storage/src/on_disk.rs b/secure/storage/src/on_disk.rs index dc5863f204..6f7a8ab759 100644 --- a/secure/storage/src/on_disk.rs +++ b/secure/storage/src/on_disk.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoKVStorage, Error, GetResponse, KVStorage}; -use libra_secure_time::{RealTimeService, TimeService}; -use libra_temppath::TempPath; +use diem_secure_time::{RealTimeService, TimeService}; +use diem_temppath::TempPath; use serde::{de::DeserializeOwned, Serialize}; use serde_json::Value; use std::{ @@ -17,7 +17,7 @@ use std::{ /// intended for single threads (or must be wrapped by a Arc>). This provides no permission /// checks and simply offers a proof of concept to unblock building of applications without more /// complex data stores. Internally, it reads and writes all data to a file, which means that it -/// must make copies of all key material which violates the Libra code base. It violates it because +/// must make copies of all key material which violates the Diem code base. It violates it because /// the anticipation is that data stores would securely handle key material. This should not be used /// in production. pub type OnDiskStorage = OnDiskStorageInternal; diff --git a/secure/storage/src/policy.rs b/secure/storage/src/policy.rs index 23121ef8c4..1db61cc4b0 100644 --- a/secure/storage/src/policy.rs +++ b/secure/storage/src/policy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; @@ -35,7 +35,7 @@ impl Permission { } } -/// Id represents a Libra internal identifier for a given process. For example, safety_rules or +/// Id represents a Diem internal identifier for a given process. For example, safety_rules or /// key_manager. It is up to the Storage and its deployment to translate these identifiers into /// verifiable material. For example, the process running safety_rules may have a token that is /// intended for only safety_rules to own. The specifics are left to the implementation of the diff --git a/secure/storage/src/storage.rs b/secure/storage/src/storage.rs index ccb1c19fdd..d179595543 100644 --- a/secure/storage/src/storage.rs +++ b/secure/storage/src/storage.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ CryptoStorage, Error, GetResponse, GitHubStorage, InMemoryStorage, KVStorage, NamespacedStorage, OnDiskStorage, PublicKeyResponse, VaultStorage, }; +use diem_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}; use enum_dispatch::enum_dispatch; -use libra_crypto::ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}; use serde::{de::DeserializeOwned, Serialize}; -/// This is the Libra interface into secure storage. Any storage engine implementing this trait +/// This is the Diem interface into secure storage. Any storage engine implementing this trait /// should support both key/value operations (e.g., get, set and create) and cryptographic key /// operations (e.g., generate_key, sign and rotate_key). diff --git a/secure/storage/src/tests/github.rs b/secure/storage/src/tests/github.rs index 5c5e9e8c5f..4551b8f37b 100644 --- a/secure/storage/src/tests/github.rs +++ b/secure/storage/src/tests/github.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{tests::suite, GitHubStorage, Storage}; diff --git a/secure/storage/src/tests/in_memory.rs b/secure/storage/src/tests/in_memory.rs index d16b2106de..c6d9529aa0 100644 --- a/secure/storage/src/tests/in_memory.rs +++ b/secure/storage/src/tests/in_memory.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{tests::suite, InMemoryStorage, Storage}; diff --git a/secure/storage/src/tests/mod.rs b/secure/storage/src/tests/mod.rs index 9afcbf07a3..589a41dee2 100644 --- a/secure/storage/src/tests/mod.rs +++ b/secure/storage/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod github; diff --git a/secure/storage/src/tests/on_disk.rs b/secure/storage/src/tests/on_disk.rs index 965d33b1f5..6a969c5cd9 100644 --- a/secure/storage/src/tests/on_disk.rs +++ b/secure/storage/src/tests/on_disk.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{tests::suite, OnDiskStorage, Storage}; -use libra_temppath::TempPath; +use diem_temppath::TempPath; #[test] fn on_disk() { diff --git a/secure/storage/src/tests/suite.rs b/secure/storage/src/tests/suite.rs index faa6bcf760..d29a8bd310 100644 --- a/secure/storage/src/tests/suite.rs +++ b/secure/storage/src/tests/suite.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{CryptoStorage, Error, KVStorage, Storage}; -use libra_crypto::{ - ed25519::Ed25519PrivateKey, test_utils::TestLibraCrypto, HashValue, PrivateKey, Signature, +use diem_crypto::{ + ed25519::Ed25519PrivateKey, test_utils::TestDiemCrypto, HashValue, PrivateKey, Signature, Uniform, }; @@ -163,7 +163,7 @@ fn test_import_key(storage: &mut Storage) { // Verify valid keys - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); let message_signature = storage.sign(imported_key_name, &message).unwrap(); message_signature .verify(&message, &imported_public_key) @@ -279,7 +279,7 @@ fn test_create_sign_rotate_sign(storage: &mut Storage) { let public_key = storage.create_key(CRYPTO_NAME).unwrap(); // Create then sign message and verify correct signature - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); let message_signature = storage.sign(CRYPTO_NAME, &message).unwrap(); assert!(message_signature.verify(&message, &public_key).is_ok()); diff --git a/secure/storage/src/tests/vault.rs b/secure/storage/src/tests/vault.rs index d48d56388c..407b6eafdd 100644 --- a/secure/storage/src/tests/vault.rs +++ b/secure/storage/src/tests/vault.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,8 +6,8 @@ use crate::{ vault::{VaultEngine, VaultStorage}, Capability, CryptoStorage, Error, Identity, KVStorage, Permission, Policy, Storage, }; -use libra_crypto::{test_utils::TestLibraCrypto, Signature}; -use libra_vault_client::dev::{self, ROOT_TOKEN}; +use diem_crypto::{test_utils::TestDiemCrypto, Signature}; +use diem_vault_client::dev::{self, ROOT_TOKEN}; /// VaultStorage namespace constants const VAULT_NAMESPACE_1: &str = "namespace_1"; @@ -45,7 +45,7 @@ const VAULT_TESTS: &[fn()] = &[ test_vault_tokens, ]; -/// A test for verifying VaultStorage properly implements the LibraSecureStorage API and enforces +/// A test for verifying VaultStorage properly implements the DiemSecureStorage API and enforces /// strict separation between unique namespaces. This test depends on running Vault, which can be /// done by using the provided docker run script in `docker/vault/run.sh` #[test] @@ -257,7 +257,7 @@ fn test_vault_crypto_policies() { pubkey ); - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); // Verify exporter policy let exporter_token = storage.create_token(vec![&EXPORTER]).unwrap(); diff --git a/secure/storage/src/vault.rs b/secure/storage/src/vault.rs index 79ee7d220b..a34866a93b 100644 --- a/secure/storage/src/vault.rs +++ b/secure/storage/src/vault.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ Capability, CryptoStorage, Error, GetResponse, Identity, KVStorage, Policy, PublicKeyResponse, }; use chrono::DateTime; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, }; -use libra_infallible::RwLock; -use libra_secure_time::{RealTimeService, TimeService}; -use libra_vault_client::{self as vault, Client}; +use diem_infallible::RwLock; +use diem_secure_time::{RealTimeService, TimeService}; +use diem_vault_client::{self as vault, Client}; use serde::{de::DeserializeOwned, Serialize}; use std::{ collections::HashMap, @@ -19,15 +19,15 @@ use std::{ }; #[cfg(any(test, feature = "testing"))] -use libra_vault_client::ReadResponse; +use diem_vault_client::ReadResponse; -const LIBRA_DEFAULT: &str = "libra_default"; +const DIEM_DEFAULT: &str = "diem_default"; -/// VaultStorage utilizes Vault for maintaining encrypted, authenticated data for Libra. This +/// VaultStorage utilizes Vault for maintaining encrypted, authenticated data for Diem. This /// version currently matches the behavior of OnDiskStorage and InMemoryStorage. In the future, /// Vault will be able to create keys, sign messages, and handle permissions across different /// services. The specific vault service leveraged herein is called KV (Key Value) Secrets Engine - -/// Version 2 (https://www.vaultproject.io/api/secret/kv/kv-v2.html). So while Libra Secure Storage +/// Version 2 (https://www.vaultproject.io/api/secret/kv/kv-v2.html). So while Diem Secure Storage /// calls pointers to data keys, Vault has actually a secret that contains multiple key value /// pairs. pub struct VaultStorage { @@ -69,7 +69,7 @@ impl VaultStorage { let next_renewal = now + (ttl as u64) / 2; self.next_renewal.store(next_renewal, Ordering::Relaxed); } else if let Err(e) = result { - libra_logger::error!("Unable to renew lease: {}", e.to_string()); + diem_logger::error!("Unable to renew lease: {}", e.to_string()); } } } @@ -95,7 +95,7 @@ impl VaultStorage { let keys = match self.client().list_keys() { Ok(keys) => keys, // No keys were found, so there's no need to reset. - Err(libra_vault_client::Error::NotFound(_, _)) => return Ok(()), + Err(diem_vault_client::Error::NotFound(_, _)) => return Ok(()), Err(e) => return Err(e.into()), }; for key in keys { @@ -108,7 +108,7 @@ impl VaultStorage { fn reset_policies(&self) -> Result<(), Error> { let policies = match self.client().list_policies() { Ok(policies) => policies, - Err(libra_vault_client::Error::NotFound(_, _)) => return Ok(()), + Err(diem_vault_client::Error::NotFound(_, _)) => return Ok(()), Err(e) => return Err(e.into()), }; @@ -138,7 +138,7 @@ impl VaultStorage { /// Creates a token but uses the namespace for policies pub fn create_token(&self, mut policies: Vec<&str>) -> Result { - policies.push(LIBRA_DEFAULT); + policies.push(DIEM_DEFAULT); let result = if let Some(ns) = &self.namespace { let policies: Vec<_> = policies.iter().map(|p| format!("{}/{}", ns, p)).collect(); self.client() @@ -209,7 +209,7 @@ impl VaultStorage { match &perm.id { Identity::User(id) => self.set_policy(id, engine, name, &perm.capabilities)?, Identity::Anyone => { - self.set_policy(LIBRA_DEFAULT, engine, name, &perm.capabilities)? + self.set_policy(DIEM_DEFAULT, engine, name, &perm.capabilities)? } Identity::NoOne => (), }; @@ -366,7 +366,7 @@ impl CryptoStorage for VaultStorage { message: &T, ) -> Result { let name = self.crypto_name(name); - let mut bytes = ::seed().to_vec(); + let mut bytes = ::seed().to_vec(); lcs::serialize_into(&mut bytes, &message).map_err(|e| { Error::InternalError(format!( "Serialization of signable material should not fail, yet returned Error:{}", @@ -384,7 +384,7 @@ impl CryptoStorage for VaultStorage { ) -> Result { let name = self.crypto_name(name); let vers = self.key_version(&name, &version)?; - let mut bytes = ::seed().to_vec(); + let mut bytes = ::seed().to_vec(); lcs::serialize_into(&mut bytes, &message).map_err(|e| { Error::InternalError(format!( "Serialization of signable material should not fail, yet returned Error:{}", diff --git a/secure/storage/vault/Cargo.toml b/secure/storage/vault/Cargo.toml index 6be08309eb..6d38d899ed 100644 --- a/secure/storage/vault/Cargo.toml +++ b/secure/storage/vault/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-vault-client" +name = "diem-vault-client" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -description = "Libra's Restful Vault Client" -homepage = "https://libra.org" +description = "Diem's Restful Vault Client" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -20,16 +20,16 @@ serde_json = "1.0.60" thiserror = "1.0.22" ureq = { version = "1.5.2", features = ["json", "native-tls"], default-features = false } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0", optional = true } -libra-types = { path = "../../../types", version = "0.1.0", optional = true } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-types = { path = "../../../types", version = "0.1.0", optional = true } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" -libra-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../../../common/proptest-helpers", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0", features = ["fuzzing"] } [features] -fuzzing = ["proptest", "libra-proptest-helpers", "libra-types"] +fuzzing = ["proptest", "diem-proptest-helpers", "diem-types"] diff --git a/secure/storage/vault/src/dev.rs b/secure/storage/vault/src/dev.rs index 846f6f89dc..8b2518512e 100644 --- a/secure/storage/vault/src/dev.rs +++ b/secure/storage/vault/src/dev.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::Client; @@ -8,10 +8,10 @@ use std::{ process::{Child, Command, Stdio}, }; -static LIBRA_VAULT: Lazy> = Lazy::new(|| match VaultRunner::run() { +static DIEM_VAULT: Lazy> = Lazy::new(|| match VaultRunner::run() { Err(err) => { assert!( - std::env::var("LIBRA_REQUIRE_VAULT_TESTS").is_err(), + std::env::var("DIEM_REQUIRE_VAULT_TESTS").is_err(), "Vault is not running: {}", err ); @@ -24,7 +24,7 @@ static LIBRA_VAULT: Lazy> = Lazy::new(|| match VaultRunner:: /// This will return the vault host, if vault was started successfully. If vault is expected to be /// available, an assertion will cause this to fail. pub fn test_host_safe() -> Option { - LIBRA_VAULT.as_ref().map(|v| v.host().to_string()) + DIEM_VAULT.as_ref().map(|v| v.host().to_string()) } /// This will return the vault host or panic. @@ -128,7 +128,7 @@ fn run_vault() { let vr = VaultRunner::run(); if let Err(err) = vr { assert!( - std::env::var("LIBRA_REQUIRE_VAULT_TESTS").is_err(), + std::env::var("DIEM_REQUIRE_VAULT_TESTS").is_err(), "Vault is not running: {}", err ); diff --git a/secure/storage/vault/src/fuzzing.rs b/secure/storage/vault/src/fuzzing.rs index 6b3c48f485..ad6af96cbf 100644 --- a/secure/storage/vault/src/fuzzing.rs +++ b/secure/storage/vault/src/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,7 +7,7 @@ use crate::{ ReadSecretListResponse, ReadSecretMetadata, ReadSecretResponse, RenewTokenAuth, RenewTokenResponse, SealStatusResponse, Signature, SignatureResponse, }; -use libra_types::proptest_types::arb_json_value; +use diem_types::proptest_types::arb_json_value; use proptest::prelude::*; use serde_json::Value; use ureq::Response; diff --git a/secure/storage/vault/src/lib.rs b/secure/storage/vault/src/lib.rs index 4b3acccb29..bb0705d794 100644 --- a/secure/storage/vault/src/lib.rs +++ b/secure/storage/vault/src/lib.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] pub mod dev; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature, ED25519_PRIVATE_KEY_LENGTH}, PrivateKey, }; @@ -49,8 +49,8 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_crypto::traits::CryptoMaterialError) -> Self { +impl From for Error { + fn from(error: diem_crypto::traits::CryptoMaterialError) -> Self { Self::SerializationError(format!("{}", error)) } } diff --git a/secure/time/Cargo.toml b/secure/time/Cargo.toml index 9270050210..f4c3455057 100644 --- a/secure/time/Cargo.toml +++ b/secure/time/Cargo.toml @@ -1,15 +1,15 @@ [package] -name = "libra-secure-time" +name = "diem-secure-time" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" description = "A lightweight wrapper around time" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/secure/time/src/lib.rs b/secure/time/src/lib.rs index 76b2f65681..e6f0cef227 100644 --- a/secure/time/src/lib.rs +++ b/secure/time/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -35,7 +35,7 @@ impl RealTimeService { impl TimeService for RealTimeService { fn now(&self) -> u64 { - libra_infallible::duration_since_epoch().as_secs() + diem_infallible::duration_since_epoch().as_secs() } fn sleep(&self, seconds: u64) { diff --git a/specifications/README.md b/specifications/README.md index 532126f174..beeaf2f6e3 100644 --- a/specifications/README.md +++ b/specifications/README.md @@ -1,29 +1,29 @@ # Protocol Specification -This document describes the protocol specifications for the Libra Payment Network (LPN). The intended audience for this document are as follows: +This document describes the protocol specifications for the Diem Payment Network (LPN). The intended audience for this document are as follows: -* Virtual Asset Service Providers (VASPs), designated dealers (DDs), and other [ecosystem developers](https://libra.org/en-US/white-paper/) who build software that can interface with the LPN. +* Virtual Asset Service Providers (VASPs), designated dealers (DDs), and other [ecosystem developers](https://diem.com/en-US/white-paper/) who build software that can interface with the LPN. * Developers who work on supporting transaction validation and interface with the validation protocols. * Those interested in improving the protocol specifications and/or understanding the LPN in more detail. -The reference implementations for all LPN specifications is [Libra Core](https://github.com/libra/libra). Libra Core is maintained by the open-source developer community on behalf of the [Libra Association](https://libra.org/en-US/association/). After the initial launch of the LPN, all specification changes will be proposed via the Libra Improvement Proposals (LIP) process - which is not yet finalized and public. For expedience prior to the launch of the LPN, changes to the specification will be made directly in the documentation and code. +The reference implementations for all LPN specifications is [Diem Core](https://github.com/libra/libra). Diem Core is maintained by the open-source developer community on behalf of the [Diem Association](https://diem.com/en-US/association/). After the initial launch of the LPN, all specification changes will be proposed via the Diem Improvement Proposals (LIP) process - which is not yet finalized and public. For expedience prior to the launch of the LPN, changes to the specification will be made directly in the documentation and code. ## Overview -The Libra Association is an independent membership organization headquartered in Geneva, Switzerland. The Association's purpose is to coordinate and provide a framework of governance decision-making for the Libra network and Reserve; to oversee the operation of the Libra payment system; to facilitate the provision of services on top of the Libra Blockchain in a safe and compliant manner; and to establish social impact grant-making in support of financial inclusion. +The Diem Association is an independent membership organization headquartered in Geneva, Switzerland. The Association's purpose is to coordinate and provide a framework of governance decision-making for the Diem network and Reserve; to oversee the operation of the Diem payment system; to facilitate the provision of services on top of the Diem Blockchain in a safe and compliant manner; and to establish social impact grant-making in support of financial inclusion. -The LPN is backed by the Libra Blockchain that serves as a solid foundation for financial services, including a new global payment system that meets the daily financial needs of billions of people. The Libra blockchain was created to meet the following three requirements: +The LPN is backed by the Diem Blockchain that serves as a solid foundation for financial services, including a new global payment system that meets the daily financial needs of billions of people. The Diem blockchain was created to meet the following three requirements: * Able to scale to billions of accounts, which requires high transaction throughput, low latency, and an efficient, high-capacity storage system. * Highly secure to ensure the safety of funds and financial data. * Flexible, so that it can power future innovation in financial services. -The Libra Blockchain is designed from the ground up to holistically address these requirements and builds on the learnings from existing projects and research — a combination of innovative approaches and well-understood techniques. The [Libra whitepaper](https://developers.libra.org/docs/assets/papers/the-libra-blockchain/2019-09-26.pdf) provides much of the rationale behind the overall design. More details on the Libra Association and its mission are available on [libra.org](https://libra.org) +The Diem Blockchain is designed from the ground up to holistically address these requirements and builds on the learnings from existing projects and research — a combination of innovative approaches and well-understood techniques. The [Diem whitepaper](https://developers.diem.com/docs/assets/papers/the-diem-blockchain/2019-09-26.pdf) provides much of the rationale behind the overall design. More details on the Diem Association and its mission are available on [diem.com](https://diem.com) ## Architecture -The Libra network consists of different types of actors: +The Diem network consists of different types of actors: * **Validators**. These are run by the association members to form a network (the validator network) enabling them to share transactions between each other, synchronize blockchain state and run a consensus protocol that agrees on transaction ordering and execution. * **Full Nodes**. These can be run by anyone who wants to verify the state of the blockchain and synchronize to it. Full nodes replicate the full state of the blockchain by querying each other or by querying the validators directly, they can also forward transactions to the validators. @@ -32,11 +32,11 @@ The Libra network consists of different types of actors: * **Verifying clients**. By default, clients are bootstrapped with a state and a set of validator, and can thus be epoch-aware by syncing this state with the blockchain. This way, a verifying client can verify the proofs carried in every response they obtain from full nodes they query. A full node, for instance, is a verifying client. A developer could develop a custom verifying client with the LPN specifications for specific applications, for instance, a light weight client that only keeps the more recent subset of account state. * **Non-verifying clients**. A client might query a third-party to access the state of the blockchain without verifying the signatures from the validators. The optional JSON-RPC protocol supports this mode of operation, and developers are also free to build other systems that accomplish this task. This specification does not define how a client should find such a service. As an example, some clients could run their own full nodes that expose the JSON-RPC protocol and access these endpoints under secure channels. In this setup, a non-verifying client delegates proof verification to the full node. -Below is a recapicoin1_tmpating diagram of the Libra network. The arrow tail signifies the sender of a network request and the arrow head is the receiver of the network request. +Below is a recapixusating diagram of the Diem network. The arrow tail signifies the sender of a network request and the arrow head is the receiver of the network request. -## The Libra network +## The Diem network -![Libra network](images/libra_network.png) +![Diem network](images/diem_network.png) While a validator has a public endpoint and a validator endpoint, in order to support additional features and properties, such as the principle of least privilege, key rotation, monitoring, DoS protection, scalability, etc., it can be composed of a number of internal components. Below is an example validator architecture that addresses many of these aspects. @@ -44,7 +44,7 @@ While a validator has a public endpoint and a validator endpoint, in order to su ## Specifications -As [depicted](#The-Libra-network), there are 4 network protocol specifications: +As [depicted](#The-Diem-network), there are 4 network protocol specifications: * **[Consensus protocol](consensus/)**. This is how agreement is reached between a known set of validators assuming byzantine fault-tolerant (BFT) conditions. * **Mempool protocol**. The protocol is used between validators, between full nodes, and between validators and full nodes to quickly re-share user transactions. This is how transactions are passed upstream, eventually intending to reach a validator that proposes a block that includes these transactions. @@ -53,40 +53,40 @@ As [depicted](#The-Libra-network), there are 4 network protocol specifications: In addition, these specifications build on top of a common set of specifications: -* **[Libra canonical serialization (LCS)](https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/)**. This details how data is canonically serialized and deserialized. Hashing and signing of data structures are applied after LCS serialization. +* **[Diem canonical serialization (LCS)](https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/)**. This details how data is canonically serialized and deserialized. Hashing and signing of data structures are applied after LCS serialization. * **[Common data structures](common/data_structures.md)**. These are the data structures that are used across more than one specification. -* **[LibraNet](network/)**. This describes a handshake and wire protocol for all networking protocols. This relies on the [Noise protocol framework](https://noiseprotocol.org/) for integrity and confidentiality. +* **[DiemNet](network/)**. This describes a handshake and wire protocol for all networking protocols. This relies on the [Noise protocol framework](https://noiseprotocol.org/) for integrity and confidentiality. * **[On-chain discovery](network/onchain-discovery.md)**. This defines how clients can safely find the endpoints of the LPN validators. * **[Authenticated data structures](common/authenticated_data_structures.md)**. This describes the ledger history, ledger state, and events data structures. -* **[Move adapter and Move virtual machine (VM)](move_adapter/)**. Libra transactions are implemented as scripts in the Move programming language, and this specification defines how transactions are validated and executed using the Move VM. +* **[Move adapter and Move virtual machine (VM)](move_adapter/)**. Diem transactions are implemented as scripts in the Move programming language, and this specification defines how transactions are validated and executed using the Move VM. ## Specification upgrades -The LPN specifications are designed to support upgrades over time via the Libra Improvement Proposal (LIP) process. Unlike many other blockchains that determine when upgrades are live in mainnet through community organization and coordination, the timing for LPN specification upgrades is directed by the Libra Association. The full LPN specifications are split into smaller specifications in order to limit the affected parties. For example, the JSON-RPC client specification can be upgraded without affecting the validating service specifications and correspondingly the validating nodes (validators). Each specification is versioned sequentially beginning with 1\. Over time, the specifications may be divided or merged to balance the size of the affected parties against the overhead of maintaining and versioning separate specifications. +The LPN specifications are designed to support upgrades over time via the Diem Improvement Proposal (LIP) process. Unlike many other blockchains that determine when upgrades are live in mainnet through community organization and coordination, the timing for LPN specification upgrades is directed by the Diem Association. The full LPN specifications are split into smaller specifications in order to limit the affected parties. For example, the JSON-RPC client specification can be upgraded without affecting the validating service specifications and correspondingly the validating nodes (validators). Each specification is versioned sequentially beginning with 1\. Over time, the specifications may be divided or merged to balance the size of the affected parties against the overhead of maintaining and versioning separate specifications. The process for upgrading the LPN specifications is as follows: -1. **Seed an idea**. A Contributor should socialize their idea with the Libra developer community and Maintainers. They might create a [GitHub issue](https://github.com/libra/libra/issues) or use another means of gathering feedback. +1. **Seed an idea**. A Contributor should socialize their idea with the Diem developer community and Maintainers. They might create a [GitHub issue](https://github.com/libra/libra/issues) or use another means of gathering feedback. -2. **[Standard LIP](https://lip.libra.org/overview)**. A Contributor proposes a new standard LIP that modifies an existing specification(s) or proposes a new specification. If the standard LIP reaches the "Accepted" status, the proposed changes will be set in the new specification version as well as implemented in the Libra Core master branch. Other implementations of the protocol must follow these changes as well. +2. **[Standard LIP](https://dip.diem.com/overview)**. A Contributor proposes a new standard LIP that modifies an existing specification(s) or proposes a new specification. If the standard LIP reaches the "Accepted" status, the proposed changes will be set in the new specification version as well as implemented in the Diem Core master branch. Other implementations of the protocol must follow these changes as well. 3. **LPN upgrade**. There are two types of specification upgrades: backwards-incompatible (e.g. hard forks) or backwards-compatible (e.g. soft forks). Unlike conventional software systems, backwards-incompatible upgrades are likely to be much more common than backwards-compatible upgrades in LPN. Because the purpose of LPN is to agree on the bit-precise result of executing a computation and most specifications contribute to that result, almost every upgrade will break compatibility with previous versions. Thus, we will assume that proposed upgrades are backwards-incompatible by default and require rigorous justification to handle an upgrade as backwards-compatible. In addition, changes to the following specifications are backwards-incompatible by definition: - * Libra canonical serialization + * Diem canonical serialization * Authenticated data structures * Move virtual machine - * Libra adapter + * Diem adapter In order to describe the LPN upgrade process, we will define specification S with current in-production version V and next accepted version V+1. - * **Backwards-incompatible specification changes** The Libra Association will publicly announce that a backwards-incompatible specification change to S is occurring with V+1 and that on a production date (e.g. 3-6 months in the future), the V+1 specification will become eligible to be deployed in production. All validators and clients will be required to have already upgraded to software that can support V+1 by that point. After the production date, the Libra Association will ensure that the LPN validators have upgraded (i.e., by verifying the software versions) and after verification will submit an on-chain transaction to make V+1 active. After the transaction is committed, all clients that have upgraded will interoperate on V+1 rather than V automatically. All older software that is unable to interoperate with V+1 will fail. In summary: + * **Backwards-incompatible specification changes** The Diem Association will publicly announce that a backwards-incompatible specification change to S is occurring with V+1 and that on a production date (e.g. 3-6 months in the future), the V+1 specification will become eligible to be deployed in production. All validators and clients will be required to have already upgraded to software that can support V+1 by that point. After the production date, the Diem Association will ensure that the LPN validators have upgraded (i.e., by verifying the software versions) and after verification will submit an on-chain transaction to make V+1 active. After the transaction is committed, all clients that have upgraded will interoperate on V+1 rather than V automatically. All older software that is unable to interoperate with V+1 will fail. In summary: - 1. Libra Association announces a production date and the software versions validators and clients need to run in order to continue to interoperate with the LPN. + 1. Diem Association announces a production date and the software versions validators and clients need to run in order to continue to interoperate with the LPN. 2. Validators and clients upgrade to the prescribed software versions prior to the production date. - 3. After confirming the validators support V+1 and after the production date has passed, the Libra Association submits the necessary transaction on-chain to make V+1 live. + 3. After confirming the validators support V+1 and after the production date has passed, the Diem Association submits the necessary transaction on-chain to make V+1 live. 4. After the transaction is committed, V+1 is live in production. Validators and clients both use the V+1 version of the specification and any actors running with version V are no longer able to interoperate. - * **Backwards-compatible specification changes**. Although the version of the specification S will increase, since the previous active version V of the specification will continue to operate correctly, the Libra Association will publicly announce a deadline for the LPN validators to adopt version V+1\. This will provide clients an opportunity to know when V+1 will be supported and start leveraging V+1\. After this deadline passes, all the LPN validators will actively support the upgraded specification version V+1 and implicitly version V since version V+1 is backwards-compatible. In most cases, backwards-compatible changes will have overlapping functionality (i.e. 2 APIs for syncing transaction history, the newer one containing mores features than the previous one) and a future upgrade of the specification (e.g. V+2) may remove the duplicate functionality from V+1, making V+2 a backwards-incompatible change for V+1\. Some examples of these types of changes include LibraNet specification changes or adding new APIs for state synchronization. In summary, LPN validators upgrade to the V+1 specification by a deadline set by the Libra Association while LPN clients can optionally upgrade to the V+1 specification. + * **Backwards-compatible specification changes**. Although the version of the specification S will increase, since the previous active version V of the specification will continue to operate correctly, the Diem Association will publicly announce a deadline for the LPN validators to adopt version V+1\. This will provide clients an opportunity to know when V+1 will be supported and start leveraging V+1\. After this deadline passes, all the LPN validators will actively support the upgraded specification version V+1 and implicitly version V since version V+1 is backwards-compatible. In most cases, backwards-compatible changes will have overlapping functionality (i.e. 2 APIs for syncing transaction history, the newer one containing mores features than the previous one) and a future upgrade of the specification (e.g. V+2) may remove the duplicate functionality from V+1, making V+2 a backwards-incompatible change for V+1\. Some examples of these types of changes include DiemNet specification changes or adding new APIs for state synchronization. In summary, LPN validators upgrade to the V+1 specification by a deadline set by the Diem Association while LPN clients can optionally upgrade to the V+1 specification. 4. **Finalize upgrade**. After the upgrade is running in production, all productionized LIPs move from "Accepted" to "Final". Additionally, the specifications listed in production are updated. diff --git a/specifications/common/authenticated_data_structures.md b/specifications/common/authenticated_data_structures.md index 13eaa13978..980f14e0e8 100644 --- a/specifications/common/authenticated_data_structures.md +++ b/specifications/common/authenticated_data_structures.md @@ -2,9 +2,9 @@ ## Overview -This document is intended to provide a specification for authenticated data structures used in the Libra protocol. +This document is intended to provide a specification for authenticated data structures used in the Diem protocol. -All data in the Libra Blockchain is stored in a single versioned database. A version number is an unsigned 64-bit integer that corresponds to the number of transactions the system has executed. At each version `i`, the database contains a tuple (Ti, Oi , Si) representing the transaction (Ti), transaction output (Oi), and ledger state (Si). Given a deterministic execution function `Apply`, the meaning of the tuple is: executing transaction Ti against ledger state Si−1 produces output Oi and a new ledger state Si; that is, `Apply`(Si−1, Ti) -> ⟨Oi , Si⟩. The genesis transaction (T0) is applied on an empty database, which produces the genesis state (S0). +All data in the Diem Blockchain is stored in a single versioned database. A version number is an unsigned 64-bit integer that corresponds to the number of transactions the system has executed. At each version `i`, the database contains a tuple (Ti, Oi , Si) representing the transaction (Ti), transaction output (Oi), and ledger state (Si). Given a deterministic execution function `Apply`, the meaning of the tuple is: executing transaction Ti against ledger state Si−1 produces output Oi and a new ledger state Si; that is, `Apply`(Si−1, Ti) -> ⟨Oi , Si⟩. The genesis transaction (T0) is applied on an empty database, which produces the genesis state (S0). The format of transaction and the `Apply` function are specified in XXX. The remaining of this document specifies: @@ -14,7 +14,7 @@ The format of transaction and the `Apply` function are specified in XXX. The rem ## Merkle Trees and Proofs -Authenticated data structures in the Libra protocol are based on Merkle trees. Like all the other Merkle trees, the root hash of a tree is a short authenticator, which forms a binding commitment to the entire tree that holds a large data structure. When a client queries an untrusted server for a specific part of the tree, the server returns the result with a short proof, and the client is able to verify the result using the proof and the authenticator. In this section we describe specific Merkle trees used in the Libra protocol which form the basic building blocks. +Authenticated data structures in the Diem protocol are based on Merkle trees. Like all the other Merkle trees, the root hash of a tree is a short authenticator, which forms a binding commitment to the entire tree that holds a large data structure. When a client queries an untrusted server for a specific part of the tree, the server returns the result with a short proof, and the client is able to verify the result using the proof and the authenticator. In this section we describe specific Merkle trees used in the Diem protocol which form the basic building blocks. ### Hash Function @@ -128,7 +128,7 @@ fn verify_accumulator_proof( #### Definition -The sparse Merkle tree used in Libra protocol stores a key-value map, where all the keys are 256-bit byte arrays and values are arbitrary objects that are serializable as binary blobs. Sparse Merkle tree is also a binary tree, and each leaf in the tree corresponds to an entry in the map. Unlike Merkle Accumulator where objects are immutable once appended, sparse Merkle tree supports updating existing entries as well as adding and removing entries. +The sparse Merkle tree used in Diem protocol stores a key-value map, where all the keys are 256-bit byte arrays and values are arbitrary objects that are serializable as binary blobs. Sparse Merkle tree is also a binary tree, and each leaf in the tree corresponds to an entry in the map. Unlike Merkle Accumulator where objects are immutable once appended, sparse Merkle tree supports updating existing entries as well as adding and removing entries. Given a map of key-value pairs, the sparse Merkle tree is constructed as follows. Using a prefix tree, we can represent a set of 2256 entries. For simplicity, 4-bit keys are used in the examples. The diagram below shows a tree with 3 entries, where the keys are `0b0100`, `0b1000` and `0b1011`. @@ -183,7 +183,7 @@ trait SparseMerkleTree { } ``` -It is also possible to delete an entry from the tree, but the Libra protocol does not utilize this functionality at the moment. +It is also possible to delete an entry from the tree, but the Diem protocol does not utilize this functionality at the moment. #### Proof format and verification @@ -280,13 +280,13 @@ fn verify_sparse_merkle_proof( } ``` -## Libra Data Structure +## Diem Data Structure -The previous section described Merkle accumulator and sparse Merkle tree that form the basic building blocks of authenticated data structure used in the Libra Payment Network (LPN). In this section we describe the specific objects that build LPN. +The previous section described Merkle accumulator and sparse Merkle tree that form the basic building blocks of authenticated data structure used in the Diem Payment Network (LPN). In this section we describe the specific objects that build LPN. ### Ledger State -The ledger state represents the ground truth about the Libra ecosystem, including the quantity of coins held by each user at a given version. Each validator must know the ledger state at the latest version in order to execute new transactions. Specifically, the ledger state is a map from `AccountAddress` to a binary blob `AccountStateBlob` that represents the state of an account. +The ledger state represents the ground truth about the Diem ecosystem, including the quantity of coins held by each user at a given version. Each validator must know the ledger state at the latest version in order to execute new transactions. Specifically, the ledger state is a map from `AccountAddress` to a binary blob `AccountStateBlob` that represents the state of an account. Each `AccountAddress` is hashed to a 256-bit `HashValue`. Then each `(hash(address), account_state_blob)` tuple is inserted into a sparse Merkle tree as a key-value pair. Based on the properties of cryptographic hash functions, we can assume that the resulting sparse Merkle tree is balanced no matter how the addresses are generated. This sparse Merkle tree represents the entire ledger state and the root hash of this tree is the state root hash, which means the state root hash is the authenticator for any account state at the same version. @@ -300,7 +300,7 @@ When the state tree is updated after the execution of a transaction and a new tr #### Accounts -At the logical level, an account is a collection of Move resources and modules. At the physical level, an account is an ordered map of access paths to byte array values. TODO: link to definition of access path. When an account is stored in the ledger state, the ordered map is serialized using Libra Canonical Serialization (LCS) to create a binary blob `AccountStateBlob` that gets inserted into a sparse Merkle tree. +At the logical level, an account is a collection of Move resources and modules. At the physical level, an account is an ordered map of access paths to byte array values. TODO: link to definition of access path. When an account is stored in the ledger state, the ordered map is serialized using Diem Canonical Serialization (LCS) to create a binary blob `AccountStateBlob` that gets inserted into a sparse Merkle tree. ```rust type Path = Vec; @@ -371,9 +371,9 @@ type LedgerHistory = MerkleAccumulator; Therefore, the root hash of the ledger history accumulator acts as the authenticator for all the `TransactionInfo` objects, which in turn authenticate everything that has happened on the Blockchain, including all the transactions, current and historical ledger state, and all the contract events that were emitted. When the network is running, the consensus protocol will periodically distributed signed `LedgerInfo` which contains the root hash. Clients can use this to verify anything linked to the root of the accumulator. -## Examples of using authenticated data structure in Libra +## Examples of using authenticated data structure in Diem -In the previous sections, we have specified the basic building blocks such as Merkle accumulator and sparse Merkle tree, as well as how the Libra data structures are constructed based on these Merkle trees. Here we give a few concrete examples of how clients can utilize the data structures to authenticate the responses they get from the server. +In the previous sections, we have specified the basic building blocks such as Merkle accumulator and sparse Merkle tree, as well as how the Diem data structures are constructed based on these Merkle trees. Here we give a few concrete examples of how clients can utilize the data structures to authenticate the responses they get from the server. In this section, we always assume that the client has obtained the latest `LedgerInfo`, as well as enough signatures on this `LedgerInfo`. Therefore the client knows the latest root hash of the ledger history accumulator, which is part of the `LedgerInfo` struct. diff --git a/specifications/common/data_structures.md b/specifications/common/data_structures.md index 29e3e81850..6299d1cfd9 100644 --- a/specifications/common/data_structures.md +++ b/specifications/common/data_structures.md @@ -2,7 +2,7 @@ ## Overview -This specification describes several common data structures used across various Libra Payment Network (LPN) specifications. +This specification describes several common data structures used across various Diem Payment Network (LPN) specifications. ## Terminology @@ -15,7 +15,7 @@ Similar to all other LPN specifications, we use Rust to describe all data struct ### AccountAddress -This represents a 128-bit Libra account address. +This represents a 128-bit Diem account address. ```rust struct AccountAddress([u8; 16]); diff --git a/specifications/consensus/README.md b/specifications/consensus/README.md index 161806a496..ed0caf1a2c 100644 --- a/specifications/consensus/README.md +++ b/specifications/consensus/README.md @@ -2,7 +2,7 @@ ## Overview -The consensus specification describes the mechanism used by the Libra Payment Network (LPN) validators to agree on both ordering and transaction execution output under byzantine fault-tolerant (BFT) conditions - at most _f_ validators (where _f_ < (_all validators_)/3) are faulty or malicious. Currently, the consensus specification is an implementation of _LibraBFT_, a BFT consensus protocol that ensures liveness and safety under partial synchrony. The [LibraBFT whitepaper](https://developers.libra.org/docs/state-machine-replication-paper) describes a high level overview of the protocol, the liveness and safety proofs, and a rationale on why LibraBFT was adopted for the LPN. This document specifies how to implement the LibraBFT protocol in order to participate as a validating node in the LPN. +The consensus specification describes the mechanism used by the Diem Payment Network (LPN) validators to agree on both ordering and transaction execution output under byzantine fault-tolerant (BFT) conditions - at most _f_ validators (where _f_ < (_all validators_)/3) are faulty or malicious. Currently, the consensus specification is an implementation of _DiemBFT_, a BFT consensus protocol that ensures liveness and safety under partial synchrony. The [DiemBFT whitepaper](https://developers.diem.com/docs/state-machine-replication-paper) describes a high level overview of the protocol, the liveness and safety proofs, and a rationale on why DiemBFT was adopted for the LPN. This document specifies how to implement the DiemBFT protocol in order to participate as a validating node in the LPN. This document is organized as follows: @@ -12,7 +12,7 @@ This document is organized as follows: 4. [Abstracted modules](#Abstracted-modules) - The components this specification depends on. 5. [Consensus modules](#Consensus-modules) - The components built upon common data structures that are described as a part of this specification. -All network communication occurs over LibraNet and any serialization, deserialization and hashing is determined by [LCS](https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/). +All network communication occurs over DiemNet and any serialization, deserialization and hashing is determined by [LCS](https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/). ## Architecture @@ -941,7 +941,7 @@ Fields * `block_store`: the current block store we have, specified in [block store](#blockstore). * `proposer_election`: decides the proposer of each round, specified in [proposer election](#proposer-election). * `proposal_generator`: decide how to propose a block of transactions, specified in [proposal generator](#proposal-generator). -* `safety_rules`: the voting and commit rule of LibraBFT, specified in [safety rules](#safety-rules). +* `safety_rules`: the voting and commit rule of DiemBFT, specified in [safety rules](#safety-rules). The initial state is constructed with an initial `LedgerInfo` on a genesis transaction following the reconfiguration state transition. @@ -1030,7 +1030,7 @@ fn certificate_for_genesis(ledger_info: LedgerInfoWithSignatures) -> QuorumCert * a validator is free to prune any data from the previous epoch in PersistentStorage after the transition to a new epoch. * genesis block and its quorum cert/commit cert are locally generated from previous end-epoch LedgerInfoWithSignatures's **deterministic** fields -* the Libra network is bootstrapped with a genesis transaction (note the different from genesis block) and a ledger_info commits it with next_epoch_state set. +* the Diem network is bootstrapped with a genesis transaction (note the different from genesis block) and a ledger_info commits it with next_epoch_state set. #### ConsensusMsg diff --git a/specifications/crypto/README.md b/specifications/crypto/README.md index ec2a5b9f44..896a26150d 100644 --- a/specifications/crypto/README.md +++ b/specifications/crypto/README.md @@ -3,20 +3,20 @@ ## Overview The consensus specification describes the cryptographic operations used for -hashing, signing and verifying throughout the Libra Payment Network, as well as +hashing, signing and verifying throughout the Diem Payment Network, as well as on transactions submitted to this network. We do not specify any of one of these algorithms from first principles, but leverage and refer to existing specifications, while laying out exhastively where our implementation choices differ from the existant standards. Our implementation choices as described are expected to undergo future improvement -through [Libra Improvement Processes](https://github.com/libra/lip) (LIPs). +through [Diem Improvement Processes](https://github.com/libra/lip) (LIPs). ## Algorithms ### Signature and verification -Libra uses EdDSA with Curve25519 as its workhorse algorithm, both internally +Diem uses EdDSA with Curve25519 as its workhorse algorithm, both internally for the consensus and for signing transactions. #### Algorithmic choices @@ -26,10 +26,10 @@ The Ed25519 algorithm is standardized by the Internet Engineering Task Force (IE 186-5](https://csrc.nist.gov/publications/detail/fips/186/5/draft). The corresponding OID is [1.3.101.112](http://oid-info.com/get/1.3.101.112). -Libra's implementation of EdDSA makes choices and slight variations from these +Diem's implementation of EdDSA makes choices and slight variations from these standards in ways that we make precise below: -* Libra uses the PureEdDSA variant of Ed25519 described in RFC 8032. Indeed, +* Diem uses the PureEdDSA variant of Ed25519 described in RFC 8032. Indeed, both RFC 8032 and FIPS 186-5 also specify a pre-hashing mode for their variants, whereby the message `m` taken as input to the signature algorithm is replaced by a pre-hashed image `PH(m)`, with `PH` a customizable hash @@ -57,7 +57,7 @@ standards in ways that we make precise below: #### On cofactored vs. cofactor-less verification -Libra a uses cofactor-less verification equation. We note that cofactor-less +Diem a uses cofactor-less verification equation. We note that cofactor-less verification is stricter than cofactored verification, and that a signer that follows either RFC 8032 or FIPS 186-5 will never produce a signature that passes cofactored verification yet fails cofactorless verification. @@ -72,7 +72,7 @@ Nonetheless, there are good reasons to adopt cofactored verification: Unfortunately, off-the-shelf EdDSA implementations overwhelmingly use cofactor-less verification. This presents a security concern specific to the blockchain context, as a third-party validator implementation may not be able -to comply with a Libra specification that would mandate cofactored verification +to comply with a Diem specification that would mandate cofactored verification (if unable or unwilling to develop their own Ed25519 library). If this otherwise honest third-party validator was then to run cofactor-less @@ -89,14 +89,14 @@ makes the other choice practical. ### Hashing -Libra uses +Diem uses [SHA3-256](https://www.nist.gov/publications/sha-3-standard-permutation-based-hash-and-extendable-output-functions?pub_id=919061) as its go-to algorithm. This is the sole algorithm used in _internal_ hashes, meaning hashing where the -input and output are for consumption by Libra code and data structures. +input and output are for consumption by Diem code and data structures. -Libra also uses other hashing functions when conforming to an external +Diem also uses other hashing functions when conforming to an external specification, or calling into external libraries. In particular, we would like to highlight: @@ -108,11 +108,11 @@ to highlight: RFC 8032). These external uses notwithstanding, SHA3-256 is the only hashing function -exposed to the Libra developer. +exposed to the Diem developer. ## Domain separation -In Libra, we are signing large values (transactions, block proposals), which +In Diem, we are signing large values (transactions, block proposals), which are therefore hashed as a standard prequel of signing. If the hashes for two distinct values somehow matched, this could have catastrophic consequences —a malicious actor could lead you to sign a weird transaction with one expected meaning, which in @@ -120,13 +120,13 @@ fact would produce a signature for something actually different. How would this happen? We use cryptographically secure hash functions that are collision-resistant, so it's improbable that two distinct hashing inputs would -produce the same hash. However, when we hash Libra values, we hash their +produce the same hash. However, when we hash Diem values, we hash their serialized bytes. A serialization library is in general not collision resistant, so we have to add extra precautions for this purpose, something called domain separation. We describe our [serialization](Serialization) in the next section. For the -moment, suffice to say that for every Libra data structure, we also define +moment, suffice to say that for every Diem data structure, we also define and specify a domain separator. More specifically, the domain separator [starts with a @@ -134,7 +134,7 @@ prefix](https://github.com/libra/libra/blob/ca14568db9df8c7008dfc6698392ef479e01 defined as an ASCII-encoded byte-string: ```rust -"LIBRA::" +"DIEM::" ``` This is concatenated with the @@ -149,7 +149,7 @@ occur over time, at least for the purpose of versioning. Our serialization library includes tooling to [extract the latest serialization specification](https://github.com/libra/libra/tree/master/testsuite/generate-format/tests/staged), including the trace name, from code, and developers are advised to look for -changes therein across Libra releases. +changes therein across Diem releases. We will look at how the domain separator defined in this section is used [below](#Signing and Verifying). @@ -157,8 +157,8 @@ We will look at how the domain separator defined in this section is used ## Serialization Serialization of a payload is done using -[LCS](https://developers.libra.org/docs/rustdocs/libra_canonical_serialization/). This -serialization library guarantees deterministic serialization for any Libra data +[LCS](https://developers.diem.com/docs/rustdocs/diem_canonical_serialization/). This +serialization library guarantees deterministic serialization for any Diem data structure. This library leverages the ubiquitous serde serialization and deserialization framework @@ -170,7 +170,7 @@ format description and polyglot code generator for serde. ## Signing and Verifying -Signing a Libra data structure (including e.g. `RawTransaction` or +Signing a Diem data structure (including e.g. `RawTransaction` or `BlockData`), or verifying a signature thereof, involves the following steps: - producing the byte representation of the message that data structure consists @@ -184,7 +184,7 @@ This byte representation is composed of two parts: the hash of the domain separator, concatenated with the serialized bytes of the data structure. The domain separator and hash are as defined above. -That is, if `v` is the Libra value we aim to sign, the bytes sent to the +That is, if `v` is the Diem value we aim to sign, the bytes sent to the signing or verification algorithm are: `SHA3-256( domain_separator(type_of(v)) ) ∥ lcs_bytes(v)` @@ -198,19 +198,19 @@ first 32 bytes of the binary representation exactly. ### In Rust -In the Libra code base, any structure that implements the derivable +In the Diem code base, any structure that implements the derivable `CryptoHash` trait and `Serialize` can be passed in message position to the `sign` function implemented on private keys, and to the `verify` function implemented on public keys and signatures. The construction of the binary representation is performed implicitly. -When defining a new data structure in the Libra code base, the developer should +When defining a new data structure in the Diem code base, the developer should implement `Serialize`, and derive `CryptoHasher` and `LCSCryptoHash` by annotation. The `CryptoHash` trait will be derived automatically. ## Multi-signatures -Libra also supports a transaction signature format which implements +Diem also supports a transaction signature format which implements multi-signatures, with signer accountability. This type of signature supports K out-of N semantics, for K ≤ N ≤ 32. diff --git a/specifications/db_backup/spec.md b/specifications/db_backup/spec.md index 00989b1dae..ffc6e975ab 100644 --- a/specifications/db_backup/spec.md +++ b/specifications/db_backup/spec.md @@ -1,9 +1,9 @@ -# LibraDB Backup +# DiemDB Backup -Libra nodes runs on top of [LibraDB](../../storage/libradb) that serves the [core data stucture](../data_structure/spec.md) to other parts of the system. While the LibraDB is designed to provide efficient access to the recent history of the block chain, and append data to it, the LibraDB Backup is a concise data format to archive the full history of the chain, away from the running Libra validator network. It's useful in at least these situations: +Diem nodes runs on top of [DiemDB](../../storage/diemdb) that serves the [core data stucture](../data_structure/spec.md) to other parts of the system. While the DiemDB is designed to provide efficient access to the recent history of the block chain, and append data to it, the DiemDB Backup is a concise data format to archive the full history of the chain, away from the running Diem validator network. It's useful in at least these situations: -* In case a validator lost its LibraDB, restoring the full transaction history from a backup is supposed to be 10x or more faster than replying on synchronizing from a peer. -* In case of a fatal bug in the software destroying the DB on every single Libra Node, we can recover the network using the backups. The backups are not likely to be corrupt at the same time because the format is 1. Different; 2. Simple. +* In case a validator lost its DiemDB, restoring the full transaction history from a backup is supposed to be 10x or more faster than replying on synchronizing from a peer. +* In case of a fatal bug in the software destroying the DB on every single Diem Node, we can recover the network using the backups. The backups are not likely to be corrupt at the same time because the format is 1. Different; 2. Simple. * If a fork ever happens, and we plan to make resolve and converge the branches, this piece of history can still be archived in the form of backups. @@ -23,13 +23,13 @@ pub type FileHandle = String; pub struct TextLine(String); ``` -A LibraDB **backup storage** stores **backups** and **metadata lines**. +A DiemDB **backup storage** stores **backups** and **metadata lines**. Each of the **backups** contains information that reflects different aspects of the blockchain history. It is identified by its manifest file (human readable, in JSON), which can contain links to data files. Depending on the specific type of backup, the content differs. The backup system doesn’t care about how physically the storage organizes backups, it dumps backups as group of files (although it does try to hint the storage that the group are related to each other, see the [Backup Storage interface](#backup-storage-interface)), asking back one single FileHandle to identify the whole backup. The restore system takes `FileHandle`s pointing to manifests, it’s up to the human / external system to decide which manifests are relevant, probably based on the **metadata**. Among other purposes, **Metadata lines** mainly serve as an index of all the backups in the storage. After each backup is written to the storage, the backup system put in one line of metadata, containing the FileHandle it just got from the storage. One can get a complete picture of what's in a backup storage by looking at all the metadata lines. Similar to files in a backup, the backup system doesn't care about how the storage organizes the metadata lines, each line can be a separate file or a DB record. -At this point we backup three essential types of the information, with which a LibraDB can be popped up and start supporting the functionality of a Validator or a Full Node. It describes below each of the backup types: +At this point we backup three essential types of the information, with which a DiemDB can be popped up and start supporting the functionality of a Validator or a Full Node. It describes below each of the backup types: ### TransactionBackup @@ -141,7 +141,7 @@ pub struct StateSnapshotBackup { } ``` -With a state tree at a certain version, transactions can be executed on top of that version. This is essential for a Libra node to start synchronizing new transactions from other nodes, as well as a Validator to proposal and commit blocks. +With a state tree at a certain version, transactions can be executed on top of that version. This is essential for a Diem node to start synchronizing new transactions from other nodes, as well as a Validator to proposal and commit blocks. Note that it's possible to restore a DB from empty by applying all transactions from the beginning, without the need for a state snapshot, but it can be extremely painful when the blockchain grows big. @@ -179,7 +179,7 @@ pub struct TransactionBackupMeta { ![Restore](../images/db_backup_restore_flow.png) -It's shown above the intended structure of the Libra backup and restore workflow, discussed in detail by components below. +It's shown above the intended structure of the Diem backup and restore workflow, discussed in detail by components below. ## Backup Storage interface @@ -294,7 +294,7 @@ Example config for a S3 storage based on the aws-cli command line: ```toml [[env_vars]] key = "BUCKET_AND_PREFIX" -value = "libra-backup/backup1" +value = "diem-backup/backup1" [commands] create_backup = 'echo "$BACKUP_NAME"' @@ -304,10 +304,10 @@ save_metadata_line= 'aws s3 cp - "s3://$BUCKET_AND_PREFIX/metadata/$FILE_NAME"' list_metadata_files = 'aws s3 ls s3://$BUCKET_AND_PREFIX/metadata/ | sed -ne "s/.* //p" | xargs -I{} echo s3://$BUCKET/metadata/{}' ``` -This will create a folder structure like the following in the s3 bucket libra-backup: +This will create a folder structure like the following in the s3 bucket diem-backup: ``` -s3://libra-backup/backup1/ +s3://diem-backup/backup1/ metadata/ epoch_ending_0-0.meta state_snapshot_ver_0.meta @@ -333,9 +333,9 @@ s3://libra-backup/backup1/ ... ``` -## Backup service inside of a Libra Validator/Full node +## Backup service inside of a Diem Validator/Full node -Since the DB we are backing up from is likely to be already open (and actively operated on) by a Libra Validator / Full Node, access to the DB by the backup system is done in the same process, as the Backup Service. The service is open to localhost only, as a preliminary security measure, and is supposed to be accessed only by the `BackupController` described below. The protocol between them is deemed private to the Libra implementation and in reality its in LCS over HTTP. +Since the DB we are backing up from is likely to be already open (and actively operated on) by a Diem Validator / Full Node, access to the DB by the backup system is done in the same process, as the Backup Service. The service is open to localhost only, as a preliminary security measure, and is supposed to be accessed only by the `BackupController` described below. The protocol between them is deemed private to the Diem implementation and in reality its in LCS over HTTP. ## Backup Controllers @@ -345,12 +345,12 @@ A BackupCoordinator is implemented as well, which runs in the background and mon ## Restore Controllers -Similar to the Backup controller, a RestoreController glues the functionality of a BackupStorage and the LibraDb. The difference is a RestoreController operates directly on an (potentially empty) DB, without the dependency on a running Node. A node is instead supposed to be started on top of a DB created by the controllers. +Similar to the Backup controller, a RestoreController glues the functionality of a BackupStorage and the DiemDb. The difference is a RestoreController operates directly on an (potentially empty) DB, without the dependency on a running Node. A node is instead supposed to be started on top of a DB created by the controllers. -To create a LibraDB from scratch, on top of which a validator can boot and join the network, one usually needs to pick a state snapshot at version V, and a target version T and do the following: +To create a DiemDB from scratch, on top of which a validator can boot and join the network, one usually needs to pick a state snapshot at version V, and a target version T and do the following: 1. Recover EpochEnding backup from epoch 0 all the way to the one which right precedes version T. -3. (Optional, but supposed to do in Libra V1, since Libra nodes doesn't work on partial transaction history in V1.) Restore transactions from 0 to V to DB. +3. (Optional, but supposed to do in Diem V1, since Diem nodes doesn't work on partial transaction history in V1.) Restore transactions from 0 to V to DB. 2. Recover the state snapshot at version V. 4. Replay transactions from version V+1 to T to recreate state at version T. diff --git a/specifications/images/libra_network.png b/specifications/images/diem_network.png similarity index 100% rename from specifications/images/libra_network.png rename to specifications/images/diem_network.png diff --git a/specifications/images/libranet_network_topology.png b/specifications/images/diemnet_network_topology.png similarity index 100% rename from specifications/images/libranet_network_topology.png rename to specifications/images/diemnet_network_topology.png diff --git a/specifications/mempool/README.md b/specifications/mempool/README.md index 36ffb1c4bf..b985eb9bf7 100644 --- a/specifications/mempool/README.md +++ b/specifications/mempool/README.md @@ -2,7 +2,7 @@ ## Abstract -This document describes the spec of a Libra node's mempool component, +This document describes the spec of a Diem node's mempool component, which is responsible for accepting transaction submitted from other nodes or directly to the node and relaying them to consensus. @@ -10,13 +10,13 @@ This document is organized as follows: 1. Overview: high-level outline of the mempool architecture 2. Module Specifications: spec of mempool components -3. Network Protocol: the Mempool LibraNet protocol used to participate in the Libra +3. Network Protocol: the Mempool DiemNet protocol used to participate in the Diem Payment Network 4. Abstracted Modules: external components that mempool interfaces with ## Overview -Mempool is a system component of the Libra node that is responsible for accepting, +Mempool is a system component of the Diem node that is responsible for accepting, validating, and prioritizing, and broadcasting pending transactions. Mempool consists of a local memory-buffer that holds the transactions that diff --git a/specifications/move_adapter/README.md b/specifications/move_adapter/README.md index 89cb73ec78..ff47d14b4d 100644 --- a/specifications/move_adapter/README.md +++ b/specifications/move_adapter/README.md @@ -20,12 +20,12 @@ The following diagram shows how the Move Adapter fits into the system. ![abstract](../images/move_adapter.png) The **Move Adapter** uses a **[Move Virtual Machine](#Move-VM)** (VM) -to execute code in the context of the Libra ecosystem. -The Move VM is not aware of the structure and semantics of Libra transactions, -nor is it aware of the Libra storage layer; it only knows how to execute Move functions. -It is the adapter's job to use the VM in a way that honors the Libra protocol. +to execute code in the context of the Diem ecosystem. +The Move VM is not aware of the structure and semantics of Diem transactions, +nor is it aware of the Diem storage layer; it only knows how to execute Move functions. +It is the adapter's job to use the VM in a way that honors the Diem protocol. -We will describe the Move Adapter and the Move VM architecture in Libra and how they share responsibilities. +We will describe the Move Adapter and the Move VM architecture in Diem and how they share responsibilities. ## Validation @@ -98,7 +98,7 @@ pub struct RawTransaction { /// Price to be paid per gas unit. gas_unit_price: u64, - /// The currency code, e.g., "LBR", used to pay for gas. The `max_gas_amount` + /// The currency code, e.g., "XDX", used to pay for gas. The `max_gas_amount` /// and `gas_unit_price` values refer to units of this currency. gas_currency_code: String, @@ -109,7 +109,7 @@ pub struct RawTransaction { /// in the future to indicate that a transaction does not expire. expiration_timestamp_secs: u64, - /// Chain ID of the Libra network this transaction is intended for. + /// Chain ID of the Diem network this transaction is intended for. chain_id: ChainId, } @@ -165,15 +165,15 @@ The adapter performs the following steps for any transaction, regardless of the * Check if the signature in the `SignedTransaction` is consistent with the public key and the `RawTransaction` content. If not, this check fails with an `INVALID_SIGNATURE` status code. Note that comparing the transaction's public key against the sender account's authorization key is done separately in Move code. -* Check that the `gas_currency_code` in the `RawTransaction` is a name composed of ASCII alphanumeric characters where the first character is a letter. If not, validation will fail with an `INVALID_GAS_SPECIFIER` status code. Note that this check does not ensure that the name corresponds to a currency recognized by the Libra Framework. +* Check that the `gas_currency_code` in the `RawTransaction` is a name composed of ASCII alphanumeric characters where the first character is a letter. If not, validation will fail with an `INVALID_GAS_SPECIFIER` status code. Note that this check does not ensure that the name corresponds to a currency recognized by the Diem Framework. -* Normalize the `gas_unit_price` from the `RawTransaction` to the Libra (LBR) currency. If the the validation is successful, the normalized gas price is returned as the `score` field of the `VMValidatorResult` for use in prioritizing the transaction. The normalization is calculated using the `to_lbr_exchange_rate` field of the on-chain `CurrencyInfo` for the specified gas currency. This can fail with a status code of `CURRENCY_INFO_DOES_NOT_EXIST` if the exchange rate cannot be retrieved. +* Normalize the `gas_unit_price` from the `RawTransaction` to the Diem (XDX) currency. If the the validation is successful, the normalized gas price is returned as the `score` field of the `VMValidatorResult` for use in prioritizing the transaction. The normalization is calculated using the `to_xdx_exchange_rate` field of the on-chain `CurrencyInfo` for the specified gas currency. This can fail with a status code of `CURRENCY_INFO_DOES_NOT_EXIST` if the exchange rate cannot be retrieved. * Load the `RoleId` resource from the sender's account. If the the validation is successful, this value is returned as the `governance_role` field of the `VMValidatorResult` so that the client can choose to prioritize governance transactions. ### Gas and Size Checks -Next, there are a series of checks related to the transaction size and gas parameters. These checks are performed for `Script` and `Module` payloads, but not for `WriteSet` transactions. The constraints for these checks are defined by the `GasConstants` structure in the `LibraVMConfig` module. +Next, there are a series of checks related to the transaction size and gas parameters. These checks are performed for `Script` and `Module` payloads, but not for `WriteSet` transactions. The constraints for these checks are defined by the `GasConstants` structure in the `DiemVMConfig` module. * Check if the transaction size exceeds the limit specified by the `max_transaction_size_in_bytes` field of `GasConstants`. If the transaction is too big, validation fails with a `EXCEEDED_MAX_TRANSACTION_SIZE` status code. @@ -185,13 +185,13 @@ Next, there are a series of checks related to the transaction size and gas param ### Prologue Checks -The rest of the validation is performed in Move code, which is run using the Move VM with gas metering disabled. Each kind of transaction payload has a corresponding prologue function that is used for validation. These prologue functions are defined in the `LibraAccount` module of the Libra Framework: +The rest of the validation is performed in Move code, which is run using the Move VM with gas metering disabled. Each kind of transaction payload has a corresponding prologue function that is used for validation. These prologue functions are defined in the `DiemAccount` module of the Diem Framework: -* `Script`: The prologue function is `script_prologue`. In addition to the common checks listed below, it also calls the `is_script_allowed` function in the `LibraTransactionPublishingOption` module with the hash of the script bytecode to check if it is on the list of allowed scripts. If not, validation fails with an `UNKNOWN_SCRIPT` status code. +* `Script`: The prologue function is `script_prologue`. In addition to the common checks listed below, it also calls the `is_script_allowed` function in the `DiemTransactionPublishingOption` module with the hash of the script bytecode to check if it is on the list of allowed scripts. If not, validation fails with an `UNKNOWN_SCRIPT` status code. -* `Module`: The prologue function is `module_prologue`. In addition to the common checks listed below, it also calls the `is_module_allowed` function in the `LibraTransactionPublishingOption` module to see if publishing is allowed for the transaction sender. If not, validation fails with a `INVALID_MODULE_PUBLISHER` status code. +* `Module`: The prologue function is `module_prologue`. In addition to the common checks listed below, it also calls the `is_module_allowed` function in the `DiemTransactionPublishingOption` module to see if publishing is allowed for the transaction sender. If not, validation fails with a `INVALID_MODULE_PUBLISHER` status code. -* `WriteSet`: The prologue function is `writeset_prologue`. In addition to the common checks listed below, it also checks that the sender is the Libra root address and that `Roles::has_libra_root_role(sender)` is true. If those checks fail, the status code is set to `REJECTED_WRITE_SET`. +* `WriteSet`: The prologue function is `writeset_prologue`. In addition to the common checks listed below, it also checks that the sender is the Diem root address and that `Roles::has_diem_root_role(sender)` is true. If those checks fail, the status code is set to `REJECTED_WRITE_SET`. The following checks are performed by all the prologue functions: @@ -246,7 +246,7 @@ The delay in accepting any transaction for that account is a function of the val in refreshing the view. If a validator can be "stalled" into a view, a user may be locked out of the system and unable to submit transactions. What is a tolerable delay? -Can administrative accounts (e.g., LibraRoot) be locked out of the system? +Can administrative accounts (e.g., DiemRoot) be locked out of the system? * Configuration updates: The validator must be restarted after a configuration update, and failure to notice an update may result in inconsistent behavior of the entire system. @@ -255,9 +255,9 @@ Can administrative accounts (e.g., LibraRoot) be locked out of the system? ### Monitoring and Logging * Monitoring: - - `libra_vm_transactions_validated`: Number of transactions processed by the validator, with either "success" or "failure" labels - - `libra_vm_txn_validation_seconds`: Histogram of validation time (in seconds) per transaction - - `libra_vm_critical_errors`: Counter for critical internal errors; intended to trigger alerts, not for display on a dashboard + - `diem_vm_transactions_validated`: Number of transactions processed by the validator, with either "success" or "failure" labels + - `diem_vm_txn_validation_seconds`: Histogram of validation time (in seconds) per transaction + - `diem_vm_critical_errors`: Counter for critical internal errors; intended to trigger alerts, not for display on a dashboard * Logging on catastrophic events must report enough info to debug. @@ -356,7 +356,7 @@ The `TransactionOutput` has four components: * `write_set`: This `WriteSet` value contains a vector of the write operations performed by the transaction. Each write operation is associated with a resource at a particular access path in the blockchain state. The operation may either delete that resource or set it to a new value, specified as a vector of bytes. No access path should be included more than once in a single `WriteSet`, and a non-existent access path should never be deleted. -* `events`: This is a vector of `ContractEvent` values describing the events emitted while executing the transaction. Events in Libra are stored separately from the blockchain state, so these events are not part of the transaction `WriteSet`. +* `events`: This is a vector of `ContractEvent` values describing the events emitted while executing the transaction. Events in Diem are stored separately from the blockchain state, so these events are not part of the transaction `WriteSet`. * `gas_used`: This is the number of gas units consumed while executing the transaction. @@ -380,7 +380,7 @@ The `execute_block` function processes each transaction in its input vector acco For both kinds of payload, each access path from the output `WriteSet` is read from the state. This is done to to maintain a read-before-write invariant for states. If one of those reads fails, the transaction will fail with a `STORAGE_ERROR` status code. -* `BlockMetadata`: This transaction is handled by running the `block_prologue` function from the `LibraBlock` module in the Libra Framework to record the metadata at the start of a new block. The sender of the transaction is set to the reserved VM address (zero), and the `round`, `timestamp_usecs`, `previous_block_votes` and `proposer` fields are extracted from the transaction and passed as arguments to the function. Gas metering is disabled when running this in the Move VM, and any error is reported with the `UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION` status code. +* `BlockMetadata`: This transaction is handled by running the `block_prologue` function from the `DiemBlock` module in the Diem Framework to record the metadata at the start of a new block. The sender of the transaction is set to the reserved VM address (zero), and the `round`, `timestamp_usecs`, `previous_block_votes` and `proposer` fields are extracted from the transaction and passed as arguments to the function. Gas metering is disabled when running this in the Move VM, and any error is reported with the `UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION` status code. * `UserTransaction`: The first step here is to repeat the transaction validation process in case things have changed since the initial validation. See the [Validation section](#Validation) for details. Invalid transactions are discarded. The signature verification step of validation is computationally expensive, so for performance reasons, it is a good idea for the adapter implementation to do that checking in parallel for all the input transactions, instead of waiting to do it as the transactions are executed sequentially. After successful validation, the `TransactionPayload` is processed as described in the following sections for different kinds of payloads. @@ -402,7 +402,7 @@ After revalidating a user transaction, the adapter processes the payload, depend The Move VM operations used here consume gas according to the gas schedule that is stored in an on-chain configuration. The adapter loads that gas schedule before invoking the VM. -If the script or module payload is processed successfully, the Move VM is next used to [execute](#Function-Execution) the `epilogue` function from the `LibraAccount` module. The epilogue increments the sender's `sequence_number` and deducts the transaction fee based on the gas price and the amount of gas consumed. This function execution is done using the same VM `Session` that was used when processing the payload, so that all the side effects are combined. The epilogue function is run with gas metering disabled. +If the script or module payload is processed successfully, the Move VM is next used to [execute](#Function-Execution) the `epilogue` function from the `DiemAccount` module. The epilogue increments the sender's `sequence_number` and deducts the transaction fee based on the gas price and the amount of gas consumed. This function execution is done using the same VM `Session` that was used when processing the payload, so that all the side effects are combined. The epilogue function is run with gas metering disabled. If an error occurs when processing the payload or when running the epilogue, the adapter will discard all the side effects from the transaction, but it still needs to charge the transaction fee for gas consumption to the sender's account. It does that by creating a new VM `Session` to run the epilogue function. Note that the epilogue function may be run twice. For example, the transaction may make a payment that drops the account balance so that the first attempt to run the epilogue fails because of insufficient funds to pay the transaction fee. After dropping the side effects of the payment, however, the second attempt to run the epilogue should always succeed, because the validation process ensures that the account balance can cover the maximum transaction fee. If the second "failure" epilogue execution somehow fails (due to an internal inconsistency in the system), execution fails with a `UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION` status, and the transaction is discarded @@ -410,7 +410,7 @@ If an error occurs when processing the payload or when running the epilogue, the The third possible kind of user transaction is a `WriteSet`, and there are some differences in handling those compared to other user transactions. For the most part, the `WriteSetPayload` is processed just like a `GenesisTransaction`, but there are two differences. First, for a `Script` payload, the vector of senders passed to the VM has the transaction sender as the first value followed by the `execute_as` value from the transaction. Second, if there is an error reading the states touched by the `WriteSet`, the error status code is reported as `INVALID_WRITE_SET` instead of `STORAGE_ERROR`. There are no gas charges for `WriteSet` transactions. -Instead of the standard epilogue function, for `WriteSet` transactions the adapter executes the special `writeset_epilogue` function from the `LibraAccount` module. The `writeset_epilogue` calls the standard epilogue to increment the `sequence_number`, emits an `AdminTransactionEvent`, and if the `WriteSetPayload` is a `Direct` value, it also emits a `NewEpochEvent` to trigger reconfiguration. For a `Script` value in the `WriteSetPayload`, it is the responsibility of the code in the script to determine whether a reconfiguration is necessary, and if so, to emit the appropriate `NewEpochEvent`. If the epilogue does not execute successfully, the status code is set to `UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION`. +Instead of the standard epilogue function, for `WriteSet` transactions the adapter executes the special `writeset_epilogue` function from the `DiemAccount` module. The `writeset_epilogue` calls the standard epilogue to increment the `sequence_number`, emits an `AdminTransactionEvent`, and if the `WriteSetPayload` is a `Direct` value, it also emits a `NewEpochEvent` to trigger reconfiguration. For a `Script` value in the `WriteSetPayload`, it is the responsibility of the code in the script to determine whether a reconfiguration is necessary, and if so, to emit the appropriate `NewEpochEvent`. If the epilogue does not execute successfully, the status code is set to `UNEXPECTED_ERROR_FROM_KNOWN_MOVE_FUNCTION`. The epilogue is run with a new VM `Session`. (If the `WriteSetPayload` was `Direct` then there is no other `Session` to use.) Because of that, the side effects of the epilogue function, both the state changes and the events, need to be merged with those from the payload. If those changes conflict, i.e., if they modify the same access paths or events, the transaction fails with an `INVALID_WRITE_SET` status. @@ -434,11 +434,11 @@ Unit test: e2e tests * Transaction executed, transaction executed by the VM, success vs fail, certain error type. * Monitoring: - - `libra_vm_user_transactions_executed`: Number of user transactions executed, with either "success" or "failure" labels - - `libra_vm_system_transactions_executed`: Number of system transactions executed, with either "success" or "failure" labels - - `libra_vm_txn_total_seconds`: Histogram of execution time (in seconds) per user transaction - - `libra_vm_num_txns_per_block`: Histogram of number of transactions per block - - `libra_vm_critical_errors`: Counter for critical internal errors; intended to trigger alerts, not for display on a dashboard + - `diem_vm_user_transactions_executed`: Number of user transactions executed, with either "success" or "failure" labels + - `diem_vm_system_transactions_executed`: Number of system transactions executed, with either "success" or "failure" labels + - `diem_vm_txn_total_seconds`: Histogram of execution time (in seconds) per user transaction + - `diem_vm_num_txns_per_block`: Histogram of number of transactions per block + - `diem_vm_critical_errors`: Counter for critical internal errors; intended to trigger alerts, not for display on a dashboard * Logging on catastrophic events must report enough info to debug. @@ -461,7 +461,7 @@ Maybe, more importantly, the eager model guarantees that no runtime errors can c that a given invocation will not fail loading/linking because of different code paths. The consistency of the invocation is guaranteed before execution starts. Obviously runtime errors are still possible and "expected". -This model fits well Libra requirements: +This model fits well Diem requirements: * Validation uses only few functions published at genesis. Once loaded, code is always fetched from the cache and immediately available. @@ -469,8 +469,8 @@ immediately available. is important to optimize the process of loading. Also, transactions are reasonably homogeneous and reuse of code leads to significant improvements in performance and stability. -The VM in its current form is optimized for Libra, and it offers an API that is targeted for that environment. -In particular the VM has an internal implementation for a data cache that relieves the Libra client from an +The VM in its current form is optimized for Diem, and it offers an API that is targeted for that environment. +In particular the VM has an internal implementation for a data cache that relieves the Diem client from an important responsibility (data cache consistency). That abstraction is behind a `Session` which is the only way to talk to the runtime. @@ -559,7 +559,7 @@ pub struct TransactionEffects { } ``` The objective of a `Session` is to create and manage the data cache for a set of invocations into the VM. -It is also intended to return side effects in a format that is suitable to the adapter, and in line with Libra +It is also intended to return side effects in a format that is suitable to the adapter, and in line with Diem and the generation of a `WriteSet`. A `Session` forwards calls to the `Runtime` which is where the logic and implementation of the VM lives and starts. @@ -651,7 +651,7 @@ and cached by the loader. So a reference to a loaded module does not perform any fetching from the network, or verification, or transformations into runtime structures (e.g. linking). -In Libra, consistency of the code cache can be broken by a system transaction that performs a hard upgrade, +In Diem, consistency of the code cache can be broken by a system transaction that performs a hard upgrade, requiring the adapter to stop processing transactions until a restart takes place. Other clients may have different "code models" (e.g. some form of versioning). @@ -705,10 +705,10 @@ After this step any reference to the module is valid. ## Script Execution The VM allows the execution of [scripts](#Binary-Format). A script is an entry point (equivalent to a `main(...)`) -that executes Move code. A script performs calls into the Libra Framework (_reference to specification?_) to +that executes Move code. A script performs calls into the Diem Framework (_reference to specification?_) to accomplish a logical transaction. A script is not saved on storage, like modules are, and a script cannot be invoked by other scripts or modules. -A script is "temporary" code intended to move the state using calls into the Libra Framework. +A script is "temporary" code intended to move the state using calls into the Diem Framework. ```rust // Execute a user script @@ -967,7 +967,7 @@ A SignatureToken is 1 byte, and it is one of: * `0x2`: **U8** - a U8 (byte) * `0x3`: **U64** - a 64-bit unsigned integer * `0x4`: **U128** - a 128-bit unsigned integer -* `0x5`: **ADDRESS** - an `AccountAddress` in Libra, which is a 128-bit unsigned integer +* `0x5`: **ADDRESS** - an `AccountAddress` in Diem, which is a 128-bit unsigned integer * `0x6`: **REFERENCE** - a reference; must be followed by another SignatureToken representing the type referenced * `0x7`: **MUTABLE\_REFERENCE** - a mutable reference; must be followed by another SignatureToken representing the type referenced diff --git a/specifications/network/README.md b/specifications/network/README.md index e580272676..e8a7118882 100644 --- a/specifications/network/README.md +++ b/specifications/network/README.md @@ -1,4 +1,4 @@ -# LibraNet +# DiemNet ## Version and Status @@ -6,7 +6,7 @@ ## Introduction -This document describes **LibraNet**, the primary network protocol used for communication between any two nodes in the Libra ecosystem. The protocol only describes the structure and order of messages on the wire, while relying on an underlying transport (TCP) for the actual message delivery. In addition, all communication between peers MUST be encrypted and authenticated using [Noise protocol](noise.md). LibraNet supports multiplexing several application protocols concurrently over a single connection. For each application protocol, LibraNet provides two kinds of messaging semantics: (1) a fire-and-forget DirectSend and (2) a unary RPC. +This document describes **DiemNet**, the primary network protocol used for communication between any two nodes in the Diem ecosystem. The protocol only describes the structure and order of messages on the wire, while relying on an underlying transport (TCP) for the actual message delivery. In addition, all communication between peers MUST be encrypted and authenticated using [Noise protocol](noise.md). DiemNet supports multiplexing several application protocols concurrently over a single connection. For each application protocol, DiemNet provides two kinds of messaging semantics: (1) a fire-and-forget DirectSend and (2) a unary RPC. ## Terminology @@ -20,13 +20,13 @@ This document describes **LibraNet**, the primary network protocol used for comm ## Standard Network Topology -While LibraNet does not assume a specific network topology, we will frame the specification in terms of the standard Libra network topology for clarity. +While DiemNet does not assume a specific network topology, we will frame the specification in terms of the standard Diem network topology for clarity. ### Node Types -* **Validator Node (V)**: A validator node is a core node type in the Libra network. The validator network is comprised of all validator nodes registered for the current epoch, as defined by the `ValidatorSet` in the [`OnChainConfig`](../consensus/spec.md#onchainconfig). For DDoS resistance and defense-in-depth purposes, a validator node SHOULD be isolated from all other node types except for other validators and the VFNs it controls. -* **Validator Full Node (VFN)**: VFNs are full nodes owned and operated by one of the Libra validators. VFNs will typically connect to their validator over an internal VPC to maintain isolation of the validator node. VFNs can also service all node types on public-facing endpoints. -* **Public Full Node (PFN)**: In contrast, PFNs are any non-validator operated full nodes that primarily interface with Libra by communicating with VFNs. +* **Validator Node (V)**: A validator node is a core node type in the Diem network. The validator network is comprised of all validator nodes registered for the current epoch, as defined by the `ValidatorSet` in the [`OnChainConfig`](../consensus/spec.md#onchainconfig). For DDoS resistance and defense-in-depth purposes, a validator node SHOULD be isolated from all other node types except for other validators and the VFNs it controls. +* **Validator Full Node (VFN)**: VFNs are full nodes owned and operated by one of the Diem validators. VFNs will typically connect to their validator over an internal VPC to maintain isolation of the validator node. VFNs can also service all node types on public-facing endpoints. +* **Public Full Node (PFN)**: In contrast, PFNs are any non-validator operated full nodes that primarily interface with Diem by communicating with VFNs. * **Client Node (C)**: Client nodes are effectively PFNs that do not store ledger history. (TODO(philiphayes): make this consistent with the descriptions in [overview.md](../overview.md)). ### Authentication Modes @@ -38,41 +38,41 @@ While LibraNet does not assume a specific network topology, we will frame the sp * **Validator Network (VN)**: The validator network is a fully-connected, mutually authenticated network consisting only of validator nodes. Non-validators (i.e., any peer without a keypair in the current epoch's validator set) are explicitly not allowed to join the validator network and other validators will reject any unauthenticated inbound connections. Validators in the Validator Network [synchronize mempools](../mempool/mempool_specification.md) of transactions, order and execute transactions with [consensus](../consensus/spec.md), and synchronize ledger states with [state sync](../state_synchronizer/state_sync_specification.md). * **Validator-internal Full Node Network (VFNN)**: Each validator operates a logically private network consisting of only a validator and its operated VFNs. For operational simplicity, the v1 version of each VFNN operates in a server-only authentication mode, with the Validator as the server and the VFNs as the clients. VFNs will typically forward transactions to their upstream validator via [mempool](../mempool/mempool_specification.md) and synchronize their ledger state with their upstream validator via [state sync](../state_synchronizer/state_sync_specification.md). -* **Public Validator Full Node Network (PVFNN)**: A publicly accessible network of VFNs that services transaction submission and state queries for all node types. For instance, public clients may submit transactions to the Libra Network and synchronize their ledger states over the PVFNN. -* **Public Full Node Network (PFNN)**: There is no public network of PFNs in Libra v1. +* **Public Validator Full Node Network (PVFNN)**: A publicly accessible network of VFNs that services transaction submission and state queries for all node types. For instance, public clients may submit transactions to the Diem Network and synchronize their ledger states over the PVFNN. +* **Public Full Node Network (PFNN)**: There is no public network of PFNs in Diem v1. -Below is a diagram that illustrates the set of standard Libra node types, the different network configurations, and the different connection authentication modes. +Below is a diagram that illustrates the set of standard Diem node types, the different network configurations, and the different connection authentication modes. -![Standard Libra Network Topology](../images/libranet_network_topology.png) +![Standard Diem Network Topology](../images/diemnet_network_topology.png) ## Base Transport -LibraNet makes the following assumptions about the underlying transport: +DiemNet makes the following assumptions about the underlying transport: * Connection-oriented * Ordered and reliable delivery of messages * Unicast communication * Session-local state - protocol state is not preserved across transport protocol sessions -Today, LibraNet only supports TCP as the base transport, with the capacity to upgrade to new base transports using the addressing scheme. +Today, DiemNet only supports TCP as the base transport, with the capacity to upgrade to new base transports using the addressing scheme. ## Secure Transport -All communication between nodes MUST be encrypted and authenticated using the [LibraNet Noise IK protocol](noise.md). +All communication between nodes MUST be encrypted and authenticated using the [DiemNet Noise IK protocol](noise.md). By virtue of using the Noise IK handshake, the client always authenticates the server, as the initial noise handshake message is encrypted so only a server with the intended keypair can decrypt it and respond to it. This pattern is analogous to the client using TLS certificate pinning, pinned to a specific public key, for every connection. -In contrast, the server may or may not authenticate the client, depending on the specific network configuration. In Libra v1, only the Validator Network uses mutual authentication, where validators will only allow inbound connections from other current validators. +In contrast, the server may or may not authenticate the client, depending on the specific network configuration. In Diem v1, only the Validator Network uses mutual authentication, where validators will only allow inbound connections from other current validators. -## LibraNet Versioning Scheme +## DiemNet Versioning Scheme -In an effort to prevent protocol ossification and allow backwards-incompatible protocol upgrades, all LibraNet protocols are versioned and can be negotiated in various ways. +In an effort to prevent protocol ossification and allow backwards-incompatible protocol upgrades, all DiemNet protocols are versioned and can be negotiated in various ways. -Primarily, the [LibraNet handshake protocol](handshake-v1.md) is responsible for negotiating the [LibraNet messaging protocol](messaging-v1.md) version and supported application protocol versions. The handshake protocol is "pre-negoiated" in nodes' advertised network addresses as it is not intended to be changed very frequently. +Primarily, the [DiemNet handshake protocol](handshake-v1.md) is responsible for negotiating the [DiemNet messaging protocol](messaging-v1.md) version and supported application protocol versions. The handshake protocol is "pre-negoiated" in nodes' advertised network addresses as it is not intended to be changed very frequently. -## LibraNet NetworkAddress +## DiemNet NetworkAddress -LibraNet uses [`NetworkAddress`](network-address.md) to encapsulate the precise set of protocols used to dial a peer. Canonical LibraNet addresses in v1 contain the following protocols, in sequence, in human-readable format: +DiemNet uses [`NetworkAddress`](network-address.md) to encapsulate the precise set of protocols used to dial a peer. Canonical DiemNet addresses in v1 contain the following protocols, in sequence, in human-readable format: 1. Base Transport: one of: * `"/ip4//tcp/"` @@ -82,26 +82,26 @@ LibraNet uses [`NetworkAddress`](network-address.md) to encapsulate the precise * `"/dns6//tcp/"` 2. Secure Transport Upgrade: * `"/ln-noise-ik/"` -3. LibraNet Handshake Upgrade: +3. DiemNet Handshake Upgrade: * `"/ln-handshake/"` -For example, a full LibraNet `NetworkAddress` in human-readable format: +For example, a full DiemNet `NetworkAddress` in human-readable format: ``` "/ip4/10.0.0.61/tcp/6080/ln-noise-ik/080e287879c918794170e258bfaddd75acac5b3e350419044655e4983a487120/ln-handshake/0" ``` -LibraNet `NetworkAddress`es are advertised via the [onchain discovery protocol](onchain-discovery.md) or stored in local configurations. +DiemNet `NetworkAddress`es are advertised via the [onchain discovery protocol](onchain-discovery.md) or stored in local configurations. ## Discovery -LibraNet does not prescribe a method for node discovery. Different discovery mechanisms are used in the validator and full-node networks: +DiemNet does not prescribe a method for node discovery. Different discovery mechanisms are used in the validator and full-node networks: * Validators use the [onchain discovery protocol](onchain-discovery.md) to discover each other. * All nodes use the [onchain discovery protocol](onchain-discovery.md) to discover VFNs. * Discovery information needed to bootstrap initially is provided as "seed" peers through configuration. -These protocols operate on top of the core LibraNet protocol. +These protocols operate on top of the core DiemNet protocol. ## Connection Lifecycle @@ -119,11 +119,11 @@ client: discover server_address = "/ip4/[address]/ln-noise-ik/[public_key]/ln-ha client: TCP::connect [address] server: TCP::accept -// LibraNet Noise IK handshake +// DiemNet Noise IK handshake client: server_peer_id = Noise::upgrade_outbound [public_key] server: client_peer_id = Noise::upgrade_inbound -// LibraNet version handshake +// DiemNet version handshake client: (server_version, server_protocols) = Handshake::upgrade [version] server: (client_version, client_protocols) = Handshake::upgrade [version] ``` @@ -132,17 +132,17 @@ where `Noise::upgrade_outbound` and `Noise::upgrade_inbound` are defined in [Noi ### Connection Deduplication -LibraNet v1 tries to maintain at-most-one connection per peer. If a peer attempts to open more than one connection to a server, the server will only keep the most recent connection and close the older connection. When operating in peer-to-peer mode, two nodes can also simultaneously dial each other. In the event two peers simultaneously dial each other, we need to be able to do tie-breaking to determine which connection to keep and which to drop in a deterministic way. In this case, both peers will compare the dialer `PeerId` of both connections and keep the connection with the greater dialer `PeerId` (in lexicographic order). +DiemNet v1 tries to maintain at-most-one connection per peer. If a peer attempts to open more than one connection to a server, the server will only keep the most recent connection and close the older connection. When operating in peer-to-peer mode, two nodes can also simultaneously dial each other. In the event two peers simultaneously dial each other, we need to be able to do tie-breaking to determine which connection to keep and which to drop in a deterministic way. In this case, both peers will compare the dialer `PeerId` of both connections and keep the connection with the greater dialer `PeerId` (in lexicographic order). ### Messaging Protocol -After establishing and negotiating a complete connection, peers may begin exchanging LibraNet messages as defined in the [LibraNet messaging protocol](messaging-v1.md). These messages are framed, encrypted, and decrypted using the `Noise::encrypt` and `Noise::decrypt` protocols defined in [Noise#Post-handshake](noise.md#post-handshake) before sending or receiving over the base TCP connection. Note that multiple `NetworkMsg` may be sent or received in a single Noise frame. +After establishing and negotiating a complete connection, peers may begin exchanging DiemNet messages as defined in the [DiemNet messaging protocol](messaging-v1.md). These messages are framed, encrypted, and decrypted using the `Noise::encrypt` and `Noise::decrypt` protocols defined in [Noise#Post-handshake](noise.md#post-handshake) before sending or receiving over the base TCP connection. Note that multiple `NetworkMsg` may be sent or received in a single Noise frame. Since the Noise layer limits frame sizes to at-most `65535` bytes, of which `16` bytes are always reserved for the AES GCM authentication tag, sending a serialized `NetworkMsg` (include the big-endian 4-byte length prefix) over-the-write first requires splitting it into chunks of size at most `65535 - 16 = 65519` bytes. (TODO(philiphayes): describe maximum `NetworkMsg` size after implementing size limit) -Sending a single `NetworkMsg` over a negotiated Libra Transport, in simplified pseudo-rust: +Sending a single `NetworkMsg` over a negotiated Diem Transport, in simplified pseudo-rust: ```rust const MAX_MSG_CHUNK_LEN: u16 = 65519; /* u16::MAX - AES_GCM_TAG_LEN */ diff --git a/specifications/network/handshake-v1.md b/specifications/network/handshake-v1.md index d94daf463a..a139fd0560 100644 --- a/specifications/network/handshake-v1.md +++ b/specifications/network/handshake-v1.md @@ -1,10 +1,10 @@ # Handshake Protocol (v1) -The handshake protocol is used between two connecting peers during the initial connection establishment and upgrade process to negotiate the greatest common supported [LibraNet messaging protocol](messaging-v1.md) version and application protocol set. +The handshake protocol is used between two connecting peers during the initial connection establishment and upgrade process to negotiate the greatest common supported [DiemNet messaging protocol](messaging-v1.md) version and application protocol set. ## NetworkAddress Protocol -The handshake protocol version itself is "pre-negotiated" in peers' advertised or configured [`NetworkAddress`](network-address.md)es. Canonical LibraNet addresses will include the following `Protocol` after the `"/ln-noise-ik/"` `Protocol`: +The handshake protocol version itself is "pre-negotiated" in peers' advertised or configured [`NetworkAddress`](network-address.md)es. Canonical DiemNet addresses will include the following `Protocol` after the `"/ln-noise-ik/"` `Protocol`: ``` human-readable format: "/ln-handshake/" @@ -32,7 +32,7 @@ pub struct BitVec { inner: Vec, } -/// Enum representing different versions of the Libra network protocol. These should be +/// Enum representing different versions of the Diem network protocol. These should be /// listed from old to new, old having the smallest value. /// We derive `PartialOrd` since nodes need to find highest intersecting protocol version. pub enum MessagingProtocolVersion { @@ -46,9 +46,9 @@ The `Handshake` protocol is currently symmetric, i.e., we follow the same upgrad * **`upgrade()`** - * Construct a `HandshakeMsg` according to the set of supported LibraNet messaging protocol versions and corresponding application protocols for each version. + * Construct a `HandshakeMsg` according to the set of supported DiemNet messaging protocol versions and corresponding application protocols for each version. - * Note: the `HandshakeMsg` is a _sorted_ map from `MessageProtocolVersion` to `SupportedProtocols` , where `SupportedProtocols` is a bit-vector with a position set if the corresponding `ProtocolId` (represented as a `u8`) is supported over the given LibraNet version. + * Note: the `HandshakeMsg` is a _sorted_ map from `MessageProtocolVersion` to `SupportedProtocols` , where `SupportedProtocols` is a bit-vector with a position set if the corresponding `ProtocolId` (represented as a `u8`) is supported over the given DiemNet version. * Serialize the `HandshakeMsg` into bytes and prepend the `u16` length-prefix. * Send the `u16` length-prefixed, serialized `HandshakeMsg` over the Noise-wrapped socket. diff --git a/specifications/network/messaging-v1.md b/specifications/network/messaging-v1.md index b374e3e12e..441df093dc 100644 --- a/specifications/network/messaging-v1.md +++ b/specifications/network/messaging-v1.md @@ -1,14 +1,14 @@ # Messaging Protocol (v1) -This document defines the messages and protocols for [LibraNet](spec.md) v1. +This document defines the messages and protocols for [DiemNet](spec.md) v1. ## Versioning -The messaging protocol is versioned using the [`MessagingProtocolVersion`](handshake-v1.md#data-structures). This version is then negotiated in the [LibraNet handshake protocol](handshake-v1.md) during connection establishment and upgrade. +The messaging protocol is versioned using the [`MessagingProtocolVersion`](handshake-v1.md#data-structures). This version is then negotiated in the [DiemNet handshake protocol](handshake-v1.md) during connection establishment and upgrade. ## Messages -LibraNet messages are defined below in the form of Rust structs. On the wire, they are encoded using [lcs]. All LibraNet endpoints must be able to handle receiving all of these messages. +DiemNet messages are defined below in the form of Rust structs. On the wire, they are encoded using [lcs]. All DiemNet endpoints must be able to handle receiving all of these messages. ```rust /// Most primitive message type set on the network. Note this can only support up to 127 message @@ -96,7 +96,7 @@ The DirectSend protocol provides one-way fire-and-forget-style message delivery. The `RpcRequest` , `RpcResponse` and `DirectSendMsg` structs also have a `priority` field. The message priority is a best-effort signal on how to prioritize (higher means more urgent) the message on both the sending and receiving ends. In case of RPC, the receiver could respect the request priority and attach the same priority value to the outbound response. -Pending inbound and outbound messages MAY be reordered and dropped according to their `priority`, though the LibraNet reference implementation does not currently respect `priority`. +Pending inbound and outbound messages MAY be reordered and dropped according to their `priority`, though the DiemNet reference implementation does not currently respect `priority`. ## Errors @@ -106,11 +106,11 @@ Responding to errors is not required. A message must be of at least length 2 in ### Flow control -LibraNet does not define any mechanism or policy for back-pressure/flow-control. Each end-point is free to implement a local policy to safe-guard against chatty neighbors by not issuing TCP window updates. +DiemNet does not define any mechanism or policy for back-pressure/flow-control. Each end-point is free to implement a local policy to safe-guard against chatty neighbors by not issuing TCP window updates. ## Framing -Each serialized LibraNet message is framed by a big-endian encoded `u32` (4-bytes) length prefix. These message frames are then sent over a Noise-wrapped socket (which has its own internal framing, encryption, and decryption). Consequently, a single message frame may span multiple Noise frames. Likewise, a single Noise frame may contain multiple message frames. +Each serialized DiemNet message is framed by a big-endian encoded `u32` (4-bytes) length prefix. These message frames are then sent over a Noise-wrapped socket (which has its own internal framing, encryption, and decryption). Consequently, a single message frame may span multiple Noise frames. Likewise, a single Noise frame may contain multiple message frames. The serialized `NetworkMsg`s over-the-wire then look like a sequence of length-prefix + message pairs (ignoring crypto and framing from lower layers): diff --git a/specifications/network/network-address.md b/specifications/network/network-address.md index 492c980dd0..1bc518f91a 100644 --- a/specifications/network/network-address.md +++ b/specifications/network/network-address.md @@ -8,7 +8,7 @@ using [LCS] to describe the binary format and reducing the set of supported prot (TODO(philiphayes): include `EncNetworkAddress` spec) In particular, a `NetworkAddress` is intended to be a fully self-contained description of _how_ to dial a -[LibraNet](spec.md) peer, describing both the base transport protocol and all subsequent connection upgrade protocols. +[DiemNet](spec.md) peer, describing both the base transport protocol and all subsequent connection upgrade protocols. ## Data Structures @@ -106,8 +106,8 @@ Example possible combinations: ## Network Protocol Upgradability -It is important for Libra to support upgrading its network protocols. In particular, providing a process for doing -backwards-incompatible upgrades allows Libra to evolve quickly and prevents protocol ossification. +It is important for Diem to support upgrading its network protocols. In particular, providing a process for doing +backwards-incompatible upgrades allows Diem to evolve quickly and prevents protocol ossification. Each node advertises the full set of protocols needed to speak with a it using [onchain discovery](onchain-discovery.md). In other words, a node that sees @@ -115,9 +115,9 @@ Each node advertises the full set of protocols needed to speak with a it using must speak and in which order for the listening node to understand them. By allowing several `NetworkAddress`es to be advertised at once, nodes can also facilitate backwards-incompatible -network protocol upgrades. For instance, suppose Libra wants to modify the Noise secure transport to a different +network protocol upgrades. For instance, suppose Diem wants to modify the Noise secure transport to a different handshake pattern or crypto primitives (e.g. move from `"Noise_IK_25519_AESGCM_SHA256"` to -`"Noise_IX_25519_ChaChaPoly_BLAKE2s"`). A new binary version of Libra could be released that supports the new Noise +`"Noise_IX_25519_ChaChaPoly_BLAKE2s"`). A new binary version of Diem could be released that supports the new Noise handshake. Nodes that update to the new binary version would then advertise both the old handshake protocol and the new handshake protocol: diff --git a/specifications/network/noise.md b/specifications/network/noise.md index 5ba328b4d1..fa6d8869aa 100644 --- a/specifications/network/noise.md +++ b/specifications/network/noise.md @@ -1,6 +1,6 @@ # Noise Layer -Communication between [LibraNet](spec.md) peers are encrypted and authenticated via the [Noise protocol framework](https://noiseprotocol.org/noise.html). +Communication between [DiemNet](spec.md) peers are encrypted and authenticated via the [Noise protocol framework](https://noiseprotocol.org/noise.html). This specification documents how we make use of Noise to encrypt communications in three types of network: 1. **Public Full Node Network (PFN)**. Full nodes can connect to validator-operated full nodes. @@ -9,7 +9,7 @@ This specification documents how we make use of Noise to encrypt communications ## NetworkAddress Protocol -The Noise protocol is "pre-negotiated" in peers' advertised or configured [`NetworkAddress`](network-address.md)es. Canonical LibraNet addresses will include the following `Protocol` after the base transport `Protocol`s: +The Noise protocol is "pre-negotiated" in peers' advertised or configured [`NetworkAddress`](network-address.md)es. Canonical DiemNet addresses will include the following `Protocol` after the base transport `Protocol`s: ``` human-readable format: "/ln-noise-ik/" diff --git a/specifications/network/onchain-discovery.md b/specifications/network/onchain-discovery.md index 1d110da4e4..1aeb58e2b2 100644 --- a/specifications/network/onchain-discovery.md +++ b/specifications/network/onchain-discovery.md @@ -2,19 +2,19 @@ ## Overview -The [LibraNet](spec.md) On-chain Discovery Protocol is an authenticated discovery protocol for nodes to learn validator and VFN network addresses and network identity public keys. On-chain discovery leverages the Move language and Libra blockchain to serve as a central authenticated data-store for distributing advertised validator and VFN discovery information in the form of [`RawEncNetworkAddress`](network-address.md)es for validators and [`RawNetworkAddress`](network-address.md)es for VFNs. +The [DiemNet](spec.md) On-chain Discovery Protocol is an authenticated discovery protocol for nodes to learn validator and VFN network addresses and network identity public keys. On-chain discovery leverages the Move language and Diem blockchain to serve as a central authenticated data-store for distributing advertised validator and VFN discovery information in the form of [`RawEncNetworkAddress`](network-address.md)es for validators and [`RawNetworkAddress`](network-address.md)es for VFNs. ## Design Principles * All communication between peers _MUST_ be authenticated and encrypted. -* All authentication is rooted in the Libra blockchain. In the same way that the chain is the source-of-truth for the `ValidatorSet`, the chain is also the source of truth for validator and VFN network addresses and network identity public keys. +* All authentication is rooted in the Diem blockchain. In the same way that the chain is the source-of-truth for the `ValidatorSet`, the chain is also the source of truth for validator and VFN network addresses and network identity public keys. * Uniform discovery interface for both validators and VFNs. * Unify key rotation and address rotation procedures. The protocol for adding/removing a validator or rotating the consensus key is effectively the same as rotating the network key or network addresses. * Support network protocol upgradability. ## Use cases -There are four separate discovery problems in Libra: +There are four separate discovery problems in Diem: 1. Validators discovering other validators. 2. All node types discovering public-facing VFNs. @@ -104,4 +104,4 @@ Alternatively, a safer approach to preserve validator connectivity (at the expen ## Caveats -Modifications to the discovery information requires a quorum. In the event of a connectivity crisis where the validator set loses quorum (e.g. 1/3+ validators crash and forget their identity pubkeys), validators can't submit transactions to modify the on-chain discovery information to regain connectivity. A sufficient fallback in such an extreme event might be for each validator to manually configure their seed peers config with all other validators' discovery information. Alternatively, the Libra Association may issue a new Genesis Transaction to manually set a new validator set, though this requires significant coordination. +Modifications to the discovery information requires a quorum. In the event of a connectivity crisis where the validator set loses quorum (e.g. 1/3+ validators crash and forget their identity pubkeys), validators can't submit transactions to modify the on-chain discovery information to regain connectivity. A sufficient fallback in such an extreme event might be for each validator to manually configure their seed peers config with all other validators' discovery information. Alternatively, the Diem Association may issue a new Genesis Transaction to manually set a new validator set, though this requires significant coordination. diff --git a/specifications/state_sync/README.md b/specifications/state_sync/README.md index 42672e3485..76581a832a 100644 --- a/specifications/state_sync/README.md +++ b/specifications/state_sync/README.md @@ -2,25 +2,25 @@ ## Abstract -This document describes the spec of a Libra node's state synchronizer component, +This document describes the spec of a Diem node's state synchronizer component, which is responsible for synchronizing a node's local ledger to the latest state in -the Libra Payment Network. +the Diem Payment Network. This document is organized as follows: 1. Overview: high-level outline of the the state synchronizer design and functionality. 2. Sync Protocols: specify technical requirements of various sync protocols -recognized in the Libra Network. -3. Network Protocol: the State Synchronizer LibraNet protocol used to participate -as a node in the Libra Network +recognized in the Diem Network. +3. Network Protocol: the State Synchronizer DiemNet protocol used to participate +as a node in the Diem Network 4. Abstracted Modules: external components that state synchronizer interfaces with ## Overview State Synchronizer is a system component that is responsible for syncing ledger -state among peers in the Libra Payment Network. Using state sync, a Libra node +state among peers in the Diem Payment Network. Using state sync, a Diem node can discover and update to a more recent ledger state if available with the following general flow: 1. A node sends a [`GetChunkRequest`](#getchunkrequest) to a remote peer @@ -58,7 +58,7 @@ for the technical requirements for each of these sync protocols. ## Sync Protocols This section describes the technical requirements for the sync protocols -supported in the Libra Network. +supported in the Diem Network. For each sync protocol, we specify: * requester: specs for the node requesting sync diff --git a/specifications/trusted_computing_base/README.md b/specifications/trusted_computing_base/README.md index 7ae8fec354..55e8a01f09 100644 --- a/specifications/trusted_computing_base/README.md +++ b/specifications/trusted_computing_base/README.md @@ -1,10 +1,10 @@ # Trusted Computing Base -The [trusted computing base](https://en.wikipedia.org/wiki/Trusted_computing_base) (TCB) of each Libra validator +The [trusted computing base](https://en.wikipedia.org/wiki/Trusted_computing_base) (TCB) of each Diem validator is responsible for performing security critical operations and managing cryptographic keys. It is an optional -component of Libra Core, designed to improve the security of Libra validators. +component of Diem Core, designed to improve the security of Diem validators. -If the TCB of a Libra validator remains secure (i.e., uncompromised), it is able to ensure that the validator +If the TCB of a Diem validator remains secure (i.e., uncompromised), it is able to ensure that the validator will not violate any safety properties in the network (e.g., forks). In practice, the TCB should be deployed in a separate environment from the rest of the system (e.g., using a different set of containers, or deployed on a different host). diff --git a/specifications/trusted_computing_base/execution_correctness/README.md b/specifications/trusted_computing_base/execution_correctness/README.md index 8764ec8221..bfce1982bd 100644 --- a/specifications/trusted_computing_base/execution_correctness/README.md +++ b/specifications/trusted_computing_base/execution_correctness/README.md @@ -1,9 +1,9 @@ -# Libra Execution Correctness Specification +# Diem Execution Correctness Specification ## Abstract -This specification outlines the design and implementation of Libra Execution Correctness (LEC): a secured service -dedicated for executing transactions correctly (with the MOVE VM) and used by Consensus in the Libra payment network. +This specification outlines the design and implementation of Diem Execution Correctness (LEC): a secured service +dedicated for executing transactions correctly (with the MOVE VM) and used by Consensus in the Diem payment network. For those unfamiliar with the execution flow of TCB, we recommend reading the architecture of [Trusted Computing Base (TCB)](../TCB.md). @@ -45,13 +45,13 @@ For example, in the above diagram, A was already committed at this point. The sy Since B conflicts with E, all of B's descendants and B itself are no longer valid and will be discarded. To ensure the correnctness of execution, i.e., the enforcement of the state-changing rule, -a secure and audited execution service is necessary to guarantee this statement. In Libra Core, it is LEC that plays +a secure and audited execution service is necessary to guarantee this statement. In Diem Core, it is LEC that plays this role, which is built on top of `Executor` library which has the following two jobs to help : * **execution**: Executor can accept transactions to execute based on a specific state merkle tree and generates a new speculative tree according to the changeset produced by the VM processing the transactions. -* **commit**: Executor is the only module in Libra core that has write access to Storage. Once a new state has reached consensus across the quorum, it is Executor that commits the agreed state to Storage. +* **commit**: Executor is the only module in Diem core that has write access to Storage. Once a new state has reached consensus across the quorum, it is Executor that commits the agreed state to Storage. -Let's review the system flow chart to understand how LEC works with other Libra core services. The diagram below arguments the architecture of a part of Libra core system that relevant to LEC with numbered steps showing the interations between LEC and the other components. +Let's review the system flow chart to understand how LEC works with other Diem core services. The diagram below arguments the architecture of a part of Diem core system that relevant to LEC with numbered steps showing the interations between LEC and the other components. ![LEC Architecture](execution_correctness.svg) @@ -70,7 +70,7 @@ locally. 6. LSR verifies the validity of the vote and sign it with `consensus_private_key`. 7. LSR returns the signed vote to Consensus. 8. At some later point in time, Consensus reaches the agreement on the vote, then it requests to commit the block to LEC. -9. LEC sends the commit command to Storage with necessary data, persisting the change to the Libra blockchain. +9. LEC sends the commit command to Storage with necessary data, persisting the change to the Diem blockchain. ## Data Structures @@ -232,8 +232,8 @@ pub trait VMExecutor: Send { #### Storage -Storage of Libra Core is implemented as `LibraDB`, a rocksdb based storage system highly customized for -Libra. It stores all the required data consistutes the Libra blockchain. After executing a block, LEC will store the +Storage of Diem Core is implemented as `DiemDB`, a rocksdb based storage system highly customized for +Diem. It stores all the required data consistutes the Diem blockchain. After executing a block, LEC will store the speculative execution result in its own cache and commit it later to storage if consensus commands. The commit will persist the result into storage and make the execution effect live on chain. Since the commit, all the modification will immediately take effect and visible. LEC relies on two traits exposed by storage interface: @@ -248,7 +248,7 @@ Trait DbReader { } /// Trait that is implemented by a DB that supports certain public (to client) write APIs -/// expected of a Libra DB. This adds write APIs to DbReader. +/// expected of a Diem DB. This adds write APIs to DbReader. pub trait DbWriter: Send + Sync { /// Persist transactions. Called by the executor module when either syncing nodes or committing /// blocks during normal operation. diff --git a/specifications/trusted_computing_base/execution_correctness/execution_correctness.svg b/specifications/trusted_computing_base/execution_correctness/execution_correctness.svg index c016211d3a..fefcc8b10c 100644 --- a/specifications/trusted_computing_base/execution_correctness/execution_correctness.svg +++ b/specifications/trusted_computing_base/execution_correctness/execution_correctness.svg @@ -136,7 +136,7 @@ - Libra Safety Rules + Diem Safety Rules (LSR) diff --git a/specifications/trusted_computing_base/key_manager/README.md b/specifications/trusted_computing_base/key_manager/README.md index 163279602d..703e3b8d93 100644 --- a/specifications/trusted_computing_base/key_manager/README.md +++ b/specifications/trusted_computing_base/key_manager/README.md @@ -1,6 +1,6 @@ # Key Manager specification -This specification outlines the design and execution of the Key Manager (KM): the primary service responsible for managing and rotating cryptographic keys used by validator nodes and validator full nodes in the Libra payment network. +This specification outlines the design and execution of the Key Manager (KM): the primary service responsible for managing and rotating cryptographic keys used by validator nodes and validator full nodes in the Diem payment network. ## Table of Contents @@ -11,13 +11,13 @@ This specification outlines the design and execution of the Key Manager (KM): th ## Overview -Validator nodes (VNs) and validator full nodes (VFNs) generate and store cryptographic keys in order to securely participate in the Libra network. For example, each VN in Libra maintains a secret and unique cryptographic key that can be used to sign votes on quorum certificates; this allows VNs to achieve [consensus](https://github.com/libra/libra/tree/master/specifications/consensus) on transactions within Libra. Likewise, all VNs and VFNs in the network maintain cryptographic keys to authenticate and encrypt communication between nodes; thus, preventing adversaries from interfering with network communication in order to perform attacks. +Validator nodes (VNs) and validator full nodes (VFNs) generate and store cryptographic keys in order to securely participate in the Diem network. For example, each VN in Diem maintains a secret and unique cryptographic key that can be used to sign votes on quorum certificates; this allows VNs to achieve [consensus](https://github.com/libra/libra/tree/master/specifications/consensus) on transactions within Diem. Likewise, all VNs and VFNs in the network maintain cryptographic keys to authenticate and encrypt communication between nodes; thus, preventing adversaries from interfering with network communication in order to perform attacks. -To maintain the integrity and confidentiality of cryptographic keys in the Libra network, the KM is responsible for automatically rotating these keys over time. This provides freshness for keys used by the VNs and VFNs mitigating long range attacks, where keys are compromised and gathered over long periods of time. +To maintain the integrity and confidentiality of cryptographic keys in the Diem network, the KM is responsible for automatically rotating these keys over time. This provides freshness for keys used by the VNs and VFNs mitigating long range attacks, where keys are compromised and gathered over long periods of time. ### Cryptographic Keys -At present, the KM plays a role in rotating the following asymmetric cryptographic keys in Libra: +At present, the KM plays a role in rotating the following asymmetric cryptographic keys in Diem: 1. The _consensus_ key -- an `Ed25519PrivateKey` used by VNs to sign votes on quorum certificates to achieve consensus. @@ -25,16 +25,16 @@ Note: from this point forward, whenever we refer to a cryptographic key by name ### Key Manager Architecture -At a high-level, the KM is designed to be a stand-alone service that drives the rotation of cryptographic keys across the relevant services and components that make up a VN and VFN. Each VN/VFN instance in the Libra network will deploy its own KM to manage the keys on that instance and perform rotations as required. The diagram below shows a broad overview of the KM operating within the context of a VN. The rest of this section is dedicated to explaining this architecture and presenting how it operates. +At a high-level, the KM is designed to be a stand-alone service that drives the rotation of cryptographic keys across the relevant services and components that make up a VN and VFN. Each VN/VFN instance in the Diem network will deploy its own KM to manage the keys on that instance and perform rotations as required. The diagram below shows a broad overview of the KM operating within the context of a VN. The rest of this section is dedicated to explaining this architecture and presenting how it operates. ![Key Manager Architecture](key_manager.svg) **Key Manager Architecture**: First, there are several important components that must be highlighted within the architecture diagram above; these are displayed in color: * **Secure Storage**: First, Secure Storage (SS) is the storage backend used by the KM to persist and hold cryptographic keys. The KM relies on SS as a single source of truth regarding the value of any cryptographic key for the VN/VFN. For more information about the SS, see the specification, [here](https://github.com/libra/libra/tree/master/specifications/trusted_computing_base/secure_storage). -* **Validator Configs**: Second, the mapping between VNs/VFNs to cryptographic keys is stored on the Libra blockchain in a `Validator Config` resource held under each validator operator's account. For example, in the case of the consensus key, each VN will register their consensus key in the validator config of that node, on-chain. The consensus key for that VN can then be seen by all other VNs in the network, and thus used to authenticate the consensus votes signed by the consensus key. To protect the validator config of each VN/VFN, each VN/VFN is assumed to have a unique and private identity key, called the _operator key_ that has permission to update the validator config for that VN. The _operator key_ is initialized and held in the SS for each VN and VFN. More details on validator configs and the _operator key_ is presented below. -* **JSON RPC Endpoint**: Third, in order to interact with state on the Libra blockchain (e.g., update each validator config), the KM requires the ability to read and write transactions to the blockchain. To achieve this, a JSON RPC endpoint is assumed to be online and available to handle KM requests. -* **Components with Exported Keys**: Fourth, and finally, each VN may have multiple components that maintain direct copies or exports of cryptographic private keys. It is important to note these components explicitly, as they not only affect how the KM supports key rotations, but they also have significant security implications. For example, in the diagram above, we can see the Libra Safety Rules (LSR) component. LSR is a component within each VN responsible for participating in consensus (see [here](https://github.com/libra/libra/tree/master/specifications/trusted_computing_base/safety_rules)). For performance reasons, LSR maintains its own local copy of the consensus private key, which we term an _exported key copy_. We highlight components that maintain exported key copies and discuss the implications of key copies to the KM's role in further detail below. +* **Validator Configs**: Second, the mapping between VNs/VFNs to cryptographic keys is stored on the Diem blockchain in a `Validator Config` resource held under each validator operator's account. For example, in the case of the consensus key, each VN will register their consensus key in the validator config of that node, on-chain. The consensus key for that VN can then be seen by all other VNs in the network, and thus used to authenticate the consensus votes signed by the consensus key. To protect the validator config of each VN/VFN, each VN/VFN is assumed to have a unique and private identity key, called the _operator key_ that has permission to update the validator config for that VN. The _operator key_ is initialized and held in the SS for each VN and VFN. More details on validator configs and the _operator key_ is presented below. +* **JSON RPC Endpoint**: Third, in order to interact with state on the Diem blockchain (e.g., update each validator config), the KM requires the ability to read and write transactions to the blockchain. To achieve this, a JSON RPC endpoint is assumed to be online and available to handle KM requests. +* **Components with Exported Keys**: Fourth, and finally, each VN may have multiple components that maintain direct copies or exports of cryptographic private keys. It is important to note these components explicitly, as they not only affect how the KM supports key rotations, but they also have significant security implications. For example, in the diagram above, we can see the Diem Safety Rules (LSR) component. LSR is a component within each VN responsible for participating in consensus (see [here](https://github.com/libra/libra/tree/master/specifications/trusted_computing_base/safety_rules)). For performance reasons, LSR maintains its own local copy of the consensus private key, which we term an _exported key copy_. We highlight components that maintain exported key copies and discuss the implications of key copies to the KM's role in further detail below. ### Consensus Key Rotation Protocol @@ -47,7 +47,7 @@ Given the KM architecture presented above, we now describe the high-level flow o 3. Once the SS has overwritten **consensus_private{i}** with **consensus_private{i+1}**, it will return the public exponent of the new consensus key, **consensus_public{i+1}**, to the KM (this is the new consensus public for the VN). 4. The KM will take the new consensus public key returned by the SS, **consensus_public{i+1}** and generate a _rotation transaction_ that updates the on-chain validator config with the new consensus public key for the VN using the operator public key (i.e., sets **consensus_public{i}** to **consensus_public{i+1}** for the validator config of the VN). The KM will then forward the new rotation transaction to the SS to be signed. 5. The SS will sign the rotation transaction using **operator_private** internally and return the _signed rotation transaction_ to the KM. -6. The KM will take the signed rotation transaction and forward it to the Libra blockchain via the JSON RPC endpoint (i.e., the endpoint by which the KM can read and write transactions to the blockchain). +6. The KM will take the signed rotation transaction and forward it to the Diem blockchain via the JSON RPC endpoint (i.e., the endpoint by which the KM can read and write transactions to the blockchain). 7. At some later point in time, the signed rotation transaction is committed to the blockchain, meaning that when the next consensus reconfiguration event occurs (i.e., the next set of VNs is to selected to perform consensus, see [here](https://github.com/libra/libra/tree/master/specifications/consensus)), the consensus key for the VN will be updated to **consensus_public{i+1}**. 8. Once all 6 steps above have been completed, the consensus key for the VN has successfully been rotated both inside the SS, and on the blockchain. However, due to performance reasons, it's possible that other components within the VN may have previously exported the consensus private key and thus hold temporary copies of the old key locally. For example, LSR is one such component: to improve the throughput and latency of the consensus algorithm, LSR exports the consensus private key upon initialization, and maintains a copy of the private key in local memory. This avoids having to contact the SS whenever it wishes to sign a quorum certificate. In order to prevent this key from becoming stale, LSR monitors the blockchain for reconfiguration events, and after each reconfiguration event, LSR will verify if the consensus key for this VN has been rotated. If so, LSR will query the SS directly to export the consensus private key corresponding to the consensus public key registered in the validator config on-chain (i.e., fetch **consensus_private{i+1}** for **consensus_public{i+1}**). 9. Upon a key export request, the SS will verify the requester has appropriate permissions to retrieve the requested key, and if so, return the key as required. In this case, it will return **consensus_private{i+1}** to LSR. This concludes the consensus key rotation. @@ -61,7 +61,7 @@ At any point during a consensus key rotation, it is possible for any component w **Failure Recovery Protocol:** To achieve fault tolerance against component failures (including the KM itself), the KM should periodically check the state of the consensus key across components in the system, by performing the following steps: -1. Verify that the consensus key version held in the SS (**consensus_private{i}** ) corresponds to the consensus key version registered on the Libra blockchain for this VN (**consensus_public{i}** ). If so, no action is required as everything is consistent. If these key versions differ, however, the KM should proceed to step 2 below. +1. Verify that the consensus key version held in the SS (**consensus_private{i}** ) corresponds to the consensus key version registered on the Diem blockchain for this VN (**consensus_public{i}** ). If so, no action is required as everything is consistent. If these key versions differ, however, the KM should proceed to step 2 below. 2. Check if a signed rotation transaction that updates the validator config to the consensus key version currently held in the SS has recently been submitted to the blockchain. If so, it's likely that the KM simply needs to wait until the transaction is processed. In this case, the KM should sleep before returning to step 1 above. If a signed rotation transaction hasn't recently been submitted, or one was previously submitted but it has now expired (i.e., passed the transaction expiration time), the KM should proceed to step 3 below. 3. The KM should regenerate the signed rotation transaction to update the on-chain consensus key version, and resubmit the transaction to the blockchain (i.e., see, step 3 in the [consensus key rotation](#consensus-key-rotation-protocol) section above). The KM should then sleep for a while and return to step 2 above. @@ -128,9 +128,9 @@ As can be seen from the snippet above, the `CryptoStorage` API offered by the SS ### Validator Configs -As discussed in the overview section above, the validator configs offer a _public key infrastructure_ (PKI) that maps the identity of each VN to the corresponding cryptographic keys (e.g., the consensus key). While this mapping could be done using another PKI system, in Libra, we run this PKI directly on the blockchain. This provides a single source of truth that is both tamper and censorship resistant. +As discussed in the overview section above, the validator configs offer a _public key infrastructure_ (PKI) that maps the identity of each VN to the corresponding cryptographic keys (e.g., the consensus key). While this mapping could be done using another PKI system, in Diem, we run this PKI directly on the blockchain. This provides a single source of truth that is both tamper and censorship resistant. -To allow dynamic updates to the consensus key, the `ValidatorConfig` decouples the operator key of each VN from the consensus key, allowing VNs to retain a single operator key over time despite performing multiple rotations. To achieve this, each VN in Libra is responsible for publishing and maintaining their `ValidatorConfig`. This configuration is associated with each VN using the VN's _operator account_, and the only way in which to update the `ValidatorConfig` is to sign a Libra transaction using the operator key associated with that account. As a result, only the operator of each VN can modify this configuration. This makes the `ValidatorConfig` an ideal location in which to publish the consensus key of each VN. +To allow dynamic updates to the consensus key, the `ValidatorConfig` decouples the operator key of each VN from the consensus key, allowing VNs to retain a single operator key over time despite performing multiple rotations. To achieve this, each VN in Diem is responsible for publishing and maintaining their `ValidatorConfig`. This configuration is associated with each VN using the VN's _operator account_, and the only way in which to update the `ValidatorConfig` is to sign a Diem transaction using the operator key associated with that account. As a result, only the operator of each VN can modify this configuration. This makes the `ValidatorConfig` an ideal location in which to publish the consensus key of each VN. The snippet below shows the on-chain `ValidatorConfig` of each VN: @@ -146,7 +146,7 @@ pub struct ValidatorConfig { As can be seen in the snippet above, `ValidatorConfig` contains a field named `consensus_public_key` of type `Ed25519PublicKey`. This field contains the currently published consensus key of the VN, thus allowing other VNs in the network to identify the consensus key of this VN. -**Epoch-specific ValidorConfig Snapshots**: For security and performance reasons, the `ValidatorConfig` of each VN is copied into an external move module called `ValidatorInfo` whenever the VN is selected to participate in a consensus round (i.e., epoch). This snapshot (or copy) is taken at the beginning of each epoch for the next consensus round. `ValidatorInfo` contains the identity information of each VN participating in consensus. As a result, on each epoch change in Libra (i.e., reconfiguration), the VNs participating in that epoch will have their consensus public key frozen for the duration of that epoch, and all other VNs in the network will expect that VN to use the published consensus key in `ValidatorInfo`. This means that consensus key rotations will only take effect on the next reconfiguration (i.e., when a new snapshot of `ValidatorConfig` is copied into `ValidatorInfo`). The snippet below shows `ValidatorInfo`: +**Epoch-specific ValidorConfig Snapshots**: For security and performance reasons, the `ValidatorConfig` of each VN is copied into an external move module called `ValidatorInfo` whenever the VN is selected to participate in a consensus round (i.e., epoch). This snapshot (or copy) is taken at the beginning of each epoch for the next consensus round. `ValidatorInfo` contains the identity information of each VN participating in consensus. As a result, on each epoch change in Diem (i.e., reconfiguration), the VNs participating in that epoch will have their consensus public key frozen for the duration of that epoch, and all other VNs in the network will expect that VN to use the published consensus key in `ValidatorInfo`. This means that consensus key rotations will only take effect on the next reconfiguration (i.e., when a new snapshot of `ValidatorConfig` is copied into `ValidatorInfo`). The snippet below shows `ValidatorInfo`: ```rust /// After executing a special transaction indicates a change to the next epoch, consensus @@ -173,11 +173,11 @@ As can be seen in the snippet above, every `ValidatorInfo` contains a copy of th ### JSON RPC Endpoint -As discussed in the overview section above, the KM must be able to communicate with the Libra blockchain in order to read and update the consensus key of each VN registered on-chain. To achieve this, the KM uses the JSON RPC API offered by each VN endpoint. To execute all steps in the KM rotation and failure recovery protocols, the KM requires the API to provide the following list of functionalities: +As discussed in the overview section above, the KM must be able to communicate with the Diem blockchain in order to read and update the consensus key of each VN registered on-chain. To achieve this, the KM uses the JSON RPC API offered by each VN endpoint. To execute all steps in the KM rotation and failure recovery protocols, the KM requires the API to provide the following list of functionalities: * **ValidatorConfig Retrieval**: First, the KM requires the JSON RPC API to support retrieval of the `ValidatorConfig` published on-chain for each specific VN. This is needed for failure recovery, for example, when the KM needs to determine if the current consensus key registered on-chain matches the consensus key held in the SS. * **ValidatorInfo Retrieval**: Second, the KM requires the JSON RPC API to support retrieval of the `ValidatorInfo` constructed at the beginning of each epoch. This is needed for failure recovery of LSR. For example, if LSR crashes and recovers, it will need to read the `ValidatorInfo` constructed for the VN in this epoch in order to determine which version of the consensus key each vote should be signed with. -* **Transaction Submission**: Third, and finally, the KM requires the API to support transaction submission to the Libra blockchain. This is required so that the KM can submit signed rotation transactions whenever a consensus key rotation is performed (i.e., step 5 in the KM consensus key rotation protocol above). +* **Transaction Submission**: Third, and finally, the KM requires the API to support transaction submission to the Diem blockchain. This is required so that the KM can submit signed rotation transactions whenever a consensus key rotation is performed (i.e., step 5 in the KM consensus key rotation protocol above). To support all of the functionalities listed above, the JSON RPC endpoint provides the following API. For brevity, we only list the API calls used by the KM. @@ -187,13 +187,13 @@ To support all of the functionalities listed above, the JSON RPC endpoint provid /// correct AccountStatewithProof is returned, the caller should verify the account state proof. pub fn get_account_state_with_proof(&mut self, account: AccountAddress) -> Result; -/// Submits a signed transaction to the Libra blockchain via the JSON RPC API. +/// Submits a signed transaction to the Diem blockchain via the JSON RPC API. pub fn submit(signed_transaction: SignedTransaction) -> Result<(), Error>; ``` As can be seen from the snippet above, the JSON RPC API supports two calls, `get_account_state_with_proof(..)` and `submit(..)`. These are used by the KM to achieve the required functionality in the following manner: -* **get_account_state_with_proof**: First, the `get_account_state_with_proof(..)` call returns an associated `AccountStateWithProof` for a specified `AccountAddress`. This call can be used by the KM to: (a) retrieve the `ValidatorConfig` of a specific VN, by passing in the address of the VN to query (i.e., `get_account_state_with_proof(vn_address)`); and (b) retrieve the `ValidatorInfo` of a VN for the current or next epoch. To achieve this, the KM can pass in the `validator_set_address`, an account address specified by Libra to hold specific information about the current VN set (i.e., `get_account_state_with_proof(validator_set_address)`). For further information about what the KM should do with the associated `AccountProof` returned for each call, see the [security considerations](#security-considerations) section below. +* **get_account_state_with_proof**: First, the `get_account_state_with_proof(..)` call returns an associated `AccountStateWithProof` for a specified `AccountAddress`. This call can be used by the KM to: (a) retrieve the `ValidatorConfig` of a specific VN, by passing in the address of the VN to query (i.e., `get_account_state_with_proof(vn_address)`); and (b) retrieve the `ValidatorInfo` of a VN for the current or next epoch. To achieve this, the KM can pass in the `validator_set_address`, an account address specified by Diem to hold specific information about the current VN set (i.e., `get_account_state_with_proof(validator_set_address)`). For further information about what the KM should do with the associated `AccountProof` returned for each call, see the [security considerations](#security-considerations) section below. * **submit**: The `submit(..)` call provides the ability to submit a signed transaction to the blockchain. As such, the KM can call this method with the signed rotation transaction to perform a rotation (i.e., `submit(signed_rotation_transaction)`). ## Key Manager Modules and Data Structures @@ -246,7 +246,7 @@ In this section, we discuss several interesting security considerations that aff * **Avoiding Exported Key Copies**: At present, each VN may contain components that manage exported key copies locally, for example, LSR, which stores a local copy of the consensus key in memory in order to sign votes. While this may be beneficial for performance reasons (i.e., LSR doesn't need to contact the SS to perform a signature on each vote), it does lead to concerns about key compromise: if LSR is less secure than the SS, an adversary will simply target the key copy in LSR to compromise the key. Thus nullifying any defenses put into place to protect the consensus key in the SS. To avoid this, the use of exported key copies is _heavily discouraged_, and any components that maintain exported key copies should have significant justifications for doing so. Moreover, such components should be strictly audited for security vulnerabilities, as they will likely become the target of adversaries when deployed. -* **Enforcing Periodic Key Rotation**: Key rotation is an attractive means of protecting against various types of attacks on each VN. However, without strictly enforcing key rotation within the network (i.e., making it mandatory), it is possible that VNs will not perform key rotation frequently enough to see any security benefits (e.g., due to being lazy or wanting to avoid the financial or operational costs of performing a rotation). To avoid this, it is essential that VNs that do not rotate their keys frequently enough are disincentivized and/or penalized for their actions. One way to achieve this is to exclude lazy VNs from the set of possible VNs that may participate in the Libra consensus algorithm. Such exclusions may then be lifted once the VNs meet the key rotation requirements. This will help to protect the Libra network against old or compromised keys. +* **Enforcing Periodic Key Rotation**: Key rotation is an attractive means of protecting against various types of attacks on each VN. However, without strictly enforcing key rotation within the network (i.e., making it mandatory), it is possible that VNs will not perform key rotation frequently enough to see any security benefits (e.g., due to being lazy or wanting to avoid the financial or operational costs of performing a rotation). To avoid this, it is essential that VNs that do not rotate their keys frequently enough are disincentivized and/or penalized for their actions. One way to achieve this is to exclude lazy VNs from the set of possible VNs that may participate in the Diem consensus algorithm. Such exclusions may then be lifted once the VNs meet the key rotation requirements. This will help to protect the Diem network against old or compromised keys. * **Verifying vs. Non-verifying the JSON RPC Endpoint**: As discussed above, in order for the KM to perform key rotations, it must be able to read and write transactions to the blockchain. The KM does this internally by interfacing with a JSON RPC endpoint. However, one notable challenge arises when performing such interaction: how does the KM know the information it is being supplied by the endpoint is correct and up-to-date? If an attacker can compromise the JSON RPC endpoint, it may feed the KM stale information or incorrect blockchain state (e.g., transactions). As a result, this could cause a liveness violation for the VN node (e.g., the KM could fail to see that the VN does not have the correct consensus key registered on the blockchain, and thus will be unable to participate in consensus). To defend against this, it is critical that the KM verifies all information returned via the JSON RPC endpoint (e.g., the KM should verify proofs of account state and ensure that the height of the blockchain is monotonically increasing). This will help to reduce the attack surface against the KM. Note, however, that while the KM can verify the blockchain is growing sequentially, it is unable to verify that the information being presented to it is fresh (i.e., that the responses returned by the JSON RPC endpoint hold the most up-to-date information). As such, without querying and aggregating the responses of multiple different JSON RPC endpoints, there are always some levels of implicit trust between the KM and the endpoint it relies on. diff --git a/specifications/trusted_computing_base/key_manager/key_manager.svg b/specifications/trusted_computing_base/key_manager/key_manager.svg index f60ef37cfa..4a4d01857d 100644 --- a/specifications/trusted_computing_base/key_manager/key_manager.svg +++ b/specifications/trusted_computing_base/key_manager/key_manager.svg @@ -1,3 +1,3 @@ -
JSON RPC
Endpoint
JSON RPC...
Secure Storage
(SS)




operator_private_key
...
consensus_private_key
Secure Storage...
Key Manager
(KM)
Key Manager...
Libra Safety Rules
(LSR)


consensus_private_key
Libra Safety Rules...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
...
...
Libra Blockchain Validator Set
Libra Blockchain Validator Set
Libra Blockchain State 
(e.g., transactions and contracts)
Libra Blockchain State...
Validator Config
(for Validator) 


ValidatorConfig:
    - consensus_public_key
    - ...





Validator Config...
Validator
Configs
Validator...
Validator Node
(VN)
Validator Node...
...
...
Viewer does not support full SVG 1.1
+
JSON RPC
Endpoint
JSON RPC...
Secure Storage
(SS)




operator_private_key
...
consensus_private_key
Secure Storage...
Key Manager
(KM)
Key Manager...
Diem Safety Rules
(LSR)


consensus_private_key
Diem Safety Rules...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
...
...
Diem Blockchain Validator Set
Diem Blockchain Validator Set
Diem Blockchain State 
(e.g., transactions and contracts)
Diem Blockchain State...
Validator Config
(for Validator) 


ValidatorConfig:
    - consensus_public_key
    - ...





Validator Config...
Validator
Configs
Validator...
Validator Node
(VN)
Validator Node...
...
...
Viewer does not support full SVG 1.1
diff --git a/specifications/trusted_computing_base/key_manager/key_manager_rotation.svg b/specifications/trusted_computing_base/key_manager/key_manager_rotation.svg index 1230700529..53eb735cac 100644 --- a/specifications/trusted_computing_base/key_manager/key_manager_rotation.svg +++ b/specifications/trusted_computing_base/key_manager/key_manager_rotation.svg @@ -1,3 +1,3 @@ -
JSON RPC
Endpoint
JSON RPC...
Secure Storage
(SS)




operator_private_key
...
consensus_private_key
Secure Storage...
0
0
Key Manager
(KM)
Key Manager...
1
1
Generate new
consensus key
Generate new...
Return
consensus 
public key
Return...
2
2
Sign
rotation
tx
Sig...
3
3
Return
signed
rotation tx
Return...
4
4
5
5
Signed
rotation
tx
Signed...
Libra Safety Rules
(LSR)


consensus_private_key
Libra Safety Rules...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
...
...
Libra Blockchain Validator Set
Libra Blockchain Validator Set
Libra Blockchain State 
(e.g., transactions and contracts)
Libra Blockchain State...
Reconfiguration:
Update consensus
public key
Reconfiguration:...
6
6
Validator Node
(VN)
Validator Node...
...
...
Reconfiguration
Reconfiguration
6
6
7
7
Get new 
consensus key
Get new...
Return new
consensus key
Return new...
8
8
Validator
Configs
Validator...
Validator Config
(for Validator) 


ValidatorConfig:
    - consensus_public_key
    - ...





Validator Config...
Viewer does not support full SVG 1.1
+
JSON RPC
Endpoint
JSON RPC...
Secure Storage
(SS)




operator_private_key
...
consensus_private_key
Secure Storage...
0
0
Key Manager
(KM)
Key Manager...
1
1
Generate new
consensus key
Generate new...
Return
consensus 
public key
Return...
2
2
Sign
rotation
tx
Sig...
3
3
Return
signed
rotation tx
Return...
4
4
5
5
Signed
rotation
tx
Signed...
Diem Safety Rules
(LSR)


consensus_private_key
Diem Safety Rules...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
Validator Node
(VN)
Validator Node...
...
...
Diem Blockchain Validator Set
Diem Blockchain Validator Set
Diem Blockchain State 
(e.g., transactions and contracts)
Diem Blockchain State...
Reconfiguration:
Update consensus
public key
Reconfiguration:...
6
6
Validator Node
(VN)
Validator Node...
...
...
Reconfiguration
Reconfiguration
6
6
7
7
Get new 
consensus key
Get new...
Return new
consensus key
Return new...
8
8
Validator
Configs
Validator...
Validator Config
(for Validator) 


ValidatorConfig:
    - consensus_public_key
    - ...





Validator Config...
Viewer does not support full SVG 1.1
diff --git a/specifications/trusted_computing_base/safety_rules/README.md b/specifications/trusted_computing_base/safety_rules/README.md index 44533d2ac3..35214bbc35 100644 --- a/specifications/trusted_computing_base/safety_rules/README.md +++ b/specifications/trusted_computing_base/safety_rules/README.md @@ -1,8 +1,8 @@ -# Libra Safety Rules +# Diem Safety Rules ## Overview -Libra Safety Rules (LSR) ensures that a validator running LSR will not become byzantine. This translates into the property that a committed transaction is irreversible. This property is known as "no-forks" and effectively means that consensus rounds are strictly linear and storage is append-only. A fork occurs when two ledgers or committed blocks, LI1 and LI2, do not have a linear relationship, in other words, neither LI1 is a prefix of LI2 nor LI2 is a prefix of LI1. +Diem Safety Rules (LSR) ensures that a validator running LSR will not become byzantine. This translates into the property that a committed transaction is irreversible. This property is known as "no-forks" and effectively means that consensus rounds are strictly linear and storage is append-only. A fork occurs when two ledgers or committed blocks, LI1 and LI2, do not have a linear relationship, in other words, neither LI1 is a prefix of LI2 nor LI2 is a prefix of LI1. This specification builds on top of the [Consensus specification](../consensus/spec.md) and defines how to separate out the [Consensus safety rules](../consensus/spec.md#safety-rules) into a minimal software component that ensures that even a Byzantine validator would be unable to violate the "no-forks" property so long as LSR has not been compromised. In effect, this is the validator's consensus trusted computing base: @@ -16,7 +16,7 @@ By maintaining the following properties, LSR ensures that consensus will observe 2. A validator can only vote on a proposal if it extends from a certified block, or a proposal and its executed state that a quorum of voters have seen. 3. A validator can only vote on a proposal if the output of that proposal extends its parent's executed state. 4. The key used to sign proposals is used solely by LSR and in a way that would not violate the previous properties. -5. Additionally, when combined with Libra Execution Correctness (LEC), ensures that the transactions are faithfully executed and committed. +5. Additionally, when combined with Diem Execution Correctness (LEC), ensures that the transactions are faithfully executed and committed. ## Terms @@ -189,9 +189,9 @@ Each `Vote` contains the executed state output, the resulting root hash of the b #### Property 4 -> Additionally, when combined with Libra Execution Correctness (LEC), ensures that the transactions are faithfully executed and committed to the blockchain. +> Additionally, when combined with Diem Execution Correctness (LEC), ensures that the transactions are faithfully executed and committed to the blockchain. -The validator node may be configured to leverage an additional process known as the Libra Execution Correctness (LEC). LEC is another TCB that runs in a more trusted fashion than consensus itself. Because consensus forwards all messages to LSR, LEC constructs and signs the `VoteProposal` with the `execution_key`. This informs LSR that the contents have not been tampered by processes running in a less trusted environment than LEC including consensus. +The validator node may be configured to leverage an additional process known as the Diem Execution Correctness (LEC). LEC is another TCB that runs in a more trusted fashion than consensus itself. Because consensus forwards all messages to LSR, LEC constructs and signs the `VoteProposal` with the `execution_key`. This informs LSR that the contents have not been tampered by processes running in a less trusted environment than LEC including consensus. ### Proposing -- `sign_proposal` diff --git a/specifications/trusted_computing_base/secure_storage/README.md b/specifications/trusted_computing_base/secure_storage/README.md index 132685e09c..49a28c95d5 100644 --- a/specifications/trusted_computing_base/secure_storage/README.md +++ b/specifications/trusted_computing_base/secure_storage/README.md @@ -2,7 +2,7 @@ ## Overview -Secure Storage encapsulates a design paradigm for the secure storage of sensitive data for the Libra blockchain. The type of data includes information required for safety and identity within the system, such as cryptographic keys and consensus safety rules. +Secure Storage encapsulates a design paradigm for the secure storage of sensitive data for the Diem blockchain. The type of data includes information required for safety and identity within the system, such as cryptographic keys and consensus safety rules. ## Properties @@ -147,8 +147,8 @@ Verifier | Reads all (non-sensitive) data, displays it and compares to gene Management | Reads all (non-sensitive) data, and writes some data to support genesis-building process KeyManager | Automatically rotates consensus and networking keys SafetyRules | Ensures consensus safety and has the role of signing all consensus messages -ValidatorNode | Runs the Libra Validator services -FullNode | Runs the Libra Fullnode services +ValidatorNode | Runs the Diem Validator services +FullNode | Runs the Diem Fullnode services ### Accessor capabilites diff --git a/state-synchronizer/Cargo.toml b/state-synchronizer/Cargo.toml index e7448e5c81..c5e01e870a 100644 --- a/state-synchronizer/Cargo.toml +++ b/state-synchronizer/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "state-synchronizer" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra state synchronizer" +authors = ["Diem Association "] +description = "Diem state synchronizer" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -22,23 +22,23 @@ proptest = { version = "0.10.1", optional = true } channel = { path = "../common/channel", version = "0.1.0" } executor-types = { path = "../execution/executor-types", version = "0.1.0" } -libra-config = { path = "../config", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libradb = { path = "../storage/libradb", version = "0.1.0", optional = true } -libra-infallible = { path = "../common/infallible", version = "0.1.0" } -libra-logger = { path = "../common/logger", version = "0.1.0" } -libra-mempool = { path = "../mempool", version = "0.1.0"} -libra-metrics = { path = "../common/metrics", version = "0.1.0" } -libra-network-address = { path = "../network/network-address", version = "0.1.0", optional = true } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } -libra-types = { path = "../types", version = "0.1.0" } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../config", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diemdb = { path = "../storage/diemdb", version = "0.1.0", optional = true } +diem-infallible = { path = "../common/infallible", version = "0.1.0" } +diem-logger = { path = "../common/logger", version = "0.1.0" } +diem-mempool = { path = "../mempool", version = "0.1.0"} +diem-metrics = { path = "../common/metrics", version = "0.1.0" } +diem-network-address = { path = "../network/network-address", version = "0.1.0", optional = true } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } +diem-types = { path = "../types", version = "0.1.0" } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } memsocket = { path = "../network/memsocket", version = "0.1.0", optional = true } netcore = { path = "../network/netcore", version = "0.1.0" } network = { path = "../network", version = "0.1.0" } storage-interface = { path = "../storage/storage-interface", version = "0.1.0" } subscription-service = { path = "../common/subscription-service", version = "0.1.0" } -libra-vm = { path = "../language/libra-vm", version = "0.1.0" } +diem-vm = { path = "../language/diem-vm", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } vm-genesis = { path = "../language/tools/vm-genesis", version = "0.1.0", optional = true } @@ -50,13 +50,13 @@ channel = { path = "../common/channel", version = "0.1.0" } compiled-stdlib = { path = "../language/stdlib/compiled", version = "0.1.0" } executor = { path = "../execution/executor", version = "0.1.0" } executor-test-helpers = { path = "../execution/executor-test-helpers", version = "0.1.0" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } -libra-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } -libra-temppath = { path = "../common/temppath", version = "0.1.0" } -libradb = { path = "../storage/libradb", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-genesis-tool = {path = "../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-mempool = { path = "../mempool", version = "0.1.0", features = ["fuzzing"] } +diem-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } +diem-temppath = { path = "../common/temppath", version = "0.1.0" } +diemdb = { path = "../storage/diemdb", version = "0.1.0" } memsocket = { path = "../network/memsocket", version = "0.1.0" } network = { path = "../network", version = "0.1.0", features = ["testing"] } network-builder = {path = "../network/builder", version = "0.1.0"} @@ -68,4 +68,4 @@ vm-genesis = { path = "../language/tools/vm-genesis", version = "0.1.0" } [features] default = [] failpoints = ["fail/failpoints"] -fuzzing = ["vm-genesis", "proptest", "libra-network-address/fuzzing", "libra-config/fuzzing", "libra-mempool/fuzzing", "libra-types/fuzzing", "libra-proptest-helpers", "memsocket/fuzzing"] +fuzzing = ["vm-genesis", "proptest", "diem-network-address/fuzzing", "diem-config/fuzzing", "diem-mempool/fuzzing", "diem-types/fuzzing", "diem-proptest-helpers", "memsocket/fuzzing"] diff --git a/state-synchronizer/README.md b/state-synchronizer/README.md index 507b2a74d9..4122ff980b 100644 --- a/state-synchronizer/README.md +++ b/state-synchronizer/README.md @@ -18,12 +18,12 @@ for a high-level overview. ## Implementation Details This crate contains an implemented instance of the specifications for -a LibraNet state synchronizer. +a DiemNet state synchronizer. - `chunk_request` & `chunk_response`: definitions/implementation of state sync -LibraNet messages +DiemNet messages - `coordinator`: the main runtime that processes messages from consensus -or LibraNet State Synchronizer network protocol +or DiemNet State Synchronizer network protocol - `executor_proxy`: interface b/w state sync and storage/execution - `request_manager`: actor that handles managing per-peer information and sending chunk requests to advance local state based on per-peer info or network diff --git a/state-synchronizer/src/chunk_request.rs b/state-synchronizer/src/chunk_request.rs index 8ff094c646..3e285f09b4 100644 --- a/state-synchronizer/src/chunk_request.rs +++ b/state-synchronizer/src/chunk_request.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::{ledger_info::LedgerInfoWithSignatures, transaction::Version}; +use diem_types::{ledger_info::LedgerInfoWithSignatures, transaction::Version}; use serde::{Deserialize, Serialize}; use std::fmt; diff --git a/state-synchronizer/src/chunk_response.rs b/state-synchronizer/src/chunk_response.rs index c5054f7573..5fdb253398 100644 --- a/state-synchronizer/src/chunk_response.rs +++ b/state-synchronizer/src/chunk_response.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::{ +use diem_types::{ ledger_info::LedgerInfoWithSignatures, transaction::{TransactionListWithProof, Version}, }; diff --git a/state-synchronizer/src/coordinator.rs b/state-synchronizer/src/coordinator.rs index 52e3c5a5f8..7c9d81228b 100644 --- a/state-synchronizer/src/coordinator.rs +++ b/state-synchronizer/src/coordinator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,25 +12,25 @@ use crate::{ SynchronizerState, }; use anyhow::{bail, ensure, format_err, Result}; -use fail::fail_point; -use futures::{ - channel::{mpsc, oneshot}, - stream::select_all, - StreamExt, -}; -use libra_config::{ +use diem_config::{ config::{PeerNetworkId, RoleType, StateSyncConfig, UpstreamConfig}, network_id::NodeNetworkId, }; -use libra_logger::prelude::*; -use libra_mempool::{CommitNotification, CommitResponse, CommittedTransaction}; -use libra_types::{ +use diem_logger::prelude::*; +use diem_mempool::{CommitNotification, CommitResponse, CommittedTransaction}; +use diem_types::{ contract_event::ContractEvent, epoch_change::Verifier, ledger_info::LedgerInfoWithSignatures, transaction::{Transaction, TransactionListWithProof, Version}, waypoint::Waypoint, }; +use fail::fail_point; +use futures::{ + channel::{mpsc, oneshot}, + stream::select_all, + StreamExt, +}; use network::protocols::network::Event; use std::{ collections::{BTreeMap, HashMap}, @@ -472,7 +472,7 @@ impl SyncCoordinator { ); counters::set_timestamp( counters::TimestampType::Real, - libra_infallible::duration_since_epoch().as_micros() as u64, + diem_infallible::duration_since_epoch().as_micros() as u64, ); counters::EPOCH.set(local_epoch as i64); debug!(LogSchema::new(LogEntry::LocalState) diff --git a/state-synchronizer/src/counters.rs b/state-synchronizer/src/counters.rs index 4fc3e422d1..568a8b2d3a 100644 --- a/state-synchronizer/src/counters.rs +++ b/state-synchronizer/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ +use diem_metrics::{ register_histogram, register_histogram_vec, register_int_counter, register_int_counter_vec, register_int_gauge, register_int_gauge_vec, DurationHistogram, Histogram, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, @@ -92,7 +92,7 @@ pub const TIMEOUT_LABEL: &str = "timeout"; /// Counter of pending network events to State Synchronizer pub static PENDING_STATE_SYNCHRONIZER_NETWORK_EVENTS: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_pending_network_events", + "diem_state_sync_pending_network_events", "Counters(queued,dequeued,dropped) related to pending network notifications for State Synchronizer", &["state"] ).unwrap() @@ -102,7 +102,7 @@ pub static PENDING_STATE_SYNCHRONIZER_NETWORK_EVENTS: Lazy = Lazy pub static REQUESTS_SENT: Lazy = Lazy::new(|| { register_int_counter_vec!( // metric name - "libra_state_sync_requests_sent_total", + "diem_state_sync_requests_sent_total", // metric description "Number of chunk requests sent", // metric labels @@ -114,7 +114,7 @@ pub static REQUESTS_SENT: Lazy = Lazy::new(|| { /// Number of chunk responses sent from a node (including FN subscriptions) pub static RESPONSES_SENT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_responses_sent_total", + "diem_state_sync_responses_sent_total", "Number of chunk responses sent (including FN subscriptions)", &["network", "peer", "result"] ) @@ -123,7 +123,7 @@ pub static RESPONSES_SENT: Lazy = Lazy::new(|| { pub static RESPONSE_FROM_DOWNSTREAM_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_responses_from_downstream_total", + "diem_state_sync_responses_from_downstream_total", "Number of chunk responses received from a downstream peer", &["network", "peer"] ) @@ -133,7 +133,7 @@ pub static RESPONSE_FROM_DOWNSTREAM_COUNT: Lazy = Lazy::new(|| { /// Number of attempts to apply a chunk pub static APPLY_CHUNK_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_apply_chunk_total", + "diem_state_sync_apply_chunk_total", "Number of Success results of applying a chunk", &["network", "sender", "result"] ) @@ -142,7 +142,7 @@ pub static APPLY_CHUNK_COUNT: Lazy = Lazy::new(|| { pub static PROCESS_CHUNK_REQUEST_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_process_chunk_request_total", + "diem_state_sync_process_chunk_request_total", "Number of times chunk request was processed", &["network", "sender", "result"] ) @@ -152,7 +152,7 @@ pub static PROCESS_CHUNK_REQUEST_COUNT: Lazy = Lazy::new(|| { /// Number of transactions in a received chunk response pub static STATE_SYNC_CHUNK_SIZE: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_state_sync_chunk_size", + "diem_state_sync_chunk_size", "Number of transactions in a state sync chunk response", &["network", "sender"] ) @@ -163,7 +163,7 @@ pub static STATE_SYNC_CHUNK_SIZE: Lazy = Lazy::new(|| { /// They are the set of nodes a node can make sync requests to pub static ACTIVE_UPSTREAM_PEERS: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_state_sync_active_upstream_peers", + "diem_state_sync_active_upstream_peers", "Number of upstream peers that are currently active", &["network"] ) @@ -176,7 +176,7 @@ pub static ACTIVE_UPSTREAM_PEERS: Lazy = Lazy::new(|| { /// and the node fails over to other networks pub static MULTICAST_LEVEL: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_state_sync_multicast_level", + "diem_state_sync_multicast_level", "Max network preference of the networks state sync is sending chunk requests to" ) .unwrap() @@ -184,7 +184,7 @@ pub static MULTICAST_LEVEL: Lazy = Lazy::new(|| { pub static TIMESTAMP: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_state_sync_timestamp", + "diem_state_sync_timestamp", "Timestamp involved in state sync progress", &["type"] // see TimestampType above ) @@ -192,11 +192,11 @@ pub static TIMESTAMP: Lazy = Lazy::new(|| { }); /// Notice: this metric is used in CT full node health check -/// ~/libra/testsuite/cluster-test/health/fullnode_check.rs +/// ~/diem/testsuite/cluster-test/health/fullnode_check.rs /// please make corresponding changes if this field is updated pub static VERSION: Lazy = Lazy::new(|| { register_int_gauge_vec!( - "libra_state_sync_version", + "diem_state_sync_version", "Version involved in state sync progress", &["type"] // see version type labels above ) @@ -204,7 +204,7 @@ pub static VERSION: Lazy = Lazy::new(|| { }); pub static EPOCH: Lazy = Lazy::new(|| { - register_int_gauge!("libra_state_sync_epoch", "Current epoch in local state").unwrap() + register_int_gauge!("diem_state_sync_epoch", "Current epoch in local state").unwrap() }); /// How long it takes to make progress, from requesting a chunk to processing the response and @@ -212,7 +212,7 @@ pub static EPOCH: Lazy = Lazy::new(|| { pub static SYNC_PROGRESS_DURATION: Lazy = Lazy::new(|| { DurationHistogram::new( register_histogram!( - "libra_state_sync_sync_progress_duration_s", + "diem_state_sync_sync_progress_duration_s", "Histogram of time it takes to sync a chunk, from requesting a chunk to processing the response and committing the chunk" ) .unwrap() @@ -222,7 +222,7 @@ pub static SYNC_PROGRESS_DURATION: Lazy = Lazy::new(|| { /// Number of timeouts that occur during sync pub static TIMEOUT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_state_sync_timeout_total", + "diem_state_sync_timeout_total", "Number of timeouts that occur during sync" ) .unwrap() @@ -231,7 +231,7 @@ pub static TIMEOUT: Lazy = Lazy::new(|| { /// Number of times sync request (from consensus) processed pub static SYNC_REQUEST_RESULT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_sync_request_total", + "diem_state_sync_sync_request_total", "Number of sync requests (from consensus) processed", &["result"] ) @@ -241,7 +241,7 @@ pub static SYNC_REQUEST_RESULT: Lazy = Lazy::new(|| { /// Number of failures that occur during the commit flow across consensus, state sync, and mempool pub static COMMIT_FLOW_FAIL: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_commit_flow_fail_total", + "diem_state_sync_commit_flow_fail_total", "Number of timeouts that occur during the commit flow across consensus, state sync, and mempool", &["component"] // component with which state sync timed out with: consensus, to_mempool, from_mempool ) @@ -250,7 +250,7 @@ pub static COMMIT_FLOW_FAIL: Lazy = Lazy::new(|| { pub static FAILED_CHANNEL_SEND: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_failed_channel_sends_total", + "diem_state_sync_failed_channel_sends_total", "Number of times a channel send failed in state sync", &["type"] ) @@ -260,7 +260,7 @@ pub static FAILED_CHANNEL_SEND: Lazy = Lazy::new(|| { /// Time it takes for state sync to fully execute a chunk (via executor proxy) pub static EXECUTE_CHUNK_DURATION: Lazy = Lazy::new(|| { register_histogram!( - "libra_state_sync_execute_chunk_duration_s", + "diem_state_sync_execute_chunk_duration_s", "Histogram of time it takes for state sync's executor proxy to fully execute a chunk" ) .unwrap() @@ -269,7 +269,7 @@ pub static EXECUTE_CHUNK_DURATION: Lazy = Lazy::new(|| { /// Number of times a long-poll subscription is successfully delivered pub static SUBSCRIPTION_DELIVERY_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_subscription_delivery_count", + "diem_state_sync_subscription_delivery_count", "Number of times a node delivers a subscription for FN long-poll", &["network", "recipient", "result"] ) @@ -279,17 +279,17 @@ pub static SUBSCRIPTION_DELIVERY_COUNT: Lazy = Lazy::new(|| { /// Time it takes to process a coordinator msg from consensus pub static PROCESS_COORDINATOR_MSG_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_state_sync_coordinator_msg_latency", + "diem_state_sync_coordinator_msg_latency", "Time it takes to process a message from consensus", &["type"] ) .unwrap() }); -/// Time it takes to process a state sync message from LibraNet +/// Time it takes to process a state sync message from DiemNet pub static PROCESS_MSG_LATENCY: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_state_sync_process_msg_latency", + "diem_state_sync_process_msg_latency", "Time it takes to process a message in state sync", &["network", "sender", "type"] ) @@ -298,7 +298,7 @@ pub static PROCESS_MSG_LATENCY: Lazy = Lazy::new(|| { pub static CONSENSUS_COMMIT_FAIL_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_state_sync_consensus_commit_fail", + "diem_state_sync_consensus_commit_fail", "Number of times a commit msg from consensus failed to be processed" ) .unwrap() @@ -306,7 +306,7 @@ pub static CONSENSUS_COMMIT_FAIL_COUNT: Lazy = Lazy::new(|| { pub static RECONFIG_PUBLISH_COUNT: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_state_sync_reconfig_count", + "diem_state_sync_reconfig_count", "Number of times on-chain reconfig notification is published in state sync", &["result"] ) @@ -315,7 +315,7 @@ pub static RECONFIG_PUBLISH_COUNT: Lazy = Lazy::new(|| { pub static STORAGE_READ_FAIL_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_state_sync_storage_read_fail_count", + "diem_state_sync_storage_read_fail_count", "Number of times storage read failed in state sync" ) .unwrap() @@ -323,7 +323,7 @@ pub static STORAGE_READ_FAIL_COUNT: Lazy = Lazy::new(|| { pub static NETWORK_ERROR_COUNT: Lazy = Lazy::new(|| { register_int_counter!( - "libra_state_sync_network_error_count", + "diem_state_sync_network_error_count", "Number of network errors encountered in state sync" ) .unwrap() @@ -333,7 +333,7 @@ pub static NETWORK_ERROR_COUNT: Lazy = Lazy::new(|| { pub static MAIN_LOOP: Lazy = Lazy::new(|| { DurationHistogram::new( register_histogram!( - "libra_state_sync_main_loop", + "diem_state_sync_main_loop", "Duration of the each run of the event loop" ) .unwrap(), diff --git a/state-synchronizer/src/executor_proxy.rs b/state-synchronizer/src/executor_proxy.rs index aca7c8427f..005a5423cf 100644 --- a/state-synchronizer/src/executor_proxy.rs +++ b/state-synchronizer/src/executor_proxy.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,10 +7,8 @@ use crate::{ SynchronizerState, }; use anyhow::{format_err, Result}; -use executor_types::{ChunkExecutor, ExecutedTrees}; -use itertools::Itertools; -use libra_logger::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_types::{ account_state::AccountState, contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, @@ -18,6 +16,8 @@ use libra_types::{ on_chain_config::{config_address, OnChainConfigPayload, ON_CHAIN_CONFIG_REGISTRY}, transaction::TransactionListWithProof, }; +use executor_types::{ChunkExecutor, ExecutedTrees}; +use itertools::Itertools; use std::{collections::HashSet, convert::TryFrom, sync::Arc}; use storage_interface::DbReader; use subscription_service::ReconfigSubscription; @@ -55,7 +55,7 @@ pub trait ExecutorProxyTrait: Send { /// Load all on-chain configs from storage /// Note: this method is being exposed as executor proxy trait temporarily because storage read is currently /// using the tonic storage read client, which needs the tokio runtime to block on with no runtime/async issues - /// Once we make storage reads sync (by replacing the storage read client with direct LibraDB), + /// Once we make storage reads sync (by replacing the storage read client with direct DiemDB), /// we can make this entirely internal to `ExecutorProxy`'s initialization procedure fn load_on_chain_configs(&mut self) -> Result<()>; diff --git a/state-synchronizer/src/lib.rs b/state-synchronizer/src/lib.rs index f6d1ea2098..25c9820464 100644 --- a/state-synchronizer/src/lib.rs +++ b/state-synchronizer/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -7,8 +7,8 @@ //! Used for node restarts, network partitions, full node syncs #![recursion_limit = "1024"] +use diem_types::{epoch_state::EpochState, ledger_info::LedgerInfoWithSignatures}; use executor_types::ExecutedTrees; -use libra_types::{epoch_state::EpochState, ledger_info::LedgerInfoWithSignatures}; pub use synchronizer::{StateSyncClient, StateSynchronizer}; pub mod chunk_request; diff --git a/state-synchronizer/src/logging.rs b/state-synchronizer/src/logging.rs index 0e77260928..e1c5bfcc14 100644 --- a/state-synchronizer/src/logging.rs +++ b/state-synchronizer/src/logging.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,9 +6,9 @@ use crate::{ request_manager::ChunkRequestInfo, }; use anyhow::Error; -use libra_config::config::PeerNetworkId; -use libra_logger::Schema; -use libra_types::{ +use diem_config::config::PeerNetworkId; +use diem_logger::Schema; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, waypoint::Waypoint, }; use serde::Serialize; diff --git a/state-synchronizer/src/network.rs b/state-synchronizer/src/network.rs index b62e944bbc..740cf5ba67 100644 --- a/state-synchronizer/src/network.rs +++ b/state-synchronizer/src/network.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Interface between StateSynchronizer and Network layers. use crate::{chunk_request::GetChunkRequest, chunk_response::GetChunkResponse, counters}; use channel::message_queues::QueueStyle; -use libra_metrics::IntCounterVec; -use libra_types::PeerId; +use diem_metrics::IntCounterVec; +use diem_types::PeerId; use network::{ error::NetworkError, peer_manager::{ConnectionRequestSender, PeerManagerRequestSender}, diff --git a/state-synchronizer/src/request_manager.rs b/state-synchronizer/src/request_manager.rs index 9ca515c202..bac1fcfec1 100644 --- a/state-synchronizer/src/request_manager.rs +++ b/state-synchronizer/src/request_manager.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,12 +8,12 @@ use crate::{ network::{StateSynchronizerMsg, StateSynchronizerSender}, }; use anyhow::{bail, Result}; -use itertools::Itertools; -use libra_config::{ +use diem_config::{ config::{PeerNetworkId, UpstreamConfig}, network_id::{NetworkId, NodeNetworkId}, }; -use libra_logger::prelude::*; +use diem_logger::prelude::*; +use itertools::Itertools; use netcore::transport::ConnectionOrigin; use rand::{ distributions::{Distribution, WeightedIndex}, diff --git a/state-synchronizer/src/synchronizer.rs b/state-synchronizer/src/synchronizer.rs index eab18f8528..7a2cccab54 100644 --- a/state-synchronizer/src/synchronizer.rs +++ b/state-synchronizer/src/synchronizer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ coordinator::{CoordinatorMessage, SyncCoordinator, SyncRequest}, @@ -8,21 +8,21 @@ use crate::{ SynchronizerState, }; use anyhow::{format_err, Result}; -use executor_types::ChunkExecutor; -use futures::{ - channel::{mpsc, oneshot}, - future::Future, - SinkExt, -}; -use libra_config::{ +use diem_config::{ config::{NodeConfig, RoleType, StateSyncConfig, UpstreamConfig}, network_id::NodeNetworkId, }; -use libra_mempool::{CommitNotification, CommitResponse}; -use libra_types::{ +use diem_mempool::{CommitNotification, CommitResponse}; +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, transaction::Transaction, waypoint::Waypoint, }; +use executor_types::ChunkExecutor; +use futures::{ + channel::{mpsc, oneshot}, + future::Future, + SinkExt, +}; use std::{ boxed::Box, collections::HashMap, diff --git a/state-synchronizer/src/tests/fuzzing.rs b/state-synchronizer/src/tests/fuzzing.rs index f842646f90..8ba4360ea5 100644 --- a/state-synchronizer/src/tests/fuzzing.rs +++ b/state-synchronizer/src/tests/fuzzing.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,17 +11,17 @@ use crate::{ mock_storage::MockStorage, }, }; -use channel::{libra_channel, message_queues::QueueStyle}; -use futures::channel::mpsc; -use libra_config::{ +use channel::{diem_channel, message_queues::QueueStyle}; +use diem_config::{ config::{NodeConfig, PeerNetworkId, RoleType}, network_id::{NetworkId, NodeNetworkId}, }; -use libra_infallible::RwLock; -use libra_types::{ +use diem_infallible::RwLock; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, transaction::TransactionListWithProof, waypoint::Waypoint, PeerId, }; +use futures::channel::mpsc; use network::{ peer_manager::{ConnectionRequestSender, PeerManagerRequestSender}, protocols::network::NewNetworkSender, @@ -60,9 +60,9 @@ pub fn test_state_sync_msg_fuzzer_impl(msg: StateSynchronizerMsg) { // mock network senders let (network_reqs_tx, _network_reqs_rx) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); + diem_channel::new(QueueStyle::FIFO, NonZeroUsize::new(8).unwrap(), None); let network_sender = StateSynchronizerSender::new( PeerManagerRequestSender::new(network_reqs_tx), ConnectionRequestSender::new(connection_reqs_tx), diff --git a/state-synchronizer/src/tests/helpers.rs b/state-synchronizer/src/tests/helpers.rs index d56df12963..3024c298ed 100644 --- a/state-synchronizer/src/tests/helpers.rs +++ b/state-synchronizer/src/tests/helpers.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ executor_proxy::ExecutorProxyTrait, tests::mock_storage::MockStorage, SynchronizerState, }; use anyhow::Result; -use libra_config::config::HANDSHAKE_VERSION; -use libra_crypto::{hash::ACCUMULATOR_PLACEHOLDER_HASH, test_utils::TEST_SEED, x25519, Uniform}; -use libra_infallible::RwLock; -use libra_network_address::{ +use diem_config::config::HANDSHAKE_VERSION; +use diem_crypto::{hash::ACCUMULATOR_PLACEHOLDER_HASH, test_utils::TEST_SEED, x25519, Uniform}; +use diem_infallible::RwLock; +use diem_network_address::{ encrypted::{TEST_SHARED_VAL_NETADDR_KEY, TEST_SHARED_VAL_NETADDR_KEY_VERSION}, NetworkAddress, Protocol, }; -use libra_types::{ +use diem_types::{ contract_event::ContractEvent, ledger_info::LedgerInfoWithSignatures, on_chain_config::ValidatorSet, proof::TransactionListProof, transaction::TransactionListWithProof, validator_config::ValidatorConfig, diff --git a/state-synchronizer/src/tests/integration_tests.rs b/state-synchronizer/src/tests/integration_tests.rs index 1c2a389421..d9366f2cac 100644 --- a/state-synchronizer/src/tests/integration_tests.rs +++ b/state-synchronizer/src/tests/integration_tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,22 +10,22 @@ use crate::{ StateSyncClient, StateSynchronizer, }; use anyhow::{bail, Result}; -use channel::{libra_channel, message_queues::QueueStyle}; -use futures::{executor::block_on, future::FutureExt, StreamExt}; -use libra_config::{ +use channel::{diem_channel, message_queues::QueueStyle}; +use diem_config::{ config::RoleType, network_id::{NetworkContext, NetworkId, NodeNetworkId}, }; -use libra_crypto::x25519; -use libra_infallible::RwLock; -use libra_mempool::mocks::MockSharedMempool; -use libra_network_address::{parse_memory, NetworkAddress, Protocol}; -use libra_types::{ +use diem_crypto::x25519; +use diem_infallible::RwLock; +use diem_mempool::mocks::MockSharedMempool; +use diem_network_address::{parse_memory, NetworkAddress, Protocol}; +use diem_types::{ chain_id::ChainId, ledger_info::LedgerInfoWithSignatures, on_chain_config::ValidatorSet, transaction::TransactionListWithProof, validator_info::ValidatorInfo, validator_signer::ValidatorSigner, validator_verifier::random_validator_verifier, waypoint::Waypoint, PeerId, }; +use futures::{executor::block_on, future::FutureExt, StreamExt}; use netcore::transport::{ConnectionOrigin, ConnectionOrigin::*}; use network::{ peer_manager::{ @@ -64,9 +64,9 @@ struct SynchronizerEnv { peer_ids: Vec, mempools: Vec, network_reqs_rxs: - HashMap>, + HashMap>, network_notifs_txs: - HashMap>, + HashMap>, network_conn_event_notifs_txs: HashMap, multi_peer_ids: Vec>, // maps peer's synchronizer env index to that peer's PeerIds, to support node with multiple network IDs } @@ -97,7 +97,7 @@ impl SynchronizerEnv { } fn new(num_peers: usize) -> Self { - ::libra_logger::Logger::init_for_testing(); + ::diem_logger::Logger::init_for_testing(); let runtime = Runtime::new().unwrap(); let (signers, public_keys, network_keys, network_addrs) = SynchronizerEnvHelper::initial_setup(num_peers); @@ -154,7 +154,7 @@ impl SynchronizerEnv { let new_peer_idx = self.synchronizers.len(); // set up config - let mut config = libra_config::config::NodeConfig::default_for_validator(); + let mut config = diem_config::config::NodeConfig::default_for_validator(); config.base.role = role; config.state_sync.sync_request_timeout_ms = timeout_ms; config.state_sync.multicast_timeout_ms = multicast_timeout_ms; @@ -198,11 +198,11 @@ impl SynchronizerEnv { // mock the StateSynchronizerEvents and StateSynchronizerSender to allow manually controlling // msg delivery in test let (network_reqs_tx, network_reqs_rx) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let (connection_reqs_tx, _) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let (network_notifs_tx, network_notifs_rx) = - libra_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); + diem_channel::new(QueueStyle::LIFO, NonZeroUsize::new(1).unwrap(), None); let (conn_status_tx, conn_status_rx) = conn_notifs_channel::new(); let network_sender = StateSynchronizerSender::new( PeerManagerRequestSender::new(network_reqs_tx), diff --git a/state-synchronizer/src/tests/mock_storage.rs b/state-synchronizer/src/tests/mock_storage.rs index 383881dc81..034b5cf898 100644 --- a/state-synchronizer/src/tests/mock_storage.rs +++ b/state-synchronizer/src/tests/mock_storage.rs @@ -1,24 +1,24 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::SynchronizerState; use anyhow::{bail, Result}; -use executor_types::ExecutedTrees; -use libra_crypto::HashValue; +use diem_crypto::HashValue; #[cfg(test)] -use libra_types::{ +use diem_types::{ account_address::AccountAddress, - account_config::coin1_tmp_tag, + account_config::xus_tag, block_info::BlockInfo, ledger_info::LedgerInfo, on_chain_config::ValidatorSet, test_helpers::transaction_test_helpers::get_test_signed_txn, transaction::{authenticator::AuthenticationKey, SignedTransaction}, }; -use libra_types::{ +use diem_types::{ epoch_state::EpochState, ledger_info::LedgerInfoWithSignatures, transaction::Transaction, validator_signer::ValidatorSigner, }; +use executor_types::ExecutedTrees; #[cfg(test)] use std::collections::BTreeMap; use std::collections::HashMap; @@ -179,7 +179,7 @@ impl MockStorage { let sender = AccountAddress::random(); let receiver = AuthenticationKey::random(); let program = encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), receiver.derived_address(), 1, vec![], diff --git a/state-synchronizer/src/tests/mod.rs b/state-synchronizer/src/tests/mod.rs index 8a07fccdfd..b941048b6e 100644 --- a/state-synchronizer/src/tests/mod.rs +++ b/state-synchronizer/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod helpers; diff --git a/state-synchronizer/src/tests/on_chain_config_tests.rs b/state-synchronizer/src/tests/on_chain_config_tests.rs index 21ba4ed077..4a80896634 100644 --- a/state-synchronizer/src/tests/on_chain_config_tests.rs +++ b/state-synchronizer/src/tests/on_chain_config_tests.rs @@ -1,8 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::executor_proxy::{ExecutorProxy, ExecutorProxyTrait}; use compiled_stdlib::transaction_scripts::StdlibScript; +use diem_crypto::{ed25519::*, HashValue, PrivateKey, Uniform}; +use diem_types::{ + account_config::{diem_root_address, xus_tag}, + block_metadata::BlockMetadata, + on_chain_config::{OnChainConfig, VMPublishingOption}, + transaction::{Transaction, WriteSetPayload}, +}; +use diem_vm::DiemVM; +use diemdb::DiemDB; use executor::Executor; use executor_test_helpers::{ bootstrap_genesis, gen_block_id, gen_block_metadata, gen_ledger_info_with_sigs, @@ -10,15 +19,6 @@ use executor_test_helpers::{ }; use executor_types::BlockExecutor; use futures::{future::FutureExt, stream::StreamExt}; -use libra_crypto::{ed25519::*, HashValue, PrivateKey, Uniform}; -use libra_types::{ - account_config::{coin1_tmp_tag, libra_root_address}, - block_metadata::BlockMetadata, - on_chain_config::{OnChainConfig, VMPublishingOption}, - transaction::{Transaction, WriteSetPayload}, -}; -use libra_vm::LibraVM; -use libradb::LibraDB; use storage_interface::DbReaderWriter; use subscription_service::ReconfigSubscription; use transaction_builder::{ @@ -37,13 +37,13 @@ fn test_on_chain_config_pub_sub() { let (genesis, validators) = vm_genesis::test_genesis_change_set_and_validators(Some(1)); let genesis_key = vm_genesis::GENESIS_KEYPAIR.0.clone(); let genesis_txn = Transaction::GenesisTransaction(WriteSetPayload::Direct(genesis)); - let db_path = libra_temppath::TempPath::new(); + let db_path = diem_temppath::TempPath::new(); db_path.create_as_dir().unwrap(); - let (db, db_rw) = DbReaderWriter::wrap(LibraDB::new_for_test(db_path.path())); - bootstrap_genesis::(&db_rw, &genesis_txn).unwrap(); + let (db, db_rw) = DbReaderWriter::wrap(DiemDB::new_for_test(db_path.path())); + bootstrap_genesis::(&db_rw, &genesis_txn).unwrap(); - let mut block_executor = Box::new(Executor::::new(db_rw.clone())); - let chunk_executor = Box::new(Executor::::new(db_rw)); + let mut block_executor = Box::new(Executor::::new(db_rw.clone())); + let chunk_executor = Box::new(Executor::::new(db_rw)); let mut executor_proxy = ExecutorProxy::new(db, chunk_executor, vec![subscription]); assert!( @@ -75,7 +75,7 @@ fn test_on_chain_config_pub_sub() { ////////////////////////////////////////////////// // Case 2: publish if subscribed config changed // ////////////////////////////////////////////////// - let genesis_account = libra_root_address(); + let genesis_account = diem_root_address(); let validator_account = validators[0].owner_address; let operator_key = validators[0].key.clone(); let operator_public_key = operator_key.public_key(); @@ -145,7 +145,7 @@ fn test_on_chain_config_pub_sub() { genesis_key.clone(), genesis_key.public_key(), Some(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), validator_account, 1_000_000, vec![], diff --git a/state-synchronizer/src/tests/unit_tests.rs b/state-synchronizer/src/tests/unit_tests.rs index 2400b131e3..04eba8ce24 100644 --- a/state-synchronizer/src/tests/unit_tests.rs +++ b/state-synchronizer/src/tests/unit_tests.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::request_manager::{PeerScoreUpdateType, RequestManager}; -use libra_config::config::{PeerNetworkId, UpstreamConfig}; +use diem_config::config::{PeerNetworkId, UpstreamConfig}; use netcore::transport::ConnectionOrigin; use std::{collections::HashMap, time::Duration}; diff --git a/storage/README.md b/storage/README.md index 87766167b4..9e362a3ce2 100644 --- a/storage/README.md +++ b/storage/README.md @@ -6,8 +6,8 @@ custom_edit_url: https://github.com/libra/libra/edit/master/storage/README.md The storage module provides reliable and efficient persistent storage for the -entire set of data on the Libra Blockchain, as well as the necessary data used -internally by Libra Core. +entire set of data on the Diem Blockchain, as well as the necessary data used +internally by Diem Core. ## Overview @@ -19,10 +19,10 @@ The storage module is designed to serve two primary purposes: blockchain data. A client can easily verify the integrity of the response if they have obtained the correct root hash. -The Libra Blockchain can be viewed as a Merkle tree consisting of the following +The Diem Blockchain can be viewed as a Merkle tree consisting of the following components: -![data](https://developers.libra.org/docs/assets/data.png) +![data](https://developers.diem.com/docs/assets/data.png) ### Ledger History @@ -70,7 +70,7 @@ key-value pairs in RocksDB are byte arrays, there is a wrapper on top of RocksDB to deal with the serialization of keys and values. This wrapper enforces that all data in and out of the DB is structured according to predefined schemas. -The core module that implements the main functionalities is called *LibraDB*. +The core module that implements the main functionalities is called *DiemDB*. While we use a single RocksDB instance to store the entire set of data, related data are grouped into logical stores — for example, ledger store, state store, and transaction store, etc. @@ -86,9 +86,9 @@ Patricia tree. ``` storage └── accumulator # Implementation of Merkle accumulator. - └── libradb # Implementation of LibraDB. + └── diemdb # Implementation of DiemDB. └── schemadb # Schematized wrapper on top of RocksDB. - └── scratchpad # In-memory representation of Libra core data structures used by execution. + └── scratchpad # In-memory representation of Diem core data structures used by execution. └── jellyfish-merkle # Implementation of sparse Merkle tree. └── state_view # An abstraction layer representing a snapshot of state where the Move VM reads data. └── storage_client # A Rust wrapper on top of GRPC clients. diff --git a/storage/accumulator/Cargo.toml b/storage/accumulator/Cargo.toml index 273f2d23e3..5ab495461c 100644 --- a/storage/accumulator/Cargo.toml +++ b/storage/accumulator/Cargo.toml @@ -1,28 +1,28 @@ [package] name = "accumulator" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra accumulator" +authors = ["Diem Association "] +description = "Diem accumulator" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] anyhow = "1.0.34" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } mirai-annotations = "1.10.1" -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } proptest = { version = "0.10.1", optional = true } [dev-dependencies] rand = "0.7.3" proptest = "0.10.1" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "libra-crypto/fuzzing", "libra-types/fuzzing"] +fuzzing = ["proptest", "diem-crypto/fuzzing", "diem-types/fuzzing"] diff --git a/storage/accumulator/src/lib.rs b/storage/accumulator/src/lib.rs index dc82e2b7db..fa9b5bf3f6 100644 --- a/storage/accumulator/src/lib.rs +++ b/storage/accumulator/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -107,8 +107,8 @@ pub mod test_helpers; use anyhow::{ensure, format_err, Result}; -use libra_crypto::hash::{CryptoHash, CryptoHasher, HashValue, ACCUMULATOR_PLACEHOLDER_HASH}; -use libra_types::proof::{ +use diem_crypto::hash::{CryptoHash, CryptoHasher, HashValue, ACCUMULATOR_PLACEHOLDER_HASH}; +use diem_types::proof::{ definition::{LeafCount, MAX_ACCUMULATOR_PROOF_DEPTH}, position::{FrozenSubTreeIterator, FrozenSubtreeSiblingIterator, Position}, AccumulatorConsistencyProof, AccumulatorProof, AccumulatorRangeProof, MerkleTreeInternalNode, @@ -151,7 +151,7 @@ where /// `num_leaves` leaves in total. Siblings are read via `reader` (or generated dynamically /// if they are non-frozen). /// - /// See [`libra_types::proof::AccumulatorProof`] for proof format. + /// See [`diem_types::proof::AccumulatorProof`] for proof format. pub fn get_proof( reader: &R, num_leaves: LeafCount, @@ -162,7 +162,7 @@ where /// Gets a proof that shows the full accumulator is consistent with a smaller accumulator. /// - /// See [`libra_types::proof::AccumulatorConsistencyProof`] for proof format. + /// See [`diem_types::proof::AccumulatorConsistencyProof`] for proof format. pub fn get_consistency_proof( reader: &R, full_acc_leaves: LeafCount, @@ -174,7 +174,7 @@ where /// Gets a proof that shows a range of leaves are part of the accumulator. /// - /// See [`libra_types::proof::AccumulatorRangeProof`] for proof format. + /// See [`diem_types::proof::AccumulatorRangeProof`] for proof format. pub fn get_range_proof( reader: &R, full_acc_leaves: LeafCount, diff --git a/storage/accumulator/src/test_helpers.rs b/storage/accumulator/src/test_helpers.rs index 240132a672..a1843e441f 100644 --- a/storage/accumulator/src/test_helpers.rs +++ b/storage/accumulator/src/test_helpers.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{HashReader, MerkleAccumulator, MerkleAccumulatorView}; use anyhow::{ensure, format_err, Result}; -use libra_crypto::hash::{HashValue, TestOnlyHasher, ACCUMULATOR_PLACEHOLDER_HASH}; -use libra_types::proof::{definition::LeafCount, position::Position}; +use diem_crypto::hash::{HashValue, TestOnlyHasher, ACCUMULATOR_PLACEHOLDER_HASH}; +use diem_types::proof::{definition::LeafCount, position::Position}; use proptest::{collection::vec, prelude::*}; use std::collections::HashMap; pub(crate) type InMemoryAccumulator = - libra_types::proof::accumulator::InMemoryAccumulator; + diem_types::proof::accumulator::InMemoryAccumulator; pub(crate) type TestAccumulator = MerkleAccumulator; pub(crate) struct MockHashStore { diff --git a/storage/accumulator/src/tests/mod.rs b/storage/accumulator/src/tests/mod.rs index 27cad244fa..c9b456c53b 100644 --- a/storage/accumulator/src/tests/mod.rs +++ b/storage/accumulator/src/tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod proof_test; diff --git a/storage/accumulator/src/tests/proof_test.rs b/storage/accumulator/src/tests/proof_test.rs index d57a0c6efa..63f856ab3e 100644 --- a/storage/accumulator/src/tests/proof_test.rs +++ b/storage/accumulator/src/tests/proof_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/accumulator/src/tests/write_test.rs b/storage/accumulator/src/tests/write_test.rs index 9a2936e100..06b9617c05 100644 --- a/storage/accumulator/src/tests/write_test.rs +++ b/storage/accumulator/src/tests/write_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -6,8 +6,8 @@ use crate::test_helpers::{ arb_hash_batch, arb_list_of_hash_batches, test_append_empty_impl, test_append_many_impl, MockHashStore, TestAccumulator, }; -use libra_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; -use libra_types::proof::definition::LeafCount; +use diem_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; +use diem_types::proof::definition::LeafCount; #[test] fn test_append_empty_on_empty() { diff --git a/storage/backup/backup-cli/Cargo.toml b/storage/backup/backup-cli/Cargo.toml index df813dbb50..c2e27b5666 100644 --- a/storage/backup/backup-cli/Cargo.toml +++ b/storage/backup/backup-cli/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "backup-cli" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -32,17 +32,17 @@ tokio-util = { version = "0.3.1", features = ["compat"] } executor = { path = "../../../execution/executor", version = "0.1.0" } executor-test-helpers = { path = "../../../execution/executor-test-helpers", version = "0.1.0", optional = true } executor-types = { path = "../../../execution/executor-types", version = "0.1.0" } -libra-jellyfish-merkle = { path = "../../jellyfish-merkle", version = "0.1.0" } +diem-jellyfish-merkle = { path = "../../jellyfish-merkle", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../../config", version = "0.1.0" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-infallible = { path = "../../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../../common/logger", version = "0.1.0" } -libra-secure-push-metrics = { path = "../../../secure/push-metrics", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-vm = { path = "../../../language/libra-vm", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libradb = { path = "../../libradb", version = "0.1.0" } +diem-config = { path = "../../../config", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-infallible = { path = "../../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../../common/logger", version = "0.1.0" } +diem-secure-push-metrics = { path = "../../../secure/push-metrics", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-vm = { path = "../../../language/diem-vm", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../../diemdb", version = "0.1.0" } storage-interface = { path = "../../storage-interface", version = "0.1.0" } [dev-dependencies] @@ -50,11 +50,11 @@ proptest = "0.10.1" backup-service = { path = "../backup-service", version = "0.1.0" } executor-test-helpers = { path = "../../../execution/executor-test-helpers", version = "0.1.0" } -libradb = { path = "../../libradb", version = "0.1.0", features = ["fuzzing"] } -libra-config = { path = "../../../config", version = "0.1.0" } -libra-proptest-helpers = { path = "../../../common/proptest-helpers" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diemdb = { path = "../../diemdb", version = "0.1.0", features = ["fuzzing"] } +diem-config = { path = "../../../config", version = "0.1.0" } +diem-proptest-helpers = { path = "../../../common/proptest-helpers" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } storage-interface = { path = "../../storage-interface", version = "0.1.0" } [features] -fuzzing = ["libradb/fuzzing"] +fuzzing = ["diemdb/fuzzing"] diff --git a/storage/backup/backup-cli/src/backup_types/epoch_ending/backup.rs b/storage/backup/backup-cli/src/backup_types/epoch_ending/backup.rs index 33bf0d587c..f0e61fdb04 100644 --- a/storage/backup/backup-cli/src/backup_types/epoch_ending/backup.rs +++ b/storage/backup/backup-cli/src/backup_types/epoch_ending/backup.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,8 +11,8 @@ use crate::{ }, }; use anyhow::{anyhow, ensure, Result}; -use libra_logger::prelude::*; -use libra_types::{ledger_info::LedgerInfoWithSignatures, waypoint::Waypoint}; +use diem_logger::prelude::*; +use diem_types::{ledger_info::LedgerInfoWithSignatures, waypoint::Waypoint}; use once_cell::sync::Lazy; use std::{convert::TryInto, str::FromStr, sync::Arc}; use structopt::StructOpt; diff --git a/storage/backup/backup-cli/src/backup_types/epoch_ending/manifest.rs b/storage/backup/backup-cli/src/backup_types/epoch_ending/manifest.rs index 4e1de77d45..54eda7d6cc 100644 --- a/storage/backup/backup-cli/src/backup_types/epoch_ending/manifest.rs +++ b/storage/backup/backup-cli/src/backup_types/epoch_ending/manifest.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::FileHandle; use anyhow::{ensure, Result}; -use libra_types::waypoint::Waypoint; +use diem_types::waypoint::Waypoint; use serde::{Deserialize, Serialize}; /// A chunk of an epoch ending backup manifest, representing the diff --git a/storage/backup/backup-cli/src/backup_types/epoch_ending/mod.rs b/storage/backup/backup-cli/src/backup_types/epoch_ending/mod.rs index cd6594e8a7..a658028fb9 100644 --- a/storage/backup/backup-cli/src/backup_types/epoch_ending/mod.rs +++ b/storage/backup/backup-cli/src/backup_types/epoch_ending/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup; diff --git a/storage/backup/backup-cli/src/backup_types/epoch_ending/restore.rs b/storage/backup/backup-cli/src/backup_types/epoch_ending/restore.rs index b5e44e99cd..ced08eabca 100644 --- a/storage/backup/backup-cli/src/backup_types/epoch_ending/restore.rs +++ b/storage/backup/backup-cli/src/backup_types/epoch_ending/restore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -14,14 +14,14 @@ use crate::{ }, }; use anyhow::{anyhow, ensure, Result}; -use futures::StreamExt; -use libra_logger::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_types::{ epoch_change::Verifier, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, transaction::Version, waypoint::Waypoint, }; +use futures::StreamExt; use std::{sync::Arc, time::Instant}; use structopt::StructOpt; diff --git a/storage/backup/backup-cli/src/backup_types/epoch_ending/tests.rs b/storage/backup/backup-cli/src/backup_types/epoch_ending/tests.rs index 9c6b9a728d..80e3d83b96 100644 --- a/storage/backup/backup-cli/src/backup_types/epoch_ending/tests.rs +++ b/storage/backup/backup-cli/src/backup_types/epoch_ending/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,9 +13,9 @@ use crate::{ }, }; use backup_service::start_backup_service; -use libra_config::{config::RocksdbConfig, utils::get_available_port}; -use libra_temppath::TempPath; -use libradb::LibraDB; +use diem_config::{config::RocksdbConfig, utils::get_available_port}; +use diem_temppath::TempPath; +use diemdb::DiemDB; use std::{ convert::TryInto, net::{IpAddr, Ipv4Addr, SocketAddr}, @@ -90,7 +90,7 @@ fn end_to_end() { .map(|li| li.ledger_info().next_block_epoch()) .unwrap_or(0); - let tgt_db = LibraDB::open( + let tgt_db = DiemDB::open( &tgt_db_dir, true, /* read_only */ None, /* pruner */ diff --git a/storage/backup/backup-cli/src/backup_types/mod.rs b/storage/backup/backup-cli/src/backup_types/mod.rs index 370d8ddd00..024c05eeee 100644 --- a/storage/backup/backup-cli/src/backup_types/mod.rs +++ b/storage/backup/backup-cli/src/backup_types/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod epoch_ending; diff --git a/storage/backup/backup-cli/src/backup_types/state_snapshot/backup.rs b/storage/backup/backup-cli/src/backup_types/state_snapshot/backup.rs index d09097e65a..062ebd7051 100644 --- a/storage/backup/backup-cli/src/backup_types/state_snapshot/backup.rs +++ b/storage/backup/backup-cli/src/backup_types/state_snapshot/backup.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,9 +12,9 @@ use crate::{ }; use anyhow::{anyhow, Result}; use bytes::Bytes; -use libra_crypto::HashValue; -use libra_logger::prelude::*; -use libra_types::{ +use diem_crypto::HashValue; +use diem_logger::prelude::*; +use diem_types::{ account_state_blob::AccountStateBlob, ledger_info::LedgerInfoWithSignatures, proof::TransactionInfoWithProof, transaction::Version, }; diff --git a/storage/backup/backup-cli/src/backup_types/state_snapshot/manifest.rs b/storage/backup/backup-cli/src/backup_types/state_snapshot/manifest.rs index d484759fee..0b13440918 100644 --- a/storage/backup/backup-cli/src/backup_types/state_snapshot/manifest.rs +++ b/storage/backup/backup-cli/src/backup_types/state_snapshot/manifest.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::FileHandle; -use libra_crypto::HashValue; -use libra_types::transaction::Version; +use diem_crypto::HashValue; +use diem_types::transaction::Version; use serde::{Deserialize, Serialize}; /// A chunk of a state snapshot manifest, representing accounts in the key range diff --git a/storage/backup/backup-cli/src/backup_types/state_snapshot/mod.rs b/storage/backup/backup-cli/src/backup_types/state_snapshot/mod.rs index cd6594e8a7..a658028fb9 100644 --- a/storage/backup/backup-cli/src/backup_types/state_snapshot/mod.rs +++ b/storage/backup/backup-cli/src/backup_types/state_snapshot/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup; diff --git a/storage/backup/backup-cli/src/backup_types/state_snapshot/restore.rs b/storage/backup/backup-cli/src/backup_types/state_snapshot/restore.rs index c96a346be2..7411c845cd 100644 --- a/storage/backup/backup-cli/src/backup_types/state_snapshot/restore.rs +++ b/storage/backup/backup-cli/src/backup_types/state_snapshot/restore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -21,9 +21,9 @@ use crate::{ }, }; use anyhow::{anyhow, ensure, Result}; -use libra_crypto::HashValue; -use libra_logger::prelude::*; -use libra_types::{ +use diem_crypto::HashValue; +use diem_logger::prelude::*; +use diem_types::{ account_state_blob::AccountStateBlob, ledger_info::LedgerInfoWithSignatures, proof::TransactionInfoWithProof, transaction::Version, }; diff --git a/storage/backup/backup-cli/src/backup_types/state_snapshot/tests.rs b/storage/backup/backup-cli/src/backup_types/state_snapshot/tests.rs index ad02a85b3c..aaa7e60784 100644 --- a/storage/backup/backup-cli/src/backup_types/state_snapshot/tests.rs +++ b/storage/backup/backup-cli/src/backup_types/state_snapshot/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,10 +13,10 @@ use crate::{ GlobalBackupOpt, GlobalRestoreOpt, RocksdbOpt, }, }; -use libra_config::config::RocksdbConfig; -use libra_temppath::TempPath; -use libra_types::transaction::PRE_GENESIS_VERSION; -use libradb::LibraDB; +use diem_config::config::RocksdbConfig; +use diem_temppath::TempPath; +use diem_types::transaction::PRE_GENESIS_VERSION; +use diemdb::DiemDB; use std::{convert::TryInto, sync::Arc}; use storage_interface::DbReader; use tokio::time::Duration; @@ -75,7 +75,7 @@ fn end_to_end() { ) .unwrap(); - let tgt_db = LibraDB::open( + let tgt_db = DiemDB::open( &tgt_db_dir, true, /* read_only */ None, /* pruner */ diff --git a/storage/backup/backup-cli/src/backup_types/tests.rs b/storage/backup/backup-cli/src/backup_types/tests.rs index 7318db42f8..b546ea9292 100644 --- a/storage/backup/backup-cli/src/backup_types/tests.rs +++ b/storage/backup/backup-cli/src/backup_types/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -18,11 +18,11 @@ use crate::{ GlobalBackupOpt, GlobalRestoreOpt, GlobalRestoreOptions, RocksdbOpt, }, }; +use diem_config::config::RocksdbConfig; +use diem_temppath::TempPath; +use diem_types::transaction::Version; +use diemdb::DiemDB; use executor_test_helpers::integration_test_impl::test_execution_with_storage_impl; -use libra_config::config::RocksdbConfig; -use libra_temppath::TempPath; -use libra_types::transaction::Version; -use libradb::LibraDB; use proptest::prelude::*; use std::{convert::TryInto, sync::Arc}; use storage_interface::DbReader; @@ -30,7 +30,7 @@ use tokio::time::Duration; #[derive(Debug)] struct TestData { - db: Arc, + db: Arc, txn_start_ver: Version, state_snapshot_ver: Option, target_ver: Version, @@ -146,7 +146,7 @@ fn test_end_to_end_impl(d: TestData) { .unwrap(); // Check - let tgt_db = LibraDB::open( + let tgt_db = DiemDB::open( &tgt_db_dir, false, /* read_only */ None, /* pruner */ diff --git a/storage/backup/backup-cli/src/backup_types/transaction/backup.rs b/storage/backup/backup-cli/src/backup_types/transaction/backup.rs index a3940de4ee..2f5d0f95c1 100644 --- a/storage/backup/backup-cli/src/backup_types/transaction/backup.rs +++ b/storage/backup/backup-cli/src/backup_types/transaction/backup.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,8 +11,8 @@ use crate::{ }, }; use anyhow::{anyhow, Result}; -use libra_logger::prelude::*; -use libra_types::transaction::Version; +use diem_logger::prelude::*; +use diem_types::transaction::Version; use once_cell::sync::Lazy; use std::{convert::TryInto, str::FromStr, sync::Arc}; use structopt::StructOpt; diff --git a/storage/backup/backup-cli/src/backup_types/transaction/manifest.rs b/storage/backup/backup-cli/src/backup_types/transaction/manifest.rs index d47c0c5694..5644124578 100644 --- a/storage/backup/backup-cli/src/backup_types/transaction/manifest.rs +++ b/storage/backup/backup-cli/src/backup_types/transaction/manifest.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::FileHandle; use anyhow::{ensure, Result}; -use libra_types::transaction::Version; +use diem_types::transaction::Version; use serde::{Deserialize, Serialize}; /// A chunk of a transaction backup manifest to represent the diff --git a/storage/backup/backup-cli/src/backup_types/transaction/mod.rs b/storage/backup/backup-cli/src/backup_types/transaction/mod.rs index cd6594e8a7..a658028fb9 100644 --- a/storage/backup/backup-cli/src/backup_types/transaction/mod.rs +++ b/storage/backup/backup-cli/src/backup_types/transaction/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup; diff --git a/storage/backup/backup-cli/src/backup_types/transaction/restore.rs b/storage/backup/backup-cli/src/backup_types/transaction/restore.rs index 11dd2e4fc4..d0f656c093 100644 --- a/storage/backup/backup-cli/src/backup_types/transaction/restore.rs +++ b/storage/backup/backup-cli/src/backup_types/transaction/restore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -17,16 +17,16 @@ use crate::{ }, }; use anyhow::{anyhow, bail, ensure, Result}; -use executor::Executor; -use executor_types::TransactionReplayer; -use futures::StreamExt; -use libra_logger::prelude::*; -use libra_types::{ +use diem_logger::prelude::*; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, proof::{TransactionAccumulatorRangeProof, TransactionListProof}, transaction::{Transaction, TransactionInfo, TransactionListWithProof, Version}, }; -use libra_vm::LibraVM; +use diem_vm::DiemVM; +use executor::Executor; +use executor_types::TransactionReplayer; +use futures::StreamExt; use std::{ cmp::{max, min}, sync::Arc, @@ -259,11 +259,11 @@ impl TransactionRestoreController { Ok(()) } - fn transaction_replayer(&mut self, first_version: Version) -> Result<&mut Executor> { + fn transaction_replayer(&mut self, first_version: Version) -> Result<&mut Executor> { if self.state.transaction_replayer.is_none() { if let RestoreRunMode::Restore { restore_handler } = self.run_mode.as_ref() { let replayer = Executor::new_on_unbootstrapped_db( - DbReaderWriter::from_arc(Arc::clone(&restore_handler.libradb)), + DbReaderWriter::from_arc(Arc::clone(&restore_handler.diemdb)), restore_handler.get_tree_state(first_version)?, ); self.state.transaction_replayer = Some(replayer); @@ -288,7 +288,7 @@ impl TransactionRestoreController { #[derive(Default)] struct State { frozen_subtree_confirmed: bool, - transaction_replayer: Option>, + transaction_replayer: Option>, } struct TransactionRestorePreheatData { diff --git a/storage/backup/backup-cli/src/backup_types/transaction/tests.rs b/storage/backup/backup-cli/src/backup_types/transaction/tests.rs index f0b65ffb3f..75ddb4fb44 100644 --- a/storage/backup/backup-cli/src/backup_types/transaction/tests.rs +++ b/storage/backup/backup-cli/src/backup_types/transaction/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,10 +13,10 @@ use crate::{ GlobalBackupOpt, GlobalRestoreOpt, RocksdbOpt, }, }; -use libra_config::config::RocksdbConfig; -use libra_temppath::TempPath; -use libra_types::transaction::Version; -use libradb::LibraDB; +use diem_config::config::RocksdbConfig; +use diem_temppath::TempPath; +use diem_types::transaction::Version; +use diemdb::DiemDB; use std::{convert::TryInto, mem::size_of, sync::Arc}; use storage_interface::DbReader; use tokio::time::Duration; @@ -96,7 +96,7 @@ fn end_to_end() { // We don't write down any ledger infos when recovering transactions. State-sync needs to take // care of it before running consensus. The latest transactions are deemed "synced" instead of // "committed" most likely. - let tgt_db = LibraDB::open( + let tgt_db = DiemDB::open( &tgt_db_dir, true, /* read_only */ None, /* pruner */ diff --git a/storage/backup/backup-cli/src/bin/db-backup-verify.rs b/storage/backup/backup-cli/src/bin/db-backup-verify.rs index fae6ff0f61..a03008cd9f 100644 --- a/storage/backup/backup-cli/src/bin/db-backup-verify.rs +++ b/storage/backup/backup-cli/src/bin/db-backup-verify.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use backup_cli::{ coordinators::verify::VerifyCoordinator, metadata::cache::MetadataCacheOpt, storage::StorageOpt, }; -use libra_logger::{prelude::*, Level, Logger}; -use libra_secure_push_metrics::MetricsPusher; +use diem_logger::{prelude::*, Level, Logger}; +use diem_secure_push_metrics::MetricsPusher; use structopt::StructOpt; #[derive(StructOpt)] diff --git a/storage/backup/backup-cli/src/bin/db-backup.rs b/storage/backup/backup-cli/src/bin/db-backup.rs index 1b686f227f..a3bd319698 100644 --- a/storage/backup/backup-cli/src/bin/db-backup.rs +++ b/storage/backup/backup-cli/src/bin/db-backup.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; @@ -16,12 +16,12 @@ use backup_cli::{ GlobalBackupOpt, }, }; -use libra_logger::{prelude::*, Level, Logger}; +use diem_logger::{prelude::*, Level, Logger}; use std::sync::Arc; use structopt::StructOpt; #[derive(StructOpt)] -#[structopt(about = "Libra backup tool.")] +#[structopt(about = "Diem backup tool.")] enum Command { #[structopt(about = "Manually run one shot commands.")] OneShot(OneShotCommand), @@ -31,7 +31,7 @@ enum Command { #[derive(StructOpt)] enum OneShotCommand { - #[structopt(about = "Query the backup service builtin in the local Libra node.")] + #[structopt(about = "Query the backup service builtin in the local Diem node.")] Query(OneShotQueryType), #[structopt(about = "Do a one shot backup.")] Backup(OneShotBackupOpt), @@ -40,7 +40,7 @@ enum OneShotCommand { #[derive(StructOpt)] enum OneShotQueryType { #[structopt( - about = "Queries the latest epoch, committed version and synced version of the local Libra \ + about = "Queries the latest epoch, committed version and synced version of the local Diem \ node, via the backup service within it." )] NodeState(OneShotQueryNodeStateOpt), diff --git a/storage/backup/backup-cli/src/bin/db-restore.rs b/storage/backup/backup-cli/src/bin/db-restore.rs index 15418bcf76..05287f3641 100644 --- a/storage/backup/backup-cli/src/bin/db-restore.rs +++ b/storage/backup/backup-cli/src/bin/db-restore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; @@ -12,8 +12,8 @@ use backup_cli::{ storage::StorageOpt, utils::{GlobalRestoreOpt, GlobalRestoreOptions}, }; -use libra_logger::{prelude::*, Level, Logger}; -use libra_secure_push_metrics::MetricsPusher; +use diem_logger::{prelude::*, Level, Logger}; +use diem_secure_push_metrics::MetricsPusher; use std::convert::TryInto; use structopt::StructOpt; diff --git a/storage/backup/backup-cli/src/coordinators/backup.rs b/storage/backup/backup-cli/src/coordinators/backup.rs index a58ed3f6b8..423847cf7c 100644 --- a/storage/backup/backup-cli/src/coordinators/backup.rs +++ b/storage/backup/backup-cli/src/coordinators/backup.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -13,10 +13,10 @@ use crate::{ utils::{backup_service_client::BackupServiceClient, GlobalBackupOpt}, }; use anyhow::{anyhow, ensure, Result}; +use diem_logger::prelude::*; +use diem_types::transaction::Version; +use diemdb::backup::backup_handler::DbState; use futures::{stream, Future, StreamExt}; -use libra_logger::prelude::*; -use libra_types::transaction::Version; -use libradb::backup::backup_handler::DbState; use std::{fmt::Debug, sync::Arc}; use structopt::StructOpt; use tokio::{ @@ -85,7 +85,7 @@ impl BackupCoordinator { } } pub async fn run(&self) -> Result<()> { - // Connect to both the local Libra node and the backup storage. + // Connect to both the local Diem node and the backup storage. let backup_state = metadata::cache::sync_and_load(&self.metadata_cache_opt, Arc::clone(&self.storage)) .await? @@ -159,7 +159,7 @@ impl BackupCoordinator { } } Err(e) => warn!( - "Failed pulling DbState from local Libra node: {}. Will keep trying.", + "Failed pulling DbState from local Diem node: {}. Will keep trying.", e ), }; @@ -339,7 +339,7 @@ fn get_next_snapshot(last_in_backup: Option, db_state: DbState, interval: u #[cfg(test)] mod tests { use crate::coordinators::backup::{get_batch_range, get_next_snapshot}; - use libradb::backup::backup_handler::DbState; + use diemdb::backup::backup_handler::DbState; #[test] fn test_get_batch_range() { diff --git a/storage/backup/backup-cli/src/coordinators/mod.rs b/storage/backup/backup-cli/src/coordinators/mod.rs index 8f6e430b8d..f00c8101b7 100644 --- a/storage/backup/backup-cli/src/coordinators/mod.rs +++ b/storage/backup/backup-cli/src/coordinators/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup; diff --git a/storage/backup/backup-cli/src/coordinators/restore.rs b/storage/backup/backup-cli/src/coordinators/restore.rs index a2a2e8957f..aa60a74feb 100644 --- a/storage/backup/backup-cli/src/coordinators/restore.rs +++ b/storage/backup/backup-cli/src/coordinators/restore.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,8 +16,8 @@ use crate::{ utils::{unix_timestamp_sec, GlobalRestoreOptions, RestoreRunMode}, }; use anyhow::{bail, Result}; -use libra_logger::prelude::*; -use libra_types::transaction::Version; +use diem_logger::prelude::*; +use diem_types::transaction::Version; use std::sync::Arc; use structopt::StructOpt; diff --git a/storage/backup/backup-cli/src/coordinators/verify.rs b/storage/backup/backup-cli/src/coordinators/verify.rs index 631c9b8896..af38312fdb 100644 --- a/storage/backup/backup-cli/src/coordinators/verify.rs +++ b/storage/backup/backup-cli/src/coordinators/verify.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,8 +16,8 @@ use crate::{ utils::{unix_timestamp_sec, GlobalRestoreOptions, RestoreRunMode}, }; use anyhow::Result; -use libra_logger::prelude::*; -use libra_types::transaction::Version; +use diem_logger::prelude::*; +use diem_types::transaction::Version; use std::sync::Arc; pub struct VerifyCoordinator { diff --git a/storage/backup/backup-cli/src/lib.rs b/storage/backup/backup-cli/src/lib.rs index 5b2d85f7aa..144425e735 100644 --- a/storage/backup/backup-cli/src/lib.rs +++ b/storage/backup/backup-cli/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::integer_arithmetic)] diff --git a/storage/backup/backup-cli/src/metadata/cache.rs b/storage/backup/backup-cli/src/metadata/cache.rs index eef1f01087..b94d68311b 100644 --- a/storage/backup/backup-cli/src/metadata/cache.rs +++ b/storage/backup/backup-cli/src/metadata/cache.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,7 +9,7 @@ use crate::{ }; use anyhow::{anyhow, Result}; use async_trait::async_trait; -use libra_logger::prelude::*; +use diem_logger::prelude::*; use std::{ collections::{HashMap, HashSet}, path::PathBuf, @@ -44,7 +44,7 @@ impl MetadataCacheOpt { let home_path: PathBuf = std::env::var_os("HOME") .expect("Can't find home dir. Specify metadata cache path explicitly.") .into(); - home_path.join("libra_backup_metadata") + home_path.join("diem_backup_metadata") }) .join(Self::SUB_DIR) } diff --git a/storage/backup/backup-cli/src/metadata/mod.rs b/storage/backup/backup-cli/src/metadata/mod.rs index df8192576c..8999456757 100644 --- a/storage/backup/backup-cli/src/metadata/mod.rs +++ b/storage/backup/backup-cli/src/metadata/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod cache; @@ -6,7 +6,7 @@ pub mod view; use crate::storage::{FileHandle, ShellSafeName, TextLine}; use anyhow::Result; -use libra_types::transaction::Version; +use diem_types::transaction::Version; use serde::{Deserialize, Serialize}; use std::convert::TryInto; diff --git a/storage/backup/backup-cli/src/metadata/view.rs b/storage/backup/backup-cli/src/metadata/view.rs index dd9a763d1f..1e5e5f419e 100644 --- a/storage/backup/backup-cli/src/metadata/view.rs +++ b/storage/backup/backup-cli/src/metadata/view.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::metadata::{ EpochEndingBackupMeta, Metadata, StateSnapshotBackupMeta, TransactionBackupMeta, }; use anyhow::{anyhow, ensure, Result}; +use diem_types::transaction::Version; use itertools::Itertools; -use libra_types::transaction::Version; use serde::export::Formatter; use std::{fmt::Display, str::FromStr}; diff --git a/storage/backup/backup-cli/src/metrics/metadata.rs b/storage/backup/backup-cli/src/metrics/metadata.rs index 754a02df8e..aa67861c89 100644 --- a/storage/backup/backup-cli/src/metrics/metadata.rs +++ b/storage/backup/backup-cli/src/metrics/metadata.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_secure_push_metrics::{register_int_gauge, IntGauge}; +use diem_secure_push_metrics::{register_int_gauge, IntGauge}; use once_cell::sync::Lazy; pub static NUM_META_FILES: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_metadata_num_files", + "diem_backup_metadata_num_files", "Number of metadata files in total." ) .unwrap() @@ -14,7 +14,7 @@ pub static NUM_META_FILES: Lazy = Lazy::new(|| { pub static NUM_META_MISS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_metadata_num_file_cache_misses", + "diem_backup_metadata_num_file_cache_misses", "Number of metadata files to download due to non-existence in local cache." ) .unwrap() @@ -22,7 +22,7 @@ pub static NUM_META_MISS: Lazy = Lazy::new(|| { pub static NUM_META_DOWNLOAD: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_metadata_num_file_downloads", + "diem_backup_metadata_num_file_downloads", "Number of metadata files to download due to non-existence in local cache." ) .unwrap() diff --git a/storage/backup/backup-cli/src/metrics/mod.rs b/storage/backup/backup-cli/src/metrics/mod.rs index e159ad42cd..23f24da6b2 100644 --- a/storage/backup/backup-cli/src/metrics/mod.rs +++ b/storage/backup/backup-cli/src/metrics/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod metadata; diff --git a/storage/backup/backup-cli/src/metrics/restore.rs b/storage/backup/backup-cli/src/metrics/restore.rs index 8f898823d6..c61d3bf2e5 100644 --- a/storage/backup/backup-cli/src/metrics/restore.rs +++ b/storage/backup/backup-cli/src/metrics/restore.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_secure_push_metrics::{register_int_gauge, IntGauge}; +use diem_secure_push_metrics::{register_int_gauge, IntGauge}; use once_cell::sync::Lazy; pub static COORDINATOR_TARGET_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_coordinator_target_version", + "diem_db_restore_coordinator_target_version", "The target version to restore to by the restore coordinator." ) .unwrap() @@ -14,7 +14,7 @@ pub static COORDINATOR_TARGET_VERSION: Lazy = Lazy::new(|| { pub static EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_epoch_ending_epoch", + "diem_db_restore_epoch_ending_epoch", "Current epoch ending epoch being restored." ) .unwrap() @@ -22,7 +22,7 @@ pub static EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { pub static EPOCH_ENDING_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_epoch_ending_version", + "diem_db_restore_epoch_ending_version", "Last version of the current epoch ending being restored." ) .unwrap() @@ -30,7 +30,7 @@ pub static EPOCH_ENDING_VERSION: Lazy = Lazy::new(|| { pub static STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_state_snapshot_version", + "diem_db_restore_state_snapshot_version", "The version that a state snapshot restores to." ) .unwrap() @@ -38,7 +38,7 @@ pub static STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { pub static STATE_SNAPSHOT_TARGET_LEAF_INDEX: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_state_snapshot_target_leaf_index", + "diem_db_restore_state_snapshot_target_leaf_index", "The biggest leaf index in state snapshot being restored (# of accounts - 1)." ) .unwrap() @@ -46,7 +46,7 @@ pub static STATE_SNAPSHOT_TARGET_LEAF_INDEX: Lazy = Lazy::new(|| { pub static STATE_SNAPSHOT_LEAF_INDEX: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_state_snapshot_leaf_index", + "diem_db_restore_state_snapshot_leaf_index", "Current leaf index being restored." ) .unwrap() @@ -54,7 +54,7 @@ pub static STATE_SNAPSHOT_LEAF_INDEX: Lazy = Lazy::new(|| { pub static TRANSACTION_SAVE_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_transaction_save_version", + "diem_db_restore_transaction_save_version", "Version of the transaction being restored without replaying." ) .unwrap() @@ -62,7 +62,7 @@ pub static TRANSACTION_SAVE_VERSION: Lazy = Lazy::new(|| { pub static TRANSACTION_REPLAY_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_transaction_replay_version", + "diem_db_restore_transaction_replay_version", "Version of the transaction being replayed" ) .unwrap() @@ -70,7 +70,7 @@ pub static TRANSACTION_REPLAY_VERSION: Lazy = Lazy::new(|| { pub static COORDINATOR_START_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_coordinator_start_timestamp_s", + "diem_db_restore_coordinator_start_timestamp_s", "Timestamp when the verify coordinator starts." ) .unwrap() @@ -78,7 +78,7 @@ pub static COORDINATOR_START_TS: Lazy = Lazy::new(|| { pub static COORDINATOR_SUCC_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_coordinator_succeed_timestamp_s", + "diem_db_restore_coordinator_succeed_timestamp_s", "Timestamp when the verify coordinator fails." ) .unwrap() @@ -86,7 +86,7 @@ pub static COORDINATOR_SUCC_TS: Lazy = Lazy::new(|| { pub static COORDINATOR_FAIL_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_restore_coordinator_fail_timestamp_s", + "diem_db_restore_coordinator_fail_timestamp_s", "Timestamp when the verify coordinator fails." ) .unwrap() diff --git a/storage/backup/backup-cli/src/metrics/verify.rs b/storage/backup/backup-cli/src/metrics/verify.rs index 69ed57013e..cf57a9de5d 100644 --- a/storage/backup/backup-cli/src/metrics/verify.rs +++ b/storage/backup/backup-cli/src/metrics/verify.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_secure_push_metrics::{register_int_gauge, IntGauge}; +use diem_secure_push_metrics::{register_int_gauge, IntGauge}; use once_cell::sync::Lazy; pub static VERIFY_EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_epoch_ending_epoch", + "diem_db_backup_verify_epoch_ending_epoch", "Current epoch ending epoch being verified." ) .unwrap() @@ -14,7 +14,7 @@ pub static VERIFY_EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { pub static VERIFY_EPOCH_ENDING_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_epoch_ending_version", + "diem_db_backup_verify_epoch_ending_version", "Last version of the current epoch ending being verified." ) .unwrap() @@ -22,7 +22,7 @@ pub static VERIFY_EPOCH_ENDING_VERSION: Lazy = Lazy::new(|| { pub static VERIFY_STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_state_snapshot_version", + "diem_db_backup_verify_state_snapshot_version", "The version of the verified state snapshot." ) .unwrap() @@ -30,7 +30,7 @@ pub static VERIFY_STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { pub static VERIFY_STATE_SNAPSHOT_TARGET_LEAF_INDEX: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_state_snapshot_target_leaf_index", + "diem_db_backup_verify_state_snapshot_target_leaf_index", "The biggest leaf index in state snapshot being verified (# of accounts - 1)." ) .unwrap() @@ -38,7 +38,7 @@ pub static VERIFY_STATE_SNAPSHOT_TARGET_LEAF_INDEX: Lazy = Lazy::new(| pub static VERIFY_STATE_SNAPSHOT_LEAF_INDEX: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_state_snapshot_leaf_index", + "diem_db_backup_verify_state_snapshot_leaf_index", "Current leaf index being verified." ) .unwrap() @@ -46,7 +46,7 @@ pub static VERIFY_STATE_SNAPSHOT_LEAF_INDEX: Lazy = Lazy::new(|| { pub static VERIFY_TRANSACTION_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_transaction_version", + "diem_db_backup_verify_transaction_version", "Version of the transaction being verified." ) .unwrap() @@ -54,7 +54,7 @@ pub static VERIFY_TRANSACTION_VERSION: Lazy = Lazy::new(|| { pub static VERIFY_COORDINATOR_START_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_coordinator_start_timestamp_s", + "diem_db_backup_verify_coordinator_start_timestamp_s", "Timestamp when the verify coordinator starts." ) .unwrap() @@ -62,7 +62,7 @@ pub static VERIFY_COORDINATOR_START_TS: Lazy = Lazy::new(|| { pub static VERIFY_COORDINATOR_SUCC_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_coordinator_succeed_timestamp_s", + "diem_db_backup_verify_coordinator_succeed_timestamp_s", "Timestamp when the verify coordinator fails." ) .unwrap() @@ -70,7 +70,7 @@ pub static VERIFY_COORDINATOR_SUCC_TS: Lazy = Lazy::new(|| { pub static VERIFY_COORDINATOR_FAIL_TS: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_db_backup_verify_coordinator_fail_timestamp_s", + "diem_db_backup_verify_coordinator_fail_timestamp_s", "Timestamp when the verify coordinator fails." ) .unwrap() diff --git a/storage/backup/backup-cli/src/storage/command_adapter/azure.sample.toml b/storage/backup/backup-cli/src/storage/command_adapter/azure.sample.toml index c95fd3d170..65f8173274 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/azure.sample.toml +++ b/storage/backup/backup-cli/src/storage/command_adapter/azure.sample.toml @@ -1,6 +1,6 @@ [[env_vars]] key = "ACCOUNT" -value = "libra-backup" +value = "diem-backup" [[env_vars]] key = "FOLDER" diff --git a/storage/backup/backup-cli/src/storage/command_adapter/command.rs b/storage/backup/backup-cli/src/storage/command_adapter/command.rs index e6d218f5c4..0943b27cbc 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/command.rs +++ b/storage/backup/backup-cli/src/storage/command_adapter/command.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::command_adapter::config::EnvVar; use anyhow::{bail, ensure, Result}; +use diem_logger::prelude::*; use futures::{ future::BoxFuture, task::{Context, Poll}, Future, FutureExt, }; -use libra_logger::prelude::*; use std::{ fmt::{Debug, Formatter}, process::Stdio, diff --git a/storage/backup/backup-cli/src/storage/command_adapter/config.rs b/storage/backup/backup-cli/src/storage/command_adapter/config.rs index a020dcb327..e64d949210 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/config.rs +++ b/storage/backup/backup-cli/src/storage/command_adapter/config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::{BackupHandle, FileHandle}; diff --git a/storage/backup/backup-cli/src/storage/command_adapter/gcp.sample.toml b/storage/backup/backup-cli/src/storage/command_adapter/gcp.sample.toml index 4754e0aab6..cf620ae575 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/gcp.sample.toml +++ b/storage/backup/backup-cli/src/storage/command_adapter/gcp.sample.toml @@ -1,6 +1,6 @@ [[env_vars]] key = "BASE_PATH" -value = "libra-backup/backup1" +value = "diem-backup/backup1" [commands] create_backup = ''' diff --git a/storage/backup/backup-cli/src/storage/command_adapter/mod.rs b/storage/backup/backup-cli/src/storage/command_adapter/mod.rs index a90a228b00..7c3776aefa 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/mod.rs +++ b/storage/backup/backup-cli/src/storage/command_adapter/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod command; diff --git a/storage/backup/backup-cli/src/storage/command_adapter/s3.sample.toml b/storage/backup/backup-cli/src/storage/command_adapter/s3.sample.toml index 32f020fe4a..ccc223f69e 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/s3.sample.toml +++ b/storage/backup/backup-cli/src/storage/command_adapter/s3.sample.toml @@ -1,6 +1,6 @@ [[env_vars]] key = "BASE_PATH" -value = "libra-backup" +value = "diem-backup" [commands] create_backup = ''' diff --git a/storage/backup/backup-cli/src/storage/command_adapter/tests.rs b/storage/backup/backup-cli/src/storage/command_adapter/tests.rs index ea49133ac8..7200ff6e7d 100644 --- a/storage/backup/backup-cli/src/storage/command_adapter/tests.rs +++ b/storage/backup/backup-cli/src/storage/command_adapter/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -9,8 +9,8 @@ use crate::storage::{ test_write_and_read_impl, }, }; +use diem_temppath::TempPath; use futures::Future; -use libra_temppath::TempPath; use proptest::prelude::*; use std::str::FromStr; use tokio::runtime::Runtime; diff --git a/storage/backup/backup-cli/src/storage/local_fs/mod.rs b/storage/backup/backup-cli/src/storage/local_fs/mod.rs index eceaeb6feb..bfc5df3993 100644 --- a/storage/backup/backup-cli/src/storage/local_fs/mod.rs +++ b/storage/backup/backup-cli/src/storage/local_fs/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] diff --git a/storage/backup/backup-cli/src/storage/local_fs/tests.rs b/storage/backup/backup-cli/src/storage/local_fs/tests.rs index 8be3397afb..2a4ee78788 100644 --- a/storage/backup/backup-cli/src/storage/local_fs/tests.rs +++ b/storage/backup/backup-cli/src/storage/local_fs/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -6,7 +6,7 @@ use crate::storage::test_util::{ arb_backups, arb_metadata_files, test_save_and_list_metadata_files_impl, test_write_and_read_impl, }; -use libra_temppath::TempPath; +use diem_temppath::TempPath; use proptest::prelude::*; use tokio::runtime::Runtime; diff --git a/storage/backup/backup-cli/src/storage/mod.rs b/storage/backup/backup-cli/src/storage/mod.rs index bbf0455cc7..cf14158a93 100644 --- a/storage/backup/backup-cli/src/storage/mod.rs +++ b/storage/backup/backup-cli/src/storage/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod command_adapter; diff --git a/storage/backup/backup-cli/src/storage/test_util.rs b/storage/backup/backup-cli/src/storage/test_util.rs index cb7a204c1d..03976436d5 100644 --- a/storage/backup/backup-cli/src/storage/test_util.rs +++ b/storage/backup/backup-cli/src/storage/test_util.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/storage/backup/backup-cli/src/storage/tests.rs b/storage/backup/backup-cli/src/storage/tests.rs index db9dd95329..40c25f1d68 100644 --- a/storage/backup/backup-cli/src/storage/tests.rs +++ b/storage/backup/backup-cli/src/storage/tests.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::ShellSafeName; diff --git a/storage/backup/backup-cli/src/utils/backup_service_client.rs b/storage/backup/backup-cli/src/utils/backup_service_client.rs index dab6dd0d49..e3191e20fd 100644 --- a/storage/backup/backup-cli/src/utils/backup_service_client.rs +++ b/storage/backup/backup-cli/src/utils/backup_service_client.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; +use diem_crypto::HashValue; +use diem_types::transaction::Version; +use diemdb::backup::backup_handler::DbState; use futures::TryStreamExt; -use libra_crypto::HashValue; -use libra_types::transaction::Version; -use libradb::backup::backup_handler::DbState; use structopt::StructOpt; use tokio::prelude::*; use tokio_util::compat::FuturesAsyncReadCompatExt; diff --git a/storage/backup/backup-cli/src/utils/mod.rs b/storage/backup/backup-cli/src/utils/mod.rs index f715011760..12be40b3b3 100644 --- a/storage/backup/backup-cli/src/utils/mod.rs +++ b/storage/backup/backup-cli/src/utils/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup_service_client; @@ -10,12 +10,12 @@ pub(crate) mod stream; pub mod test_utils; use anyhow::{anyhow, Result}; -use libra_config::config::RocksdbConfig; -use libra_crypto::HashValue; -use libra_infallible::duration_since_epoch; -use libra_jellyfish_merkle::{restore::JellyfishMerkleRestore, NodeBatch, TreeWriter}; -use libra_types::transaction::Version; -use libradb::{backup::restore_handler::RestoreHandler, GetRestoreHandler, LibraDB}; +use diem_config::config::RocksdbConfig; +use diem_crypto::HashValue; +use diem_infallible::duration_since_epoch; +use diem_jellyfish_merkle::{restore::JellyfishMerkleRestore, NodeBatch, TreeWriter}; +use diem_types::transaction::Version; +use diemdb::{backup::restore_handler::RestoreHandler, DiemDB, GetRestoreHandler}; use std::{ convert::TryFrom, mem::size_of, @@ -144,7 +144,7 @@ impl TryFrom for GlobalRestoreOptions { fn try_from(opt: GlobalRestoreOpt) -> Result { let target_version = opt.target_version.unwrap_or(Version::max_value()); let run_mode = if let Some(db_dir) = &opt.db_dir { - let restore_handler = Arc::new(LibraDB::open( + let restore_handler = Arc::new(DiemDB::open( db_dir, false, /* read_only */ None, /* pruner */ diff --git a/storage/backup/backup-cli/src/utils/read_record_bytes.rs b/storage/backup/backup-cli/src/utils/read_record_bytes.rs index c9723f5454..f0009edd4d 100644 --- a/storage/backup/backup-cli/src/utils/read_record_bytes.rs +++ b/storage/backup/backup-cli/src/utils/read_record_bytes.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; diff --git a/storage/backup/backup-cli/src/utils/storage_ext.rs b/storage/backup/backup-cli/src/utils/storage_ext.rs index 53b57463be..3890ff619a 100644 --- a/storage/backup/backup-cli/src/utils/storage_ext.rs +++ b/storage/backup/backup-cli/src/utils/storage_ext.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::storage::{BackupHandle, BackupStorage, FileHandleRef}; diff --git a/storage/backup/backup-cli/src/utils/stream/buffered_x.rs b/storage/backup/backup-cli/src/utils/stream/buffered_x.rs index 0cedbe7a0f..908901b8cf 100644 --- a/storage/backup/backup-cli/src/utils/stream/buffered_x.rs +++ b/storage/backup/backup-cli/src/utils/stream/buffered_x.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// This is a copy of `futures::stream::buffered` from `futures 0.3.6`, except that it uses diff --git a/storage/backup/backup-cli/src/utils/stream/futures_ordered_x.rs b/storage/backup/backup-cli/src/utils/stream/futures_ordered_x.rs index c7e8a7fbf0..6ebab73740 100644 --- a/storage/backup/backup-cli/src/utils/stream/futures_ordered_x.rs +++ b/storage/backup/backup-cli/src/utils/stream/futures_ordered_x.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// This is a copy of `futures::stream::futures_ordered` from `futures 0.3.6`, except that it uses diff --git a/storage/backup/backup-cli/src/utils/stream/futures_unordered_x.rs b/storage/backup/backup-cli/src/utils/stream/futures_unordered_x.rs index 3410ff8969..a110f23870 100644 --- a/storage/backup/backup-cli/src/utils/stream/futures_unordered_x.rs +++ b/storage/backup/backup-cli/src/utils/stream/futures_unordered_x.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 /// This wraps around `futures::stream::futures_unorderd::FuturesUnordered` to provide similar diff --git a/storage/backup/backup-cli/src/utils/stream/mod.rs b/storage/backup/backup-cli/src/utils/stream/mod.rs index 65b5555fc4..c46ced4d9c 100644 --- a/storage/backup/backup-cli/src/utils/stream/mod.rs +++ b/storage/backup/backup-cli/src/utils/stream/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod buffered_x; diff --git a/storage/backup/backup-cli/src/utils/test_utils.rs b/storage/backup/backup-cli/src/utils/test_utils.rs index 4026a7eae9..5ec9a95333 100644 --- a/storage/backup/backup-cli/src/utils/test_utils.rs +++ b/storage/backup/backup-cli/src/utils/test_utils.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use backup_service::start_backup_service; -use libra_config::utils::get_available_port; -use libra_proptest_helpers::ValueGenerator; -use libra_temppath::TempPath; -use libra_types::{ledger_info::LedgerInfoWithSignatures, transaction::TransactionToCommit}; -use libradb::{test_helper::arb_blocks_to_commit, LibraDB}; +use diem_config::utils::get_available_port; +use diem_proptest_helpers::ValueGenerator; +use diem_temppath::TempPath; +use diem_types::{ledger_info::LedgerInfoWithSignatures, transaction::TransactionToCommit}; +use diemdb::{test_helper::arb_blocks_to_commit, DiemDB}; use std::{ net::{IpAddr, Ipv4Addr, SocketAddr}, sync::Arc, @@ -14,16 +14,16 @@ use std::{ use storage_interface::DbWriter; use tokio::runtime::Runtime; -pub fn tmp_db_empty() -> (TempPath, Arc) { +pub fn tmp_db_empty() -> (TempPath, Arc) { let tmpdir = TempPath::new(); - let db = Arc::new(LibraDB::new_for_test(&tmpdir)); + let db = Arc::new(DiemDB::new_for_test(&tmpdir)); (tmpdir, db) } pub fn tmp_db_with_random_content() -> ( TempPath, - Arc, + Arc, Vec<(Vec, LedgerInfoWithSignatures)>, ) { let (tmpdir, db) = tmp_db_empty(); @@ -42,7 +42,7 @@ pub fn tmp_db_with_random_content() -> ( (tmpdir, db, blocks) } -pub fn start_local_backup_service(db: Arc) -> (Runtime, u16) { +pub fn start_local_backup_service(db: Arc) -> (Runtime, u16) { let port = get_available_port(); let rt = start_backup_service(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), port), db); (rt, port) diff --git a/storage/backup/backup-service/Cargo.toml b/storage/backup/backup-service/Cargo.toml index 2425bb3660..a5285fe4bb 100644 --- a/storage/backup/backup-service/Cargo.toml +++ b/storage/backup/backup-service/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "backup-service" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,20 +19,20 @@ tokio = { version = "0.2.22", features = ["full"] } warp = "0.2.5" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../../common/metrics", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } -libradb = { path = "../../libradb", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../../common/metrics", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../../diemdb", version = "0.1.0" } storage-interface = { path = "../../storage-interface", version = "0.1.0" } [dev-dependencies] -libradb = { path = "../../libradb", version = "0.1.0", features = ["fuzzing"] } -libra-config = { path = "../../../config", version = "0.1.0" } -libra-temppath = { path = "../../../common/temppath", version = "0.1.0" } +diemdb = { path = "../../diemdb", version = "0.1.0", features = ["fuzzing"] } +diem-config = { path = "../../../config", version = "0.1.0" } +diem-temppath = { path = "../../../common/temppath", version = "0.1.0" } reqwest = { version = "0.10.9", features = ["blocking", "json"], default_features = false } [features] -fuzzing = ["libradb/fuzzing"] +fuzzing = ["diemdb/fuzzing"] diff --git a/storage/backup/backup-service/src/handlers/mod.rs b/storage/backup/backup-service/src/handlers/mod.rs index 1e8e13a78e..79de3a5f96 100644 --- a/storage/backup/backup-service/src/handlers/mod.rs +++ b/storage/backup/backup-service/src/handlers/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod utils; @@ -7,9 +7,9 @@ use crate::handlers::utils::{ handle_rejection, reply_with_async_channel_writer, reply_with_lcs_bytes, send_size_prefixed_lcs_bytes, unwrap_or_500, LATENCY_HISTOGRAM, }; -use libra_crypto::hash::HashValue; -use libra_types::transaction::Version; -use libradb::backup::backup_handler::BackupHandler; +use diem_crypto::hash::HashValue; +use diem_types::transaction::Version; +use diemdb::backup::backup_handler::BackupHandler; use warp::{filters::BoxedFilter, reply::Reply, Filter}; static DB_STATE: &str = "db_state"; diff --git a/storage/backup/backup-service/src/handlers/utils.rs b/storage/backup/backup-service/src/handlers/utils.rs index 8c6074c773..1e622e642d 100644 --- a/storage/backup/backup-service/src/handlers/utils.rs +++ b/storage/backup/backup-service/src/handlers/utils.rs @@ -1,14 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; use bytes::Bytes; +use diem_logger::prelude::*; +use diem_metrics::{register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec}; +use diemdb::backup::backup_handler::BackupHandler; use hyper::Body; -use libra_logger::prelude::*; -use libra_metrics::{ - register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec, -}; -use libradb::backup::backup_handler::BackupHandler; use once_cell::sync::Lazy; use serde::Serialize; use std::{convert::Infallible, future::Future}; @@ -16,7 +14,7 @@ use warp::{reply::Response, Rejection, Reply}; pub(super) static LATENCY_HISTOGRAM: Lazy = Lazy::new(|| { register_histogram_vec!( - "libra_backup_service_latency_s", + "diem_backup_service_latency_s", "Backup service endpoint latency.", &["endpoint", "status"] ) @@ -25,7 +23,7 @@ pub(super) static LATENCY_HISTOGRAM: Lazy = Lazy::new(|| { pub(super) static THROUGHPUT_COUNTER: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_backup_service_sent_bytes", + "diem_backup_service_sent_bytes", "Backup service throughput in bytes.", &["endpoint"] ) diff --git a/storage/backup/backup-service/src/lib.rs b/storage/backup/backup-service/src/lib.rs index 5bc1624b62..3896835e43 100644 --- a/storage/backup/backup-service/src/lib.rs +++ b/storage/backup/backup-service/src/lib.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod handlers; use crate::handlers::get_routes; -use libradb::LibraDB; +use diemdb::DiemDB; use std::{net::SocketAddr, sync::Arc}; use tokio::runtime::{Builder, Runtime}; -pub fn start_backup_service(address: SocketAddr, db: Arc) -> Runtime { +pub fn start_backup_service(address: SocketAddr, db: Arc) -> Runtime { let backup_handler = db.get_backup_handler(); let routes = get_routes(backup_handler); @@ -34,9 +34,9 @@ pub fn start_backup_service(address: SocketAddr, db: Arc) -> Runtime { #[cfg(test)] mod tests { use super::*; - use libra_config::utils::get_available_port; - use libra_crypto::hash::HashValue; - use libra_temppath::TempPath; + use diem_config::utils::get_available_port; + use diem_crypto::hash::HashValue; + use diem_temppath::TempPath; use reqwest::blocking::get; use std::net::{IpAddr, Ipv4Addr}; @@ -48,7 +48,7 @@ mod tests { #[test] fn routing_and_error_codes() { let tmpdir = TempPath::new(); - let db = Arc::new(LibraDB::new_for_test(&tmpdir)); + let db = Arc::new(DiemDB::new_for_test(&tmpdir)); let port = get_available_port(); let _rt = start_backup_service(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), port), db); diff --git a/storage/diemdb/Cargo.toml b/storage/diemdb/Cargo.toml new file mode 100644 index 0000000000..598e55e62e --- /dev/null +++ b/storage/diemdb/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = "diemdb" +version = "0.1.0" +authors = ["Diem Association "] +description = "Diem diemdb" +repository = "https://github.com/libra/libra" +homepage = "https://diem.com" +license = "Apache-2.0" +publish = false +edition = "2018" + +[dependencies] +anyhow = "1.0.34" +arc-swap = "1.0.0" +byteorder = "1.3.4" +itertools = "0.9.0" +once_cell = "1.4.1" +num-derive = "0.3.3" +num-traits = "0.2.14" +proptest = { version = "0.10.1", optional = true } +proptest-derive = { version = "0.2.0", optional = true } +serde = "1.0.117" +thiserror = "1.0.22" + +accumulator = { path = "../accumulator", version = "0.1.0" } +lcs = { version = "0.1.0", package = "libra-canonical-serialization" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-jellyfish-merkle = { path = "../jellyfish-merkle", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } +diem-temppath = { path = "../../common/temppath", version = "0.1.0", optional = true } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +num-variants = { path = "../../common/num-variants", version = "0.1.0" } +schemadb = { path = "../schemadb", version = "0.1.0" } +storage-interface = { path = "../storage-interface", version = "0.1.0" } + +[dev-dependencies] +proptest = "0.10.1" +proptest-derive = "0.2.0" +rand = "0.7.3" + +diem-jellyfish-merkle = { path = "../jellyfish-merkle", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } + +[features] +default = [] +librarian = [] +fuzzing = ["proptest", "proptest-derive", "diem-proptest-helpers", "diem-temppath", "diem-crypto/fuzzing", "diem-jellyfish-merkle/fuzzing", "diem-types/fuzzing"] diff --git a/storage/libradb/src/backup/backup_handler.rs b/storage/diemdb/src/backup/backup_handler.rs similarity index 96% rename from storage/libradb/src/backup/backup_handler.rs rename to storage/diemdb/src/backup/backup_handler.rs index c0c9e6abd0..5cdb240532 100644 --- a/storage/libradb/src/backup/backup_handler.rs +++ b/storage/diemdb/src/backup/backup_handler.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -11,19 +11,19 @@ use crate::{ transaction_store::TransactionStore, }; use anyhow::{anyhow, ensure, Result}; -use itertools::zip_eq; -use libra_crypto::hash::HashValue; -use libra_jellyfish_merkle::iterator::JellyfishMerkleIterator; -use libra_types::{ +use diem_crypto::hash::HashValue; +use diem_jellyfish_merkle::iterator::JellyfishMerkleIterator; +use diem_types::{ account_state_blob::AccountStateBlob, ledger_info::LedgerInfoWithSignatures, proof::{SparseMerkleRangeProof, TransactionAccumulatorRangeProof, TransactionInfoWithProof}, transaction::{Transaction, TransactionInfo, Version}, }; +use itertools::zip_eq; use serde::{export::Formatter, Deserialize, Serialize}; use std::{fmt::Display, sync::Arc}; -/// `BackupHandler` provides functionalities for LibraDB data backup. +/// `BackupHandler` provides functionalities for DiemDB data backup. #[derive(Clone)] pub struct BackupHandler { ledger_store: Arc, diff --git a/storage/libradb/src/backup/mod.rs b/storage/diemdb/src/backup/mod.rs similarity index 71% rename from storage/libradb/src/backup/mod.rs rename to storage/diemdb/src/backup/mod.rs index ce50195ac1..c089254be1 100644 --- a/storage/libradb/src/backup/mod.rs +++ b/storage/diemdb/src/backup/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod backup_handler; diff --git a/storage/libradb/src/backup/restore_handler.rs b/storage/diemdb/src/backup/restore_handler.rs similarity index 92% rename from storage/libradb/src/backup/restore_handler.rs rename to storage/diemdb/src/backup/restore_handler.rs index 8d6173ee60..95e13a0fa4 100644 --- a/storage/libradb/src/backup/restore_handler.rs +++ b/storage/diemdb/src/backup/restore_handler.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ change_set::ChangeSet, ledger_store::LedgerStore, schema::transaction_accumulator::TransactionAccumulatorSchema, state_store::StateStore, - transaction_store::TransactionStore, LibraDB, + transaction_store::TransactionStore, DiemDB, }; use anyhow::{ensure, Result}; -use libra_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; -use libra_jellyfish_merkle::restore::JellyfishMerkleRestore; -use libra_types::{ +use diem_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; +use diem_jellyfish_merkle::restore::JellyfishMerkleRestore; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, proof::{definition::LeafCount, position::FrozenSubTreeIterator}, transaction::{Transaction, TransactionInfo, Version, PRE_GENESIS_VERSION}, @@ -18,11 +18,11 @@ use schemadb::DB; use std::sync::Arc; use storage_interface::{DbReader, TreeState}; -/// Provides functionalities for LibraDB data restore. +/// Provides functionalities for DiemDB data restore. #[derive(Clone)] pub struct RestoreHandler { db: Arc, - pub libradb: Arc, + pub diemdb: Arc, ledger_store: Arc, transaction_store: Arc, state_store: Arc, @@ -31,14 +31,14 @@ pub struct RestoreHandler { impl RestoreHandler { pub(crate) fn new( db: Arc, - libradb: Arc, + diemdb: Arc, ledger_store: Arc, transaction_store: Arc, state_store: Arc, ) -> Self { Self { db, - libradb, + diemdb, ledger_store, transaction_store, state_store, @@ -152,7 +152,7 @@ impl RestoreHandler { pub fn get_next_expected_transaction_version(&self) -> Result { Ok(self - .libradb + .diemdb .get_latest_transaction_info_option()? .map_or(0, |(ver, _txn_info)| ver + 1)) } diff --git a/storage/libradb/src/backup/test.rs b/storage/diemdb/src/backup/test.rs similarity index 87% rename from storage/libradb/src/backup/test.rs rename to storage/diemdb/src/backup/test.rs index ca9d3831f4..d5f966bbb3 100644 --- a/storage/libradb/src/backup/test.rs +++ b/storage/diemdb/src/backup/test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{test_helper::arb_blocks_to_commit, LibraDB}; +use crate::{test_helper::arb_blocks_to_commit, DiemDB}; use anyhow::Result; -use libra_temppath::TempPath; +use diem_temppath::TempPath; use proptest::prelude::*; use storage_interface::DbWriter; @@ -13,7 +13,7 @@ proptest! { #[test] fn test_get_transaction_iter(input in arb_blocks_to_commit()) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let mut cur_ver = 0; for (txns_to_commit, ledger_info_with_sigs) in input.iter() { diff --git a/storage/libradb/src/change_set.rs b/storage/diemdb/src/change_set.rs similarity index 94% rename from storage/libradb/src/change_set.rs rename to storage/diemdb/src/change_set.rs index 4373595170..e436e54115 100644 --- a/storage/libradb/src/change_set.rs +++ b/storage/diemdb/src/change_set.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::ledger_counters::LedgerCounterBumps; -use libra_types::transaction::Version; +use diem_types::transaction::Version; use schemadb::SchemaBatch; use std::collections::HashMap; diff --git a/storage/libradb/src/libradb_test.rs b/storage/diemdb/src/diemdb_test.rs similarity index 95% rename from storage/libradb/src/libradb_test.rs rename to storage/diemdb/src/diemdb_test.rs index efc750d619..fd008f354e 100644 --- a/storage/libradb/src/libradb_test.rs +++ b/storage/diemdb/src/diemdb_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -7,12 +7,12 @@ use crate::{ schema::jellyfish_merkle_node::JellyfishMerkleNodeSchema, test_helper::{arb_blocks_to_commit, arb_mock_genesis}, }; -use libra_crypto::hash::CryptoHash; +use diem_crypto::hash::CryptoHash; #[allow(unused_imports)] -use libra_jellyfish_merkle::node_type::{Node, NodeKey}; -use libra_temppath::TempPath; +use diem_jellyfish_merkle::node_type::{Node, NodeKey}; +use diem_temppath::TempPath; #[allow(unused_imports)] -use libra_types::{ +use diem_types::{ account_config::AccountResource, contract_event::ContractEvent, ledger_info::LedgerInfo, @@ -22,7 +22,7 @@ use libra_types::{ use proptest::prelude::*; use std::collections::HashMap; -fn verify_epochs(db: &LibraDB, ledger_infos_with_sigs: &[LedgerInfoWithSignatures]) { +fn verify_epochs(db: &DiemDB, ledger_infos_with_sigs: &[LedgerInfoWithSignatures]) { const LIMIT: usize = 2; let mut actual_epoch_change_lis = Vec::new(); let latest_epoch = ledger_infos_with_sigs @@ -77,7 +77,7 @@ fn verify_epochs(db: &LibraDB, ledger_infos_with_sigs: &[LedgerInfoWithSignature pub fn test_save_blocks_impl(input: Vec<(Vec, LedgerInfoWithSignatures)>) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let num_batches = input.len(); let mut cur_ver = 0; @@ -129,7 +129,7 @@ pub fn test_save_blocks_impl(input: Vec<(Vec, LedgerInfoWit fn test_sync_transactions_impl(input: Vec<(Vec, LedgerInfoWithSignatures)>) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let num_batches = input.len(); let mut cur_ver = 0; @@ -163,7 +163,7 @@ fn test_sync_transactions_impl(input: Vec<(Vec, LedgerInfoW } fn get_events_by_event_key( - db: &LibraDB, + db: &DiemDB, ledger_info: &LedgerInfo, event_key: &EventKey, first_seq_num: u64, @@ -253,7 +253,7 @@ fn get_events_by_event_key( } fn verify_events_by_event_key( - db: &LibraDB, + db: &DiemDB, events: Vec<(EventKey, Vec)>, ledger_info: &LedgerInfo, is_latest: bool, @@ -312,7 +312,7 @@ fn group_events_by_event_key( } fn verify_committed_transactions( - db: &LibraDB, + db: &DiemDB, txns_to_commit: &[TransactionToCommit], first_version: Version, ledger_info_with_sigs: &LedgerInfoWithSignatures, @@ -433,7 +433,7 @@ fn test_get_first_seq_num_and_limit() { #[test] fn test_too_many_requested() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); assert!(db.get_transactions(0, 1001 /* limit */, 0, true).is_err()); } @@ -441,7 +441,7 @@ fn test_too_many_requested() { #[test] fn test_get_latest_tree_state() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); // entirely emtpy db let empty = db.get_latest_tree_state().unwrap(); @@ -479,7 +479,7 @@ fn test_get_latest_tree_state() { ); } -fn put_transaction_info(db: &LibraDB, version: Version, txn_info: &TransactionInfo) { +fn put_transaction_info(db: &DiemDB, version: Version, txn_info: &TransactionInfo) { let mut cs = ChangeSet::new(); db.ledger_store .put_transaction_infos(version, &[txn_info.clone()], &mut cs) diff --git a/storage/libradb/src/errors.rs b/storage/diemdb/src/errors.rs similarity index 59% rename from storage/libradb/src/errors.rs rename to storage/diemdb/src/errors.rs index 2d8f6f5254..69ded0aa5d 100644 --- a/storage/libradb/src/errors.rs +++ b/storage/diemdb/src/errors.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This module defines error types used by [`LibraDB`](crate::LibraDB). +//! This module defines error types used by [`DiemDB`](crate::DiemDB). use thiserror::Error; -/// This enum defines errors commonly used among [`LibraDB`](crate::LibraDB) APIs. +/// This enum defines errors commonly used among [`DiemDB`](crate::DiemDB) APIs. #[derive(Debug, Error)] -pub enum LibraDbError { +pub enum DiemDbError { /// A requested item is not found. #[error("{0} not found.")] NotFound(String), diff --git a/storage/libradb/src/event_store/mod.rs b/storage/diemdb/src/event_store/mod.rs similarity index 97% rename from storage/libradb/src/event_store/mod.rs rename to storage/diemdb/src/event_store/mod.rs index 793e1a9914..9b2018640f 100644 --- a/storage/libradb/src/event_store/mod.rs +++ b/storage/diemdb/src/event_store/mod.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file defines event store APIs that are related to the event accumulator and events //! themselves. #![allow(unused)] -use super::LibraDB; +use super::DiemDB; use crate::{ change_set::ChangeSet, - errors::LibraDbError, + errors::DiemDbError, ledger_counters::{LedgerCounter, LedgerCounterBumps}, schema::{ event::EventSchema, event_accumulator::EventAccumulatorSchema, @@ -17,11 +17,11 @@ use crate::{ }; use accumulator::{HashReader, MerkleAccumulator}; use anyhow::{ensure, format_err, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, EventAccumulatorHasher}, HashValue, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, contract_event::ContractEvent, event::EventKey, @@ -70,7 +70,7 @@ impl EventStore { let event = self .db .get::(&(version, index))? - .ok_or_else(|| LibraDbError::NotFound(format!("Event {} of Txn {}", index, version)))?; + .ok_or_else(|| DiemDbError::NotFound(format!("Event {} of Txn {}", index, version)))?; // Get the number of events in total for the transaction at `version`. let mut iter = self.db.iter::(ReadOptions::default())?; diff --git a/storage/libradb/src/event_store/test.rs b/storage/diemdb/src/event_store/test.rs similarity index 93% rename from storage/libradb/src/event_store/test.rs rename to storage/diemdb/src/event_store/test.rs index 9985871032..517aafd65c 100644 --- a/storage/libradb/src/event_store/test.rs +++ b/storage/diemdb/src/event_store/test.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::LibraDB; -use itertools::Itertools; -use libra_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; -use libra_proptest_helpers::Index; -use libra_temppath::TempPath; -use libra_types::{ +use crate::DiemDB; +use diem_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; +use diem_proptest_helpers::Index; +use diem_temppath::TempPath; +use diem_types::{ account_address::AccountAddress, contract_event::ContractEvent, event::EventKey, proptest_types::{AccountInfoUniverse, ContractEventGen}, }; +use itertools::Itertools; use proptest::{ collection::{hash_set, vec}, prelude::*, @@ -36,7 +36,7 @@ fn save(store: &EventStore, version: Version, events: &[ContractEvent]) -> HashV #[test] fn test_put_empty() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.event_store; let mut cs = ChangeSet::new(); assert_eq!( @@ -48,7 +48,7 @@ fn test_put_empty() { #[test] fn test_error_on_get_from_empty() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.event_store; assert!(store @@ -62,7 +62,7 @@ proptest! { #[test] fn test_put_get_verify(events in vec(any::().no_shrink(), 1..100)) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.event_store; let root_hash = save(store, 100, &events); @@ -94,7 +94,7 @@ proptest! { ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.event_store; // Save 3 chunks at different versions save(store, 99 /*version*/, &events1); @@ -186,7 +186,7 @@ proptest! { fn test_get_events_by_access_path_impl(event_batches: Vec>) { // Put into db. let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.event_store; let mut cs = ChangeSet::new(); diff --git a/storage/libradb/src/ledger_counters/mod.rs b/storage/diemdb/src/ledger_counters/mod.rs similarity index 97% rename from storage/libradb/src/ledger_counters/mod.rs rename to storage/diemdb/src/ledger_counters/mod.rs index 47dab60512..805c11c9aa 100644 --- a/storage/libradb/src/ledger_counters/mod.rs +++ b/storage/diemdb/src/ledger_counters/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::metrics::LIBRA_STORAGE_LEDGER; +use crate::metrics::DIEM_STORAGE_LEDGER; use num_derive::ToPrimitive; use num_traits::ToPrimitive; use num_variants::NumVariants; @@ -145,7 +145,7 @@ impl LedgerCounters { /// Bump Prometheus counters. pub fn bump_op_counters(&self) { for counter in &LedgerCounter::VARIANTS { - LIBRA_STORAGE_LEDGER + DIEM_STORAGE_LEDGER .with_label_values(&[counter.name()]) .set(self.get(*counter) as i64); } diff --git a/storage/libradb/src/ledger_counters/test.rs b/storage/diemdb/src/ledger_counters/test.rs similarity index 95% rename from storage/libradb/src/ledger_counters/test.rs rename to storage/diemdb/src/ledger_counters/test.rs index 63a4dfbd94..fa7759c1d6 100644 --- a/storage/libradb/src/ledger_counters/test.rs +++ b/storage/diemdb/src/ledger_counters/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/ledger_store/ledger_info_test.rs b/storage/diemdb/src/ledger_store/ledger_info_test.rs similarity index 95% rename from storage/libradb/src/ledger_store/ledger_info_test.rs rename to storage/diemdb/src/ledger_store/ledger_info_test.rs index 83018fc8e6..10a748c617 100644 --- a/storage/libradb/src/ledger_store/ledger_info_test.rs +++ b/storage/diemdb/src/ledger_store/ledger_info_test.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::{change_set::ChangeSet, LibraDB}; -use libra_temppath::TempPath; -use libra_types::{ +use crate::{change_set::ChangeSet, DiemDB}; +use diem_temppath::TempPath; +use diem_types::{ proptest_types::{AccountInfoUniverse, LedgerInfoWithSignaturesGen}, transaction::Version, }; @@ -176,8 +176,8 @@ proptest! { } } -fn set_up(path: &impl AsRef, ledger_infos_with_sigs: &[LedgerInfoWithSignatures]) -> LibraDB { - let db = LibraDB::new_for_test(path); +fn set_up(path: &impl AsRef, ledger_infos_with_sigs: &[LedgerInfoWithSignatures]) -> DiemDB { + let db = DiemDB::new_for_test(path); let store = &db.ledger_store; // Write LIs to DB. @@ -193,7 +193,7 @@ fn set_up(path: &impl AsRef, ledger_infos_with_sigs: &[LedgerInfoWithSigna db } -fn put_transaction_infos(db: &LibraDB, txn_infos: &[TransactionInfo]) { +fn put_transaction_infos(db: &DiemDB, txn_infos: &[TransactionInfo]) { let mut cs = ChangeSet::new(); db.ledger_store .put_transaction_infos(0, txn_infos, &mut cs) diff --git a/storage/libradb/src/ledger_store/mod.rs b/storage/diemdb/src/ledger_store/mod.rs similarity index 96% rename from storage/libradb/src/ledger_store/mod.rs rename to storage/diemdb/src/ledger_store/mod.rs index 5b96668304..4adf652855 100644 --- a/storage/libradb/src/ledger_store/mod.rs +++ b/storage/diemdb/src/ledger_store/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file defines ledger store APIs that are related to the main ledger accumulator, from the @@ -6,7 +6,7 @@ use crate::{ change_set::ChangeSet, - errors::LibraDbError, + errors::DiemDbError, schema::{ epoch_by_version::EpochByVersionSchema, ledger_info::LedgerInfoSchema, transaction_accumulator::TransactionAccumulatorSchema, @@ -16,12 +16,11 @@ use crate::{ use accumulator::{HashReader, MerkleAccumulator}; use anyhow::{ensure, format_err, Result}; use arc_swap::ArcSwap; -use itertools::Itertools; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, TransactionAccumulatorHasher}, HashValue, }; -use libra_types::{ +use diem_types::{ epoch_state::EpochState, ledger_info::LedgerInfoWithSignatures, proof::{ @@ -30,6 +29,7 @@ use libra_types::{ }, transaction::{TransactionInfo, Version}, }; +use itertools::Itertools; use schemadb::{ReadOptions, SchemaIterator, DB}; use std::{ops::Deref, sync::Arc}; use storage_interface::{StartupInfo, TreeState}; @@ -104,7 +104,7 @@ impl LedgerStore { let li = self .db .get::(&epoch)? - .ok_or_else(|| LibraDbError::NotFound(format!("LedgerInfo for epoch {}.", epoch)))?; + .ok_or_else(|| DiemDbError::NotFound(format!("LedgerInfo for epoch {}.", epoch)))?; ensure!( li.ledger_info().version() == version, "Epoch {} didn't end at version {}", @@ -126,7 +126,7 @@ impl LedgerStore { pub fn get_latest_ledger_info(&self) -> Result { self.get_latest_ledger_info_option() - .ok_or_else(|| LibraDbError::NotFound(String::from("Genesis LedgerInfo")).into()) + .ok_or_else(|| DiemDbError::NotFound(String::from("Genesis LedgerInfo")).into()) } pub fn set_latest_ledger_info(&self, ledger_info_with_sigs: LedgerInfoWithSignatures) { @@ -136,7 +136,7 @@ impl LedgerStore { pub fn get_latest_ledger_info_in_epoch(&self, epoch: u64) -> Result { self.db.get::(&epoch)?.ok_or_else(|| { - LibraDbError::NotFound(format!("Last LedgerInfo of epoch {}", epoch)).into() + DiemDbError::NotFound(format!("Last LedgerInfo of epoch {}", epoch)).into() }) } @@ -147,7 +147,7 @@ impl LedgerStore { self.db .get::(&(epoch - 1))? .ok_or_else(|| { - LibraDbError::NotFound(format!("Last LedgerInfo of epoch {}", epoch - 1)) + DiemDbError::NotFound(format!("Last LedgerInfo of epoch {}", epoch - 1)) })?; let latest_epoch_state = ledger_info_with_sigs .ledger_info() @@ -230,7 +230,7 @@ impl LedgerStore { /// version can be greater than what's in the latest LedgerInfo. pub fn get_latest_transaction_info(&self) -> Result<(Version, TransactionInfo)> { self.get_latest_transaction_info_option()? - .ok_or_else(|| LibraDbError::NotFound(String::from("Genesis TransactionInfo.")).into()) + .ok_or_else(|| DiemDbError::NotFound(String::from("Genesis TransactionInfo.")).into()) } /// Gets an iterator that yields `num_transaction_infos` transaction infos starting from diff --git a/storage/libradb/src/ledger_store/transaction_info_test.rs b/storage/diemdb/src/ledger_store/transaction_info_test.rs similarity index 94% rename from storage/libradb/src/ledger_store/transaction_info_test.rs rename to storage/diemdb/src/ledger_store/transaction_info_test.rs index bac6304e42..7744452954 100644 --- a/storage/libradb/src/ledger_store/transaction_info_test.rs +++ b/storage/diemdb/src/ledger_store/transaction_info_test.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::LibraDB; -use libra_temppath::TempPath; +use crate::DiemDB; +use diem_temppath::TempPath; use proptest::{collection::vec, prelude::*}; fn verify( @@ -53,7 +53,7 @@ proptest! { batch2 in vec(any::(), 1..100), ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.ledger_store; // insert two batches of transaction infos @@ -84,7 +84,7 @@ proptest! { }) ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.ledger_store; save(store, 0, &infos); diff --git a/storage/libradb/src/lib.rs b/storage/diemdb/src/lib.rs similarity index 94% rename from storage/libradb/src/lib.rs rename to storage/diemdb/src/lib.rs index 5403092f3e..d267b0f318 100644 --- a/storage/libradb/src/lib.rs +++ b/storage/diemdb/src/lib.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -//! This crate provides [`LibraDB`] which represents physical storage of the core Libra data +//! This crate provides [`DiemDB`] which represents physical storage of the core Diem data //! structures. //! //! It relays read/write operations on the physical storage via [`schemadb`] to the underlying -//! Key-Value storage system, and implements libra data structures on top of it. +//! Key-Value storage system, and implements diem data structures on top of it. #[cfg(any(feature = "librarian"))] pub mod librarian; @@ -31,23 +31,22 @@ mod transaction_store; #[cfg(any(test, feature = "fuzzing"))] #[allow(dead_code)] -mod libradb_test; +mod diemdb_test; #[cfg(feature = "fuzzing")] -pub use libradb_test::test_save_blocks_impl; +pub use diemdb_test::test_save_blocks_impl; use crate::{ backup::{backup_handler::BackupHandler, restore_handler::RestoreHandler}, change_set::{ChangeSet, SealedChangeSet}, - errors::LibraDbError, + errors::DiemDbError, event_store::EventStore, ledger_counters::LedgerCounters, ledger_store::LedgerStore, metrics::{ - LIBRA_STORAGE_API_LATENCY_SECONDS, LIBRA_STORAGE_CF_SIZE_BYTES, - LIBRA_STORAGE_COMMITTED_TXNS, LIBRA_STORAGE_LATEST_TXN_VERSION, - LIBRA_STORAGE_LEDGER_VERSION, LIBRA_STORAGE_NEXT_BLOCK_EPOCH, - LIBRA_STORAGE_OTHER_TIMERS_SECONDS, + DIEM_STORAGE_API_LATENCY_SECONDS, DIEM_STORAGE_CF_SIZE_BYTES, DIEM_STORAGE_COMMITTED_TXNS, + DIEM_STORAGE_LATEST_TXN_VERSION, DIEM_STORAGE_LEDGER_VERSION, + DIEM_STORAGE_NEXT_BLOCK_EPOCH, DIEM_STORAGE_OTHER_TIMERS_SECONDS, }, pruner::Pruner, schema::*, @@ -56,11 +55,10 @@ use crate::{ transaction_store::TransactionStore, }; use anyhow::{ensure, Result}; -use itertools::{izip, zip_eq}; -use libra_config::config::RocksdbConfig; -use libra_crypto::hash::{CryptoHash, HashValue, SPARSE_MERKLE_PLACEHOLDER_HASH}; -use libra_logger::prelude::*; -use libra_types::{ +use diem_config::config::RocksdbConfig; +use diem_crypto::hash::{CryptoHash, HashValue, SPARSE_MERKLE_PLACEHOLDER_HASH}; +use diem_logger::prelude::*; +use diem_types::{ account_address::AccountAddress, account_state_blob::{AccountStateBlob, AccountStateWithProof}, contract_event::{ContractEvent, EventWithProof}, @@ -76,6 +74,7 @@ use libra_types::{ Version, PRE_GENESIS_VERSION, }, }; +use itertools::{izip, zip_eq}; use schemadb::{ColumnFamilyName, Options, DB, DEFAULT_CF_NAME}; use std::{iter::Iterator, path::Path, sync::Arc, time::Instant}; use storage_interface::{DbReader, DbWriter, Order, StartupInfo, TreeState}; @@ -88,7 +87,7 @@ const MAX_NUM_EPOCH_ENDING_LEDGER_INFO: usize = 100; fn error_if_too_many_requested(num_requested: u64, max_allowed: u64) -> Result<()> { if num_requested > max_allowed { - Err(LibraDbError::TooManyRequested(num_requested, max_allowed).into()) + Err(DiemDbError::TooManyRequested(num_requested, max_allowed).into()) } else { Ok(()) } @@ -102,9 +101,9 @@ fn gen_rocksdb_options(config: &RocksdbConfig) -> Options { } /// This holds a handle to the underlying DB responsible for physical storage and provides APIs for -/// access to the core Libra data structures. +/// access to the core Diem data structures. #[derive(Debug)] -pub struct LibraDB { +pub struct DiemDB { db: Arc, ledger_store: Arc, transaction_store: Arc, @@ -114,7 +113,7 @@ pub struct LibraDB { pruner: Option, } -impl LibraDB { +impl DiemDB { fn column_families() -> Vec { vec![ /* LedgerInfo CF = */ DEFAULT_CF_NAME, @@ -135,7 +134,7 @@ impl LibraDB { fn new_with_db(db: DB, prune_window: Option) -> Self { let db = Arc::new(db); - LibraDB { + DiemDB { db: Arc::clone(&db), event_store: EventStore::new(Arc::clone(&db)), ledger_store: Arc::new(LedgerStore::new(Arc::clone(&db))), @@ -157,7 +156,7 @@ impl LibraDB { "Do not set prune_window when opening readonly.", ); - let path = db_root_path.as_ref().join("libradb"); + let path = db_root_path.as_ref().join("diemdb"); let instant = Instant::now(); let mut rocksdb_opts = gen_rocksdb_options(&rocksdb_config); @@ -165,7 +164,7 @@ impl LibraDB { let db = if readonly { DB::open_readonly( path.clone(), - "libradb_ro", + "diemdb_ro", Self::column_families(), &rocksdb_opts, )? @@ -174,7 +173,7 @@ impl LibraDB { rocksdb_opts.create_missing_column_families(true); DB::open( path.clone(), - "libradb", + "diemdb", Self::column_families(), &rocksdb_opts, )? @@ -183,7 +182,7 @@ impl LibraDB { info!( path = path, time_ms = %instant.elapsed().as_millis(), - "Opened LibraDB.", + "Opened DiemDB.", ); Ok(Self::new_with_db(db, prune_window)) @@ -194,7 +193,7 @@ impl LibraDB { secondary_path: P, mut rocksdb_config: RocksdbConfig, ) -> Result { - let primary_path = db_root_path.as_ref().join("libradb"); + let primary_path = db_root_path.as_ref().join("diemdb"); let secondary_path = secondary_path.as_ref().to_path_buf(); // Secondary needs `max_open_files = -1` per https://github.com/facebook/rocksdb/wiki/Secondary-instance rocksdb_config.max_open_files = -1; @@ -204,7 +203,7 @@ impl LibraDB { DB::open_as_secondary( primary_path, secondary_path, - "libradb_sec", + "diemdb_sec", Self::column_families(), &rocksdb_opts, )?, @@ -221,7 +220,7 @@ impl LibraDB { None, /* pruner */ RocksdbConfig::default(), ) - .expect("Unable to open LibraDB") + .expect("Unable to open DiemDB") } /// Returns ledger infos reflecting epoch bumps starting with the given epoch. If there are no @@ -480,13 +479,13 @@ impl LibraDB { fn commit(&self, sealed_cs: SealedChangeSet) -> Result<()> { self.db.write_schemas(sealed_cs.batch)?; - let _timer = LIBRA_STORAGE_OTHER_TIMERS_SECONDS + let _timer = DIEM_STORAGE_OTHER_TIMERS_SECONDS .with_label_values(&["get_approximate_cf_sizes"]) .start_timer(); match self.db.get_approximate_sizes_cf() { Ok(cf_sizes) => { for (cf_name, size) in cf_sizes { - LIBRA_STORAGE_CF_SIZE_BYTES + DIEM_STORAGE_CF_SIZE_BYTES .with_label_values(&[&cf_name]) .set(size as i64); } @@ -507,7 +506,7 @@ impl LibraDB { } } -impl DbReader for LibraDB { +impl DbReader for DiemDB { fn get_epoch_ending_ledger_infos( &self, start_epoch: u64, @@ -799,7 +798,7 @@ impl DbReader for LibraDB { } } -impl DbWriter for LibraDB { +impl DbWriter for DiemDB { /// `first_version` is the version of the first transaction in `txns_to_commit`. /// When `ledger_info_with_sigs` is provided, verify that the transaction accumulator root hash /// it carries is generated after the `txns_to_commit` are applied. @@ -853,7 +852,7 @@ impl DbWriter for LibraDB { // Persist. let (sealed_cs, counters) = self.seal_change_set(first_version, num_txns, cs)?; { - let _timer = LIBRA_STORAGE_OTHER_TIMERS_SECONDS + let _timer = DIEM_STORAGE_OTHER_TIMERS_SECONDS .with_label_values(&["save_transactions_commit"]) .start_timer(); self.commit(sealed_cs)?; @@ -863,16 +862,16 @@ impl DbWriter for LibraDB { if let Some(x) = ledger_info_with_sigs { self.ledger_store.set_latest_ledger_info(x.clone()); - LIBRA_STORAGE_LEDGER_VERSION.set(x.ledger_info().version() as i64); - LIBRA_STORAGE_NEXT_BLOCK_EPOCH.set(x.ledger_info().next_block_epoch() as i64); + DIEM_STORAGE_LEDGER_VERSION.set(x.ledger_info().version() as i64); + DIEM_STORAGE_NEXT_BLOCK_EPOCH.set(x.ledger_info().next_block_epoch() as i64); } // Only increment counter if commit succeeds and there are at least one transaction written // to the storage. That's also when we'd inform the pruner thread to work. if num_txns > 0 { let last_version = first_version + num_txns - 1; - LIBRA_STORAGE_COMMITTED_TXNS.inc_by(num_txns); - LIBRA_STORAGE_LATEST_TXN_VERSION.set(last_version as i64); + DIEM_STORAGE_COMMITTED_TXNS.inc_by(num_txns); + DIEM_STORAGE_LATEST_TXN_VERSION.set(last_version as i64); counters .expect("Counters should be bumped with transactions being saved.") .bump_op_counters(); @@ -903,7 +902,7 @@ pub trait GetRestoreHandler { fn get_restore_handler(&self) -> RestoreHandler; } -impl GetRestoreHandler for Arc { +impl GetRestoreHandler for Arc { fn get_restore_handler(&self) -> RestoreHandler { RestoreHandler::new( Arc::clone(&self.db), @@ -929,12 +928,12 @@ where warn!( api_name = api_name, error = ?e, - "LibraDB API returned error." + "DiemDB API returned error." ); "Err" } }; - LIBRA_STORAGE_API_LATENCY_SECONDS + DIEM_STORAGE_API_LATENCY_SECONDS .with_label_values(&[api_name, res_type]) .observe(timer.elapsed().as_secs_f64()); diff --git a/storage/libradb/src/librarian/mod.rs b/storage/diemdb/src/librarian/mod.rs similarity index 93% rename from storage/libradb/src/librarian/mod.rs rename to storage/diemdb/src/librarian/mod.rs index 8578e53bcc..0fad67cc4c 100644 --- a/storage/libradb/src/librarian/mod.rs +++ b/storage/diemdb/src/librarian/mod.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{LibraDB, Order, MAX_LIMIT}; +use crate::{DiemDB, Order, MAX_LIMIT}; use anyhow::{ensure, format_err, Result}; -use libra_config::config::RocksdbConfig; -use libra_types::{ +use diem_config::config::RocksdbConfig; +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, contract_event::ContractEvent, @@ -15,12 +15,12 @@ use std::{convert::AsRef, path::Path}; use storage_interface::{DbReader, StartupInfo}; pub struct Librarian { - db: LibraDB, + db: DiemDB, } impl Librarian { pub fn new + Clone>(db_root_path: P) -> Result { - let db = LibraDB::open( + let db = DiemDB::open( db_root_path, true, /* read only */ None, /* no prune_window */ diff --git a/storage/libradb/src/metrics.rs b/storage/diemdb/src/metrics.rs similarity index 53% rename from storage/libradb/src/metrics.rs rename to storage/diemdb/src/metrics.rs index c2a826da8e..4385ceabb6 100644 --- a/storage/libradb/src/metrics.rs +++ b/storage/diemdb/src/metrics.rs @@ -1,96 +1,96 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ +use diem_metrics::{ register_histogram_vec, register_int_counter, register_int_gauge, register_int_gauge_vec, HistogramVec, IntCounter, IntGauge, IntGaugeVec, }; use once_cell::sync::Lazy; -pub static LIBRA_STORAGE_LEDGER: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_LEDGER: Lazy = Lazy::new(|| { register_int_gauge_vec!( // metric name - "libra_storage_ledger", + "diem_storage_ledger", // metric description - "Libra storage ledger counters", + "Diem storage ledger counters", // metric labels (dimensions) &["type"] ) .unwrap() }); -pub static LIBRA_STORAGE_CF_SIZE_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_CF_SIZE_BYTES: Lazy = Lazy::new(|| { register_int_gauge_vec!( // metric name - "libra_storage_cf_size_bytes", + "diem_storage_cf_size_bytes", // metric description - "Libra storage Column Family size in bytes", + "Diem storage Column Family size in bytes", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_STORAGE_COMMITTED_TXNS: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_COMMITTED_TXNS: Lazy = Lazy::new(|| { register_int_counter!( - "libra_storage_committed_txns", - "Libra storage committed transactions" + "diem_storage_committed_txns", + "Diem storage committed transactions" ) .unwrap() }); -pub static LIBRA_STORAGE_LATEST_TXN_VERSION: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_LATEST_TXN_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_storage_latest_transaction_version", - "Libra storage latest transaction version" + "diem_storage_latest_transaction_version", + "Diem storage latest transaction version" ) .unwrap() }); -pub static LIBRA_STORAGE_LEDGER_VERSION: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_LEDGER_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_storage_ledger_version", + "diem_storage_ledger_version", "Version in the latest saved ledger info." ) .unwrap() }); -pub static LIBRA_STORAGE_NEXT_BLOCK_EPOCH: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_NEXT_BLOCK_EPOCH: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_storage_next_block_epoch", + "diem_storage_next_block_epoch", "ledger_info.next_block_epoch() for the latest saved ledger info." ) .unwrap() }); -pub static LIBRA_STORAGE_PRUNE_WINDOW: Lazy = Lazy::new(|| { - register_int_gauge!("libra_storage_prune_window", "Libra storage prune window").unwrap() +pub static DIEM_STORAGE_PRUNE_WINDOW: Lazy = Lazy::new(|| { + register_int_gauge!("diem_storage_prune_window", "Diem storage prune window").unwrap() }); -pub static LIBRA_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_storage_pruner_least_readable_state_version", - "Libra storage pruner least readable state version" + "diem_storage_pruner_least_readable_state_version", + "Diem storage pruner least readable state version" ) .unwrap() }); -pub static LIBRA_STORAGE_API_LATENCY_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_API_LATENCY_SECONDS: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_storage_api_latency_seconds", + "diem_storage_api_latency_seconds", // metric description - "Libra storage api latency in seconds", + "Diem storage api latency in seconds", // metric labels (dimensions) &["api_name", "result"] ) .unwrap() }); -pub static LIBRA_STORAGE_OTHER_TIMERS_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_STORAGE_OTHER_TIMERS_SECONDS: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_storage_other_timers_seconds", + "diem_storage_other_timers_seconds", // metric description "Various timers below public API level.", // metric labels (dimensions) @@ -103,7 +103,7 @@ pub static LIBRA_STORAGE_OTHER_TIMERS_SECONDS: Lazy = Lazy::new(|| pub(crate) static BACKUP_EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_handler_epoch_ending_epoch", + "diem_backup_handler_epoch_ending_epoch", "Current epoch returned in an epoch ending backup." ) .unwrap() @@ -111,7 +111,7 @@ pub(crate) static BACKUP_EPOCH_ENDING_EPOCH: Lazy = Lazy::new(|| { pub(crate) static BACKUP_TXN_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_handler_transaction_version", + "diem_backup_handler_transaction_version", "Current version returned in a transaction backup." ) .unwrap() @@ -119,7 +119,7 @@ pub(crate) static BACKUP_TXN_VERSION: Lazy = Lazy::new(|| { pub(crate) static BACKUP_STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_handler_state_snapshot_version", + "diem_backup_handler_state_snapshot_version", "Version of requested state snapshot backup." ) .unwrap() @@ -127,7 +127,7 @@ pub(crate) static BACKUP_STATE_SNAPSHOT_VERSION: Lazy = Lazy::new(|| { pub(crate) static BACKUP_STATE_SNAPSHOT_LEAF_IDX: Lazy = Lazy::new(|| { register_int_gauge!( - "libra_backup_handler_state_snapshot_leaf_index", + "diem_backup_handler_state_snapshot_leaf_index", "Index of current leaf index returned in a state snapshot backup." ) .unwrap() diff --git a/storage/libradb/src/pruner/mod.rs b/storage/diemdb/src/pruner/mod.rs similarity index 95% rename from storage/libradb/src/pruner/mod.rs rename to storage/diemdb/src/pruner/mod.rs index 9a80f23957..51305df4b8 100644 --- a/storage/libradb/src/pruner/mod.rs +++ b/storage/diemdb/src/pruner/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides `Pruner` which manages a thread pruning old data in the background and is @@ -6,18 +6,18 @@ use crate::{ metrics::{ - LIBRA_STORAGE_OTHER_TIMERS_SECONDS, LIBRA_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION, - LIBRA_STORAGE_PRUNE_WINDOW, + DIEM_STORAGE_OTHER_TIMERS_SECONDS, DIEM_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION, + DIEM_STORAGE_PRUNE_WINDOW, }, schema::{ jellyfish_merkle_node::JellyfishMerkleNodeSchema, stale_node_index::StaleNodeIndexSchema, }, }; use anyhow::Result; -use libra_infallible::Mutex; -use libra_jellyfish_merkle::StaleNodeIndex; -use libra_logger::prelude::*; -use libra_types::transaction::Version; +use diem_infallible::Mutex; +use diem_jellyfish_merkle::StaleNodeIndex; +use diem_logger::prelude::*; +use diem_types::transaction::Version; use schemadb::{ReadOptions, SchemaBatch, SchemaIterator, DB}; #[cfg(test)] use std::thread::sleep; @@ -32,7 +32,7 @@ use std::{ time::{Duration, Instant}, }; -/// The `Pruner` is meant to be part of a `LibraDB` instance and runs in the background to prune old +/// The `Pruner` is meant to be part of a `DiemDB` instance and runs in the background to prune old /// data. /// /// It creates a worker thread on construction and joins it on destruction. When destructed, it @@ -75,9 +75,9 @@ impl Pruner { let worker_progress = Arc::new(AtomicU64::new(initial_least_readable_version)); let worker_progress_clone = Arc::clone(&worker_progress); - LIBRA_STORAGE_PRUNE_WINDOW.set(historical_versions_to_keep as i64); + DIEM_STORAGE_PRUNE_WINDOW.set(historical_versions_to_keep as i64); let worker_thread = std::thread::Builder::new() - .name("libradb_pruner".into()) + .name("diemdb_pruner".into()) .spawn(move || Worker::new(db, command_receiver, worker_progress_clone).work_loop()) .expect("Creating pruner thread should succeed."); @@ -200,7 +200,7 @@ impl Worker { // Log the progress. self.least_readable_version .store(least_readable_version, Ordering::Relaxed); - LIBRA_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION + DIEM_STORAGE_PRUNER_LEAST_READABLE_STATE_VERSION .set(least_readable_version as i64); // Try to purge the log. @@ -368,7 +368,7 @@ pub fn prune_state( if indices.is_empty() { Ok(least_readable_version) } else { - let _timer = LIBRA_STORAGE_OTHER_TIMERS_SECONDS + let _timer = DIEM_STORAGE_OTHER_TIMERS_SECONDS .with_label_values(&["pruner_commit"]) .start_timer(); let new_least_readable_version = indices.last().expect("Should exist.").stale_since_version; diff --git a/storage/libradb/src/pruner/test.rs b/storage/diemdb/src/pruner/test.rs similarity index 92% rename from storage/libradb/src/pruner/test.rs rename to storage/diemdb/src/pruner/test.rs index ecc2016ecc..de0db64415 100644 --- a/storage/libradb/src/pruner/test.rs +++ b/storage/diemdb/src/pruner/test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::{change_set::ChangeSet, state_store::StateStore, LibraDB}; -use libra_crypto::HashValue; -use libra_temppath::TempPath; -use libra_types::{account_address::AccountAddress, account_state_blob::AccountStateBlob}; +use crate::{change_set::ChangeSet, state_store::StateStore, DiemDB}; +use diem_crypto::HashValue; +use diem_temppath::TempPath; +use diem_types::{account_address::AccountAddress, account_state_blob::AccountStateBlob}; use std::collections::HashMap; fn put_account_state_set( @@ -47,7 +47,7 @@ fn test_pruner() { let value2 = AccountStateBlob::from(vec![0x03]); let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir).db; + let db = DiemDB::new_for_test(&tmp_dir).db; let state_store = &StateStore::new(Arc::clone(&db)); let pruner = Pruner::new(Arc::clone(&db), 0 /* historical_versions_to_keep */); @@ -108,7 +108,7 @@ fn test_worker_quit_eagerly() { let value2 = AccountStateBlob::from(vec![0x03]); let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir).db; + let db = DiemDB::new_for_test(&tmp_dir).db; let state_store = &StateStore::new(Arc::clone(&db)); let _root0 = put_account_state_set( diff --git a/storage/libradb/src/schema/epoch_by_version/mod.rs b/storage/diemdb/src/schema/epoch_by_version/mod.rs similarity index 94% rename from storage/libradb/src/schema/epoch_by_version/mod.rs rename to storage/diemdb/src/schema/epoch_by_version/mod.rs index 1a64b56059..1b4f70b219 100644 --- a/storage/libradb/src/schema/epoch_by_version/mod.rs +++ b/storage/diemdb/src/schema/epoch_by_version/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for an index to help us find out which epoch a @@ -17,7 +17,7 @@ use crate::schema::{ensure_slice_len_eq, EPOCH_BY_VERSION_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_types::transaction::Version; +use diem_types::transaction::Version; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/epoch_by_version/test.rs b/storage/diemdb/src/schema/epoch_by_version/test.rs similarity index 88% rename from storage/libradb/src/schema/epoch_by_version/test.rs rename to storage/diemdb/src/schema/epoch_by_version/test.rs index fa745aeb7b..662ef1a383 100644 --- a/storage/libradb/src/schema/epoch_by_version/test.rs +++ b/storage/diemdb/src/schema/epoch_by_version/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/event/mod.rs b/storage/diemdb/src/schema/event/mod.rs similarity index 94% rename from storage/libradb/src/schema/event/mod.rs rename to storage/diemdb/src/schema/event/mod.rs index a41ec8af99..ad1dd6ae2d 100644 --- a/storage/libradb/src/schema/event/mod.rs +++ b/storage/diemdb/src/schema/event/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for the contract events. @@ -13,7 +13,7 @@ use crate::schema::{ensure_slice_len_eq, EVENT_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_types::{contract_event::ContractEvent, transaction::Version}; +use diem_types::{contract_event::ContractEvent, transaction::Version}; use schemadb::{ define_schema, schema::{KeyCodec, SeekKeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/event/test.rs b/storage/diemdb/src/schema/event/test.rs similarity index 89% rename from storage/libradb/src/schema/event/test.rs rename to storage/diemdb/src/schema/event/test.rs index c0c1caf7fe..f5a9275eab 100644 --- a/storage/libradb/src/schema/event/test.rs +++ b/storage/diemdb/src/schema/event/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/event_accumulator/mod.rs b/storage/diemdb/src/schema/event_accumulator/mod.rs similarity index 92% rename from storage/libradb/src/schema/event_accumulator/mod.rs rename to storage/diemdb/src/schema/event_accumulator/mod.rs index aa454a38e5..9c3a2fec37 100644 --- a/storage/libradb/src/schema/event_accumulator/mod.rs +++ b/storage/diemdb/src/schema/event_accumulator/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for the event accumulator. @@ -13,8 +13,8 @@ use crate::schema::{ensure_slice_len_eq, EVENT_ACCUMULATOR_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_crypto::hash::HashValue; -use libra_types::{proof::position::Position, transaction::Version}; +use diem_crypto::hash::HashValue; +use diem_types::{proof::position::Position, transaction::Version}; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/event_accumulator/test.rs b/storage/diemdb/src/schema/event_accumulator/test.rs similarity index 85% rename from storage/libradb/src/schema/event_accumulator/test.rs rename to storage/diemdb/src/schema/event_accumulator/test.rs index 18be337269..ea03bf2e16 100644 --- a/storage/libradb/src/schema/event_accumulator/test.rs +++ b/storage/diemdb/src/schema/event_accumulator/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/event_by_key/mod.rs b/storage/diemdb/src/schema/event_by_key/mod.rs similarity index 95% rename from storage/libradb/src/schema/event_by_key/mod.rs rename to storage/diemdb/src/schema/event_by_key/mod.rs index 455cd31156..0d7efb6bfb 100644 --- a/storage/libradb/src/schema/event_by_key/mod.rs +++ b/storage/diemdb/src/schema/event_by_key/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for an event index via which a ContractEvent ( @@ -13,7 +13,7 @@ use crate::schema::{ensure_slice_len_eq, EVENT_BY_KEY_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_types::{event::EventKey, transaction::Version}; +use diem_types::{event::EventKey, transaction::Version}; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/event_by_key/test.rs b/storage/diemdb/src/schema/event_by_key/test.rs similarity index 90% rename from storage/libradb/src/schema/event_by_key/test.rs rename to storage/diemdb/src/schema/event_by_key/test.rs index f9b0a6334c..ce5b49d88f 100644 --- a/storage/libradb/src/schema/event_by_key/test.rs +++ b/storage/diemdb/src/schema/event_by_key/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/jellyfish_merkle_node/mod.rs b/storage/diemdb/src/schema/jellyfish_merkle_node/mod.rs similarity index 90% rename from storage/libradb/src/schema/jellyfish_merkle_node/mod.rs rename to storage/diemdb/src/schema/jellyfish_merkle_node/mod.rs index fe2eecbe86..aac4ecb8af 100644 --- a/storage/libradb/src/schema/jellyfish_merkle_node/mod.rs +++ b/storage/diemdb/src/schema/jellyfish_merkle_node/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for nodes in the state Jellyfish Merkle Tree. @@ -11,8 +11,8 @@ use crate::schema::JELLYFISH_MERKLE_NODE_CF_NAME; use anyhow::Result; use byteorder::{BigEndian, WriteBytesExt}; -use libra_jellyfish_merkle::node_type::{Node, NodeKey}; -use libra_types::transaction::Version; +use diem_jellyfish_merkle::node_type::{Node, NodeKey}; +use diem_types::transaction::Version; use schemadb::{ define_schema, schema::{KeyCodec, SeekKeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/jellyfish_merkle_node/test.rs b/storage/diemdb/src/schema/jellyfish_merkle_node/test.rs similarity index 73% rename from storage/libradb/src/schema/jellyfish_merkle_node/test.rs rename to storage/diemdb/src/schema/jellyfish_merkle_node/test.rs index 17b418e543..18d8e7dc4d 100644 --- a/storage/libradb/src/schema/jellyfish_merkle_node/test.rs +++ b/storage/diemdb/src/schema/jellyfish_merkle_node/test.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use libra_crypto::HashValue; -use libra_jellyfish_merkle::node_type::Node; -use libra_types::account_state_blob::AccountStateBlob; +use diem_crypto::HashValue; +use diem_jellyfish_merkle::node_type::Node; +use diem_types::account_state_blob::AccountStateBlob; use proptest::prelude::*; use schemadb::schema::assert_encode_decode; diff --git a/storage/libradb/src/schema/ledger_counters/mod.rs b/storage/diemdb/src/schema/ledger_counters/mod.rs similarity index 94% rename from storage/libradb/src/schema/ledger_counters/mod.rs rename to storage/diemdb/src/schema/ledger_counters/mod.rs index d7aed04e27..bedcd91652 100644 --- a/storage/libradb/src/schema/ledger_counters/mod.rs +++ b/storage/diemdb/src/schema/ledger_counters/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for system counters associated with ledger versions. @@ -16,7 +16,7 @@ use super::LEDGER_COUNTERS_CF_NAME; use crate::{ledger_counters::LedgerCounters, schema::ensure_slice_len_eq}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_types::transaction::Version; +use diem_types::transaction::Version; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/ledger_counters/test.rs b/storage/diemdb/src/schema/ledger_counters/test.rs similarity index 86% rename from storage/libradb/src/schema/ledger_counters/test.rs rename to storage/diemdb/src/schema/ledger_counters/test.rs index b28f497994..e6db6ee1e3 100644 --- a/storage/libradb/src/schema/ledger_counters/test.rs +++ b/storage/diemdb/src/schema/ledger_counters/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/ledger_info/mod.rs b/storage/diemdb/src/schema/ledger_info/mod.rs similarity index 93% rename from storage/libradb/src/schema/ledger_info/mod.rs rename to storage/diemdb/src/schema/ledger_info/mod.rs index a952ec0618..d5cfde9b9b 100644 --- a/storage/libradb/src/schema/ledger_info/mod.rs +++ b/storage/diemdb/src/schema/ledger_info/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for LedgerInfoWithSignatures structure. @@ -15,7 +15,7 @@ use crate::schema::ensure_slice_len_eq; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_types::ledger_info::LedgerInfoWithSignatures; +use diem_types::ledger_info::LedgerInfoWithSignatures; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/ledger_info/test.rs b/storage/diemdb/src/schema/ledger_info/test.rs similarity index 79% rename from storage/libradb/src/schema/ledger_info/test.rs rename to storage/diemdb/src/schema/ledger_info/test.rs index f070296e61..039aa5900a 100644 --- a/storage/libradb/src/schema/ledger_info/test.rs +++ b/storage/diemdb/src/schema/ledger_info/test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use libra_types::ledger_info::LedgerInfoWithSignatures; +use diem_types::ledger_info::LedgerInfoWithSignatures; use proptest::prelude::*; use schemadb::schema::assert_encode_decode; diff --git a/storage/libradb/src/schema/mod.rs b/storage/diemdb/src/schema/mod.rs similarity index 96% rename from storage/libradb/src/schema/mod.rs rename to storage/diemdb/src/schema/mod.rs index 89cc314f1b..634d04d022 100644 --- a/storage/libradb/src/schema/mod.rs +++ b/storage/diemdb/src/schema/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This module defines representation of Libra core data structures at physical level via schemas +//! This module defines representation of Diem core data structures at physical level via schemas //! that implement [`schemadb::schema::Schema`]. //! //! All schemas are `pub(crate)` so not shown in rustdoc, refer to the source code to see details. diff --git a/storage/libradb/src/schema/stale_node_index/mod.rs b/storage/diemdb/src/schema/stale_node_index/mod.rs similarity index 93% rename from storage/libradb/src/schema/stale_node_index/mod.rs rename to storage/diemdb/src/schema/stale_node_index/mod.rs index c3be1a9e37..4ea38d5af7 100644 --- a/storage/libradb/src/schema/stale_node_index/mod.rs +++ b/storage/diemdb/src/schema/stale_node_index/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines the physical storage schema for information related to outdated state @@ -20,8 +20,8 @@ use crate::schema::{ensure_slice_len_eq, ensure_slice_len_gt, STALE_NODE_INDEX_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_jellyfish_merkle::{node_type::NodeKey, StaleNodeIndex}; -use libra_types::transaction::Version; +use diem_jellyfish_merkle::{node_type::NodeKey, StaleNodeIndex}; +use diem_types::transaction::Version; use schemadb::{ define_schema, schema::{KeyCodec, SeekKeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/stale_node_index/test.rs b/storage/diemdb/src/schema/stale_node_index/test.rs similarity index 87% rename from storage/libradb/src/schema/stale_node_index/test.rs rename to storage/diemdb/src/schema/stale_node_index/test.rs index f2a90b2760..784ae29d75 100644 --- a/storage/libradb/src/schema/stale_node_index/test.rs +++ b/storage/diemdb/src/schema/stale_node_index/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/transaction/mod.rs b/storage/diemdb/src/schema/transaction/mod.rs similarity index 92% rename from storage/libradb/src/schema/transaction/mod.rs rename to storage/diemdb/src/schema/transaction/mod.rs index 4ff78cdb2b..bad497bfc5 100644 --- a/storage/libradb/src/schema/transaction/mod.rs +++ b/storage/diemdb/src/schema/transaction/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for signed transactions. @@ -15,7 +15,7 @@ use crate::schema::{ensure_slice_len_eq, TRANSACTION_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_types::transaction::{Transaction, Version}; +use diem_types::transaction::{Transaction, Version}; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/transaction/test.rs b/storage/diemdb/src/schema/transaction/test.rs similarity index 86% rename from storage/libradb/src/schema/transaction/test.rs rename to storage/diemdb/src/schema/transaction/test.rs index e2e385681b..26236ed850 100644 --- a/storage/libradb/src/schema/transaction/test.rs +++ b/storage/diemdb/src/schema/transaction/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/transaction_accumulator/mod.rs b/storage/diemdb/src/schema/transaction_accumulator/mod.rs similarity index 91% rename from storage/libradb/src/schema/transaction_accumulator/mod.rs rename to storage/diemdb/src/schema/transaction_accumulator/mod.rs index d4b4d2396e..52a300ee1d 100644 --- a/storage/libradb/src/schema/transaction_accumulator/mod.rs +++ b/storage/diemdb/src/schema/transaction_accumulator/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for the transaction accumulator. @@ -13,8 +13,8 @@ use crate::schema::{ensure_slice_len_eq, TRANSACTION_ACCUMULATOR_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_crypto::HashValue; -use libra_types::proof::position::Position; +use diem_crypto::HashValue; +use diem_types::proof::position::Position; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/transaction_accumulator/test.rs b/storage/diemdb/src/schema/transaction_accumulator/test.rs similarity index 85% rename from storage/libradb/src/schema/transaction_accumulator/test.rs rename to storage/diemdb/src/schema/transaction_accumulator/test.rs index 371568a365..347f4dbb57 100644 --- a/storage/libradb/src/schema/transaction_accumulator/test.rs +++ b/storage/diemdb/src/schema/transaction_accumulator/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/transaction_by_account/mod.rs b/storage/diemdb/src/schema/transaction_by_account/mod.rs similarity index 93% rename from storage/libradb/src/schema/transaction_by_account/mod.rs rename to storage/diemdb/src/schema/transaction_by_account/mod.rs index 09c78d2cbb..3559e5343c 100644 --- a/storage/libradb/src/schema/transaction_by_account/mod.rs +++ b/storage/diemdb/src/schema/transaction_by_account/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for a transaction index via which the version of a @@ -13,7 +13,7 @@ use crate::schema::{ensure_slice_len_eq, TRANSACTION_BY_ACCOUNT_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_types::{account_address::AccountAddress, transaction::Version}; +use diem_types::{account_address::AccountAddress, transaction::Version}; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/transaction_by_account/test.rs b/storage/diemdb/src/schema/transaction_by_account/test.rs similarity index 89% rename from storage/libradb/src/schema/transaction_by_account/test.rs rename to storage/diemdb/src/schema/transaction_by_account/test.rs index 54380529f3..1875409f76 100644 --- a/storage/libradb/src/schema/transaction_by_account/test.rs +++ b/storage/diemdb/src/schema/transaction_by_account/test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; diff --git a/storage/libradb/src/schema/transaction_info/mod.rs b/storage/diemdb/src/schema/transaction_info/mod.rs similarity index 92% rename from storage/libradb/src/schema/transaction_info/mod.rs rename to storage/diemdb/src/schema/transaction_info/mod.rs index 79f10c17be..386ebc0385 100644 --- a/storage/libradb/src/schema/transaction_info/mod.rs +++ b/storage/diemdb/src/schema/transaction_info/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines physical storage schema for TransactionInfo structure. @@ -15,7 +15,7 @@ use crate::schema::{ensure_slice_len_eq, TRANSACTION_INFO_CF_NAME}; use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; -use libra_types::transaction::{TransactionInfo, Version}; +use diem_types::transaction::{TransactionInfo, Version}; use schemadb::{ define_schema, schema::{KeyCodec, ValueCodec}, diff --git a/storage/libradb/src/schema/transaction_info/test.rs b/storage/diemdb/src/schema/transaction_info/test.rs similarity index 76% rename from storage/libradb/src/schema/transaction_info/test.rs rename to storage/diemdb/src/schema/transaction_info/test.rs index 1deac09cd6..c847151baf 100644 --- a/storage/libradb/src/schema/transaction_info/test.rs +++ b/storage/diemdb/src/schema/transaction_info/test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use libra_types::transaction::{TransactionInfo, Version}; +use diem_types::transaction::{TransactionInfo, Version}; use proptest::prelude::*; use schemadb::schema::assert_encode_decode; diff --git a/storage/libradb/src/state_store/mod.rs b/storage/diemdb/src/state_store/mod.rs similarity index 98% rename from storage/libradb/src/state_store/mod.rs rename to storage/diemdb/src/state_store/mod.rs index 297093a87c..c6e8181760 100644 --- a/storage/libradb/src/state_store/mod.rs +++ b/storage/diemdb/src/state_store/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file defines state store APIs that are related account state Merkle tree. @@ -14,12 +14,12 @@ use crate::{ }, }; use anyhow::Result; -use libra_crypto::{hash::CryptoHash, HashValue}; -use libra_jellyfish_merkle::{ +use diem_crypto::{hash::CryptoHash, HashValue}; +use diem_jellyfish_merkle::{ node_type::{LeafNode, Node, NodeKey}, JellyfishMerkleTree, NodeBatch, TreeReader, TreeWriter, ROOT_NIBBLE_HEIGHT, }; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_state_blob::AccountStateBlob, proof::{SparseMerkleProof, SparseMerkleRangeProof}, diff --git a/storage/libradb/src/state_store/state_store_test.rs b/storage/diemdb/src/state_store/state_store_test.rs similarity index 94% rename from storage/libradb/src/state_store/state_store_test.rs rename to storage/diemdb/src/state_store/state_store_test.rs index 849b3fdfb7..b673e50926 100644 --- a/storage/libradb/src/state_store/state_store_test.rs +++ b/storage/diemdb/src/state_store/state_store_test.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::{pruner, LibraDB}; -use libra_crypto::hash::CryptoHash; -use libra_jellyfish_merkle::restore::JellyfishMerkleRestore; -use libra_temppath::TempPath; -use libra_types::{account_address::AccountAddress, account_state_blob::AccountStateBlob}; +use crate::{pruner, DiemDB}; +use diem_crypto::hash::CryptoHash; +use diem_jellyfish_merkle::restore::JellyfishMerkleRestore; +use diem_temppath::TempPath; +use diem_types::{account_address::AccountAddress, account_state_blob::AccountStateBlob}; use proptest::{collection::hash_map, prelude::*}; fn put_account_state_set( @@ -77,7 +77,7 @@ fn verify_state_in_store( #[test] fn test_empty_store() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.state_store; let address = AccountAddress::new([1u8; AccountAddress::LENGTH]); assert!(store @@ -88,7 +88,7 @@ fn test_empty_store() { #[test] fn test_state_store_reader_writer() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.state_store; let address1 = AccountAddress::new([1u8; AccountAddress::LENGTH]); let address2 = AccountAddress::new([2u8; AccountAddress::LENGTH]); @@ -142,7 +142,7 @@ fn test_retired_records() { let value3_update = AccountStateBlob::from(vec![0x13]); let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.state_store; // Update. @@ -235,7 +235,7 @@ proptest! { let kvs: Vec<_> = input.into_iter().collect(); let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.state_store; init_store(&store, kvs.clone().into_iter()); @@ -265,7 +265,7 @@ proptest! { }) ) { let tmp_dir1 = TempPath::new(); - let db1 = LibraDB::new_for_test(&tmp_dir1); + let db1 = DiemDB::new_for_test(&tmp_dir1); let store1 = &db1.state_store; init_store(&store1, input.clone().into_iter()); @@ -273,7 +273,7 @@ proptest! { let expected_root_hash = store1.get_root_hash(version).unwrap(); let tmp_dir2 = TempPath::new(); - let db2 = LibraDB::new_for_test(&tmp_dir2); + let db2 = DiemDB::new_for_test(&tmp_dir2); let store2 = &db2.state_store; let mut restore = @@ -323,7 +323,7 @@ proptest! { }) ) { let tmp_dir1 = TempPath::new(); - let db1 = LibraDB::new_for_test(&tmp_dir1); + let db1 = DiemDB::new_for_test(&tmp_dir1); let store1 = &db1.state_store; init_store(&store1, input.clone().into_iter()); @@ -331,7 +331,7 @@ proptest! { let expected_root_hash = store1.get_root_hash(version).unwrap(); let tmp_dir2 = TempPath::new(); - let db2 = LibraDB::new_for_test(&tmp_dir2); + let db2 = DiemDB::new_for_test(&tmp_dir2); let store2 = &db2.state_store; let mut restore = diff --git a/storage/libradb/src/system_store/mod.rs b/storage/diemdb/src/system_store/mod.rs similarity index 92% rename from storage/libradb/src/system_store/mod.rs rename to storage/diemdb/src/system_store/mod.rs index 043d4796f7..d4a2dd2588 100644 --- a/storage/libradb/src/system_store/mod.rs +++ b/storage/diemdb/src/system_store/mod.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This file defines system store APIs that operates data not part of the Libra core data +//! This file defines system store APIs that operates data not part of the Diem core data //! structures but information with regard to system running status, statistics, etc. use crate::{ @@ -9,8 +9,8 @@ use crate::{ schema::ledger_counters::LedgerCountersSchema, }; use anyhow::Result; -use libra_logger::prelude::*; -use libra_types::transaction::Version; +use diem_logger::prelude::*; +use diem_types::transaction::Version; use schemadb::DB; use std::sync::Arc; diff --git a/storage/libradb/src/system_store/test.rs b/storage/diemdb/src/system_store/test.rs similarity index 95% rename from storage/libradb/src/system_store/test.rs rename to storage/diemdb/src/system_store/test.rs index d9f4c1d99c..637f315d3f 100644 --- a/storage/libradb/src/system_store/test.rs +++ b/storage/diemdb/src/system_store/test.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; use crate::{ change_set::ChangeSet, ledger_counters::{LedgerCounter, LedgerCounterBumps}, - LibraDB, + DiemDB, }; -use libra_temppath::TempPath; +use diem_temppath::TempPath; use std::collections::HashMap; fn bump_ledger_counters( @@ -44,7 +44,7 @@ fn create_bumps_map( #[test] fn test_inc_ledger_counters() { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.system_store; // First batch, add to zeros. diff --git a/storage/libradb/src/test_helper.rs b/storage/diemdb/src/test_helper.rs similarity index 95% rename from storage/libradb/src/test_helper.rs rename to storage/diemdb/src/test_helper.rs index fa60d8f254..e816a0c1df 100644 --- a/storage/libradb/src/test_helper.rs +++ b/storage/diemdb/src/test_helper.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides reusable helpers in tests. use super::*; -use libra_crypto::hash::CryptoHash; -use libra_temppath::TempPath; -use libra_types::{ +use diem_crypto::hash::CryptoHash; +use diem_temppath::TempPath; +use diem_types::{ block_info::BlockInfo, ledger_info::{LedgerInfo, LedgerInfoWithSignatures}, proptest_types::{AccountInfoUniverse, LedgerInfoGen, TransactionToCommitGen}, @@ -17,10 +17,10 @@ use proptest::{collection::vec, prelude::*}; fn to_blocks_to_commit( partial_blocks: Vec<(Vec, LedgerInfo, Vec)>, ) -> Result, LedgerInfoWithSignatures)>> { - // Use temporary LibraDB and STORE LEVEL APIs to calculate hashes on a per transaction basis. + // Use temporary DiemDB and STORE LEVEL APIs to calculate hashes on a per transaction basis. // Result is used to test the batch PUBLIC API for saving everything, i.e. `save_transactions()` let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let mut cur_ver = 0; let mut cur_txn_accu_hash = HashValue::zero(); diff --git a/storage/libradb/src/transaction_store/mod.rs b/storage/diemdb/src/transaction_store/mod.rs similarity index 94% rename from storage/libradb/src/transaction_store/mod.rs rename to storage/diemdb/src/transaction_store/mod.rs index 056afdec95..ed48ad03b4 100644 --- a/storage/libradb/src/transaction_store/mod.rs +++ b/storage/diemdb/src/transaction_store/mod.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This file defines transaction store APIs that are related to committed signed transactions. use crate::{ change_set::ChangeSet, - errors::LibraDbError, + errors::DiemDbError, schema::{transaction::TransactionSchema, transaction_by_account::TransactionByAccountSchema}, }; use anyhow::{ensure, format_err, Result}; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, block_metadata::BlockMetadata, transaction::{Transaction, Version}, @@ -50,7 +50,7 @@ impl TransactionStore { pub fn get_transaction(&self, version: Version) -> Result { self.db .get::(&version)? - .ok_or_else(|| LibraDbError::NotFound(format!("Txn {}", version)).into()) + .ok_or_else(|| DiemDbError::NotFound(format!("Txn {}", version)).into()) } /// Gets an iterator that yields `num_transactions` transactions starting from `start_version`. @@ -92,7 +92,7 @@ impl TransactionStore { } } - Err(LibraDbError::NotFound(format!("BlockMetadata preceding version {}", version)).into()) + Err(DiemDbError::NotFound(format!("BlockMetadata preceding version {}", version)).into()) } /// Save signed transaction at `version` diff --git a/storage/libradb/src/transaction_store/test.rs b/storage/diemdb/src/transaction_store/test.rs similarity index 94% rename from storage/libradb/src/transaction_store/test.rs rename to storage/diemdb/src/transaction_store/test.rs index 2c1740abd6..84836b3f5b 100644 --- a/storage/libradb/src/transaction_store/test.rs +++ b/storage/diemdb/src/transaction_store/test.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use crate::LibraDB; -use libra_proptest_helpers::Index; -use libra_temppath::TempPath; -use libra_types::{ +use crate::DiemDB; +use diem_proptest_helpers::Index; +use diem_temppath::TempPath; +use diem_types::{ block_metadata::BlockMetadata, proptest_types::{AccountInfoUniverse, SignatureCheckedTransactionGen}, transaction::{SignedTransaction, Transaction}, @@ -24,7 +24,7 @@ proptest! { ), ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.transaction_store; let txns = init_store(universe, gens, &store); @@ -58,7 +58,7 @@ proptest! { ), ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.transaction_store; let txns = init_store(universe, gens, &store); @@ -114,7 +114,7 @@ proptest! { ) ) { let tmp_dir = TempPath::new(); - let db = LibraDB::new_for_test(&tmp_dir); + let db = DiemDB::new_for_test(&tmp_dir); let store = &db.transaction_store; let mut cs = ChangeSet::new(); diff --git a/storage/inspector/Cargo.toml b/storage/inspector/Cargo.toml index 64278a9ee8..4fa17cac0b 100644 --- a/storage/inspector/Cargo.toml +++ b/storage/inspector/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "libra-storage-inspector" +name = "diem-storage-inspector" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -13,11 +13,11 @@ anyhow = "1.0.34" structopt = "0.3.21" tempfile = "3.1.0" -libradb = { path = "../libradb", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../diemdb", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-interface = { path = "../storage-interface", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } diff --git a/storage/inspector/src/main.rs b/storage/inspector/src/main.rs index 445448bbbd..0fdd9e4263 100644 --- a/storage/inspector/src/main.rs +++ b/storage/inspector/src/main.rs @@ -1,17 +1,17 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::Result; -use libra_config::config::RocksdbConfig; -use libra_logger::info; -use libradb::LibraDB; +use diem_config::config::RocksdbConfig; +use diem_logger::info; +use diemdb::DiemDB; use std::path::PathBuf; use storage_interface::DbReader; use transaction_builder::get_transaction_name; -use libra_types::{ +use diem_types::{ account_address::AccountAddress, account_config::AccountResource, account_state::AccountState, }; use std::convert::TryFrom; @@ -42,7 +42,7 @@ enum Command { } /// Print out latest information stored in the DB. -fn print_head(db: &LibraDB) -> Result<()> { +fn print_head(db: &DiemDB) -> Result<()> { let si = db .get_startup_info() .expect("Can't get startup info") @@ -70,7 +70,7 @@ fn print_head(db: &LibraDB) -> Result<()> { Ok(()) } -fn print_txn(db: &LibraDB, version: u64) { +fn print_txn(db: &DiemDB, version: u64) { let tx_list = db .get_transactions(version, 1, version, false) .expect("Unable to load latest TXN"); @@ -82,7 +82,7 @@ fn print_txn(db: &LibraDB, version: u64) { ); } -fn print_account(db: &LibraDB, addr: AccountAddress) { +fn print_account(db: &DiemDB, addr: AccountAddress) { let maybe_blob = db .get_latest_account_state(addr) .expect("Unable to read AccountState"); @@ -103,7 +103,7 @@ fn print_account(db: &LibraDB, addr: AccountAddress) { } } -fn list_txns(db: &LibraDB) { +fn list_txns(db: &DiemDB) { let version = db .get_latest_version() .expect("Unable to get latest version"); @@ -122,7 +122,7 @@ fn list_txns(db: &LibraDB) { } } -fn list_accounts(db: &LibraDB) { +fn list_accounts(db: &DiemDB) { let version = db .get_latest_version() .expect("Unable to get latest version"); @@ -153,7 +153,7 @@ fn list_accounts(db: &LibraDB) { } fn main() { - ::libra_logger::LibraLogger::builder().build(); + ::diem_logger::DiemLogger::builder().build(); let opt = Opt::from_args(); @@ -167,13 +167,13 @@ fn main() { let log_dir = tempfile::tempdir().expect("Unable to get temp dir"); info!("Opening DB at: {:?}, log at {:?}", p, log_dir.path()); - let db = LibraDB::open( + let db = DiemDB::open( p, true, /* readonly */ None, /* pruner */ RocksdbConfig::default(), ) - .expect("Unable to open LibraDB"); + .expect("Unable to open DiemDB"); info!("DB opened successfully."); if let Some(cmd) = opt.cmd { diff --git a/storage/jellyfish-merkle/Cargo.toml b/storage/jellyfish-merkle/Cargo.toml index f6874e516d..c9074ed2d8 100644 --- a/storage/jellyfish-merkle/Cargo.toml +++ b/storage/jellyfish-merkle/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-jellyfish-merkle" +name = "diem-jellyfish-merkle" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra jellyfish merkle" +authors = ["Diem Association "] +description = "Diem jellyfish merkle" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -22,22 +22,22 @@ serde = { version = "1.0.117", features = ["derive"] } thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-nibble = { path = "../../common/nibble", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-nibble = { path = "../../common/nibble", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] rand = "0.7.3" proptest = "0.10.1" proptest-derive = "0.2.0" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } -libra-nibble = { path = "../../common/nibble", version = "0.1.0", features = ["fuzzing"] } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-nibble = { path = "../../common/nibble", version = "0.1.0", features = ["fuzzing"] } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "rand", "proptest-derive", "libra-crypto/fuzzing", "libra-types/fuzzing", "libra-nibble/fuzzing"] +fuzzing = ["proptest", "rand", "proptest-derive", "diem-crypto/fuzzing", "diem-types/fuzzing", "diem-nibble/fuzzing"] diff --git a/storage/jellyfish-merkle/proptest-regressions/restore/restore_test.txt b/storage/jellyfish-merkle/proptest-regressions/restore/restore_test.txt index 71c7a91c70..a366081864 100644 --- a/storage/jellyfish-merkle/proptest-regressions/restore/restore_test.txt +++ b/storage/jellyfish-merkle/proptest-regressions/restore/restore_test.txt @@ -4,4 +4,4 @@ # # It is recommended to check this file in to source control so that # everyone who runs the test benefits from these saved cases. -cc fc36f2202b7c17f1857dba535185a743db189a10704bf1e9002c27cc78ad5751 # shrinks to btree1 = {HashValue(006ed75a89cb5d876a16c0a7858990f312b210e5a3fedf3940dfc680f15d7602): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9701399c07e2e81187e049add7884be972155aa32e40155d762d86f4e044384d18871c105a7480071b0e64a14456e4918a282cb74aad3d22afa209b67e84ac6fff78c39880eea5b89f06462982e5d886c18a4a3e272ce8d7e0e7b9baa9693a2a342a29d366e6c51641ff2d2231f15b38d6c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cb0e6eaec4a361f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 192, 126, 46, 129, 24, 126, 4, 154, 221, 120, 132, 190, 151, 33, 85, 170, 50, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 55d762d86f4e044384d18871c105a748, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5291242565665206385, key: EventKey( [ 162, 130, 203, 116, 170, 211, 210, 42, 250, 32, 155, 103, 232, 74, 198, 255, 247, 140, 57, 136, 14, 234, 91, 137, ], ), }, sent_events: EventHandle { count: 7820603207635330288, key: EventKey( [ 164, 163, 226, 114, 206, 141, 126, 14, 123, 155, 170, 150, 147, 162, 163, 66, 162, 157, 54, 110, 108, 81, 100, 31, ], ), }, sequence_number: 7822105031110546162, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0395039482543d81c3ebc324f361ec1d07ad7d5b49627bb10eb0a164b07daed2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963168a18e8cc674f9ec949dcd1afdc1aab3b0ae9858d4273000094a7dc0f5d4032791805676c9de21e9410136768f9fe82dbc022a979fb504bdc7c4f4dc1ff60109a3618c322a448bd4d603cea0357ddf934ac220f6173708ebad1bf9b24fbe098ba3fe02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085d8ebc3a2186bfbc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 24, 232, 204, 103, 79, 158, 201, 73, 220, 209, 175, 220, 26, 171, 59, 10, 233, 133, 141, 66, 115, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8733113395867068308, key: EventKey( [ 5, 103, 108, 157, 226, 30, 148, 16, 19, 103, 104, 249, 254, 130, 219, 192, 34, 169, 121, 251, 80, 75, 220, 124, ], ), }, sent_events: EventHandle { count: 3934475233255312719, key: EventKey( [ 195, 34, 164, 72, 189, 77, 96, 60, 234, 3, 87, 221, 249, 52, 172, 34, 15, 97, 115, 112, 142, 186, 209, 191, ], ), }, sequence_number: 16158839153800979611, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(03b12d2ca808cc6a6759a3774bf0dc125e36ab8267ca080d2086adfe888e2d0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144589d7d473165c59f8303cb445843bdc265dac2fe228befb959800dae9eb3018b551d78c24d41cbbc62a7e8b66af4a7f38e7f678480422ed0507bc64dc249465f3bd893f601daca58a910864679eb585d2678937f980078bab25e5db4350e180d7b08528a9ec154d2553bbf411173725f34e279f845df8a20d09003546f982518a86ac74d7afb262c62f8a73f8b82baf62ffd27c6e4428cf58871427c517b5c412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac8a3f4183b97470 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 157, 125, 71, 49, 101, 197, 159, 131, 3, 203, 68, 88, 67, 189, 194, 101, 218, 194, 254, 34, 139, 239, 185, 89, 128, 13, 174, 158, 179, 1, 139, 85, 29, 120, 194, 77, 65, 203, 188, 98, 167, 232, 182, 106, 244, 167, 243, 142, 127, 103, 132, 128, 66, 46, 208, 80, 123, 198, 77, 194, 73, 70, 95, 59, 216, 147, 246, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: daca58a910864679eb585d2678937f98, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1023922803410385528, key: EventKey( [ 13, 123, 8, 82, 138, 158, 193, 84, 210, 85, 59, 191, 65, 17, 115, 114, 95, 52, 226, 121, 248, 69, 223, 138, ], ), }, sent_events: EventHandle { count: 2709037582491111456, key: EventKey( [ 168, 106, 199, 77, 122, 251, 38, 44, 98, 248, 167, 63, 139, 130, 186, 246, 47, 253, 39, 198, 228, 66, 140, 245, ], ), }, sequence_number: 4709774900229992840, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0590d04351b500231858bbb1b52b2b39300afff1a1d56132012d7e8dd18b33a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201554b690b0726409738676dba6ee013896f57d6fc93bee265b32b6e5e5d93b711b0467af6247a94524cebfa91c1713f86f51ef92caccd59b11d9f1dbe54bf81bd98a2ade9f2358f2aeb539bbc88b2d5bf365c10576ff40001b1b1277c26178fa5faae83449bd8314599d9786711f8a85e18f9444152107c60093682f07bc2cb2e0007df87ac6f457982c3f259248767ca1f18a769d1486c8b12da2d97cc527555989ef283fc3bcf83d7948c4a2921b68074492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70885cbf64c68e83f67 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 105, 11, 7, 38, 64, 151, 56, 103, 109, 186, 110, 224, 19, 137, 111, 87, 214, 252, 147, 190, 226, 101, 179, 43, 110, 94, 93, 147, 183, 17, 176, 70, 122, 246, 36, 122, 148, 82, 76, 235, 250, 145, 193, 113, 63, 134, 245, 30, 249, 44, 172, 205, 89, 177, 29, 159, 29, 190, 84, 191, 129, 189, 152, 162, 173, 233, 242, 53, 143, 42, 235, 83, 155, 188, 136, 178, 213, 191, 54, 92, 16, 87, 111, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b1b1277c26178fa5faae83449bd83145, }, ), received_events: EventHandle { count: 6820974389286721945, key: EventKey( [ 249, 68, 65, 82, 16, 124, 96, 9, 54, 130, 240, 123, 194, 203, 46, 0, 7, 223, 135, 172, 111, 69, 121, 130, ], ), }, sent_events: EventHandle { count: 2290757190599439043, key: EventKey( [ 167, 105, 209, 72, 108, 139, 18, 218, 45, 151, 204, 82, 117, 85, 152, 158, 242, 131, 252, 59, 207, 131, 215, 148, ], ), }, sequence_number: 5292996981795932812, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(059bac0a5e35fd076c9b8e56d833886d438b2a3aa1f1cb16b172f1376fd3a445): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01600e0cf52f030fcbc5aa4461516178ebbea8a6ad8001d746e309428ec5c74f755f31f0fe4bc45db10952eb054d5337b694525fffa9d02cef411b7f2b1c04533643fb82a16e92f750f9646e0e9067445071c2814791aa6dae19acf949fdae501a6d0001ec2abdb9167a565cab1f79371bf4b432853531db9ca4726e18b44eebe4256f9fc958313dcac425dc7bb70e0b607b750c1850570e9a91e2475718d1fd907cf6cda127e0a63c408856cb6f5b3c90835a8ace02541a58358e6234b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce832efaa2f8cfa9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 12, 245, 47, 3, 15, 203, 197, 170, 68, 97, 81, 97, 120, 235, 190, 168, 166, 173, 128, 1, 215, 70, 227, 9, 66, 142, 197, 199, 79, 117, 95, 49, 240, 254, 75, 196, 93, 177, 9, 82, 235, 5, 77, 83, 55, 182, 148, 82, 95, 255, 169, 208, 44, 239, 65, 27, 127, 43, 28, 4, 83, 54, 67, 251, 130, 161, 110, 146, 247, 80, 249, 100, 110, 14, 144, 103, 68, 80, 113, 194, 129, 71, 145, 170, 109, 174, 25, 172, 249, 73, 253, 174, 80, 26, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ec2abdb9167a565cab1f79371bf4b432, }, ), received_events: EventHandle { count: 7958604485116376453, key: EventKey( [ 180, 78, 235, 228, 37, 111, 159, 201, 88, 49, 61, 202, 196, 37, 220, 123, 183, 14, 11, 96, 123, 117, 12, 24, ], ), }, sent_events: EventHandle { count: 6289244519628953424, key: EventKey( [ 209, 253, 144, 124, 246, 205, 161, 39, 224, 166, 60, 64, 136, 86, 203, 111, 91, 60, 144, 131, 90, 138, 206, 2, ], ), }, sequence_number: 13201284770649610836, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08846494e680e6088b6563c15b7390c317fd717fdea1734da9c44d4d07829b09): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148821846888d6e0e47a678a6e110073187ddc5c1d292b7b893901bdd9cd2853636bc19e41b615e00d9c678ef402438e105a7c9e879f356c23539c0c71670fba8fa45113af23afbadf600018c9fffbcceea5771bdba039779f9316b57dffcbe7faf590f18b5b7c54d15b47e6c1e7b85f4487f5abfcf2c5a7415ac4623afa9b1333e5dda591841ada5540b0560a2c52eb95b6855bf46f1c42402a59598f170fcc411941a53762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081b0bbb64caa5a353 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 24, 70, 136, 141, 110, 14, 71, 166, 120, 166, 225, 16, 7, 49, 135, 221, 197, 193, 210, 146, 183, 184, 147, 144, 27, 221, 156, 210, 133, 54, 54, 188, 25, 228, 27, 97, 94, 0, 217, 198, 120, 239, 64, 36, 56, 225, 5, 167, 201, 232, 121, 243, 86, 194, 53, 57, 192, 199, 22, 112, 251, 168, 250, 69, 17, 58, 242, 58, 251, 173, 246, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c9fffbcceea5771bdba039779f9316b, }, ), received_events: EventHandle { count: 1106108146696118103, key: EventKey( [ 181, 183, 197, 77, 21, 180, 126, 108, 30, 123, 133, 244, 72, 127, 90, 191, 207, 44, 90, 116, 21, 172, 70, 35, ], ), }, sent_events: EventHandle { count: 6474589936035146159, key: EventKey( [ 65, 173, 165, 84, 11, 5, 96, 162, 197, 46, 185, 91, 104, 85, 191, 70, 241, 196, 36, 2, 165, 149, 152, 241, ], ), }, sequence_number: 8526187742798085232, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(09e9156c87c1d9aa9c465c0d411e3fdd04c129c4778ab509f61f5bcc7093d758): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97114ca73f254a9352eb9f7b607241c0de030acbdcafc018be3bd945c750f714ffa9bfe44b75f0a00626f621a5d667a0b1884d267c4cd5e1e35d177eb113c2295d64cc822f85fa955cbe06787da5c2ea17e1841398b7e8d1a74097dc003e037628eb3de6667e223a9ef3b08df91b9aca9cf702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70887ce2c2c804d28b5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 115, 242, 84, 169, 53, 46, 185, 247, 182, 7, 36, 28, 13, 224, 48, 172, 189, 202, 252, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8be3bd945c750f714ffa9bfe44b75f0a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 827086031636557666, key: EventKey( [ 132, 210, 103, 196, 205, 94, 30, 53, 209, 119, 235, 17, 60, 34, 149, 214, 76, 200, 34, 248, 95, 169, 85, 203, ], ), }, sent_events: EventHandle { count: 9124625296367511520, key: EventKey( [ 65, 57, 139, 126, 141, 26, 116, 9, 125, 192, 3, 224, 55, 98, 142, 179, 222, 102, 103, 226, 35, 169, 239, 59, ], ), }, sequence_number: 8128902411739848456, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0a848b1cea0e7a814ae17c34168557138d7e0ded6eb9f21574996af339843d77): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001335331ddebaf9e5999e0d12e262ae7ed36201fa0f6d762b25d6a65e8ffd1e82f7357a5c19d65e3dbf407705d75ed1ed701f6ae8e000132528711b9aee60517d0dabf459d13f25ec37e0ee64e6417188f1c3f86651354bfa62646833f105e2ad8f69e64e62089f4aefb3512f0d01a6618e31628f588d97230eeb02cbf73a98a8f6787727708957b24e0df711e2b4a600e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbd1790a36a44f57 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 49, 221, 235, 175, 158, 89, 153, 224, 209, 46, 38, 42, 231, 237, 54, 32, 31, 160, 246, 215, 98, 178, 93, 106, 101, 232, 255, 209, 232, 47, 115, 87, 165, 193, 157, 101, 227, 219, 244, 7, 112, 93, 117, 237, 30, 215, 1, 246, 174, 142, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 32528711b9aee60517d0dabf459d13f2, }, ), received_events: EventHandle { count: 1685558910536041310, key: EventKey( [ 143, 28, 63, 134, 101, 19, 84, 191, 166, 38, 70, 131, 63, 16, 94, 42, 216, 246, 158, 100, 230, 32, 137, 244, ], ), }, sent_events: EventHandle { count: 7357422670779382702, key: EventKey( [ 227, 22, 40, 245, 136, 217, 114, 48, 238, 176, 44, 191, 115, 169, 138, 143, 103, 135, 114, 119, 8, 149, 123, 36, ], ), }, sequence_number: 1035909463350042592, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0aeb5ca27e7f39f10e6615f7b215aa951b59202de4bcc096bbe12d7473a90e21): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b0014399fa1fad12d7d8e17bde39f0f745b6fd5c40471dca271455115ae11064ff29a60dd300408653e5017b40cc8c570f2f684178d6d93f6a03f85603efd5cf9eb0b5aa097901b557d2976b22eb412cdd257f476056e001ab9d832f51df68dfb4e18f8769d925367c1ac9633ddd604d185860d78a74bd1a3efaea696f5acfddc820bd011246dedc7cbb10e60465bd8d671831d3625c00edda186432aaff3040f3c19421001734e9c03a1ad2cc7a91203f3a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb0d1c549be9bc63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 250, 31, 173, 18, 215, 216, 225, 123, 222, 57, 240, 247, 69, 182, 253, 92, 64, 71, 29, 202, 39, 20, 85, 17, 90, 225, 16, 100, 255, 41, 166, 13, 211, 0, 64, 134, 83, 229, 1, 123, 64, 204, 140, 87, 15, 47, 104, 65, 120, 214, 217, 63, 106, 3, 248, 86, 3, 239, 213, 207, 158, 176, 181, 170, 9, 121, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b557d2976b22eb412cdd257f476056e0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ab9d832f51df68dfb4e18f8769d92536, }, ), received_events: EventHandle { count: 5575699594421541500, key: EventKey( [ 88, 96, 215, 138, 116, 189, 26, 62, 250, 234, 105, 111, 90, 207, 221, 200, 32, 189, 1, 18, 70, 222, 220, 124, ], ), }, sent_events: EventHandle { count: 7461828399194312891, key: EventKey( [ 49, 211, 98, 92, 0, 237, 218, 24, 100, 50, 170, 255, 48, 64, 243, 193, 148, 33, 0, 23, 52, 233, 192, 58, ], ), }, sequence_number: 4197109186935181850, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b27347d5376bd261662d6ebba92f859729bdc6952b52c91fa8a8571f7ea0097): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130fc54a75c829e854b43c8dff0a10fee0941363532a30d2b2266ae06a46e9e42a707578f2c3a3b8aee3774239fe51332ac0001d8d5d80314b70affa5823605d498f20b3e6403036c21b20718cbe88bafc1b7b52b5fa2f235ccad028a2df17bc1725271ab7d38e9bf96732e7a18eac5493a51f95ec7f57a07b1c235c47c5ad23631591e30466a9b38c190a897dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed03241a39b98b52 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 84, 167, 92, 130, 158, 133, 75, 67, 200, 223, 240, 161, 15, 238, 9, 65, 54, 53, 50, 163, 13, 43, 34, 102, 174, 6, 164, 110, 158, 66, 167, 7, 87, 143, 44, 58, 59, 138, 238, 55, 116, 35, 159, 229, 19, 50, 172, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d8d5d80314b70affa5823605d498f20b, }, ), received_events: EventHandle { count: 554542451910730814, key: EventKey( [ 203, 232, 139, 175, 193, 183, 181, 43, 95, 162, 242, 53, 204, 173, 2, 138, 45, 241, 123, 193, 114, 82, 113, 171, ], ), }, sent_events: EventHandle { count: 8804101412857919613, key: EventKey( [ 234, 197, 73, 58, 81, 249, 94, 199, 245, 122, 7, 177, 194, 53, 196, 124, 90, 210, 54, 49, 89, 30, 48, 70, ], ), }, sequence_number: 15895358749497924458, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c2a4183b8657f5d1bb942a9d52c27fa105a3e26b59ebc12e451753e4847e449): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012e7b3ba170a1b273890f6600a967e96c64e9cb3ce95a2cd461d15f15dcad28421304e34c876d21d9d1e4cb48ec42ad01afcb5ca435311b95f8f85f3d13f6791700a84cf53843ebc25d18c72f7d576ad570163b3d7e7faa9fadb8dabd2c61494eb40c16a7ad93999e3f5a189d953f8990b5ee977ffa756cd2f0e52916045b9fda507fe605ce5a179586df132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805e7516388d3b5de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 59, 161, 112, 161, 178, 115, 137, 15, 102, 0, 169, 103, 233, 108, 100, 233, 203, 60, 233, 90, 44, 212, 97, 209, 95, 21, 220, 173, 40, 66, 19, 4, 227, 76, 135, 109, 33, 217, 209, 228, 203, 72, 236, 66, 173, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: afcb5ca435311b95f8f85f3d13f67917, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6756221064960101544, key: EventKey( [ 199, 47, 125, 87, 106, 213, 112, 22, 59, 61, 126, 127, 170, 159, 173, 184, 218, 189, 44, 97, 73, 78, 180, 12, ], ), }, sent_events: EventHandle { count: 6503090769391101718, key: EventKey( [ 157, 149, 63, 137, 144, 181, 238, 151, 127, 250, 117, 108, 210, 240, 229, 41, 22, 4, 91, 159, 218, 80, 127, 230, ], ), }, sequence_number: 1432011181427183109, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0e21e44d1fc0d270ee238c0f303fc25b20fdef704c7f2818c10847a0e0584649): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a2015554d137f885b37c6cb163975690aad1f5aa36ab1a8f486d726094610c6db180d8f445384a1c245644bef0bee1a3a989cf0211f50e9f0a4513f1ab00f5b2a69896f407a9a48ae46a9eef2e614f3a32b491bc080c83530000417da55f54bd3b0f18d6910d03f16701f8c107d1259a24a0e7c81b05de0c9863774d2edfc9af1860471804ac33bd40bde20ace7673eeaa26c3f48c2bc6d5a7c56077baffc4a69a7ff8442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f43a291470d49af5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 209, 55, 248, 133, 179, 124, 108, 177, 99, 151, 86, 144, 170, 209, 245, 170, 54, 171, 26, 143, 72, 109, 114, 96, 148, 97, 12, 109, 177, 128, 216, 244, 69, 56, 74, 28, 36, 86, 68, 190, 240, 190, 225, 163, 169, 137, 207, 2, 17, 245, 14, 159, 10, 69, 19, 241, 171, 0, 245, 178, 166, 152, 150, 244, 7, 169, 164, 138, 228, 106, 158, 239, 46, 97, 79, 58, 50, 180, 145, 188, 8, 12, 131, 83, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1097679104274431297, key: EventKey( [ 214, 145, 13, 3, 241, 103, 1, 248, 193, 7, 209, 37, 154, 36, 160, 231, 200, 27, 5, 222, 12, 152, 99, 119, ], ), }, sent_events: EventHandle { count: 5143137917742296653, key: EventKey( [ 4, 172, 51, 189, 64, 189, 226, 10, 206, 118, 115, 238, 170, 38, 195, 244, 140, 43, 198, 213, 167, 197, 96, 119, ], ), }, sequence_number: 4969862491002961850, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(156d0e5667c8720efe735ea759162797ecf150ea1f7818016eebbe60158519e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601394b4d472f7893ca6f61e31212e54a7cf19e05faef550119ed35b74121a26b9432f7a8908c1f89d525c2c7efc997cab676f10f6c733f50fc3df901a4b289b8fcc383c9931ce80c62ffea8e008e6f5a9fd890507f18f42c97fdf1f523bc85a58de5f8f8d0aae7d5c98df5743059bae650e404b19f23186f39186aa957391a316b3b50c223778d7cc3fa2cb08b76e4d0338ea27152a6fc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70867c7d6539762acb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 77, 71, 47, 120, 147, 202, 111, 97, 227, 18, 18, 229, 74, 124, 241, 158, 5, 250, 239, 85, 1, 25, 237, 53, 183, 65, 33, 162, 107, 148, 50, 247, 168, 144, 140, 31, 137, 213, 37, 194, 199, 239, 201, 151, 202, 182, 118, 241, 15, 108, 115, 63, 80, 252, 61, 249, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a4b289b8fcc383c9931ce80c62ffea8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9173991701014540174, key: EventKey( [ 244, 44, 151, 253, 241, 245, 35, 188, 133, 165, 141, 229, 248, 248, 208, 170, 231, 213, 201, 141, 245, 116, 48, 89, ], ), }, sent_events: EventHandle { count: 2566964947192964794, key: EventKey( [ 111, 57, 24, 106, 169, 87, 57, 26, 49, 107, 59, 80, 194, 35, 119, 141, 124, 195, 250, 44, 176, 139, 118, 228, ], ), }, sequence_number: 18205329191703819216, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(165b77682bfdec992ccb3389864b8a8297e1c274509beddae25ba874a310bd1b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01616b218c97a29e6d6299ee60606f54a5c9d53f89ad5e8eb73f5fc0b305fb7f9296adfa0fbdca6adda15ff71e83b5142135bc08fde9ae5c2fe4828edeb8cb2378834e0bcf537fc6b5081db7411f0782a0b66976b72eb80cedba35a0450eb422d9c3f001e5568ea10cdfb9cdd1c0b13d3a63369601cf005223c648469d7d4b277fdf52efeeba2de2f839085e00183055213c5facb9139a0aa525b7e4b8445f772450256e09a825c0c0371e5c9a0518fdae42735eb1942f9d6180457208e0b4f1eb37998cb237229266f6ec8f0698122101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087390e3f6f0b8a554 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 33, 140, 151, 162, 158, 109, 98, 153, 238, 96, 96, 111, 84, 165, 201, 213, 63, 137, 173, 94, 142, 183, 63, 95, 192, 179, 5, 251, 127, 146, 150, 173, 250, 15, 189, 202, 106, 221, 161, 95, 247, 30, 131, 181, 20, 33, 53, 188, 8, 253, 233, 174, 92, 47, 228, 130, 142, 222, 184, 203, 35, 120, 131, 78, 11, 207, 83, 127, 198, 181, 8, 29, 183, 65, 31, 7, 130, 160, 182, 105, 118, 183, 46, 184, 12, 237, 186, 53, 160, 69, 14, 180, 34, 217, 195, 240, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e5568ea10cdfb9cdd1c0b13d3a633696, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf005223c648469d7d4b277fdf52efee, }, ), received_events: EventHandle { count: 26467692892532154, key: EventKey( [ 48, 85, 33, 60, 95, 172, 185, 19, 154, 10, 165, 37, 183, 228, 184, 68, 95, 119, 36, 80, 37, 110, 9, 168, ], ), }, sent_events: EventHandle { count: 403736401457233957, key: EventKey( [ 253, 174, 66, 115, 94, 177, 148, 47, 157, 97, 128, 69, 114, 8, 224, 180, 241, 235, 55, 153, 140, 178, 55, 34, ], ), }, sequence_number: 1339828104368383634, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(175f4fe70af29adb641cfd7c6446dcbd0a9cc2e8f91c3e300baae959bf7bade4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8015b44a184783fc62ae349a4166aa8d7b3c548e7f7dcd739d31b3f6a031d2ce12a2a4ab13f544237f6f0962a356806bd1fb323379758a07fe1dbb17c1a830b43a5fca49b59899d9e1d03081c26fec5f96f8be7b9973bbb34724d570a990000e4dcd995cf01180518b8d608e29d4083faf9439a9ad4de598aeb175bc3e1cefe0937dca41733bc980518a82b592103749abc3742d2cf8f2e8f2098f90e2712591a66437cbeb95c44229a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aebe053dc16e8a7b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, 161, 132, 120, 63, 198, 42, 227, 73, 164, 22, 106, 168, 215, 179, 197, 72, 231, 247, 220, 215, 57, 211, 27, 63, 106, 3, 29, 44, 225, 42, 42, 74, 177, 63, 84, 66, 55, 246, 240, 150, 42, 53, 104, 6, 189, 31, 179, 35, 55, 151, 88, 160, 127, 225, 219, 177, 124, 26, 131, 11, 67, 165, 252, 164, 155, 89, 137, 157, 158, 29, 3, 8, 28, 38, 254, 197, 249, 111, 139, 231, 185, 151, 59, 187, 52, 114, 77, 87, 10, 153, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 367045360714636516, key: EventKey( [ 184, 214, 8, 226, 157, 64, 131, 250, 249, 67, 154, 154, 212, 222, 89, 138, 235, 23, 91, 195, 225, 206, 254, 9, ], ), }, sent_events: EventHandle { count: 403279094275693623, key: EventKey( [ 168, 43, 89, 33, 3, 116, 154, 188, 55, 66, 210, 207, 143, 46, 143, 32, 152, 249, 14, 39, 18, 89, 26, 102, ], ), }, sequence_number: 11106514796093013059, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1843c25dc4ddd6bea3249e84149e45366c9e133095f3283d3adcad0f4ce0a28e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d201e82b10f7cac8d3389b12fb25a7093ed7ceb6665612513924dddbca912826a740000b40c2f595061f72d1839584fd5d203ebdf5af890a30b46541b8c1613f199204221e6d73c13147a1c47180e50c48fdd51b7f9bef5f7024137e6a9c366648f48bc1ce17a4a0d1ade63364a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080f4597d8c70d22e9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 130, 177, 15, 124, 172, 141, 51, 137, 177, 47, 178, 90, 112, 147, 237, 124, 235, 102, 101, 97, 37, 19, 146, 77, 221, 188, 169, 18, 130, 106, 116, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3312223048675822772, key: EventKey( [ 57, 88, 79, 213, 210, 3, 235, 223, 90, 248, 144, 163, 11, 70, 84, 27, 140, 22, 19, 241, 153, 32, 66, 33, ], ), }, sent_events: EventHandle { count: 5124104702681470950, key: EventKey( [ 14, 80, 196, 143, 221, 81, 183, 249, 190, 245, 247, 2, 65, 55, 230, 169, 195, 102, 100, 143, 72, 188, 28, 225, ], ), }, sequence_number: 5347571413120010874, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19c7a0b6feb6bd373d892eaf3e9569d8fdfe0ad732c8e3cc4c439a4dbb19dc38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00153c5da97928a61b9b3c20fafd563a72aa7e7d5870b7100b71b4f6369024c537fa16a64356220872bd43ab20ea561dddfb8f417a03c5645968e3b4f64b9efe73ae82ed8c842c7b1b55df9a9b6ccc016cc410ddff00131c70277c8f1d33d72b8de6c8449f68d0114fd5b186f96d3f878c98fa6ac78716dc9eb780bca99c77b186f26bfb9762f326725cb5d8d414a5eefcd520e2a5d1820486652567b8ab0cf2f18e123a923ec57345d0ba714d2fe79831c1268b8d7eb9c8264a3cd9cf2c12bcddf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088fb331d7aafa519a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 197, 218, 151, 146, 138, 97, 185, 179, 194, 15, 175, 213, 99, 167, 42, 167, 231, 213, 135, 11, 113, 0, 183, 27, 79, 99, 105, 2, 76, 83, 127, 161, 106, 100, 53, 98, 32, 135, 43, 212, 58, 178, 14, 165, 97, 221, 223, 184, 244, 23, 160, 60, 86, 69, 150, 142, 59, 79, 100, 185, 239, 231, 58, 232, 46, 216, 200, 66, 199, 177, 181, 93, 249, 169, 182, 204, 192, 22, 204, 65, 13, 223, 240, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 31c70277c8f1d33d72b8de6c8449f68d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 14fd5b186f96d3f878c98fa6ac78716d, }, ), received_events: EventHandle { count: 8919266680085474249, key: EventKey( [ 111, 38, 191, 185, 118, 47, 50, 103, 37, 203, 93, 141, 65, 74, 94, 239, 205, 82, 14, 42, 93, 24, 32, 72, ], ), }, sent_events: EventHandle { count: 3445166348782948966, key: EventKey( [ 225, 35, 169, 35, 236, 87, 52, 93, 11, 167, 20, 210, 254, 121, 131, 28, 18, 104, 184, 215, 235, 156, 130, 100, ], ), }, sequence_number: 16126593952682659235, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19f56411f70dd9ffd1ca3ad3166244fdb5e173fcbc1020db26a07102b971b295): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997012aa35fd5e59ee8ea727d89be2f02e803bb9c59aec95df2cf8ebef182e593c4d12f282ac8ca381a1d4c0120012d021a2df4d903686564926cadc8c33b01ded9b34bbc1b41497f5b34ed05b8df40fdc5f2bf660ff435188c733b815a16073406cf639862989050fb37e5b6cae73417d2a753fdcd5dc41018ffc9cfd997e87c78888d4845ade091ae71f47235b53f9afc22dffe28fc06fd4f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708746d7954031ab6b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 163, 95, 213, 229, 158, 232, 234, 114, 125, 137, 190, 47, 2, 232, 3, 187, 156, 89, 174, 201, 93, 242, 207, 142, 190, 241, 130, 229, 147, 196, 209, 47, 40, 42, 200, 202, 56, 26, 29, 76, 1, 32, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d021a2df4d903686564926cadc8c33b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ded9b34bbc1b41497f5b34ed05b8df40, }, ), received_events: EventHandle { count: 3887749312309020157, key: EventKey( [ 140, 115, 59, 129, 90, 22, 7, 52, 6, 207, 99, 152, 98, 152, 144, 80, 251, 55, 229, 182, 202, 231, 52, 23, ], ), }, sent_events: EventHandle { count: 1208193739341932498, key: EventKey( [ 255, 201, 207, 217, 151, 232, 124, 120, 136, 141, 72, 69, 173, 224, 145, 174, 113, 244, 114, 53, 181, 63, 154, 252, ], ), }, sequence_number: 5763770778193420066, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1b544a0f55022cfb7a7bf325f11a819f1233da1aa974b79818b140bf316f3be7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f22e9f57f41afed998a728f12b8b0d0c527584312ed04e1c9a618d1fc5fcfae18869eb99b7e2b667eb5b9958df0c6a478ba66197e8438565902038913f205a8eefc377a16de825205717c9ea3be03c20cd6151c8de38f4057a9d77447d791df0001c5bd7b0a19e7e79b30ee2b6d40ad2446dc654385af8b2470185d86e1edb81402b0f8632c62215489fdbcf0bc3bf98c38b774f0ef4c0c85ac6518a721f84fef2632a8963e22443d7893d3ad18af7faf246fa4936249ced76f3d632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080caaf2f823542de3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 233, 245, 127, 65, 175, 237, 153, 138, 114, 143, 18, 184, 176, 208, 197, 39, 88, 67, 18, 237, 4, 225, 201, 166, 24, 209, 252, 95, 207, 174, 24, 134, 158, 185, 155, 126, 43, 102, 126, 181, 185, 149, 141, 240, 198, 164, 120, 186, 102, 25, 126, 132, 56, 86, 89, 2, 3, 137, 19, 242, 5, 168, 238, 252, 55, 122, 22, 222, 130, 82, 5, 113, 124, 158, 163, 190, 3, 194, 12, 214, 21, 28, 141, 227, 143, 64, 87, 169, 215, 116, 71, 215, 145, 223, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c5bd7b0a19e7e79b30ee2b6d40ad2446, }, ), received_events: EventHandle { count: 8080737217380836828, key: EventKey( [ 93, 134, 225, 237, 184, 20, 2, 176, 248, 99, 44, 98, 33, 84, 137, 253, 188, 240, 188, 59, 249, 140, 56, 183, ], ), }, sent_events: EventHandle { count: 7326376981701849204, key: EventKey( [ 167, 33, 248, 79, 239, 38, 50, 168, 150, 62, 34, 68, 61, 120, 147, 211, 173, 24, 175, 127, 175, 36, 111, 164, ], ), }, sequence_number: 7150994756003783315, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1bc7fea3cad0db5dd340f9deb8162d5d71e04a62ae9b37a25541f5a807aee66a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125a1af3973d652581eb4fb59e0a5dba71b79c19d5ee75daba1a1a014b7ede82d3f3ca5505c9a000153b73738dc483b9f8a59f145a09f5723ed651d40f5d9fd41184d5082e8375109e51801922e3978845562d16a4a3817101d257713e95ddabd721817260c1a95aeea1cf587f64772d293e416b1d5531602c8c891196c8cd000e2ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089606855747c88a57 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 175, 57, 115, 214, 82, 88, 30, 180, 251, 89, 224, 165, 219, 167, 27, 121, 193, 157, 94, 231, 93, 171, 161, 161, 160, 20, 183, 237, 232, 45, 63, 60, 165, 80, 92, 154, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 53b73738dc483b9f8a59f145a09f5723, }, ), received_events: EventHandle { count: 4755196428938995181, key: EventKey( [ 77, 80, 130, 232, 55, 81, 9, 229, 24, 1, 146, 46, 57, 120, 132, 85, 98, 209, 106, 74, 56, 23, 16, 29, ], ), }, sent_events: EventHandle { count: 8268004587799279397, key: EventKey( [ 23, 38, 12, 26, 149, 174, 234, 28, 245, 135, 246, 71, 114, 210, 147, 228, 22, 177, 213, 83, 22, 2, 200, 200, ], ), }, sequence_number: 18438300720117324177, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1cb761ca66bf284defd6930ada5b016fa822530c37bda84ce285e08c3f67aa30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d09b9566e0f0d8b8b1361ab98646927fb9ba0407fb07aaadc4c4aebcd762815cd9607f6d6c2f3774cd6927d991a01829c9e399ce23abd2b03df8e4b3ef22e009b55cbe25eba07381840396e72ba51d2187fe9fec9bb21b32d8adefd1ce084c4e61168d9d4a23bb25a189544b7983ed2486f1d89710f35f471ac5ee1068d0465146bdb244b19e1c2ee6b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70849fa8893b48b968a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 185, 86, 110, 15, 13, 139, 139, 19, 97, 171, 152, 100, 105, 39, 251, 155, 160, 64, 127, 176, 122, 170, 220, 76, 74, 235, 205, 118, 40, 21, 205, 150, 7, 246, 214, 194, 243, 119, 76, 214, 146, 125, 153, 26, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 829c9e399ce23abd2b03df8e4b3ef22e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4037400507655607707, key: EventKey( [ 64, 57, 110, 114, 186, 81, 210, 24, 127, 233, 254, 201, 187, 33, 179, 45, 138, 222, 253, 28, 224, 132, 196, 230, ], ), }, sent_events: EventHandle { count: 6535351579809769489, key: EventKey( [ 149, 68, 183, 152, 62, 210, 72, 111, 29, 137, 113, 15, 53, 244, 113, 172, 94, 225, 6, 141, 4, 101, 20, 107, ], ), }, sequence_number: 7777367878563210459, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1d41584d5c8b922276c108aad703b7e9d39cd0a7884b00d764194a96ad3ec7f6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830136e6583237b078857f487f2601bfd8b2924303ae26b56fa0bca2d8f636be133d7af9b74384ad4275545495e3356eb4061f54fcc5a1936600002e0dc59cf576a151187334aaf4e031db6f4ff760029d670ad37b1e22330bfdd62e0071bc4a4b02a369180d35fb204aaa1f681d0d5e1f21faec299501836efd5f087d01454c972786bf2c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b5b9c9d86e948b45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 88, 50, 55, 176, 120, 133, 127, 72, 127, 38, 1, 191, 216, 178, 146, 67, 3, 174, 38, 181, 111, 160, 188, 162, 216, 246, 54, 190, 19, 61, 122, 249, 183, 67, 132, 173, 66, 117, 84, 84, 149, 227, 53, 110, 180, 6, 31, 84, 252, 197, 161, 147, 102, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5882113385591803182, key: EventKey( [ 115, 52, 170, 244, 224, 49, 219, 111, 79, 247, 96, 2, 157, 103, 10, 211, 123, 30, 34, 51, 11, 253, 214, 46, ], ), }, sent_events: EventHandle { count: 7611930317585936640, key: EventKey( [ 13, 53, 251, 32, 74, 170, 31, 104, 29, 13, 94, 31, 33, 250, 236, 41, 149, 1, 131, 110, 253, 95, 8, 125, ], ), }, sequence_number: 3224443362820769025, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1d57ecfb7e010ea86261f0c047828086f9b7cf4c9c9fbae9b23aa24bfbb0b3bb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930126913b8c78392a26cf9f538955706006c6d3864705837a13ba0ac398f90a44fbb67d8a70f6c6b301be737fcc5bf978d421042dac87fc701b01403e98f34bc0b2dc6a5bf794beb307ddb603fa948590ed64183075c610e01598e28b9c8e399fc8059b86aba4d03be334990779fbd25facc21918d51a56494103149388a0f158f783d8585cd981ddd0223d7bed66000517958f242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708003559f9bbff8974 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 145, 59, 140, 120, 57, 42, 38, 207, 159, 83, 137, 85, 112, 96, 6, 198, 211, 134, 71, 5, 131, 122, 19, 186, 10, 195, 152, 249, 10, 68, 251, 182, 125, 138, 112, 246, 198, 179, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: be737fcc5bf978d421042dac87fc701b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 403e98f34bc0b2dc6a5bf794beb307dd, }, ), received_events: EventHandle { count: 7272627876677682102, key: EventKey( [ 48, 117, 198, 16, 224, 21, 152, 226, 139, 156, 142, 57, 159, 200, 5, 155, 134, 171, 164, 208, 59, 227, 52, 153, ], ), }, sent_events: EventHandle { count: 1856235523991632135, key: EventKey( [ 213, 26, 86, 73, 65, 3, 20, 147, 136, 160, 241, 88, 247, 131, 216, 88, 92, 217, 129, 221, 208, 34, 61, 123, ], ), }, sequence_number: 2634488233135728365, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1e73405f7f5caaf731d6308eac46d7794ae3a1a0890c2289d3b5ef7905358b75): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f9fcc48f9df782394483a957aec8de3000197e3727886bb769f68475595c8f1f7b05fda630cce5f6e0a182e94f392024157926f435553fee0fefea2b95c2f0da40eb46fbcad84875e7077189f47e5ae964e028dacd2c779a8c2a8b1509faef7bec2713752f23e7fe6be437d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b310ce76f24b06e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 204, 72, 249, 223, 120, 35, 148, 72, 58, 149, 122, 236, 141, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 97e3727886bb769f68475595c8f1f7b0, }, ), received_events: EventHandle { count: 751643526393223775, key: EventKey( [ 46, 148, 243, 146, 2, 65, 87, 146, 111, 67, 85, 83, 254, 224, 254, 254, 162, 185, 92, 47, 13, 164, 14, 180, ], ), }, sent_events: EventHandle { count: 8606482824044592239, key: EventKey( [ 159, 71, 229, 174, 150, 78, 2, 141, 172, 210, 199, 121, 168, 194, 168, 177, 80, 159, 174, 247, 190, 194, 113, 55, ], ), }, sequence_number: 9026267975367193170, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20818cb702566881511d2e89b79644039602db6a8b276f1ec7fab96662e932a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e118d779e5d49683cc036876de21303a0363c01f54eb2280c4c2b6719d271db279da71f005bba71ce93ee48101884419dec32a2e38ab4681c9c0425481b41ce2b5efa40c0188be0e75e8623e41c18d1c15e127597ea708fe790d56629dd1c90ee915d4d80bcfbfe79b14f80c4a1152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70809593205a4255d4f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 119, 158, 93, 73, 104, 60, 192, 54, 135, 109, 226, 19, 3, 160, 54, 60, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f54eb2280c4c2b6719d271db279da71f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1173450021521177179, key: EventKey( [ 132, 65, 157, 236, 50, 162, 227, 138, 180, 104, 28, 156, 4, 37, 72, 27, 65, 206, 43, 94, 250, 64, 192, 24, ], ), }, sent_events: EventHandle { count: 2081827987776856203, key: EventKey( [ 209, 193, 94, 18, 117, 151, 234, 112, 143, 231, 144, 213, 102, 41, 221, 28, 144, 238, 145, 93, 77, 128, 188, 251, ], ), }, sequence_number: 1558743001418791422, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20e37f72109cf5329ab2171fa8d69d612561299d05c20ca011bcc233234ecf6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810114186f381b0a042d493821ba4e0253021ad2706e340125fbe333f38ea4a0a072e5740b4a390301dd532743f7a30bb46e90bb5c587d9e6a8beba50249315540183e5e07c793b5ac5f56b1fb39c580fb233a7978682f3c8dea476d4a5761cc1e1e18ed097d555a5814591074d048f406e26e9fedb8b4eaeb6446366afa83895eacde2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083714fa773a570a16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 24, 111, 56, 27, 10, 4, 45, 73, 56, 33, 186, 78, 2, 83, 2, 26, 210, 112, 110, 52, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 25fbe333f38ea4a0a072e5740b4a3903, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: dd532743f7a30bb46e90bb5c587d9e6a, }, ), received_events: EventHandle { count: 4635665581094595467, key: EventKey( [ 62, 94, 7, 199, 147, 181, 172, 95, 86, 177, 251, 57, 197, 128, 251, 35, 58, 121, 120, 104, 47, 60, 141, 234, ], ), }, sent_events: EventHandle { count: 2170396788887547207, key: EventKey( [ 237, 9, 125, 85, 90, 88, 20, 89, 16, 116, 208, 72, 244, 6, 226, 110, 159, 237, 184, 180, 234, 235, 100, 70, ], ), }, sequence_number: 16045303517131991606, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(22ee61bb113d45b0b433ce392749fc32f4e51a7a2bc0f113ce3e1220b26cf758): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40147c64501c6359c539eaab8fab019cff86fa47cb9c71868e78ebc87f307f911321d93caaad37788f6c29496cdadbab7af415dd4276d6c8479470a733d0cf319d26361bab3c6a60a170001373db2e5ae3a744b6c8605698c67f81f85e40e5b7f29053d18afd94c107dfebe27e12bbd25867fa255384769024131ec30e4cbabbef8ef3f6718f3478e7fe0802ca73c98ad078339734a8f55138db6f85df843ce45f518cf30952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be9d7aa1ddbebcaa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 69, 1, 198, 53, 156, 83, 158, 170, 184, 250, 176, 25, 207, 248, 111, 164, 124, 185, 199, 24, 104, 231, 142, 188, 135, 243, 7, 249, 17, 50, 29, 147, 202, 170, 211, 119, 136, 246, 194, 148, 150, 205, 173, 186, 183, 175, 65, 93, 212, 39, 109, 108, 132, 121, 71, 10, 115, 61, 12, 243, 25, 210, 99, 97, 186, 179, 198, 166, 10, 23, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 373db2e5ae3a744b6c8605698c67f81f, }, ), received_events: EventHandle { count: 4396966238162445445, key: EventKey( [ 175, 217, 76, 16, 125, 254, 190, 39, 225, 43, 189, 37, 134, 127, 162, 85, 56, 71, 105, 2, 65, 49, 236, 48, ], ), }, sent_events: EventHandle { count: 7439928961069206500, key: EventKey( [ 243, 71, 142, 127, 224, 128, 44, 167, 60, 152, 173, 7, 131, 57, 115, 74, 143, 85, 19, 141, 182, 248, 93, 248, ], ), }, sequence_number: 10750320016634531395, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2406973dc054d7d0786cecfb18525a5b55fbd3dbf7d38c3d33f62c3b72cd7055): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b601494586c3389a9cefdea1d74f9ec81a6239d5c64da4368da18f3b08c191d72b1787b53b8ee5cdb4ba9acbecc11069bd26c5ee3640a8a21f46b1c6fd7def49c475819062702caec1eb9e4c019b67fe16960cb67a8284fd053a59c4e401c259c9dd1bc9755fff20afd0f27f4961867471629a9e574d18c358a5b50f27c76cbcec0f0dd2405ea55a45f06842444c83250673f5b23c452218ccf71c6aceb9f3f9bd1270076b211408fa775a3954e0ea779cee44e605d0a8a32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085266736946c013c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 134, 195, 56, 154, 156, 239, 222, 161, 215, 79, 158, 200, 26, 98, 57, 213, 198, 77, 164, 54, 141, 161, 143, 59, 8, 193, 145, 215, 43, 23, 135, 181, 59, 142, 229, 205, 180, 186, 154, 203, 236, 193, 16, 105, 189, 38, 197, 238, 54, 64, 168, 162, 31, 70, 177, 198, 253, 125, 239, 73, 196, 117, 129, 144, 98, 112, 44, 174, 193, 235, 158, 76, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9b67fe16960cb67a8284fd053a59c4e4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c259c9dd1bc9755fff20afd0f27f4961, }, ), received_events: EventHandle { count: 5573097449808032902, key: EventKey( [ 195, 88, 165, 181, 15, 39, 199, 108, 188, 236, 15, 13, 210, 64, 94, 165, 90, 69, 240, 104, 66, 68, 76, 131, ], ), }, sent_events: EventHandle { count: 2469446710002386469, key: EventKey( [ 204, 247, 28, 106, 206, 185, 243, 249, 189, 18, 112, 7, 107, 33, 20, 8, 250, 119, 90, 57, 84, 224, 234, 119, ], ), }, sequence_number: 11792904348026334876, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2429a02a0e2251723d1bd76455eba60021fa50b5aa7d137b5cba808b899093a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810134224ef811c22e799a40c62e3cc12a5d2bef38d3122755c9e72c0f81af4f9f51b101307d097e9a4d4b127b7d52775bc49f73d4e1e30000240e7007661934051833191508832a2321b513c3850479506d9b5a5c120e334d562805c78adbe92e11185304ec06529ea014d7336535de33d23263475d20d4cdd81680322335179c30012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70874152c4a6b543997 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 248, 17, 194, 46, 121, 154, 64, 198, 46, 60, 193, 42, 93, 43, 239, 56, 211, 18, 39, 85, 201, 231, 44, 15, 129, 175, 79, 159, 81, 177, 1, 48, 125, 9, 126, 154, 77, 75, 18, 123, 125, 82, 119, 91, 196, 159, 115, 212, 225, 227, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 374952594980736548, key: EventKey( [ 51, 25, 21, 8, 131, 42, 35, 33, 181, 19, 195, 133, 4, 121, 80, 109, 155, 90, 92, 18, 14, 51, 77, 86, ], ), }, sent_events: EventHandle { count: 1238184076708873512, key: EventKey( [ 83, 4, 236, 6, 82, 158, 160, 20, 215, 51, 101, 53, 222, 51, 210, 50, 99, 71, 93, 32, 212, 205, 216, 22, ], ), }, sequence_number: 85740016409719424, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2489a20133c6c0da643111bea9e8ac165ffd8598a0e607d486535d124faaf181): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c9015c9f39ef16134bcd20f721e56a767509ad7d30ec795e84a0c4e368c6318c0b3395c18da9ccfc775bc64989a4de038e371b22ed2e4ea4b8c42fe54c7e51fe78a78728d8bb5e6ea371c42f15bce1e4cabe12a960bc04bdec513a175e68800105497a4fc71424021392d8528c0a0b1701b07e08f24934f829190c5bc1428fd4375ef75fc8ea0ad7661805372b2a163ff683d588ca97c961e66c2c8a6dee156caaebd14290edd5578b1818a6a4a88b9f9e45b6c367d0f59c7c467abeb848e2749705e8c348b0fad42e29862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c8b8dfa943a986df Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 57, 239, 22, 19, 75, 205, 32, 247, 33, 229, 106, 118, 117, 9, 173, 125, 48, 236, 121, 94, 132, 160, 196, 227, 104, 198, 49, 140, 11, 51, 149, 193, 141, 169, 204, 252, 119, 91, 198, 73, 137, 164, 222, 3, 142, 55, 27, 34, 237, 46, 78, 164, 184, 196, 47, 229, 76, 126, 81, 254, 120, 167, 135, 40, 216, 187, 94, 110, 163, 113, 196, 47, 21, 188, 225, 228, 202, 190, 18, 169, 96, 188, 4, 189, 236, 81, 58, 23, 94, 104, 128, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 05497a4fc71424021392d8528c0a0b17, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b07e08f24934f829190c5bc1428fd437, }, ), received_events: EventHandle { count: 7410403715361797982, key: EventKey( [ 5, 55, 43, 42, 22, 63, 246, 131, 213, 136, 202, 151, 201, 97, 230, 108, 44, 138, 109, 238, 21, 108, 170, 235, ], ), }, sent_events: EventHandle { count: 1768603854998356689, key: EventKey( [ 166, 164, 168, 139, 159, 158, 69, 182, 195, 103, 208, 245, 156, 124, 70, 122, 190, 184, 72, 226, 116, 151, 5, 232, ], ), }, sequence_number: 9667309567401281731, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(25835a6e3241baab397337c386bcad8eeadeab9f60f7759e989f2fa72f5519b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c9015c11730f50b7a7c1f5fb07d963ad9a982078dd5837171a65ea3ef3a3fa09aa2e29746b4724d88f4ac93a02300c3a0823214d2b8048bc7020c1a88d06dbcdba0b5c460a0d30b6cd60d5bebfec394107ed9cf038326e993d11c9cee8a37b0140f0ff365c4c8acb90b5fe17d824298f010f177dd725868522f89eabf62cd9091719d90a4149ee247918cf732f9713f3be173b63ced7a07cb21876ffb1fde14b37164930ed849537e50d185422fa5f372f8d8a1fabf20dbe1996616aa0e638c630850b7dbd75e5c038186f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a14bcf2daabe512e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 17, 115, 15, 80, 183, 167, 193, 245, 251, 7, 217, 99, 173, 154, 152, 32, 120, 221, 88, 55, 23, 26, 101, 234, 62, 243, 163, 250, 9, 170, 46, 41, 116, 107, 71, 36, 216, 143, 74, 201, 58, 2, 48, 12, 58, 8, 35, 33, 77, 43, 128, 72, 188, 112, 32, 193, 168, 141, 6, 219, 205, 186, 11, 92, 70, 10, 13, 48, 182, 205, 96, 213, 190, 191, 236, 57, 65, 7, 237, 156, 240, 56, 50, 110, 153, 61, 17, 201, 206, 232, 163, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 40f0ff365c4c8acb90b5fe17d824298f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0f177dd725868522f89eabf62cd90917, }, ), received_events: EventHandle { count: 8729363976142117145, key: EventKey( [ 207, 115, 47, 151, 19, 243, 190, 23, 59, 99, 206, 215, 160, 124, 178, 24, 118, 255, 177, 253, 225, 75, 55, 22, ], ), }, sent_events: EventHandle { count: 1001267607479595081, key: EventKey( [ 84, 34, 250, 95, 55, 47, 141, 138, 31, 171, 242, 13, 190, 25, 150, 97, 106, 160, 230, 56, 198, 48, 133, 11, ], ), }, sequence_number: 8005210738785631613, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(27366ca769766168eb1eb4bde64e9e3a8b876f93f0eb5d5ee0550bfb4d8ca17d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9950128750a00c34e1f68cf413d39f13f68b40257d83f46391f2e181586a0644275097a6bffd2658bd316ad013dddca3692b8cd7ce00762d9edf1bbfb0175eec9a65a41871f541e61ed8fb5843176143ce9f7f26d16181805d89313a6c943377500db45c533257c78f5e0c659f6a5f63d83e60f6e9e09184062b25055ec372abb00f3ea267fb6642432a64977d3a110fc0134548e79a5e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ccc52dc00e8ceabd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 117, 10, 0, 195, 78, 31, 104, 207, 65, 61, 57, 241, 63, 104, 180, 2, 87, 216, 63, 70, 57, 31, 46, 24, 21, 134, 160, 100, 66, 117, 9, 122, 107, 255, 210, 101, 139, 211, 22, 173, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3dddca3692b8cd7ce00762d9edf1bbfb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 75eec9a65a41871f541e61ed8fb58431, }, ), received_events: EventHandle { count: 1616214987879748726, key: EventKey( [ 24, 5, 216, 147, 19, 166, 201, 67, 55, 117, 0, 219, 69, 197, 51, 37, 124, 120, 245, 224, 198, 89, 246, 165, ], ), }, sent_events: EventHandle { count: 693112407232560630, key: EventKey( [ 64, 98, 178, 80, 85, 236, 55, 42, 187, 0, 243, 234, 38, 127, 182, 100, 36, 50, 166, 73, 119, 211, 161, 16, ], ), }, sequence_number: 16547766058047767036, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ab5f0609dcc4adab47a3f2062e235b48614f701baa9d6587b2c4b7dd50e0de2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b013e4115fc35ae94caad076f22504184428fa015051ec63b7d3add9131dce719df23366521f88c83fa7c5038df3bd0408789b1f60f4f031a1f9c24fe89a4e17c00008fbff4d8c3bb555918b180d91ad1768465a18889b208944386705236e52b1d305f7889d6d8efcad27c182ac80bf00360d9bbfc614652f4f037977189f74a325ca933c9707ab0d8b444482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70829b78456edffc2b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 21, 252, 53, 174, 148, 202, 173, 7, 111, 34, 80, 65, 132, 66, 143, 160, 21, 5, 30, 198, 59, 125, 58, 221, 145, 49, 220, 231, 25, 223, 35, 54, 101, 33, 248, 140, 131, 250, 124, 80, 56, 223, 59, 208, 64, 135, 137, 177, 246, 15, 79, 3, 26, 31, 156, 36, 254, 137, 164, 225, 124, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6437257692228927375, key: EventKey( [ 177, 128, 217, 26, 209, 118, 132, 101, 161, 136, 137, 178, 8, 148, 67, 134, 112, 82, 54, 229, 43, 29, 48, 95, ], ), }, sent_events: EventHandle { count: 8994474537296234872, key: EventKey( [ 42, 200, 11, 240, 3, 96, 217, 187, 252, 97, 70, 82, 244, 240, 55, 151, 113, 137, 247, 74, 50, 92, 169, 51, ], ), }, sequence_number: 5207485911913885897, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2bae4b3cfb1cb526bc12db1dc7fa12e7d843504abb9508a5ccb2a6aa057a7520): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e704a28d56ed03c903593e5660db2a1669648c58285717cbde34b793ccf4419b130e7c634328b9ae549e4d4c327a3bc600425e177098d1d7ebe5bd563490e17cc6ef9acc2293d51caad4868c7cde997d6fd2d0691a6888f4a7587532d1ad401c5702cda4989a76b5d5b9182c47d3505018c1b2a7b288030573994ed188cfe0401e140e4dda33cf419187d8bdc93e7956cd4587950c1fa2f1defd571607875ec672911571b65bb960c0d18fac6cee7d294d6bde1b643d936317ec39217b2e37ab010e04a1ffa2a7ed86a7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082b036b1a017b938c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 74, 40, 213, 110, 208, 60, 144, 53, 147, 229, 102, 13, 178, 161, 102, 150, 72, 197, 130, 133, 113, 124, 189, 227, 75, 121, 60, 207, 68, 25, 177, 48, 231, 198, 52, 50, 139, 154, 229, 73, 228, 212, 195, 39, 163, 188, 96, 4, 37, 225, 119, 9, 141, 29, 126, 190, 91, 213, 99, 73, 14, 23, 204, 110, 249, 172, 194, 41, 61, 81, 202, 173, 72, 104, 199, 205, 233, 151, 214, 253, 45, 6, 145, 166, 136, 143, 74, 117, 135, 83, 45, 26, 212, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c5702cda4989a76b5d5b9182c47d3505, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c1b2a7b288030573994ed188cfe0401, }, ), received_events: EventHandle { count: 1870186419765657825, key: EventKey( [ 125, 139, 220, 147, 231, 149, 108, 212, 88, 121, 80, 193, 250, 47, 29, 239, 213, 113, 96, 120, 117, 236, 103, 41, ], ), }, sent_events: EventHandle { count: 940292153812932369, key: EventKey( [ 250, 198, 206, 231, 210, 148, 214, 189, 225, 182, 67, 217, 54, 49, 126, 195, 146, 23, 178, 227, 122, 176, 16, 224, ], ), }, sequence_number: 8893158450594979658, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2bf33fb928a1f9fac8bd9d621d79e3523c6650ef21c2c45f54397a10600b9912): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9be01619b04cd598c76b0727a75551882f63fd7cf096bea262acf457c43430216bc85efcffdc28c5c24a72f886363f9cc2b76a47f22893efeb803194f10e6d4b0284e4bcc80adb0e6644c688d7b357d259eef4a6a3e3c01127ead1ba1a42c0b31e52858140124ac8e4287a9ac40e3e525ead741ec57003770b4311b5e374f187acc1de03d3490eeb75a01e696923a98001dae867fb5378a0ceeb740f29a75271879b330a8e335bc8471bf1e2eab51b7db290499ccc4ec295d9d04a14143e81b182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881c5d868f55f45bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 4, 205, 89, 140, 118, 176, 114, 122, 117, 85, 24, 130, 246, 63, 215, 207, 9, 107, 234, 38, 42, 207, 69, 124, 67, 67, 2, 22, 188, 133, 239, 207, 253, 194, 140, 92, 36, 167, 47, 136, 99, 99, 249, 204, 43, 118, 164, 127, 34, 137, 62, 254, 184, 3, 25, 79, 16, 230, 212, 176, 40, 78, 75, 204, 128, 173, 176, 230, 100, 76, 104, 141, 123, 53, 125, 37, 158, 239, 74, 106, 62, 60, 1, 18, 126, 173, 27, 161, 164, 44, 11, 49, 229, 40, 88, 20, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24ac8e4287a9ac40e3e525ead741ec57, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5708134523606429751, key: EventKey( [ 122, 204, 29, 224, 61, 52, 144, 238, 183, 90, 1, 230, 150, 146, 58, 152, 0, 29, 174, 134, 127, 181, 55, 138, ], ), }, sent_events: EventHandle { count: 2843349105012895244, key: EventKey( [ 121, 179, 48, 168, 227, 53, 188, 132, 113, 191, 30, 46, 171, 81, 183, 219, 41, 4, 153, 204, 196, 236, 41, 93, ], ), }, sequence_number: 1737237456842982557, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ee6de291185c35121fe79edae054625d7f664a25bd6f6076749dad4a39404ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9771a387fc1b4d1dabe1e3887d4e2ff40dba59fefe82191f030cca79b01984784f3e8b1bf4c28912007179e812e000c69084aca334a0218eb2fcd2898dd20099d8367de3369c0719790007cdfe830232b13869066fc3f73188d5d75184bcd1fd53707f3349a14564c9be30cd8d037e1774087f151a59ea9e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c44ff661e66bbb39 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 127, 193, 180, 209, 218, 190, 30, 56, 135, 212, 226, 255, 64, 219, 165, 159, 239, 232, 33, 145, 240, 48, 204, 167, 155, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 984784f3e8b1bf4c28912007179e812e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 165001280270919948, key: EventKey( [ 235, 47, 205, 40, 152, 221, 32, 9, 157, 131, 103, 222, 51, 105, 192, 113, 151, 144, 0, 124, 223, 232, 48, 35, ], ), }, sent_events: EventHandle { count: 8304633755336053547, key: EventKey( [ 141, 93, 117, 24, 75, 205, 31, 213, 55, 7, 243, 52, 154, 20, 86, 76, 155, 227, 12, 216, 208, 55, 225, 119, ], ), }, sequence_number: 16548932738631173952, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32646b235a0b0fedb699a8c2e924b24ed1e7f061ff2239386d24d8e0a8489fd9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a909ccb08234dcd50dbff36ec32ad38bfd473f0618aea1fe77b0ab7a4c1bbe971508e482c3c1dd123ffa26aee628ff90b6d96b880f11927340c82bc59aeba207dfd374dd6faa9a4cb300d00001465665690dba049189b7feba322526c4fdf5d4b5bafbaf76a3376d0867076abbd57c5f47baa9bcd5118f428befe41693885463617766954a5ec0efc9bf4c6af7357fae994749bf60c402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c69c8f7defb3a352 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 156, 203, 8, 35, 77, 205, 80, 219, 255, 54, 236, 50, 173, 56, 191, 212, 115, 240, 97, 138, 234, 31, 231, 123, 10, 183, 164, 193, 187, 233, 113, 80, 142, 72, 44, 60, 29, 209, 35, 255, 162, 106, 238, 98, 143, 249, 11, 109, 150, 184, 128, 241, 25, 39, 52, 12, 130, 188, 89, 174, 186, 32, 125, 253, 55, 77, 214, 250, 169, 164, 203, 48, 13, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5305481774013768980, key: EventKey( [ 155, 127, 235, 163, 34, 82, 108, 79, 223, 93, 75, 91, 175, 186, 247, 106, 51, 118, 208, 134, 112, 118, 171, 189, ], ), }, sent_events: EventHandle { count: 5894538643824231767, key: EventKey( [ 244, 40, 190, 254, 65, 105, 56, 133, 70, 54, 23, 118, 105, 84, 165, 236, 14, 252, 155, 244, 198, 175, 115, 87, ], ), }, sequence_number: 4615334865684195834, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32badfa22335697679516926de125e4ee2e7f164edb96da146efc31a4c63b9cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580b6f74909d27b36c107845f700006c388cea38c0e815182bdf35d922679464ec9bb22dc83a6af0fc1d051388fe902bbcec0098510b1f5e184f414a613e5b5e255156bc647a8b615d8e3bb383b10a9b2c76e8375c3f1f79a22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a50b3b65cd55e18 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 111, 116, 144, 157, 39, 179, 108, 16, 120, 69, 247, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1578723020079118444, key: EventKey( [ 43, 223, 53, 217, 34, 103, 148, 100, 236, 155, 178, 45, 200, 58, 106, 240, 252, 29, 5, 19, 136, 254, 144, 43, ], ), }, sent_events: EventHandle { count: 6782152008913710268, key: EventKey( [ 79, 65, 74, 97, 62, 91, 94, 37, 81, 86, 188, 100, 122, 139, 97, 93, 142, 59, 179, 131, 177, 10, 155, 44, ], ), }, sequence_number: 11707423063316883574, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33767180ff169c4ddd2e797365da532988bc4cb3976019d67eee3f4ccaa1d6b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95609242cc0c52dfbf7f45b00004835aed4ed06ab4f182e6dfee7b0f81e86e008712cd6d378c5c97294ae31df6266a1ccb93054a0196f18c69e00b8b564a689562af2f96e85558d2860aee91713786f296693d3b9b421332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70882e9ec3cc7bfd3fd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 44, 192, 197, 45, 251, 247, 244, 91, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5740689768559031624, key: EventKey( [ 46, 109, 254, 231, 176, 248, 30, 134, 224, 8, 113, 44, 214, 211, 120, 197, 201, 114, 148, 174, 49, 223, 98, 102, ], ), }, sent_events: EventHandle { count: 8005606096082947233, key: EventKey( [ 198, 158, 0, 184, 181, 100, 166, 137, 86, 42, 242, 249, 110, 133, 85, 141, 40, 96, 174, 233, 23, 19, 120, 111, ], ), }, sequence_number: 3684424680377378345, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(353aa6e3dcb0b97f334fff8d127f4ee9fb6888d8cdfab30c6fc9618b23b2e984): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619fc68f461f5131ed2fca8eb141ccf7e777a0b7e254c7988dd1900004128a18701ce9b6718a10f704856849e062733663a47034c9160c5eec60e3f6d614bd942f51d293b6118c5dd5f1e9ec167d03e99e6a5bf078c6710896b02c5bd449153d79568e84931502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea3c6888e826d3c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 104, 244, 97, 245, 19, 30, 210, 252, 168, 235, 20, 28, 207, 126, 119, 122, 11, 126, 37, 76, 121, 136, 221, 25, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7465787313262504001, key: EventKey( [ 161, 15, 112, 72, 86, 132, 158, 6, 39, 51, 102, 58, 71, 3, 76, 145, 96, 197, 238, 198, 14, 63, 109, 97, ], ), }, sent_events: EventHandle { count: 7006238853950527819, key: EventKey( [ 197, 221, 95, 30, 158, 193, 103, 208, 62, 153, 230, 165, 191, 7, 140, 103, 16, 137, 107, 2, 197, 189, 68, 145, ], ), }, sequence_number: 5778481059428947795, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(37765ca6084246430fde0b3d93b35bcf88ea90eb09494256ff46863defb0fece): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9691c76ecd54b45e43f5ae80fcd3aa2473fc9d5ba931fb7326324a2c2a1cc000000364295fc21034c187a5e158096966eb39d0246fd5d288717c6f9bc32b652565761e0cb0b20ba094318d507c0b54a557f2b5d29588f5be2fb9c7d13f621fb78616c28fd7444f602db192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3d2c800aac89514 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 236, 213, 75, 69, 228, 63, 90, 232, 15, 205, 58, 162, 71, 63, 201, 213, 186, 147, 31, 183, 50, 99, 36, 162, 194, 161, 204, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5477258940532274688, key: EventKey( [ 122, 94, 21, 128, 150, 150, 110, 179, 157, 2, 70, 253, 93, 40, 135, 23, 198, 249, 188, 50, 182, 82, 86, 87, ], ), }, sent_events: EventHandle { count: 4830596722131198049, key: EventKey( [ 213, 7, 192, 181, 74, 85, 127, 43, 93, 41, 88, 143, 91, 226, 251, 156, 125, 19, 246, 33, 251, 120, 97, 108, ], ), }, sequence_number: 1863086127581560104, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3799436d271edc65b67c1f6446eaf63d11209651b20f865f5b16cec4304453cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a768d21f2f16fc93b0a577cd10b88cbf0186844a1c963c560a8d7428ffbeae5d25c7517bda1fbea805f8fa7c5807c30ee8b769083a50133b235960001a7ba9c2494db60628d6b4edb49497c028b83a21f930c3f2b187ea82551ed4333d4505e93b09ed95a0a69e83e11bfac814baa8adcffe35be32c18f0e0ef2b2b3c64704fc2387d44fa3102f254c4877f983f586a1698ee49202f342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d56bef720ac64a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 141, 33, 242, 241, 111, 201, 59, 10, 87, 124, 209, 11, 136, 203, 240, 24, 104, 68, 161, 201, 99, 197, 96, 168, 215, 66, 143, 251, 234, 229, 210, 92, 117, 23, 189, 161, 251, 234, 128, 95, 143, 167, 197, 128, 124, 48, 238, 139, 118, 144, 131, 165, 1, 51, 178, 53, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a7ba9c2494db60628d6b4edb49497c02, }, ), received_events: EventHandle { count: 3116223293194142603, key: EventKey( [ 126, 168, 37, 81, 237, 67, 51, 212, 80, 94, 147, 176, 158, 217, 90, 10, 105, 232, 62, 17, 191, 172, 129, 75, ], ), }, sent_events: EventHandle { count: 3234529992190495402, key: EventKey( [ 240, 224, 239, 43, 43, 60, 100, 112, 79, 194, 56, 125, 68, 250, 49, 2, 242, 84, 196, 135, 127, 152, 63, 88, ], ), }, sequence_number: 3760259715785299562, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(383bf23c3f33a862bfa96ed7339fc81bb6543732a5556c701cb4bb6b37f21122): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c0015310f29adae1b9287655e4198bde304b5828f6538b343113d559b89ddd3cbe685fb740d0b8d5c106d881ece9a959be7722d16bc23cae4b22bac1f1503bb8a773ae4cf1b4599f82230f10267a57424a98e4456d96019349c02de8dd57fa2d979b8a4a580b480171bca3d28fd2b1939aad4e139043e7f97e49f3786d40d30b187e822943c0c53d1f02fd4bd1b3786a770fc3918ad82635eb6b19660a3b31aa101854d6b53c9cf05da021eb3955237ee82b99d32a430d2d5dfd72fe29886028f6d12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c61fafd7fed9baef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 16, 242, 154, 218, 225, 185, 40, 118, 85, 228, 25, 139, 222, 48, 75, 88, 40, 246, 83, 139, 52, 49, 19, 213, 89, 184, 157, 221, 60, 190, 104, 95, 183, 64, 208, 184, 213, 193, 6, 216, 129, 236, 233, 169, 89, 190, 119, 34, 209, 107, 194, 60, 174, 75, 34, 186, 193, 241, 80, 59, 184, 167, 115, 174, 76, 241, 180, 89, 159, 130, 35, 15, 16, 38, 122, 87, 66, 74, 152, 228, 69, 109, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9349c02de8dd57fa2d979b8a4a580b48, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71bca3d28fd2b1939aad4e139043e7f9, }, ), received_events: EventHandle { count: 852095593427978622, key: EventKey( [ 126, 130, 41, 67, 192, 197, 61, 31, 2, 253, 75, 209, 179, 120, 106, 119, 15, 195, 145, 138, 216, 38, 53, 235, ], ), }, sent_events: EventHandle { count: 1200826380294953323, key: EventKey( [ 84, 214, 181, 60, 156, 240, 93, 160, 33, 235, 57, 85, 35, 126, 232, 43, 153, 211, 42, 67, 13, 45, 93, 253, ], ), }, sequence_number: 15129324393264184946, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3a489d561fb29e96a28ff312ec2da68d9e48e63e31d2f0cbbb455f47f55d05d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9631655e4fd141bd3671fbfba760bfd3811cf7b2bbd7782e700009397e7b5838c891c186592b227cadee786a947fa7fa5d7121a245cc9dafef99a442716f70d11e5f65a186847562878e2d49a7a5fec90cba0d9961a39cf4190f832d6506946ce67a752ad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f08a8895fc74147 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 85, 228, 253, 20, 27, 211, 103, 31, 191, 186, 118, 11, 253, 56, 17, 207, 123, 43, 189, 119, 130, 231, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2056329202191800211, key: EventKey( [ 101, 146, 178, 39, 202, 222, 231, 134, 169, 71, 250, 127, 165, 215, 18, 26, 36, 92, 201, 218, 254, 249, 154, 68, ], ), }, sent_events: EventHandle { count: 6554678169095837223, key: EventKey( [ 104, 71, 86, 40, 120, 226, 212, 154, 122, 95, 236, 144, 203, 160, 217, 150, 26, 57, 207, 65, 144, 248, 50, 214, ], ), }, sequence_number: 12489228780935997776, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3a54771acd7f645b7e11cba9436a806326c882a080da4e6072f6912e887ec95b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c955080bfd527b4ddbf46500009b96f7332092797b189a6cd0cff00db268323e3dd23e26061e2218b8a4f29eb8941f502e7cf515735818706d3e48ff94fd184206a4482650f4fe425528a888320330e0d2175419fd6d0a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f9c599216d866b8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 253, 82, 123, 77, 219, 244, 101, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8897303205855598235, key: EventKey( [ 154, 108, 208, 207, 240, 13, 178, 104, 50, 62, 61, 210, 62, 38, 6, 30, 34, 24, 184, 164, 242, 158, 184, 148, ], ), }, sent_events: EventHandle { count: 6373462041753964575, key: EventKey( [ 112, 109, 62, 72, 255, 148, 253, 24, 66, 6, 164, 72, 38, 80, 244, 254, 66, 85, 40, 168, 136, 50, 3, 48, ], ), }, sequence_number: 751534998067598048, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c9a50c98124232f2c879eaf987f989377a74787c249d09ae87609fe35bc78c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f12c08aab5c2b875765fa036cab76e4c8ec316b01e7d6ca20388b3e68be2d98068201fd2300324ca1fff910bd5a18e19270e3d09db8d044e12f5fb401b1c81a93f08174f213f409f0900b2c61892018b84018c5d0f2503187455fc149de7af2e3954c52130fdda40ac4ff058cee2b502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080c00875cf9de4c36 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 138, 171, 92, 43, 135, 87, 101, 250, 3, 108, 171, 118, 228, 200, 236, 49, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7d6ca20388b3e68be2d98068201fd23, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6538400899933490226, key: EventKey( [ 225, 146, 112, 227, 208, 157, 184, 208, 68, 225, 47, 95, 180, 1, 177, 200, 26, 147, 240, 129, 116, 242, 19, 244, ], ), }, sent_events: EventHandle { count: 2344511922823557129, key: EventKey( [ 184, 64, 24, 197, 208, 242, 80, 49, 135, 69, 95, 193, 73, 222, 122, 242, 227, 149, 76, 82, 19, 15, 221, 164, ], ), }, sequence_number: 5776973232196273162, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3d1ff435e15a05c5d0b5fed877191e794386ee5cd56447e7666b1bf037cdd2df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001235f674f19ff43e9879439ab649e58e773cea690f69ec1947992a602b7b7fbc609ab1092015c4da2745fe3922a44f14e600b8f643a01c0612b5e7260547a5673956e01d734121023697bdb669e2c18fea84c69a71eb276a333d4b3e56d3dcaa59a82622833314fef667e2fcc81391318adf196aab6b368a623c60b194c2e3ade35da1fc5eb3d1730010cb069bbd3aad32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbeee9cfc4ffa581 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 103, 79, 25, 255, 67, 233, 135, 148, 57, 171, 100, 158, 88, 231, 115, 206, 166, 144, 246, 158, 193, 148, 121, 146, 166, 2, 183, 183, 251, 198, 9, 171, 16, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5c4da2745fe3922a44f14e600b8f643a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0612b5e7260547a5673956e01d73412, }, ), received_events: EventHandle { count: 3215120276843471632, key: EventKey( [ 254, 168, 76, 105, 167, 30, 178, 118, 163, 51, 212, 179, 229, 109, 61, 202, 165, 154, 130, 98, 40, 51, 49, 79, ], ), }, sent_events: EventHandle { count: 1385281074363262703, key: EventKey( [ 173, 241, 150, 170, 182, 179, 104, 166, 35, 198, 11, 25, 76, 46, 58, 222, 53, 218, 31, 197, 235, 61, 23, 48, ], ), }, sequence_number: 15252235889929096193, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3d5ce37814fd810aa1d3fdc6d8dc67968200c56d337484cb634790a073317c53): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e091cf615df61cfc62deb59d783440001b2a381b5daae9ce89167db1737c8977357c34127652c002e189806a97d8b1eea29f41659e1e311f38b6848850f3925ba12d0343c6d78f33f4b18e15b30eef94a51eaf67ed29c95d3e13bfe42723ecdaf3c974944cfa711a4f0312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084a5d6ca45effdfc1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 28, 246, 21, 223, 97, 207, 198, 45, 235, 89, 215, 131, 68, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2a381b5daae9ce89167db1737c89773, }, ), received_events: EventHandle { count: 3314698138706625367, key: EventKey( [ 152, 6, 169, 125, 139, 30, 234, 41, 244, 22, 89, 225, 227, 17, 243, 139, 104, 72, 133, 15, 57, 37, 186, 18, ], ), }, sent_events: EventHandle { count: 5422320174931653840, key: EventKey( [ 225, 91, 48, 238, 249, 74, 81, 234, 246, 126, 210, 156, 149, 211, 225, 59, 254, 66, 114, 62, 205, 175, 60, 151, ], ), }, sequence_number: 3598556498005804105, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42db1bc14d2d81f6d62e7d5389e7f020f8a406149cb31e5551cb76f623c76366): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015a37c7d2a82931721e61c096a89974ca907c06ec62d0abfdc6b6145e0556badccc05881ea51705222806958d2c70c7c4df29a31640bda59fe821e704b1bce5e7032b9f205ecb25fb2b43c4d136627aa8a72ea69f42680d69edb765000068399210023ffe011829b1364d6860c8aca73b37a20d3c0d518588d6dd2f4572049903ee5fd5cb4f111877d353f46a23c9b8e58b3fe8a5784ff629e7587bc081968a8fb947cb2ad538b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822f7cec73bc89fd1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 199, 210, 168, 41, 49, 114, 30, 97, 192, 150, 168, 153, 116, 202, 144, 124, 6, 236, 98, 208, 171, 253, 198, 182, 20, 94, 5, 86, 186, 220, 204, 5, 136, 30, 165, 23, 5, 34, 40, 6, 149, 141, 44, 112, 199, 196, 223, 41, 163, 22, 64, 189, 165, 159, 232, 33, 231, 4, 177, 188, 229, 231, 3, 43, 159, 32, 94, 203, 37, 251, 43, 67, 196, 209, 54, 98, 122, 168, 167, 46, 166, 159, 66, 104, 13, 105, 237, 183, 101, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 143621516222937448, key: EventKey( [ 41, 177, 54, 77, 104, 96, 200, 172, 167, 59, 55, 162, 13, 60, 13, 81, 133, 136, 214, 221, 47, 69, 114, 4, ], ), }, sent_events: EventHandle { count: 1247439739102823321, key: EventKey( [ 119, 211, 83, 244, 106, 35, 201, 184, 229, 139, 63, 232, 165, 120, 79, 246, 41, 231, 88, 123, 192, 129, 150, 138, ], ), }, sequence_number: 12914306311260715407, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43c12749b5778c6748aa585e8a0f9e4976c0bab68455997767386fb8acbc4ba1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8013bf8a9f5c0ebd0872edc90c936279b081f20a84a1823d02731dd6a741fa39cda4eb496b7e6c8011d8b70daf506e3ff79f9ff1b2aa1bbb8fa3aa1e2ae0120e20d3ce87f5e3954690e5c1b227a57016f627def6be6cd52068e1ea2853e81d9f03103e5fddca44518ec96f04ce9171ee1f6a3c6baaf96c970d7eba5e6f7316bc457ce1f51fa1c042e189b54d0def99a38b5a03f4c5bceec50336533f1d78b15cadb7d6739911337d78c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890573f03b75721bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 248, 169, 245, 192, 235, 208, 135, 46, 220, 144, 201, 54, 39, 155, 8, 31, 32, 168, 74, 24, 35, 208, 39, 49, 221, 106, 116, 31, 163, 156, 218, 78, 180, 150, 183, 230, 200, 1, 29, 139, 112, 218, 245, 6, 227, 255, 121, 249, 255, 27, 42, 161, 187, 184, 250, 58, 161, 226, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 20e20d3ce87f5e3954690e5c1b227a57, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f627def6be6cd52068e1ea2853e81d9, }, ), received_events: EventHandle { count: 5018378867824603632, key: EventKey( [ 236, 150, 240, 76, 233, 23, 30, 225, 246, 163, 198, 186, 175, 150, 201, 112, 215, 235, 165, 230, 247, 49, 107, 196, ], ), }, sent_events: EventHandle { count: 3315807087079968343, key: EventKey( [ 155, 84, 208, 222, 249, 154, 56, 181, 160, 63, 76, 91, 206, 236, 80, 51, 101, 51, 241, 215, 139, 21, 202, 219, ], ), }, sequence_number: 10148640842483066749, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43ce9a90b56e8fcc3bb9ab5e8e475de9291b1d352c0d043c504dbcb3802935a4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eaf6dd27796323047aafd753978dfe327828f776cadf4b353aa1486615d697d7a8b3997f3f022337ca567afe8293d000197d59d6f684d16e12be0c0cc74ff24ba81d9e433d3f3d33018b34fdf00b64e392ae81351eae9117c55362f0e54afc5281ba91a2af9fd5cd04f1852adb28df7178a9deb8a5eb707ac67dea3eb0d2e569a9e6d050d7b157b4b28b52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083fa215665f056781 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 109, 210, 119, 150, 50, 48, 71, 170, 253, 117, 57, 120, 223, 227, 39, 130, 143, 119, 108, 173, 244, 179, 83, 170, 20, 134, 97, 93, 105, 125, 122, 139, 57, 151, 243, 240, 34, 51, 124, 165, 103, 175, 232, 41, 61, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 97d59d6f684d16e12be0c0cc74ff24ba, }, ), received_events: EventHandle { count: 3518423822340774273, key: EventKey( [ 179, 79, 223, 0, 182, 78, 57, 42, 232, 19, 81, 234, 233, 17, 124, 85, 54, 47, 14, 84, 175, 197, 40, 27, ], ), }, sent_events: EventHandle { count: 5751198970028890793, key: EventKey( [ 82, 173, 178, 141, 247, 23, 138, 157, 235, 138, 94, 183, 7, 172, 103, 222, 163, 235, 13, 46, 86, 154, 158, 109, ], ), }, sequence_number: 13053766511946829061, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43dc71332037a56f45e82aa9aacb04513f7ff56e0ec461fac40b8c467282b3c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123e4c617c1431f34efe55461860eaa307524f69c8fb68666a99985fb2b5857a4170c4b2a0193110b4c99215daa03caabb3260ba5c60117ed559a4ceaa016eba107a6ce621823f4f0ade543548a0118341746ac0643a54a7507cbbd4258c5cb69b8b538b0fa21ad73f66bfefd03ce4b18c0b3cac74cbe8ac79ba758a663902c7821f80957e0fdc479e693097de36ccf552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086ceb8bd8e054ee64 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 228, 198, 23, 193, 67, 31, 52, 239, 229, 84, 97, 134, 14, 170, 48, 117, 36, 246, 156, 143, 182, 134, 102, 169, 153, 133, 251, 43, 88, 87, 164, 23, 12, 75, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 93110b4c99215daa03caabb3260ba5c6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 17ed559a4ceaa016eba107a6ce621823, }, ), received_events: EventHandle { count: 110993791416922356, key: EventKey( [ 52, 23, 70, 172, 6, 67, 165, 74, 117, 7, 203, 189, 66, 88, 197, 203, 105, 184, 181, 56, 176, 250, 33, 173, ], ), }, sent_events: EventHandle { count: 5462307787477087859, key: EventKey( [ 192, 179, 202, 199, 76, 190, 138, 199, 155, 167, 88, 166, 99, 144, 44, 120, 33, 248, 9, 87, 224, 253, 196, 121, ], ), }, sequence_number: 6183280537714136038, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(462aad65b08b12fd13dca8d92367418f16075f6f97f60f6ffb7e261ad59cf686): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ec1134f5da711718a522a11eced4a6b222388ccf3b934e0185ea95b742948b754d7ac71780219eaef8217d188c7c8e423fd9eff9aebc3a955ce709836840fa4c9752fe9bae9b6210791c884b4428514bc0a8d17b117852d403c764c04acfc00018fe543dcb0b1753e1a6582b4d9ff24adcdf7c6e95c6f7c2f18053cd5a9df2d83a86b630b396ce127840624b139e6eadb04d7310456e94b1566181bfa5ca22cf4a465b1da2db9084183d8e65aae4bbf062f16d261e6205f32e5312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d4874d63dc6cf5c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 193, 19, 79, 93, 167, 17, 113, 138, 82, 42, 17, 236, 237, 74, 107, 34, 35, 136, 204, 243, 185, 52, 224, 24, 94, 169, 91, 116, 41, 72, 183, 84, 215, 172, 113, 120, 2, 25, 234, 239, 130, 23, 209, 136, 199, 200, 228, 35, 253, 158, 255, 154, 235, 195, 169, 85, 206, 112, 152, 54, 132, 15, 164, 201, 117, 47, 233, 186, 233, 182, 33, 7, 145, 200, 132, 180, 66, 133, 20, 188, 10, 141, 23, 177, 23, 133, 45, 64, 60, 118, 76, 4, 172, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8fe543dcb0b1753e1a6582b4d9ff24ad, }, ), received_events: EventHandle { count: 3421732261744539597, key: EventKey( [ 5, 60, 213, 169, 223, 45, 131, 168, 107, 99, 11, 57, 108, 225, 39, 132, 6, 36, 177, 57, 230, 234, 219, 4, ], ), }, sent_events: EventHandle { count: 7355869031922151895, key: EventKey( [ 27, 250, 92, 162, 44, 244, 164, 101, 177, 218, 45, 185, 8, 65, 131, 216, 230, 90, 174, 75, 191, 6, 47, 22, ], ), }, sequence_number: 3595335261680460242, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(46ac01f9488532536ac093e2526e1c750ac6dc85ed3051af75351829357e9bc8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940147db6a32964bbcd77ba9c5c0936bb9ff009a1bad0753b910bba0f7dc4ad23370d4857940a59ec43f82c1ca63f60f49fb6dab277eda7ef49adf4f687bbb0e3ce3e4973240cf26f5070000d7c3f0652b38aa2618c9a55b5cfb39dc64ea083f0d484faaf64bf88a5d728dcc9f4601add058ca087318e57848f1d37197429bc8253a6d6a28aeb710c7c68429ebbf961dd29e963367152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084780ec1ee0b05e49 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 219, 106, 50, 150, 75, 188, 215, 123, 169, 197, 192, 147, 107, 185, 255, 0, 154, 27, 173, 7, 83, 185, 16, 187, 160, 247, 220, 74, 210, 51, 112, 212, 133, 121, 64, 165, 158, 196, 63, 130, 193, 202, 99, 246, 15, 73, 251, 109, 171, 39, 126, 218, 126, 244, 154, 223, 79, 104, 123, 187, 14, 60, 227, 228, 151, 50, 64, 207, 38, 245, 7, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2786101078527099863, key: EventKey( [ 201, 165, 91, 92, 251, 57, 220, 100, 234, 8, 63, 13, 72, 79, 170, 246, 75, 248, 138, 93, 114, 141, 204, 159, ], ), }, sent_events: EventHandle { count: 8289097596982329670, key: EventKey( [ 229, 120, 72, 241, 211, 113, 151, 66, 155, 200, 37, 58, 109, 106, 40, 174, 183, 16, 199, 198, 132, 41, 235, 191, ], ), }, sequence_number: 1542258119400365462, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(476645c4a67c8cb2a8f8989d11b39351cc2e7402938ebd2e41725eae5f7d0e7b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e012d0000cad449bab2e72310187b8d234d2066c66ecec9429c7c3e04f74dbdb093d6e6edf68d729fc4093b8d1a182134630c8f07172b5314353b03d617873daae7be9f166bcb696a5d97317385442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708038f01b8d3a0aa96 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1163027883607315658, key: EventKey( [ 123, 141, 35, 77, 32, 102, 198, 110, 206, 201, 66, 156, 124, 62, 4, 247, 77, 189, 176, 147, 214, 230, 237, 246, ], ), }, sent_events: EventHandle { count: 1913250329841857165, key: EventKey( [ 33, 52, 99, 12, 143, 7, 23, 43, 83, 20, 53, 59, 3, 214, 23, 135, 61, 170, 231, 190, 159, 22, 107, 203, ], ), }, sequence_number: 4937479223311690345, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(477537179b1d3f221b6bfcf86baab20a1d683dc7949583c8026b2df0c58580c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e017701647a78b7ddac602da25bd069ba8e1f650154ec4f6856ad723c5a2c957d8637c7c169725796de0fca44188b30e9ee41abe3dfc2af80d9bec32fe58994013eeb1f750267afc86e5cad5878182416c8c4e1ae0b934382bc4ab1447f471e913e6b8bd3b5c2d938d3067a2952d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d11d7cd16e60fa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 647a78b7ddac602da25bd069ba8e1f65, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 54ec4f6856ad723c5a2c957d8637c7c1, }, ), received_events: EventHandle { count: 4956791788554121833, key: EventKey( [ 139, 48, 233, 238, 65, 171, 227, 223, 194, 175, 128, 217, 190, 195, 47, 229, 137, 148, 1, 62, 235, 31, 117, 2, ], ), }, sent_events: EventHandle { count: 8671871695009132391, key: EventKey( [ 36, 22, 200, 196, 225, 174, 11, 147, 67, 130, 188, 74, 177, 68, 127, 71, 30, 145, 62, 107, 139, 211, 181, 194, ], ), }, sequence_number: 15299336488208251097, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(48df8157552b5185d280c5047580d9fd15656fff534921796ef875ae984c0d38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97518c0762680f25f5b0cb37a0512f32cb8c452fb198bc7f9be6000013f4d196e6924326365df2db3ef8f9f8964de74f683bcd82418ccaef97032cb12772e577c7e776ff64db129abc88f47b5a6b28c8dfcdff640141854ccf8ef0c9def841d2385f1ef2d3349649407ada2b837c9ce6de965903025d72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869915916b0d691b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 118, 38, 128, 242, 95, 91, 12, 179, 122, 5, 18, 243, 44, 184, 196, 82, 251, 25, 139, 199, 249, 190, 96, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3f4d196e6924326365df2db3ef8f9f89, }, ), received_events: EventHandle { count: 2655079255296499300, key: EventKey( [ 204, 174, 249, 112, 50, 203, 18, 119, 46, 87, 124, 126, 119, 111, 246, 77, 177, 41, 171, 200, 143, 71, 181, 166, ], ), }, sent_events: EventHandle { count: 1459437721143315634, key: EventKey( [ 84, 204, 248, 239, 12, 157, 239, 132, 29, 35, 133, 241, 239, 45, 51, 73, 100, 148, 7, 173, 162, 184, 55, 201, ], ), }, sequence_number: 15502850689036021198, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4a1dd4d39fd910161a7745b7dddf3da9738385852fe41fb61339c99c0c4f14da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b10154fc2924be111a8fe3801bc701043d3a12eb45a90c02b5e4d0f0efb49b2e7f5a99bfb13c2c55cf454591405b3f6f325c0da14198702596407a0c660d9c0a73424c53077cc37b19f58805733cd107640bedfd8a362c01c3c175410d53a00324fbfbabde93e47b00d6212c9b3f6a585c18f700f42692ed49648975ae17f5047ddef14f493cee19d9eb2c2dcc88aaaac21f189d4c10ce25f1fdc4b09cca55111f488a488766772e4ca009d2c04df4371015ea2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70874935a76c78660d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 41, 36, 190, 17, 26, 143, 227, 128, 27, 199, 1, 4, 61, 58, 18, 235, 69, 169, 12, 2, 181, 228, 208, 240, 239, 180, 155, 46, 127, 90, 153, 191, 177, 60, 44, 85, 207, 69, 69, 145, 64, 91, 63, 111, 50, 92, 13, 161, 65, 152, 112, 37, 150, 64, 122, 12, 102, 13, 156, 10, 115, 66, 76, 83, 7, 124, 195, 123, 25, 245, 136, 5, 115, 60, 209, 7, 100, 11, 237, 253, 138, 54, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c3c175410d53a00324fbfbabde93e47b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6654185270858752470, key: EventKey( [ 247, 0, 244, 38, 146, 237, 73, 100, 137, 117, 174, 23, 245, 4, 125, 222, 241, 79, 73, 60, 238, 25, 217, 235, ], ), }, sent_events: EventHandle { count: 2288579210073877804, key: EventKey( [ 157, 76, 16, 206, 37, 241, 253, 196, 176, 156, 202, 85, 17, 31, 72, 138, 72, 135, 102, 119, 46, 76, 160, 9, ], ), }, sequence_number: 16867405811894042834, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4c3b72babb935ab7c04b0f1f586b635ecf72ccee1a18e3e368a130697c3731f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c63e51d30149d64baadcef84a000124c6571177143f169881dc3d1c356184a5f01e88db9ead7518c625e0b7a30c5d6693166371edfa2d3b43b46ba1e34b1b866c68221b1b04733d18a7e42c01b15c9a340d7195c68edfec8a193546e06997e532bf4ac7be8dd188852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708202dc23a0c42de66 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 99, 229, 29, 48, 20, 157, 100, 186, 173, 206, 248, 74, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 24c6571177143f169881dc3d1c356184, }, ), received_events: EventHandle { count: 8479608339127267493, key: EventKey( [ 198, 37, 224, 183, 163, 12, 93, 102, 147, 22, 99, 113, 237, 250, 45, 59, 67, 180, 107, 161, 227, 75, 27, 134, ], ), }, sent_events: EventHandle { count: 4427887373101197420, key: EventKey( [ 167, 228, 44, 1, 177, 92, 154, 52, 13, 113, 149, 198, 142, 223, 236, 138, 25, 53, 70, 224, 105, 151, 229, 50, ], ), }, sequence_number: 9622171010598390463, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d10f8cfff935c5b4b770037b1a300ff7dabb2500f005b09e705404bd7a38d4b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130f3455ba960b5ea68f5fe64f1e29a0d45e33a6b236747e00f239cf3629cb4898c4425d289e026e98b5ef29a7ce47953c701abb82c638de35e9f13c527a6a4baeba400ef21ca96cce5d61218d4429607115f7bb939c7d95e102411810ad8e302e28f7a8ce1403ca7728cd066181ff49838dc50d5daae0e2a5d1151c8bd4256e4ad2df3e77b327c2827d46d56862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081f364e27d4e6b6b7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 69, 91, 169, 96, 181, 234, 104, 245, 254, 100, 241, 226, 154, 13, 69, 227, 58, 107, 35, 103, 71, 224, 15, 35, 156, 243, 98, 156, 180, 137, 140, 68, 37, 210, 137, 224, 38, 233, 139, 94, 242, 154, 124, 228, 121, 83, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: abb82c638de35e9f13c527a6a4baeba4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1357525004564701679, key: EventKey( [ 212, 66, 150, 7, 17, 95, 123, 185, 57, 199, 217, 94, 16, 36, 17, 129, 10, 216, 227, 2, 226, 143, 122, 140, ], ), }, sent_events: EventHandle { count: 7408575811084370145, key: EventKey( [ 31, 244, 152, 56, 220, 80, 213, 218, 174, 14, 42, 93, 17, 81, 200, 189, 66, 86, 228, 173, 45, 243, 231, 123, ], ), }, sequence_number: 9680045207036918834, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5188e27b132ac345e9985c41c3ba6d9f3703909a846985a8e2f681565cb3efd0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f01220c27b482ab554e0812c2ad6ddc30f2b3ff2f13b35a012a067cd512e5171f67503bb001f601c57c5ab3714f0f457ae4a396f49701f824b7a60ead42f3a6f8bcf6a012f8990005844be6dbc63118d558d5c6436268c3a3d3dc172e01b4e03a859e86b38772c506542d237dca0b2318659e0ac464ce1ae29081edcfc9494af88af70a244bd110ac6b7e86e7ea3d95fb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d99b1c977696cbe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 39, 180, 130, 171, 85, 78, 8, 18, 194, 173, 109, 220, 48, 242, 179, 255, 47, 19, 179, 90, 1, 42, 6, 124, 213, 18, 229, 23, 31, 103, 80, 59, 176, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f601c57c5ab3714f0f457ae4a396f497, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f824b7a60ead42f3a6f8bcf6a012f899, }, ), received_events: EventHandle { count: 3586795935403083008, key: EventKey( [ 213, 88, 213, 198, 67, 98, 104, 195, 163, 211, 220, 23, 46, 1, 180, 224, 58, 133, 158, 134, 179, 135, 114, 197, ], ), }, sent_events: EventHandle { count: 2525334654881190918, key: EventKey( [ 101, 158, 10, 196, 100, 206, 26, 226, 144, 129, 237, 207, 201, 73, 74, 248, 138, 247, 10, 36, 75, 209, 16, 172, ], ), }, sequence_number: 18128463954165792363, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53b4001e1b44d52ab40650143656f2a70aa63bdcb61ee290b580f53bd45e90e3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac014f4c09fd203119d90a9a04e9e7d38bd2483893ac1ce4576c5182369a29cdf14cc25d6782553bf1c75f21ad9dfbefe6d25cff4fb30711933c7b27825b3c8e75b0e28899b5f067c32516faf968e984fcd500016589ba0d4eae725bfa6e6167c2329dfa7f7e4c87a5ad466b18247d23751e011e466a1d3b628761379c6913679e3e1259f9cc68fda25030f9661851ed6f6ce1cf3d1191dcb5b1b89ca39566705f8cb8e76c0aeab89ba6285c816d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851c37f135300e4b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 76, 9, 253, 32, 49, 25, 217, 10, 154, 4, 233, 231, 211, 139, 210, 72, 56, 147, 172, 28, 228, 87, 108, 81, 130, 54, 154, 41, 205, 241, 76, 194, 93, 103, 130, 85, 59, 241, 199, 95, 33, 173, 157, 251, 239, 230, 210, 92, 255, 79, 179, 7, 17, 147, 60, 123, 39, 130, 91, 60, 142, 117, 176, 226, 136, 153, 181, 240, 103, 195, 37, 22, 250, 249, 104, 233, 132, 252, 213, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6589ba0d4eae725bfa6e6167c2329dfa, }, ), received_events: EventHandle { count: 7730056736879181439, key: EventKey( [ 36, 125, 35, 117, 30, 1, 30, 70, 106, 29, 59, 98, 135, 97, 55, 156, 105, 19, 103, 158, 62, 18, 89, 249, ], ), }, sent_events: EventHandle { count: 7420014983959636172, key: EventKey( [ 81, 237, 111, 108, 225, 207, 61, 17, 145, 220, 181, 177, 184, 156, 163, 149, 102, 112, 95, 140, 184, 231, 108, 10, ], ), }, sequence_number: 7890689351793490154, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(560e449ad9fd4b13ee0803026cf8bd00cea6bbb7e090042fcdefdd8a368815c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9950128baf52d69eecdc526923818e734156c6b1d2da81e1126c2dd12cf35be4f819c86c304b0662a0000d0019de2145590d6bec89307c9c7c0507c61018a11371cdc535f08e2351e5ef0f14ddbe718553171c50864186f360cdbf0a02464b8031edd8e9225f9c1eaa4b84022aa21f476e554bb65ef3e183bc9470c56388bc37cec3c67583d11d89f45ac7c19066d5bf26fcfbc4dabadff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708947ddf59eb3e35bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 245, 45, 105, 238, 205, 197, 38, 146, 56, 24, 231, 52, 21, 108, 107, 29, 45, 168, 30, 17, 38, 194, 221, 18, 207, 53, 190, 79, 129, 156, 134, 195, 4, 176, 102, 42, 0, 0, 208, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9de2145590d6bec89307c9c7c0507c61, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8a11371cdc535f08e2351e5ef0f14ddb, }, ), received_events: EventHandle { count: 7208228293556115687, key: EventKey( [ 111, 54, 12, 219, 240, 160, 36, 100, 184, 3, 30, 221, 142, 146, 37, 249, 193, 234, 164, 184, 64, 34, 170, 33, ], ), }, sent_events: EventHandle { count: 4534955205042992884, key: EventKey( [ 59, 201, 71, 12, 86, 56, 139, 195, 124, 236, 60, 103, 88, 61, 17, 216, 159, 69, 172, 124, 25, 6, 109, 91, ], ), }, sequence_number: 18423570001011109874, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(561568594d566140c73b4ed826dae40d1660a935d70ffae55a1af71ab0f4f179): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a7cdca3556620677a40c74bf90689a73d448a39754e6603f6117e27e4ef9a99fa50bac19ce4b1c5bd388f462a6932c8072635b287ff61442cdba0f745f0829bc199a08d8c4eae1365581f0000355f8e7dd251b03d18be954be103b0cc5886aedc74cbfd32aa2eb2f118521848a95aa9cf483eb9bf1e18024b5f042a97b15881b47faee5752773e91d5a87138e3eb1ace154387507d3c92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ecc2059d22f058bb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 220, 163, 85, 102, 32, 103, 122, 64, 199, 75, 249, 6, 137, 167, 61, 68, 138, 57, 117, 78, 102, 3, 246, 17, 126, 39, 228, 239, 154, 153, 250, 80, 186, 193, 156, 228, 177, 197, 189, 56, 143, 70, 42, 105, 50, 200, 7, 38, 53, 178, 135, 255, 97, 68, 44, 219, 160, 247, 69, 240, 130, 155, 193, 153, 160, 141, 140, 78, 174, 19, 101, 88, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4445142796706144053, key: EventKey( [ 190, 149, 75, 225, 3, 176, 204, 88, 134, 174, 220, 116, 203, 253, 50, 170, 46, 178, 241, 24, 82, 24, 72, 169, ], ), }, sent_events: EventHandle { count: 2215693218850253146, key: EventKey( [ 2, 75, 95, 4, 42, 151, 177, 88, 129, 180, 127, 174, 229, 117, 39, 115, 233, 29, 90, 135, 19, 142, 62, 177, ], ), }, sequence_number: 14542975821747118508, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(57d4e8aba6c914a87d83ff198d58c7c777b399a4165d861489a4fce6a6834344): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014b0c7b4750a9992455dd2492a210e19e07f98563708a0801ce046dff70a7889cfe41698531dba1266d66622a0fd1076c20bc5ac96c3da49623d363d4f68384e536ea099b7dfdb0a35a644ef00000a33a2a406965746618ffe2b98d96bbc77e7fe8f414e30d91985093b89e010b7a952c46dbc98995af001837421150cc1a6ad1d3fd785a1df6b459d640b22484908320687fdfa2e28e6e442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844e94d048901040f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 123, 71, 80, 169, 153, 36, 85, 221, 36, 146, 162, 16, 225, 158, 7, 249, 133, 99, 112, 138, 8, 1, 206, 4, 109, 255, 112, 167, 136, 156, 254, 65, 105, 133, 49, 219, 161, 38, 109, 102, 98, 42, 15, 209, 7, 108, 32, 188, 90, 201, 108, 61, 164, 150, 35, 211, 99, 212, 246, 131, 132, 229, 54, 234, 9, 155, 125, 253, 176, 163, 90, 100, 78, 240, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7382637191889566371, key: EventKey( [ 255, 226, 185, 141, 150, 187, 199, 126, 127, 232, 244, 20, 227, 13, 145, 152, 80, 147, 184, 158, 1, 11, 122, 149, ], ), }, sent_events: EventHandle { count: 49422539954013740, key: EventKey( [ 55, 66, 17, 80, 204, 26, 106, 209, 211, 253, 120, 90, 29, 246, 180, 89, 214, 64, 178, 36, 132, 144, 131, 32, ], ), }, sequence_number: 4931035746063581032, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(587d64ae85b27c855afc6a550de99fc037f878534598ebfd22bb63c3c3e834d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cc015fbf29bde9df7fb504b3593572118df45da305a75edf6e200077b22f6f999f0472df03fbc88e7d42aaa2ad8cdc81b4eeb444206168a8df1bbf13832be495b3f2e6ed6b1d13e54150a6032a12ebb4d83861558aa807fa51f5b1a3592f2440b99201683ab0bca4bafa7e2a1e631838498b2401e557fc1fb64a7a552524e5e8b1ed1753aae5cb51c7c9ca07181f2415aab4f9e6e81d5f9e8449731f0e6580ed3e8df3eb1dad2b275197a9ac2f181884ba72401703fbdbea8acae9f3c17904c188a199b4ee4d85dccae399ee4a2e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080611e4769d0e5287 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 41, 189, 233, 223, 127, 181, 4, 179, 89, 53, 114, 17, 141, 244, 93, 163, 5, 167, 94, 223, 110, 32, 0, 119, 178, 47, 111, 153, 159, 4, 114, 223, 3, 251, 200, 142, 125, 66, 170, 162, 173, 140, 220, 129, 180, 238, 180, 68, 32, 97, 104, 168, 223, 27, 191, 19, 131, 43, 228, 149, 179, 242, 230, 237, 107, 29, 19, 229, 65, 80, 166, 3, 42, 18, 235, 180, 216, 56, 97, 85, 138, 168, 7, 250, 81, 245, 177, 163, 89, 47, 36, 64, 185, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 683ab0bca4bafa7e2a1e631838498b24, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e557fc1fb64a7a552524e5e8b1ed1753, }, ), received_events: EventHandle { count: 561482961469040042, key: EventKey( [ 31, 36, 21, 170, 180, 249, 230, 232, 29, 95, 158, 132, 73, 115, 31, 14, 101, 128, 237, 62, 141, 243, 235, 29, ], ), }, sent_events: EventHandle { count: 3435307083143523245, key: EventKey( [ 24, 132, 186, 114, 64, 23, 3, 251, 219, 234, 138, 202, 233, 243, 193, 121, 4, 193, 136, 161, 153, 180, 238, 77, ], ), }, sequence_number: 3335740818740403333, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a39be578890dc85d38c87a1979513f0476fad3878a438e650ef718d516dabc1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015d959bbfbdcc15357fd6c80ff417384413e8cf2cec3ffa0c8a1a8625136fd604057fb3ff85e0a29ea242b8a9e0fa4b691f062d6595af01d82a1a6f70c388bf51eed016d4e314236554652edea5c7e6ff8768d3dc08b588708a8f9b3a7829019fb20fe18732442a4bd21fd715c9c0dd00296ddfe17f02135e187f807d6f13eeeb5bbefa450c194c666673c317b1477b4edfced618eefd8b2b2218189072bb59928a3f06e6a4370733c38f2c83ab826a5a6dd5ab77808249127e5d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ff5dcbcd0ce7271c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 149, 155, 191, 189, 204, 21, 53, 127, 214, 200, 15, 244, 23, 56, 68, 19, 232, 207, 44, 236, 63, 250, 12, 138, 26, 134, 37, 19, 111, 214, 4, 5, 127, 179, 255, 133, 224, 162, 158, 162, 66, 184, 169, 224, 250, 75, 105, 31, 6, 45, 101, 149, 175, 1, 216, 42, 26, 111, 112, 195, 136, 191, 81, 238, 208, 22, 212, 227, 20, 35, 101, 84, 101, 46, 222, 165, 199, 230, 255, 135, 104, 211, 220, 8, 181, 136, 112, 138, 143, 155, 58, 120, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9fb20fe18732442a4bd21fd715c9c0dd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6778764612396346665, key: EventKey( [ 127, 128, 125, 111, 19, 238, 235, 91, 190, 250, 69, 12, 25, 76, 102, 102, 115, 195, 23, 177, 71, 123, 78, 223, ], ), }, sent_events: EventHandle { count: 2462215544025700046, key: EventKey( [ 24, 144, 114, 187, 89, 146, 138, 63, 6, 230, 164, 55, 7, 51, 195, 143, 44, 131, 171, 130, 106, 90, 109, 213, ], ), }, sequence_number: 6736842199524210603, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a9121206f94a8f0e5686582ad65eb4417026fe3d2dffb0c6d9becfb81850c82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015d4bca925cec08c0d9f4f94be62c7775b8a9869fe9b4221abc1356db725ed7fe0f2cceb7ea4ad0be3b1ec8d88c522b87901ce6a59324a3d6454f77c4b5ccd4c75f818aa4ee7f7f0c0a89774c21a132264077c7f4aa5e41eaaae330c6d0ee0121736bb9f909d8c5d8e0b45d1aa1083101c16148cfc9cc54d3c74ceeb10b46e2466abdacdf581ed8471806d49b7d7b1fd50eba784546db6074289efb3b978aeec9eef6aa91dc309bcf39186495d479688409869a91dc1fe642830a14a6df02b0f8b4b6768a500dbb0522bf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083e874f4b8970ac80 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 202, 146, 92, 236, 8, 192, 217, 244, 249, 75, 230, 44, 119, 117, 184, 169, 134, 159, 233, 180, 34, 26, 188, 19, 86, 219, 114, 94, 215, 254, 15, 44, 206, 183, 234, 74, 208, 190, 59, 30, 200, 216, 140, 82, 43, 135, 144, 28, 230, 165, 147, 36, 163, 214, 69, 79, 119, 196, 181, 204, 212, 199, 95, 129, 138, 164, 238, 127, 127, 12, 10, 137, 119, 76, 33, 161, 50, 38, 64, 119, 199, 244, 170, 94, 65, 234, 170, 227, 48, 198, 208, 238, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 21736bb9f909d8c5d8e0b45d1aa10831, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c16148cfc9cc54d3c74ceeb10b46e246, }, ), received_events: EventHandle { count: 5176921138720980330, key: EventKey( [ 6, 212, 155, 125, 123, 31, 213, 14, 186, 120, 69, 70, 219, 96, 116, 40, 158, 251, 59, 151, 138, 238, 201, 238, ], ), }, sent_events: EventHandle { count: 4165718814502267638, key: EventKey( [ 100, 149, 212, 121, 104, 132, 9, 134, 154, 145, 220, 31, 230, 66, 131, 10, 20, 166, 223, 2, 176, 248, 180, 182, ], ), }, sequence_number: 13772576911392803446, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5b4abf613e78323b83f6b7854b025d8b5a675cc1cdba526811837d29cfab84c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e5b34e131222f09956180ca6ff0caaeb00d92f752ca3187fadbac377f4c019f70eea70a720216f3116877d3d9f0688837520413ff80a54ac98e0514725a44d0b0a25b53f9f964593f257a640c4215000129a713d9648a39ad116c917435d5ef67c15216798aac1441188bc30273c9be8156e13ff483b5f32f601ccbf2f9f0da08b15927d81ae9b1b82d18f9f0fda99c1683a39a41c44140f6404fdaffcb1b9d2870e96a7c9b7ee49177742101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084812830d2140ec11 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 52, 225, 49, 34, 47, 9, 149, 97, 128, 202, 111, 240, 202, 174, 176, 13, 146, 247, 82, 202, 49, 135, 250, 219, 172, 55, 127, 76, 1, 159, 112, 238, 167, 10, 114, 2, 22, 243, 17, 104, 119, 211, 217, 240, 104, 136, 55, 82, 4, 19, 255, 128, 165, 74, 201, 142, 5, 20, 114, 90, 68, 208, 176, 162, 91, 83, 249, 249, 100, 89, 63, 37, 122, 100, 12, 66, 21, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 29a713d9648a39ad116c917435d5ef67, }, ), received_events: EventHandle { count: 4689562822736499393, key: EventKey( [ 139, 195, 2, 115, 201, 190, 129, 86, 225, 63, 244, 131, 181, 243, 47, 96, 28, 203, 242, 249, 240, 218, 8, 177, ], ), }, sent_events: EventHandle { count: 3294578742157387609, key: EventKey( [ 249, 240, 253, 169, 156, 22, 131, 163, 154, 65, 196, 65, 64, 246, 64, 79, 218, 255, 203, 27, 157, 40, 112, 233, ], ), }, sequence_number: 8392336841190898794, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5eb1ac0145030c405b989b42c2389d4edfceda0889309a05489392e4ed6fc9c1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a013d08f5f9a76eb1e2b928b5277276f95add6bc1fcfab6dc2e8a9d10224eed1c1224f81eb4071b21af3a4119a0203509bdbcf353dbecffe0edbd6c2b7373dd00004d46cc45e0e03d2518faefa37828d3558fa9637a63fea1c06456fc59ebf5b033f5f9debaae3004d677185078377ecf869e3af4ca9b420658ac1f2a25218c162de4d110ac14f657d2f6d62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085649193429567075 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 8, 245, 249, 167, 110, 177, 226, 185, 40, 181, 39, 114, 118, 249, 90, 221, 107, 193, 252, 250, 182, 220, 46, 138, 157, 16, 34, 78, 237, 28, 18, 36, 248, 30, 180, 7, 27, 33, 175, 58, 65, 25, 160, 32, 53, 9, 189, 188, 243, 83, 219, 236, 255, 224, 237, 189, 108, 43, 115, 115, 221, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2683548206830995021, key: EventKey( [ 250, 239, 163, 120, 40, 211, 85, 143, 169, 99, 122, 99, 254, 161, 192, 100, 86, 252, 89, 235, 245, 176, 51, 245, ], ), }, sent_events: EventHandle { count: 8635093942665928441, key: EventKey( [ 80, 120, 55, 126, 207, 134, 158, 58, 244, 202, 155, 66, 6, 88, 172, 31, 42, 37, 33, 140, 22, 45, 228, 209, ], ), }, sequence_number: 15489799243619937296, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f03ce24c4cb4ef45e5405d674f8319b1dc1e2ed823709dd2cb0e378327b5fe2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f227f3baa7547f08e760486263fe7e7b84e5b8da3dcb7e97317ed931bb80119ea19ace30001393134d5286df0ab05514d1927b408877f40e4a430ad302f18a767178572d943dad3a74aedc8344ec9f572a5aab98aaf01c21e94486eebd00818493ba17f4787f533e9b734216e7740c34f33064c56c9aad83818fd8469fda83d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086b70d2495dbd61a8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 59, 170, 117, 71, 240, 142, 118, 4, 134, 38, 63, 231, 231, 184, 78, 91, 141, 163, 220, 183, 233, 115, 23, 237, 147, 27, 184, 1, 25, 234, 25, 172, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 393134d5286df0ab05514d1927b40887, }, ), received_events: EventHandle { count: 3400408143101182079, key: EventKey( [ 167, 103, 23, 133, 114, 217, 67, 218, 211, 167, 74, 237, 200, 52, 78, 201, 245, 114, 165, 170, 185, 138, 175, 1, ], ), }, sent_events: EventHandle { count: 635266406355836610, key: EventKey( [ 73, 59, 161, 127, 71, 135, 245, 51, 233, 183, 52, 33, 110, 119, 64, 195, 79, 51, 6, 76, 86, 201, 170, 216, ], ), }, sequence_number: 4443079662045567032, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f0f4fd0a517a65f37d49877a3f50b693c1555703618b48a0c6eba9cf5027af6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c2b3b91c15e786a927aba86c00487530c56fee18f011c57648c9577db515a30166b9dc5fbfc7428f29ee5163d8a4a1e149ee46ff72d111ab697aa2716019baac001a5cc6c982f0855de4c99620e018eb5d577642983895c21ac85f52973fc3c130688e0288c2b189b9485a334aa70ee41dba3b3a9ed8c7cdf59fb1e0d9f1b16f4bc1b0b669eeb6618301ced6cebea9b3adb061089b062eb8d5828992454a0f9de7e7f2e1b382703372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708305e297435dfbdbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 59, 145, 193, 94, 120, 106, 146, 122, 186, 134, 192, 4, 135, 83, 12, 86, 254, 225, 143, 1, 28, 87, 100, 140, 149, 119, 219, 81, 90, 48, 22, 107, 157, 197, 251, 252, 116, 40, 242, 158, 229, 22, 61, 138, 74, 30, 20, 158, 228, 111, 247, 45, 17, 26, 182, 151, 170, 39, 22, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9baac001a5cc6c982f0855de4c99620e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8eb5d577642983895c21ac85f52973fc, }, ), received_events: EventHandle { count: 3137927985190277948, key: EventKey( [ 155, 148, 133, 163, 52, 170, 112, 238, 65, 219, 163, 179, 169, 237, 140, 124, 223, 89, 251, 30, 13, 159, 27, 22, ], ), }, sent_events: EventHandle { count: 7416195372505873652, key: EventKey( [ 48, 28, 237, 108, 235, 234, 155, 58, 219, 6, 16, 137, 176, 98, 235, 141, 88, 40, 153, 36, 84, 160, 249, 222, ], ), }, sequence_number: 3964055218943852414, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6150e3dda735db18306a8807b5aa5209d69b7c704a0a98ac168070d4fd473098): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc014fabc0df5c24f3e29dcdc8bc7e1cce437429eae34eacd4ab34d195c27ff80da5e91d70bba23540af48bac03d937ba46e9cabdbcc1701f4cced1a9a4f6e71b487c900703f59f2edd8ac8d1f0cf6f70be70178407a359bf850e5faab939b21d517d001c733a2b17b87c3b7aedc1e8bec6c420aa58b7fe0ab2a8d541846f15c0aa0edaea7c9613c25c3e401fc9903afa6dde87630e53651cc6e7e535818199b871e7b0ffb25c7ad5c6ada958e7a435e5cc918f470209c78bc72f8677b712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082ac11b30ef5bf3d8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 192, 223, 92, 36, 243, 226, 157, 205, 200, 188, 126, 28, 206, 67, 116, 41, 234, 227, 78, 172, 212, 171, 52, 209, 149, 194, 127, 248, 13, 165, 233, 29, 112, 187, 162, 53, 64, 175, 72, 186, 192, 61, 147, 123, 164, 110, 156, 171, 219, 204, 23, 1, 244, 204, 237, 26, 154, 79, 110, 113, 180, 135, 201, 0, 112, 63, 89, 242, 237, 216, 172, 141, 31, 12, 246, 247, 11, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 78407a359bf850e5faab939b21d517d0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c733a2b17b87c3b7aedc1e8bec6c420a, }, ), received_events: EventHandle { count: 6092572788596378533, key: EventKey( [ 70, 241, 92, 10, 160, 237, 174, 167, 201, 97, 60, 37, 195, 228, 1, 252, 153, 3, 175, 166, 221, 232, 118, 48, ], ), }, sent_events: EventHandle { count: 6364569712744019685, key: EventKey( [ 25, 155, 135, 30, 123, 15, 251, 37, 199, 173, 92, 106, 218, 149, 142, 122, 67, 94, 92, 201, 24, 244, 112, 32, ], ), }, sequence_number: 8177243865195772060, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6365dbf44a8d9f37c2327e2636a87272a76b46426927959d5713259a1d943490): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101242b35f93e8b9dfba5df050d42ce524d72902e9d9d6196d163e1741cee8ef8651018ae65ca00014196bdecc0f66140d4db4b9deda0228ccf8973b44332b81d18d142c9a1d9694433616c3bb4250e9a44f34634f652bbd350dacb2081ef49a74d189fed645bcd26a82d2a7c4d49fb06fe19e6657f1e30f08e3e0666fe4139fc23732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087bc5b858422f6e56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 53, 249, 62, 139, 157, 251, 165, 223, 5, 13, 66, 206, 82, 77, 114, 144, 46, 157, 157, 97, 150, 209, 99, 225, 116, 28, 238, 142, 248, 101, 16, 24, 174, 101, 202, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4196bdecc0f66140d4db4b9deda0228c, }, ), received_events: EventHandle { count: 2141516889186339279, key: EventKey( [ 209, 66, 201, 161, 217, 105, 68, 51, 97, 108, 59, 180, 37, 14, 154, 68, 243, 70, 52, 246, 82, 187, 211, 80, ], ), }, sent_events: EventHandle { count: 5595522355043552218, key: EventKey( [ 159, 237, 100, 91, 205, 38, 168, 45, 42, 124, 77, 73, 251, 6, 254, 25, 230, 101, 127, 30, 48, 240, 142, 62, ], ), }, sequence_number: 8296752261397112326, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(673db5002f0a7b06849b63b974ae146d7c2e46428559b5d28a688b1653fdbc6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7014afc13ae622ffe434adfb3fb0fecd206623e904cc8e413f5920803b5b795efeccf1f410a0d38c89a85a231b1371de39c7350d10d032e7e9c580edca171ceca3c9700dd25059f89a1084102019d3e97ef670a3099744bb0cba35ead300080d07394b436fd2b18663991cb83ace4f48845cb223bd6f598f5b7542a582de7c1cfd55660552bf0101862e6ac40dc785deaab91e5b2170b75550cbfee9f8e1588d7cbca38ed42f16a672101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70885d32c45b9c8973d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 19, 174, 98, 47, 254, 67, 74, 223, 179, 251, 15, 236, 210, 6, 98, 62, 144, 76, 200, 228, 19, 245, 146, 8, 3, 181, 183, 149, 239, 236, 207, 31, 65, 10, 13, 56, 200, 154, 133, 162, 49, 177, 55, 29, 227, 156, 115, 80, 209, 13, 3, 46, 126, 156, 88, 14, 220, 161, 113, 206, 202, 60, 151, 0, 221, 37, 5, 159, 137, 161, 8, 65, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9d3e97ef670a3099744bb0cba35ead30, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3169749861951328384, key: EventKey( [ 102, 57, 145, 203, 131, 172, 228, 244, 136, 69, 203, 34, 59, 214, 245, 152, 245, 183, 84, 42, 88, 45, 231, 193, ], ), }, sent_events: EventHandle { count: 1220523144705922511, key: EventKey( [ 98, 230, 172, 64, 220, 120, 93, 234, 171, 145, 229, 178, 23, 11, 117, 85, 12, 191, 238, 159, 142, 21, 136, 215, ], ), }, sequence_number: 7452033803187964619, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(695799f36303f5e49c42291eb7703fc1836b77256d43ab677a9aeea9dc111956): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984012703a9664574ee3352d1bbc5997b852a3dd3ec8a9ec1f7fcb08c436c1c7cd1ef739ed18a0f7f4fba00013972f234064eb16e948d0c0c6a4d837f720f5814934b22191894394f2a772b2e35c28d82ec3d4ba923ca1122febe9509062952ab94ad0f3f5e187c172621d5781c94b47fe7d4a3d156ba26e6718ade1e17546209353c4936428e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708985cf36ca05986aa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 3, 169, 102, 69, 116, 238, 51, 82, 209, 187, 197, 153, 123, 133, 42, 61, 211, 236, 138, 158, 193, 247, 252, 176, 140, 67, 108, 28, 124, 209, 239, 115, 158, 209, 138, 15, 127, 79, 186, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3972f234064eb16e948d0c0c6a4d837f, }, ), received_events: EventHandle { count: 1811093095229951858, key: EventKey( [ 148, 57, 79, 42, 119, 43, 46, 53, 194, 141, 130, 236, 61, 75, 169, 35, 202, 17, 34, 254, 190, 149, 9, 6, ], ), }, sent_events: EventHandle { count: 6791164001296011817, key: EventKey( [ 124, 23, 38, 33, 213, 120, 28, 148, 180, 127, 231, 212, 163, 209, 86, 186, 38, 230, 113, 138, 222, 30, 23, 84, ], ), }, sequence_number: 10250815390019291490, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c5ee9566aff666375c400bd020021d432cbba97210f246af260d0cde4f85538): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148dabf73e3c48181be37a57d0ffa0ce4e086d1bafce3894a93fba23d0fea02377d1735ab9d58268452c67cb5c804c19fc99cb157bd7816a205263318e93ed06f4ce26d7ebcd1f77c2c01c7c2bb74df5a29c3d254060b45c6fe5400e2c435a842d7812c188d8ff744e33ad7b43724895771eac2e55db28dc97bef27cb7078311dd27b584e187085653ebfbbfe3e0410322b80b24579ac8c551934d821b49ba26a949c74ba552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fe557b0cf3a0392e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 191, 115, 227, 196, 129, 129, 190, 55, 165, 125, 15, 250, 12, 228, 224, 134, 209, 186, 252, 227, 137, 74, 147, 251, 162, 61, 15, 234, 2, 55, 125, 23, 53, 171, 157, 88, 38, 132, 82, 198, 124, 181, 200, 4, 193, 159, 201, 156, 177, 87, 189, 120, 22, 162, 5, 38, 51, 24, 233, 62, 208, 111, 76, 226, 109, 126, 188, 209, 247, 124, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c7c2bb74df5a29c3d254060b45c6fe54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3207081090954413282, key: EventKey( [ 141, 143, 247, 68, 227, 58, 215, 180, 55, 36, 137, 87, 113, 234, 194, 229, 93, 178, 141, 201, 123, 239, 39, 203, ], ), }, sent_events: EventHandle { count: 5645398275272046704, key: EventKey( [ 112, 133, 101, 62, 191, 187, 254, 62, 4, 16, 50, 43, 128, 178, 69, 121, 172, 140, 85, 25, 52, 216, 33, 180, ], ), }, sequence_number: 6177378054745793179, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ec04c75d1b9768b38a6d462b33684a70de1f8ed3a3d6bb4c1726143938f4dcf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965186b808c927cfd6c7d35523bf90fd8eba4aa2f8f1f39c0d4e800008ca9f69b169404291891bad9794a558302ab2249c8d0dc598dc012f0ca85b63067405870d8d452fc07182799a079c861eee700f95b3727329ccb288edc28327a9ffc12b361a0a28e4a3b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e837fe1b18b8cd4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 128, 140, 146, 124, 253, 108, 125, 53, 82, 59, 249, 15, 216, 235, 164, 170, 47, 143, 31, 57, 192, 212, 232, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2955650080288713100, key: EventKey( [ 145, 186, 217, 121, 74, 85, 131, 2, 171, 34, 73, 200, 208, 220, 89, 141, 192, 18, 240, 202, 133, 182, 48, 103, ], ), }, sent_events: EventHandle { count: 575425926514366528, key: EventKey( [ 39, 153, 160, 121, 200, 97, 238, 231, 0, 249, 91, 55, 39, 50, 156, 203, 40, 142, 220, 40, 50, 122, 159, 252, ], ), }, sequence_number: 4272384025640940306, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6f7122cbca2aa92e7a90372d602c806571da56d81631cc65ee0ce3ebcf15da27): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b73278069d6bd5d60e0327df9266ba2216e8cd2005f748bb181f0e1402a464833264ca6bd86eb7db577942adfa6bef3fec9ddb8cd2e5d613a62b2a8382c548638dc3e67745d120d2cb3d042dab65339c30d5726addb697a7d54aa2a00013574e32046154f7425058eb7e72d1942e141afa5ba50797a18a85ff277158316488a9dcc2dce728a371fec04938933e4c4cc8ae4f5ff92245418cc4712b59f4c7b10731b35a4412eb8cdb584dc0301ed77fd9b6a1e9e31cac5882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7d174edc660290c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 39, 128, 105, 214, 189, 93, 96, 224, 50, 125, 249, 38, 107, 162, 33, 110, 140, 210, 0, 95, 116, 139, 177, 129, 240, 225, 64, 42, 70, 72, 51, 38, 76, 166, 189, 134, 235, 125, 181, 119, 148, 42, 223, 166, 190, 243, 254, 201, 221, 184, 205, 46, 93, 97, 58, 98, 178, 168, 56, 44, 84, 134, 56, 220, 62, 103, 116, 93, 18, 13, 44, 179, 208, 66, 218, 182, 83, 57, 195, 13, 87, 38, 173, 219, 105, 122, 125, 84, 170, 42, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3574e32046154f7425058eb7e72d1942, }, ), received_events: EventHandle { count: 8825173707383063009, key: EventKey( [ 168, 95, 242, 119, 21, 131, 22, 72, 138, 157, 204, 45, 206, 114, 138, 55, 31, 236, 4, 147, 137, 51, 228, 196, ], ), }, sent_events: EventHandle { count: 6063132626387241676, key: EventKey( [ 204, 71, 18, 181, 159, 76, 123, 16, 115, 27, 53, 164, 65, 46, 184, 205, 181, 132, 220, 3, 1, 237, 119, 253, ], ), }, sequence_number: 9855505674025200283, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6f8b6bc02e8eb901535ff7b707d7e79ec7419440ecc669709e867c69ca99820f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50158defa6e5dccb8433c32a339011ee395f7cd4ed15a9b1abbe4b367f190dcb6293fb5ba35bd9a711b9e4754ba3e6add32fc280c742b9f2ca6743b5f1803bfba3b9eb72940e5914083fb4f7c8cb39be70dc9ab84b773d8239a5a000181cb4ac269bbe173b98d701243279ae7d7e7447272eca81e18cfe9557a468fb790118bede2cea2f86967d88a53db97405f9e109df4a97f912b18c8b36f33d393fd6ca42c1f7eeb06a3385cd5799dff1ce68ddb4137f6faf2dba82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed75e2f61e5adf23 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 222, 250, 110, 93, 204, 184, 67, 60, 50, 163, 57, 1, 30, 227, 149, 247, 205, 78, 209, 90, 155, 26, 187, 228, 179, 103, 241, 144, 220, 182, 41, 63, 181, 186, 53, 189, 154, 113, 27, 158, 71, 84, 186, 62, 106, 221, 50, 252, 40, 12, 116, 43, 159, 44, 166, 116, 59, 95, 24, 3, 191, 186, 59, 158, 183, 41, 64, 229, 145, 64, 131, 251, 79, 124, 140, 179, 155, 231, 13, 201, 171, 132, 183, 115, 216, 35, 154, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 81cb4ac269bbe173b98d701243279ae7, }, ), received_events: EventHandle { count: 2209275593512773591, key: EventKey( [ 207, 233, 85, 122, 70, 143, 183, 144, 17, 139, 237, 226, 206, 162, 248, 105, 103, 216, 138, 83, 219, 151, 64, 95, ], ), }, sent_events: EventHandle { count: 3139430783184081054, key: EventKey( [ 200, 179, 111, 51, 211, 147, 253, 108, 164, 44, 31, 126, 235, 6, 163, 56, 92, 213, 121, 157, 255, 28, 230, 141, ], ), }, sequence_number: 12167585977958089179, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(740c529117f776ab89163d34da8401de6f7858d50e7d1c4d8a5f6705e40d44d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0dbcba2d8bd4b58de07cadb7ec1001a43516a8427e751c95e7a334b6b9c7fa016a832a4fd43a4280c3102261e136421b324559d39f96cc67183cdb355b4e73cbd89e58813ff9233c54ab0fdbb97890246dac33a186d8df867a185ecf05e2eb46d51baf5b9ffabf9b86034112594329f22fd3a934f6322fa380a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a975102120e957fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 186, 45, 139, 212, 181, 141, 224, 124, 173, 183, 236, 16, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a43516a8427e751c95e7a334b6b9c7fa, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6a832a4fd43a4280c3102261e136421b, }, ), received_events: EventHandle { count: 7479518694345360690, key: EventKey( [ 60, 219, 53, 91, 78, 115, 203, 216, 158, 88, 129, 63, 249, 35, 60, 84, 171, 15, 219, 185, 120, 144, 36, 109, ], ), }, sent_events: EventHandle { count: 8828990240571077548, key: EventKey( [ 94, 207, 5, 226, 235, 70, 213, 27, 175, 91, 159, 250, 191, 155, 134, 3, 65, 18, 89, 67, 41, 242, 47, 211, ], ), }, sequence_number: 11853653642352932009, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7446d973db260bfb04814741e449200418018e57c9ed6537d37be4c0da555a35): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501284bd61553f414510c60a15c89866e18f7bc61e072d3723bad9c8b6a4442733daf64c1fb0ba9c100ef01c1beec142a18b641de60e54d9a35b34b00562b2038c3049b41189a52e564043dfe854c4fccd9a260949b910a78461ed1be5e6478be541a67985d1888fd638e89d6b28fb5aebce4d94d39a0d1120f32a6714d119927545569ce20e62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878f1749e023e4a8a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 214, 21, 83, 244, 20, 81, 12, 96, 161, 92, 137, 134, 110, 24, 247, 188, 97, 224, 114, 211, 114, 59, 173, 156, 139, 106, 68, 66, 115, 61, 175, 100, 193, 251, 11, 169, 193, 0, 239, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c1beec142a18b641de60e54d9a35b34b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4727377470362233686, key: EventKey( [ 154, 82, 229, 100, 4, 61, 254, 133, 76, 79, 204, 217, 162, 96, 148, 155, 145, 10, 120, 70, 30, 209, 190, 94, ], ), }, sent_events: EventHandle { count: 6744253804775897188, key: EventKey( [ 136, 253, 99, 142, 137, 214, 178, 143, 181, 174, 188, 228, 217, 77, 57, 160, 209, 18, 15, 50, 166, 113, 77, 17, ], ), }, sequence_number: 16582480779776632729, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(76f066569d98289f17c169bf2a7a2489bd51641f20052d408adc81e4a213ed1c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb0d4759eca092d771bcba3cf3c59880a7df62a77a23c38456f049e744807767ee090512389cdeb9a943f3ef2f1760001e873f59758ef359ffa3db83f634b89ba63b8aaa04ac8322f186c2bee68433f066fd27666cde661e1cc9ccb907ffc1ca5826d54dd13aec41c3618d29a63164cf31048aa764da358f5c36b0991a0c73ce5c8e6227e349ffd0765ca2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083068b21068611c90 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 176, 212, 117, 158, 202, 9, 45, 119, 27, 203, 163, 207, 60, 89, 136, 10, 125, 246, 42, 119, 162, 60, 56, 69, 111, 4, 158, 116, 72, 7, 118, 126, 224, 144, 81, 35, 137, 205, 235, 154, 148, 63, 62, 242, 241, 118, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e873f59758ef359ffa3db83f634b89ba, }, ), received_events: EventHandle { count: 3401000891466823779, key: EventKey( [ 108, 43, 238, 104, 67, 63, 6, 111, 210, 118, 102, 205, 230, 97, 225, 204, 156, 203, 144, 127, 252, 28, 165, 130, ], ), }, sent_events: EventHandle { count: 3899207629332632685, key: EventKey( [ 210, 154, 99, 22, 76, 243, 16, 72, 170, 118, 77, 163, 88, 245, 195, 107, 9, 145, 160, 199, 60, 229, 200, 230, ], ), }, sequence_number: 14584071754188357154, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(76f18aee162920c55e3cbafbf877eda8ce84213d00345639c04c82f820e423b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1da48045afd638d183862ebb6555646c9a9e06f918b83c351f4f6d7ab3fa00001dc63fdcb9cc070a18324d11bfe6a1a26583460a70f689da4b559d1a1dc8fb517cb1b9cd6a53d3ce1418eb87945366733944e4f85391143583bb77bb669630b845eadf2eef16a097877f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b7264253897658f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 128, 69, 175, 214, 56, 209, 131, 134, 46, 187, 101, 85, 100, 108, 154, 158, 6, 249, 24, 184, 60, 53, 31, 79, 109, 122, 179, 250, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 722771363852437021, key: EventKey( [ 50, 77, 17, 191, 230, 161, 162, 101, 131, 70, 10, 112, 246, 137, 218, 75, 85, 157, 26, 29, 200, 251, 81, 124, ], ), }, sent_events: EventHandle { count: 1499368081188567473, key: EventKey( [ 235, 135, 148, 83, 102, 115, 57, 68, 228, 248, 83, 145, 20, 53, 131, 187, 119, 187, 102, 150, 48, 184, 69, 234, ], ), }, sequence_number: 9189480278508121823, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(77d74fc4d1f23352bce07078ca8c2668fb1ea4404fadfbc3ef65b73c4921aa88): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152d8e74758f4d59f2dc89b458692a08cd45399126d44ac5b49a37ceda29a849ac8a8e3cbe01c9666b9b5eca61fc6a0b1185fd166ff001149a182ca1a7d3b3a244081c0dfe0fbbd9c578346e0cf03df618552c401753e18a7e38e9878994cedf62fc0893d0040d81d3f19390d7418b1abb2c81d4ba61dd5713e51c545a4d53d1cf0a6284b578178cb6306d5381f5118609eec1f59ab064614b35c7325546a1d3e8e4e4b4bc0bf164561cf92e03381042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e623a13b47cd12f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 231, 71, 88, 244, 213, 159, 45, 200, 155, 69, 134, 146, 160, 140, 212, 83, 153, 18, 109, 68, 172, 91, 73, 163, 124, 237, 162, 154, 132, 154, 200, 168, 227, 203, 224, 28, 150, 102, 185, 181, 236, 166, 31, 198, 160, 177, 24, 95, 209, 102, 255, 0, 17, 73, 161, 130, 202, 26, 125, 59, 58, 36, 64, 129, 192, 223, 224, 251, 189, 156, 87, 131, 70, 224, 207, 3, 223, 97, 133, 82, 196, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 753e18a7e38e9878994cedf62fc0893d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8362402863692765248, key: EventKey( [ 177, 171, 178, 200, 29, 75, 166, 29, 213, 113, 62, 81, 197, 69, 164, 213, 61, 28, 240, 166, 40, 75, 87, 129, ], ), }, sent_events: EventHandle { count: 5845453328936586104, key: EventKey( [ 96, 158, 236, 31, 89, 171, 6, 70, 20, 179, 92, 115, 37, 84, 106, 29, 62, 142, 78, 75, 75, 192, 191, 22, ], ), }, sequence_number: 324597687776141637, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(78ead423aa0c7005c9851a320738771e272fbc8ec5029d64ad1e06f20a5c005b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c990014382bfc797c4b1a813507905f348897ac5ee9c496a1c469a85a29294c3b45a6c1a3d33bbc55d0ffd29ac3310bea74f684e3128fcb996393628f33f8c8b1eb86bd7f11774000063bf919a9579614418a838796a95a7b963f7666e818512088106328c784b84c464e1db7c11839d530818fccf981e0c3a14ecb2d2e7b221ac738f963b2eee829f0264caf0411bd3a3f5b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708205991889d6676e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 191, 199, 151, 196, 177, 168, 19, 80, 121, 5, 243, 72, 137, 122, 197, 238, 156, 73, 106, 28, 70, 154, 133, 162, 146, 148, 195, 180, 90, 108, 26, 61, 51, 187, 197, 93, 15, 253, 41, 172, 51, 16, 190, 167, 79, 104, 78, 49, 40, 252, 185, 150, 57, 54, 40, 243, 63, 140, 139, 30, 184, 107, 215, 241, 23, 116, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4927353150770364259, key: EventKey( [ 168, 56, 121, 106, 149, 167, 185, 99, 247, 102, 110, 129, 133, 18, 8, 129, 6, 50, 140, 120, 75, 132, 196, 100, ], ), }, sent_events: EventHandle { count: 599996361630079969, key: EventKey( [ 252, 207, 152, 30, 12, 58, 20, 236, 178, 210, 231, 178, 33, 172, 115, 143, 150, 59, 46, 238, 130, 159, 2, 100, ], ), }, sequence_number: 13255681205325656266, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e2363d5c9904cd6ab56138226f5df15adf9455962188bda346bdf16afe49937): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001333d8f99533f495377edc563f2ec53ad22854798ed78ac1868f75bb929548b1dc2cbcfefbe906bd74159252a9528c468f196ac3f016b1901800cddc5034f6d451e5723d9460123c7ba98c10866e6c784ea5fbae7cc9280f7fe30c4e59855181b2f3a14cbd5f7caf6dcb956b49229cac39fa0f2c4600426733de9016daed80318bc73ff31793cf354eae9681a22d9c4ca7d82df6829df37cd25b5c4d6c3b710b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817986136a7309c29 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 143, 153, 83, 63, 73, 83, 119, 237, 197, 99, 242, 236, 83, 173, 34, 133, 71, 152, 237, 120, 172, 24, 104, 247, 91, 185, 41, 84, 139, 29, 194, 203, 207, 239, 190, 144, 107, 215, 65, 89, 37, 42, 149, 40, 196, 104, 241, 150, 172, 63, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6b1901800cddc5034f6d451e5723d946, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 23c7ba98c10866e6c784ea5fbae7cc92, }, ), received_events: EventHandle { count: 6167932320482260864, key: EventKey( [ 27, 47, 58, 20, 203, 213, 247, 202, 246, 220, 185, 86, 180, 146, 41, 202, 195, 159, 160, 242, 196, 96, 4, 38, ], ), }, sent_events: EventHandle { count: 277163160290016627, key: EventKey( [ 188, 115, 255, 49, 121, 60, 243, 84, 234, 233, 104, 26, 34, 217, 196, 202, 125, 130, 223, 104, 41, 223, 55, 205, ], ), }, sequence_number: 12758899796090336549, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f3ce5353a8adedb7f80c06e0f08dee1ca39a03dc9f4e04fa3acec51677698c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012badb7fccab15110b7e213e482b27d19b7e4b9d93aad6c270acb2ec822ff3a8cfb22cbc666afd5b09531163f015ad0fe90363a029b16b28508a3aef6a501430da987dff877865252b039deb3fb381eb29b479c40bf7d18775af35a5f32ab8673a2e0c8cea8696aa50de6d00e44991df399ce0847601e561884685f4a4fc5df422f3d7e6c805ff32252864c2c056f803d23ccc23215ed38562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bd6b7c59a39de1f8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 183, 252, 202, 177, 81, 16, 183, 226, 19, 228, 130, 178, 125, 25, 183, 228, 185, 217, 58, 173, 108, 39, 10, 203, 46, 200, 34, 255, 58, 140, 251, 34, 203, 198, 102, 175, 213, 176, 149, 49, 22, 63, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ad0fe90363a029b16b28508a3aef6a5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 430da987dff877865252b039deb3fb38, }, ), received_events: EventHandle { count: 9061032015253189150, key: EventKey( [ 119, 90, 243, 90, 95, 50, 171, 134, 115, 162, 224, 200, 206, 168, 105, 106, 165, 13, 230, 208, 14, 68, 153, 29, ], ), }, sent_events: EventHandle { count: 6205503194769824243, key: EventKey( [ 132, 104, 95, 74, 79, 197, 223, 66, 47, 61, 126, 108, 128, 95, 243, 34, 82, 134, 76, 44, 5, 111, 128, 61, ], ), }, sequence_number: 6212976361259322403, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80e9044ae7c5abee956384567060876f56958f9674c031b4c1d0896a3a2bcea1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011f9dfb10540d8fefba0dd8ba24b16c0708ba972df9d26e7f7279de1d830a1373012673d51f2bbafa5c55af94afd8915d2b01b2312dab9007620a5447dffa9b564f6fb132e3503cf8f21f18f0748df111e60099e955d97e2e47d472ea990481453edaa14fcb9aa9420619091886cb7383e61a3b7d6580605af9d01f07de40d8834e0ff96ad36e19ae0d2f21eb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70865a835b7b96f4fa4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 251, 16, 84, 13, 143, 239, 186, 13, 216, 186, 36, 177, 108, 7, 8, 186, 151, 45, 249, 210, 110, 127, 114, 121, 222, 29, 131, 10, 19, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2673d51f2bbafa5c55af94afd8915d2b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2312dab9007620a5447dffa9b564f6f, }, ), received_events: EventHandle { count: 2302175297478537905, key: EventKey( [ 240, 116, 141, 241, 17, 230, 0, 153, 233, 85, 217, 126, 46, 71, 212, 114, 234, 153, 4, 129, 69, 62, 218, 161, ], ), }, sent_events: EventHandle { count: 655562104142220111, key: EventKey( [ 134, 203, 115, 131, 230, 26, 59, 125, 101, 128, 96, 90, 249, 208, 31, 7, 222, 64, 216, 131, 78, 15, 249, 106, ], ), }, sequence_number: 16942875008946499283, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(817114f5e2e2b943a2ba4ad2948185a8134ec1eae16f4040852766475d349c9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0140ae5b6be40a322c38be0b00a8edc871d865b3f0bfdc7ba9ad812a4d14bb45f9924c343b7ab94e35e436a2b72f37dc365a3ba1e2a4cbf9656cf7d9e409f603787f00000bda3742540e4b3d188e83f65e8dacf03cd6b0e4d6f5901c2f45ad7d6384c6332ec0ffd47b223c077118b63946600fdb068ef2361defe91a30cd6af23dd05a5e7cd331f800c7c9e197862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b55502dff8455b3d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 91, 107, 228, 10, 50, 44, 56, 190, 11, 0, 168, 237, 200, 113, 216, 101, 179, 240, 191, 220, 123, 169, 173, 129, 42, 77, 20, 187, 69, 249, 146, 76, 52, 59, 122, 185, 78, 53, 228, 54, 162, 183, 47, 55, 220, 54, 90, 59, 161, 226, 164, 203, 249, 101, 108, 247, 217, 228, 9, 246, 3, 120, 127, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4416639614617901579, key: EventKey( [ 142, 131, 246, 94, 141, 172, 240, 60, 214, 176, 228, 214, 245, 144, 28, 47, 69, 173, 125, 99, 132, 198, 51, 46, ], ), }, sent_events: EventHandle { count: 8144544569926942656, key: EventKey( [ 182, 57, 70, 96, 15, 219, 6, 142, 242, 54, 29, 239, 233, 26, 48, 205, 106, 242, 61, 208, 90, 94, 124, 211, ], ), }, sequence_number: 9698468579309058097, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(82df1c5ca1c763a0a1cbada9b9621f9f339d73a9c7546812224a8e4e4eb8b1eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa015dd11184d7a061bd415865cc5e990389aef6cd0b0f9375a65953aba5a9a9be04cbcbb422fd3b9bc85107a85ac0c96321f785c673688e03c9fcb5ec9019a1142df63e7fe5e67ecc92c672c5681c051510775878b5b66a4fd105003bd88bab0000797c8b8eca4a3e521862014f9f1cc065c21532034e293fe933ed6f490166574a5d5186bfc82865f14a184a4a9da892c5a19ef9c126bf1ba3ad53bcfea9fb4673e957bd7965fa49da90bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70811e74220fa2ff397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 209, 17, 132, 215, 160, 97, 189, 65, 88, 101, 204, 94, 153, 3, 137, 174, 246, 205, 11, 15, 147, 117, 166, 89, 83, 171, 165, 169, 169, 190, 4, 203, 203, 180, 34, 253, 59, 155, 200, 81, 7, 168, 90, 192, 201, 99, 33, 247, 133, 198, 115, 104, 142, 3, 201, 252, 181, 236, 144, 25, 161, 20, 45, 246, 62, 127, 229, 230, 126, 204, 146, 198, 114, 197, 104, 28, 5, 21, 16, 119, 88, 120, 181, 182, 106, 79, 209, 5, 0, 59, 216, 139, 171, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5926256393501506681, key: EventKey( [ 98, 1, 79, 159, 28, 192, 101, 194, 21, 50, 3, 78, 41, 63, 233, 51, 237, 111, 73, 1, 102, 87, 74, 93, ], ), }, sent_events: EventHandle { count: 5400208654035027537, key: EventKey( [ 74, 74, 157, 168, 146, 197, 161, 158, 249, 193, 38, 191, 27, 163, 173, 83, 188, 254, 169, 251, 70, 115, 233, 87, ], ), }, sequence_number: 13515542493007280573, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(833106f009c4de41e3f78023aa743de433046da71d6eded83a0aaa465cd7e022): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c989012c27c3ff8af9a1334779ead1a6060cb62a042a33777ae11b84659a5e50e3bdbfbe7d86d1e9617d8888099832e20105f89fc824309f9caf7345a9037fb7c10006a1b2f0beab594918ffa6a8a839ba556e4e77d2e7f0cc4a1ab274be0afa812f51e79caad5c5b4cc4118565f60deb5781374593e7cd35dca808195ea9822257c0f18250e37950cdebd472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70840aeae644d6655b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 195, 255, 138, 249, 161, 51, 71, 121, 234, 209, 166, 6, 12, 182, 42, 4, 42, 51, 119, 122, 225, 27, 132, 101, 154, 94, 80, 227, 189, 191, 190, 125, 134, 209, 233, 97, 125, 136, 136, 9, 152, 50, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 05f89fc824309f9caf7345a9037fb7c1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5285444474266362118, key: EventKey( [ 255, 166, 168, 168, 57, 186, 85, 110, 78, 119, 210, 231, 240, 204, 74, 26, 178, 116, 190, 10, 250, 129, 47, 81, ], ), }, sent_events: EventHandle { count: 4741363269500574951, key: EventKey( [ 86, 95, 96, 222, 181, 120, 19, 116, 89, 62, 124, 211, 93, 202, 128, 129, 149, 234, 152, 34, 37, 124, 15, 24, ], ), }, sequence_number: 5169532092915584549, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(837d0ef38bb93b7afa0f97276fd54b2c4766c6a87da32d1f6f31866c49c377ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015da5a6632159ed10e5435fbd85b1b39940ba49afd69d4997345417223b2d1092086fd5bc014a5b60cb4a7d1e58f3eabc4bffd86c4df94067615fa61c3ec19dd39b4ae02c830accace5d7a42adc20b2b31c7818f24b0a05b0fa6f5af6ca98012f6428384080b71010279714d798c88900ad6b56ad0ecc416a1841b5303f3ac02408c0820bcb7b23014ec83aea75eac59bf539451ef6a4060344180027171256c9b0c603008741e183d99d369f38d941b327cce83eee13695ca70b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080b8870c794d33219 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 166, 99, 33, 89, 237, 16, 229, 67, 95, 189, 133, 177, 179, 153, 64, 186, 73, 175, 214, 157, 73, 151, 52, 84, 23, 34, 59, 45, 16, 146, 8, 111, 213, 188, 1, 74, 91, 96, 203, 74, 125, 30, 88, 243, 234, 188, 75, 255, 216, 108, 77, 249, 64, 103, 97, 95, 166, 28, 62, 193, 157, 211, 155, 74, 224, 44, 131, 10, 204, 172, 229, 215, 164, 42, 220, 32, 178, 179, 28, 120, 24, 242, 75, 10, 5, 176, 250, 111, 90, 246, 202, 152, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2f6428384080b71010279714d798c889, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7656625204916284333, key: EventKey( [ 65, 181, 48, 63, 58, 192, 36, 8, 192, 130, 11, 203, 123, 35, 1, 78, 200, 58, 234, 117, 234, 197, 155, 245, ], ), }, sent_events: EventHandle { count: 4900768125082813753, key: EventKey( [ 0, 39, 23, 18, 86, 201, 176, 198, 3, 0, 135, 65, 225, 131, 217, 157, 54, 159, 56, 217, 65, 179, 39, 204, ], ), }, sequence_number: 839741461903589096, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(843bee7ce752ed017ce6b013f9ae0f68540800459dfe56aa3a0ed40365bd064e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b87d90dc9be3772469f1f8f33bedce686e536b6468770ef74a753fa00017b417304a434f58fdddf70a6b11c8a0c6c327510ac6c486418353f18834180af34b751af9977a39a7ec5ec0924c627d105ff10e544da2577181847781beda9ce927209915f4920d16392420ed20ee8037b5178979616624bf04b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8f3825f67dc6b25 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 217, 13, 201, 190, 55, 114, 70, 159, 31, 143, 51, 190, 220, 230, 134, 229, 54, 182, 70, 135, 112, 239, 116, 167, 83, 250, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b417304a434f58fdddf70a6b11c8a0c, }, ), received_events: EventHandle { count: 7226145088382251628, key: EventKey( [ 53, 63, 24, 131, 65, 128, 175, 52, 183, 81, 175, 153, 119, 163, 154, 126, 197, 236, 9, 36, 198, 39, 209, 5, ], ), }, sent_events: EventHandle { count: 1762919398527799551, key: EventKey( [ 71, 120, 27, 237, 169, 206, 146, 114, 9, 145, 95, 73, 32, 209, 99, 146, 66, 14, 210, 14, 232, 3, 123, 81, ], ), }, sequence_number: 5471956431912998776, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(866e00437f3c70391603cd3b3d85ea5dbc0d5f1b1cf9dc988cd401588b5ba2d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30146248d6bcba9c5881e150c6cb2355463db0a7b22552310b5d121a6ab7ae6f06157c266d07cd6099a87e027175b752536bc39441304645185c0fda868021cb194dc301e3626cde701539e77105a4c08ef868b0324fa2aba4a015cd70871d1ff3432fd0d55bf063d0f7d2ef4eb7664f3cc5a186cca92ee942de5d30bfbb853e65708128836fc9d4ca837109b58784e0cf36e581809ccff82b06de46f8cfa1144084c0a2b2a5781bf170a04b38f8238df077d1ca02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70871e4f3453808dd7b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 141, 107, 203, 169, 197, 136, 30, 21, 12, 108, 178, 53, 84, 99, 219, 10, 123, 34, 85, 35, 16, 181, 209, 33, 166, 171, 122, 230, 240, 97, 87, 194, 102, 208, 124, 214, 9, 154, 135, 224, 39, 23, 91, 117, 37, 54, 188, 57, 68, 19, 4, 100, 81, 133, 192, 253, 168, 104, 2, 28, 177, 148, 220, 48, 30, 54, 38, 205, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 539e77105a4c08ef868b0324fa2aba4a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5cd70871d1ff3432fd0d55bf063d0f7d, }, ), received_events: EventHandle { count: 6542871971479942190, key: EventKey( [ 108, 202, 146, 238, 148, 45, 229, 211, 11, 251, 184, 83, 230, 87, 8, 18, 136, 54, 252, 157, 76, 168, 55, 16, ], ), }, sent_events: EventHandle { count: 6372297756957497499, key: EventKey( [ 9, 204, 255, 130, 176, 109, 228, 111, 140, 250, 17, 68, 8, 76, 10, 43, 42, 87, 129, 191, 23, 10, 4, 179, ], ), }, sequence_number: 11537233818179633807, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(882f4a6f5609975010ea1cab54c31fe3b4723bff2c3925c17471c414b36dad21): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9be01511a372b0b486f67b5dddf8012a87b4cdba5927417ab9ee1cb2336cb3679e6389720fb8c0ca773eceeef35a15be7e57e4a3c5e3bcf5a6e68039079a5ab6750aca669ae677caf9793d90f6f9a88914366eee6014d1e7bdfff2377503343267d18f7ba7d0110846b33e6caffa5da8dcaaae13fe215e1126d95d064341c18ee585b81b90a06f04d1279b07372a4430af22bf085def57c971580877d59d46218838eb9a37eda568ed25d3d663063da4cebd81ef75495e93b4db9145e170186c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080345a3de34aee842 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 55, 43, 11, 72, 111, 103, 181, 221, 223, 128, 18, 168, 123, 76, 219, 165, 146, 116, 23, 171, 158, 225, 203, 35, 54, 203, 54, 121, 230, 56, 151, 32, 251, 140, 12, 167, 115, 236, 238, 239, 53, 161, 91, 231, 229, 126, 74, 60, 94, 59, 207, 90, 110, 104, 3, 144, 121, 165, 171, 103, 80, 172, 166, 105, 174, 103, 124, 175, 151, 147, 217, 15, 111, 154, 136, 145, 67, 102, 238, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4d1e7bdfff2377503343267d18f7ba7d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 10846b33e6caffa5da8dcaaae13fe215, }, ), received_events: EventHandle { count: 2032360178873864929, key: EventKey( [ 238, 88, 91, 129, 185, 10, 6, 240, 77, 18, 121, 176, 115, 114, 164, 67, 10, 242, 43, 240, 133, 222, 245, 124, ], ), }, sent_events: EventHandle { count: 7121415306458699159, key: EventKey( [ 131, 142, 185, 163, 126, 218, 86, 142, 210, 93, 61, 102, 48, 99, 218, 76, 235, 216, 30, 247, 84, 149, 233, 59, ], ), }, sequence_number: 14016892090111539533, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(887342051a54a37092d8e18a2d0eb924c9499fb22b429861cf2e6600c56346d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd015056859f06a148d05c2ca74c92217a139eed26568d76bef643de37b7bf0c85d96983cdedebfd7ba3629148415f43da146380e739d683dfff3820f24d634606724493929235a0007791265ccb581eda85bd01b4a1b884fd91ad9c2a8cc23c21c384fb014dda7abfec6d1385e18a8d7a6dbe729803c2a4e324c36a391862513197ba8ee9441fac7e62b97c1b7a1c9b37ece068af61b43bf9feedb1cf2a1893151c088501daea74adb1881d1b15436ad4392c2c43ceda19e9444e2b77a7492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708677e6afacb98dccc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 86, 133, 159, 6, 161, 72, 208, 92, 44, 167, 76, 146, 33, 122, 19, 158, 237, 38, 86, 141, 118, 190, 246, 67, 222, 55, 183, 191, 12, 133, 217, 105, 131, 205, 237, 235, 253, 123, 163, 98, 145, 72, 65, 95, 67, 218, 20, 99, 128, 231, 57, 214, 131, 223, 255, 56, 32, 242, 77, 99, 70, 6, 114, 68, 147, 146, 146, 53, 160, 0, 119, 145, 38, 92, 203, 88, 30, 218, 133, 189, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b4a1b884fd91ad9c2a8cc23c21c384fb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4dda7abfec6d1385e18a8d7a6dbe7298, }, ), received_events: EventHandle { count: 4137333770898686467, key: EventKey( [ 98, 81, 49, 151, 186, 142, 233, 68, 31, 172, 126, 98, 185, 124, 27, 122, 28, 155, 55, 236, 224, 104, 175, 97, ], ), }, sent_events: EventHandle { count: 3084879905515191220, key: EventKey( [ 147, 21, 28, 8, 133, 1, 218, 234, 116, 173, 177, 136, 29, 27, 21, 67, 106, 212, 57, 44, 44, 67, 206, 218, ], ), }, sequence_number: 5307341713759856921, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(894e32dfdc3d71f50d154fee88627b1b0d2302026922a93e4197763ecb82e590): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160232b2c1904f0d5c8e92a8b25bdb35bb39ecc4292474ff0b2b09df4a5fa59934b0a01d7443a713b7f76e3dbb4c87d5b5923aa3cb2ec34b6069d8f5d865dc7abba4d3f6d879a5b59f34ee5908e7d031c8a812b5acd8f03024ef5081e5df127f4fa01f23cabbff4c46df2191abd6d3bba008d0037e04a5259ad3254184d3d44dc566e78fd08b15a048418001bab05cb4877b5aae8359438d7cf86bf521886e71378e74473be4f789ac054db2da46ca7974899fbc336066eb094f7bc1a552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800d186344a8a38f3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 43, 44, 25, 4, 240, 213, 200, 233, 42, 139, 37, 189, 179, 91, 179, 158, 204, 66, 146, 71, 79, 240, 178, 176, 157, 244, 165, 250, 89, 147, 75, 10, 1, 215, 68, 58, 113, 59, 127, 118, 227, 219, 180, 200, 125, 91, 89, 35, 170, 60, 178, 236, 52, 182, 6, 157, 143, 93, 134, 93, 199, 171, 186, 77, 63, 109, 135, 154, 91, 89, 243, 78, 229, 144, 142, 125, 3, 28, 138, 129, 43, 90, 205, 143, 3, 2, 78, 245, 8, 30, 93, 241, 39, 244, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f23cabbff4c46df2191abd6d3bba008d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6067102247165812791, key: EventKey( [ 77, 61, 68, 220, 86, 110, 120, 253, 8, 177, 90, 4, 132, 24, 0, 27, 171, 5, 203, 72, 119, 181, 170, 232, ], ), }, sent_events: EventHandle { count: 5962632658888987701, key: EventKey( [ 134, 231, 19, 120, 231, 68, 115, 190, 79, 120, 154, 192, 84, 219, 45, 164, 108, 167, 151, 72, 153, 251, 195, 54, ], ), }, sequence_number: 6132421614155886086, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8953a81e90ae478e42251a32b8423b8112f46bc07c55f3acb6682db5f97d5736): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950034229e80000cf3f6b933cc05626186cc85e3f15cad1aca06dd4e214cb48dd1d44d03bff7f55c25d173f14882fad2e1899f78953224c283ec67c0065f78d723bddd72f010f8fc6f48f4f8da9763cde252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d66a6e2f436f10 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 41, 232, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2762606787842228175, key: EventKey( [ 108, 200, 94, 63, 21, 202, 209, 172, 160, 109, 212, 226, 20, 203, 72, 221, 29, 68, 208, 59, 255, 127, 85, 194, ], ), }, sent_events: EventHandle { count: 3363396758217365341, key: EventKey( [ 153, 247, 137, 83, 34, 76, 40, 62, 198, 124, 0, 101, 247, 141, 114, 59, 221, 215, 47, 1, 15, 143, 198, 244, ], ), }, sequence_number: 2728684904581517199, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b697b0aaf7c19ea6810875724debae315f4fd6d81e7514a3dbdc053ff1b46df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015c9bdd1707bc4d69fc343268a655139306d08d33547b7958fe6c5bd85ecac474096d8089b5b69671828c794525704b8bcf8d33848317d3ac198898fb26395db9b5f262ac6a493ae4028cc72223f3f31e4dcfcb531eed6692625d0a526b01707d62a7d7588c205376926fac7204f500820c2576d384a71118ba88c08f0f98e37e4bb4718c2132a4300e33a6ed6e8329cf9a0c546d6037407e181be82a444386ee3c10fecbcd14faa462a008ec1c498e5093ae292413b138d9412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708665f066897aa53fd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 221, 23, 7, 188, 77, 105, 252, 52, 50, 104, 166, 85, 19, 147, 6, 208, 141, 51, 84, 123, 121, 88, 254, 108, 91, 216, 94, 202, 196, 116, 9, 109, 128, 137, 181, 182, 150, 113, 130, 140, 121, 69, 37, 112, 75, 139, 207, 141, 51, 132, 131, 23, 211, 172, 25, 136, 152, 251, 38, 57, 93, 185, 181, 242, 98, 172, 106, 73, 58, 228, 2, 140, 199, 34, 35, 243, 243, 30, 77, 207, 203, 83, 30, 237, 102, 146, 98, 93, 10, 82, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 707d62a7d7588c205376926fac7204f5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1272131463510559874, key: EventKey( [ 186, 136, 192, 143, 15, 152, 227, 126, 75, 180, 113, 140, 33, 50, 164, 48, 14, 51, 166, 237, 110, 131, 41, 207, ], ), }, sent_events: EventHandle { count: 9097332134579014810, key: EventKey( [ 27, 232, 42, 68, 67, 134, 238, 60, 16, 254, 203, 205, 20, 250, 164, 98, 160, 8, 236, 28, 73, 142, 80, 147, ], ), }, sequence_number: 4744886015593032110, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8c94f834093bfb0668f98c86f56511ee84a3c2b2f725fb094d2355bca457d3b6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01204195650d5f6ec30cac8a8e313c3e17bea10c6c5f2eca4ad68def5d8fb7c55e22018cc7fcb7bdb4aaebff2abbf0d4c177a7013a8f2a14ac0425124d63f0e1f2ba126a60fb2db23dc8856218d8aa674b6bc3405b69f4838ef6d0516f3be6fdb2e287c6355ef907a17a214b6218ba9232f1f9eb98f7562168a4a2548747b614f55ca36a18c5d8080977ba822a7e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8dc47b35ab1408c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 149, 101, 13, 95, 110, 195, 12, 172, 138, 142, 49, 60, 62, 23, 190, 161, 12, 108, 95, 46, 202, 74, 214, 141, 239, 93, 143, 183, 197, 94, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8cc7fcb7bdb4aaebff2abbf0d4c177a7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3a8f2a14ac0425124d63f0e1f2ba126a, }, ), received_events: EventHandle { count: 7099300554927373152, key: EventKey( [ 216, 170, 103, 75, 107, 195, 64, 91, 105, 244, 131, 142, 246, 208, 81, 111, 59, 230, 253, 178, 226, 135, 198, 53, ], ), }, sent_events: EventHandle { count: 7082791649541618014, key: EventKey( [ 186, 146, 50, 241, 249, 235, 152, 247, 86, 33, 104, 164, 162, 84, 135, 71, 182, 20, 245, 92, 163, 106, 24, 197, ], ), }, sequence_number: 9091222535173376216, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d14fde7339b0667f1bf44249bb9734fd63a300f201ea475c3145ac66c9cf8fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b98dd8a3b5612586a6834920e287f2771fcdbbe949de56b2b808e45ea9cee3aadccc639433f18a8c6c9392b178e771d1fd8d7de64b0472817b7fea4ce197b54e317457738e0fc2c63a99dab0124e5c9ac0d8a5bcbe2293143bfeab6c801ba39fd7cb66156c0c7d70c5410026b1790f5f52324e1011918aeab1f6222fde3a943c0d094c73696d088c0e8fe7d45a8e1c8f70b88c66b763818dbf7a07a3625b615ba78cf81ba3fc8fbab198e62ba25eff9b5203b94aaeb1b112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708de500ab9efa3f36f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 221, 138, 59, 86, 18, 88, 106, 104, 52, 146, 14, 40, 127, 39, 113, 252, 219, 190, 148, 157, 229, 107, 43, 128, 142, 69, 234, 156, 238, 58, 173, 204, 198, 57, 67, 63, 24, 168, 198, 201, 57, 43, 23, 142, 119, 29, 31, 216, 215, 222, 100, 176, 71, 40, 23, 183, 254, 164, 206, 25, 123, 84, 227, 23, 69, 119, 56, 224, 252, 44, 99, 169, 157, 171, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24e5c9ac0d8a5bcbe2293143bfeab6c8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ba39fd7cb66156c0c7d70c5410026b17, }, ), received_events: EventHandle { count: 1801968871263303056, key: EventKey( [ 174, 171, 31, 98, 34, 253, 227, 169, 67, 192, 208, 148, 199, 54, 150, 208, 136, 192, 232, 254, 125, 69, 168, 225, ], ), }, sent_events: EventHandle { count: 4068557813806004168, key: EventKey( [ 219, 247, 160, 122, 54, 37, 182, 21, 186, 120, 207, 129, 186, 63, 200, 251, 171, 25, 142, 98, 186, 37, 239, 249, ], ), }, sequence_number: 1232838040879833269, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d708cf2d2b540c8a2417fa420691ce3f1ad8b60835e7b2e69bf49522ec7d022): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b014e4019b0d2f065be4c71a751e0cd435a16deac109b10aa540dbf5d72ff8dc2f0ab0b59a53329a7095896fa831db870ea4c5c25437e0503aa9dfbfbc4ed5718ee130b87581cbd0db2a5a3a34d658adc00006969bb33cdd98e6d182cc750bc348645081f1ab925750bfc2d0972654ade65dd4ab0502a1cadbed57b18c92d3e144ebe990831cda40c23f5042b1bfc0759f4664ad04cf11dda03e772092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708427309c01ad92bfb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 25, 176, 210, 240, 101, 190, 76, 113, 167, 81, 224, 205, 67, 90, 22, 222, 172, 16, 155, 16, 170, 84, 13, 191, 93, 114, 255, 141, 194, 240, 171, 11, 89, 165, 51, 41, 167, 9, 88, 150, 250, 131, 29, 184, 112, 234, 76, 92, 37, 67, 126, 5, 3, 170, 157, 251, 251, 196, 237, 87, 24, 238, 19, 11, 135, 88, 28, 189, 13, 178, 165, 163, 163, 77, 101, 138, 220, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7894486672186501481, key: EventKey( [ 44, 199, 80, 188, 52, 134, 69, 8, 31, 26, 185, 37, 117, 11, 252, 45, 9, 114, 101, 74, 222, 101, 221, 74, ], ), }, sent_events: EventHandle { count: 8923247887415660720, key: EventKey( [ 201, 45, 62, 20, 78, 190, 153, 8, 49, 205, 164, 12, 35, 245, 4, 43, 27, 252, 7, 89, 244, 102, 74, 208, ], ), }, sequence_number: 680860497416679756, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8e4d89a126181e12427c53ae1d416e1036d3a2c161224de4f80c61d955cc465c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20145054246d9bee459595ea8d0c18d02247f52ec3f5d9c6695109d96bf895ef58ce6e9660a8298e25ccc5f60e6a5a9211ddbfafd1d5c9cbe367865205cf475d0fb589dd590d77d01782a3ed3877302e8c25c007c7ee661b7003ead14d507b55a7d18b110f3b8337243eca353b07bc121ac272dd77a325e67adece2570aa7d5615a1a182fc205117279a856f16cfbe466162a4a63ae5093e455d9f9caa5e052e973209d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a335a60b5439b40 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 66, 70, 217, 190, 228, 89, 89, 94, 168, 208, 193, 141, 2, 36, 127, 82, 236, 63, 93, 156, 102, 149, 16, 157, 150, 191, 137, 94, 245, 140, 230, 233, 102, 10, 130, 152, 226, 92, 204, 95, 96, 230, 165, 169, 33, 29, 219, 250, 253, 29, 92, 156, 190, 54, 120, 101, 32, 92, 244, 117, 208, 251, 88, 157, 213, 144, 215, 125, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 782a3ed3877302e8c25c007c7ee661b7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9032731047889251646, key: EventKey( [ 177, 16, 243, 184, 51, 114, 67, 236, 163, 83, 176, 123, 193, 33, 172, 39, 45, 215, 122, 50, 94, 103, 173, 236, ], ), }, sent_events: EventHandle { count: 1898937763148486626, key: EventKey( [ 47, 194, 5, 17, 114, 121, 168, 86, 241, 108, 251, 228, 102, 22, 42, 74, 99, 174, 80, 147, 228, 85, 217, 249, ], ), }, sequence_number: 11322176909164455370, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8e7b4759ae200fb2ac621f7072a8b542b946cbc02a84b744e4ac20fcaf151591): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f02241f0000230c829b87661712183a68a046dd6619d45fb8e82ade47c026d9b15b0524d5d840f6221455422a154c18744438516982fd4bcbc6d89c2eb9daa0f357c34980272a9c744eec1dcb65721c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708180d5b99d95bdf3c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1303623349762657315, key: EventKey( [ 58, 104, 160, 70, 221, 102, 25, 212, 95, 184, 232, 42, 222, 71, 192, 38, 217, 177, 91, 5, 36, 213, 216, 64, ], ), }, sent_events: EventHandle { count: 5482334585777038070, key: EventKey( [ 116, 68, 56, 81, 105, 130, 253, 75, 203, 198, 216, 156, 46, 185, 218, 160, 243, 87, 195, 73, 128, 39, 42, 156, ], ), }, sequence_number: 2049812703461789300, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(901881d25fb29fcd6073f14d9dd17faa7efc50c48e562d6995f4b77582cc075d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0152193b18d507cca04dbfe77228ea0949cdaf36528fd3ff128cfb7186e4f1f9836f1b4a2e130769dd718c46002b5e01734a823c3a9307c199612adf919ed9228e9d544b438dce3fe95f3a3097caec3d8d8e0d5201d1967f7f344ea9c40891732031f9280101ae743057670daf7ef988031a9db966a43e339b2870ed203f18a5c84952359c42a283d368a9ffee8f88cfca23a48f17efc77063e7e61ab8da1d188c12f984038ef41f6032576cfc630eb0fc363301402968390bf0006cbdfc24de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708369da9083da204da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 25, 59, 24, 213, 7, 204, 160, 77, 191, 231, 114, 40, 234, 9, 73, 205, 175, 54, 82, 143, 211, 255, 18, 140, 251, 113, 134, 228, 241, 249, 131, 111, 27, 74, 46, 19, 7, 105, 221, 113, 140, 70, 0, 43, 94, 1, 115, 74, 130, 60, 58, 147, 7, 193, 153, 97, 42, 223, 145, 158, 217, 34, 142, 157, 84, 75, 67, 141, 206, 63, 233, 95, 58, 48, 151, 202, 236, 61, 141, 142, 13, 82, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d1967f7f344ea9c40891732031f92801, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae743057670daf7ef988031a9db966a4, }, ), received_events: EventHandle { count: 4548896689617580862, key: EventKey( [ 165, 200, 73, 82, 53, 156, 66, 162, 131, 211, 104, 169, 255, 238, 143, 136, 207, 202, 35, 164, 143, 23, 239, 199, ], ), }, sent_events: EventHandle { count: 2151234197705417584, key: EventKey( [ 140, 18, 249, 132, 3, 142, 244, 31, 96, 50, 87, 108, 252, 99, 14, 176, 252, 54, 51, 1, 64, 41, 104, 57, ], ), }, sequence_number: 16007196866072604683, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90f4f011ebc8a11119a77d971fd0db60e8d7e5a70daa8576951058e5e656bf81): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122a659cb7e5c6f08e1886a146f8d9a6e02650635b8b17b64df2bf6892616f76908cedb011d17c2344abfafc794ec8ddb2024480a01d3e2a77e88bc36c782e95203ffc64e682f90ed9f6b93b803180bcc39caa3ff59a532b4527c7a3487aec56aa6167e38740deef97f6e2c672d3518e306032b66dc86f4362ae7274b471dfac3c530b995e497550c57d3e3791315842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fba6d9546aa55b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 166, 89, 203, 126, 92, 111, 8, 225, 136, 106, 20, 111, 141, 154, 110, 2, 101, 6, 53, 184, 177, 123, 100, 223, 43, 246, 137, 38, 22, 247, 105, 8, 206, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d17c2344abfafc794ec8ddb2024480a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d3e2a77e88bc36c782e95203ffc64e68, }, ), received_events: EventHandle { count: 268126268282474543, key: EventKey( [ 11, 204, 57, 202, 163, 255, 89, 165, 50, 180, 82, 124, 122, 52, 135, 174, 197, 106, 166, 22, 126, 56, 116, 13, ], ), }, sent_events: EventHandle { count: 3831832298492262894, key: EventKey( [ 227, 6, 3, 43, 102, 220, 134, 244, 54, 42, 231, 39, 75, 71, 29, 250, 195, 197, 48, 185, 149, 228, 151, 85, ], ), }, sequence_number: 9517534801751660300, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(93f0784a7e9a3cdf9fa67e0051a17c20f05c1f34d218149aed721fb3725464b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014be313282015730e2cacf63b10fa301a865d63a94ff24391a3709045b30ee6c0ac85d0e6e698f8b5ed1bfbab6fb535e29fe83ff3b927841056172f62e8742773266a3bfeefc63b87c4d0d6ca0000bc1fc614d96fc8301897729ced176b8a3e83ac54737935de0196e66f10d8ccccb538809a65210d517718f57815dff37a918e0cbb53a9f7a2f5ed8516b2ce5fa537aee00f6d846f83d4842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708373bc6328bb5d0bd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 227, 19, 40, 32, 21, 115, 14, 44, 172, 246, 59, 16, 250, 48, 26, 134, 93, 99, 169, 79, 242, 67, 145, 163, 112, 144, 69, 179, 14, 230, 192, 172, 133, 208, 230, 230, 152, 248, 181, 237, 27, 251, 171, 111, 181, 53, 226, 159, 232, 63, 243, 185, 39, 132, 16, 86, 23, 47, 98, 232, 116, 39, 115, 38, 106, 59, 254, 239, 198, 59, 135, 196, 208, 214, 202, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3515182487309787068, key: EventKey( [ 151, 114, 156, 237, 23, 107, 138, 62, 131, 172, 84, 115, 121, 53, 222, 1, 150, 230, 111, 16, 216, 204, 204, 181, ], ), }, sent_events: EventHandle { count: 8597667600716693560, key: EventKey( [ 245, 120, 21, 223, 243, 122, 145, 142, 12, 187, 83, 169, 247, 162, 245, 237, 133, 22, 178, 206, 95, 165, 55, 174, ], ), }, sequence_number: 9571419623055495136, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94300c6d723edab354876d340080a4ed6c1a961486dfd19e8fa7c8f484f1eb6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bbed2f22d8a2de887dbbb6e0000554002482b0e7c451848c06c7bec2035b1c1993f1253c40133f0eb370713b519f4c470e05bbbf34b6a18373edd083bfa5e5d914bda1446e8d81947241289ebf44493a23170bd2ac642d12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708009ecd5861247290 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 190, 210, 242, 45, 138, 45, 232, 135, 219, 187, 110, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5006892464783638613, key: EventKey( [ 72, 192, 108, 123, 236, 32, 53, 177, 193, 153, 63, 18, 83, 196, 1, 51, 240, 235, 55, 7, 19, 181, 25, 244, ], ), }, sent_events: EventHandle { count: 7659483577299529924, key: EventKey( [ 55, 62, 221, 8, 59, 250, 94, 93, 145, 75, 218, 20, 70, 232, 216, 25, 71, 36, 18, 137, 235, 244, 68, 147, ], ), }, sequence_number: 15078832389259014562, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94465daa5d24e014085e8ee54a9aa801afaaed88d46dce2d14db294cc96e2c28): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a73433dff09c7d4b5ad050001772d571a10db5182f0df79cc4b9799d762090cd393575a1018f64cd6160a2b2f135ae831524bf7cee76d0e074462f2fd8e8049d4e0045ee5221850e98e467ae4e1846d2d5be9343e57b06fe2d156e9000d4332fd101817a31efb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70855121528af7cf67c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 67, 61, 255, 9, 199, 212, 181, 173, 5, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 772d571a10db5182f0df79cc4b9799d7, }, ), received_events: EventHandle { count: 1178350544923396450, key: EventKey( [ 246, 76, 214, 22, 10, 43, 47, 19, 90, 232, 49, 82, 75, 247, 206, 231, 109, 14, 7, 68, 98, 242, 253, 142, ], ), }, sent_events: EventHandle { count: 2514519342001179008, key: EventKey( [ 80, 233, 142, 70, 122, 228, 225, 132, 109, 45, 91, 233, 52, 62, 87, 176, 111, 226, 209, 86, 233, 0, 13, 67, ], ), }, sequence_number: 18095079672404573490, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94ae44677e933b4b19c2fdaa545e8bbd8793bdbce802914e3a719e7c911967d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a6015998090355e3b0bdb15573d44de7e889b381b912a22e6aaba1e0a7b9ed3e60e0155e3f85732a829610b8c42d4520a69f16ff7c9e19f5552bd00a8fd02b8bcd0be2367cc00fdb6895c6cc6b8b55519ffe991db92936209a714398000054639a123e06a253182b33a622489db87566ef924184f8f705ada7007ff46e2c936afb098fa07b094d1849d9884b2a343edb01212a600f284f13cba6e47cb71ba09b9e9c96e5c3b10e112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708581c85e6bb898a50 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 9, 3, 85, 227, 176, 189, 177, 85, 115, 212, 77, 231, 232, 137, 179, 129, 185, 18, 162, 46, 106, 171, 161, 224, 167, 185, 237, 62, 96, 224, 21, 94, 63, 133, 115, 42, 130, 150, 16, 184, 196, 45, 69, 32, 166, 159, 22, 255, 124, 158, 25, 245, 85, 43, 208, 10, 143, 208, 43, 139, 205, 11, 226, 54, 124, 192, 15, 219, 104, 149, 198, 204, 107, 139, 85, 81, 159, 254, 153, 29, 185, 41, 54, 32, 154, 113, 67, 152, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6026386115044991828, key: EventKey( [ 43, 51, 166, 34, 72, 157, 184, 117, 102, 239, 146, 65, 132, 248, 247, 5, 173, 167, 0, 127, 244, 110, 44, 147, ], ), }, sent_events: EventHandle { count: 5551103945235626858, key: EventKey( [ 73, 217, 136, 75, 42, 52, 62, 219, 1, 33, 42, 96, 15, 40, 79, 19, 203, 166, 228, 124, 183, 27, 160, 155, ], ), }, sequence_number: 1229115203247316126, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94b2341e54bb9746404d5ef708d454f3776f8526f82487f09cc7ea197beb168e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a2014553c1345a92952f9991f78152a6cec8fb688291fa419bbf0007efe5246a819177e08b7dadd8870489634fcf06d8fa09f8c75d060bd1b7eacac5947d5bbab25ec2581293ef6601849e1be9200dfb869871ddef9b52973d00abd7bb38218ed02318c96a2f5c13ff761f00e76260367489c84548212ce032e249a7a1d9a0a696b0691819c65299278749a37dc20986e6a9aee7f27c324c3ad50871152b02a9409c1aa32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081667e1b7d16177d4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 193, 52, 90, 146, 149, 47, 153, 145, 247, 129, 82, 166, 206, 200, 251, 104, 130, 145, 250, 65, 155, 191, 0, 7, 239, 229, 36, 106, 129, 145, 119, 224, 139, 125, 173, 216, 135, 4, 137, 99, 79, 207, 6, 216, 250, 9, 248, 199, 93, 6, 11, 209, 183, 234, 202, 197, 148, 125, 91, 186, 178, 94, 194, 88, 18, 147, 239, 102, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 849e1be9200dfb869871ddef9b52973d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2580718859820193707, key: EventKey( [ 201, 106, 47, 92, 19, 255, 118, 31, 0, 231, 98, 96, 54, 116, 137, 200, 69, 72, 33, 44, 224, 50, 226, 73, ], ), }, sent_events: EventHandle { count: 7615752612290863527, key: EventKey( [ 25, 198, 82, 153, 39, 135, 73, 163, 125, 194, 9, 134, 230, 169, 174, 231, 242, 124, 50, 76, 58, 213, 8, 113, ], ), }, sequence_number: 11752877979104062229, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(955c5251b1bb7f78c4bee7d353b31e5d4c6ac09313aa1af3442b5883eade6f2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d0001c41f0329f1e9c710caa96aab504ac42600537b829a65f7201c182c7486519b29725c645bd09337b74d0dd50e8fae75ce7d922096df0f12e8574418b44420eea9bc684bc77ed54667a4f6aa1a069c83351fc0fd23cc8c7768d3a0fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f9a432aad2e4e8e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c41f0329f1e9c710caa96aab504ac426, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2026891848072723283, key: EventKey( [ 44, 116, 134, 81, 155, 41, 114, 92, 100, 91, 208, 147, 55, 183, 77, 13, 213, 14, 143, 174, 117, 206, 125, 146, ], ), }, sent_events: EventHandle { count: 4924659881826293280, key: EventKey( [ 180, 68, 32, 238, 169, 188, 104, 75, 199, 126, 213, 70, 103, 164, 246, 170, 26, 6, 156, 131, 53, 31, 192, 253, ], ), }, sequence_number: 18059666951391464483, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96712576e88035b594ca4c8f5fa40c724c96fc944cf49daae80cfa70e41d67a8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d107c31872fdd626d506d88452dc940b26e00017c7101d89f4867cc21e2cbdef8964849f898f805db4c875b18c042e63e6c038ef6f79fde3364f2ca986acd4774c599a16097013d69ad1fa20918087bb48c9f31a684efc77be07ce979e106d09e35fa49cf0b385777e2d3158c482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708041ce80d4b168921 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 49, 135, 47, 221, 98, 109, 80, 109, 136, 69, 45, 201, 64, 178, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7c7101d89f4867cc21e2cbdef8964849, }, ), received_events: EventHandle { count: 6595324682889107704, key: EventKey( [ 192, 66, 230, 62, 108, 3, 142, 246, 247, 159, 222, 51, 100, 242, 202, 152, 106, 205, 71, 116, 197, 153, 161, 96, ], ), }, sent_events: EventHandle { count: 694152122223886743, key: EventKey( [ 8, 123, 180, 140, 159, 49, 166, 132, 239, 199, 123, 224, 124, 233, 121, 225, 6, 208, 158, 53, 250, 73, 207, 11, ], ), }, sequence_number: 5227577267252057912, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96c1184c88abbc97200c5164d7de8f1a1d01d3f6a683103c18e404876acc11a8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501588e98614801e785b82a705e479bc0e8bcfa899d46d3f1eafbf926b331264867e85e7d9458a445ae1f7f56d56e86d0842386b4ed83735041be9c048798137e4978ffad2f19efb1ec6d598b4e9a09b5d9eeebd0f388cd8847430001285eadfcabc11041e880d37a10e2ec21fd8aa89bf1aafa5c185305921ca90f73f953c6a07ba992209c7c663a01960f1ba2c37b8a82eda1082e18e3e70ace14ac5a5b26022220d29836aba0496b48c4799696ee08ad9440d26b8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e5658d5979acd9f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 152, 97, 72, 1, 231, 133, 184, 42, 112, 94, 71, 155, 192, 232, 188, 250, 137, 157, 70, 211, 241, 234, 251, 249, 38, 179, 49, 38, 72, 103, 232, 94, 125, 148, 88, 164, 69, 174, 31, 127, 86, 213, 110, 134, 208, 132, 35, 134, 180, 237, 131, 115, 80, 65, 190, 156, 4, 135, 152, 19, 126, 73, 120, 255, 173, 47, 25, 239, 177, 236, 109, 89, 139, 78, 154, 9, 181, 217, 238, 235, 208, 243, 136, 205, 136, 71, 67, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 285eadfcabc11041e880d37a10e2ec21, }, ), received_events: EventHandle { count: 6699855350342388477, key: EventKey( [ 83, 5, 146, 28, 169, 15, 115, 249, 83, 198, 160, 123, 169, 146, 32, 156, 124, 102, 58, 1, 150, 15, 27, 162, ], ), }, sent_events: EventHandle { count: 3317079167027805123, key: EventKey( [ 227, 231, 10, 206, 20, 172, 90, 91, 38, 2, 34, 32, 210, 152, 54, 171, 160, 73, 107, 72, 196, 121, 150, 150, ], ), }, sequence_number: 10118412162632059118, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(994372d44614de639b3884d77f6e828fd704adf881b90895cd9853e28c780e6c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141eda6f27d26e97c9512b3d49cdd7feb9e2f375f735b7a8fd0fdf3f1e42edacffb044b515ae793a5fd5adff770b84ea446ee704c8eefa242fa6cd77db746983c78c801b87e3cf1fd1fc9f27ed5e92fb6badf990084e39be1964a3f3718956d51e796e2168f77855acfa4bd4db30b0e819687754a7e1a4001e823b0a26a18efad21e6369053e18c289fdcead8a22154e232e83c601767b2ea0ea7d3a365112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f17b8b6ac11ec43a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 237, 166, 242, 125, 38, 233, 124, 149, 18, 179, 212, 156, 221, 127, 235, 158, 47, 55, 95, 115, 91, 122, 143, 208, 253, 243, 241, 228, 46, 218, 207, 251, 4, 75, 81, 90, 231, 147, 165, 253, 90, 223, 247, 112, 184, 78, 164, 70, 238, 112, 76, 142, 239, 162, 66, 250, 108, 215, 125, 183, 70, 152, 60, 120, 200, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b87e3cf1fd1fc9f27ed5e92fb6badf99, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3980982607509447556, key: EventKey( [ 149, 109, 81, 231, 150, 226, 22, 143, 119, 133, 90, 207, 164, 189, 77, 179, 11, 14, 129, 150, 135, 117, 74, 126, ], ), }, sent_events: EventHandle { count: 7683897582510227482, key: EventKey( [ 239, 173, 33, 230, 54, 144, 83, 225, 140, 40, 159, 220, 234, 216, 162, 33, 84, 226, 50, 232, 60, 96, 23, 103, ], ), }, sequence_number: 1253588200728750770, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(998bd0617b5644401c544db78c71385c74a31bfe94b4f278e776c04ffccc7cdc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014babee049eeb50f3d129ec237fd0e6fb113c6724355085df562cbbb1680414cf60970ce16d373ca952055038fc99742587cdfff734ffaf0607d8084d81060adf84da9d30e8fe1dcd260351a80000cae8fb461efd090d18456cda549e61860fc36e4d90486deae26b9d71539d9496c7b457aebc1c141e53180ca80bda0c653e6234265ba20e39f040a898b7cd4fd0caba4dcb5ac4419922d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a69868a574ecb65c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 238, 4, 158, 235, 80, 243, 209, 41, 236, 35, 127, 208, 230, 251, 17, 60, 103, 36, 53, 80, 133, 223, 86, 44, 187, 177, 104, 4, 20, 207, 96, 151, 12, 225, 109, 55, 60, 169, 82, 5, 80, 56, 252, 153, 116, 37, 135, 205, 255, 247, 52, 255, 175, 6, 7, 216, 8, 77, 129, 6, 10, 223, 132, 218, 157, 48, 232, 254, 29, 205, 38, 3, 81, 168, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 939560303765219530, key: EventKey( [ 69, 108, 218, 84, 158, 97, 134, 15, 195, 110, 77, 144, 72, 109, 234, 226, 107, 157, 113, 83, 157, 148, 150, 199, ], ), }, sent_events: EventHandle { count: 5989246668106520500, key: EventKey( [ 12, 168, 11, 218, 12, 101, 62, 98, 52, 38, 91, 162, 14, 57, 240, 64, 168, 152, 183, 205, 79, 208, 202, 186, ], ), }, sequence_number: 15574178969146805069, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(99ad3cbe8a4b167d6361135074f507446a113aba922bf9dfe2cb35ee0c7dbfa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0dab1f87d563a501367e9cb8df9401e1e20a5e22f760ce2d1a98a8d47952d401a90f4b07f56ef607a8a00dae745359d22ab77bb700de54001831a52e9763dd183a41373a55a8d007ce0d684c35281a09285107636a9f29145618d54c13c1afd41d9815c9d14b620a83f65c3f800e19ea2768eb95998592a3c9342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b1044de06994b3f9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 31, 135, 213, 99, 165, 1, 54, 126, 156, 184, 223, 148, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e1e20a5e22f760ce2d1a98a8d47952d4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a90f4b07f56ef607a8a00dae745359d2, }, ), received_events: EventHandle { count: 23887992703399722, key: EventKey( [ 49, 165, 46, 151, 99, 221, 24, 58, 65, 55, 58, 85, 168, 208, 7, 206, 13, 104, 76, 53, 40, 26, 9, 40, ], ), }, sent_events: EventHandle { count: 6202628351457429329, key: EventKey( [ 213, 76, 19, 193, 175, 212, 29, 152, 21, 201, 209, 75, 98, 10, 131, 246, 92, 63, 128, 14, 25, 234, 39, 104, ], ), }, sequence_number: 3803751209993082347, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aa2d23f4c11f68a9bcfde322210cd0546e390400dd10dbb10a8795a944f5228): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30146ddd7e7fdecfdc4275b1fb1c5c4de529c1f6a949b6f95bfe39156345500495a0ce199836d8cda738447760b0832f8882470165f8c60e464446c5cb91f9eca3e3d6b94e321cda001ecbc4eed108937f57ffad073274b24d8011902161d008e2a1261079062f0d330790abf422471f63f341878b0e26bb5ad076ff516f1b082fcbd85e88ed6e459cc0c99381950a4750e4b05188743630001a56bfce60324c397a36d661b45ef660c68b773a5a05eb56fde501f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed7e5e138e1a61d5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 215, 231, 253, 236, 253, 196, 39, 91, 31, 177, 197, 196, 222, 82, 156, 31, 106, 148, 155, 111, 149, 191, 227, 145, 86, 52, 85, 0, 73, 90, 12, 225, 153, 131, 109, 140, 218, 115, 132, 71, 118, 11, 8, 50, 248, 136, 36, 112, 22, 95, 140, 96, 228, 100, 68, 108, 92, 185, 31, 158, 202, 62, 61, 107, 148, 227, 33, 205, 160, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ecbc4eed108937f57ffad073274b24d8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1902161d008e2a1261079062f0d33079, }, ), received_events: EventHandle { count: 3764998779305115402, key: EventKey( [ 120, 176, 226, 107, 181, 173, 7, 111, 245, 22, 241, 176, 130, 252, 189, 133, 232, 142, 214, 228, 89, 204, 12, 153, ], ), }, sent_events: EventHandle { count: 381414491873614136, key: EventKey( [ 135, 67, 99, 0, 1, 165, 107, 252, 230, 3, 36, 195, 151, 163, 109, 102, 27, 69, 239, 102, 12, 104, 183, 115, ], ), }, sequence_number: 2256547984678232229, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ad3b9db2fe8cb82a9e9864d374a8273bb557e0812a57fa8d4f1690ecd6ab59a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014d791c8d45a6216b5208873d4b54c44add29507927815a6803c63529c42f9ca79bc6edf0fdc0ea1dd3546c097cbdb3c3e8970f33ad75e46fe4240adb5a7c6eac8d7c718175c86ba09951f4d87c830160cd1b9ab127b3cb28c23789b1b28001010c11c168f3df4fd15d7bbe65fbd0e5266fe2461b42a0f60b18b7ac96c7bd653fc0fcc5ff55c4f625957629e9a3901d37ad59d1dbc4d34b66231834d60dd4b3eeb9f38722cbc2c427aa3538d03b08bbdc11ac23f035c8d3f871022101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f295bb16f2521a6e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 28, 141, 69, 166, 33, 107, 82, 8, 135, 61, 75, 84, 196, 74, 221, 41, 80, 121, 39, 129, 90, 104, 3, 198, 53, 41, 196, 47, 156, 167, 155, 198, 237, 240, 253, 192, 234, 29, 211, 84, 108, 9, 124, 189, 179, 195, 232, 151, 15, 51, 173, 117, 228, 111, 228, 36, 10, 219, 90, 124, 110, 172, 141, 124, 113, 129, 117, 200, 107, 160, 153, 81, 244, 216, 124, 131, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 60cd1b9ab127b3cb28c23789b1b28001, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c11c168f3df4fd15d7bbe65fbd0e526, }, ), received_events: EventHandle { count: 862052584473944687, key: EventKey( [ 183, 172, 150, 199, 189, 101, 63, 192, 252, 197, 255, 85, 196, 246, 37, 149, 118, 41, 233, 163, 144, 29, 55, 173, ], ), }, sent_events: EventHandle { count: 2550809611864887641, key: EventKey( [ 52, 214, 13, 212, 179, 238, 185, 243, 135, 34, 203, 194, 196, 39, 170, 53, 56, 208, 59, 8, 187, 220, 17, 172, ], ), }, sequence_number: 176195448924925987, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ba41a7dcc4692380c2f30ef8af897525434a48dcdd5ab95114244bcaf2bb874): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b40058e8c0e89c96efedacbcc76b5a7e3a55468b30c9360a4b1c85b65f38fcd7a0aed19ede80297c441b840a0baa0327f5b51166c21ebc37c16a3860001234220ff3304cf30d6f2021e2e1ed4e43440eca139912c2118f3f1f4d0293bfa62654c07d541804e0eab1b5f0a3a84bde633995e0d09f7203b188acb8a9cd4204b632e74a862a96d6bd52ef253438baa4cb8469a7c5b3888870e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088c54f81c36404407 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 5, 142, 140, 14, 137, 201, 110, 254, 218, 203, 204, 118, 181, 167, 227, 165, 84, 104, 179, 12, 147, 96, 164, 177, 200, 91, 101, 243, 143, 205, 122, 10, 237, 25, 237, 232, 2, 151, 196, 65, 184, 64, 160, 186, 160, 50, 127, 91, 81, 22, 108, 33, 235, 195, 124, 22, 163, 134, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 234220ff3304cf30d6f2021e2e1ed4e4, }, ), received_events: EventHandle { count: 2390445178942668852, key: EventKey( [ 243, 241, 244, 208, 41, 59, 250, 98, 101, 76, 7, 213, 65, 128, 78, 14, 171, 27, 95, 10, 58, 132, 189, 230, ], ), }, sent_events: EventHandle { count: 4260676865743558963, key: EventKey( [ 138, 203, 138, 156, 212, 32, 75, 99, 46, 116, 168, 98, 169, 109, 107, 213, 46, 242, 83, 67, 139, 170, 76, 184, ], ), }, sequence_number: 1046955214021368390, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9bf5d11cd3ea3253131b7006a52170eca5fe07189ef185c3024e6fd3a394a874): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01407bc3b85a4c22a0ae25dc016c334e21f05d2d986faa06c115083f987e5d01ba60d33cbd193bce01848271c8ffc1503860dbae1786b45e787f0a304161d640851700004b34e0ecdf4cb12d18b1212ab9ef08f9a8b957c2c3123f61746dc37a7a781be8ec5a11626f746a1c3718e149b5c342d09ce9bbd907b4477f9e548804835ccfe30723fb055b71e58edc872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087447cfec27e770f6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 195, 184, 90, 76, 34, 160, 174, 37, 220, 1, 108, 51, 78, 33, 240, 93, 45, 152, 111, 170, 6, 193, 21, 8, 63, 152, 126, 93, 1, 186, 96, 211, 60, 189, 25, 59, 206, 1, 132, 130, 113, 200, 255, 193, 80, 56, 96, 219, 174, 23, 134, 180, 94, 120, 127, 10, 48, 65, 97, 214, 64, 133, 23, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3292497327220077643, key: EventKey( [ 177, 33, 42, 185, 239, 8, 249, 168, 185, 87, 194, 195, 18, 63, 97, 116, 109, 195, 122, 122, 120, 27, 232, 236, ], ), }, sent_events: EventHandle { count: 3971166019751383386, key: EventKey( [ 225, 73, 181, 195, 66, 208, 156, 233, 187, 217, 7, 180, 71, 127, 158, 84, 136, 4, 131, 92, 207, 227, 7, 35, ], ), }, sequence_number: 9789856806097061371, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9c82be00b2a90b91553c01907df0120515592dd5bf1aac58f6168eeea572984e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619e0b1c00fafa026e210da777688bb19deffe79530bf4e4f9e5200013deaeced3cb893aa6fa90fdfd6333e535c03d5b28c20ab0718321993214a2b2a573c71c46c12be8d035ee9123d6a2bfef1e8729c44fb60e1721819adc44984d3e3b160ac2ca2157dbbca590a886af5352ac9bf7f2648edd8247c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70831a22d3fae073807 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 177, 192, 15, 175, 160, 38, 226, 16, 218, 119, 118, 136, 187, 25, 222, 255, 231, 149, 48, 191, 78, 79, 158, 82, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3deaeced3cb893aa6fa90fdfd6333e53, }, ), received_events: EventHandle { count: 552571167950832476, key: EventKey( [ 50, 25, 147, 33, 74, 43, 42, 87, 60, 113, 196, 108, 18, 190, 141, 3, 94, 233, 18, 61, 106, 43, 254, 241, ], ), }, sent_events: EventHandle { count: 8278004222387843816, key: EventKey( [ 25, 173, 196, 73, 132, 211, 227, 177, 96, 172, 44, 162, 21, 125, 187, 202, 89, 10, 136, 106, 245, 53, 42, 201, ], ), }, sequence_number: 8945513273493979071, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a1666ad5eec5e35a722969e6600f42f9651b28c82945f4d5db48e38b5627ae2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a98f5b05f5b1704b65e6f00012fac08c8fd29daccbb91905d9e96c70b3ee4cb15cd4c32071826bbb80dad58e79acd32b69668c9810145453f896714281b01fd571a78bc5a7e18f303425b823e3decdb2d4575871d02bb3a5711467d881f7994dab55035b8bcf32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d14d42fd5ef94bbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 245, 176, 95, 91, 23, 4, 182, 94, 111, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2fac08c8fd29daccbb91905d9e96c70b, }, ), received_events: EventHandle { count: 518561350818718782, key: EventKey( [ 38, 187, 184, 13, 173, 88, 231, 154, 205, 50, 182, 150, 104, 201, 129, 1, 69, 69, 63, 137, 103, 20, 40, 27, ], ), }, sent_events: EventHandle { count: 9104796820706950401, key: EventKey( [ 243, 3, 66, 91, 130, 62, 61, 236, 219, 45, 69, 117, 135, 29, 2, 187, 58, 87, 17, 70, 125, 136, 31, 121, ], ), }, sequence_number: 17563115185964964500, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a359842807de25c7d5a71a650a93e3f55225b569445cf35d5d6d365e222c1d03): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d840dfc399beca80e4d0e97d0a4a65775734afaecabb43d5fd25457a1daa7887fb7be56fa2cb0d43311ec7df9e00197aad8999cc55aba439193f8319914a2007ef5a1d4ceac005e1840aa2ca60f577583fbacfc74f707ddd8586e872ae081494a05b0e00998a4a31018109a789f9fcf7f93660509b2e06c22e0aa9f0b0b4eca1ece553c1195f5a127772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089a0de17fc95d0ff2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 132, 13, 252, 57, 155, 236, 168, 14, 77, 14, 151, 208, 164, 166, 87, 117, 115, 74, 250, 236, 171, 180, 61, 95, 210, 84, 87, 161, 218, 167, 136, 127, 183, 190, 86, 250, 44, 176, 212, 51, 17, 236, 125, 249, 224, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 97aad8999cc55aba439193f8319914a2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6773603843895850366, key: EventKey( [ 64, 170, 44, 166, 15, 87, 117, 131, 251, 172, 252, 116, 247, 7, 221, 216, 88, 110, 135, 42, 224, 129, 73, 74, ], ), }, sent_events: EventHandle { count: 1198982898718388229, key: EventKey( [ 16, 154, 120, 159, 159, 207, 127, 147, 102, 5, 9, 178, 224, 108, 34, 224, 170, 159, 11, 11, 78, 202, 30, 206, ], ), }, sequence_number: 8586009290745134165, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5928ffe109be1f8637076b996415aeabcac39d663af90f8b80893c82b77da5b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e21af1d499c6c64a99a0f40466a755bc0fe1933cc6ffd019465662c66a77814d7595400011eb6c55e5cac5367e52233816f28e7941d87094a8991583418d0098951b96415bed796810b0a90f70b66960dad3824037afa2bb5932edd6d361879842332ef0cdf735e3a6c1806853256d3e81fdabc9f67dbcf9510eb3f77d0ce2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aee0fb32ec728546 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 29, 73, 156, 108, 100, 169, 154, 15, 64, 70, 106, 117, 91, 192, 254, 25, 51, 204, 111, 253, 1, 148, 101, 102, 44, 102, 167, 120, 20, 215, 89, 84, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1eb6c55e5cac5367e52233816f28e794, }, ), received_events: EventHandle { count: 3771924706761475869, key: EventKey( [ 208, 9, 137, 81, 185, 100, 21, 190, 215, 150, 129, 11, 10, 144, 247, 11, 102, 150, 13, 173, 56, 36, 3, 122, ], ), }, sent_events: EventHandle { count: 3922034042625928186, key: EventKey( [ 121, 132, 35, 50, 239, 12, 223, 115, 94, 58, 108, 24, 6, 133, 50, 86, 211, 232, 31, 218, 188, 159, 103, 219, ], ), }, sequence_number: 14902542283379348943, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a66098ac93bbf6b70fe646b9242063b648a09b0933333f75d08547401fdbd963): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d10276e549f8b9f19989c04f07a351acead000195641b190f19628ffae03e3ad7a645e7eb5b47f9dc4f731c18c24a4d863fde1f8ec9867db4ff725239dc0df0d2fcf1b0244702039ccd5f0d3c1831551201c1d58d8466d8ab1e45f0236f1ac480beb2fa5088b913696f1d4920012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f825f4b482fcda47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 110, 84, 159, 139, 159, 25, 152, 156, 4, 240, 122, 53, 26, 206, 173, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 95641b190f19628ffae03e3ad7a645e7, }, ), received_events: EventHandle { count: 2050070065877310443, key: EventKey( [ 194, 74, 77, 134, 63, 222, 31, 142, 201, 134, 125, 180, 255, 114, 82, 57, 220, 13, 240, 210, 252, 241, 176, 36, ], ), }, sent_events: EventHandle { count: 4327220153663291975, key: EventKey( [ 49, 85, 18, 1, 193, 213, 141, 132, 102, 216, 171, 30, 69, 240, 35, 111, 26, 196, 128, 190, 178, 250, 80, 136, ], ), }, sequence_number: 81145184064705465, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a90e383bae5438d52eb3598992ccb87b493bb4d594b5169f41d66e4c837dfff8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133869c167642f2c800ac8c94411f84fcc73b0e65e2ccc3c61015ea3ebd9f1db97eec19015838f7e3908bbca76ff544f125fb23cd01d6f32ed3a9559fa461490c3f0304e3810002b9fac4e0a5234f18802fbd655c4dd503478044ecee18286d1e0e2126fed048782056d86334bdf12b1888d1154998b6c477f679b1fe053fe8d76c5a59a11b33457c1e0435abe4afa5552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d6c85822ad497959 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 156, 22, 118, 66, 242, 200, 0, 172, 140, 148, 65, 31, 132, 252, 199, 59, 14, 101, 226, 204, 195, 198, 16, 21, 234, 62, 189, 159, 29, 185, 126, 236, 25, 1, 88, 56, 247, 227, 144, 139, 188, 167, 111, 245, 68, 241, 37, 251, 35, 205, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d6f32ed3a9559fa461490c3f0304e381, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5702583937977202946, key: EventKey( [ 128, 47, 189, 101, 92, 77, 213, 3, 71, 128, 68, 236, 238, 24, 40, 109, 30, 14, 33, 38, 254, 208, 72, 120, ], ), }, sent_events: EventHandle { count: 3166520045729240608, key: EventKey( [ 136, 209, 21, 73, 152, 182, 196, 119, 246, 121, 177, 254, 5, 63, 232, 215, 108, 90, 89, 161, 27, 51, 69, 124, ], ), }, sequence_number: 6171532261040915486, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a967d1117c354064076cd321e2734dbe2e9f54bca383412c535f107ba346c747): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131ea010348374797244a6bd632ab3e0f228cc2176e482b4d735a8b92b7836ddd099a54b70e186c3c9149d491cbb7e6e8a85000014f508b1cc7678bc5b9163d158fdc6f6cb27240eb1e65626318d1f9f3b51b7e43cf7d74fd790dbe4fab74eff9524e4dc02277960615c7d5ee59185690e1cbc6c5f6c6219ea174a0ceb23236cd87e7d9c366b9ce8ca28b2ca54b442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bb2ee082986a1bae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 234, 1, 3, 72, 55, 71, 151, 36, 74, 107, 214, 50, 171, 62, 15, 34, 140, 194, 23, 110, 72, 43, 77, 115, 90, 139, 146, 183, 131, 109, 221, 9, 154, 84, 183, 14, 24, 108, 60, 145, 73, 212, 145, 203, 183, 230, 232, 168, 80, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4f508b1cc7678bc5b9163d158fdc6f6c, }, ), received_events: EventHandle { count: 7161397540942803634, key: EventKey( [ 209, 249, 243, 181, 27, 126, 67, 207, 125, 116, 253, 121, 13, 190, 79, 171, 116, 239, 249, 82, 78, 77, 192, 34, ], ), }, sent_events: EventHandle { count: 6480351964860683895, key: EventKey( [ 86, 144, 225, 203, 198, 197, 246, 198, 33, 158, 161, 116, 160, 206, 178, 50, 54, 205, 135, 231, 217, 195, 102, 185, ], ), }, sequence_number: 4921208628572228814, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aa30e52dbcf7bd2e09fd8d87acfe5b76155a789c80ffb0696cda5e7a85d2caa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd01604517f4e4b2c7e55d68fb78a058534722185da47525a3784a352ba513f54127ba8746114d37c3ad1b6ef1b5ba7428a584d3e64d971d19949b2577116f76268e5063e927ee13c4455a8aef132831dfaeaffcac9c979181dfe46643486baf5788280165410e9d81411de5e6b3e6eb5f513167010e625cf8fa4ac1f550329609072e503e83fa7d6753ead31f18c525b1e34fcda529deda5a15390a3e13ad827fb3e6b7ba3958b7a5e2c404b92c1860fefa6447f14dd31d1e1d14b855a0ff30a1ca145ca2da982b13192ca4bd042b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70810196f672e57c114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 23, 244, 228, 178, 199, 229, 93, 104, 251, 120, 160, 88, 83, 71, 34, 24, 93, 164, 117, 37, 163, 120, 74, 53, 43, 165, 19, 245, 65, 39, 186, 135, 70, 17, 77, 55, 195, 173, 27, 110, 241, 181, 186, 116, 40, 165, 132, 211, 230, 77, 151, 29, 25, 148, 155, 37, 119, 17, 111, 118, 38, 142, 80, 99, 233, 39, 238, 19, 196, 69, 90, 138, 239, 19, 40, 49, 223, 174, 175, 252, 172, 156, 151, 145, 129, 223, 228, 102, 67, 72, 107, 175, 87, 136, 40, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 65410e9d81411de5e6b3e6eb5f513167, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e625cf8fa4ac1f550329609072e503e, }, ), received_events: EventHandle { count: 2293434279201208963, key: EventKey( [ 197, 37, 177, 227, 79, 205, 165, 41, 222, 218, 90, 21, 57, 10, 62, 19, 173, 130, 127, 179, 230, 183, 186, 57, ], ), }, sent_events: EventHandle { count: 3222612252022912856, key: EventKey( [ 96, 254, 250, 100, 71, 241, 77, 211, 29, 30, 29, 20, 184, 85, 160, 255, 48, 161, 202, 20, 92, 162, 218, 152, ], ), }, sequence_number: 3099810956349870891, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab57d398a0ff8d871cf9160d829ac65cffb95b06cee7d5c50a4e0049b9dd954d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d5048a71c86922ea983cf564ea2a8d001abba28629ae1d7771a9f0ed26ab4e49bba692cbae0795ed1ad0b02fb2f08d04ed8cf215a47cabf581d8b5343dc00019f214efbed9d987fff53166f20d7448089d25a09796b8e5f18325a6295945149033d64af8f96fd0932cd8601d368fce66695d2403caca2105b18b2e21554ba29064ec6f3e5e7e36a2ca45e1021717962f6c8092b062cc8d5d9772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708578271c55b515c96 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 80, 72, 167, 28, 134, 146, 46, 169, 131, 207, 86, 78, 162, 168, 208, 1, 171, 186, 40, 98, 154, 225, 215, 119, 26, 159, 14, 210, 106, 180, 228, 155, 186, 105, 44, 186, 224, 121, 94, 209, 173, 11, 2, 251, 47, 8, 208, 78, 216, 207, 33, 90, 71, 202, 191, 88, 29, 139, 83, 67, 220, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9f214efbed9d987fff53166f20d74480, }, ), received_events: EventHandle { count: 6885559047888229001, key: EventKey( [ 50, 90, 98, 149, 148, 81, 73, 3, 61, 100, 175, 143, 150, 253, 9, 50, 205, 134, 1, 211, 104, 252, 230, 102, ], ), }, sent_events: EventHandle { count: 6561923517707768469, key: EventKey( [ 178, 226, 21, 84, 186, 41, 6, 78, 198, 243, 229, 231, 227, 106, 44, 164, 94, 16, 33, 113, 121, 98, 246, 200, ], ), }, sequence_number: 8636168816168413961, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aefdcd533240c00da3755a3e9a9fad9c5fff83b6673dac76b77b85cd8ea5e179): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930136ca7021f72c5dcba116f20cf8ae69301271273b6e1a84898c9439e7a753332fc4e0f7d59a4ad4497a11b6000f4a4a6989c617dec070ec000135ff096d892090f779511b8808061c04f5b2644f19e2ea20186913ac334a0c17eb31fceb4424707fc7219af458033726e69f529d6a9854d75218e8ef42f8c4180107b88f703b38d7bb74bb69fa71e3327494200991bfce30d2002101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880e0cc251c39a9a7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 112, 33, 247, 44, 93, 203, 161, 22, 242, 12, 248, 174, 105, 48, 18, 113, 39, 59, 110, 26, 132, 137, 140, 148, 57, 231, 167, 83, 51, 47, 196, 224, 247, 213, 154, 74, 212, 73, 122, 17, 182, 0, 15, 74, 74, 105, 137, 198, 23, 222, 192, 112, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 35ff096d892090f779511b8808061c04, }, ), received_events: EventHandle { count: 2371956752098046709, key: EventKey( [ 105, 19, 172, 51, 74, 12, 23, 235, 49, 252, 235, 68, 36, 112, 127, 199, 33, 154, 244, 88, 3, 55, 38, 230, ], ), }, sent_events: EventHandle { count: 5969332844703339167, key: EventKey( [ 232, 239, 66, 248, 196, 24, 1, 7, 184, 143, 112, 59, 56, 215, 187, 116, 187, 105, 250, 113, 227, 50, 116, 148, ], ), }, sequence_number: 59163409644587296, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b06a0c5c9c18e50ad0a6858d9693e57502b3db7ca232a07d5bca3e905d9758e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95407ee0eb46b172ac90000b9c8e0fa3ef3cb4d1828eb6842685fa7c061fadd732b6af85649bde59089b30b168b020f979d81d401183f83aaa132a6a36a4d4d1656aeb6f54de6942b20fe2a25612d37a2ef448570de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708032c84d0214d013c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 14, 180, 107, 23, 42, 201, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5605841613015271609, key: EventKey( [ 40, 235, 104, 66, 104, 95, 167, 192, 97, 250, 221, 115, 43, 106, 248, 86, 73, 189, 229, 144, 137, 179, 11, 22, ], ), }, sent_events: EventHandle { count: 131872802944778891, key: EventKey( [ 63, 131, 170, 161, 50, 166, 163, 106, 77, 77, 22, 86, 174, 182, 245, 77, 230, 148, 43, 32, 254, 42, 37, 97, ], ), }, sequence_number: 16028457604936251181, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b0c1c72cb882d34b984f492416d35f6cbcd0771489abc469d23a367135519a5e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0150cdf66bfae01c00bffd3ac0630721e5a4282bbf8cbe4b3b2aee7cc4cc60485b9f288faf616732463db7521e221660165471fc8ac6f9a7a372a357d23398d7afc6581dfe69577b06040d4c2868ee98d00301ed5ccfc6737893c84f34dca9b1527a6f019693e568cae281703d7a7149d148f60d475c4b27d4ddca671883411eb8d3dc6f5817b6f458f5e0daaf36e7153899e94ba865d2612ce6c22a331854808a7e1f07ed4397542a053a18920e924a2be8cae239ba2cb60465f2841c772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0c82c8b07b49c47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 246, 107, 250, 224, 28, 0, 191, 253, 58, 192, 99, 7, 33, 229, 164, 40, 43, 191, 140, 190, 75, 59, 42, 238, 124, 196, 204, 96, 72, 91, 159, 40, 143, 175, 97, 103, 50, 70, 61, 183, 82, 30, 34, 22, 96, 22, 84, 113, 252, 138, 198, 249, 167, 163, 114, 163, 87, 210, 51, 152, 215, 175, 198, 88, 29, 254, 105, 87, 123, 6, 4, 13, 76, 40, 104, 238, 152, 208, 3, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ed5ccfc6737893c84f34dca9b1527a6f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9693e568cae281703d7a7149d148f60d, }, ), received_events: EventHandle { count: 7479034034464185415, key: EventKey( [ 131, 65, 30, 184, 211, 220, 111, 88, 23, 182, 244, 88, 245, 224, 218, 175, 54, 231, 21, 56, 153, 233, 75, 168, ], ), }, sent_events: EventHandle { count: 3686973538799047269, key: EventKey( [ 84, 128, 138, 126, 31, 7, 237, 67, 151, 84, 42, 5, 58, 24, 146, 14, 146, 74, 43, 232, 202, 226, 57, 186, ], ), }, sequence_number: 8582881166473082412, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b109956ac5014a9872b69c13cdec08cfbcae1aed6b0acac9f6a3042e8945c0b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014e92e299778aaa7b8b20d6d8acbdf89ac380e048b3d7eb0393fc1beb5ba0e3788d8c9b52094c0075bc1dc9bfcb70bc353e4ee033c9ddbdb7e53588915a9588b41eb0e42776ddb6a4a7cfa98c9e6608017bb64343fba5b0607c9b0b2a9efdaff401022d1c41ec28476013280e5e0b8fcd2769d3904c783ffa2c18fa0bdfb099bfa0fe5cb6e3630daa127a830485fc8e70a46f97b9de18a604604318ee9d973412b31cb1a2481c69f75168537c2eb3622e376e5ac42f2059722e26472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e0d24d388ac5d46 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 226, 153, 119, 138, 170, 123, 139, 32, 214, 216, 172, 189, 248, 154, 195, 128, 224, 72, 179, 215, 235, 3, 147, 252, 27, 235, 91, 160, 227, 120, 141, 140, 155, 82, 9, 76, 0, 117, 188, 29, 201, 191, 203, 112, 188, 53, 62, 78, 224, 51, 201, 221, 189, 183, 229, 53, 136, 145, 90, 149, 136, 180, 30, 176, 228, 39, 118, 221, 182, 164, 167, 207, 169, 140, 158, 102, 8, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7bb64343fba5b0607c9b0b2a9efdaff4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 022d1c41ec28476013280e5e0b8fcd27, }, ), received_events: EventHandle { count: 3240972667759678313, key: EventKey( [ 250, 11, 223, 176, 153, 191, 160, 254, 92, 182, 227, 99, 13, 170, 18, 122, 131, 4, 133, 252, 142, 112, 164, 111, ], ), }, sent_events: EventHandle { count: 4854885509733726615, key: EventKey( [ 238, 157, 151, 52, 18, 179, 28, 177, 162, 72, 28, 105, 247, 81, 104, 83, 124, 46, 179, 98, 46, 55, 110, 90, ], ), }, sequence_number: 5126836294464319428, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b39971a9343071c1e2d3fa59133d83b5832555f3d06ed95ae871c95d19b5d564): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01616f891069d05b9dfd1bb96c7d3ce813e1b4b5a1396dddde7c49dca43a8eb58ec6eb4c4c714fa7ae01f37e0d01c393b4045cad885fddc3db786f43d4ea8c8d3dfa813ee044de5a24e85ca22a4c612bb5fe70b6b48ce137a69e5153a0c611c6a0444a00003605377dbf97de401818ba2403a25b36cceab59815d67c0e68cd51aef3183f6b90fd2c8dd66831f82c1889c51bdd0ec00fbb6de213f9d7d3f473d7e26da677eb58d660734168186de6262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087a876740e0d17d07 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 111, 137, 16, 105, 208, 91, 157, 253, 27, 185, 108, 125, 60, 232, 19, 225, 180, 181, 161, 57, 109, 221, 222, 124, 73, 220, 164, 58, 142, 181, 142, 198, 235, 76, 76, 113, 79, 167, 174, 1, 243, 126, 13, 1, 195, 147, 180, 4, 92, 173, 136, 95, 221, 195, 219, 120, 111, 67, 212, 234, 140, 141, 61, 250, 129, 62, 224, 68, 222, 90, 36, 232, 92, 162, 42, 76, 97, 43, 181, 254, 112, 182, 180, 140, 225, 55, 166, 158, 81, 83, 160, 198, 17, 198, 160, 68, 74, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4674340311952459062, key: EventKey( [ 24, 186, 36, 3, 162, 91, 54, 204, 234, 181, 152, 21, 214, 124, 14, 104, 205, 81, 174, 243, 24, 63, 107, 144, ], ), }, sent_events: EventHandle { count: 3240394258239007997, key: EventKey( [ 137, 197, 27, 221, 14, 192, 15, 187, 109, 226, 19, 249, 215, 211, 244, 115, 215, 226, 109, 166, 119, 235, 88, 214, ], ), }, sequence_number: 2803047769680474976, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b426f89709f695cc9a9834f75e98252818392b51ee84beac9cdd5e9f2c98819d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988011b06ba32467c7cb45d30a705794e5390b1ed5d58994862487951d7f701e315fd90dff2bf5f0af911b836210e7201b2bf86d1902fcd9d2fd9482d82b2f9919bf03389e6560c4e1876fa257a3e29c8774dfeefb445a3c5c404804ebe7bb221ee993d2280c6b5b85518ca10fbc32809e564238d17cb96381023c5055dfd33130f0328ce4f4480bfdadb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b703e91dcf3f0836 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 186, 50, 70, 124, 124, 180, 93, 48, 167, 5, 121, 78, 83, 144, 177, 237, 93, 88, 153, 72, 98, 72, 121, 81, 215, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e315fd90dff2bf5f0af911b836210e72, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2bf86d1902fcd9d2fd9482d82b2f991, }, ), received_events: EventHandle { count: 5623965582823256219, key: EventKey( [ 118, 250, 37, 122, 62, 41, 200, 119, 77, 254, 239, 180, 69, 163, 197, 196, 4, 128, 78, 190, 123, 178, 33, 238, ], ), }, sent_events: EventHandle { count: 6176886753096514969, key: EventKey( [ 202, 16, 251, 195, 40, 9, 229, 100, 35, 141, 23, 203, 150, 56, 16, 35, 197, 5, 93, 253, 51, 19, 15, 3, ], ), }, sequence_number: 15842185196851940904, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b4b6c502f2f29a4d50595799035f5014da8d8adefe9c404509d2f82d133a8d18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c232a2d2708024cf0cf0a4c7050183b20be9699b965e71db2388a96c5ff203198a8318f48fc92bcd8bca8dafec3a0e9df7f21743a55dbda6774c176de0178f8a97d125adab692ea1b21f5f1e857003666cc61f3fd2b06186c2f2f44fd84ee6712c0d54180ce24c5f49a88363824e4691f1f6b55e368c3461868a51d7c02bd2b47f7d1bf87f0be7357ad86a24e08fa93d0bc8b4ed1136226b62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708001b972500cf8a10 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 42, 45, 39, 8, 2, 76, 240, 207, 10, 76, 112, 80, 24, 59, 32, 190, 150, 153, 185, 101, 231, 29, 178, 56, 138, 150, 197, 255, 32, 49, 152, 168, 49, 143, 72, 252, 146, 188, 216, 188, 168, 218, 254, 195, 160, 233, 223, 127, 33, 116, 58, 85, 219, 218, 103, 116, 193, 118, 222, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 78f8a97d125adab692ea1b21f5f1e857, }, ), key_rotation_capability: None, received_events: EventHandle { count: 444728209985791542, key: EventKey( [ 108, 47, 47, 68, 253, 132, 238, 103, 18, 192, 213, 65, 128, 206, 36, 197, 244, 154, 136, 54, 56, 36, 228, 105, ], ), }, sent_events: EventHandle { count: 5099034528713482015, key: EventKey( [ 104, 165, 29, 124, 2, 189, 43, 71, 247, 209, 191, 135, 240, 190, 115, 87, 173, 134, 162, 78, 8, 250, 147, 208, ], ), }, sequence_number: 13125286001273375676, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b50d8a4d921fc591619c2b72f32dcf3a9cbda349198ea8a1dde104f8d5257bfb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac013fe86d8833323bb128932afe8734f474d81061c68883a6e36f3c643d5b2c33b1945db3e8b6a634bdaeb46fcb479b78d05e43108f3932400628d84096c581c92e0199e63c824c88381a426095a630832107011ad5302d92a2b0013a48362704e12c6b53848b3c9c07227f1857ff6f8563073a97667282a2fa9b9fcdc3e0249b9f883b72a48b4a4f0f51651818e7242de710694b183ec20e3f1c7948e797e0e6f2edebfad939ebff86c0296d2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087da67b16251c9d8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 109, 136, 51, 50, 59, 177, 40, 147, 42, 254, 135, 52, 244, 116, 216, 16, 97, 198, 136, 131, 166, 227, 111, 60, 100, 61, 91, 44, 51, 177, 148, 93, 179, 232, 182, 166, 52, 189, 174, 180, 111, 203, 71, 155, 120, 208, 94, 67, 16, 143, 57, 50, 64, 6, 40, 216, 64, 150, 197, 129, 201, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 99e63c824c88381a426095a630832107, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1ad5302d92a2b0013a48362704e12c6b, }, ), received_events: EventHandle { count: 9160892959637079123, key: EventKey( [ 87, 255, 111, 133, 99, 7, 58, 151, 102, 114, 130, 162, 250, 155, 159, 205, 195, 224, 36, 155, 159, 136, 59, 114, ], ), }, sent_events: EventHandle { count: 1757900355754691492, key: EventKey( [ 231, 36, 45, 231, 16, 105, 75, 24, 62, 194, 14, 63, 28, 121, 72, 231, 151, 224, 230, 242, 237, 235, 250, 217, ], ), }, sequence_number: 3273318411043597113, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b5d566dfb174d3d30b87c2124468f47a1b55b04584fb6b66c9daae300288426f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94d000000a2bf9d5f5b717072182a60276eb568cea2a7e3d908f019712b8539b5abb0072ed9a4b71063a9e47e021871dfe623272eb84be670b7b7250f0feaf1d258439e454ed1534c1fc1a1f536942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70848915c87eda05a87 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8246215554975514530, key: EventKey( [ 42, 96, 39, 110, 181, 104, 206, 162, 167, 227, 217, 8, 240, 25, 113, 43, 133, 57, 181, 171, 176, 7, 46, 217, ], ), }, sent_events: EventHandle { count: 179832451304044452, key: EventKey( [ 113, 223, 230, 35, 39, 46, 184, 75, 230, 112, 183, 183, 37, 15, 15, 234, 241, 210, 88, 67, 158, 69, 78, 209, ], ), }, sequence_number: 10679993641434303571, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b6e11006efe8b2394f6c9a9304705c62efcdc670736b0c609993b428c34592e3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e21f30ec656cc225988da23e93de349381096affe382c7703ae8ba3786794ca7878cc0186affebbddf1bc72b1dec73ef8354d36007fffc5e591fd1d7518b3a1d70fe97b045d6ef0f09bdab9f1f907306a1655934ead564735fc24fb1c7f185f240cec626f7e66c64c8c9c3c0ab28a6b25fede791b1e638b1ba8793000f9022101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085326d6777a687939 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 14, 198, 86, 204, 34, 89, 136, 218, 35, 233, 61, 227, 73, 56, 16, 150, 175, 254, 56, 44, 119, 3, 174, 139, 163, 120, 103, 148, 202, 120, 120, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86affebbddf1bc72b1dec73ef8354d36, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8439180079829221247, key: EventKey( [ 179, 161, 215, 15, 233, 123, 4, 93, 110, 240, 240, 155, 218, 185, 241, 249, 7, 48, 106, 22, 85, 147, 78, 173, ], ), }, sent_events: EventHandle { count: 9159471878433490774, key: EventKey( [ 95, 36, 12, 236, 98, 111, 126, 102, 198, 76, 140, 156, 60, 10, 178, 138, 107, 37, 254, 222, 121, 27, 30, 99, ], ), }, sequence_number: 214202665476299659, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8cf2031632ef696b5c44d435f668eb0a2fe923fce9cf38835cc19f35a68b09f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0db1ad43f727ff544d4d8babe6320111d911fe2aa3ffc63b42465ed2a2f77200ef439910a9a03e0318a25e33e60ad439f7bdb974ed84940a349c1155fb41663eeb9c9f1957e48b0c6018e10ea41d5ac4652a40aa566ed7643735ade225822508801715f6f52e208d431c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846a2b0b41e59cc65 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 173, 67, 247, 39, 255, 84, 77, 77, 139, 171, 230, 50, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 11d911fe2aa3ffc63b42465ed2a2f772, }, ), key_rotation_capability: None, received_events: EventHandle { count: 233800878658241519, key: EventKey( [ 162, 94, 51, 230, 10, 212, 57, 247, 189, 185, 116, 237, 132, 148, 10, 52, 156, 17, 85, 251, 65, 102, 62, 235, ], ), }, sent_events: EventHandle { count: 6921060540191711132, key: EventKey( [ 225, 14, 164, 29, 90, 196, 101, 42, 64, 170, 86, 110, 215, 100, 55, 53, 173, 226, 37, 130, 37, 8, 128, 23, ], ), }, sequence_number: 2036626625867937301, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8e4cec6a78cb7620eaf2af2ff237bdd4f9feb95e56db44a3a2001b6a55e3f7d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c990014355e6b0e48d36e7b1a18f5609bc7c09f054ca1323d6a0c416da36977423f6ed293c25305e37a0ab3ec5679ce6e2c2d79f359b2ce88660a242b49b848d8910f7cb85dfee0000d09b503dcd51f32f186c4495330ec6edb895ca72cef53d5b97b1429f00d75581ef054752146c86af14180ea680a416bb78eb99dbb44c807aac0d07d752c3b2ca8f5507af999b01d0fe042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70841e8d258853dab84 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 85, 230, 176, 228, 141, 54, 231, 177, 161, 143, 86, 9, 188, 124, 9, 240, 84, 202, 19, 35, 214, 160, 196, 22, 218, 54, 151, 116, 35, 246, 237, 41, 60, 37, 48, 94, 55, 160, 171, 62, 197, 103, 156, 230, 226, 194, 215, 159, 53, 155, 44, 232, 134, 96, 162, 66, 180, 155, 132, 141, 137, 16, 247, 203, 133, 223, 238, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3455195281062140880, key: EventKey( [ 108, 68, 149, 51, 14, 198, 237, 184, 149, 202, 114, 206, 245, 61, 91, 151, 177, 66, 159, 0, 215, 85, 129, 239, ], ), }, sent_events: EventHandle { count: 1490557800438449925, key: EventKey( [ 14, 166, 128, 164, 22, 187, 120, 235, 153, 219, 180, 76, 128, 122, 172, 13, 7, 215, 82, 195, 178, 202, 143, 85, ], ), }, sequence_number: 359953725560303367, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb31c77b022f20c2fe792d4ba04a71f4713215644847f876ea5b26f3bb3863fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01503b183cbc0f1957a3ccae6d53609af928379faa6a9276b1b72de30d5011e02baf1372aadf0b949869b2fe6488f8efed3c3bfa6d61bc813fae1366a502d9c5f83e85a7ba2af9ff14804a30c43c20be994701b76103d6702f25ebbbc71dd384be9c6a01b9bbbca300ae7f927c17034fb150c3547dbdf127eee7300c187dcabcd5b6769ec08deb814a84e8a1da3442bedc8b4220bcb448f0b3b7b06b2d18384ae2928b479e372fc4f01b26ed3573f8b9fb8681b0a0e78023d02f8c2fa6af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d94964c7df0b40 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 24, 60, 188, 15, 25, 87, 163, 204, 174, 109, 83, 96, 154, 249, 40, 55, 159, 170, 106, 146, 118, 177, 183, 45, 227, 13, 80, 17, 224, 43, 175, 19, 114, 170, 223, 11, 148, 152, 105, 178, 254, 100, 136, 248, 239, 237, 60, 59, 250, 109, 97, 188, 129, 63, 174, 19, 102, 165, 2, 217, 197, 248, 62, 133, 167, 186, 42, 249, 255, 20, 128, 74, 48, 196, 60, 32, 190, 153, 71, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b76103d6702f25ebbbc71dd384be9c6a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b9bbbca300ae7f927c17034fb150c354, }, ), received_events: EventHandle { count: 878456937395633533, key: EventKey( [ 125, 202, 188, 213, 182, 118, 158, 192, 141, 235, 129, 74, 132, 232, 161, 218, 52, 66, 190, 220, 139, 66, 32, 188, ], ), }, sent_events: EventHandle { count: 3272903857259169972, key: EventKey( [ 56, 74, 226, 146, 139, 71, 158, 55, 47, 196, 240, 27, 38, 237, 53, 115, 248, 185, 251, 134, 129, 176, 160, 231, ], ), }, sequence_number: 12656856081915454336, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc441dd51f412fa62e1818f840b2b06dad6e7f62c38fc91efe5dcce72d741918): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920125a7c33937e8c98ba8773a49d06a2a1e33844a0b1e3e78106e80d30c049df5bb774988b9700201dbe0e123ce64199af646399f1342100701b3c93acd5da803f1d1d7ca6503e0ebd600904637ab4d0c4018f0ad2df11c2f9c7eff6f718a53f03189cb705c53d9d71a1b0793717b57b63961186b235a5c6896e3288cdfcfdb672e0ff00316808bfee3a402b155725434c3247d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708134baa1ec1cffe92 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 167, 195, 57, 55, 232, 201, 139, 168, 119, 58, 73, 208, 106, 42, 30, 51, 132, 74, 11, 30, 62, 120, 16, 110, 128, 211, 12, 4, 157, 245, 187, 119, 73, 136, 185, 112, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dbe0e123ce64199af646399f13421007, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b3c93acd5da803f1d1d7ca6503e0ebd6, }, ), received_events: EventHandle { count: 4615149115910033408, key: EventKey( [ 240, 173, 45, 241, 28, 47, 156, 126, 255, 111, 113, 138, 83, 240, 49, 137, 203, 112, 92, 83, 217, 215, 26, 27, ], ), }, sent_events: EventHandle { count: 7005831182200967943, key: EventKey( [ 107, 35, 90, 92, 104, 150, 227, 40, 140, 223, 207, 219, 103, 46, 15, 240, 3, 22, 128, 139, 254, 227, 164, 2, ], ), }, sequence_number: 9017546983425070513, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc79a7e906dd2ed09d6d4e90aeca1135393304c3f34aa18f2cf787715f54a556): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a011da2e4176943effa04986f798c3c8e22e1ebd1e7c27df5495a12fa66440a01a6f579beb59b201560cd28b983860dc7012e6dd4d8e8a7442557307f9402f2f4f67df3bb9203adbb521803156008a04eff638add2aaf09630f7b076bf2e5f45717c12284e9e32d52973b18426c63487bfc70c2c42c9f977137895b19e9282909ce679b06bac48cb02e49592101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c871a841e2dd6f54 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 228, 23, 105, 67, 239, 250, 4, 152, 111, 121, 140, 60, 142, 34, 225, 235, 209, 231, 194, 125, 245, 73, 90, 18, 250, 102, 68, 10, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a6f579beb59b201560cd28b983860dc7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2e6dd4d8e8a7442557307f9402f2f4f6, }, ), received_events: EventHandle { count: 5961548762613281661, key: EventKey( [ 3, 21, 96, 8, 160, 78, 255, 99, 138, 221, 42, 175, 9, 99, 15, 123, 7, 107, 242, 229, 244, 87, 23, 193, ], ), }, sent_events: EventHandle { count: 4293991126771794978, key: EventKey( [ 66, 108, 99, 72, 123, 252, 112, 194, 196, 44, 159, 151, 113, 55, 137, 91, 25, 233, 40, 41, 9, 206, 103, 155, ], ), }, sequence_number: 6433724878486288902, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(be698b9849e5e213aafc998a5fe4bf7e0f1e07c86ef445464922cdd8653cd303): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965085357fad637e22b63015e25cf98f339bca72e364c91820eab1f00d1cfd4ce40b7306718340e8630d33de5b39b1ef6650dba301ba4dbaa6361955ea3e8101d18e9f16114182389b3fe2a92aef5e4b06d0f9ad3f954fe24341d48926d10b8007286b692bd722101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7baf4694db0306a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 87, 250, 214, 55, 226, 43, 99, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5e25cf98f339bca72e364c91820eab1f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7435644473764532177, key: EventKey( [ 52, 14, 134, 48, 211, 61, 229, 179, 155, 30, 246, 101, 13, 186, 48, 27, 164, 219, 170, 99, 97, 149, 94, 163, ], ), }, sent_events: EventHandle { count: 1468720936933724392, key: EventKey( [ 35, 137, 179, 254, 42, 146, 174, 245, 228, 176, 109, 15, 154, 211, 249, 84, 254, 36, 52, 29, 72, 146, 109, 16, ], ), }, sequence_number: 8267925803559420088, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf5ab39c50d0aa0cc86965c7f0af67dacef01ccbf4322bc689c0bd7120e2a46a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b4bbba40b945af1776ce093be3f68640df40def8c8296da344f7e4fbf644f59f92a3f3e6ad6fc8b5d0a2fed01c2a357926416b50c8d58534ade7535e6004cd8bee9c354113918b7de0d947fbdf423fc26fc971a1e7706e34d455f28a866e35ae162d7c3f0fd34189d7d5fe9cbd9f6c9a0e401571d781070a8866bdbdcb0fa29d9500ef507a9e09d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089392f9b64294a6a9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 187, 164, 11, 148, 90, 241, 119, 108, 224, 147, 190, 63, 104, 100, 13, 244, 13, 239, 140, 130, 150, 218, 52, 79, 126, 79, 191, 100, 79, 89, 249, 42, 63, 62, 106, 214, 252, 139, 93, 10, 47, 237, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c2a357926416b50c8d58534ade7535e6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4112161135182927948, key: EventKey( [ 183, 222, 13, 148, 127, 189, 244, 35, 252, 38, 252, 151, 26, 30, 119, 6, 227, 77, 69, 95, 40, 168, 102, 227, ], ), }, sent_events: EventHandle { count: 3818472783002919258, key: EventKey( [ 157, 125, 95, 233, 203, 217, 246, 201, 160, 228, 1, 87, 29, 120, 16, 112, 168, 134, 107, 219, 220, 176, 250, 41, ], ), }, sequence_number: 11376278510379094233, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c53fef7fc8e45943d94c7344f32b961c503e4a17e8fe3df36befd883a5dfc550): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e115ae6ba3a64201ee71b921f8ec2a90abacc01e4d932ec520c1c7937b62b5c43bfa532004261509edf7e154a18f8bef26ca07d15ca0c986cce3b9c91a522d71c4db0a6bd080a8898ee20446515188715e3883ad1e7f317c8499a933811aba0780b903a2c9f12cecb367afbc6199c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70816c85e8a801748e8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 230, 186, 58, 100, 32, 30, 231, 27, 146, 31, 142, 194, 169, 10, 186, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e4d932ec520c1c7937b62b5c43bfa532, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5338312432216465730, key: EventKey( [ 248, 190, 242, 108, 160, 125, 21, 202, 12, 152, 108, 206, 59, 156, 145, 165, 34, 215, 28, 77, 176, 166, 189, 8, ], ), }, sent_events: EventHandle { count: 1541713355676878858, key: EventKey( [ 135, 21, 227, 136, 58, 209, 231, 243, 23, 200, 73, 154, 147, 56, 17, 171, 160, 120, 11, 144, 58, 44, 159, 18, ], ), }, sequence_number: 11248240327724026830, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c70cfd8532046c67e134a56d7c7b144f26e8722114f810f6d85b409c927e869a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580b29cff3e6b9a91a7b246c6c00006dc5e14f25c4ff4718b5e49df641988c45968c8c584e01a532c0508032b167013007dc2810db0e7e091822905a0e8df7564673be2cd18a37d0ed39bbb870d0be90dcec30a127696ee4c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085900526180ee4b9e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 41, 207, 243, 230, 185, 169, 26, 123, 36, 108, 108, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5188080960287130989, key: EventKey( [ 181, 228, 157, 246, 65, 152, 140, 69, 150, 140, 140, 88, 78, 1, 165, 50, 192, 80, 128, 50, 177, 103, 1, 48, ], ), }, sent_events: EventHandle { count: 684000527438633991, key: EventKey( [ 34, 144, 90, 14, 141, 247, 86, 70, 115, 190, 44, 209, 138, 55, 208, 237, 57, 187, 184, 112, 208, 190, 144, 220, ], ), }, sequence_number: 13971413341925617900, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ca1a650fe932ea9150162134e8055ee19ac34d75f9e6229eb3cfc7a4f6e323e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130e2ca50826bf22f623d2ec416f88dd93aa2937af16845187b6330936cfeaffaca68796803c47e4ceb5480ba0d3db437ff0001b4fe6b63cbfc825a74a478b35d952856a6cc9d26cf5e130918ae638e1f1224509f26d2951d2b4940be74688ffae7856b6ac69ffa4763c89a0d18731c1de781ec3636417d02e861bf07a46e8487f6dd25815580af332ba4c27d8f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844906c3d427d1374 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 202, 80, 130, 107, 242, 47, 98, 61, 46, 196, 22, 248, 141, 217, 58, 162, 147, 122, 241, 104, 69, 24, 123, 99, 48, 147, 108, 254, 175, 250, 202, 104, 121, 104, 3, 196, 126, 76, 235, 84, 128, 186, 13, 61, 180, 55, 255, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b4fe6b63cbfc825a74a478b35d952856, }, ), received_events: EventHandle { count: 653970614697970854, key: EventKey( [ 174, 99, 142, 31, 18, 36, 80, 159, 38, 210, 149, 29, 43, 73, 64, 190, 116, 104, 143, 250, 231, 133, 107, 106, ], ), }, sent_events: EventHandle { count: 980316197641428934, key: EventKey( [ 115, 28, 29, 231, 129, 236, 54, 54, 65, 125, 2, 232, 97, 191, 7, 164, 110, 132, 135, 246, 221, 37, 129, 85, ], ), }, sequence_number: 10339634329867759488, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cadefc1a40fc8d5e49eb8805d86ce459f0e96500d31cdfa771f541fd591c1de3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b787651d80a356d6e5055240caf3c43b893f5badfb38560f64b5929679f22935a1ac5452357f8129fabda0501112c93b35537e2a07f2006450d5a9419009c2837f0f7e72870182e0b2712cdf83c89c5dd0a97eba6ecc286c40d00eb19eeb2a91b596687d7362418bd92bc5e47cbb4d1b3e11c1a62e324edc73f96bd56fc36309149987de29d41992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ebbc2fbd7a0eb995 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 120, 118, 81, 216, 10, 53, 109, 110, 80, 85, 36, 12, 175, 60, 67, 184, 147, 245, 186, 223, 179, 133, 96, 246, 75, 89, 41, 103, 159, 34, 147, 90, 26, 197, 69, 35, 87, 248, 18, 159, 171, 218, 5, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 112c93b35537e2a07f2006450d5a9419, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8081964583389440156, key: EventKey( [ 46, 11, 39, 18, 205, 248, 60, 137, 197, 221, 10, 151, 235, 166, 236, 194, 134, 196, 13, 0, 235, 25, 238, 178, ], ), }, sent_events: EventHandle { count: 2609510010645453737, key: EventKey( [ 189, 146, 188, 94, 71, 203, 180, 209, 179, 225, 28, 26, 98, 227, 36, 237, 199, 63, 150, 189, 86, 252, 54, 48, ], ), }, sequence_number: 11043281357384468881, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d61f0a7fa92af79e25f06c4eaf2145e52530bd1c1cc4f22d8796e020ac88238b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40157d754cae8e091ce02f30b1318e9b37a9ae331b974c8a1c62452519b1db2985ef86e6d5d781d5b7235622a14ea006917ec1996d2740d0b61ceaa9167982768db340d944c967e974ff33dbe7cdeaa6dedee46d520d4e145690000e02b6d53d040cf3118b650d090ea40b89efa7984952c187e8b5bfe5a29fcf4f93da3f2f16a40836f4318b64658237c44cbdf0b5e26961a5d88e0107ec26c0507ea939d65825caa058b8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce9b7db6a6b55079 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 84, 202, 232, 224, 145, 206, 2, 243, 11, 19, 24, 233, 179, 122, 154, 227, 49, 185, 116, 200, 161, 198, 36, 82, 81, 155, 29, 178, 152, 94, 248, 110, 109, 93, 120, 29, 91, 114, 53, 98, 42, 20, 234, 0, 105, 23, 236, 25, 150, 210, 116, 13, 11, 97, 206, 170, 145, 103, 152, 39, 104, 219, 52, 13, 148, 76, 150, 126, 151, 79, 243, 61, 190, 124, 222, 170, 109, 237, 238, 70, 213, 32, 212, 225, 69, 105, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3589158691534613472, key: EventKey( [ 182, 80, 208, 144, 234, 64, 184, 158, 250, 121, 132, 149, 44, 24, 126, 139, 91, 254, 90, 41, 252, 244, 249, 61, ], ), }, sent_events: EventHandle { count: 4859246835651441315, key: EventKey( [ 182, 70, 88, 35, 124, 68, 203, 223, 11, 94, 38, 150, 26, 93, 136, 224, 16, 126, 194, 108, 5, 7, 234, 147, ], ), }, sequence_number: 10127194416327320989, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d62a163fd1be618fd28d1811bdc0630f1378d2e912301d73329bf616cc79178b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c013f134765a6c3ed2bd49c8737e5a726d311fd6f0b0089a2a4b7faf1a8ee8cde9663c31ce8c741deed5371a3e13f77db0cb33b0f76200452efa5dc444947f3c6bf00000d6fd6fd7a49e57a18a3b90daa155c5f2d6378ee3bcaccba70ade48e80ea375ac6a3b67f9ed4b2534918b85ecbe38d30c07cf61ed366e65378836a2fcf38d96a40450506957bd41d04132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc9533e5d7032094 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 19, 71, 101, 166, 195, 237, 43, 212, 156, 135, 55, 229, 167, 38, 211, 17, 253, 111, 11, 0, 137, 162, 164, 183, 250, 241, 168, 238, 140, 222, 150, 99, 195, 28, 232, 199, 65, 222, 237, 83, 113, 163, 225, 63, 119, 219, 12, 179, 59, 15, 118, 32, 4, 82, 239, 165, 220, 68, 73, 71, 243, 198, 191, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8855565034887474957, key: EventKey( [ 163, 185, 13, 170, 21, 92, 95, 45, 99, 120, 238, 59, 202, 204, 186, 112, 173, 228, 142, 128, 234, 55, 90, 198, ], ), }, sent_events: EventHandle { count: 5283763414097704611, key: EventKey( [ 184, 94, 203, 227, 141, 48, 192, 124, 246, 30, 211, 102, 230, 83, 120, 131, 106, 47, 207, 56, 217, 106, 64, 69, ], ), }, sequence_number: 1370252985071109637, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8355b98eeb339bdd973128e5dca885b4d70b2df4ad9f5cb13d890c0c9badf18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f26c969cdab240029db9d5cf571d7f6013ab41e23b542740c1583fddff8a0ee7700617b1f7cf361962c18c67b07ffdac099bc921b45a6adb1d9f7aeb1fa6aa3f696ee526e12b37a04743a1882accddeacf601d67d2f4aeaaa308920d97018951d13e8b6dd6b71b287ebe5562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f4d557675b32724 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 201, 105, 205, 171, 36, 0, 41, 219, 157, 92, 245, 113, 215, 246, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3ab41e23b542740c1583fddff8a0ee77, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3212863082562812769, key: EventKey( [ 198, 123, 7, 255, 218, 192, 153, 188, 146, 27, 69, 166, 173, 177, 217, 247, 174, 177, 250, 106, 163, 246, 150, 238, ], ), }, sent_events: EventHandle { count: 4211996476535107154, key: EventKey( [ 130, 172, 205, 222, 172, 246, 1, 214, 125, 47, 74, 234, 170, 48, 137, 32, 217, 112, 24, 149, 29, 19, 232, 182, ], ), }, sequence_number: 6261669824975432669, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db43c714a19842c48854a7b3a588b137544380a0011191bfc213386de4151aa6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122b2715b7ad956ba9d8b7a134950c00e0db0a60d29f7ee8e2967691bd330e9214e4e370100b862b902ff888a8cb42fd673f7239c014244df2237436bec1a8a8312d9b209d6fb96ac415d3292681890b36b2256322faa11ee2b287ff441ce7d3e1767341bb052ed8c4d9758766e0f18f732b69c5dc8ffa663279abffd32e52bcc7fff8b57b2f4c7410a80ea9c89b7cb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac71d17d3aa06b15 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 178, 113, 91, 122, 217, 86, 186, 157, 139, 122, 19, 73, 80, 192, 14, 13, 176, 166, 13, 41, 247, 238, 142, 41, 103, 105, 27, 211, 48, 233, 33, 78, 78, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00b862b902ff888a8cb42fd673f7239c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4244df2237436bec1a8a8312d9b209d6, }, ), received_events: EventHandle { count: 7535140502659438331, key: EventKey( [ 144, 179, 107, 34, 86, 50, 47, 170, 17, 238, 43, 40, 127, 244, 65, 206, 125, 62, 23, 103, 52, 27, 176, 82, ], ), }, sent_events: EventHandle { count: 1111956280874732781, key: EventKey( [ 247, 50, 182, 156, 93, 200, 255, 166, 99, 39, 154, 191, 253, 50, 229, 43, 204, 127, 255, 139, 87, 178, 244, 199, ], ), }, sequence_number: 14679352817479584321, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db81c2eae3f845f7eb60093fa5a8f1f1a356cf1ea96e41d1a48204e1a4429fbe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d10b6be47cbd8ceda88d59e2ce2c2d5fd9a018dd0b3d516ffe4baef592ef83d3e5ae5008b3f8fd01f344f6a182d3f35fe382556f0214559c181d5ad0dc27542a702a5a98aa7174c2735c2075c18ad76fd359a2abce67c68dc8469680def841ea7662ecd7aab8aaa2fa765ed7e202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f5ced8c797d7842b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 190, 71, 203, 216, 206, 218, 136, 213, 158, 44, 226, 194, 213, 253, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8dd0b3d516ffe4baef592ef83d3e5ae5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7660398802428182411, key: EventKey( [ 45, 63, 53, 254, 56, 37, 86, 240, 33, 69, 89, 193, 129, 213, 173, 13, 194, 117, 66, 167, 2, 165, 169, 138, ], ), }, sent_events: EventHandle { count: 6631482509874698151, key: EventKey( [ 173, 118, 253, 53, 154, 42, 188, 230, 124, 104, 220, 132, 105, 104, 13, 239, 132, 30, 167, 102, 46, 205, 122, 171, ], ), }, sequence_number: 2341569877131635338, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd8d31a87348c196294c92c2e4a4e6c1aaefa4c7cc387ef6e49177b7855498c8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149a21a6ef19a90ec3a2aa68aa046a6b5a58a755e8a8af7b789cfb48e89c1420be045b269b19f0023691bc082f8aa9550bd2c0241bd91ad04955561344cf415fad40f347950dae9004da50001de119fe5b80f7694c8707e91cfa90d480df73244409c4f54182bedfde1792a1327a8c04b7649eef1729e344cdb108426f66b3acd36415b9425188436320f53cdaa275bceb5ba05edf9c5e6bff8e0d8567bd3685f5f85dcdbd4932101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3f28b44c2a71daa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 26, 110, 241, 154, 144, 236, 58, 42, 166, 138, 160, 70, 166, 181, 165, 138, 117, 94, 138, 138, 247, 183, 137, 207, 180, 142, 137, 193, 66, 11, 224, 69, 178, 105, 177, 159, 0, 35, 105, 27, 192, 130, 248, 170, 149, 80, 189, 44, 2, 65, 189, 145, 173, 4, 149, 85, 97, 52, 76, 244, 21, 250, 212, 15, 52, 121, 80, 218, 233, 0, 77, 165, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de119fe5b80f7694c8707e91cfa90d48, }, ), received_events: EventHandle { count: 6075246222182119181, key: EventKey( [ 43, 237, 253, 225, 121, 42, 19, 39, 168, 192, 75, 118, 73, 238, 241, 114, 158, 52, 76, 219, 16, 132, 38, 246, ], ), }, sent_events: EventHandle { count: 2707889611606932075, key: EventKey( [ 132, 54, 50, 15, 83, 205, 170, 39, 91, 206, 181, 186, 5, 237, 249, 197, 230, 191, 248, 224, 216, 86, 123, 211, ], ), }, sequence_number: 10652380758814973800, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df0dc4e366597685f0ba10a5fc6df847390d0f8e920dc43bc74b2f401b90b5a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401477649dd2d500ae108a435b3c4021072e4f67dc1f3c7f4c15130dc4b9bb5f8fc56791dc252bc176c6d167f67062fe213237807eb89232fb20cc2075ec04df6b210200c894b9a051f0000391ae5b24514045f188126f6095a15847f4a4dc064f808d7eb797dac1ff1564ca381673d414a99127b18649dd454cc9fb470571d3f0a2594b399fce8d127bafb5dadf9b5ef675f3f2b802101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70853ad3d33947d1254 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 73, 221, 45, 80, 10, 225, 8, 164, 53, 179, 196, 2, 16, 114, 228, 246, 125, 193, 243, 199, 244, 193, 81, 48, 220, 75, 155, 181, 248, 252, 86, 121, 29, 194, 82, 188, 23, 108, 109, 22, 127, 103, 6, 47, 226, 19, 35, 120, 7, 235, 137, 35, 47, 178, 12, 194, 7, 94, 192, 77, 246, 178, 16, 32, 12, 137, 75, 154, 5, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6846619623096654393, key: EventKey( [ 129, 38, 246, 9, 90, 21, 132, 127, 74, 77, 192, 100, 248, 8, 215, 235, 121, 125, 172, 31, 241, 86, 76, 163, ], ), }, sent_events: EventHandle { count: 8868319160447100801, key: EventKey( [ 100, 157, 212, 84, 204, 159, 180, 112, 87, 29, 63, 10, 37, 148, 179, 153, 252, 232, 209, 39, 186, 251, 93, 173, ], ), }, sequence_number: 9235545139851539961, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0c5ce1e83f2a4ed01f44d5b99afcfc7c92932af1b5809faf63e781f1c2e61d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133d55fde1a59912c9feb943568a1b1b4865cb49f2ba7a7ba80b6bd270186db1b7e36d453f8f1bb1e5099f45de25ff020f44fac24010e36145710af596408d8a5cd52afd6f1000bc298574594cd2118b9fcd388a85d264395809ebd6eec0d2d9906de9848184026b0d1c2424b06260418df682d77a7f41eff302a643463688e5e80671f4adc0d97c5f22f8d8738091e5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d81126ad3b8d4f2e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 95, 222, 26, 89, 145, 44, 159, 235, 148, 53, 104, 161, 177, 180, 134, 92, 180, 159, 43, 167, 167, 186, 128, 182, 189, 39, 1, 134, 219, 27, 126, 54, 212, 83, 248, 241, 187, 30, 80, 153, 244, 93, 226, 95, 240, 32, 244, 79, 172, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0e36145710af596408d8a5cd52afd6f1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2435765999020589579, key: EventKey( [ 185, 252, 211, 136, 168, 93, 38, 67, 149, 128, 158, 189, 110, 236, 13, 45, 153, 6, 222, 152, 72, 24, 64, 38, ], ), }, sent_events: EventHandle { count: 298933345579094448, key: EventKey( [ 223, 104, 45, 119, 167, 244, 30, 255, 48, 42, 100, 52, 99, 104, 142, 94, 128, 103, 31, 74, 220, 13, 151, 197, ], ), }, sequence_number: 6565695445149757426, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e11964bc2643422ca7322696a0661ab980185a8462bd26c6e2525928b79c1ae5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e19c15720d2c2d9f1e87357d3c018ad5cafbb892bef18cc1e845f49d4f4b56aa5f57d239856e37e11fc72d60069e14057a89acff3c164d40f8772a660ead32b76e88aad5ed64bf5bed313d117dab0abcdd9b0a5ff39cfacab29e5b2fb9da70001843ecbf1cab982faa6af717edacd860c1ef5f11bc3b30d791885bc31a4fc3d094a34d83a1b7b85368d942d7d4430b6ada98eb6ed3c10088f4f18484660ea18b6ad0da49ee6b969c594701d95cdcd9accfe3a63a2cc47cd8edf482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc3725a1bdd90651 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 25, 193, 87, 32, 210, 194, 217, 241, 232, 115, 87, 211, 192, 24, 173, 92, 175, 187, 137, 43, 239, 24, 204, 30, 132, 95, 73, 212, 244, 181, 106, 165, 245, 125, 35, 152, 86, 227, 126, 17, 252, 114, 214, 0, 105, 225, 64, 87, 168, 154, 207, 243, 193, 100, 212, 15, 135, 114, 166, 96, 234, 211, 43, 118, 232, 138, 173, 94, 214, 75, 245, 190, 211, 19, 209, 23, 218, 176, 171, 205, 217, 176, 165, 255, 57, 207, 172, 171, 41, 229, 178, 251, 157, 167, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 843ecbf1cab982faa6af717edacd860c, }, ), received_events: EventHandle { count: 8722825703855355166, key: EventKey( [ 133, 188, 49, 164, 252, 61, 9, 74, 52, 216, 58, 27, 123, 133, 54, 141, 148, 45, 125, 68, 48, 182, 173, 169, ], ), }, sent_events: EventHandle { count: 5732809716500641422, key: EventKey( [ 72, 70, 96, 234, 24, 182, 173, 13, 164, 158, 230, 185, 105, 197, 148, 112, 29, 149, 205, 205, 154, 204, 254, 58, ], ), }, sequence_number: 5251072702861320803, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e25e4c49558e4e2ad8640d9326c9dd9cc1af78eb4c103980726f5f39996a7ac3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b30dbb45004e7442e85852601191e738c5055185011178422f1db578a0192a184dc0f66a836964c98930679b79d4ed536727ce6506018140fbf30f8acfd8fb7dcb149de1c11c32ad6e4f74c9750f152cc8df17ef8767c18f5fe70a577e37d49b9dd9859ff0be9c2408caba72d9a16cc305fc53c0e4a4f432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e014d74f70dac4d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 219, 180, 80, 4, 231, 68, 46, 133, 133, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 191e738c5055185011178422f1db578a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 92a184dc0f66a836964c98930679b79d, }, ), received_events: EventHandle { count: 6940300447944463694, key: EventKey( [ 20, 15, 191, 48, 248, 172, 253, 143, 183, 220, 177, 73, 222, 28, 17, 195, 42, 214, 228, 247, 76, 151, 80, 241, ], ), }, sent_events: EventHandle { count: 8968628932057091154, key: EventKey( [ 245, 254, 112, 165, 119, 227, 125, 73, 185, 221, 152, 89, 255, 11, 233, 194, 64, 140, 171, 167, 45, 154, 22, 204, ], ), }, sequence_number: 4850176748710879024, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e2f9c14947ed996e6f8e37e5f5ceb945302b1b38c272922ae6a07b0b0d1aec04): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c8015b33aace5cd9ab99c4dbb6c2396680d74772f3f09c3cb43cc2afefd7f66dc4d0f6482acaabf0a08eff91973af768ebb17cdc1587cc0cbf7af51393c7c983af35a11a1a228951c7f5943cb386f0a25a62c50173a039a78c68afeeb72801363ba3eb0b752aff7786e4371207594801ca429cfb7927c769b19509842d35e90144770644e400b205188a68d3b03b488e69b8eb00deb6b2b8ea166dd38b36854b96ac57d4333a454a4b189f4cc56fbcddf627efca2eae62be87bc9d93951d3b16f6be160380de5673271e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881d70fbac32a9936 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 51, 170, 206, 92, 217, 171, 153, 196, 219, 182, 194, 57, 102, 128, 215, 71, 114, 243, 240, 156, 60, 180, 60, 194, 175, 239, 215, 246, 109, 196, 208, 246, 72, 42, 202, 171, 240, 160, 142, 255, 145, 151, 58, 247, 104, 235, 177, 124, 220, 21, 135, 204, 12, 191, 122, 245, 19, 147, 199, 201, 131, 175, 53, 161, 26, 26, 34, 137, 81, 199, 245, 148, 60, 179, 134, 240, 162, 90, 98, 197, 1, 115, 160, 57, 167, 140, 104, 175, 238, 183, 40, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 363ba3eb0b752aff7786e43712075948, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ca429cfb7927c769b19509842d35e901, }, ), received_events: EventHandle { count: 410391496437954372, key: EventKey( [ 138, 104, 211, 176, 59, 72, 142, 105, 184, 235, 0, 222, 182, 178, 184, 234, 22, 109, 211, 139, 54, 133, 75, 150, ], ), }, sent_events: EventHandle { count: 5425224817401157548, key: EventKey( [ 159, 76, 197, 111, 188, 221, 246, 39, 239, 202, 46, 174, 98, 190, 135, 188, 157, 147, 149, 29, 59, 22, 246, 190, ], ), }, sequence_number: 2172832162166866710, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e354a4b1e3578eb8466c0392c1e67758a48f6abd3306b269b13292ae05ba2916): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139acc7e82f0a7cc186a47b4a2659dc816696b8a7e71a68f81f64385240deb4cea420ddbb70293db30de7ed8cb4b88f4d43b96c49e2971c15ceb401fee04887b34580e6d09d3a94759b9dfe00675d52417a4e120e189ea9cf122047fd480e66604c703b4a2f2c1490906f992e5b6ec5b7371ca5e8211898b6e5b54c0718f9a4da21d60a90f3c8107b073e398fb3f9699e335fa6801dfa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db4cbee8d4eb1b70 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 199, 232, 47, 10, 124, 193, 134, 164, 123, 74, 38, 89, 220, 129, 102, 150, 184, 167, 231, 26, 104, 248, 31, 100, 56, 82, 64, 222, 180, 206, 164, 32, 221, 187, 112, 41, 61, 179, 13, 231, 237, 140, 180, 184, 143, 77, 67, 185, 108, 73, 226, 151, 28, 21, 206, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fee04887b34580e6d09d3a94759b9dfe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1013959153100676455, key: EventKey( [ 158, 169, 207, 18, 32, 71, 253, 72, 14, 102, 96, 76, 112, 59, 74, 47, 44, 20, 144, 144, 111, 153, 46, 91, ], ), }, sent_events: EventHandle { count: 2443384338460951918, key: EventKey( [ 152, 182, 229, 181, 76, 7, 24, 249, 164, 218, 33, 214, 10, 144, 243, 200, 16, 123, 7, 62, 57, 143, 179, 249, ], ), }, sequence_number: 18022702735856737897, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e65d267873b8653ee157d6db04f68602b013733ea5f46330cf763519f19c7897): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ed622cd25d02745aee0a7ccd292672732bd0af6e96a162d9477097e1dc1f0857d1df8ffecce9f70882d77483548f37214bd982b0862915459d15a83095014d180bb924c893ec2005e0d3f77c9d03fba85103b6e444e30aedc086ef7c609e101f4c9bc7b6b24f544ce2bfebb414800d200077bd168c69753601804ef4e1275ebb89568a6fa6f7c259eee6ec6dff4c9386a832501b42b8b583a5c18d61f1e8b351093eab0d3ebdbc6d743dd4e14b0f44b6be4cc6332d860f5036cc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851fdf44f71153cea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 214, 34, 205, 37, 208, 39, 69, 174, 224, 167, 204, 210, 146, 103, 39, 50, 189, 10, 246, 233, 106, 22, 45, 148, 119, 9, 126, 29, 193, 240, 133, 125, 29, 248, 255, 236, 206, 159, 112, 136, 45, 119, 72, 53, 72, 243, 114, 20, 189, 152, 43, 8, 98, 145, 84, 89, 209, 90, 131, 9, 80, 20, 209, 128, 187, 146, 76, 137, 62, 194, 0, 94, 13, 63, 119, 201, 208, 63, 186, 133, 16, 59, 110, 68, 78, 48, 174, 220, 8, 110, 247, 198, 9, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f4c9bc7b6b24f544ce2bfebb414800d2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6941058329125944071, key: EventKey( [ 4, 239, 78, 18, 117, 235, 184, 149, 104, 166, 250, 111, 124, 37, 158, 238, 110, 198, 223, 244, 201, 56, 106, 131, ], ), }, sent_events: EventHandle { count: 6645721554895503653, key: EventKey( [ 214, 31, 30, 139, 53, 16, 147, 234, 176, 211, 235, 219, 198, 215, 67, 221, 78, 20, 176, 244, 75, 107, 228, 204, ], ), }, sequence_number: 13937519299231494755, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e67cfa1db1599b4ad27b04583bab32605d90ab35dbfa697720181de5c2cb56eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f020c710001b5d686a456cfd5b0130913e4099fc7a4a1b49d1c35aa730f1873219115ac5bbde96b7d5a541cb8d9ecbd159ca72ee889ed36dac32ab578c6651802442d2132521ff0ba5dfe134509ba5366b798f8f0281ff3ccafca1d3b7c62642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708558ee1d93b410881 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 113, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b5d686a456cfd5b0130913e4099fc7a4, }, ), received_events: EventHandle { count: 1113420677980730529, key: EventKey( [ 115, 33, 145, 21, 172, 91, 189, 233, 107, 125, 90, 84, 28, 184, 217, 236, 189, 21, 156, 167, 46, 232, 137, 237, ], ), }, sent_events: EventHandle { count: 7333681762721323574, key: EventKey( [ 2, 68, 45, 33, 50, 82, 31, 240, 186, 93, 254, 19, 69, 9, 186, 83, 102, 183, 152, 248, 240, 40, 31, 243, ], ), }, sequence_number: 7233480544855175116, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e7a27cd508e09b620e8c34af7caafb688d4f1e93cdc67e95b30349749f5af43d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101241a5aff7aab54bacb1499277b5367cea988a0ab8985834666f7db95a8391f04c7764d8bd50125b914152ffd95ae00692638bca126be00dd205cb382179a5218d5c15dcfebeecb50f22cdfbbc1e177fcf5fb58d35845adbcb4e32a73879e78751866974f5bc389f8d5b87b287410ba9e01ba7573c7e3220d2356f3282f3f4518952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d591c11ace2bf44 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 90, 255, 122, 171, 84, 186, 203, 20, 153, 39, 123, 83, 103, 206, 169, 136, 160, 171, 137, 133, 131, 70, 102, 247, 219, 149, 168, 57, 31, 4, 199, 118, 77, 139, 213, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 25b914152ffd95ae00692638bca126be, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5952095707645878493, key: EventKey( [ 213, 193, 93, 207, 235, 238, 203, 80, 242, 44, 223, 187, 193, 225, 119, 252, 245, 251, 88, 211, 88, 69, 173, 188, ], ), }, sent_events: EventHandle { count: 8464689804232811444, key: EventKey( [ 102, 151, 79, 91, 195, 137, 248, 213, 184, 123, 40, 116, 16, 186, 158, 1, 186, 117, 115, 199, 227, 34, 13, 35, ], ), }, sequence_number: 10743413048768787286, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e81a7988ad540113b4e9753e61fbd3d67df653507cef57ed5413b03f71709e91): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e011200017474dd667816ea01060f6d85cacb24dd91d65b8dcfb4724d18dffdb2d4cc41a3c44367932c0f32b9e212d35bbccd165aeb1cbe4bb2425ce510187de456bbec6745825c0872cfc57e4e40e1493e12757b7e6b7a783e0fdd88faa52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086ab7dc6ab6ae6d4e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7474dd667816ea01060f6d85cacb24dd, }, ), received_events: EventHandle { count: 5580721691788301969, key: EventKey( [ 223, 253, 178, 212, 204, 65, 163, 196, 67, 103, 147, 44, 15, 50, 185, 226, 18, 211, 91, 188, 205, 22, 90, 235, ], ), }, sent_events: EventHandle { count: 1217480715802492444, key: EventKey( [ 125, 228, 86, 187, 236, 103, 69, 130, 92, 8, 114, 207, 197, 126, 78, 64, 225, 73, 62, 18, 117, 123, 126, 107, ], ), }, sequence_number: 11960022243460675706, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ebe221adcfababd15b477d16960a5531618fd0664f445cf73cb4421170f6b458): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a3014643ab3e8d7e9aeab7bd5bdef8c341891c637a594a11541993405e22c669b04a9fde9a822db72fd014ed4accfaa7142b1aed254a4130ab7f6417d54a453f6e62c1ea11b25c7488011d03925a6fdf9576887fd3b3106293ff001afcc7d0bebd3d2a186f2bfbe146de38f9e5ece3ace44b76e81c7ef6aac8d63e93007dcbb3bdc7c408181b096dc20c9e8f54da0811f7096752323a04e3ed50dabc45c8e8cff67ae7c4ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708846f50a97048856b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 67, 171, 62, 141, 126, 154, 234, 183, 189, 91, 222, 248, 195, 65, 137, 28, 99, 122, 89, 74, 17, 84, 25, 147, 64, 94, 34, 198, 105, 176, 74, 159, 222, 154, 130, 45, 183, 47, 208, 20, 237, 74, 204, 250, 167, 20, 43, 26, 237, 37, 74, 65, 48, 171, 127, 100, 23, 213, 74, 69, 63, 110, 98, 193, 234, 17, 178, 92, 116, 136, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d03925a6fdf9576887fd3b3106293ff, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3043797550416526362, key: EventKey( [ 111, 43, 251, 225, 70, 222, 56, 249, 229, 236, 227, 172, 228, 75, 118, 232, 28, 126, 246, 170, 200, 214, 62, 147, ], ), }, sent_events: EventHandle { count: 631849465317915904, key: EventKey( [ 27, 9, 109, 194, 12, 158, 143, 84, 218, 8, 17, 247, 9, 103, 82, 50, 58, 4, 227, 237, 80, 218, 188, 69, ], ), }, sequence_number: 17205130991774984392, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec1454a9a050e4703fffae8ee29722eda5150f69e8d36ef6c02546e1944192c0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01411649baaf3504cb02784bd781d82e35ad919924282d765b8fd0c530d24a883c4e1a527e36077f57d506eb201942f31022a3ea4617302b0b7dc7755defef6540b9f701c4572afd13c71c377706d9a72dd9fd8e017880662de1d221c3351577a75d6dfb516c1cfc68fb632f7e1848955afbac7fc2804c1bb18757ef672bcf0f0a86155435758cd018dd4a2610321825338d52c5ed60f35e7881e61e836e5334ec23893d49abe0d1e9c19f0671f05c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858481e9f0fe0afb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 73, 186, 175, 53, 4, 203, 2, 120, 75, 215, 129, 216, 46, 53, 173, 145, 153, 36, 40, 45, 118, 91, 143, 208, 197, 48, 210, 74, 136, 60, 78, 26, 82, 126, 54, 7, 127, 87, 213, 6, 235, 32, 25, 66, 243, 16, 34, 163, 234, 70, 23, 48, 43, 11, 125, 199, 117, 93, 239, 239, 101, 64, 185, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4572afd13c71c377706d9a72dd9fd8e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7880662de1d221c3351577a75d6dfb51, }, ), received_events: EventHandle { count: 9092596104133614700, key: EventKey( [ 72, 149, 90, 251, 172, 127, 194, 128, 76, 27, 177, 135, 87, 239, 103, 43, 207, 15, 10, 134, 21, 84, 53, 117, ], ), }, sent_events: EventHandle { count: 3607425404502593676, key: EventKey( [ 37, 51, 141, 82, 197, 237, 96, 243, 94, 120, 129, 230, 30, 131, 110, 83, 52, 236, 35, 137, 61, 73, 171, 224, ], ), }, sequence_number: 6696976919163955665, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec1b91dee8da8737185ba10ba186b5f1a43f0f1895eb8e5a9a61ea4ec6087f1b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014ea425f7d17d5cf0a3dadd32e9397b8e92bdd7febcd7f2537a459f545e79d3a7cc97f0f254b286b90be13039d55dbedfb432f78277d119158d97349b85c3b6da9a10cb91d42156b3298774cb52c46b015550ab5205354f3999792439e3ac61b70048a539ee20721b5a1815a031500e3baf5f63f55a64ea8c9bf6205558fe6d147ff6657a52bede9feb67184e53a90abb5e1c0eecae394ba3e6510b9123ca9e2ff02fa3b2f03285e78b21352101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083aa3adcc15309766 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 37, 247, 209, 125, 92, 240, 163, 218, 221, 50, 233, 57, 123, 142, 146, 189, 215, 254, 188, 215, 242, 83, 122, 69, 159, 84, 94, 121, 211, 167, 204, 151, 240, 242, 84, 178, 134, 185, 11, 225, 48, 57, 213, 93, 190, 223, 180, 50, 247, 130, 119, 209, 25, 21, 141, 151, 52, 155, 133, 195, 182, 218, 154, 16, 203, 145, 212, 33, 86, 179, 41, 135, 116, 203, 82, 196, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5550ab5205354f3999792439e3ac61b7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6492908773545977160, key: EventKey( [ 21, 160, 49, 80, 14, 59, 175, 95, 99, 245, 90, 100, 234, 140, 155, 246, 32, 85, 88, 254, 109, 20, 127, 246, ], ), }, sent_events: EventHandle { count: 7488254584458213989, key: EventKey( [ 78, 83, 169, 10, 187, 94, 28, 14, 236, 174, 57, 75, 163, 230, 81, 11, 145, 35, 202, 158, 47, 240, 47, 163, ], ), }, sequence_number: 3828494984730046642, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec99eea9c02c670c7574b7010f9034d8febc69669486bbe7b993248d4e1ff857): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c401577dad728c62cfe0538339f98e3ddec6ba87633610601b493f74c44f0003abcb8192a0397d4e86f207eefd40fd424977cfcccfbbc657552be2d50037503cf401664c2ea1a1c6a54c9bb618c36cc391c02dbe8b8fc5e8c80701ca1f55e1c9bd2f84a0243925026846c101ef8ee95d31bc0e300b5bdc742f2d4f0d18c6b0cd1efdf86b187d508bfdc8dae7e76f5c58da8cfa7bf3a2d37f8c15e81692a8e72b4e4d6ea358184841d55f2cc946b90293a2712210bcec4e0df00259f27575c794715e58e026ac2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a637baa478456829 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 173, 114, 140, 98, 207, 224, 83, 131, 57, 249, 142, 61, 222, 198, 186, 135, 99, 54, 16, 96, 27, 73, 63, 116, 196, 79, 0, 3, 171, 203, 129, 146, 160, 57, 125, 78, 134, 242, 7, 238, 253, 64, 253, 66, 73, 119, 207, 204, 207, 187, 198, 87, 85, 43, 226, 213, 0, 55, 80, 60, 244, 1, 102, 76, 46, 161, 161, 198, 165, 76, 155, 182, 24, 195, 108, 195, 145, 192, 45, 190, 139, 143, 197, 232, 200, 7, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ca1f55e1c9bd2f84a0243925026846c1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ef8ee95d31bc0e300b5bdc742f2d4f0d, }, ), received_events: EventHandle { count: 7780246665024292376, key: EventKey( [ 125, 80, 139, 253, 200, 218, 231, 231, 111, 92, 88, 218, 140, 250, 123, 243, 162, 211, 127, 140, 21, 232, 22, 146, ], ), }, sent_events: EventHandle { count: 6387069974844532648, key: EventKey( [ 72, 65, 213, 95, 44, 201, 70, 185, 2, 147, 162, 113, 34, 16, 188, 236, 78, 13, 240, 2, 89, 242, 117, 117, ], ), }, sequence_number: 12404848893784855751, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee30003e417367dba7700e8388231e92b05df0a112a3b364dd10c501a84938f9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c2be0efabc44c3ca025477d7e046eb59d6189947c6150314480c3af790001f0357bc9fb17f9d63e5f868be4c128ea4a999dbd06d94f5f18c51e40c2813655c02a4db1d181815a7b9515d6bd52616d60229610fa0a901057182c6112da8cf15f026faea3c59af98e191bf8a37653e35d91d5e234b1171ecdcd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d9b47b0ddd415f9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 224, 239, 171, 196, 76, 60, 160, 37, 71, 125, 126, 4, 110, 181, 157, 97, 137, 148, 124, 97, 80, 49, 68, 128, 195, 175, 121, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f0357bc9fb17f9d63e5f868be4c128ea, }, ), received_events: EventHandle { count: 6867946579737549130, key: EventKey( [ 197, 30, 64, 194, 129, 54, 85, 192, 42, 77, 177, 209, 129, 129, 90, 123, 149, 21, 214, 189, 82, 97, 109, 96, ], ), }, sent_events: EventHandle { count: 6273672657746564642, key: EventKey( [ 44, 97, 18, 218, 140, 241, 95, 2, 111, 174, 163, 197, 154, 249, 142, 25, 27, 248, 163, 118, 83, 227, 93, 145, ], ), }, sequence_number: 14829542235107025621, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef6e6bfbac35cd4978df73a11ef64b3aecb38799b5f25ae8899de36a3b5323dc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab013ebffc787dcc2a1e1c876afac804ae4a133e34107c1a5253927ee754798964726cbcb4a0aa50e62227d946832e65def9c34ee682e3d7c4151ceeb68f970d5e012d68d82558afa74730f6fb6cc7356ce2016f14570c00a34bdb4fbaae2c61e08a7549f39a61fb6bf03a1856e054f71382cf2509a534c9a21396f932cac31096f07f62a4473340f1fc8a6c18b5b9102d75a40912eb2e9c162940b4ff2e8575c6490c778c2599e5b40b0522fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ead99262e0f3f3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 252, 120, 125, 204, 42, 30, 28, 135, 106, 250, 200, 4, 174, 74, 19, 62, 52, 16, 124, 26, 82, 83, 146, 126, 231, 84, 121, 137, 100, 114, 108, 188, 180, 160, 170, 80, 230, 34, 39, 217, 70, 131, 46, 101, 222, 249, 195, 78, 230, 130, 227, 215, 196, 21, 28, 238, 182, 143, 151, 13, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d68d82558afa74730f6fb6cc7356ce2, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f14570c00a34bdb4fbaae2c61e08a75, }, ), received_events: EventHandle { count: 4247013176028885833, key: EventKey( [ 86, 224, 84, 247, 19, 130, 207, 37, 9, 165, 52, 201, 162, 19, 150, 249, 50, 202, 195, 16, 150, 240, 127, 98, ], ), }, sent_events: EventHandle { count: 7821341815976708004, key: EventKey( [ 181, 185, 16, 45, 117, 164, 9, 18, 235, 46, 156, 22, 41, 64, 180, 255, 46, 133, 117, 198, 73, 12, 119, 140, ], ), }, sequence_number: 18023974206527871269, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f0e7436826cb4ba5a642fcac61dbc53c8b4ddcf829ec2b504b58183a23f6fb88): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e415fe53d68ae21dc4c1f4c0d9e3f81e888e002a1f75940b79dddd6e0a11e6f91f476ae05b941efb1623964c076cb042295275d2e726dce0a31a8c319ebe601952bd6acffaebe01abd4a3725bcb8c3500a4f8044a9ba1181818c28ae4491fe23eb6e0f7d6d0e7e5cb359adb6dd51dfd9c3cef0c4956c90f7b0918e6db84ebc247c7fff1fe548749ec7c073ee8598414d268cac139e8a6f9949f382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087976352def676854 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 95, 229, 61, 104, 174, 33, 220, 76, 31, 76, 13, 158, 63, 129, 232, 136, 224, 2, 161, 247, 89, 64, 183, 157, 221, 214, 224, 161, 30, 111, 145, 244, 118, 174, 5, 185, 65, 239, 177, 98, 57, 100, 192, 118, 203, 4, 34, 149, 39, 93, 46, 114, 109, 206, 10, 49, 168, 195, 25, 235, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 952bd6acffaebe01abd4a3725bcb8c35, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1736315344685168804, key: EventKey( [ 194, 138, 228, 73, 31, 226, 62, 182, 224, 247, 214, 208, 231, 229, 203, 53, 154, 219, 109, 213, 29, 253, 156, 60, ], ), }, sent_events: EventHandle { count: 683157125887233263, key: EventKey( [ 230, 219, 132, 235, 194, 71, 199, 255, 241, 254, 84, 135, 73, 236, 124, 7, 62, 232, 89, 132, 20, 210, 104, 202, ], ), }, sequence_number: 4080143587388963265, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f32761e61ff1e98c5c105372e1b58b71ee3953ca53162851b7b78d4522228ef7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9650888e319c6d3c49b2e019413284f1613ed71cf978f890b0baf7c00b08ade98715f9a48182fa75e312e1c619ca52a145f6d2c8889ec336a18a88ad6c22410b59ed8716765187c0c1c07ffb394cab8eaba4179f383bc0c07946bf0544bd6e299410ee0f2bd2f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088224c9a3d439c0a9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 227, 25, 198, 211, 196, 155, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9413284f1613ed71cf978f890b0baf7c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5231598858644916912, key: EventKey( [ 47, 167, 94, 49, 46, 28, 97, 156, 165, 42, 20, 95, 109, 44, 136, 137, 236, 51, 106, 24, 168, 138, 214, 194, ], ), }, sent_events: EventHandle { count: 7306934095621460004, key: EventKey( [ 124, 12, 28, 7, 255, 179, 148, 202, 184, 234, 186, 65, 121, 243, 131, 188, 12, 7, 148, 107, 240, 84, 75, 214, ], ), }, sequence_number: 3440172734506703330, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f44a1431eca8c9c5dd28a5c66b60772e162db34137ccc711ff91495901e1429f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f9bd4b9f3e4ecf8945d1bd44ebe5d9a3129f88d01dcc197c4548f845a9cd77301e8efff30339938854961b2dadca7bb1f004fbb108f6d740c001858ffceb5bc38fbd5af8d002ec5193018be9ff43606ea487b780eb9d79675a42c18b48cf8e6a48cce74da13087e5c4bc17c9b95769b28c8087c46b980057e3a12212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ccd1b449e74fc73 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 212, 185, 243, 228, 236, 248, 148, 93, 27, 212, 78, 190, 93, 154, 49, 41, 248, 141, 1, 220, 193, 151, 196, 84, 143, 132, 90, 156, 215, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e8efff30339938854961b2dadca7bb1f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3505713621023567, key: EventKey( [ 88, 255, 206, 181, 188, 56, 251, 213, 175, 141, 0, 46, 197, 25, 48, 24, 190, 159, 244, 54, 6, 234, 72, 123, ], ), }, sent_events: EventHandle { count: 3216825324574150264, key: EventKey( [ 180, 140, 248, 230, 164, 140, 206, 116, 218, 19, 8, 126, 92, 75, 193, 124, 155, 149, 118, 155, 40, 200, 8, 124, ], ), }, sequence_number: 2383031465765026118, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f5b7d8ba50bac27bca39b104551dabcd4b22155103c8e97152cb787477d86387): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f12bde8743d1ccb17e4a89d75f962dbd7e1f04301eafc2b825d20e0137b131f6ae829dec100f80f67316e423002184d2984dd5a677e82f8f5f462e2a5767ab85ab6c2e206be5baaa3c591eb65266818dda6f8569c15f681e526760dc2b6a3929305364225aae4c8ec5f749aa5556c7d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae75473db81d0684 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 232, 116, 61, 28, 203, 23, 228, 168, 157, 117, 249, 98, 219, 215, 225, 240, 67, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eafc2b825d20e0137b131f6ae829dec1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 157699028000641016, key: EventKey( [ 77, 41, 132, 221, 90, 103, 126, 130, 248, 245, 244, 98, 226, 165, 118, 122, 184, 90, 182, 194, 226, 6, 190, 91, ], ), }, sent_events: EventHandle { count: 7504797891496879018, key: EventKey( [ 221, 166, 248, 86, 156, 21, 246, 129, 229, 38, 118, 13, 194, 182, 163, 146, 147, 5, 54, 66, 37, 170, 228, 200, ], ), }, sequence_number: 9037692721975025644, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f8a4f328c62db8411e2dc10891fd52e2b28681dfb04adc55c54e50448422d012): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015dc6428adb8f7002cd6ec678375dbea16b1a1255994d102f3879cb1bb966e05999f0f6a4a42bc5896418934915268027227ac1ca18423c8424083646057f358a5820b197881d8adb622005f54f981da8e826e256d936657d0bb64dea5859012cd3670ffd8f4a901f2352fc28f951ab010bb275a1ad0206d91ddd7de67359256679d4f240b61cab3318df67bf5ad19d99e12c1dafaf79e3e3950322d84353b022143baa0c948bed916718be6cfd802d0f0b4121d4c655f5d182b0e617b50d5c421c070c695555db3742172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852faa6fbcf204e22 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 66, 138, 219, 143, 112, 2, 205, 110, 198, 120, 55, 93, 190, 161, 107, 26, 18, 85, 153, 77, 16, 47, 56, 121, 203, 27, 185, 102, 224, 89, 153, 240, 246, 164, 164, 43, 197, 137, 100, 24, 147, 73, 21, 38, 128, 39, 34, 122, 193, 202, 24, 66, 60, 132, 36, 8, 54, 70, 5, 127, 53, 138, 88, 32, 177, 151, 136, 29, 138, 219, 98, 32, 5, 245, 79, 152, 29, 168, 232, 38, 226, 86, 217, 54, 101, 125, 11, 182, 77, 234, 88, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2cd3670ffd8f4a901f2352fc28f951ab, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0bb275a1ad0206d91ddd7de673592566, }, ), received_events: EventHandle { count: 3723101086051128441, key: EventKey( [ 223, 103, 191, 90, 209, 157, 153, 225, 44, 29, 175, 175, 121, 227, 227, 149, 3, 34, 216, 67, 83, 176, 34, 20, ], ), }, sent_events: EventHandle { count: 7463007241269717563, key: EventKey( [ 190, 108, 253, 128, 45, 15, 11, 65, 33, 212, 198, 85, 245, 209, 130, 176, 230, 23, 181, 13, 92, 66, 28, 7, ], ), }, sequence_number: 1675963426504272140, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fadb5ef152d50113a03b5e70afc07955b56280b599593a4195fa91df182a0711): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f12acacbc5473162800a8de9b69cc679c117f40000099d7d0a697331e2618a3578399a48583e875bbeb63aa09ace67dd339ae80846d27a9e0c9b5aa623f7518b994b5763e5e6be61d4cad48196a1aa4ce6cc8ee5b562dca36b2dae303eeaa9c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f40716239e111d6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 172, 188, 84, 115, 22, 40, 0, 168, 222, 155, 105, 204, 103, 156, 17, 127, 64, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2746689549174364057, key: EventKey( [ 163, 87, 131, 153, 164, 133, 131, 232, 117, 187, 235, 99, 170, 9, 172, 230, 125, 211, 57, 174, 128, 132, 109, 39, ], ), }, sent_events: EventHandle { count: 8448579911304208553, key: EventKey( [ 185, 148, 181, 118, 62, 94, 107, 230, 29, 76, 173, 72, 25, 106, 26, 164, 206, 108, 200, 238, 91, 86, 45, 202, ], ), }, sequence_number: 11289097116432642614, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fb3bfefc3f6fe48f3c3116eb440b7459263a20ab94fa18f6cfba97c192909e4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99101340ec8f1f294d9f76d9ea5862ce4855192822d070fd7111a8bd9dab34aa4b19a10c43bb71cb2b3d043c5c20e32a7c1f64da4847e1600014a9ba5f54c9cf4d43ba0a11cfacda149eab5bb43cedbe2541863be2ef65b2a1ef497d705c6b54787a97dfc56f1148db3829372686becd9801518ce6432c956e05188d5f3699d85de8eff84018a921850ee1d11d826439a5267fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f681573a3a824250 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 200, 241, 242, 148, 217, 247, 109, 158, 165, 134, 44, 228, 133, 81, 146, 130, 45, 7, 15, 215, 17, 26, 139, 217, 218, 179, 74, 164, 177, 154, 16, 196, 59, 183, 28, 178, 179, 208, 67, 197, 194, 14, 50, 167, 193, 246, 77, 164, 132, 126, 22, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4a9ba5f54c9cf4d43ba0a11cfacda149, }, ), received_events: EventHandle { count: 6116692922868676074, key: EventKey( [ 99, 190, 46, 246, 91, 42, 30, 244, 151, 215, 5, 198, 181, 71, 135, 169, 125, 252, 86, 241, 20, 141, 179, 130, ], ), }, sent_events: EventHandle { count: 1549477881252967059, key: EventKey( [ 206, 100, 50, 201, 86, 224, 81, 136, 213, 243, 105, 157, 133, 222, 142, 255, 132, 1, 138, 146, 24, 80, 238, 29, ], ), }, sequence_number: 18043481254588241937, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }}, btree2 = {HashValue(000b553bf5128417c8abe358c520f14ff651b628fcb903e94cbabb2f7c3e36b5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015c58924e75921048c30df9449613a5eaff6f0cbd8a70df794a0231ba61f3eaff022ecdccd87656492cc35e23c91d721437e09c3d5a0f758f5768089a037785d67add0dd9e8711c63dbc232e408e371bd12183d0fa0250cb36b22521e53000116b00cd7ead5785e5033929d6435cf8b081df92c5358a27618747a5677eec8a064110dde68af80373680c6bb1f73ff44030987efb95f28930d18b445f5359428ff33568e9277e2779ac304e5e597fb3cc9a0e6515e122d16c62c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828ea7715834a5a21 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 146, 78, 117, 146, 16, 72, 195, 13, 249, 68, 150, 19, 165, 234, 255, 111, 12, 189, 138, 112, 223, 121, 74, 2, 49, 186, 97, 243, 234, 255, 2, 46, 205, 204, 216, 118, 86, 73, 44, 195, 94, 35, 201, 29, 114, 20, 55, 224, 156, 61, 90, 15, 117, 143, 87, 104, 8, 154, 3, 119, 133, 214, 122, 221, 13, 217, 232, 113, 28, 99, 219, 194, 50, 228, 8, 227, 113, 189, 18, 24, 61, 15, 160, 37, 12, 179, 107, 34, 82, 30, 83, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 16b00cd7ead5785e5033929d6435cf8b, }, ), received_events: EventHandle { count: 8548492156962675976, key: EventKey( [ 116, 122, 86, 119, 238, 200, 160, 100, 17, 13, 222, 104, 175, 128, 55, 54, 128, 198, 187, 31, 115, 255, 68, 3, ], ), }, sent_events: EventHandle { count: 978169935676016393, key: EventKey( [ 180, 69, 245, 53, 148, 40, 255, 51, 86, 142, 146, 119, 226, 119, 154, 195, 4, 229, 229, 151, 251, 60, 201, 160, ], ), }, sequence_number: 3226290565895049702, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(003f796c8c142f169c8bda43db0bfed3d626fe27b3738a6c0691a2bb289aaaf3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984013739a805b552a1e66869c5e63ca2c9c8a4c58487ddcb9098dbc06508fdd4d485d49612804fc841ee3e502be86c2d23efb1b0bf5668e6cd5400004227fb574477ec2a18a5943db4d9300d7fadf69a4b54cf1f5ae8aaab1941934329ab833db1406d4f4b1835c04d10d912bb19332d2bd1016596eac2515261ebc67cc26ac523006e26983a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088168c6f12ef70236 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 168, 5, 181, 82, 161, 230, 104, 105, 197, 230, 60, 162, 201, 200, 164, 197, 132, 135, 221, 203, 144, 152, 219, 192, 101, 8, 253, 212, 212, 133, 212, 150, 18, 128, 79, 200, 65, 238, 62, 80, 43, 232, 108, 45, 35, 239, 177, 176, 191, 86, 104, 230, 205, 84, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3092978179514246978, key: EventKey( [ 165, 148, 61, 180, 217, 48, 13, 127, 173, 246, 154, 75, 84, 207, 31, 90, 232, 170, 171, 25, 65, 147, 67, 41, ], ), }, sent_events: EventHandle { count: 5426676200623670187, key: EventKey( [ 53, 192, 77, 16, 217, 18, 187, 25, 51, 45, 43, 209, 1, 101, 150, 234, 194, 81, 82, 97, 235, 198, 124, 194, ], ), }, sequence_number: 4222166904550442346, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(01d03c044cf5cfeda197dd71abb939a3effba0e21dd70d92e8deae01a62c7718): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160518a6da8714ee72f5fe339d09887e7f09702421b4b81248aca0947331407fcb8f7810dd04c37c9c18d7aa64d7fc45ad2458caecf8f40a1dbe4ddf59a0ea3fd39f9dc343a26b257628740a95527b9d672767487a63be98dd55d341246a72321be0127208b906b9883c52d223e98c8aa5f3d000976f7382d08a851180ad8b4a7a9e466f14a86f64f9e7a7c30579a1f76e946ff3728d8941768bf16451847bc468c58f89ceb34e13394d91c18c9ebd5fa4ef30136c675091967c286ae502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f58d1462130e94a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 138, 109, 168, 113, 78, 231, 47, 95, 227, 57, 208, 152, 135, 231, 240, 151, 2, 66, 27, 75, 129, 36, 138, 202, 9, 71, 51, 20, 7, 252, 184, 247, 129, 13, 208, 76, 55, 201, 193, 141, 122, 166, 77, 127, 196, 90, 210, 69, 140, 174, 207, 143, 64, 161, 219, 228, 221, 245, 154, 14, 163, 253, 57, 249, 220, 52, 58, 38, 178, 87, 98, 135, 64, 169, 85, 39, 185, 214, 114, 118, 116, 135, 166, 59, 233, 141, 213, 93, 52, 18, 70, 167, 35, 33, 190, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 27208b906b9883c52d223e98c8aa5f3d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5883961903481845257, key: EventKey( [ 10, 216, 180, 167, 169, 228, 102, 241, 74, 134, 246, 79, 158, 122, 124, 48, 87, 154, 31, 118, 233, 70, 255, 55, ], ), }, sent_events: EventHandle { count: 4978376891897796648, key: EventKey( [ 71, 188, 70, 140, 88, 248, 156, 235, 52, 225, 51, 148, 217, 28, 24, 201, 235, 213, 250, 78, 243, 1, 54, 198, ], ), }, sequence_number: 5813732338493360501, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(01d76df0e5334213708a91622f2bd6a41eb30d8e4180feb4aab361b5754993e2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501583035f89aefd0b8d9900102300b6e06714ea731ca6a05e097d17b1211facf5d65b0e35c6ee1f7cc80b1067d113bc8edd6fa374aa2966a20feebfa1ad10629c2458146e83064091eb5a88d46fc99cbff85f38c4d9c4102ae5901c09400e8785b4e47d02587dd28c4f6bf00cd6e4ba32e739d6718aa824976e76e874a911ef066564eb427596db102d8b8224775e11dfb01e82e471806937f8ab4b37203c6aa7ca1419456cb4df9d3e9fa0ef145c7914421da3ea0982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a396c573339f5d74 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 53, 248, 154, 239, 208, 184, 217, 144, 1, 2, 48, 11, 110, 6, 113, 78, 167, 49, 202, 106, 5, 224, 151, 209, 123, 18, 17, 250, 207, 93, 101, 176, 227, 92, 110, 225, 247, 204, 128, 177, 6, 125, 17, 59, 200, 237, 214, 250, 55, 74, 162, 150, 106, 32, 254, 235, 250, 26, 209, 6, 41, 194, 69, 129, 70, 232, 48, 100, 9, 30, 181, 168, 141, 70, 252, 153, 203, 255, 133, 243, 140, 77, 156, 65, 2, 174, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c09400e8785b4e47d02587dd28c4f6bf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7466250401395470029, key: EventKey( [ 170, 130, 73, 118, 231, 110, 135, 74, 145, 30, 240, 102, 86, 78, 180, 39, 89, 109, 177, 2, 216, 184, 34, 71, ], ), }, sent_events: EventHandle { count: 5129292120827224437, key: EventKey( [ 6, 147, 127, 138, 180, 179, 114, 3, 198, 170, 124, 161, 65, 148, 86, 203, 77, 249, 211, 233, 250, 14, 241, 69, ], ), }, sequence_number: 10997859396620685767, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0210598c26bfafc8c2823b35b1a55e05fec8d061466c8066955c84f00cef0926): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f1226b7e37e143df49bbdc3a0fbb846e0b0d93a012d8d21e9869ab09d6001852f7accc8b200f667226a06ba5b1e1811ffb004f52cb11e50e7051a58c36f23ed7741b4b90f37215cef442e59a1b70a182262d5e7f6e0fa6091d3a0785a7c89a769f7c5ef23b5e0f16df5a96f371dfbdd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708390509db58940f7f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 183, 227, 126, 20, 61, 244, 155, 189, 195, 160, 251, 184, 70, 224, 176, 217, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d8d21e9869ab09d6001852f7accc8b2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2187546580731717622, key: EventKey( [ 17, 255, 176, 4, 245, 44, 177, 30, 80, 231, 5, 26, 88, 195, 111, 35, 237, 119, 65, 180, 185, 15, 55, 33, ], ), }, sent_events: EventHandle { count: 772263265517760348, key: EventKey( [ 34, 98, 213, 231, 246, 224, 250, 96, 145, 211, 160, 120, 90, 124, 137, 167, 105, 247, 197, 239, 35, 181, 224, 241, ], ), }, sequence_number: 15995410625470264685, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0224be195c2a7d22db84e064fbe68fdc87818eb017e38e1acd15f562cc6c4553): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae016120ed703b6154833c08e52317cfaaba7ad719398c3f5e47421d8fdc630d9bfd0d94d4183a229c8743c998691bcfe81ae0dbe9edc6069f5ddf1b204f8aa308e2add4657c5ceb727eceea0ccb76e4e4dc0ca52e3b90f7b5d56cf5d5414174e6c0ee2e000041551e58fa6b6672187f40d64d95f53eed01fe58c1d5aac50efaf1534c66f8b4df9546194347bb1f6418bdbf29386ca4f5b04744664dbc0c430556a094f625a6a9d10a73433c6817e7e72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708766a4e5e1f5b2eaa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 32, 237, 112, 59, 97, 84, 131, 60, 8, 229, 35, 23, 207, 170, 186, 122, 215, 25, 57, 140, 63, 94, 71, 66, 29, 143, 220, 99, 13, 155, 253, 13, 148, 212, 24, 58, 34, 156, 135, 67, 201, 152, 105, 27, 207, 232, 26, 224, 219, 233, 237, 198, 6, 159, 93, 223, 27, 32, 79, 138, 163, 8, 226, 173, 212, 101, 124, 92, 235, 114, 126, 206, 234, 12, 203, 118, 228, 228, 220, 12, 165, 46, 59, 144, 247, 181, 213, 108, 245, 213, 65, 65, 116, 230, 192, 238, 46, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8243394890912650561, key: EventKey( [ 127, 64, 214, 77, 149, 245, 62, 237, 1, 254, 88, 193, 213, 170, 197, 14, 250, 241, 83, 76, 102, 248, 180, 223, ], ), }, sent_events: EventHandle { count: 7214691042813626005, key: EventKey( [ 189, 191, 41, 56, 108, 164, 245, 176, 71, 68, 102, 77, 188, 12, 67, 5, 86, 160, 148, 246, 37, 166, 169, 209, ], ), }, sequence_number: 16710350678836605706, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(033f11175d6dda714bab6c83bc9383217a82b8d496b817d82633f722747d00a1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b4ef97f64c022b4a213a98cc35e364bdc9290d57532834a87eec05ce4a4334636dca8ea31efd533de73a95a0001f3e841341901b0ef204d3a8ca5ea9da2e30ecbcb45f22c2a1848b582f36c5bb816ba971f8dce11360455d3bce141dbaebe46e871b8df88962518c2e8964126727cbe2dff0abc3a03650a3e335f3dab0af35a3e89417c86705ad82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d239b6462c90faae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 78, 249, 127, 100, 192, 34, 180, 162, 19, 169, 140, 195, 94, 54, 75, 220, 146, 144, 213, 117, 50, 131, 74, 135, 238, 192, 92, 228, 164, 51, 70, 54, 220, 168, 234, 49, 239, 213, 51, 222, 115, 169, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f3e841341901b0ef204d3a8ca5ea9da2, }, ), received_events: EventHandle { count: 3039070230153989859, key: EventKey( [ 72, 181, 130, 243, 108, 91, 184, 22, 186, 151, 31, 141, 206, 17, 54, 4, 85, 211, 188, 225, 65, 219, 174, 190, ], ), }, sent_events: EventHandle { count: 2708502720363489350, key: EventKey( [ 194, 232, 150, 65, 38, 114, 124, 190, 45, 255, 10, 188, 58, 3, 101, 10, 62, 51, 95, 61, 171, 10, 243, 90, ], ), }, sequence_number: 15589896783008991550, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0509cb37abd90c7e3051e8618a5cff3d5842d4eab2dd85eb3e7d82c8a679e076): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b40157a522c6837a304b977d94fa00703f90206338cb01abad8854a20ee9e2d9fb405ceb6ca45354be351c8515822fbfad123da227f2d9dbd1ae3ac66f278990615841dc1df5aba8f5a2739c8ed8b515955252e51d44604fa7680001eb692908ff90a16dcbe344fe0f437b096dd93e0e9fa1e958186e9a087d4756eb2e659d8dfe1cca8de948cc5cb9f5129830576110a05294e85f186a03ec4b849e943f85ac3d64c126ccf96354825c49831c6be2f7c7babb8858c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086853847cd35284ec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 34, 198, 131, 122, 48, 75, 151, 125, 148, 250, 0, 112, 63, 144, 32, 99, 56, 203, 1, 171, 173, 136, 84, 162, 14, 233, 226, 217, 251, 64, 92, 235, 108, 164, 83, 84, 190, 53, 28, 133, 21, 130, 47, 191, 173, 18, 61, 162, 39, 242, 217, 219, 209, 174, 58, 198, 111, 39, 137, 144, 97, 88, 65, 220, 29, 245, 171, 168, 245, 162, 115, 156, 142, 216, 181, 21, 149, 82, 82, 229, 29, 68, 96, 79, 167, 104, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eb692908ff90a16dcbe344fe0f437b09, }, ), received_events: EventHandle { count: 6406829649422113133, key: EventKey( [ 110, 154, 8, 125, 71, 86, 235, 46, 101, 157, 141, 254, 28, 202, 141, 233, 72, 204, 92, 185, 245, 18, 152, 48, ], ), }, sent_events: EventHandle { count: 6910936710793683287, key: EventKey( [ 106, 3, 236, 75, 132, 158, 148, 63, 133, 172, 61, 100, 193, 38, 204, 249, 99, 84, 130, 92, 73, 131, 28, 107, ], ), }, sequence_number: 14076150975220414434, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0560835cfc4373c8536aef91740fd71f37b3abddbddbbc54a9b254e925a29ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149826390d0949ccf34ca708563531d6b4d77b71d9c33dea344e3d123f0572b2f24ff205ffc486938413b3cbd527a044e1c8fda97e9f9d560be906855a3e35be2e2ca77ba15e24c3143c80001c59a63f8339aca394667f86951a05bace641ec647535246218f98f940d1cc6d1b58dbaf35f7f3fdcbe5c21550f71a5e678a278159bbc42627f18652a3a1954ea3d6ce7ba049521d8a5b8f6fbc49362fc451f1bac638aa0a9ddf72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708547699598dd83c36 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 99, 144, 208, 148, 156, 207, 52, 202, 112, 133, 99, 83, 29, 107, 77, 119, 183, 29, 156, 51, 222, 163, 68, 227, 209, 35, 240, 87, 43, 47, 36, 255, 32, 95, 252, 72, 105, 56, 65, 59, 60, 189, 82, 122, 4, 78, 28, 143, 218, 151, 233, 249, 213, 96, 190, 144, 104, 85, 163, 227, 91, 226, 226, 202, 119, 186, 21, 226, 76, 49, 67, 200, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c59a63f8339aca394667f86951a05bac, }, ), received_events: EventHandle { count: 7071836093199172070, key: EventKey( [ 249, 143, 148, 13, 28, 198, 209, 181, 141, 186, 243, 95, 127, 63, 220, 190, 92, 33, 85, 15, 113, 165, 230, 120, ], ), }, sent_events: EventHandle { count: 9178972368357652642, key: EventKey( [ 101, 42, 58, 25, 84, 234, 61, 108, 231, 186, 4, 149, 33, 216, 165, 184, 246, 251, 196, 147, 98, 252, 69, 31, ], ), }, sequence_number: 17860618204202904603, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(06119a6b9297f880647f30c86c4eb7138424f6644a9af40ecb357344fa446a96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601398f7828b012a122a51258fa61192af659262366765e93fa2d14c775be4f50876b570ce94e1bdbe914fc23300a1d39b74c6d11a7a62b408222200001405875a3a1712417ac65969e8e43b4aff2dfa0b110fd9806188dc7e15597770395d443638b303bac96bbdbb1c7c34c35044134c72486ae482518889e7813ad97d9eeb68bff4def17c4c457bb156983ae642067df9f550ae0a60a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087ea02d969948f59c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 120, 40, 176, 18, 161, 34, 165, 18, 88, 250, 97, 25, 42, 246, 89, 38, 35, 102, 118, 94, 147, 250, 45, 20, 199, 117, 190, 79, 80, 135, 107, 87, 12, 233, 78, 27, 219, 233, 20, 252, 35, 48, 10, 29, 57, 183, 76, 109, 17, 167, 166, 43, 64, 130, 34, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 405875a3a1712417ac65969e8e43b4af, }, ), received_events: EventHandle { count: 475408008829001714, key: EventKey( [ 141, 199, 225, 85, 151, 119, 3, 149, 212, 67, 99, 139, 48, 59, 172, 150, 187, 219, 177, 199, 195, 76, 53, 4, ], ), }, sent_events: EventHandle { count: 2686589068892386369, key: EventKey( [ 136, 158, 120, 19, 173, 151, 217, 238, 182, 139, 255, 77, 239, 23, 196, 196, 87, 187, 21, 105, 131, 174, 100, 32, ], ), }, sequence_number: 767547121504083815, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(063adaf418a03f617453dcaaa04d126e5f7f4da58c36ebf5ccb534d56b43c05c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518d33d18bc8bcbbe6214060387780926167454c50acc6128c800005bd8608ca49bb76418122fad0cb0f948e6381e651ea110ff8634d8880eab05406a4d9d9663c5ca816418a0daeed72e2d4a11b54247be196354afb526fe8e554335f9efb2872d778272302101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a6bd3f28ada9bda2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 61, 24, 188, 139, 203, 190, 98, 20, 6, 3, 135, 120, 9, 38, 22, 116, 84, 197, 10, 204, 97, 40, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7257440455562942555, key: EventKey( [ 18, 47, 173, 12, 176, 249, 72, 230, 56, 30, 101, 30, 161, 16, 255, 134, 52, 216, 136, 14, 171, 5, 64, 106, ], ), }, sent_events: EventHandle { count: 7242292624916651341, key: EventKey( [ 160, 218, 238, 215, 46, 45, 74, 17, 181, 66, 71, 190, 25, 99, 84, 175, 181, 38, 254, 142, 85, 67, 53, 249, ], ), }, sequence_number: 3490996109542142703, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(064f2bd51604f7931c1699edacd1d2623d19b2ad621d596b9d8c774e44ea79b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c980012342b73fa5d9284e70e7d23756ac65d0e513378914a73e4928a5249a6a96bc259c79ae4200019189f0f6b1330e879f26b789c457fe7f905921794ed4534618bf25960feacc975f8cc08961e31a9ca4c64f4302d45b19d0975f16282afd481e1844c08a54a9107faa23a90a558ae45c97e52a3d467c4a9d7da160d612a351e6192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085030c72d4486fde0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 183, 63, 165, 217, 40, 78, 112, 231, 210, 55, 86, 172, 101, 208, 229, 19, 55, 137, 20, 167, 62, 73, 40, 165, 36, 154, 106, 150, 188, 37, 156, 121, 174, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9189f0f6b1330e879f26b789c457fe7f, }, ), received_events: EventHandle { count: 5067627439226706320, key: EventKey( [ 191, 37, 150, 15, 234, 204, 151, 95, 140, 192, 137, 97, 227, 26, 156, 164, 198, 79, 67, 2, 212, 91, 25, 208, ], ), }, sent_events: EventHandle { count: 2182272376964013975, key: EventKey( [ 68, 192, 138, 84, 169, 16, 127, 170, 35, 169, 10, 85, 138, 228, 92, 151, 229, 42, 61, 70, 124, 74, 157, 125, ], ), }, sequence_number: 1866268856429207713, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0660333d8dfed9b40e468b2094fc0e8c65a905ef83c36ed3a8cc2c5d1c93bf2c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b014e6261e870948813743adfcbe7db706ef3135bbdb41c2d15aad08b79ab2acb79f6f5985295b51a659bf1fe30568684f0f231eec636351759ba01836aaae0e2de6eb0309caf84da08d19c0fef4c3079000095d9921727592a421832d32494550ca20237a9e4802cbe66d012c48b59176ebe503a0e7fcc9322312118965a55aa6185fdde961c1409f9ffd65ac448bec1f42f6d8ef70224727b0935e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080606ec368ff91212 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 97, 232, 112, 148, 136, 19, 116, 58, 223, 203, 231, 219, 112, 110, 243, 19, 91, 189, 180, 28, 45, 21, 170, 208, 139, 121, 171, 42, 203, 121, 246, 245, 152, 82, 149, 181, 26, 101, 155, 241, 254, 48, 86, 134, 132, 240, 242, 49, 238, 198, 54, 53, 23, 89, 186, 1, 131, 106, 170, 224, 226, 222, 110, 176, 48, 156, 175, 132, 218, 8, 209, 156, 15, 239, 76, 48, 121, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4767721179959187861, key: EventKey( [ 50, 211, 36, 148, 85, 12, 162, 2, 55, 169, 228, 128, 44, 190, 102, 208, 18, 196, 139, 89, 23, 110, 190, 80, ], ), }, sent_events: EventHandle { count: 2391730895296859706, key: EventKey( [ 150, 90, 85, 170, 97, 133, 253, 222, 150, 28, 20, 9, 249, 255, 214, 90, 196, 72, 190, 193, 244, 47, 109, 142, ], ), }, sequence_number: 16516117634251752183, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(07574c5cc33a84ec369e0052e7a84eacb2bc527a83fd5ed50ae420b0d2d2afa2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401473ce55735897b347200210ecae2bf0855d226abc2be786993c8254bb9e2d99e961dcf4efbd146eede6ba392350f9ac4a6d3f1a80010c0a03bf3899273706a46d33e1b71a24cb8fa0000834f5d944542ad1e1853f5d223d8fbaf5a840b64bcaddd469068586c67ae104fc5276230963846e30c18366228872a735a032bbf83606c3892ff9ac9395569aa0138a07ea07d1299b09d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c707aa0c379ff8bc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 60, 229, 87, 53, 137, 123, 52, 114, 0, 33, 14, 202, 226, 191, 8, 85, 210, 38, 171, 194, 190, 120, 105, 147, 200, 37, 75, 185, 226, 217, 158, 150, 29, 207, 78, 251, 209, 70, 238, 222, 107, 163, 146, 53, 15, 154, 196, 166, 211, 241, 168, 0, 16, 192, 160, 59, 243, 137, 146, 115, 112, 106, 70, 211, 62, 27, 113, 162, 76, 184, 250, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2210495858718101379, key: EventKey( [ 83, 245, 210, 35, 216, 251, 175, 90, 132, 11, 100, 188, 173, 221, 70, 144, 104, 88, 108, 103, 174, 16, 79, 197, ], ), }, sent_events: EventHandle { count: 928663157020320295, key: EventKey( [ 54, 98, 40, 135, 42, 115, 90, 3, 43, 191, 131, 96, 108, 56, 146, 255, 154, 201, 57, 85, 105, 170, 1, 56, ], ), }, sequence_number: 11362750164551892640, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(075eee35f5c4d92d130c5418fd679e18fa97270d809b05c643fe3fa78019e5f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690cc9fc0f8ebbfc38f4b1b47ee601a52f22c43f95816141e8843af66109d8003e7666e0f316311c18c7498f889cf9242a21287a60e96adda2adc924eecbbd0f2925027abada953e331828cbf827c77ef3b7006886a2b0a523f348e3f642239a80c6b939e0567e428ebf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089f30ec9beb084d48 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 252, 15, 142, 187, 252, 56, 244, 177, 180, 126, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a52f22c43f95816141e8843af66109d8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2031430143618479678, key: EventKey( [ 199, 73, 143, 136, 156, 249, 36, 42, 33, 40, 122, 96, 233, 106, 221, 162, 173, 201, 36, 238, 203, 189, 15, 41, ], ), }, sent_events: EventHandle { count: 3692553511154352677, key: EventKey( [ 40, 203, 248, 39, 199, 126, 243, 183, 0, 104, 134, 162, 176, 165, 35, 243, 72, 227, 246, 66, 35, 154, 128, 198, ], ), }, sequence_number: 13803043018327996857, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(07f29bb1d0e87cec5df12134ad965df8bb1008f2c16915975464ed767d78caa6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98201254d22e58bd0a226b769c22785d0f522bb6ab8a55603e0e491df4d4131a7c7cc3199f323ca220165803d18119689aa1457de470781ba1b00dbb4d223e9f5297c18df11e2751faab0fc00fc48a87ba194f23eb69cdac0f6d3025fd223a03c77547c188d597958ef0a3a42301c505765990fab0aadfa8e038cd16aa801dfdf0abddb1b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c43a54df919a7330 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 77, 34, 229, 139, 208, 162, 38, 183, 105, 194, 39, 133, 208, 245, 34, 187, 106, 184, 165, 86, 3, 224, 228, 145, 223, 77, 65, 49, 167, 199, 204, 49, 153, 243, 35, 202, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 65803d18119689aa1457de470781ba1b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8946952516425397467, key: EventKey( [ 223, 17, 226, 117, 31, 170, 176, 252, 0, 252, 72, 168, 123, 161, 148, 242, 62, 182, 156, 218, 192, 246, 211, 2, ], ), }, sent_events: EventHandle { count: 8958916661015204447, key: EventKey( [ 141, 89, 121, 88, 239, 10, 58, 66, 48, 28, 80, 87, 101, 153, 15, 171, 10, 173, 250, 142, 3, 140, 209, 106, ], ), }, sequence_number: 2007405913326944680, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0856994841b64e92a710adf280d94c831b8beb593ad43b711502aaff505e67bd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101548c9a2502fe32c43ffebac8455459095921206cc3a970bed04e8063815dc6ac70b804ed8525799394942db4deb41e144940639af5be85beac08689643f7632ae1201a38b4801aea773bd807e58a56de02aabba41a0001eae68b89d663471173867e0c15b78192c00f67d2037bd02318856925410a216b72606c0aa84b35753147800e9db945a014dab082f7beb67c71185a12da4e0e5a02c8c61307a8ce8c42e69cbe201c6c914162ffd0c992a3a5370e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861211e1f3247a648 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 154, 37, 2, 254, 50, 196, 63, 254, 186, 200, 69, 84, 89, 9, 89, 33, 32, 108, 195, 169, 112, 190, 208, 78, 128, 99, 129, 93, 198, 172, 112, 184, 4, 237, 133, 37, 121, 147, 148, 148, 45, 180, 222, 180, 30, 20, 73, 64, 99, 154, 245, 190, 133, 190, 172, 8, 104, 150, 67, 247, 99, 42, 225, 32, 26, 56, 180, 128, 26, 234, 119, 59, 216, 7, 229, 138, 86, 222, 2, 170, 187, 164, 26, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eae68b89d663471173867e0c15b78192, }, ), received_events: EventHandle { count: 2580697842828382144, key: EventKey( [ 133, 105, 37, 65, 10, 33, 107, 114, 96, 108, 10, 168, 75, 53, 117, 49, 71, 128, 14, 157, 185, 69, 160, 20, ], ), }, sent_events: EventHandle { count: 8177611954710556890, key: EventKey( [ 90, 18, 218, 78, 14, 90, 2, 200, 198, 19, 7, 168, 206, 140, 66, 230, 156, 190, 32, 28, 108, 145, 65, 98, ], ), }, sequence_number: 1024469562211029247, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08702463bbd9ab44d115cb4b202f2bfd10c28f03ad47d7160d041988ccb94799): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973161a3c6f518ad87d73c4cc1c83ad357f5046a718e36d060001d648ae87680b825c6030f7d4df8ebaeb9a4d8b4ba806435018cca257d82f4cf21e2d7cae11b8cc12464e172e7d538004ec1df2b4e58dad9a4f1814a8b4b58099fb4b5b60386eff586a468f70c32841dd98b85b736e0fcc6478562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70815afa2068851adb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 60, 111, 81, 138, 216, 125, 115, 196, 204, 28, 131, 173, 53, 127, 80, 70, 167, 24, 227, 109, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d648ae87680b825c6030f7d4df8ebaeb, }, ), received_events: EventHandle { count: 5783473666365541786, key: EventKey( [ 204, 162, 87, 216, 47, 76, 242, 30, 45, 124, 174, 17, 184, 204, 18, 70, 78, 23, 46, 125, 83, 128, 4, 236, ], ), }, sent_events: EventHandle { count: 5736087900365582877, key: EventKey( [ 20, 168, 180, 181, 128, 153, 251, 75, 91, 96, 56, 110, 255, 88, 106, 70, 143, 112, 195, 40, 65, 221, 152, 184, ], ), }, sequence_number: 6230840912062083931, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0897b4968b52e1b82c50dd24204c9275635b676547b5d8d943146bbcf553e0eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014db5955eb03ff5c7c8db5be28287ae03d1c46c98e14c7250507547e4d1f1e9c58b8723f6db5855ec7570d6507053b139370cbfc21579868f9efc2b39ca13d69e8efc5982f3d3227712419ec9b66f017a86a64a06b851536a9a8124e018eabf013015fde6d335f810fa8b4d2557570ef3109b9d433f50075b186e9d008a6cd4bbc190bd01cb2db2548197a069d27e6bdef377ad90072e5213371817ec12267c23c7021eb38f92aa3bba250ac47e9c61695ba709331647c6f1be892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708852210b6c766ccf2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 181, 149, 94, 176, 63, 245, 199, 200, 219, 91, 226, 130, 135, 174, 3, 209, 196, 108, 152, 225, 76, 114, 80, 80, 117, 71, 228, 209, 241, 233, 197, 139, 135, 35, 246, 219, 88, 85, 236, 117, 112, 214, 80, 112, 83, 177, 57, 55, 12, 191, 194, 21, 121, 134, 143, 158, 252, 43, 57, 202, 19, 214, 158, 142, 252, 89, 130, 243, 211, 34, 119, 18, 65, 158, 201, 182, 111, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7a86a64a06b851536a9a8124e018eabf, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3015fde6d335f810fa8b4d2557570ef3, }, ), received_events: EventHandle { count: 6559299614935980816, key: EventKey( [ 110, 157, 0, 138, 108, 212, 187, 193, 144, 189, 1, 203, 45, 178, 84, 129, 151, 160, 105, 210, 126, 107, 222, 243, ], ), }, sent_events: EventHandle { count: 3968606054292434295, key: EventKey( [ 23, 236, 18, 38, 124, 35, 199, 2, 30, 179, 143, 146, 170, 59, 186, 37, 10, 196, 126, 156, 97, 105, 91, 167, ], ), }, sequence_number: 9925636462669607689, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08d0f244af4bb91549fd9c766165759f9f2c2897fd37b02b1c2a8c10f04f9a66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999012cb75d38d1af306a5ff19eb3c1cef29d066371e0419686eeada86589b59ca9fd532510f8d43d7f699a586f198601de19b2e783f710a2904615ecf481da6401b83456c7edad999fdf6ae7a1be5ad7ee68d40b533d77e141189520cd5bfa6eb97c5fd7e6e33db296770bec0c477e9d950347c247394f17ed6c18694a9668a5407da99e7a676789ec5d6653b10484f2e373131aeb5cb627a760f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ba437b5b699a57c5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 93, 56, 209, 175, 48, 106, 95, 241, 158, 179, 193, 206, 242, 157, 6, 99, 113, 224, 65, 150, 134, 238, 173, 168, 101, 137, 181, 156, 169, 253, 83, 37, 16, 248, 212, 61, 127, 105, 154, 88, 111, 25, 134, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: de19b2e783f710a2904615ecf481da64, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b83456c7edad999fdf6ae7a1be5ad7ee, }, ), received_events: EventHandle { count: 4747206587495208040, key: EventKey( [ 149, 32, 205, 91, 250, 110, 185, 124, 95, 215, 230, 227, 61, 178, 150, 119, 11, 236, 12, 71, 126, 157, 149, 3, ], ), }, sent_events: EventHandle { count: 7848955354607501895, key: EventKey( [ 105, 74, 150, 104, 165, 64, 125, 169, 158, 122, 103, 103, 137, 236, 93, 102, 83, 177, 4, 132, 242, 227, 115, 19, ], ), }, sequence_number: 17609258332023745306, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(09531e4bd308e6f2925e26a767f3b79ec31fc9cfef5ef8f191901a4c03bd8b0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9680b361b6a9d6907dc0fdee9420001274b1ad80e69da0b28ebfce9c5101cd3b73402d3380205101869829dd503ae79b9bcb9c9ead66043f17bcdbbdde5386c4e84ce2b4163c0ce22183148831ab043b63d667e92e835ccff6be51e586fef891a3c7e073b73075aab9f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861dfa14d22219c3e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 27, 106, 157, 105, 7, 220, 15, 222, 233, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 274b1ad80e69da0b28ebfce9c5101cd3, }, ), received_events: EventHandle { count: 1154331322571961527, key: EventKey( [ 105, 130, 157, 213, 3, 174, 121, 185, 188, 185, 201, 234, 214, 96, 67, 241, 123, 205, 187, 221, 229, 56, 108, 78, ], ), }, sent_events: EventHandle { count: 2508153575019630212, key: EventKey( [ 49, 72, 131, 26, 176, 67, 182, 61, 102, 126, 146, 232, 53, 204, 255, 107, 229, 30, 88, 111, 239, 137, 26, 60, ], ), }, sequence_number: 11505388661092583294, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(098a0afe35e49bf1a935f9360ab4af52515d1ba943a1818a267e41e886ad4d0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144742a81d46f940255cd4ec82ab749228d8f635e2c3d6d0d176d3410be2cf999fbdee43412d7a78af82286e5996500dce1daada43a6e27241b41fb30863caca6fcb50a8cc8000002d29538cc2ee05518d9ba0acc1711b6a279a3b489ea73795bd81f315c7179833b6c54c92ae736522c185d49060404ae93c149e8073387578665bc242b3f1b20aca878bf2977c64e0db02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d12b4de096fcce0b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 42, 129, 212, 111, 148, 2, 85, 205, 78, 200, 42, 183, 73, 34, 141, 143, 99, 94, 44, 61, 109, 13, 23, 109, 52, 16, 190, 44, 249, 153, 251, 222, 228, 52, 18, 215, 167, 138, 248, 34, 134, 229, 153, 101, 0, 220, 225, 218, 173, 164, 58, 110, 39, 36, 27, 65, 251, 48, 134, 60, 172, 166, 252, 181, 10, 140, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6187997342664610306, key: EventKey( [ 217, 186, 10, 204, 23, 17, 182, 162, 121, 163, 180, 137, 234, 115, 121, 91, 216, 31, 49, 92, 113, 121, 131, 59, ], ), }, sent_events: EventHandle { count: 3193675452242285676, key: EventKey( [ 93, 73, 6, 4, 4, 174, 147, 193, 73, 232, 7, 51, 135, 87, 134, 101, 188, 36, 43, 63, 27, 32, 172, 168, ], ), }, sequence_number: 12685882339682271096, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(099e73c5061587d773347891440964443119ab2a2e1b2a19ca61d3e162c55fb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148041a140f18876ae8f1184f045fb46312919b3dc23058904d10256288b3596545b8f2b8fd15ab21651d58c5d18d255a4700515806f2c7b8986f64130b39857f73ee72dc3eaf68e537018b99f7076a52187b8c018bfdbc265dab01ac6465f109faee7d6c78aebdc53ccce1f6d1fdab28fa9436183cba9d8e8e471d9da8fd12923bd7bdbd1aa0334f1d5214a33a56d93e4bb27b6918788ab79b54e03df32ab4babf52e52ceeed425c7e4a395765c495014715d101f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3e93c34e1c6430c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 26, 20, 15, 24, 135, 106, 232, 241, 24, 79, 4, 95, 180, 99, 18, 145, 155, 61, 194, 48, 88, 144, 77, 16, 37, 98, 136, 179, 89, 101, 69, 184, 242, 184, 253, 21, 171, 33, 101, 29, 88, 197, 209, 141, 37, 90, 71, 0, 81, 88, 6, 242, 199, 184, 152, 111, 100, 19, 11, 57, 133, 127, 115, 238, 114, 220, 62, 175, 104, 229, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8b99f7076a52187b8c018bfdbc265dab, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ac6465f109faee7d6c78aebdc53ccce1, }, ), received_events: EventHandle { count: 3933043427192459766, key: EventKey( [ 60, 186, 157, 142, 142, 71, 29, 157, 168, 253, 18, 146, 59, 215, 189, 189, 26, 160, 51, 79, 29, 82, 20, 163, ], ), }, sent_events: EventHandle { count: 7600864832364566074, key: EventKey( [ 120, 138, 183, 155, 84, 224, 61, 243, 42, 180, 186, 191, 82, 229, 44, 238, 237, 66, 92, 126, 74, 57, 87, 101, ], ), }, sequence_number: 17582564309546931652, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b0244e45b758f52fe5a37a4752c378feb9c6df845f9fdb70c9043d40e42f8d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b1ed009c1185e845d722488a559c5b4d075d126975c27c61e58d78124efbf250001de109a2ace03a62217e87684aa341706fa1e8d41d956cf4f183dabd37851495ef617730b05117ad4d64d3cf07572dce3b5805151c3890a107a189697dfab325b994dfbce0663957220bd8ff8bef6f52ce43d7b677d16ea3d764d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d9462faefd28fe3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 208, 9, 193, 24, 94, 132, 93, 114, 36, 136, 165, 89, 197, 180, 208, 117, 209, 38, 151, 92, 39, 198, 30, 88, 215, 129, 36, 239, 191, 37, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de109a2ace03a62217e87684aa341706, }, ), received_events: EventHandle { count: 5750910740283072250, key: EventKey( [ 61, 171, 211, 120, 81, 73, 94, 246, 23, 115, 11, 5, 17, 122, 212, 214, 77, 60, 240, 117, 114, 220, 227, 181, ], ), }, sent_events: EventHandle { count: 8795541659058262400, key: EventKey( [ 150, 151, 223, 171, 50, 91, 153, 77, 251, 206, 6, 99, 149, 114, 32, 189, 143, 248, 190, 246, 245, 44, 228, 61, ], ), }, sequence_number: 5581716863781267323, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b1abac56772b40c797fd176917a26f52a8f97bb9c8aecc775e8821f369ce57c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9d00163872449742d88a5a0efd4cb4916b57f55149842fe6101a8cc378adc9fc6e9832dea5e2c1c5cfb2e3d1a89d11dc2fca6ef56c748a735cca184129d5289f33c2b0401a01fb750646365e26666331c95a17ae8bb2c4d91abfd6111be20d509ce98286f345e01a5e924a0de87b742864c76e1a1ddade8010e9ca881726f2f2e7bf3ef442eac3d30f1ab432a41fb3d1b188dc0ef2738b85106a71abe2aa28d581b33d5f56fdf031bc9c451625eb85fa5411883523a1bf5f7f8606b230e3ce82c2815b03bafac0eeb4c17f9d6b006c96e26562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708edf7ede5809b693c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 36, 73, 116, 45, 136, 165, 160, 239, 212, 203, 73, 22, 181, 127, 85, 20, 152, 66, 254, 97, 1, 168, 204, 55, 138, 220, 159, 198, 233, 131, 45, 234, 94, 44, 28, 92, 251, 46, 61, 26, 137, 209, 29, 194, 252, 166, 239, 86, 199, 72, 167, 53, 204, 161, 132, 18, 157, 82, 137, 243, 60, 43, 4, 1, 160, 31, 183, 80, 100, 99, 101, 226, 102, 102, 51, 28, 149, 161, 122, 232, 187, 44, 77, 145, 171, 253, 97, 17, 190, 32, 213, 9, 206, 152, 40, 111, 52, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a5e924a0de87b742864c76e1a1ddade8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e9ca881726f2f2e7bf3ef442eac3d30, }, ), received_events: EventHandle { count: 1963001269903928305, key: EventKey( [ 141, 192, 239, 39, 56, 184, 81, 6, 167, 26, 190, 42, 162, 141, 88, 27, 51, 213, 245, 111, 223, 3, 27, 201, ], ), }, sent_events: EventHandle { count: 4730292229084697028, key: EventKey( [ 131, 82, 58, 27, 245, 247, 248, 96, 107, 35, 14, 60, 232, 44, 40, 21, 176, 59, 175, 172, 14, 235, 76, 23, ], ), }, sequence_number: 6207770946056541945, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b5dc7954b7d90c68691a8dc942ebef6740f25f362de6188bc832a93079d1287): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c578357f81fd3555eacbf909c5c539b46b8db4299f520e6c70ede5b1f4b39a8e15dfe528020eda24465597fb3bad2ac1596644c3b85a60d886199a4ea0184cb035362ae70014c1fed6ddc38c43c0152b7d911f0a644fa49284b3958243d04a464eee29910170d181d27040575c6dbf2c909d99572d0e885ada37628c2bf6293f7c9ba7b6fda4f07189e3d0540e832d414ac092468e49571b58b4e2f4c9ebd1069ad112b1bdf720d8e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce2aa930e9730c25 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 131, 87, 248, 31, 211, 85, 94, 172, 191, 144, 156, 92, 83, 155, 70, 184, 219, 66, 153, 245, 32, 230, 199, 14, 222, 91, 31, 75, 57, 168, 225, 93, 254, 82, 128, 32, 237, 162, 68, 101, 89, 127, 179, 186, 210, 172, 21, 150, 100, 76, 59, 133, 166, 13, 136, 97, 153, 164, 234, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 84cb035362ae70014c1fed6ddc38c43c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 52b7d911f0a644fa49284b3958243d04, }, ), received_events: EventHandle { count: 943240900080723108, key: EventKey( [ 29, 39, 4, 5, 117, 198, 219, 242, 201, 9, 217, 149, 114, 208, 232, 133, 173, 163, 118, 40, 194, 191, 98, 147, ], ), }, sent_events: EventHandle { count: 526879853777701367, key: EventKey( [ 158, 61, 5, 64, 232, 50, 212, 20, 172, 9, 36, 104, 228, 149, 113, 181, 139, 78, 47, 76, 158, 189, 16, 105, ], ), }, sequence_number: 10235963830642086317, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c0927e57690f7897012ec57d5ef3994b40d36606e1f816934312be19788ce02): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f6665ae270c90823beebeaf207ebe9b5dd8d567c93043b54b650c5a4dde937b83e338ff0455fb13c4edfa525d95882f92099c26907d33c89f0d6cc85b3e758d208f318aa4943ce7efbb9c3f279dbb2f006a0f819eca7681c501b4e20d6dad4b01fdf051c553876b9a4d7dcc0cb2884b9500cd6d3cd46799934d18daf2ebe8bbf49f1a5af18147a98007f8afb991980e28dacd6f65f76a058c371b18ef2e6c621b80b36062e68edabffb0717b1ca8292795c2a663ba180bd8226e86e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc1f9f250a9601a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 101, 174, 39, 12, 144, 130, 59, 238, 190, 175, 32, 126, 190, 155, 93, 216, 213, 103, 201, 48, 67, 181, 75, 101, 12, 90, 77, 222, 147, 123, 131, 227, 56, 255, 4, 85, 251, 19, 196, 237, 250, 82, 93, 149, 136, 47, 146, 9, 156, 38, 144, 125, 51, 200, 159, 13, 108, 200, 91, 62, 117, 141, 32, 143, 49, 138, 164, 148, 60, 231, 239, 187, 156, 63, 39, 157, 187, 47, 0, 106, 15, 129, 158, 202, 118, 129, 197, 1, 180, 226, 13, 109, 173, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fdf051c553876b9a4d7dcc0cb2884b95, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5589980233718328781, key: EventKey( [ 218, 242, 235, 232, 187, 244, 159, 26, 90, 241, 129, 71, 169, 128, 7, 248, 175, 185, 145, 152, 14, 40, 218, 205, ], ), }, sent_events: EventHandle { count: 1961190117640463727, key: EventKey( [ 239, 46, 108, 98, 27, 128, 179, 96, 98, 230, 142, 218, 191, 251, 7, 23, 177, 202, 130, 146, 121, 92, 42, 102, ], ), }, sequence_number: 7991679881735872827, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c70d12519e0f6d5806bf39a68888bdbf1e07bd8aa912ca0a819e0b316b9bc59): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999014c838a57aee2782f26f104dea718fc6da05f79ec544aadf1d5da51df0bbd53effd4f8ec24dd50da106a7f94c5b9a4a6cf6232545d8eaf675d345bef83beeb7c0d3a98afd16b6b42e382a28a624000016d07ab82eb2230e18815c2eeaff4e9c6856c60d75d0d2ecf00ce4aeb6dc3660217dcd62d2dae6fc4f18a101c7a347ca863c1f108f3cba66799d874a597ba085a1c4b98abe117a067bb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c45af0e84e67b1de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 138, 87, 174, 226, 120, 47, 38, 241, 4, 222, 167, 24, 252, 109, 160, 95, 121, 236, 84, 74, 173, 241, 213, 218, 81, 223, 11, 189, 83, 239, 253, 79, 142, 194, 77, 213, 13, 161, 6, 167, 249, 76, 91, 154, 74, 108, 246, 35, 37, 69, 216, 234, 246, 117, 211, 69, 190, 248, 59, 238, 183, 192, 211, 169, 138, 253, 22, 182, 180, 46, 56, 42, 40, 166, 36, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1018853854449160214, key: EventKey( [ 129, 92, 46, 234, 255, 78, 156, 104, 86, 198, 13, 117, 208, 210, 236, 240, 12, 228, 174, 182, 220, 54, 96, 33, ], ), }, sent_events: EventHandle { count: 5763735450634341757, key: EventKey( [ 161, 1, 199, 163, 71, 202, 134, 60, 31, 16, 143, 60, 186, 102, 121, 157, 135, 74, 89, 123, 160, 133, 161, 196, ], ), }, sequence_number: 13365283440505555641, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c7ceacc0b35a95a4c2a1ae1761d75b34aa13cbdf9863ba1b6d5a0abe6d88f4b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0151dc3f1f03516e3437c821c8f41a0a911ec56ea39580a6d37d1ca58bc1cee1df6ac20e6d5c7b2fdff75b9979da6ed95880f8d7774fa02382339a57ba6b3e33f79a416ce0f88e9a7e6a091ade49b2bb7384e701ada755218a660fb82eda421bfaddb84f00491526c170c1e0581806a85c775e14213b5060f269763df69526014b2de19c5bd796f2039f4051da4618ab901aa42d5ea82232bfe3e0e785b32c975b62bba2ee679e95a88ca72325c5422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087da0a8f8096ad80c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 63, 31, 3, 81, 110, 52, 55, 200, 33, 200, 244, 26, 10, 145, 30, 197, 110, 163, 149, 128, 166, 211, 125, 28, 165, 139, 193, 206, 225, 223, 106, 194, 14, 109, 92, 123, 47, 223, 247, 91, 153, 121, 218, 110, 217, 88, 128, 248, 215, 119, 79, 160, 35, 130, 51, 154, 87, 186, 107, 62, 51, 247, 154, 65, 108, 224, 248, 142, 154, 126, 106, 9, 26, 222, 73, 178, 187, 115, 132, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ada755218a660fb82eda421bfaddb84f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6404331360141841737, key: EventKey( [ 6, 168, 92, 119, 94, 20, 33, 59, 80, 96, 242, 105, 118, 61, 246, 149, 38, 1, 75, 45, 225, 156, 91, 215, ], ), }, sent_events: EventHandle { count: 5105482465565471382, key: EventKey( [ 171, 144, 26, 164, 45, 94, 168, 34, 50, 191, 227, 224, 231, 133, 179, 44, 151, 91, 98, 187, 162, 238, 103, 158, ], ), }, sequence_number: 4811292611980339349, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c81b818813bd9f388da65ee902ac090d26a3e298e3b687a01017c73d2015c48): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c983012613cc985d72f71b57884c495c9fda0460837249b0d1ab5b6b675d503c26dc43daf1730d98940f014a1f5b8d4ea4bc4a52a51db8ee85f8cd00aab6fb97994f8459180fca8cb19ec09b0cefb335aaf2a1b87438c5a5c49ad9196ccae988a80281c11a18f04c6c1eb015274d469e0744cd60509f07e928d8337595a5232cc2c42847957c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3b2c2ba430a0302 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 19, 204, 152, 93, 114, 247, 27, 87, 136, 76, 73, 92, 159, 218, 4, 96, 131, 114, 73, 176, 209, 171, 91, 107, 103, 93, 80, 60, 38, 220, 67, 218, 241, 115, 13, 152, 148, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4a1f5b8d4ea4bc4a52a51db8ee85f8cd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6450368087399839402, key: EventKey( [ 15, 202, 140, 177, 158, 192, 155, 12, 239, 179, 53, 170, 242, 161, 184, 116, 56, 197, 165, 196, 154, 217, 25, 108, ], ), }, sent_events: EventHandle { count: 1927963963908745674, key: EventKey( [ 240, 76, 108, 30, 176, 21, 39, 77, 70, 158, 7, 68, 205, 96, 80, 159, 7, 233, 40, 216, 51, 117, 149, 165, ], ), }, sequence_number: 8977159672658275363, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0cded44e60bf2d50327c612337a1aa3cbaec95dd712bc6a85e4cf0025c4ff4e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01501133759dda8e84e4c370425529e47858732878f7bd84b7b946f9da5e87dc6cbacc9114ced7f4e89bd37903b1dd5ffa94006b9a1633878a01c3ca86658558082e5798760fc34b5b296eb210497040e51500013314516c624b755cbeeb435196ace8744777dbd4e9c0e27e182a44079803e030e1d3c22553a7d08292a99f914e285ba7d0fe7a2a19a5c12e3a188849c832d5a883fe39356859b5ba72666860a81594570b9ab9aedf04214d9c192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70816427d7afa3870a6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 17, 51, 117, 157, 218, 142, 132, 228, 195, 112, 66, 85, 41, 228, 120, 88, 115, 40, 120, 247, 189, 132, 183, 185, 70, 249, 218, 94, 135, 220, 108, 186, 204, 145, 20, 206, 215, 244, 232, 155, 211, 121, 3, 177, 221, 95, 250, 148, 0, 107, 154, 22, 51, 135, 138, 1, 195, 202, 134, 101, 133, 88, 8, 46, 87, 152, 118, 15, 195, 75, 91, 41, 110, 178, 16, 73, 112, 64, 229, 21, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3314516c624b755cbeeb435196ace874, }, ), received_events: EventHandle { count: 9143082304046593863, key: EventKey( [ 42, 68, 7, 152, 3, 224, 48, 225, 211, 194, 37, 83, 167, 208, 130, 146, 169, 159, 145, 78, 40, 91, 167, 208, ], ), }, sent_events: EventHandle { count: 4192501217964489470, key: EventKey( [ 136, 73, 200, 50, 213, 168, 131, 254, 57, 53, 104, 89, 181, 186, 114, 102, 104, 96, 168, 21, 148, 87, 11, 154, ], ), }, sequence_number: 1845434751526088377, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0ce226ddf902362336b89fecd20fffa8d0851178af4784ddf4ccb9d3fcde2cb3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964076a5b62de21b6d70001e0a5f0d84561915194f27a85d1e1666adbfd45cf8506fe6b1824b4aa214ed7822b7b27cde5940b71bf728221182682bb8ce31de4852824d24618ef600b6913b7e9025424a00688c6af8d28061f43f8acb2b2d478752ecf8748232101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b515baa4266880ca Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 91, 98, 222, 33, 182, 215, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e0a5f0d84561915194f27a85d1e1666a, }, ), received_events: EventHandle { count: 7781664377920683483, key: EventKey( [ 36, 180, 170, 33, 78, 215, 130, 43, 123, 39, 205, 229, 148, 11, 113, 191, 114, 130, 33, 24, 38, 130, 187, 140, ], ), }, sent_events: EventHandle { count: 5103181084227804643, key: EventKey( [ 239, 96, 11, 105, 19, 183, 233, 2, 84, 36, 160, 6, 136, 198, 175, 141, 40, 6, 31, 67, 248, 172, 178, 178, ], ), }, sequence_number: 2542431313558075604, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0cf487256a87226d381dc87b2545dfabbdfacada7b1370d9541a2a3d826f3fbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215fe0a299e2c5fdb027726e86b73ef64a69346dd7334011a198f990d1a978fb5131985e4a4bec900565476cbf10ca1351841bca7359440646ec41024e7cbec4d14e6a1655fccb8fedab0cff84d6b69670218b1a762971b3202d2a5dd6a5617e210083f9f92553ac21baec2d32446dcc8f0482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085af5eb5f904b709a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 10, 41, 158, 44, 95, 219, 2, 119, 38, 232, 107, 115, 239, 100, 166, 147, 70, 221, 115, 52, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1a198f990d1a978fb5131985e4a4bec9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3864384187900777558, key: EventKey( [ 65, 188, 167, 53, 148, 64, 100, 110, 196, 16, 36, 231, 203, 236, 77, 20, 230, 161, 101, 95, 204, 184, 254, 218, ], ), }, sent_events: EventHandle { count: 173223020267622320, key: EventKey( [ 177, 167, 98, 151, 27, 50, 2, 210, 165, 221, 106, 86, 23, 226, 16, 8, 63, 159, 146, 85, 58, 194, 27, 174, ], ), }, sequence_number: 5255921613536547778, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d31832600d5a12a605b3cedf7abd5a7d64904d7ab6995c7f461cbe4baa79848): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa015d90fa898a85675e7d2c21741dcfdc143726b91725abbd546cafe9c90590ba4a40fc9fabecea043cef9d6ed4ce5227d0eebb8e448d503b796cfc640842c85d47088bed6b145bab7551207a279af4b12d41fc4622d12b92af770b2655e36100008bd1ca3474a1b84a1880ee5338f02b76f37c506cd07d1cbf879e0056aadab5f6d62c9b17ad8f4f861a18edbf70a6352383a47b9806d1d7b589776bcce28ab79c6598f9a48312c18302cc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085261c9f3f7cb550d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 250, 137, 138, 133, 103, 94, 125, 44, 33, 116, 29, 207, 220, 20, 55, 38, 185, 23, 37, 171, 189, 84, 108, 175, 233, 201, 5, 144, 186, 74, 64, 252, 159, 171, 236, 234, 4, 60, 239, 157, 110, 212, 206, 82, 39, 208, 238, 187, 142, 68, 141, 80, 59, 121, 108, 252, 100, 8, 66, 200, 93, 71, 8, 139, 237, 107, 20, 91, 171, 117, 81, 32, 122, 39, 154, 244, 177, 45, 65, 252, 70, 34, 209, 43, 146, 175, 119, 11, 38, 85, 227, 97, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5384230874995413387, key: EventKey( [ 128, 238, 83, 56, 240, 43, 118, 243, 124, 80, 108, 208, 125, 28, 191, 135, 158, 0, 86, 170, 218, 181, 246, 214, ], ), }, sent_events: EventHandle { count: 1911302570368277292, key: EventKey( [ 237, 191, 112, 166, 53, 35, 131, 164, 123, 152, 6, 209, 215, 181, 137, 119, 107, 204, 226, 138, 183, 156, 101, 152, ], ), }, sequence_number: 14700456998953264377, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d69bed3870023b555805f9cf810cbf2b2fe812c03651ed630ee1666b6f5f36d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015ac53e05fd63d8ec157372f4be42ef5557b027f16a501078c05f36e321b8171a0bbd567c815801c45effc6c37fd6042d86e91472d27c96290274c9114c6bdfe5589cd87bb42c7e9efafa11829edd019f04ad680558d3945819da470173c518d43d355141ad7848fab4294a0400caa89a34637a4f6818f415f76b48d303eb3b9a5e7134e749103a65b3e71143347ec433f6a7c072cd7818dbe8f091e5a18151770d954aab8f31338ed59dc8c51d88137450e444004d19902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e563572f7f6e2ffa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 197, 62, 5, 253, 99, 216, 236, 21, 115, 114, 244, 190, 66, 239, 85, 87, 176, 39, 241, 106, 80, 16, 120, 192, 95, 54, 227, 33, 184, 23, 26, 11, 189, 86, 124, 129, 88, 1, 196, 94, 255, 198, 195, 127, 214, 4, 45, 134, 233, 20, 114, 210, 124, 150, 41, 2, 116, 201, 17, 76, 107, 223, 229, 88, 156, 216, 123, 180, 44, 126, 158, 250, 250, 17, 130, 158, 221, 1, 159, 4, 173, 104, 5, 88, 211, 148, 88, 25, 218, 71, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 73c518d43d355141ad7848fab4294a04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7516360869607549130, key: EventKey( [ 244, 21, 247, 107, 72, 211, 3, 235, 59, 154, 94, 113, 52, 231, 73, 16, 58, 101, 179, 231, 17, 67, 52, 126, ], ), }, sent_events: EventHandle { count: 8704739826554254276, key: EventKey( [ 219, 232, 240, 145, 229, 161, 129, 81, 119, 13, 149, 74, 171, 143, 49, 51, 142, 213, 157, 200, 197, 29, 136, 19, ], ), }, sequence_number: 10383415079430541428, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d71705189147f08ad9f298c5979236d9f80e4621d98b921602893cd74e9e08b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b401477f4b8d9f73cb7899705dbaec824619ee207409a086525c923486872452c6c826ebffabcf0bbf634b548d4d589712b82b6f12b512c80477e9267e5b7ada1013a4adb8ca97cc986701816b5199624604f6c4387b1d9bdfcec10190695073bfe7cba529e5e3d07f256e9b1f6fdacbc10f2f01180887150ab7095d8623ae3372e005e29fecbcb2b131a25e7f6632c13632670b2e187009b8faf65893e0d7fc4eb5b0c8c82b8ecb95ea3df06afa7a2bb5da5639225f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890c6e65fa38d7e93 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 75, 141, 159, 115, 203, 120, 153, 112, 93, 186, 236, 130, 70, 25, 238, 32, 116, 9, 160, 134, 82, 92, 146, 52, 134, 135, 36, 82, 198, 200, 38, 235, 255, 171, 207, 11, 191, 99, 75, 84, 141, 77, 88, 151, 18, 184, 43, 111, 18, 181, 18, 200, 4, 119, 233, 38, 126, 91, 122, 218, 16, 19, 164, 173, 184, 202, 151, 204, 152, 103, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 816b5199624604f6c4387b1d9bdfcec1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 90695073bfe7cba529e5e3d07f256e9b, }, ), received_events: EventHandle { count: 85304242966523679, key: EventKey( [ 8, 135, 21, 10, 183, 9, 93, 134, 35, 174, 51, 114, 224, 5, 226, 159, 236, 188, 178, 177, 49, 162, 94, 127, ], ), }, sent_events: EventHandle { count: 3317859015853159014, key: EventKey( [ 112, 9, 184, 250, 246, 88, 147, 224, 215, 252, 78, 181, 176, 200, 200, 43, 142, 203, 149, 234, 61, 240, 106, 250, ], ), }, sequence_number: 6855104628010593146, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0db663be31e561bdfd5121ef8b081fdc8887d3fcfa08b149a27c8cd0bbd6c602): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306bac75a49a50401659c5d969929fc58d6a6388b6518fe440039d81713f075ab1e18d7ff223f66d08f6bc3beef3c1082fbff30909e8479c68e6c952c22a4ea2d5b1418f00b1e7e151e3a2f400897c05877d39371b73472d0015456d2917a712903b0992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708060f981ecb3c18ae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 199, 90, 73, 165, 4, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 659c5d969929fc58d6a6388b6518fe44, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2209989716128290873, key: EventKey( [ 215, 255, 34, 63, 102, 208, 143, 107, 195, 190, 239, 60, 16, 130, 251, 255, 48, 144, 158, 132, 121, 198, 142, 108, ], ), }, sent_events: EventHandle { count: 1466816589438528661, key: EventKey( [ 240, 11, 30, 126, 21, 30, 58, 47, 64, 8, 151, 192, 88, 119, 211, 147, 113, 183, 52, 114, 208, 1, 84, 86, ], ), }, sequence_number: 11074354960236450258, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0ddeb6a337e3c22571efb6ffed885201687840914e40d696f996f5634faf1935): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015997df7f9118ca13e2df7d28d5df1a4c62e46feeb27150399799b0762b58063bc1dda813ad2e4b600b70d6578db1bcfc4b9d8302c74e639cc31419dcbb5ab022cef5cf2ce9fbae9cb4aea21f8392e18cf41244cf625ac69a6f0f0141ffc5aaa25419f0635116f8eb67352d00201346d9e66b3f071889ed37b2556cb4b3f18add8476b3da76fad9858150c78cbacaac7b197f5f806a188921a938d6dcc4405dd71c589aaae7c1775e593327323a2d8c8ca25785dda7382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70856f2083071df5e68 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 223, 127, 145, 24, 202, 19, 226, 223, 125, 40, 213, 223, 26, 76, 98, 228, 111, 238, 178, 113, 80, 57, 151, 153, 176, 118, 43, 88, 6, 59, 193, 221, 168, 19, 173, 46, 75, 96, 11, 112, 214, 87, 141, 177, 188, 252, 75, 157, 131, 2, 199, 78, 99, 156, 195, 20, 25, 220, 187, 90, 176, 34, 206, 245, 207, 44, 233, 251, 174, 156, 180, 174, 162, 31, 131, 146, 225, 140, 244, 18, 68, 207, 98, 90, 198, 154, 111, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 41ffc5aaa25419f0635116f8eb67352d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 522254721030165280, key: EventKey( [ 137, 237, 55, 178, 85, 108, 180, 179, 241, 138, 221, 132, 118, 179, 218, 118, 250, 217, 133, 129, 80, 199, 140, 186, ], ), }, sent_events: EventHandle { count: 7674238764532346058, key: EventKey( [ 137, 33, 169, 56, 214, 220, 196, 64, 93, 215, 28, 88, 154, 170, 231, 193, 119, 94, 89, 51, 39, 50, 58, 45, ], ), }, sequence_number: 4082475152005303436, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0dfb908864f62d41c2b21a9a2ec19d908b90dae4888bed4c9d8736b238e1cbcc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501582ebfca078f2c2c16f39c96b0b5a5d2faf4df036951d303675c9de03b3640ee124153f09445b1efaf88ebdd49484c911077ca28344c6fc00e8fdb5d5e3993275ee2857b8e67cf97518ab3d7f7349ccf37bbaec1a46f923c4a0001960bb1ecdcb3bfd9c6a5856b3b27190f9fa4679fc81b7d19183d1cd30e2217e70f36c81f9681ae7031cbbebbe7c5d56e80c2cb0ae66d6c7c5618dfb8181ad40297b9a7e6271f768b3ca8de1c564a46c1944259a0ef5eb7f2af452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec04e6c12d104af9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 191, 202, 7, 143, 44, 44, 22, 243, 156, 150, 176, 181, 165, 210, 250, 244, 223, 3, 105, 81, 211, 3, 103, 92, 157, 224, 59, 54, 64, 238, 18, 65, 83, 240, 148, 69, 177, 239, 175, 136, 235, 221, 73, 72, 76, 145, 16, 119, 202, 40, 52, 76, 111, 192, 14, 143, 219, 93, 94, 57, 147, 39, 94, 226, 133, 123, 142, 103, 207, 151, 81, 138, 179, 215, 247, 52, 156, 207, 55, 187, 174, 193, 164, 111, 146, 60, 74, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 960bb1ecdcb3bfd9c6a5856b3b27190f, }, ), received_events: EventHandle { count: 1836654771518809247, key: EventKey( [ 61, 28, 211, 14, 34, 23, 231, 15, 54, 200, 31, 150, 129, 174, 112, 49, 203, 190, 187, 231, 197, 213, 110, 128, ], ), }, sent_events: EventHandle { count: 6231975203640626114, key: EventKey( [ 223, 184, 24, 26, 212, 2, 151, 185, 167, 230, 39, 31, 118, 139, 60, 168, 222, 28, 86, 74, 70, 193, 148, 66, ], ), }, sequence_number: 5021498978927091801, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0f3db236de5962acdb51cc6599750f144de0485d9f137ede8e3e93147c69dfa7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014ec3d18845237ab7a9ed8b1a7073a40082f3d6fb05bcb32fbe567786dfef2189e1b4c678b681ff6424e3705b922c555baab6ee566abff6b19e13885647eb92936384e3c746b850e3082a3db43ee891014ae25e95f0d8686a53f779911223b2cc018289a8500819b1b9473ec3e0e44155d922470f371a606c5c1859ef20a3b85caa4b73985dc76a38424ae2b714ec0cbf54fcb4990afd4057083518152da7f4b0e59f8f13c6017013e45c427d1496ef6e22970705cd0ab2ddd663d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080eb0a3f42c46e1f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 195, 209, 136, 69, 35, 122, 183, 169, 237, 139, 26, 112, 115, 164, 0, 130, 243, 214, 251, 5, 188, 179, 47, 190, 86, 119, 134, 223, 239, 33, 137, 225, 180, 198, 120, 182, 129, 255, 100, 36, 227, 112, 91, 146, 44, 85, 91, 170, 182, 238, 86, 106, 191, 246, 177, 158, 19, 136, 86, 71, 235, 146, 147, 99, 132, 227, 199, 70, 184, 80, 227, 8, 42, 61, 180, 62, 232, 145, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4ae25e95f0d8686a53f779911223b2cc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8289a8500819b1b9473ec3e0e44155d9, }, ), received_events: EventHandle { count: 6659803614683285282, key: EventKey( [ 89, 239, 32, 163, 184, 92, 170, 75, 115, 152, 93, 199, 106, 56, 66, 74, 226, 183, 20, 236, 12, 191, 84, 252, ], ), }, sent_events: EventHandle { count: 3821400220458719668, key: EventKey( [ 21, 45, 167, 244, 176, 229, 159, 143, 19, 198, 1, 112, 19, 228, 92, 66, 125, 20, 150, 239, 110, 34, 151, 7, ], ), }, sequence_number: 15664600176587885829, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0f88b3dab137fbf89ae5a9c471b1466c54ea4ec96a1485bcd88680bc9a11cbeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f02aad300007158311d60842d561834e4458f7765536f80ef4f2f17a88c1b56f50def53a469058e0d59e094150b0c187536ddff5edce171cef9576ea318990b871848a3b1fc35304ad4d4da67a6deae2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086466ef5fc7d8bc8a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 211, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6209765009555282033, key: EventKey( [ 52, 228, 69, 143, 119, 101, 83, 111, 128, 239, 79, 47, 23, 168, 140, 27, 86, 245, 13, 239, 83, 164, 105, 5, ], ), }, sent_events: EventHandle { count: 867811082362228110, key: EventKey( [ 117, 54, 221, 255, 94, 220, 225, 113, 206, 249, 87, 110, 163, 24, 153, 11, 135, 24, 72, 163, 177, 252, 53, 48, ], ), }, sequence_number: 12600691772412449866, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0fa7e021b2086854db48f4ca59dc39b780c3b4e29b1deeda1e072f92343a468f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01611e906634e5ba281198e4100119dab40d73e5b6c49abd27126bf8b9be5a93a19c23b89c4821eae2c86f181d1358aaf7d84b76cdaa9859db534af920713c03636d735df3a7de0ef0674e67bc6b1fe7e92d17d5fd92d53bdb988bab04b981f0dc17c3010d9e49a38182e680cf3f230e6fa6efdd01e37e90ac2bb611593a5a78c86f4ca00687b77b11f38fc445186146b7c0a5efd09fb5e29bac5339291f17319b18f2cef4a6adbfb48f42b4f13f186e3a54b40db46de4b4a286abe652d3f58ae694845ee7e96f8bdb63bf5746f8322101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d86e169a8b51e4c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 144, 102, 52, 229, 186, 40, 17, 152, 228, 16, 1, 25, 218, 180, 13, 115, 229, 182, 196, 154, 189, 39, 18, 107, 248, 185, 190, 90, 147, 161, 156, 35, 184, 156, 72, 33, 234, 226, 200, 111, 24, 29, 19, 88, 170, 247, 216, 75, 118, 205, 170, 152, 89, 219, 83, 74, 249, 32, 113, 60, 3, 99, 109, 115, 93, 243, 167, 222, 14, 240, 103, 78, 103, 188, 107, 31, 231, 233, 45, 23, 213, 253, 146, 213, 59, 219, 152, 139, 171, 4, 185, 129, 240, 220, 23, 195, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0d9e49a38182e680cf3f230e6fa6efdd, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e37e90ac2bb611593a5a78c86f4ca006, }, ), received_events: EventHandle { count: 5027301358185461639, key: EventKey( [ 97, 70, 183, 192, 165, 239, 208, 159, 181, 226, 155, 172, 83, 57, 41, 31, 23, 49, 155, 24, 242, 206, 244, 166, ], ), }, sent_events: EventHandle { count: 4607662091748556717, key: EventKey( [ 110, 58, 84, 180, 13, 180, 109, 228, 180, 162, 134, 171, 230, 82, 211, 245, 138, 230, 148, 132, 94, 231, 233, 111, ], ), }, sequence_number: 3672762838807731083, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(103a29b832883a6564edc1dfbd8af4535486ca929a83e8102ad97838dae92fab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa013d263951c1c27db98e17d1a1fce6d5717030a28cb09275b9fd1ba85d2831b9e22e8ef752b03c86e95f7e0ff456265c77bc069184135eeee4552acede8c7901ca0fe111ef2bd8ad9a62fbeb3e35a58601a50692ab9e7c92afe16f2a61f90853d80112ebba11b2f42018f992aca77d44ed06dfbf74b3fa2de2af236918b2442894836a1167ae3f004426181273bd56be7a9b7a441e63f3a2a03dbc50459c374892d68dd25d998ef4fc02c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081be12878a25a34b5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 57, 81, 193, 194, 125, 185, 142, 23, 209, 161, 252, 230, 213, 113, 112, 48, 162, 140, 176, 146, 117, 185, 253, 27, 168, 93, 40, 49, 185, 226, 46, 142, 247, 82, 176, 60, 134, 233, 95, 126, 15, 244, 86, 38, 92, 119, 188, 6, 145, 132, 19, 94, 238, 228, 85, 42, 206, 222, 140, 121, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ca0fe111ef2bd8ad9a62fbeb3e35a586, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a50692ab9e7c92afe16f2a61f90853d8, }, ), received_events: EventHandle { count: 2374718692751249921, key: EventKey( [ 249, 146, 172, 167, 125, 68, 237, 6, 223, 191, 116, 179, 250, 45, 226, 175, 35, 105, 24, 178, 68, 40, 148, 131, ], ), }, sent_events: EventHandle { count: 2757329145366516074, key: EventKey( [ 18, 115, 189, 86, 190, 122, 155, 122, 68, 30, 99, 243, 162, 160, 61, 188, 80, 69, 156, 55, 72, 146, 214, 141, ], ), }, sequence_number: 14052071914644004306, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(11092c4aa9f5567b15eb9f5fb2cf594027b1a3514dfc41a2a6471df1cb130f6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40157ce68ed87027dbfa0148f5dd8aa8cb9ae745131955a5a89e2cccfc0a03186619547fed4df1d733dfaedb39f45291cde1eaaedb1277841353142cdbad4d1ec058319fd4f0b14bc53469d6779be7c39f0291ae8082bf3d19c000088cddbe50e292e531835d81fccfbacb2cd578f3305a23bf6edae4994f4428bbaadceafdf700713ca26181dcaa558a73b367281fbf26ecf25c61c5946cf9e0e287f853a032a80f01b02052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081df42d16c36d271d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 104, 237, 135, 2, 125, 191, 160, 20, 143, 93, 216, 170, 140, 185, 174, 116, 81, 49, 149, 90, 90, 137, 226, 204, 207, 192, 160, 49, 134, 97, 149, 71, 254, 212, 223, 29, 115, 61, 250, 237, 179, 159, 69, 41, 28, 222, 30, 170, 237, 177, 39, 120, 65, 53, 49, 66, 205, 186, 212, 209, 236, 5, 131, 25, 253, 79, 11, 20, 188, 83, 70, 157, 103, 121, 190, 124, 57, 240, 41, 26, 232, 8, 43, 243, 209, 156, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5993773298039377288, key: EventKey( [ 53, 216, 31, 204, 251, 172, 178, 205, 87, 143, 51, 5, 162, 59, 246, 237, 174, 73, 148, 244, 66, 139, 186, 173, ], ), }, sent_events: EventHandle { count: 2795067441416220622, key: EventKey( [ 29, 202, 165, 88, 167, 59, 54, 114, 129, 251, 242, 110, 207, 37, 198, 28, 89, 70, 207, 158, 14, 40, 127, 133, ], ), }, sequence_number: 360881639899398970, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(115d6cf89fbafc09043f727db6954eeaf67bf015056ce4f742654ee0e690b210): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20135e00e57b01967df489c1fa61bb99b9acca02062cdee7a43905434161328aed6de43d28b84bb60a264df6630b27d6b77dfe35b83a10b018503800c2fef324dbcd430e0ec9195bb0123edf7cfe04628f6b9966c4a3013e786c01d6094093e104518d112f9e1e5f4ce5e8c10b812770daad6d7d8d427842330dadd63cf2a1a932628185b86f2f39567dd05325d6522e28e557f3759bcf116bc3dc26ba2380dce6f23062101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b8a8e9352de7211 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 14, 87, 176, 25, 103, 223, 72, 156, 31, 166, 27, 185, 155, 154, 204, 160, 32, 98, 205, 238, 122, 67, 144, 84, 52, 22, 19, 40, 174, 214, 222, 67, 210, 139, 132, 187, 96, 162, 100, 223, 102, 48, 178, 125, 107, 119, 223, 227, 91, 131, 161, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8503800c2fef324dbcd430e0ec9195bb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 23edf7cfe04628f6b9966c4a3013e786, }, ), received_events: EventHandle { count: 4976545799109352896, key: EventKey( [ 209, 18, 249, 225, 229, 244, 206, 94, 140, 16, 184, 18, 119, 13, 170, 214, 215, 216, 212, 39, 132, 35, 48, 218, ], ), }, sent_events: EventHandle { count: 2893161551228789725, key: EventKey( [ 91, 134, 242, 243, 149, 103, 221, 5, 50, 93, 101, 34, 226, 142, 85, 127, 55, 89, 188, 241, 22, 188, 61, 194, ], ), }, sequence_number: 442320119188202091, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(11a8c4ed9c89e4e253094741919596b416ff7634c51387220f044ee999ec2de6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98401271d1510d2793199f51e60253684babddfd33b96df5ac392f7668d00251506dd9ce8f00432282df10001a819b74d5c0da1eeec77932e483acb0428e9120268522f0a18bb724d22137e0cce2aedd5dee387eb395cdd1b5ad3cd05d03d221a8cef7efa0918cbfe90c352c53b22570d9cbff754c8505ae7dbac5da242d4dcb25f34fe13a0452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ecbdee1ca77f1b75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 21, 16, 210, 121, 49, 153, 245, 30, 96, 37, 54, 132, 186, 189, 223, 211, 59, 150, 223, 90, 195, 146, 247, 102, 141, 0, 37, 21, 6, 221, 156, 232, 240, 4, 50, 40, 45, 241, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a819b74d5c0da1eeec77932e483acb04, }, ), received_events: EventHandle { count: 733895870949550376, key: EventKey( [ 187, 114, 77, 34, 19, 126, 12, 206, 42, 237, 213, 222, 227, 135, 235, 57, 92, 221, 27, 90, 211, 205, 5, 208, ], ), }, sent_events: EventHandle { count: 719026657831821885, key: EventKey( [ 203, 254, 144, 195, 82, 197, 59, 34, 87, 13, 156, 191, 247, 84, 200, 80, 90, 231, 219, 172, 93, 162, 66, 212, ], ), }, sequence_number: 5017031967412040412, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1203cf6802a197f1eb283a31bbb26605dc87fdaa9c87130893d99a062208e4b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a6014939fa7730060187e0b9206e2d39d76a0f0ed8e0b8f221cf01b08c842d47aa93f6081079507a5dc8c5c19b178918c050505ffbf80ec08f8a49f5cb0ae85e2d2d56e3c00e75bb110d3a8601f9933c0d377923fb46abe9ce9e378d3f00be521ca55838890018e2bccf1c6803c0278301675092bf5d3807508cee7687cb16a22635fcf6e1fd61183bde2eec4d3696cd09a5284ea69b15ba39b8b554a9d3099a5c7ff999f82923492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080cd8bb4345773a8c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 250, 119, 48, 6, 1, 135, 224, 185, 32, 110, 45, 57, 215, 106, 15, 14, 216, 224, 184, 242, 33, 207, 1, 176, 140, 132, 45, 71, 170, 147, 246, 8, 16, 121, 80, 122, 93, 200, 197, 193, 155, 23, 137, 24, 192, 80, 80, 95, 251, 248, 14, 192, 143, 138, 73, 245, 203, 10, 232, 94, 45, 45, 86, 227, 192, 14, 117, 187, 17, 13, 58, 134, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f9933c0d377923fb46abe9ce9e378d3f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 38624025187734206, key: EventKey( [ 226, 188, 207, 28, 104, 3, 192, 39, 131, 1, 103, 80, 146, 191, 93, 56, 7, 80, 140, 238, 118, 135, 203, 22, ], ), }, sent_events: EventHandle { count: 7061048241696351906, key: EventKey( [ 59, 222, 46, 236, 77, 54, 150, 205, 9, 165, 40, 78, 166, 155, 21, 186, 57, 184, 181, 84, 169, 211, 9, 154, ], ), }, sequence_number: 5270102136665505628, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(12a203d32f402de74326beb76b13664f4dc70db36194fa72007652f78bc8a69d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01c40001fbf25bc1883fa94ac93ecd68a35c58a2f4a4481d950c5c001887dd8c00ced066a6ca62d915e89bcc2dc48168e7c968edfee06c095884556c7218d62bab0f5ebfcebbb211af4b53bda1d1fd578a7dcf44ffeb1764e82e182365622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708784de7f988ec448a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fbf25bc1883fa94ac93ecd68a35c58a2, }, ), received_events: EventHandle { count: 25909532438340852, key: EventKey( [ 135, 221, 140, 0, 206, 208, 102, 166, 202, 98, 217, 21, 232, 155, 204, 45, 196, 129, 104, 231, 201, 104, 237, 254, ], ), }, sent_events: EventHandle { count: 8245059044709592288, key: EventKey( [ 214, 43, 171, 15, 94, 191, 206, 187, 178, 17, 175, 75, 83, 189, 161, 209, 253, 87, 138, 125, 207, 68, 255, 235, ], ), }, sequence_number: 7090111775137883159, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(12a2614d897271e3b72bb9c0a479c42114fca6a66fdbcda980de4b2256c5c0d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e00a67ad5d71f42db05a426128a42384220bd98b1e04801437c11e54af6665814dd6dd7cf2a6a2b3aa56eee849f9219e048d552baacb367be80e05901ec960001b387bec0b56c81bbe508879e87bf60f8636a8ce460edf027181198c530556a3743e98892074ee575a4f694c16f6ff4cf4190d8a94a3f00a152184daec8648b091d829a5233724f3b1fc7cc2df6d2bd5c8942925ffd483b4538222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1e474424232755a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 0, 166, 122, 213, 215, 31, 66, 219, 5, 164, 38, 18, 138, 66, 56, 66, 32, 189, 152, 177, 224, 72, 1, 67, 124, 17, 229, 74, 246, 102, 88, 20, 221, 109, 215, 207, 42, 106, 43, 58, 165, 110, 238, 132, 159, 146, 25, 224, 72, 213, 82, 186, 172, 179, 103, 190, 128, 224, 89, 1, 236, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b387bec0b56c81bbe508879e87bf60f8, }, ), received_events: EventHandle { count: 2878061162296797795, key: EventKey( [ 17, 152, 197, 48, 85, 106, 55, 67, 233, 136, 146, 7, 78, 229, 117, 164, 246, 148, 193, 111, 111, 244, 207, 65, ], ), }, sent_events: EventHandle { count: 5954040454196091024, key: EventKey( [ 77, 174, 200, 100, 139, 9, 29, 130, 154, 82, 51, 114, 79, 59, 31, 199, 204, 45, 246, 210, 189, 92, 137, 66, ], ), }, sequence_number: 2465796916915298194, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(131dacdb1a55a17d0f58c590fa54ae99aa74babc6dff9a27731ce52c8ed37374): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e4fee2c8ededb1c95395d192b5c454cd22667c7132c610d15a020ba2fab7901d228e519754d6631da3f2f9c6abaa84ac899a32ad957183cff778c787a0db64f111478052c721b355a6f6241d2d80d01bd37fb6e07e20fd456799312ba80457600a00e191f8b57a4551860e72d1b1f970fc61516f8c3adc22fd57a2c368d12f60618a8cf6d1186c3592118a780764535d20c55b51596e440866119746752022379b36ca1b0267c4bcb1afc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e815f09d85e92987 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 238, 44, 142, 222, 219, 28, 149, 57, 93, 25, 43, 92, 69, 76, 210, 38, 103, 199, 19, 44, 97, 13, 21, 160, 32, 186, 47, 171, 121, 1, 210, 40, 229, 25, 117, 77, 102, 49, 218, 63, 47, 156, 106, 186, 168, 74, 200, 153, 163, 42, 217, 87, 24, 60, 255, 119, 140, 120, 122, 13, 182, 79, 17, 20, 120, 5, 44, 114, 27, 53, 90, 111, 98, 65, 210, 216, 13, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bd37fb6e07e20fd456799312ba804576, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6171153644438228640, key: EventKey( [ 96, 231, 45, 27, 31, 151, 15, 198, 21, 22, 248, 195, 173, 194, 47, 213, 122, 44, 54, 141, 18, 246, 6, 24, ], ), }, sent_events: EventHandle { count: 2403166856764313512, key: EventKey( [ 167, 128, 118, 69, 53, 210, 12, 85, 181, 21, 150, 228, 64, 134, 97, 25, 116, 103, 82, 2, 35, 121, 179, 108, ], ), }, sequence_number: 18166055572018213025, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(13892fc8acf0d4ba11a315c9ec5036e975382ed48d6c3a708482c98be319c2ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013afc58ab4286f3e527f4123b9fe55a4a7458bf35346cf3b2b2dfd3314bda9883e210ffbeb9f2609b76c1fc6285b5a2b1c89445c62f702869fb68ec000171f322899592ece804440c7db960995bf7efd41645a1cb4e185478e41f31620725bd00af83e102b4870fa1db8964c4129456766de5d3c6fe2318a36bb55f7013e6e4e6c1313d9b1dec93d7b07ac1da487b28ad003222e56bfed12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085192ec8e1245e1b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 88, 171, 66, 134, 243, 229, 39, 244, 18, 59, 159, 229, 90, 74, 116, 88, 191, 53, 52, 108, 243, 178, 178, 223, 211, 49, 75, 218, 152, 131, 226, 16, 255, 190, 185, 242, 96, 155, 118, 193, 252, 98, 133, 181, 162, 177, 200, 148, 69, 198, 47, 112, 40, 105, 251, 104, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71f322899592ece804440c7db960995b, }, ), received_events: EventHandle { count: 5677809073338511351, key: EventKey( [ 84, 120, 228, 31, 49, 98, 7, 37, 189, 0, 175, 131, 225, 2, 180, 135, 15, 161, 219, 137, 100, 196, 18, 148, ], ), }, sent_events: EventHandle { count: 2593729048801539670, key: EventKey( [ 163, 107, 181, 95, 112, 19, 230, 228, 230, 193, 49, 61, 155, 29, 236, 147, 215, 176, 122, 193, 218, 72, 123, 40, ], ), }, sequence_number: 15131650429876830381, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(13e6cae1337c9f646300124e2f3da0b2372e6703dbcde25e43addc795d58a06a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e1199b3b485079014e3a2bb36c84e6da7067d000001db3f0b7158dc5818f3e1992c7aeaecc0d91a633fbc274ba1729b123d13924b0e2a00d86c2e5c6e791862956a38f841512f76be0a987ecdddec796ccf34bb9ce9454cd650247b9285f02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f14e0f6f4049bd8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 179, 180, 133, 7, 144, 20, 227, 162, 187, 54, 200, 78, 109, 167, 6, 125, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6403090012757285633, key: EventKey( [ 243, 225, 153, 44, 122, 234, 236, 192, 217, 26, 99, 63, 188, 39, 75, 161, 114, 155, 18, 61, 19, 146, 75, 14, ], ), }, sent_events: EventHandle { count: 8750032480491798570, key: EventKey( [ 98, 149, 106, 56, 248, 65, 81, 47, 118, 190, 10, 152, 126, 205, 221, 236, 121, 108, 207, 52, 187, 156, 233, 69, ], ), }, sequence_number: 17331419798593132108, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(14847064c0c116410edac7b01937cdc737122e98320c5b9772f252efbdd69c15): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e381216688c12da9bab9279432b32eacfd58e8ef3552fca8fffad3345a151b133e414f34e824e1d416c20d83d6678aad56be4709e3ca8977e41b62479817201c9bc554f6df911a9ff23f7557cff382c0098fa36f5ff037e6818ce2e89a8f6bc1cd390fde15b8c1792413e5c643a438b963bd6c3f035c50780761835bbd9e603facd48265cf2d068446185a919f4d41971851409904c1cc92c6dd82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70837652111fb8f4a08 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 18, 22, 104, 140, 18, 218, 155, 171, 146, 121, 67, 43, 50, 234, 207, 213, 142, 142, 243, 85, 47, 202, 143, 255, 173, 51, 69, 161, 81, 177, 51, 228, 20, 243, 78, 130, 78, 29, 65, 108, 32, 216, 61, 102, 120, 170, 213, 107, 228, 112, 158, 60, 168, 151, 126, 65, 182, 36, 121, 129, 114, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c9bc554f6df911a9ff23f7557cff382c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7529460024875612824, key: EventKey( [ 206, 46, 137, 168, 246, 188, 28, 211, 144, 253, 225, 91, 140, 23, 146, 65, 62, 92, 100, 58, 67, 139, 150, 59, ], ), }, sent_events: EventHandle { count: 8538833437089383382, key: EventKey( [ 53, 187, 217, 230, 3, 250, 205, 72, 38, 92, 242, 208, 104, 68, 97, 133, 169, 25, 244, 212, 25, 113, 133, 20, ], ), }, sequence_number: 15595170326928723977, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(14b0cebd0234682505cead34d3029adca1cbfca1e0719d04fd0ee74f0ac90d1a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113a077198bf093e8f13d455d5b665cbe469ea8e4016b90c24a96b1a5938a308a79addc3533013f4bbad90d046b731cda24874b76207d188b9119aa41910a18bac57ac04313f89e809e0f06b162f547254b4d37fa60eb7e00988bbeb4979178187adb8edf2a60d6b41214721cb69c25c63beac22774a375fe52154b37229244d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859e8d91f75fea453 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 119, 25, 139, 240, 147, 232, 241, 61, 69, 93, 91, 102, 92, 190, 70, 158, 168, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6b90c24a96b1a5938a308a79addc3533, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3f4bbad90d046b731cda24874b76207d, }, ), received_events: EventHandle { count: 761462010831538968, key: EventKey( [ 186, 197, 122, 192, 67, 19, 248, 158, 128, 158, 15, 6, 177, 98, 245, 71, 37, 75, 77, 55, 250, 96, 235, 126, ], ), }, sent_events: EventHandle { count: 8687891958721124352, key: EventKey( [ 122, 219, 142, 223, 42, 96, 214, 180, 18, 20, 114, 28, 182, 156, 37, 198, 59, 234, 194, 39, 116, 163, 117, 254, ], ), }, sequence_number: 15295510910111257938, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(150df5ada617aa767fe746ee241eba15d59a3858649a1e09f296a6903cbaf344): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973162e4385f5449b8fd8d9de4fe2ea026ae788f21ab3db1a0001c55314c5d6374bc23b8246b2ec10847886fc8cff49788b6018d32d0c590701a9db13b3fdd96827f64488cdbf724158654080ba2907d5e7931518d152d9bb6ee048c58e921148aca641a37e8ce78e1614d92e0d6450d2f04ce6902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdad2701ae696207 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 67, 133, 245, 68, 155, 143, 216, 217, 222, 79, 226, 234, 2, 106, 231, 136, 242, 26, 179, 219, 26, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c55314c5d6374bc23b8246b2ec108478, }, ), received_events: EventHandle { count: 6956786308619238534, key: EventKey( [ 211, 45, 12, 89, 7, 1, 169, 219, 19, 179, 253, 217, 104, 39, 246, 68, 136, 205, 191, 114, 65, 88, 101, 64, ], ), }, sent_events: EventHandle { count: 1554841198507178624, key: EventKey( [ 209, 82, 217, 187, 110, 224, 72, 197, 142, 146, 17, 72, 172, 166, 65, 163, 126, 140, 231, 142, 22, 20, 217, 46, ], ), }, sequence_number: 10441117383309419533, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(153d834b7e8847ce12ff6e9b883210fbcc29de0490c8e9958d8e0752b344ca1e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9590cf586f14cd243546fe36d621b0000f9313bddc664900e18fcc6309e4a3f2b3f953f28ee6bb8bde3b8abeeb17b0e89ec22b35e1d12d60c0118a3eaa2ffa87d7e5edfe01e97b3b074d23e01ec4d6c0e725bf8d58b33a0cc74f82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708715e9822cbae8dca Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 134, 241, 76, 210, 67, 84, 111, 227, 109, 98, 27, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1049449518455271929, key: EventKey( [ 252, 198, 48, 158, 74, 63, 43, 63, 149, 63, 40, 238, 107, 184, 189, 227, 184, 171, 238, 177, 123, 14, 137, 236, ], ), }, sent_events: EventHandle { count: 75670667048956706, key: EventKey( [ 163, 234, 162, 255, 168, 125, 126, 94, 223, 224, 30, 151, 179, 176, 116, 210, 62, 1, 236, 77, 108, 14, 114, 91, ], ), }, sequence_number: 17903159407136200184, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1597a2784df7aa99badadec9d2e8dc657469736683aeb1d19eee58505bf1aa70): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bf334477b3a3e6d9cebefd2519c6274d88c90e22df056c60a97ca045ca5861f855c9570d9d1eaa125c28eec333a7788c4899fe7633b13911ec773495b3ebc5377e5e8f5a89f648d36f332c006cefe901937dbc44f7a1639dd6b9c96018c88467e1a78cbba89ebc018d37ce8ae009fe01e8f31eebf7d18f2dc0f07d4cc30d72c49e46aa2be2a853e1a71d107d913e50d72cefb451f2011188be95044b2b17ed7cdfcf96af020f7a17d655c0f245a52b3d2ec758696f2df222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708193726659b81d6d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 52, 71, 123, 58, 62, 109, 156, 235, 239, 210, 81, 156, 98, 116, 216, 140, 144, 226, 45, 240, 86, 198, 10, 151, 202, 4, 92, 165, 134, 31, 133, 92, 149, 112, 217, 209, 234, 161, 37, 194, 142, 236, 51, 58, 119, 136, 196, 137, 159, 231, 99, 59, 19, 145, 30, 199, 115, 73, 91, 62, 188, 83, 119, 229, 232, 245, 168, 159, 100, 141, 54, 243, 50, 192, 6, 206, 254, 144, 25, 55, 219, 196, 79, 122, 22, 57, 221, 107, 156, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c88467e1a78cbba89ebc018d37ce8ae, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9061222871914700959, key: EventKey( [ 242, 220, 15, 7, 212, 204, 48, 215, 44, 73, 228, 106, 162, 190, 42, 133, 62, 26, 113, 209, 7, 217, 19, 229, ], ), }, sent_events: EventHandle { count: 1234020683337331213, key: EventKey( [ 139, 233, 80, 68, 178, 177, 126, 215, 205, 252, 249, 106, 240, 32, 247, 161, 125, 101, 92, 15, 36, 90, 82, 179, ], ), }, sequence_number: 2512993845410917586, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(159ba69c06ced5b3496c598f366851b0d3ef89e9c82b60c140e71daed2129caa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014c245d99c2dbffd179d1e5f78ddcfce7e62a7eecda7162fb0213d785d03abd04813ff6225ea6e855be54c1476edc704e64bfbaca64381ec25674cc7ca215560c400766178dcd75d4226f87331901c4abe41f0109661d3c4ec2bfc2fcf53000c6902555d238d91318478b27f8f1c6bcd142acd61d1da033fb16a94fe30a49fc6b15881dee694e7715186c06859401d8e48f65e35ebac75102d46c90a6395be12a48195cc762059f05982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708227d3f3138c94bdf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 93, 153, 194, 219, 255, 209, 121, 209, 229, 247, 141, 220, 252, 231, 230, 42, 126, 236, 218, 113, 98, 251, 2, 19, 215, 133, 208, 58, 189, 4, 129, 63, 246, 34, 94, 166, 232, 85, 190, 84, 193, 71, 110, 220, 112, 78, 100, 191, 186, 202, 100, 56, 30, 194, 86, 116, 204, 124, 162, 21, 86, 12, 64, 7, 102, 23, 141, 205, 117, 212, 34, 111, 135, 51, 25, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4abe41f0109661d3c4ec2bfc2fcf530, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1430236832689656006, key: EventKey( [ 71, 139, 39, 248, 241, 198, 188, 209, 66, 172, 214, 29, 29, 160, 51, 251, 22, 169, 79, 227, 10, 73, 252, 107, ], ), }, sent_events: EventHandle { count: 1546791213898500117, key: EventKey( [ 108, 6, 133, 148, 1, 216, 228, 143, 101, 227, 94, 186, 199, 81, 2, 212, 108, 144, 166, 57, 91, 225, 42, 72, ], ), }, sequence_number: 10954336514129484825, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(15c67a03e1dd1302fbe3a0c49169ac59e0da4b06373c1c01f3ad914e144e1cf6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144142a1de02387ae0f8d73a9621998f299754908c7bee40c576524268b94ea4f7d93f7e43bf61b4dc1866bd4a258e1bb484f1c84f9c45ae04a4f96912222aee31d5c362784000093083c668ef8655218c92b0de5d86f389a5b332dcb95a74017e38e9b16b8e891a3074f656636877d2f182df386a0378d7237c74d5a7a163a199ee14edc04aef2eb47ad41d2d03caf5cb82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0d9beba21764f98 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 42, 29, 224, 35, 135, 174, 15, 141, 115, 169, 98, 25, 152, 242, 153, 117, 73, 8, 199, 190, 228, 12, 87, 101, 36, 38, 139, 148, 234, 79, 125, 147, 247, 228, 59, 246, 27, 77, 193, 134, 107, 212, 162, 88, 225, 187, 72, 79, 28, 132, 249, 196, 90, 224, 74, 79, 150, 145, 34, 34, 174, 227, 29, 92, 54, 39, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5937424974242121875, key: EventKey( [ 201, 43, 13, 229, 216, 111, 56, 154, 91, 51, 45, 203, 149, 167, 64, 23, 227, 142, 155, 22, 184, 232, 145, 163, ], ), }, sent_events: EventHandle { count: 3422039959587344135, key: EventKey( [ 45, 243, 134, 160, 55, 141, 114, 55, 199, 77, 90, 122, 22, 58, 25, 158, 225, 78, 220, 4, 174, 242, 235, 71, ], ), }, sequence_number: 13284685676572459437, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(15d36501515360545d7d9cbb4092361d04851f9f4e28272f6df0b04d625c6415): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a4014760791f963e64a15a43cf8ee3d72129cf1f4fb620aa97bb3733ef94ee382d78d0fde431295540af164b167167c5566c076f33de80b661c3898d12d41dbd7153b24302c5ca7ac64801cba1c91564d67959e9f856769ca92f11006bcfdf4728445a2f1823b52aec66aaffa19f5cac14d1bd5ef8758e0d29973ce26e4be12d88f712f75418daf0420ad484fc5ec8c0047f1fd354ee420a303977a3ac516da91d259827e46c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c9aaf68502115ab9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 121, 31, 150, 62, 100, 161, 90, 67, 207, 142, 227, 215, 33, 41, 207, 31, 79, 182, 32, 170, 151, 187, 55, 51, 239, 148, 238, 56, 45, 120, 208, 253, 228, 49, 41, 85, 64, 175, 22, 75, 22, 113, 103, 197, 86, 108, 7, 111, 51, 222, 128, 182, 97, 195, 137, 141, 18, 212, 29, 189, 113, 83, 178, 67, 2, 197, 202, 122, 198, 72, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cba1c91564d67959e9f856769ca92f11, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3412114607481802603, key: EventKey( [ 35, 181, 42, 236, 102, 170, 255, 161, 159, 92, 172, 20, 209, 189, 94, 248, 117, 142, 13, 41, 151, 60, 226, 110, ], ), }, sent_events: EventHandle { count: 6122383072784408907, key: EventKey( [ 218, 240, 66, 10, 212, 132, 252, 94, 200, 192, 4, 127, 31, 211, 84, 238, 66, 10, 48, 57, 119, 163, 172, 81, ], ), }, sequence_number: 7846439985197459821, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1644d4c6fdd96765f547e4ea1dd791cdf5430bc5bd2bad8eaf9a23b5ba9bbf82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e11ca01796672b88db46b94b23b17c8a4648801294790ac089976e24765938b82b6a600011ae67bbd714a3db74ceaa74252508792bd5b90562c29350a189a09fdf388691fba79de32e1b0e848a2df5d71c7b68bc50905b54d38737814731841ef7bbee08d5a2dc3eda232aa4ccac49578884bd1075006bd175f1a2618111c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889cf1fa169bc021c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 1, 121, 102, 114, 184, 141, 180, 107, 148, 178, 59, 23, 200, 164, 100, 136, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 294790ac089976e24765938b82b6a600, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1ae67bbd714a3db74ceaa74252508792, }, ), received_events: EventHandle { count: 735539384552545213, key: EventKey( [ 154, 9, 253, 243, 136, 105, 31, 186, 121, 222, 50, 225, 176, 232, 72, 162, 223, 93, 113, 199, 182, 139, 197, 9, ], ), }, sent_events: EventHandle { count: 8292385250157114629, key: EventKey( [ 65, 239, 123, 190, 224, 141, 90, 45, 195, 237, 162, 50, 170, 76, 202, 196, 149, 120, 136, 75, 209, 7, 80, 6, ], ), }, sequence_number: 2022424259596326845, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(16d375a81eef8cf8ce43d99034fd2cf860245c4d440996f04a9c43e6d05f005d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96609a93d6c3b7b0c82c3f400015d78e71aee542608716e71da750f45102c3b60946c6340141892ed145a4b2b7eb7c971a238a7262bd8b235be1b562bd842ce8531617aa35c571837b5730a9e5664eb72b61c12c959c9cfa66e982a653f5b9d0cb1ee00594254de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cb7261435fd424da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 61, 108, 59, 123, 12, 130, 195, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5d78e71aee542608716e71da750f4510, }, ), received_events: EventHandle { count: 1459275597264993068, key: EventKey( [ 146, 237, 20, 90, 75, 43, 126, 183, 201, 113, 162, 56, 167, 38, 43, 216, 178, 53, 190, 27, 86, 43, 216, 66, ], ), }, sent_events: EventHandle { count: 6295086125169083854, key: EventKey( [ 55, 181, 115, 10, 158, 86, 100, 235, 114, 182, 28, 18, 201, 89, 201, 207, 166, 110, 152, 42, 101, 63, 91, 157, ], ), }, sequence_number: 16020502724498862348, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(173170f1e7ce659c059cf2cb9f85ce885155be5d2b50bab622d915389371af3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95306cb51195b06600000a0847c48a289d95718c8be48fdb9334b2740bc80fee06bd95d3d522d0da71f279ce4b2c764531155771876b82b99a68b3709493bf81b06a6797b4f32bf71ec5b7651a127ef559d4776202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fa8026a108d4cac0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 81, 25, 91, 6, 96, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6330242081339770016, key: EventKey( [ 200, 190, 72, 253, 185, 51, 75, 39, 64, 188, 128, 254, 224, 107, 217, 93, 61, 82, 45, 13, 167, 31, 39, 156, ], ), }, sent_events: EventHandle { count: 8598798113404596964, key: EventKey( [ 118, 184, 43, 153, 166, 139, 55, 9, 73, 59, 248, 27, 6, 166, 121, 123, 79, 50, 191, 113, 236, 91, 118, 81, ], ), }, sequence_number: 2339135797542725537, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(178ce676021126056dcd5e8bcc8f9f4d63d67064f5077b089252ee5f017322f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f02248001e47da0a900ed2fdaa488f592b3f1b48601219e73d9e9da91fc10b667724fdc570746f0593c0a65fa0d189f5cdbab5cad88723825371b246c23353968232168b29590304cb56ff866f46f186726fccc597735a292326dc963736e9d8a5f93e9c322967bd80388e7c42a8a1b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e16f6b618842cfdf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 128, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e47da0a900ed2fdaa488f592b3f1b486, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 219e73d9e9da91fc10b667724fdc5707, }, ), received_events: EventHandle { count: 1007228561307332678, key: EventKey( [ 159, 92, 219, 171, 92, 173, 136, 114, 56, 37, 55, 27, 36, 108, 35, 53, 57, 104, 35, 33, 104, 178, 149, 144, ], ), }, sent_events: EventHandle { count: 8067186049739476016, key: EventKey( [ 103, 38, 252, 204, 89, 119, 53, 162, 146, 50, 109, 201, 99, 115, 110, 157, 138, 95, 147, 233, 195, 34, 150, 123, ], ), }, sequence_number: 1984445610996532184, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(17e65c4f737f617af25d017f9f51be8181ac816b2dd378214f0287ba22d57227): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601392655f0c2118ec81e0254a42086b2acc53ceba1b7137d7637d87c29d85520fde6d5a223019805772715d4ac248a0e018448d71f89175271c93500012387aa6c9707be909b280c2e731d143a80fb49f0d4304f51182a9076d9a0d3ba2ab1ca4c8dfe594e9bc93c33c11aa81824016840c873dc397b18f39149cfff5a3d01aeefb9e1067e3208205b9f0dda3c335588331716361c126e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083f285aeeedbc5252 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 85, 240, 194, 17, 142, 200, 30, 2, 84, 164, 32, 134, 178, 172, 197, 60, 235, 161, 183, 19, 125, 118, 55, 216, 124, 41, 216, 85, 32, 253, 230, 213, 162, 35, 1, 152, 5, 119, 39, 21, 212, 172, 36, 138, 14, 1, 132, 72, 215, 31, 137, 23, 82, 113, 201, 53, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2387aa6c9707be909b280c2e731d143a, }, ), received_events: EventHandle { count: 5858955331354884992, key: EventKey( [ 42, 144, 118, 217, 160, 211, 186, 42, 177, 202, 76, 141, 254, 89, 78, 155, 201, 60, 51, 193, 26, 168, 24, 36, ], ), }, sent_events: EventHandle { count: 8879370530176657409, key: EventKey( [ 243, 145, 73, 207, 255, 90, 61, 1, 174, 239, 185, 225, 6, 126, 50, 8, 32, 91, 159, 13, 218, 60, 51, 85, ], ), }, sequence_number: 7931432912377295752, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(18b11d34c2bfb2c49bb390e7bce50b12356e954122991e7b9eb1014dc5f23616): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96104f3f4a8c701d5f19af8c2c61116b8e1b49f57c695d6000c265f908da33f701846a92700928f5cd7a14d9a3dcc9ab4806f1121a4dc551633524981ff0328103618b657373084af83b8e19aaa9f4cd444d3541f11092d05fb3e9259e92f9cfff0c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e4d98e9ed8686599 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 244, 168, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5f19af8c2c61116b8e1b49f57c695d6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8088363284188571148, key: EventKey( [ 70, 169, 39, 0, 146, 143, 92, 215, 161, 77, 154, 61, 204, 154, 180, 128, 111, 17, 33, 164, 220, 85, 22, 51, ], ), }, sent_events: EventHandle { count: 3895657675312154962, key: EventKey( [ 182, 87, 55, 48, 132, 175, 131, 184, 225, 154, 170, 159, 76, 212, 68, 211, 84, 31, 17, 9, 45, 5, 251, 62, ], ), }, sequence_number: 14047008284052380050, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(18b928db2f8d383501c22c421cfefd706449bc1128ef0a61f92b19c720fe22bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b40a4af3e4d85ff9be6673df3b7cf0eabb3054bf9ec4e1e3f11d3d949ef9ef1540c474b75fccd1ca9c01e4a360a5cf4b77103fb9a5dfe521db4a34f000142a3f8966a9325e7b2f9d5556df72b978cd17e4f732ca07c18b37b3e38515d05649a3223f276e289141bcccded16dbe62f6ede639236255f55188c20f226a13ff73431c1598dd3b3126ea59fad111ae1ec76e79acba9b47850cb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c52783458a3f3e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 164, 175, 62, 77, 133, 255, 155, 230, 103, 61, 243, 183, 207, 14, 171, 179, 5, 75, 249, 236, 78, 30, 63, 17, 211, 217, 73, 239, 158, 241, 84, 12, 71, 75, 117, 252, 205, 28, 169, 192, 30, 74, 54, 10, 92, 244, 183, 113, 3, 251, 154, 93, 254, 82, 29, 180, 163, 79, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42a3f8966a9325e7b2f9d5556df72b97, }, ), received_events: EventHandle { count: 8980226530743341452, key: EventKey( [ 179, 123, 62, 56, 81, 93, 5, 100, 154, 50, 35, 242, 118, 226, 137, 20, 27, 204, 205, 237, 22, 219, 230, 47, ], ), }, sent_events: EventHandle { count: 6151676532325867118, key: EventKey( [ 140, 32, 242, 38, 161, 63, 247, 52, 49, 193, 89, 141, 211, 179, 18, 110, 165, 159, 173, 17, 26, 225, 236, 118, ], ), }, sequence_number: 14650342305174362855, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(194cb0eae7716c58d70a4a51bacbb74c3c369974607754aad205a3c7debe7ddd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9590c7142684ab3761881c4260a320000c5c5bf4bf2dec2681897ba141c4a24db58ab598fa6db374e915d08f93e70bb8e12548d5fe4c9a1181918f28e57ca3cc410d96f854cbac1e39e56f561511ac1d878520cbc7cb915ebc41d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805e65a58ab16f7bc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 113, 66, 104, 74, 179, 118, 24, 129, 196, 38, 10, 50, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7548841057660683717, key: EventKey( [ 151, 186, 20, 28, 74, 36, 219, 88, 171, 89, 143, 166, 219, 55, 78, 145, 93, 8, 249, 62, 112, 187, 142, 18, ], ), }, sent_events: EventHandle { count: 1808373138881219924, key: EventKey( [ 242, 142, 87, 202, 60, 196, 16, 217, 111, 133, 76, 186, 193, 227, 158, 86, 245, 97, 81, 26, 193, 216, 120, 82, ], ), }, sequence_number: 2145097801073998860, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19e28edd78a55cb11feac5d1fed3b55bc37264f2554f7a3242d7813d09cb9935): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97013e810b9c51430fd61089abc4dba29856734625d011bc8dfa28a1ea1f06894342b2e54d3fa00fdc767fbdb29114918dc78bb1a0633715af5a439807f32c1987946ed221acaab58615042891313477318c5fa76ed36a42554b139c9a96d2e2f8fe169d633cb182e1754304885b58e3f252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70893450e9139660a7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 16, 185, 197, 20, 48, 253, 97, 8, 154, 188, 77, 186, 41, 133, 103, 52, 98, 93, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1bc8dfa28a1ea1f06894342b2e54d3fa, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5265035464165279741, key: EventKey( [ 220, 120, 187, 26, 6, 51, 113, 90, 245, 164, 57, 128, 127, 50, 193, 152, 121, 70, 237, 34, 26, 202, 171, 88, ], ), }, sent_events: EventHandle { count: 8306629012336300129, key: EventKey( [ 197, 250, 118, 237, 54, 164, 37, 84, 177, 57, 201, 169, 109, 46, 47, 143, 225, 105, 214, 51, 203, 24, 46, 23, ], ), }, sequence_number: 2684020813212430420, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1a91523eee19325c2829eac2538fb7ad0e23677ef2fc7413091ecf247858cc2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b2fcdf7c35828a8f6f7f170a46e8fc3950895d45c87b1ac9e7e3ccf13a9357c08e1d64f3a9e581a549b1f575430ec0b46bf2f32c2310276754f2e05617d28f558f1090012cf92c30513bb9f01033f0ec7b5e1221f02db6ffa97608ff5013655e4e669a9a1901afd839e303a97a04bf4c637da276773188d3dfb913a85cb012a4d05560bc8abf88a4a30400f2db134081a86a26974ae59188376c86690d328482abad904ac9659096bc4e88e6fe9d8e7397f4f5aa4732fb12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087c4bf28f4dd68088 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 205, 247, 195, 88, 40, 168, 246, 247, 241, 112, 164, 110, 143, 195, 149, 8, 149, 212, 92, 135, 177, 172, 158, 126, 60, 207, 19, 169, 53, 124, 8, 225, 214, 79, 58, 158, 88, 26, 84, 155, 31, 87, 84, 48, 236, 11, 70, 191, 47, 50, 194, 49, 2, 118, 117, 79, 46, 5, 97, 125, 40, 245, 88, 241, 9, 0, 18, 207, 146, 195, 5, 19, 187, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 033f0ec7b5e1221f02db6ffa97608ff5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3655e4e669a9a1901afd839e303a97a0, }, ), received_events: EventHandle { count: 8315659055155049547, key: EventKey( [ 141, 61, 251, 145, 58, 133, 203, 1, 42, 77, 5, 86, 11, 200, 171, 248, 138, 74, 48, 64, 15, 45, 177, 52, ], ), }, sent_events: EventHandle { count: 6462230512370326024, key: EventKey( [ 131, 118, 200, 102, 144, 211, 40, 72, 42, 186, 217, 4, 172, 150, 89, 9, 107, 196, 232, 142, 111, 233, 216, 231, ], ), }, sequence_number: 12767550618345635641, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1aadea7fb8e571177c6ec66a82f9ad8eba929692293bc8a8985d2587834a37b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013ac7d4f147da967ba39982750b8b036874732ce195620fc1ba303b2cc944e49753f2c2c3dfe41ab3d613c7159d7bf5b65d34dac41d28c14bf6e4a10000b1427be4f8e1a762182c980abaadeb7e5a3fe04b8f91e9954690645c2265d788c3c86958da969b1d3c18b5324a7c1ca43613a9e33309f226bf04f6380debf6e79a92c3184016e784e55a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b2580a754df8fe4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 212, 241, 71, 218, 150, 123, 163, 153, 130, 117, 11, 139, 3, 104, 116, 115, 44, 225, 149, 98, 15, 193, 186, 48, 59, 44, 201, 68, 228, 151, 83, 242, 194, 195, 223, 228, 26, 179, 214, 19, 199, 21, 157, 123, 245, 182, 93, 52, 218, 196, 29, 40, 193, 75, 246, 228, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7108898995929039537, key: EventKey( [ 44, 152, 10, 186, 173, 235, 126, 90, 63, 224, 75, 143, 145, 233, 149, 70, 144, 100, 92, 34, 101, 215, 136, 195, ], ), }, sent_events: EventHandle { count: 4331789488810912200, key: EventKey( [ 181, 50, 74, 124, 28, 164, 54, 19, 169, 227, 51, 9, 242, 38, 191, 4, 246, 56, 13, 235, 246, 231, 154, 146, ], ), }, sequence_number: 6549787361125865667, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1b02e45ac70261e8454b698bf4dcbbfa1650298b9d30dcf675ee5411a9171349): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501582b569b09eb6d6f451b6bfa66e44a5caafe0dd1f0e47a4e04380b307fd392743b3fdd46ceb69e1e05f3a06eb4730bc53ec767b387efb68df8fd00690d77701d39b4abab986423396c9cae7b825fe5418fb60dd5a28725bf5d000070c7768fb1958e0c180616e7bc808c1ded1a82188e49f21e75642dd74bf880d1c7d727023380ecd44018b9b612787d7d14fd6f6ec2a64517742f1758e38cd7b4ccf2ba6712514c4e187d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089195d9b7197f9683 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 86, 155, 9, 235, 109, 111, 69, 27, 107, 250, 102, 228, 74, 92, 170, 254, 13, 209, 240, 228, 122, 78, 4, 56, 11, 48, 127, 211, 146, 116, 59, 63, 221, 70, 206, 182, 158, 30, 5, 243, 160, 110, 180, 115, 11, 197, 62, 199, 103, 179, 135, 239, 182, 141, 248, 253, 0, 105, 13, 119, 112, 29, 57, 180, 171, 171, 152, 100, 35, 57, 108, 156, 174, 123, 130, 95, 229, 65, 143, 182, 13, 213, 162, 135, 37, 191, 93, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 904825164996724592, key: EventKey( [ 6, 22, 231, 188, 128, 140, 29, 237, 26, 130, 24, 142, 73, 242, 30, 117, 100, 45, 215, 75, 248, 128, 209, 199, ], ), }, sent_events: EventHandle { count: 4671618748845795287, key: EventKey( [ 185, 182, 18, 120, 125, 125, 20, 253, 111, 110, 194, 166, 69, 23, 116, 47, 23, 88, 227, 140, 215, 180, 204, 242, ], ), }, sequence_number: 9014040743866689466, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1dd5d3e0e1219a71c744c6c2da41cefcbd193659e6ce38babb144b50be5abaf5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96417fcef1b28eeb2eab8d4565d16a816c3d85a0a7a342cb1850000672d71f08358460218661e13ed5e914eb19ed60d691ff7387fbf5bac2bcd2339b516690210071e374318534efeff4a0136bf3199570a4872a19353db3f6d0c5c87cf641fb34dd5fd819d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087d67e8fe7b1abf14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 239, 27, 40, 238, 178, 234, 184, 212, 86, 93, 22, 168, 22, 195, 216, 90, 10, 122, 52, 44, 177, 133, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 163915760143510887, key: EventKey( [ 102, 30, 19, 237, 94, 145, 78, 177, 158, 214, 13, 105, 31, 247, 56, 127, 191, 91, 172, 43, 205, 35, 57, 181, ], ), }, sent_events: EventHandle { count: 4843372939942455574, key: EventKey( [ 83, 78, 254, 255, 74, 1, 54, 191, 49, 153, 87, 10, 72, 114, 161, 147, 83, 219, 63, 109, 12, 92, 135, 207, ], ), }, sequence_number: 11349631628523806564, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1dd741e9c1e8ca445e798b550964816309c4de0ad38d1f2f49d4202e4341ce30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20135c917d65412ca87a9230eeb0a5f4e98b17b2e7ca519c420c38d8f43277793d69573a1a7f732312e704ed24e045643638a4fe45d9985010966de67a8ea8484e066564ca19488e001a8a09f567775b1ded6f90b3cdf4f06626740fa3a48b6eb76184b12a04b09f030c3268b2c2ec51bb37927151ba61ade54c7b5c7d4991dc34b3c18c3697382eb5c037c8cb87d487c1eca869dd5af4002daac7783e0d8a5fce59e6f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d07e0eb3b8a1e97 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 23, 214, 84, 18, 202, 135, 169, 35, 14, 235, 10, 95, 78, 152, 177, 123, 46, 124, 165, 25, 196, 32, 195, 141, 143, 67, 39, 119, 147, 214, 149, 115, 161, 167, 247, 50, 49, 46, 112, 78, 210, 78, 4, 86, 67, 99, 138, 79, 228, 93, 153, 133, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0966de67a8ea8484e066564ca19488e0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a8a09f567775b1ded6f90b3cdf4f0662, }, ), received_events: EventHandle { count: 8569143137345880167, key: EventKey( [ 75, 18, 160, 75, 9, 240, 48, 195, 38, 139, 44, 46, 197, 27, 179, 121, 39, 21, 27, 166, 26, 222, 84, 199, ], ), }, sent_events: EventHandle { count: 4344780797431302069, key: EventKey( [ 195, 105, 115, 130, 235, 92, 3, 124, 140, 184, 125, 72, 124, 30, 202, 134, 157, 213, 175, 64, 2, 218, 172, 119, ], ), }, sequence_number: 8043118857807257731, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1de3d25c1504ba9b9afe1606abde514f5636263741dd62b784537758943a29ba): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96407ebdbea3eac2a23012fab4a8522fa4d652c4d27115ea1831b004b9ef7888808b50a18b82bfdeaf9b3566b430b749019112ec3693d00fcb2b686acab6d48a0e0f52b6518174902a9accaddba90239eeed8c19a47c42143ea628c846744c0340f44f1ae672101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dfe5d03cd3ed552a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 219, 234, 62, 172, 42, 35, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2fab4a8522fa4d652c4d27115ea1831b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 771532293670411851, key: EventKey( [ 184, 43, 253, 234, 249, 179, 86, 107, 67, 11, 116, 144, 25, 17, 46, 195, 105, 61, 0, 252, 178, 182, 134, 172, ], ), }, sent_events: EventHandle { count: 7290190766939860395, key: EventKey( [ 23, 73, 2, 169, 172, 202, 221, 186, 144, 35, 158, 238, 216, 193, 154, 71, 196, 33, 67, 234, 98, 140, 132, 103, ], ), }, sequence_number: 7471174106469417028, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1e430baa52a2bfeb818f0f416351a1885890283b299c83f318fe5499777eb5d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011fe9c46681588ddb963bc52215e5a5af9f2e76d372de2aed3e1d7992afbabf3701162378f6cb12c42f7ec5b751645c7f5101ae1f680dae2ba75747a934214446a84827a6030c7ddad73d18783017cbcede81e9c70f259a0d44bd4f5d4884fc5fd0a6180991295bda6a7f6b18e03a2f667b1ff13bd659ffb212c89b2617f7981f71d0124fdcc126e26260d3fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be07b8ae2b5987ac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 196, 102, 129, 88, 141, 219, 150, 59, 197, 34, 21, 229, 165, 175, 159, 46, 118, 211, 114, 222, 42, 237, 62, 29, 121, 146, 175, 186, 191, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 162378f6cb12c42f7ec5b751645c7f51, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae1f680dae2ba75747a934214446a848, }, ), received_events: EventHandle { count: 4456270586913728039, key: EventKey( [ 120, 48, 23, 203, 206, 222, 129, 233, 199, 15, 37, 154, 13, 68, 189, 79, 93, 72, 132, 252, 95, 208, 166, 24, ], ), }, sent_events: EventHandle { count: 7746027370165408009, key: EventKey( [ 224, 58, 47, 102, 123, 31, 241, 59, 214, 89, 255, 178, 18, 200, 155, 38, 23, 247, 152, 31, 113, 208, 18, 79, ], ), }, sequence_number: 18290068489498968540, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1ebbd66526b33cf5ad74d0e4f9cd75b1c61ab9687327fa85b20e4044db7383c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b6a581f295a632c1829ad26547e895f3e5c06c3897b8d83900629562d6d2c23a6401e41ef8e6be6dbd924aa18bedf39ab12db48a1a9a2c068fe5436000117fa70adaf35e52c7a286335243a7f125b447a6c2dc0522818125d5af64ead3946761442b28dd8a545e3e757b75ca47993ea12455b6d903b351868dd982a909b3548f2f8ae177fc5af8a47c7d43e50586c89b358bf7355f5284e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085799894f73c24637 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 88, 31, 41, 90, 99, 44, 24, 41, 173, 38, 84, 126, 137, 95, 62, 92, 6, 195, 137, 123, 141, 131, 144, 6, 41, 86, 45, 109, 44, 35, 166, 64, 30, 65, 239, 142, 107, 230, 219, 217, 36, 170, 24, 190, 223, 57, 171, 18, 219, 72, 161, 169, 162, 192, 104, 254, 84, 54, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 17fa70adaf35e52c7a286335243a7f12, }, ), received_events: EventHandle { count: 2905596010933404763, key: EventKey( [ 18, 93, 90, 246, 78, 173, 57, 70, 118, 20, 66, 178, 141, 216, 165, 69, 227, 231, 87, 183, 92, 164, 121, 147, ], ), }, sent_events: EventHandle { count: 3835818306993197802, key: EventKey( [ 104, 221, 152, 42, 144, 155, 53, 72, 242, 248, 174, 23, 127, 197, 175, 138, 71, 199, 212, 62, 80, 88, 108, 137, ], ), }, sequence_number: 5632021081389750451, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1f7d5fc2fa2d996593e723bbe83783506fa64a9d2e0330483d023e475cfdb414): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e1101e3e05043e9e5facca4662e85dc1a62db01f050bc2b7edefcb450070343e273d07d01e3a35ab772f797891013af3e822ee4199a67a4129be46177182ade5836a51f73b9aa6724c28327997dd00bd1a37cab0726decc7b6b961d994418c6606790daf36ee8bf4ed6d0c0b5eb64431992a1daaa709e326251dad60afbaa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c19b4a7a78c41c74 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 227, 224, 80, 67, 233, 229, 250, 204, 164, 102, 46, 133, 220, 26, 98, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f050bc2b7edefcb450070343e273d07d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e3a35ab772f797891013af3e822ee419, }, ), received_events: EventHandle { count: 8602408117938186138, key: EventKey( [ 42, 222, 88, 54, 165, 31, 115, 185, 170, 103, 36, 194, 131, 39, 153, 125, 208, 11, 209, 163, 124, 171, 7, 38, ], ), }, sent_events: EventHandle { count: 4943014597901405406, key: EventKey( [ 198, 96, 103, 144, 218, 243, 110, 232, 191, 78, 214, 208, 192, 181, 235, 100, 67, 25, 146, 161, 218, 170, 112, 158, ], ), }, sequence_number: 12320453123504169522, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1fd95a135469f2e271853aeed0b80d30c4a94c270a4afeff8c7070f66df658dd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9570aa74d98fd23e82475781000003caea0b41f58582d18c5ba8833876714de9032fced312c673c7bef9abfc6db67d1401132dca127ab5f1880f848a506e8ba6aaf017b5c7577b1b04434c474b3b36fcb82b3f143752e0b7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db5f692671d3d4bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 167, 77, 152, 253, 35, 232, 36, 117, 120, 16, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3267458422854954556, key: EventKey( [ 197, 186, 136, 51, 135, 103, 20, 222, 144, 50, 252, 237, 49, 44, 103, 60, 123, 239, 154, 191, 198, 219, 103, 209, ], ), }, sent_events: EventHandle { count: 6893647230758162752, key: EventKey( [ 128, 248, 72, 165, 6, 232, 186, 106, 175, 1, 123, 92, 117, 119, 177, 176, 68, 52, 196, 116, 179, 179, 111, 203, ], ), }, sequence_number: 8866231372594918274, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2035c7d5280de8ef7c925ba31da19206d0f9a06c1b62a858c66550c7089c7f48): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01318e9c6785e2185a08407409918f0e9047fdcb69c32ac283fe51d950faa3802c2b7d4520ba5669c4778a46b99e3cea46d90600016da510e12f76943ac5195b7b21de739d382affeacc5aa84c18bb83d67c5884096a6e40f4c721c7dc13b7e4497b7935e7aa66f525e18414b27018775c95d907271a3b4ca17f04fddabff420ed23ba56faea0f5c6d5b237fcc10e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b07076b4046043c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 156, 103, 133, 226, 24, 90, 8, 64, 116, 9, 145, 143, 14, 144, 71, 253, 203, 105, 195, 42, 194, 131, 254, 81, 217, 80, 250, 163, 128, 44, 43, 125, 69, 32, 186, 86, 105, 196, 119, 138, 70, 185, 158, 60, 234, 70, 217, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6da510e12f76943ac5195b7b21de739d, }, ), received_events: EventHandle { count: 5523764779132332600, key: EventKey( [ 187, 131, 214, 124, 88, 132, 9, 106, 110, 64, 244, 199, 33, 199, 220, 19, 183, 228, 73, 123, 121, 53, 231, 170, ], ), }, sent_events: EventHandle { count: 8120575639048025446, key: EventKey( [ 119, 92, 149, 217, 7, 39, 26, 59, 76, 161, 127, 4, 253, 218, 191, 244, 32, 237, 35, 186, 86, 250, 234, 15, ], ), }, sequence_number: 16361802292663119196, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(204cdcb92c57a6cde346c46264c9662fc1b3a77f8cbdd2fc0cf83a1a2eb43b2c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99501380827a1df6e2c3ac48fd6f6c447e07cf382aef42a6047459102e2dd323c6f2cd54a74c00f867f1fecee2e91d952cc5e8fb566fa2fc9cb30e400010c76c9e356feb96d8b5d0804c7f59de5a4e81634271b0a591874edc00d37703f68de19becbba1a5eb21ec054e18283cea84620474f6245870a186af83977049c0f5355d21b9203289e369690b5f80f5a1b6d9625ae8b56f982702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085d30616bb6458771 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 8, 39, 161, 223, 110, 44, 58, 196, 143, 214, 246, 196, 71, 224, 124, 243, 130, 174, 244, 42, 96, 71, 69, 145, 2, 226, 221, 50, 60, 111, 44, 213, 74, 116, 192, 15, 134, 127, 31, 236, 238, 46, 145, 217, 82, 204, 94, 143, 181, 102, 250, 47, 201, 203, 48, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c76c9e356feb96d8b5d0804c7f59de5, }, ), received_events: EventHandle { count: 6415970474334283940, key: EventKey( [ 116, 237, 192, 13, 55, 112, 63, 104, 222, 25, 190, 203, 186, 26, 94, 178, 30, 192, 84, 225, 130, 131, 206, 168, ], ), }, sent_events: EventHandle { count: 758651350774390854, key: EventKey( [ 106, 248, 57, 119, 4, 156, 15, 83, 85, 210, 27, 146, 3, 40, 158, 54, 150, 144, 181, 248, 15, 90, 27, 109, ], ), }, sequence_number: 8107316429326263702, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(204fb15d06cf67733c9c7d7760af4b644d41d917824eb39f5dffd81bc57d22e4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670aeee499acf2a2c93958ee00010c373ec14c75a5419701e550b0ff073997cf17abbcb3d43718aec8d2697321c3efa6302fba5c75db4251d71a1328e769f3f9a28baf5868cc22184cfabc1eeb71c955286761585ceda0e52996bd2c99c693f281246705fb74c8182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9c728fbf062ffa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 228, 153, 172, 242, 162, 201, 57, 88, 238, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c373ec14c75a5419701e550b0ff0739, }, ), received_events: EventHandle { count: 4023037990054383511, key: EventKey( [ 174, 200, 210, 105, 115, 33, 195, 239, 166, 48, 47, 186, 92, 117, 219, 66, 81, 215, 26, 19, 40, 231, 105, 243, ], ), }, sent_events: EventHandle { count: 2507493822650098425, key: EventKey( [ 76, 250, 188, 30, 235, 113, 201, 85, 40, 103, 97, 88, 92, 237, 160, 229, 41, 150, 189, 44, 153, 198, 147, 242, ], ), }, sequence_number: 1785805873728660609, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20894d217002e2d6c8996af277248e2cec7a371c592abb085613c43d79f7bafc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141e4e3b8258d3649d451abaa8a64e8e4a72c0c24d37c658a07338d250028d4beab41a67216429b73f7175325bc3689029acb6965780ca56660380af52fd5d35be94b01d2a6929dde75320af56386982d8ed6cc017ff02911bf34b27fe6ac0e6622febc3021d13d93008ee05a18ca1a5e13dc21d2a88bc2a4cfdcdc247b7cc4b9fe162e2885f1cca7f77cb4397018fd5eca8b7d6b4b0083bc2287b8b8e957efa83dcbc78e4da855a0e95623c630262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d54dd67ced05ecdb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 228, 227, 184, 37, 141, 54, 73, 212, 81, 171, 170, 138, 100, 232, 228, 167, 44, 12, 36, 211, 124, 101, 138, 7, 51, 141, 37, 0, 40, 212, 190, 171, 65, 166, 114, 22, 66, 155, 115, 247, 23, 83, 37, 188, 54, 137, 2, 154, 203, 105, 101, 120, 12, 165, 102, 96, 56, 10, 245, 47, 213, 211, 91, 233, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d2a6929dde75320af56386982d8ed6cc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7ff02911bf34b27fe6ac0e6622febc30, }, ), received_events: EventHandle { count: 6548389991318147361, key: EventKey( [ 202, 26, 94, 19, 220, 33, 210, 168, 139, 194, 164, 207, 220, 220, 36, 123, 124, 196, 185, 254, 22, 46, 40, 133, ], ), }, sent_events: EventHandle { count: 8086693054744349937, key: EventKey( [ 253, 94, 202, 139, 125, 107, 75, 0, 131, 188, 34, 135, 184, 184, 233, 87, 239, 168, 61, 203, 199, 142, 77, 168, ], ), }, sequence_number: 2751917227407679573, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21008694f76dfc144b29ccb15285464524edbcc3d03b2f5597076326b9c52b8c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141a5e4ace25536b87b1d6da666da4b5f7134beae37ed010a37a27861849a9f1bfc8ed8e52d9935912b8a195fb8e4b4a78c8fca62458a03e26756edabcf56a570ac0901ab2383cdeab8e6bbe8a9b959368d4de501429c15f648492d046c96cb3a546b41650a97a74f80f0b77f18b32b2ded4dc98a687717b4e8a9543411e4907139022f97d76c3254a714cf31001888f773babe3def5abae7fef53d6bfa672d6a1ba689fd59747e292264218827c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890d3af0a2ef113b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 228, 172, 226, 85, 54, 184, 123, 29, 109, 166, 102, 218, 75, 95, 113, 52, 190, 174, 55, 237, 1, 10, 55, 162, 120, 97, 132, 154, 159, 27, 252, 142, 216, 229, 45, 153, 53, 145, 43, 138, 25, 95, 184, 228, 180, 167, 140, 143, 202, 98, 69, 138, 3, 226, 103, 86, 237, 171, 207, 86, 165, 112, 172, 9, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ab2383cdeab8e6bbe8a9b959368d4de5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 429c15f648492d046c96cb3a546b4165, }, ), received_events: EventHandle { count: 9203088797437761290, key: EventKey( [ 179, 43, 45, 237, 77, 201, 138, 104, 119, 23, 180, 232, 169, 84, 52, 17, 228, 144, 113, 57, 2, 47, 151, 215, ], ), }, sent_events: EventHandle { count: 14019961472430700, key: EventKey( [ 136, 247, 115, 186, 190, 61, 239, 90, 186, 231, 254, 245, 61, 107, 250, 103, 45, 106, 27, 166, 137, 253, 89, 116, ], ), }, sequence_number: 13918242850407065982, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(214041b7761dcc225d2218af3bc25ce2c02d3ca3fbe256e9d226aea98427ea9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f1b4cf2674de031eea9dfe42ff5f2f38f0fb3c192177b25ce8a19beb31e36548abb47ec2fbaeef0d8f4b84aec3b1cfe512dcc065fed925809baa84ee0d2418301377ee934b9970b7c58b45516f96a64fe009007b9e0526ee5401879a32062fe0320d9cafa4616878ad26f38f909c9d578f2884f6c6e47caebf24618d1ee1ecb7d27214e6b0d9e9a892bcd2c1a6310fc53728c199e91bf94f638a6432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086225e83ec6cc4b1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 27, 76, 242, 103, 77, 224, 49, 238, 169, 223, 228, 47, 245, 242, 243, 143, 15, 179, 193, 146, 23, 123, 37, 206, 138, 25, 190, 179, 30, 54, 84, 138, 187, 71, 236, 47, 186, 238, 240, 216, 244, 184, 74, 236, 59, 28, 254, 81, 45, 204, 6, 95, 237, 146, 88, 9, 186, 168, 78, 224, 210, 65, 131, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 377ee934b9970b7c58b45516f96a64fe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4676265090330724240, key: EventKey( [ 121, 163, 32, 98, 254, 3, 32, 217, 202, 250, 70, 22, 135, 138, 210, 111, 56, 249, 9, 201, 213, 120, 242, 136, ], ), }, sent_events: EventHandle { count: 5112407781033274447, key: EventKey( [ 209, 238, 30, 203, 125, 39, 33, 78, 107, 13, 158, 154, 137, 43, 205, 44, 26, 99, 16, 252, 83, 114, 140, 25, ], ), }, sequence_number: 4874646278383833502, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21568f1b4663cfbf440b86a0f9c9d3243dc4559d9e1712176e2ee2595e2b6910): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0d3939e04c9ab65d5d1a642ba501018191e8b8e803ab579c331e7fe9b1a6d601cff94bfd16c9c1df29058599f5fab52440c7747fd05b734118979ee862e20331a2e33ea8f8409e46ea0f4fe1091ac7c7f0003ba7ffdb896b0f18e900e5d961af7eae0778a17448a981e836ab4a9debf63704a9e14baa60e8ff692101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cadbe19e55a7c7fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 57, 224, 76, 154, 182, 93, 93, 26, 100, 43, 165, 1, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8191e8b8e803ab579c331e7fe9b1a6d6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cff94bfd16c9c1df29058599f5fab524, }, ), received_events: EventHandle { count: 4716214185836726080, key: EventKey( [ 151, 158, 232, 98, 226, 3, 49, 162, 227, 62, 168, 248, 64, 158, 70, 234, 15, 79, 225, 9, 26, 199, 199, 240, ], ), }, sent_events: EventHandle { count: 1111133311056952064, key: EventKey( [ 233, 0, 229, 217, 97, 175, 126, 174, 7, 120, 161, 116, 72, 169, 129, 232, 54, 171, 74, 157, 235, 246, 55, 4, ], ), }, sequence_number: 7638078994915254697, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21f4fa8f129bf0d430a944b3286f10d7011cf7e0a1f099c732e46213e26b9e5e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144e8796cb2293f6ac19afe9e42c677efa0f0f28653aac6a1bc0cd68912803bd021155d758b9fa4300646ce5c120626fe81fd0723f3c902cb9814665c9608c9fc7e3d3b49e401df1b2af58da2021fe9f3763528df42ce00e9b48fc61862cb7e18e65f0e441ca00ff99f2e5c8c76acd206ec7f7e306ee67de0549790f06df3584d18420c42a4b4b39239aa2aba16a6c7172d2de75bda38529c478cedc56ec0b88f322101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708337feae41da603a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 121, 108, 178, 41, 63, 106, 193, 154, 254, 158, 66, 198, 119, 239, 160, 240, 242, 134, 83, 170, 198, 161, 188, 12, 214, 137, 18, 128, 59, 208, 33, 21, 93, 117, 139, 159, 164, 48, 6, 70, 206, 92, 18, 6, 38, 254, 129, 253, 7, 35, 243, 201, 2, 203, 152, 20, 102, 92, 150, 8, 201, 252, 126, 61, 59, 73, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: df1b2af58da2021fe9f3763528df42ce, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9136504127601226985, key: EventKey( [ 230, 95, 14, 68, 28, 160, 15, 249, 159, 46, 92, 140, 118, 172, 210, 6, 236, 127, 126, 48, 110, 230, 125, 224, ], ), }, sent_events: EventHandle { count: 5573472192383981396, key: EventKey( [ 66, 12, 66, 164, 180, 179, 146, 57, 170, 42, 186, 22, 166, 199, 23, 45, 45, 231, 91, 218, 56, 82, 156, 71, ], ), }, sequence_number: 3643333760197717388, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2201579eba36716955e5e273d07e1dfdafc36a59b9c56c907687ff0565bfea97): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf01629f6d0a24c6234cbb1676cbeb341b9f2ea922b1280748fef67000def4f217736e327fd9a7b6786e3514208e8e8ffb23f5cf6dc22bd502dac6ea7b102b9dc4c29e94e9a1c3a4a79aecd37545beb2996b620c4537cab7ab301809a2bfec9a3db2d48e38017e3e4b6fb2a931951a61bbbc3f6fa3be00d2dc8edfa601a92518ca67d708aa0a113a6e98488817a2ceebd6cf6805a9914e7b4a7d38f0b57f1751187f4762bb032e055e411cf3ed4b2bef8f2a2cebf29f29632c2264904b3bd0bf522101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dd88defc87c4562b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 109, 10, 36, 198, 35, 76, 187, 22, 118, 203, 235, 52, 27, 159, 46, 169, 34, 177, 40, 7, 72, 254, 246, 112, 0, 222, 244, 242, 23, 115, 110, 50, 127, 217, 167, 182, 120, 110, 53, 20, 32, 142, 142, 143, 251, 35, 245, 207, 109, 194, 43, 213, 2, 218, 198, 234, 123, 16, 43, 157, 196, 194, 158, 148, 233, 161, 195, 164, 167, 154, 236, 211, 117, 69, 190, 178, 153, 107, 98, 12, 69, 55, 202, 183, 171, 48, 24, 9, 162, 191, 236, 154, 61, 178, 212, 142, 56, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7e3e4b6fb2a931951a61bbbc3f6fa3be, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2713702066694315218, key: EventKey( [ 202, 103, 215, 8, 170, 10, 17, 58, 110, 152, 72, 136, 23, 162, 206, 235, 214, 207, 104, 5, 169, 145, 78, 123, ], ), }, sent_events: EventHandle { count: 5843279460932549962, key: EventKey( [ 127, 71, 98, 187, 3, 46, 5, 94, 65, 28, 243, 237, 75, 43, 239, 143, 42, 44, 235, 242, 159, 41, 99, 44, ], ), }, sequence_number: 5962713384751227938, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2211ff93f5f8e950135e0647e562c70e266b400a7b0a3cbca42e00cb554a3539): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960149b86b54f382e2dfdad9ac926acde34a6cd72e88d7cc2d06a34af2f44e3c6e3eb59a45aa11734f4a96a2dbd6ac146d56e79ff0cd8828508b2df1ffd0445cdf30db60b8a019b86eb4b5b60000ea59567613a57b1418145c6f99f472a0d2f1a43eaaadb7f2410733dec64affd3dbb4dd7d520316892018f30981318cdbef4b5c7b1cd0d9bb1f51c21919d7af5d06f12dbc3752d171546e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085618a02de65de738 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 107, 84, 243, 130, 226, 223, 218, 217, 172, 146, 106, 205, 227, 74, 108, 215, 46, 136, 215, 204, 45, 6, 163, 74, 242, 244, 78, 60, 110, 62, 181, 154, 69, 170, 17, 115, 79, 74, 150, 162, 219, 214, 172, 20, 109, 86, 231, 159, 240, 205, 136, 40, 80, 139, 45, 241, 255, 208, 68, 92, 223, 48, 219, 96, 184, 160, 25, 184, 110, 180, 181, 182, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1475954805902301674, key: EventKey( [ 20, 92, 111, 153, 244, 114, 160, 210, 241, 164, 62, 170, 173, 183, 242, 65, 7, 51, 222, 198, 74, 255, 211, 219, ], ), }, sent_events: EventHandle { count: 2344429284547747252, key: EventKey( [ 243, 9, 129, 49, 140, 219, 239, 75, 92, 123, 28, 208, 217, 187, 31, 81, 194, 25, 25, 215, 175, 93, 6, 241, ], ), }, sequence_number: 7950104386057255981, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(229dc676da88512cb90e7ef41c11c2ffef0d83e253058fc44e963bbf0bfd2e55): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101345f1345a731d823833aee463b03ac39eabf3a3b6f0bdad58c3ad485c562a7ae710e00645362b8c2e192f62a8bdcfb3c563c75a16200000e7a0c9f7ec9fb71184eed7a1ff4c0d6844267b11ffbcf1774e4f8cb3203fb30a1e5830c250860873518030a0a85e3cc45b489f39550b1753394aa01b5010d3864a148ade30190bfefee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bd054102b5b8f8db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 19, 69, 167, 49, 216, 35, 131, 58, 238, 70, 59, 3, 172, 57, 234, 191, 58, 59, 111, 11, 218, 213, 140, 58, 212, 133, 197, 98, 167, 174, 113, 14, 0, 100, 83, 98, 184, 194, 225, 146, 246, 42, 139, 220, 251, 60, 86, 60, 117, 161, 98, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8213379891111688718, key: EventKey( [ 78, 237, 122, 31, 244, 192, 214, 132, 66, 103, 177, 31, 251, 207, 23, 116, 228, 248, 203, 50, 3, 251, 48, 161, ], ), }, sent_events: EventHandle { count: 3857157193963701221, key: EventKey( [ 3, 10, 10, 133, 227, 204, 69, 180, 137, 243, 149, 80, 177, 117, 51, 148, 170, 1, 181, 1, 13, 56, 100, 161, ], ), }, sequence_number: 17217190525688589640, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(268a2b48f46f91f369090ef77cad31af94b36182ad5abe6b9574d7e53e0d18b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c013f96147c80ae1903ec21fba2ded1ccd55f21c565316ad0f6216fe3713837c2f3352a484cab29e63b144c6aa4f3047a9c098b0b9c574542c631e5cec3e49ab9330000568093cfe7d5237e18bb9b164bafe201f40439955fc2c912512934beaf968101be07f267e7d482a03c18691a506b5a6447532ce93ae2e436d4ce5be08f849060c8cfeea12468c2b0a1dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70845611733e6ab8fe8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 150, 20, 124, 128, 174, 25, 3, 236, 33, 251, 162, 222, 209, 204, 213, 95, 33, 197, 101, 49, 106, 208, 246, 33, 111, 227, 113, 56, 55, 194, 243, 53, 42, 72, 76, 171, 41, 230, 59, 20, 76, 106, 164, 243, 4, 122, 156, 9, 139, 11, 156, 87, 69, 66, 198, 49, 229, 206, 195, 228, 154, 185, 51, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9089343664560504918, key: EventKey( [ 187, 155, 22, 75, 175, 226, 1, 244, 4, 57, 149, 95, 194, 201, 18, 81, 41, 52, 190, 175, 150, 129, 1, 190, ], ), }, sent_events: EventHandle { count: 4368635489476407815, key: EventKey( [ 105, 26, 80, 107, 90, 100, 71, 83, 44, 233, 58, 226, 228, 54, 212, 206, 91, 224, 143, 132, 144, 96, 200, 207, ], ), }, sequence_number: 15898182508611936750, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(26968b28e53d7ce0b01c164dbb5e6eb8cc68d4bc46d3eb5d0617f07094dd5f93): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e261f541fe93062ba8d72a5b7e30900019872a388f3c3536c304639b1d96a8b23b5ec9e7a6c103e0218db9917e0036e0f0a21931eb7d03ddea824d580b7ff3671f949cf66c8f9edf736189addf379088645bb0b360279deee016a611d82229e83e7b479dd53902de437b42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080aaa92c68a2fb0b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 31, 84, 31, 233, 48, 98, 186, 141, 114, 165, 183, 227, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9872a388f3c3536c304639b1d96a8b23, }, ), received_events: EventHandle { count: 161584694731664565, key: EventKey( [ 219, 153, 23, 224, 3, 110, 15, 10, 33, 147, 30, 183, 208, 61, 222, 168, 36, 213, 128, 183, 255, 54, 113, 249, ], ), }, sent_events: EventHandle { count: 3960896054360461129, key: EventKey( [ 154, 221, 243, 121, 8, 134, 69, 187, 11, 54, 2, 121, 222, 238, 1, 106, 97, 29, 130, 34, 158, 131, 231, 180, ], ), }, sequence_number: 12986098934892191097, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(271bf7cd8ec72a3ac98f8ddd85d822c34674756ca9d7962e67270a4268a3c07c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130215f62da5d00e72ef16772027baed724e19aba7e188eaf06ecf6dd74a6bf32e2407f2157137c67dfba0e0bff8fb9bbd901bea1fb070c9290b31dac1ab06018b03700da2af7c0a33bdb01184d080bb34a5cebd45b3da97fb3eae4ab3d98782852ce665b5632b51760657839185f62d06b473d75f7891f9425e485b3db6e24f000f450a98d05a444d5a94c13442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70863e891198090baf0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 95, 98, 218, 93, 0, 231, 46, 241, 103, 114, 2, 123, 174, 215, 36, 225, 154, 186, 126, 24, 142, 175, 6, 236, 246, 221, 116, 166, 191, 50, 226, 64, 127, 33, 87, 19, 124, 103, 223, 186, 14, 11, 255, 143, 185, 187, 217, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bea1fb070c9290b31dac1ab06018b037, }, ), key_rotation_capability: None, received_events: EventHandle { count: 133766188440693466, key: EventKey( [ 77, 8, 11, 179, 74, 92, 235, 212, 91, 61, 169, 127, 179, 234, 228, 171, 61, 152, 120, 40, 82, 206, 102, 91, ], ), }, sent_events: EventHandle { count: 4141171320756187734, key: EventKey( [ 95, 98, 208, 107, 71, 61, 117, 247, 137, 31, 148, 37, 228, 133, 179, 219, 110, 36, 240, 0, 244, 80, 169, 141, ], ), }, sequence_number: 4905348711447831557, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(279f7fba266906abdba91dfc82287910a4764e396b0a6026aa159fbf1e4a70d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb12ac9da2f7ca04c741f0a024a51a1bc9ba42e38e4dd64709eed2a77f7c677f365d65a603afc0876f09e26541bdb00011e772cd86ac9627d415d86b68bd80961b9e2410247f6f66518d43cbf270163c374084bf8329113eee91113fb23f1490cd4426cd77a38a68b1618d0e0a108ee54fd3d670d9297f254beef596665a42f1b80696ec43efe1239f7b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087955cd2ac151f62a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 42, 201, 218, 47, 124, 160, 76, 116, 31, 10, 2, 74, 81, 161, 188, 155, 164, 46, 56, 228, 221, 100, 112, 158, 237, 42, 119, 247, 198, 119, 243, 101, 214, 90, 96, 58, 252, 8, 118, 240, 158, 38, 84, 27, 219, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e772cd86ac9627d415d86b68bd80961, }, ), received_events: EventHandle { count: 7347330626942526137, key: EventKey( [ 212, 60, 191, 39, 1, 99, 195, 116, 8, 75, 248, 50, 145, 19, 238, 233, 17, 19, 251, 35, 241, 73, 12, 212, ], ), }, sent_events: EventHandle { count: 1624574852106513474, key: EventKey( [ 208, 224, 161, 8, 238, 84, 253, 61, 103, 13, 146, 151, 242, 84, 190, 239, 89, 102, 101, 164, 47, 27, 128, 105, ], ), }, sequence_number: 13256126781926065262, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(27bb764ab67ed9c9111e64058079261ce15c4150378b1643dd693b4a1d742ae8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e247558f36c71c08a38ebca54d14d8cd840ac60898d294252d16d4cf68017c794f2ba70b02c39ca3f9dd5602190b9f47bb665f02837c643d2309efa1554eb36e15707048c332cce1ddf3410392ffb00018120426c4738efbd26d9d7264441013d9b8302891607e104183e27b4bc7ec2eaf337d6ef6347631c5dc97bedaa5346c7b45f25e2e3f52d643618f174fc726dcfabf7f1659465508915901ee442439c75022b63402a695eb92b342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c91f1deb5ac577a4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 117, 88, 243, 108, 113, 192, 138, 56, 235, 202, 84, 209, 77, 140, 216, 64, 172, 96, 137, 141, 41, 66, 82, 209, 109, 76, 246, 128, 23, 199, 148, 242, 186, 112, 176, 44, 57, 202, 63, 157, 213, 96, 33, 144, 185, 244, 123, 182, 101, 240, 40, 55, 198, 67, 210, 48, 158, 250, 21, 84, 235, 54, 225, 87, 7, 4, 140, 51, 44, 206, 29, 223, 52, 16, 57, 47, 251, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8120426c4738efbd26d9d7264441013d, }, ), received_events: EventHandle { count: 351570039280927643, key: EventKey( [ 62, 39, 180, 188, 126, 194, 234, 243, 55, 214, 239, 99, 71, 99, 28, 93, 201, 123, 237, 170, 83, 70, 199, 180, ], ), }, sent_events: EventHandle { count: 3919308109832660319, key: EventKey( [ 241, 116, 252, 114, 109, 207, 171, 247, 241, 101, 148, 101, 80, 137, 21, 144, 30, 228, 66, 67, 156, 117, 2, 43, ], ), }, sequence_number: 3759302129113251939, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(289d0c447cc7b2693e1ddc7185bad886dac996084378c042c0eae2a74024ecbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97609b3f2714d304f31a4db01d7fabf98d9edca2a8b1156a5abe0a5ad018e38d7049a71ab326e1c20dee92993c4e95972643e09e95118a4cf283d08c5b98434e0b37606dae73e10737a32e90d09528919a8a6de7d0540185394479c6d59f82f44bebf99ce385926835b9bbb62cac34ec6d1c23ed276a6d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708528aaeb3e029d221 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 179, 242, 113, 77, 48, 79, 49, 164, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d7fabf98d9edca2a8b1156a5abe0a5ad, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8e38d7049a71ab326e1c20dee92993c4, }, ), received_events: EventHandle { count: 5902258950223583721, key: EventKey( [ 164, 207, 40, 61, 8, 197, 185, 132, 52, 224, 179, 118, 6, 218, 231, 62, 16, 115, 122, 50, 233, 13, 9, 82, ], ), }, sent_events: EventHandle { count: 4613231788543187337, key: EventKey( [ 83, 148, 71, 156, 109, 89, 248, 47, 68, 190, 191, 153, 206, 56, 89, 38, 131, 91, 155, 187, 98, 202, 195, 78, ], ), }, sequence_number: 15395123021580784070, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(28a84fffa4b224cbe5a04eb2b9cdc34e1ac1bd20451dcc451ce3c40fb2d3e52a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a1b9f85201db6bef297927afd562bf036cdea6653ff4d5966fc22ba41fcdd33217cbbce51d4c8cc83bab1fdf18c080bdf3d604efdb1299c8ece7522be0eca00ef79ed8cea1d7dc5e13c9e0000e46d757a305bf61818c251d2225d5da9c8abfc17d67930502c84ccf107399a877209ab713313ab4f6218af20309341ad28671b4b1ef154a102ceccfcfcaeda7056bbad9044ca7c51b3d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087547bf6f81cff4ac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 27, 159, 133, 32, 29, 182, 190, 242, 151, 146, 122, 253, 86, 43, 240, 54, 205, 234, 102, 83, 255, 77, 89, 102, 252, 34, 186, 65, 252, 221, 51, 33, 124, 187, 206, 81, 212, 200, 204, 131, 186, 177, 253, 241, 140, 8, 11, 223, 61, 96, 78, 253, 177, 41, 156, 142, 206, 117, 34, 190, 14, 202, 0, 239, 121, 237, 140, 234, 29, 125, 197, 225, 60, 158, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1798725364952165860, key: EventKey( [ 194, 81, 210, 34, 93, 93, 169, 200, 171, 252, 23, 214, 121, 48, 80, 44, 132, 204, 241, 7, 57, 154, 135, 114, ], ), }, sent_events: EventHandle { count: 7084068837832895241, key: EventKey( [ 175, 32, 48, 147, 65, 173, 40, 103, 27, 75, 30, 241, 84, 161, 2, 206, 204, 252, 252, 174, 218, 112, 86, 187, ], ), }, sequence_number: 15326683553283215533, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2a14b13c2f96c72fa498e94fc9d0d5112df1d0b47439724322c7f586534ac4db): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215c6e46f26058a24ea4805a7f04d154cab8d1bf786990001a7ff6b79451976b23ce4396ed27971e86ae02c2720946637184b1e91d3c4ea21ad1531133805a3446a25c246cc22f11eec217e10f73d36e76d1813bab0d1d1ef6e454c82f632b510c980e093ebbc16e82d97b176cb14161635a02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70857dd02140e5d3d7a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 228, 111, 38, 5, 138, 36, 234, 72, 5, 167, 240, 77, 21, 76, 171, 141, 27, 247, 134, 153, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a7ff6b79451976b23ce4396ed27971e8, }, ), received_events: EventHandle { count: 3992040985527640170, key: EventKey( [ 75, 30, 145, 211, 196, 234, 33, 173, 21, 49, 19, 56, 5, 163, 68, 106, 37, 194, 70, 204, 34, 241, 30, 236, ], ), }, sent_events: EventHandle { count: 7919358109520264737, key: EventKey( [ 19, 186, 176, 209, 209, 239, 110, 69, 76, 130, 246, 50, 181, 16, 201, 128, 224, 147, 235, 188, 22, 232, 45, 151, ], ), }, sequence_number: 11544157503928104625, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2a355fc848a17494001f5eb3b9e3eb1a99f12e9b0903a730dfed0d12250a723d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c7015a66bb110a024935c74c083ed7c175c89400f9a533f7d632fb39f50009a4acc3b696823fff09e352141f8507e81879d3cb30748c35b2921301bba65369f692527956c13f1322db377ccabade38722fc3822377be388702dfffcd7601d5e078ed716ec8a09f49e658ac52c13401c0cc4eca39a7474bde750152a4cbf76c4c322c063925d730186b801238dccfd0ed7b07f291d6dde29568b7e0d86655854b00bbdff6e697c128186085b61984955f4971947da4bbad20967c3b6e54ea0cec8579db5fbde9d6ea172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c90d19934951d6ce Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 187, 17, 10, 2, 73, 53, 199, 76, 8, 62, 215, 193, 117, 200, 148, 0, 249, 165, 51, 247, 214, 50, 251, 57, 245, 0, 9, 164, 172, 195, 182, 150, 130, 63, 255, 9, 227, 82, 20, 31, 133, 7, 232, 24, 121, 211, 203, 48, 116, 140, 53, 178, 146, 19, 1, 187, 166, 83, 105, 246, 146, 82, 121, 86, 193, 63, 19, 34, 219, 55, 124, 202, 186, 222, 56, 114, 47, 195, 130, 35, 119, 190, 56, 135, 2, 223, 255, 205, 118, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5e078ed716ec8a09f49e658ac52c134, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0cc4eca39a7474bde750152a4cbf76c, }, ), received_events: EventHandle { count: 3519322560660255308, key: EventKey( [ 107, 128, 18, 56, 220, 207, 208, 237, 123, 7, 242, 145, 214, 221, 226, 149, 104, 183, 224, 216, 102, 85, 133, 75, ], ), }, sent_events: EventHandle { count: 2936795450262403840, key: EventKey( [ 96, 133, 182, 25, 132, 149, 95, 73, 113, 148, 125, 164, 187, 173, 32, 150, 124, 59, 110, 84, 234, 12, 236, 133, ], ), }, sequence_number: 1723426106815535993, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2be9410dc4f2aafe12bc2acc39c740284d739972eb67a94476be49179b5d1a41): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b1e7006a6d25ec450665f892c34f3d44090136d0849aed46c8cf2f47c2ef5bb00008d858b8e7b90b27d180653605fceef16c3e01e37250dd44c80e51c923bff1a0c9e314cb8021ddfb10218a463ea794df52365a79352418ec9de5ebb2a23a408629df4b0f547e72d1d76a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d4127508abd26114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 6, 166, 210, 94, 196, 80, 102, 95, 137, 44, 52, 243, 212, 64, 144, 19, 109, 8, 73, 174, 212, 108, 140, 242, 244, 124, 46, 245, 187, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9057460660942374285, key: EventKey( [ 6, 83, 96, 95, 206, 239, 22, 195, 224, 30, 55, 37, 13, 212, 76, 128, 229, 28, 146, 59, 255, 26, 12, 158, ], ), }, sent_events: EventHandle { count: 194181574646320177, key: EventKey( [ 164, 99, 234, 121, 77, 245, 35, 101, 167, 147, 82, 65, 142, 201, 222, 94, 187, 42, 35, 164, 8, 98, 157, 244, ], ), }, sequence_number: 11634518770349241776, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2c5fa893f71d551e24f087650dc54b108343d89fbf57cd887d34b7ebe7547870): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96316dc5508bc4171bb727582a5f520b54a40a1661290d68400004f8dfbaba9093303181c19b17ae7aaac7bc380ac84fc3f792ffb7e0b3e2b40b61c635b547062abcc54185f046c6c58d3ebf87b26587fe66f13237d82939478b9efb00dde1942b914bfed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e61f0d2a8938e1d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 85, 8, 188, 65, 113, 187, 114, 117, 130, 165, 245, 32, 181, 74, 64, 161, 102, 18, 144, 214, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 230538630265539919, key: EventKey( [ 28, 25, 177, 122, 231, 170, 172, 123, 195, 128, 172, 132, 252, 63, 121, 47, 251, 126, 11, 62, 43, 64, 182, 28, ], ), }, sent_events: EventHandle { count: 6110447233714641763, key: EventKey( [ 95, 4, 108, 108, 88, 211, 235, 248, 123, 38, 88, 127, 230, 111, 19, 35, 125, 130, 147, 148, 120, 185, 239, 176, ], ), }, sequence_number: 17131434293451152909, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d2475c5068a0f69ee998b2d1eeff1f9747a7e765938bdca9a5c149c19a21318): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015db462c83df067849dfa0148d490d4a8c4d16b61d23377de7d793e4428b5cdecbbe9b9b7c5569ffd6e925bddf7639de705959cca81adb18d3722a96c513841d4eeb8fcdf9b4e8735e4ca44e2edb55891e64867dff32c21724aff64c95c9201e41c36e34fdc32fea8ce211756b51a6901c0a08b7c32806917bfaa339000431fc5afb663e5ef9a0a391801e01c5960a561839947de94b139d7fee2fa054d114ff3c2d0c815840727ae33183cc2b036fbbd7eab565d8706a7080bebbe4514ff3724c82bab29ab5215a563042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708505ac9d4ef449690 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 180, 98, 200, 61, 240, 103, 132, 157, 250, 1, 72, 212, 144, 212, 168, 196, 209, 107, 97, 210, 51, 119, 222, 125, 121, 62, 68, 40, 181, 205, 236, 187, 233, 185, 183, 197, 86, 159, 253, 110, 146, 91, 221, 247, 99, 157, 231, 5, 149, 156, 202, 129, 173, 177, 141, 55, 34, 169, 108, 81, 56, 65, 212, 238, 184, 252, 223, 155, 78, 135, 53, 228, 202, 68, 226, 237, 181, 88, 145, 230, 72, 103, 223, 243, 44, 33, 114, 74, 255, 100, 201, 92, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e41c36e34fdc32fea8ce211756b51a69, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0a08b7c32806917bfaa339000431fc5, }, ), received_events: EventHandle { count: 4110267965065377455, key: EventKey( [ 1, 224, 28, 89, 96, 165, 97, 131, 153, 71, 222, 148, 177, 57, 215, 254, 226, 250, 5, 77, 17, 79, 243, 194, ], ), }, sent_events: EventHandle { count: 3723956855116253392, key: EventKey( [ 60, 194, 176, 54, 251, 189, 126, 171, 86, 93, 135, 6, 167, 8, 11, 235, 190, 69, 20, 255, 55, 36, 200, 43, ], ), }, sequence_number: 316277909845911979, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d2d54c193804ac6988e7a944f6ab6caff2b701b49da6740527f557feed7113b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122ba7a7f6774683c32f0301ce6a537c1e7cc746be94d31d933bfdbc059cf9fd3fa1a7701baa37319aabdd093ca8e9af286ebf4410110731089ba7cdfa3d857c61b7f3920ae9544a5a609788d2018a0f16548bdf22035c1759f826d41d925c5d8a8336af6927013a924ee6eb55434181e47dd585de665312385588f198bd00bca8af8aa7a4608eb9d047ba4f3b841472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708730b2c2602db7463 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 122, 127, 103, 116, 104, 60, 50, 240, 48, 28, 230, 165, 55, 193, 231, 204, 116, 107, 233, 77, 49, 217, 51, 191, 219, 192, 89, 207, 159, 211, 250, 26, 119, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: baa37319aabdd093ca8e9af286ebf441, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 10731089ba7cdfa3d857c61b7f3920ae, }, ), received_events: EventHandle { count: 2345662963775784085, key: EventKey( [ 160, 241, 101, 72, 189, 242, 32, 53, 193, 117, 159, 130, 109, 65, 217, 37, 197, 216, 168, 51, 106, 246, 146, 112, ], ), }, sent_events: EventHandle { count: 3770838276062357779, key: EventKey( [ 30, 71, 221, 88, 93, 230, 101, 49, 35, 133, 88, 143, 25, 139, 208, 11, 202, 138, 248, 170, 122, 70, 8, 235, ], ), }, sequence_number: 5134588406755165341, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d667446043dafa0df447a532ed15ff23483b9180e2537d0c329ab8b056e76d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c6a20058c918c42730c9da0d180e8768df8460ab05655a56879048c210001d1feb1a0d96b6950c59888785e4866326d035e33ccca842d1877a0a51d3a841b0e21b2639956a6abf2441ef84d268ea35863ca530aabc2684d184ba9e8243620392c32451a4000c83b6bb724c5d125f1445d392eca4cfb1b83d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fcd6889cb54f031f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 32, 5, 140, 145, 140, 66, 115, 12, 157, 160, 209, 128, 232, 118, 141, 248, 70, 10, 176, 86, 85, 165, 104, 121, 4, 140, 33, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1feb1a0d96b6950c59888785e486632, }, ), received_events: EventHandle { count: 3279969407016502125, key: EventKey( [ 119, 160, 165, 29, 58, 132, 27, 14, 33, 178, 99, 153, 86, 166, 171, 242, 68, 30, 248, 77, 38, 142, 163, 88, ], ), }, sent_events: EventHandle { count: 5577922178366818915, key: EventKey( [ 75, 169, 232, 36, 54, 32, 57, 44, 50, 69, 26, 64, 0, 200, 59, 107, 183, 36, 197, 209, 37, 241, 68, 93, ], ), }, sequence_number: 15385171518166806073, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2da756cd26c43c3b80acd89bdc3131b9e6cf1bf8270556ad24f6c4e641accd91): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a6055b25923198d26923b0773cdc70c2ba21fbc1e4a0ed262acd21e10ce8a6991570e9272e4c302a686a7ebdd8061c2b92107762288ff85275b6d0001cbe88fdea5bfb9c74e46eb416bf6dfdc2e79efe734e37d40186c7699972520d39524586b8ccfdca2d70b9e099e92ebd332a34d7efa76b9db6e18870a8dd7df5e6304b90acd1c7496d83611c94656f9e7f47932f0ddf148211da22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ffd7cbad1ae523d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 85, 178, 89, 35, 25, 141, 38, 146, 59, 7, 115, 205, 199, 12, 43, 162, 31, 188, 30, 74, 14, 210, 98, 172, 210, 30, 16, 206, 138, 105, 145, 87, 14, 146, 114, 228, 195, 2, 166, 134, 167, 235, 221, 128, 97, 194, 185, 33, 7, 118, 34, 136, 255, 133, 39, 91, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cbe88fdea5bfb9c74e46eb416bf6dfdc, }, ), received_events: EventHandle { count: 4647120206885255470, key: EventKey( [ 108, 118, 153, 151, 37, 32, 211, 149, 36, 88, 107, 140, 207, 220, 162, 215, 11, 158, 9, 158, 146, 235, 211, 50, ], ), }, sent_events: EventHandle { count: 7988182284731567523, key: EventKey( [ 135, 10, 141, 215, 223, 94, 99, 4, 185, 10, 205, 28, 116, 150, 216, 54, 17, 201, 70, 86, 249, 231, 244, 121, ], ), }, sequence_number: 11681529605648150578, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2e210be96b3eb5812e6d04e111db904a6cc403c9b0fd199ef7da84a7d317a1b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d04d267b4343a8f1655785a04b61db72292b0b75a1f337ba7c4791c4e48d2ceb0bfe1b20ce0f3510041ab1b0a7276663885e52f7a4080e2d179a9bc1a120001de7f5292f2830816cd3371ddcd14d7da3ca127417541d17b18f3ae2ca63be3d66611b424e2c51fafb64d7bb8cff84dae2a6fc006112d4faf7a18480ab06d2d42dd4613e3d1ab5915a2bdeea14d819e3fccdba6e59193960222082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876f8882e53637093 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 210, 103, 180, 52, 58, 143, 22, 85, 120, 90, 4, 182, 29, 183, 34, 146, 176, 183, 90, 31, 51, 123, 167, 196, 121, 28, 78, 72, 210, 206, 176, 191, 225, 178, 12, 224, 243, 81, 0, 65, 171, 27, 10, 114, 118, 102, 56, 133, 229, 47, 122, 64, 128, 226, 209, 121, 169, 188, 26, 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de7f5292f2830816cd3371ddcd14d7da, }, ), received_events: EventHandle { count: 8921984308657758524, key: EventKey( [ 243, 174, 44, 166, 59, 227, 214, 102, 17, 180, 36, 226, 197, 31, 175, 182, 77, 123, 184, 207, 248, 77, 174, 42, ], ), }, sent_events: EventHandle { count: 8840371648529350767, key: EventKey( [ 72, 10, 176, 109, 45, 66, 221, 70, 19, 227, 209, 171, 89, 21, 162, 189, 238, 161, 77, 129, 158, 63, 204, 219, ], ), }, sequence_number: 586033747255748006, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2f6b7bd088a256f55d7004080eb65cbb83e5e0761be74b742eaa151b6365b85a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518ad977107c6129ee5ec661ecf5bbf4c85e3eddc7cb40fcca90000ff7f04c948edc41c18fceb47e8a2da1c5073240fc6db1b595bd6797c02e8382288a8ddc90d6532486218d94ebdecee7b2b303fe61580b031a411144d24b8e7f5624ce80daf78af9c88e12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f0cd7a53c525f028 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 151, 113, 7, 198, 18, 158, 229, 236, 102, 30, 207, 91, 191, 76, 133, 227, 237, 220, 124, 180, 15, 204, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2073042625363214335, key: EventKey( [ 252, 235, 71, 232, 162, 218, 28, 80, 115, 36, 15, 198, 219, 27, 89, 91, 214, 121, 124, 2, 232, 56, 34, 136, ], ), }, sent_events: EventHandle { count: 7081965823644523944, key: EventKey( [ 217, 78, 189, 236, 238, 123, 43, 48, 63, 230, 21, 128, 176, 49, 164, 17, 20, 77, 36, 184, 231, 245, 98, 76, ], ), }, sequence_number: 16251411532824382952, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2fda42c8dcaec3cc48f73f7215b4823f55b6ece18efa04467b9fc232104f8549): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97407ebc896feacabde010ac4c7340782c79b67c0b0beb1e154630149137dbfe97fffbc587088d15a1f36c6f2be3dbeb2ea0f73180ec318fefc4e063c985acad04e59cfdccfcf044bd9a8238344733fef09ba103618d96ca9a86a3cd72b100c9c4168463f2a1abf040a49ea8e29dcbbeea39ac6f18d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc27b5d20615047c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 200, 150, 254, 172, 171, 222, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0ac4c7340782c79b67c0b0beb1e15463, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 49137dbfe97fffbc587088d15a1f36c6, }, ), received_events: EventHandle { count: 8291103492429168370, key: EventKey( [ 14, 195, 24, 254, 252, 78, 6, 60, 152, 90, 202, 208, 78, 89, 207, 220, 207, 207, 4, 75, 217, 168, 35, 131, ], ), }, sent_events: EventHandle { count: 3895818229506863940, key: EventKey( [ 217, 108, 169, 168, 106, 60, 215, 43, 16, 12, 156, 65, 104, 70, 63, 42, 26, 191, 4, 10, 73, 234, 142, 41, ], ), }, sequence_number: 10228174596212702172, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ffe9c0fbbcebacb76e9393d8b1226add865aa73abed427a4ed552192d1f16b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770a38e70bb51320b0ef9055017a7f2fddfde894ffb1ce72c5a3ea069c01a21571e0518acf7b3bf62afab7ab10b1e0a543a7fe75bb6e18626aaabdd4e86c3cdd17599136f7e7861a15bdc3747a24a84ebe7f93b323877b18719fa80f5f00d681d02eb7b379c8d6a31f6dfc3857d9e37ae2f7ccbd06ac02462101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9c6155f97667ba1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 231, 11, 181, 19, 32, 176, 239, 144, 85, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7a7f2fddfde894ffb1ce72c5a3ea069c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a21571e0518acf7b3bf62afab7ab10b1, }, ), received_events: EventHandle { count: 7979100901405337056, key: EventKey( [ 98, 106, 170, 189, 212, 232, 108, 60, 221, 23, 89, 145, 54, 247, 231, 134, 26, 21, 189, 195, 116, 122, 36, 168, ], ), }, sent_events: EventHandle { count: 8901122442701815374, key: EventKey( [ 113, 159, 168, 15, 95, 0, 214, 129, 208, 46, 183, 179, 121, 200, 214, 163, 31, 109, 252, 56, 87, 217, 227, 122, ], ), }, sequence_number: 5044783677562484706, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(300be4e99026a84d61238e477f9d7cda7a1e30ad4618e65515c5c026eb659147): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c6015994eb696eea17d1d24697137ed32f8ab391e62afbf4787760b8d9f1f4fe15e90c2b40ce815c18f3a3e24bdb0695695e1a1ecb05258fa50a7afe3e556f6c987ad75af297782abe5ebb0d25c8d65806c7a3e75d43b2f24a3cb7a201e38a822d8cdb35dec84c7fc688fff87701ff1e51b2265455778603b774f0ffbf79ef56f028dee1654918f0cc890e14cfc7e86f36eeaee3f3ba4431d2373bac8f441d1078dce9ba1b3c7b1867b505ee642ddb998b250d65eb7af702addddc0564ae7325e446db63e91970792101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f566f38267b3148f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 235, 105, 110, 234, 23, 209, 210, 70, 151, 19, 126, 211, 47, 138, 179, 145, 230, 42, 251, 244, 120, 119, 96, 184, 217, 241, 244, 254, 21, 233, 12, 43, 64, 206, 129, 92, 24, 243, 163, 226, 75, 219, 6, 149, 105, 94, 26, 30, 203, 5, 37, 143, 165, 10, 122, 254, 62, 85, 111, 108, 152, 122, 215, 90, 242, 151, 120, 42, 190, 94, 187, 13, 37, 200, 214, 88, 6, 199, 163, 231, 93, 67, 178, 242, 74, 60, 183, 162, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e38a822d8cdb35dec84c7fc688fff877, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ff1e51b2265455778603b774f0ffbf79, }, ), received_events: EventHandle { count: 5288881681702344431, key: EventKey( [ 240, 204, 137, 14, 20, 207, 199, 232, 111, 54, 238, 174, 227, 243, 186, 68, 49, 210, 55, 59, 172, 143, 68, 29, ], ), }, sent_events: EventHandle { count: 8880003054869182480, key: EventKey( [ 103, 181, 5, 238, 100, 45, 219, 153, 139, 37, 13, 101, 235, 122, 247, 2, 173, 221, 220, 5, 100, 174, 115, 37, ], ), }, sequence_number: 8750522566174263012, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(306a753dd4744a81b74c9095d05f0eb0b37f8eb48b8b6d3f65b1b03bd9e79f84): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161ab75392329e156c70e0346536ded383bff8baf7967aaab1a64cf3d57c1f9fde84e347975e2ad2da98bfc63846fb19406f238663829055c687514dd6c9ee64e261fcefb8720ab64fee1f57f6b8c9718e68d2a164d72983984dc48f03e8c0468475f0000e66608955e479f4d18a9b4a85163a8a18c43dd44f82abc22e7fd5ad7abb954ba0063cf2de8e83ece1a18582c68032c7fbcddd76d8a2f9cd468ccd31f4000938bcd756f89a0c53e45579d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cce5848335c69e58 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 117, 57, 35, 41, 225, 86, 199, 14, 3, 70, 83, 109, 237, 56, 59, 255, 139, 175, 121, 103, 170, 171, 26, 100, 207, 61, 87, 193, 249, 253, 232, 78, 52, 121, 117, 226, 173, 45, 169, 139, 252, 99, 132, 111, 177, 148, 6, 242, 56, 102, 56, 41, 5, 92, 104, 117, 20, 221, 108, 158, 230, 78, 38, 31, 206, 251, 135, 32, 171, 100, 254, 225, 245, 127, 107, 140, 151, 24, 230, 141, 42, 22, 77, 114, 152, 57, 132, 220, 72, 240, 62, 140, 4, 104, 71, 95, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5593267733770299110, key: EventKey( [ 169, 180, 168, 81, 99, 168, 161, 140, 67, 221, 68, 248, 42, 188, 34, 231, 253, 90, 215, 171, 185, 84, 186, 0, ], ), }, sent_events: EventHandle { count: 1931550460237172579, key: EventKey( [ 88, 44, 104, 3, 44, 127, 188, 221, 215, 109, 138, 47, 156, 212, 104, 204, 211, 31, 64, 0, 147, 139, 205, 117, ], ), }, sequence_number: 11337606722834434415, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(30c536879d1cd8f80e62bbf677393f4e69632b4ad87d970bef6ce796f205c9ad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0152a1699192b7c1cee6d6e25a2911738940a98ddadc5ffa1f5ef4606793eda8768ae62771a20111fd91542e342a724f59343d0412b8271d4f8e80beef9c35b2e4362a96082fdd6e36710a3465126545560ec5150134da94df93c9559687c5777c3b3931a1014c6d44e22a27add03f2f1b1db6e970ad1ca066c0067ba84718d52caa9c4fc15d83e8c794991c4ba629dc1cff5e125855084fb14b5a3b414f741817427369e4d994437530eb50dd7c6bc198f1129589c43b6c23356847536c58162101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70810d082747f329d90 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 105, 145, 146, 183, 193, 206, 230, 214, 226, 90, 41, 17, 115, 137, 64, 169, 141, 218, 220, 95, 250, 31, 94, 244, 96, 103, 147, 237, 168, 118, 138, 230, 39, 113, 162, 1, 17, 253, 145, 84, 46, 52, 42, 114, 79, 89, 52, 61, 4, 18, 184, 39, 29, 79, 142, 128, 190, 239, 156, 53, 178, 228, 54, 42, 150, 8, 47, 221, 110, 54, 113, 10, 52, 101, 18, 101, 69, 86, 14, 197, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 34da94df93c9559687c5777c3b3931a1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4c6d44e22a27add03f2f1b1db6e970ad, }, ), received_events: EventHandle { count: 5163512241708245020, key: EventKey( [ 213, 44, 170, 156, 79, 193, 93, 131, 232, 199, 148, 153, 28, 75, 166, 41, 220, 28, 255, 94, 18, 88, 85, 8, ], ), }, sent_events: EventHandle { count: 8380989154733568335, key: EventKey( [ 23, 66, 115, 105, 228, 217, 148, 67, 117, 48, 235, 80, 221, 124, 107, 193, 152, 241, 18, 149, 137, 196, 59, 108, ], ), }, sequence_number: 1610155971721049379, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(30dbe4347f6788bc4c0e3ae95f835226a75844b6a48427f93b9a5681417fd957): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f023bb20196e19eeb87de128df11a6ed633fff77a01f747c65f27c933690cbd94492ffa0137a547be4770b23515181eb2b3d42e90655beb1837ff24b62647a4d690c6725846f33cbe4e7b39573d5118b3044f73f8b861ca3d2d83655436f2e320826c7705787fb4456af17d0c78c54e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708238ff1c1f3d4a01c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 178, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 96e19eeb87de128df11a6ed633fff77a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f747c65f27c933690cbd94492ffa0137, }, ), received_events: EventHandle { count: 1528323843871885221, key: EventKey( [ 30, 178, 179, 212, 46, 144, 101, 91, 235, 24, 55, 255, 36, 182, 38, 71, 164, 214, 144, 198, 114, 88, 70, 243, ], ), }, sent_events: EventHandle { count: 5853930995045023292, key: EventKey( [ 179, 4, 79, 115, 248, 184, 97, 202, 61, 45, 131, 101, 84, 54, 242, 227, 32, 130, 108, 119, 5, 120, 127, 180, ], ), }, sequence_number: 5676074900418292293, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(31e7241da03995d274c8e566fc0018a1258772ebb5384c197aa4fe3fca0f4861): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e016d0116aa2d73739d624ec73749ae9f2e8f0f00b5914bd240c8f135186d9f8cd521bfb7ae7e9ebee06b245216df1147db089d4c771f7595fd56f8956818972687701663fede812421ffb47308a5b69ce8ef5bff6cce4da9b1f7b39729772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70875b624cb93295e63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 16aa2d73739d624ec73749ae9f2e8f0f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3887108134129078709, key: EventKey( [ 109, 159, 140, 213, 33, 191, 183, 174, 126, 158, 190, 224, 107, 36, 82, 22, 223, 17, 71, 219, 8, 157, 76, 119, ], ), }, sent_events: EventHandle { count: 7536202603979699487, key: EventKey( [ 151, 38, 135, 112, 22, 99, 254, 222, 129, 36, 33, 255, 180, 115, 8, 165, 182, 156, 232, 239, 91, 255, 108, 206, ], ), }, sequence_number: 8586560963769117005, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(322523d042faaa74496c3ad9054aabf11115878a1054288226955f8f7867b3e7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9721576dd6f828bc84c33a2c9b533be7b092cb7471560470001c1c2e763e2e4ad8dfa3ed7f20390ba20507f31a11dd33a3a18ce2ae4156262d7fe8ae41fc1e6c81a4537685c35e8f54ad65cee2af95dd4c05b18ad5b5f0ef6c64ecb65de7f550fa0cd099da077a8e4421585272d1e4da5b2bfc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a5481ba2009b7be6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 221, 111, 130, 139, 200, 76, 51, 162, 201, 181, 51, 190, 123, 9, 44, 183, 71, 21, 96, 71, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c1c2e763e2e4ad8dfa3ed7f20390ba20, }, ), received_events: EventHandle { count: 4195898127060926288, key: EventKey( [ 206, 42, 228, 21, 98, 98, 215, 254, 138, 228, 31, 193, 230, 200, 26, 69, 55, 104, 92, 53, 232, 245, 74, 214, ], ), }, sent_events: EventHandle { count: 6611517753057275484, key: EventKey( [ 173, 91, 95, 14, 246, 198, 78, 203, 101, 222, 127, 85, 15, 160, 205, 9, 157, 160, 119, 168, 228, 66, 21, 133, ], ), }, sequence_number: 14393419357132565799, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32d1a1fbcadffa9c77b8433fad37442fa0265251681c31549d3d4f8a226fc2c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671a147d3e7d0b4fe9c29a8f8a34cfb0ad751c80fc82ee0b2649f856000085f00797b056943518726b7c505c59e762dfa2493576544714d4cba81c6eb3a86ce96faff2653b7a30180eca3e850a23c86876db7a5dae99a9fe74bf72152bb00f78cabed9d0b39ee67c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f2144bd285ef0a8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 125, 62, 125, 11, 79, 233, 194, 154, 143, 138, 52, 207, 176, 173, 117, 28, 128, 252, 130, 238, 11, 38, 73, 248, 86, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3860806097011470469, key: EventKey( [ 114, 107, 124, 80, 92, 89, 231, 98, 223, 162, 73, 53, 118, 84, 71, 20, 212, 203, 168, 28, 110, 179, 168, 108, ], ), }, sent_events: EventHandle { count: 3493169770028560361, key: EventKey( [ 14, 202, 62, 133, 10, 35, 200, 104, 118, 219, 122, 93, 174, 153, 169, 254, 116, 191, 114, 21, 43, 176, 15, 120, ], ), }, sequence_number: 9000055400486780618, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33c2dcee45439f070294ae1ca9baa5a5debc80533074ce35a2a2bca29e7b7c9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155cabf0fd0acd3e1119f735087af704ef20e0c6b644c8d59e2a194fdeef29f9c4360fe4940f04bb068375a6ab12bec9079e68db3f0b19063ac1558067e3678190242dea009453e9a407c1e9f7e2b5dfecbe8ad7ed02e01d1b21bf5a314d3ce1039386478f1a4d700a27a42da36f8031618bf432621a5d4bb6abd76b6755031dc72099a1692403a92c3913fde67d478ae2b184d45c4453c671c0367f5a6d016dffbd7a687f64e3c67dc22979dbcca82b65b7d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889f9d893de02ba30 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 191, 15, 208, 172, 211, 225, 17, 159, 115, 80, 135, 175, 112, 78, 242, 14, 12, 107, 100, 76, 141, 89, 226, 161, 148, 253, 238, 242, 159, 156, 67, 96, 254, 73, 64, 240, 75, 176, 104, 55, 90, 106, 177, 43, 236, 144, 121, 230, 141, 179, 240, 177, 144, 99, 172, 21, 88, 6, 126, 54, 120, 25, 2, 66, 222, 160, 9, 69, 62, 154, 64, 124, 30, 159, 126, 43, 93, 254, 203, 232, 173, 126, 208, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d1b21bf5a314d3ce1039386478f1a4d7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1586384408238258850, key: EventKey( [ 191, 67, 38, 33, 165, 212, 187, 106, 189, 118, 182, 117, 80, 49, 220, 114, 9, 154, 22, 146, 64, 58, 146, 195, ], ), }, sent_events: EventHandle { count: 3147586043249573777, key: EventKey( [ 77, 69, 196, 69, 60, 103, 28, 3, 103, 245, 166, 208, 22, 223, 251, 215, 166, 135, 246, 78, 60, 103, 220, 34, ], ), }, sequence_number: 9033014150485024151, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33c758ea22ce8a14bd17c6a4c3fc84c4799b7cabcf293ecd69fb95ccf538dc38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b467d3a2a248ec89ec534eb5a2b8de5ee9f858cb12253ad76640cab7c2a45fccdc5f8663d46651c40d3ed5eb6eafabdb0a3a1d74d18674f71ebf3860b9a7ca43de3f3f2d9441d014f5c0164ef6279056ed3593d7a1cd4e07710173f000142a8f7fcd014d94cc3477b2bda9fe393af001fdd0dc32d3d18005682ae934fcbddb933ffb3ba223b3ac6b59b75dd052fdaf26792a16c1f5f1918cff842e2bfcd7c54f423c514dbdeafcb26a76bb056ca9d96ee54ce1cc6604f512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac0791af2cc0c240 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 125, 58, 42, 36, 142, 200, 158, 197, 52, 235, 90, 43, 141, 229, 238, 159, 133, 140, 177, 34, 83, 173, 118, 100, 12, 171, 124, 42, 69, 252, 205, 197, 248, 102, 61, 70, 101, 28, 64, 211, 237, 94, 182, 234, 250, 189, 176, 163, 161, 215, 77, 24, 103, 79, 113, 235, 243, 134, 11, 154, 124, 164, 61, 227, 243, 242, 217, 68, 29, 1, 79, 92, 1, 100, 239, 98, 121, 5, 110, 211, 89, 61, 122, 28, 212, 224, 119, 16, 23, 63, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42a8f7fcd014d94cc3477b2bda9fe393, }, ), received_events: EventHandle { count: 4408394074577371311, key: EventKey( [ 0, 86, 130, 174, 147, 79, 203, 221, 185, 51, 255, 179, 186, 34, 59, 58, 198, 181, 155, 117, 221, 5, 47, 218, ], ), }, sent_events: EventHandle { count: 1828214525163366386, key: EventKey( [ 207, 248, 66, 226, 191, 205, 124, 84, 244, 35, 197, 20, 219, 222, 175, 203, 38, 167, 107, 176, 86, 202, 157, 150, ], ), }, sequence_number: 5859008044235379950, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(347444d73df72cb58285ce57eed9cd25e8c03fe8838fbbdd3a3db28dccc9027d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a401474baa1521375a65e897ba48219a8f87a970f11376097bcfbdd1697b514bb0acae935bccf5b05947769e8c97668f682f63fdbe10e12a85e8a5216d900c28da4d21a150723b47a5980001d537826aeffd82b4c8e5b18ba58ba8acc521a008c13dff0c18f15476468f02a78e6014aafe3620480b377670ed31acc3600a63075bbb632a1f1888b7066c49f7cf0f0c4373226d7e4e4e5110bacdb1392805a7b94f1e8fdb82832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70808859977f71cbc63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 170, 21, 33, 55, 90, 101, 232, 151, 186, 72, 33, 154, 143, 135, 169, 112, 241, 19, 118, 9, 123, 207, 189, 209, 105, 123, 81, 75, 176, 172, 174, 147, 91, 204, 245, 176, 89, 71, 118, 158, 140, 151, 102, 143, 104, 47, 99, 253, 190, 16, 225, 42, 133, 232, 165, 33, 109, 144, 12, 40, 218, 77, 33, 161, 80, 114, 59, 71, 165, 152, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d537826aeffd82b4c8e5b18ba58ba8ac, }, ), received_events: EventHandle { count: 936535146799047109, key: EventKey( [ 241, 84, 118, 70, 143, 2, 167, 142, 96, 20, 170, 254, 54, 32, 72, 11, 55, 118, 112, 237, 49, 172, 195, 96, ], ), }, sent_events: EventHandle { count: 2245717020534858506, key: EventKey( [ 136, 183, 6, 108, 73, 247, 207, 15, 12, 67, 115, 34, 109, 126, 78, 78, 81, 16, 186, 205, 177, 57, 40, 5, ], ), }, sequence_number: 9476377973676292519, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(34844e0140b027524ecb7f62b987a57a048ab16556e94370d99aca1a968b6624): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0162ba2d745c948b3705217497bcd274357fd2bbdb5c4015a0ffae3993460b1de492dc5bc2108220c8c452c89bb9c0a356d611373e182ab066139611e3d7f607e92a93fdaff90f80e522b29ea81168c7d9a0e657c6678f6431a7fe8041052c83631b908400011d8057b5f47c860996f8cc4a4d6995d3fa0d6b74d9bdd368189df7b7342ce4c6731e48256f7457e33374d02077e92ac37ba133b28633361b5a18f3d1a490b6bd0bad8bfaae498459c64a220e597d7f162ecdac27d0b5917aebc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708478a15b085dd969b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 45, 116, 92, 148, 139, 55, 5, 33, 116, 151, 188, 210, 116, 53, 127, 210, 187, 219, 92, 64, 21, 160, 255, 174, 57, 147, 70, 11, 29, 228, 146, 220, 91, 194, 16, 130, 32, 200, 196, 82, 200, 155, 185, 192, 163, 86, 214, 17, 55, 62, 24, 42, 176, 102, 19, 150, 17, 227, 215, 246, 7, 233, 42, 147, 253, 175, 249, 15, 128, 229, 34, 178, 158, 168, 17, 104, 199, 217, 160, 230, 87, 198, 103, 143, 100, 49, 167, 254, 128, 65, 5, 44, 131, 99, 27, 144, 132, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1d8057b5f47c860996f8cc4a4d6995d3, }, ), received_events: EventHandle { count: 7553589741689179642, key: EventKey( [ 157, 247, 183, 52, 44, 228, 198, 115, 30, 72, 37, 111, 116, 87, 227, 51, 116, 208, 32, 119, 233, 42, 195, 123, ], ), }, sent_events: EventHandle { count: 6492842882715759521, key: EventKey( [ 243, 209, 164, 144, 182, 189, 11, 173, 139, 250, 174, 73, 132, 89, 198, 74, 34, 14, 89, 125, 127, 22, 46, 205, ], ), }, sequence_number: 13973397035086260140, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3504dfb7d1d4f45539597cff480ad622706084d18f48aaf6077ddffdd34dbbfe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001432b5a22f5d02ef9d33dfdfd024d97864b09ed4c191042814efddb6b199fe8032d66462499e287cef42409fae3ffb0dc3038de5a40a7243bf3d67772e28ae5b8d628a020014051638dcb6df1ce6a6c7479064bdeb30092d9d89ff508ed4718aff601fb2de75c896a3783616b36892c7bae4c1647dfcb8653f8a15dbc0c7f10186e3c74a07b11a5f349068c4172fedf0357258d58ccccf50a7f33e338e29c379b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a6bf8176ec78e24 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 90, 34, 245, 208, 46, 249, 211, 61, 253, 253, 2, 77, 151, 134, 75, 9, 237, 76, 25, 16, 66, 129, 78, 253, 219, 107, 25, 159, 232, 3, 45, 102, 70, 36, 153, 226, 135, 206, 244, 36, 9, 250, 227, 255, 176, 220, 48, 56, 222, 90, 64, 167, 36, 59, 243, 214, 119, 114, 226, 138, 229, 184, 214, 40, 160, 32, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4051638dcb6df1ce6a6c7479064bdeb3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5182808597215107474, key: EventKey( [ 175, 246, 1, 251, 45, 231, 92, 137, 106, 55, 131, 97, 107, 54, 137, 44, 123, 174, 76, 22, 71, 223, 203, 134, ], ), }, sent_events: EventHandle { count: 1188682829813381203, key: EventKey( [ 110, 60, 116, 160, 123, 17, 165, 243, 73, 6, 140, 65, 114, 254, 223, 3, 87, 37, 141, 88, 204, 204, 245, 10, ], ), }, sequence_number: 11184580695028872063, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(35371b481baec549ada25ffdbfbd9efc92b32e83a7542ce925a108fb3f008f9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97013a5d9c54d5db7cda187a33db45c77c1fbfa4a9d0001c68eb4089c3710a925de8ffd6e44db3ce9b3109f1fd3145518f2acbd50b4fde4ddb7b4ed6d6f23d7c62c81f58fb5bcfef3f8a3fc2f67776c4a189a99ec72dfed7aa7a8c47445e888005678168b5238bded0683d15055031274992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70853464a8467a2852a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 217, 197, 77, 93, 183, 205, 161, 135, 163, 61, 180, 92, 119, 193, 251, 250, 74, 157, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c68eb4089c3710a925de8ffd6e44db3c, }, ), received_events: EventHandle { count: 6130757125524206569, key: EventKey( [ 242, 172, 189, 80, 180, 253, 228, 221, 183, 180, 237, 109, 111, 35, 215, 198, 44, 129, 245, 143, 181, 188, 254, 243, ], ), }, sent_events: EventHandle { count: 5362792541361841144, key: EventKey( [ 154, 153, 236, 114, 223, 237, 122, 167, 168, 196, 116, 69, 232, 136, 0, 86, 120, 22, 139, 82, 56, 189, 237, 6, ], ), }, sequence_number: 11057482790626972035, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(364d4f80d268ea21f4b179d07bf209b8671b825a9b5e8c0febe414e04545dd2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101542b561766ce4e892cecd99fa905689d93244ac4ff6c358feaefebc79eba1e131b606e0342f3ac993ebc4556bb0706fcf1193952049475384f6d6f9d4b24101ac4dedbb601ce21bdc7f89b2f16885c024ed4028d6700015dcb6b0ee821cb3d86c8b9433e3051b337b7bb8d84c30a0d18e88e002c5d1acbf7eb94c41fe3d3ec9dcd361792c7b86c0545e9e148aefabb1c18ba664cbbc77b981b9b7fc850efa449a108b75bf9e352611c947911e014ae5c1f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70855c137f92581e129 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 86, 23, 102, 206, 78, 137, 44, 236, 217, 159, 169, 5, 104, 157, 147, 36, 74, 196, 255, 108, 53, 143, 234, 239, 235, 199, 158, 186, 30, 19, 27, 96, 110, 3, 66, 243, 172, 153, 62, 188, 69, 86, 187, 7, 6, 252, 241, 25, 57, 82, 4, 148, 117, 56, 79, 109, 111, 157, 75, 36, 16, 26, 196, 222, 219, 182, 1, 206, 33, 189, 199, 248, 155, 47, 22, 136, 92, 2, 78, 212, 2, 141, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5dcb6b0ee821cb3d86c8b9433e3051b3, }, ), received_events: EventHandle { count: 939778446341158711, key: EventKey( [ 232, 142, 0, 44, 93, 26, 203, 247, 235, 148, 196, 31, 227, 211, 236, 157, 205, 54, 23, 146, 199, 184, 108, 5, ], ), }, sent_events: EventHandle { count: 2070524080160893253, key: EventKey( [ 186, 102, 76, 187, 199, 123, 152, 27, 155, 127, 200, 80, 239, 164, 73, 161, 8, 183, 91, 249, 227, 82, 97, 28, ], ), }, sequence_number: 2259872517714966932, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(36b2688efa4891eb548723992e0a4248b122c43fde856dcb4951534307140e84): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970133d05b0578710cde36b7c3a76b30fb3e4a4a76700018c20fb3dd3e39606cb6c7c5a10659c51afed85a9e1fd8d0e1855d0506f27e7d240e251c12bd69b10266f412502fb6c4d3bd61ce4e9683f042418aff82f112142d5d13e1d55778d77e3c1bdc2519a9cfb971d474d703501c5ebec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bf6eadaa43428d04 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 5, 176, 87, 135, 16, 205, 227, 107, 124, 58, 118, 179, 15, 179, 228, 164, 167, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c20fb3dd3e39606cb6c7c5a10659c51, }, ), received_events: EventHandle { count: 1048773433900789167, key: EventKey( [ 85, 208, 80, 111, 39, 231, 210, 64, 226, 81, 193, 43, 214, 155, 16, 38, 111, 65, 37, 2, 251, 108, 77, 59, ], ), }, sent_events: EventHandle { count: 2595269005105437910, key: EventKey( [ 175, 248, 47, 17, 33, 66, 213, 209, 62, 29, 85, 119, 141, 119, 227, 193, 189, 194, 81, 154, 156, 251, 151, 29, ], ), }, sequence_number: 17071955421460188487, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(383c45ab0b219cb7718504232ccfd1e7bc8ff05fd84fa75af9dca5c08b81d997): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f7b3f6f491cddd8b3556cece08f87387cf93be0b3efdbb27463f1a4576d41e05490bbf697fed51aeaacfc63737eb8720000e43184ffcc056f1d1839108139a8a7b107b44587edc9f2f5008f89dfe2302c480bc64a816ea4ea8c6b18ecc7d8601d301fc1d11aebc69b7a59aab094ff9d230584566128b1b14834f11b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858f893410b18bbc2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 63, 111, 73, 28, 221, 216, 179, 85, 108, 236, 224, 143, 135, 56, 124, 249, 59, 224, 179, 239, 219, 178, 116, 99, 241, 164, 87, 109, 65, 224, 84, 144, 187, 246, 151, 254, 213, 26, 234, 172, 252, 99, 115, 126, 184, 114, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2120920327533113828, key: EventKey( [ 57, 16, 129, 57, 168, 167, 177, 7, 180, 69, 135, 237, 201, 242, 245, 0, 143, 137, 223, 226, 48, 44, 72, 11, ], ), }, sent_events: EventHandle { count: 7749827050747284166, key: EventKey( [ 236, 199, 216, 96, 29, 48, 31, 193, 209, 26, 235, 198, 155, 122, 89, 170, 176, 148, 255, 157, 35, 5, 132, 86, ], ), }, sequence_number: 2013447995234789473, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(388bc517eb2b5cabd4d0c99b888ffdb9fa4301fa2525de33e9c1e909b2a8bcfd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131f191d374119d17f21424c88ba1c4414b9a8372ee629b6e7816713f379ca6218b9e5e96485fbeb61ede631540242a95d88c0001b534bbf0be7f7b271073408f91ce269eb94b60e881e62b65188ca7bff1f379b6a98c994da7fd160cbb3baddd8421f07d061fee521cf605be4318c1b049e536418b1d6f4017b08a8bdbc3b18d442274782780fe8ab73c77cda00d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c92a0f02433bbec8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 145, 211, 116, 17, 157, 23, 242, 20, 36, 200, 139, 161, 196, 65, 75, 154, 131, 114, 238, 98, 155, 110, 120, 22, 113, 63, 55, 156, 166, 33, 139, 158, 94, 150, 72, 95, 190, 182, 30, 222, 99, 21, 64, 36, 42, 149, 216, 140, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b534bbf0be7f7b271073408f91ce269e, }, ), received_events: EventHandle { count: 7290173867453074361, key: EventKey( [ 140, 167, 191, 241, 243, 121, 182, 169, 140, 153, 77, 167, 253, 22, 12, 187, 59, 173, 221, 132, 33, 240, 125, 6, ], ), }, sent_events: EventHandle { count: 4881345600711487007, key: EventKey( [ 193, 176, 73, 229, 54, 65, 139, 29, 111, 64, 23, 176, 138, 139, 219, 195, 177, 141, 68, 34, 116, 120, 39, 128, ], ), }, sequence_number: 982010630770232062, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(389a9f28b1d288a501367699416c15d401f11077ccc684a5cf5eeb19f6b8aad1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a013d2c2020a98cd09e47ddf2f53b7e1a3d0c37ff08fea6cf63ff679c3b6186d0a1b2092d3952230f64189e66b54e8d16d71eedbee49f71646f50048356bd4600005c16faec57a2914418c595b0347f2c4b653109d4691f79fd63859c8f79f8c4007850dfe5dca9cdb04f186dfa31aa2d6925ee34acafddf9d658caeb54ad1e045d69c815b3dec3aebf1d512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b2530df2f473041b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 44, 32, 32, 169, 140, 208, 158, 71, 221, 242, 245, 59, 126, 26, 61, 12, 55, 255, 8, 254, 166, 207, 99, 255, 103, 156, 59, 97, 134, 208, 161, 178, 9, 45, 57, 82, 35, 15, 100, 24, 158, 102, 181, 78, 141, 22, 215, 30, 237, 190, 228, 159, 113, 100, 111, 80, 4, 131, 86, 189, 70, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4940908764723811932, key: EventKey( [ 197, 149, 176, 52, 127, 44, 75, 101, 49, 9, 212, 105, 31, 121, 253, 99, 133, 156, 143, 121, 248, 196, 0, 120, ], ), }, sent_events: EventHandle { count: 5742315654336601936, key: EventKey( [ 109, 250, 49, 170, 45, 105, 37, 238, 52, 172, 175, 221, 249, 214, 88, 202, 235, 84, 173, 30, 4, 93, 105, 200, ], ), }, sequence_number: 5845038648728138517, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(38d18f241897c23eec2c9b305575401f333f51a075a57835ecf065bdbd566ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30156e527c982379b6c65cd61d555f91a03898f8b9d92d04fa813b985c46840b811ed31e5e9dfa40ec63fbd3a3a7a957a0c01bbbebf71385862b1bd99b7fbce960a3ceaaf4a6ae04a2f46b17b036cea7bf82361ed730211f9010437181d8e77d27772ff7371588a73d100d8fc51f48fb49a471889f5253a3acaa232fd7766ae46103271bb9c5c04522c986d13ef71b52e1d17151899b169acf00cc9d17af18d7ef9fe0c902ce7d6e217ab9d8c62dbde00ae20e3d32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d9ab649a98b1ed2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 229, 39, 201, 130, 55, 155, 108, 101, 205, 97, 213, 85, 249, 26, 3, 137, 143, 139, 157, 146, 208, 79, 168, 19, 185, 133, 196, 104, 64, 184, 17, 237, 49, 229, 233, 223, 164, 14, 198, 63, 189, 58, 58, 122, 149, 122, 12, 1, 187, 190, 191, 113, 56, 88, 98, 177, 189, 153, 183, 251, 206, 150, 10, 60, 234, 175, 74, 106, 224, 74, 47, 70, 177, 123, 3, 108, 234, 123, 248, 35, 97, 237, 115, 2, 17, 249, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0437181d8e77d27772ff7371588a73d1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5159634853478661336, key: EventKey( [ 137, 245, 37, 58, 58, 202, 162, 50, 253, 119, 102, 174, 70, 16, 50, 113, 187, 156, 92, 4, 82, 44, 152, 109, ], ), }, sent_events: EventHandle { count: 1519715485710675731, key: EventKey( [ 153, 177, 105, 172, 240, 12, 201, 209, 122, 241, 141, 126, 249, 254, 12, 144, 44, 231, 214, 226, 23, 171, 157, 140, ], ), }, sequence_number: 15268083093427116898, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(38e13cbd93e0868dd97e25e264210b3c56ee7378446853448f4901b220d8d4fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417e04cd89a7aafaebf3aefc315a0ce99375ea91865d4fb96014cd571632d2d81ccccbab1d69518c9b2003c8458866b6fd81a18d17acb8df01ffe2e71ad08469c2594e2238a5eff771d57cb63970b4d5e861c761834c033cecfef328c021c2f4d99043db34a243906544c946a7257abbd1325506c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c9445edb16c4d14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 76, 216, 154, 122, 175, 174, 191, 58, 239, 195, 21, 160, 206, 153, 55, 94, 169, 24, 101, 212, 251, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4cd571632d2d81ccccbab1d69518c9b2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1934418547561759804, key: EventKey( [ 209, 122, 203, 141, 240, 31, 254, 46, 113, 173, 8, 70, 156, 37, 148, 226, 35, 138, 94, 255, 119, 29, 87, 203, ], ), }, sent_events: EventHandle { count: 8510825135401047907, key: EventKey( [ 52, 192, 51, 206, 207, 239, 50, 140, 2, 28, 47, 77, 153, 4, 61, 179, 74, 36, 57, 6, 84, 76, 148, 106, ], ), }, sequence_number: 7804778920949798770, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(39273324e7de5118cc8977ae6b3ffe7445dd5a5d38c8c5ff43f8194964fd9d42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab013e168baaa5f0c074c3ed7af8c1fd6d4eb5e8bcb4e1b49305ab58a87b275ffb5369766d3292952d2810db5e07c51721c578ab7ab174c26284f0cd516e8f39fb01d67c3dbc985a2f4d724d8b474b8a7e6f016f84f921c2eb53183fbf56d37b13ad126a04247124b6633a18a108ac7db99f1331229121918064e0016e5cc1d650f82a5645b81245cbe7c077184ce23583049fc3edc3128d266fbce3e78801d0a928b1febfc1f2d5c5137d605c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859d21e449dcc03b7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 139, 170, 165, 240, 192, 116, 195, 237, 122, 248, 193, 253, 109, 78, 181, 232, 188, 180, 225, 180, 147, 5, 171, 88, 168, 123, 39, 95, 251, 83, 105, 118, 109, 50, 146, 149, 45, 40, 16, 219, 94, 7, 197, 23, 33, 197, 120, 171, 122, 177, 116, 194, 98, 132, 240, 205, 81, 110, 143, 57, 251, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d67c3dbc985a2f4d724d8b474b8a7e6f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f84f921c2eb53183fbf56d37b13ad12, }, ), received_events: EventHandle { count: 4207406744527438954, key: EventKey( [ 161, 8, 172, 125, 185, 159, 19, 49, 34, 145, 33, 145, 128, 100, 224, 1, 110, 92, 193, 214, 80, 248, 42, 86, ], ), }, sent_events: EventHandle { count: 8629151746265102405, key: EventKey( [ 76, 226, 53, 131, 4, 159, 195, 237, 195, 18, 141, 38, 111, 188, 227, 231, 136, 1, 208, 169, 40, 177, 254, 191, ], ), }, sequence_number: 6656457773130576577, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(39779d047f834a3a64f287b63a3cb16ffb0b4c05be15048d8108b241212ce714): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f01321f6e454e3319a5b157d4688e30934bbe4e3f16a168122beb1e97cc0c750f03749870acd0f76434c9ce0cbdcb8feedead3bb272109b16668fdb55664565013e5142e56ef632607ea6ae2bb27b801800798b06bf911abc53182afb0e90b4aa3b04168b571f413fc0cb455eb9b8748e2e4e61fba6548d8ee56e18e2b8ec39ee8b6be19dbc413c4b99431b62dadbbdc9cdb6eb8e405a384e158a9c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e70f16e8a8176a60 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 50, 31, 110, 69, 78, 51, 25, 165, 177, 87, 212, 104, 142, 48, 147, 75, 190, 78, 63, 22, 161, 104, 18, 43, 235, 30, 151, 204, 12, 117, 15, 3, 116, 152, 112, 172, 208, 247, 100, 52, 201, 206, 12, 189, 203, 143, 238, 222, 173, 59, 178, 114, 16, 155, 22, 102, 143, 219, 85, 102, 69, 101, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3e5142e56ef632607ea6ae2bb27b8018, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6033726814047079289, key: EventKey( [ 42, 251, 14, 144, 180, 170, 59, 4, 22, 139, 87, 31, 65, 63, 192, 203, 69, 94, 185, 184, 116, 142, 46, 78, ], ), }, sent_events: EventHandle { count: 7990949851500575585, key: EventKey( [ 226, 184, 236, 57, 238, 139, 107, 225, 157, 188, 65, 60, 75, 153, 67, 27, 98, 218, 219, 189, 201, 205, 182, 235, ], ), }, sequence_number: 11279851642399899790, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3bd36a9ca13034db9f63d16b6778a7610ea6e245cdfed388f49d451b9223a42f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840137d46ca7672b638dc380745fcd4d140d7372c7e747f55223aa9e905239ada43f03d519b70768f5f85378a14cbab310e091bfa2365a2e96c800004b3655f31c6542401899aff47a7e1734d757f7ee666676113b19dadb0db931531e8f015a960a917b4e1840fbd81fc22cade751cdf4780df02ed02ee75997820734bbe1f6592a0623bcc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70886af91447e4eb4c3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 108, 167, 103, 43, 99, 141, 195, 128, 116, 95, 205, 77, 20, 13, 115, 114, 199, 231, 71, 245, 82, 35, 170, 158, 144, 82, 57, 173, 164, 63, 3, 213, 25, 183, 7, 104, 245, 248, 83, 120, 161, 76, 186, 179, 16, 224, 145, 191, 162, 54, 90, 46, 150, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4630374541906228811, key: EventKey( [ 153, 175, 244, 122, 126, 23, 52, 215, 87, 247, 238, 102, 102, 118, 17, 59, 25, 218, 219, 13, 185, 49, 83, 30, ], ), }, sent_events: EventHandle { count: 5655273231751971215, key: EventKey( [ 64, 251, 216, 31, 194, 44, 173, 231, 81, 205, 244, 120, 13, 240, 46, 208, 46, 231, 89, 151, 130, 7, 52, 187, ], ), }, sequence_number: 14392417018556577505, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c0fb48ff43b48f255fdaee46c2d0b285284f78377477f00476bc07a2cc05c43): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20155ea015e379f176430de580f6b3bcaa7e4a3fb6293491dd829496a87286e209871117117297dc1b3ecae78c50eb25400283a9063750a1f4eb97a620f4b70c4018689155ecee76e396e23e1f233586b87363b67fb5202000060f51822d1dab068189b24100c3e11825c94555495313750dcedf9cdff58a95177267849f0a51f3a1518e124c32db0f5a8af4cf1ed573d66ab1e009f392468a8ba28c10901bf2a9d8a012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847d9d725bcb61eb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 234, 1, 94, 55, 159, 23, 100, 48, 222, 88, 15, 107, 59, 202, 167, 228, 163, 251, 98, 147, 73, 29, 216, 41, 73, 106, 135, 40, 110, 32, 152, 113, 17, 113, 23, 41, 125, 193, 179, 236, 174, 120, 197, 14, 178, 84, 0, 40, 58, 144, 99, 117, 10, 31, 78, 185, 122, 98, 15, 75, 112, 196, 1, 134, 137, 21, 94, 206, 231, 110, 57, 110, 35, 225, 242, 51, 88, 107, 135, 54, 59, 103, 251, 82, 2, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7543769967600661856, key: EventKey( [ 155, 36, 16, 12, 62, 17, 130, 92, 148, 85, 84, 149, 49, 55, 80, 220, 237, 249, 205, 255, 88, 169, 81, 119, ], ), }, sent_events: EventHandle { count: 1529569821007116326, key: EventKey( [ 225, 36, 195, 45, 176, 245, 168, 175, 76, 241, 237, 87, 61, 102, 171, 30, 0, 159, 57, 36, 104, 168, 186, 40, ], ), }, sequence_number: 111073947742702017, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c4ca9ed62106df5b82f8ff9323cf31cec2ea845e8920bc23fe7c5a1e756ae1a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99301469df5c205e2082de49d5baa5220973e5b509802045606e63065e9b2d3471d4f8ad623478673a1ef73d336bdb1cfcc781a94e4d90b6f34f689017323505857b9ab5fcc331f243d000073b7f8f933f9f054189699521e1761f2b86ce7eebe2ec5d540c9b17a8ec1038c4482013bedf1d6cd1a188d6ebfa45df6283493443e85edcae80dae133a192d9e33c7411aded5b759c13a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ab2648b41b4bffc5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 245, 194, 5, 226, 8, 45, 228, 157, 91, 170, 82, 32, 151, 62, 91, 80, 152, 2, 4, 86, 6, 230, 48, 101, 233, 178, 211, 71, 29, 79, 138, 214, 35, 71, 134, 115, 161, 239, 115, 211, 54, 189, 177, 207, 204, 120, 26, 148, 228, 217, 11, 111, 52, 246, 137, 1, 115, 35, 80, 88, 87, 185, 171, 95, 204, 51, 31, 36, 61, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6120665895228979059, key: EventKey( [ 150, 153, 82, 30, 23, 97, 242, 184, 108, 231, 238, 190, 46, 197, 213, 64, 201, 177, 122, 142, 193, 3, 140, 68, ], ), }, sent_events: EventHandle { count: 1931436149767340418, key: EventKey( [ 141, 110, 191, 164, 93, 246, 40, 52, 147, 68, 62, 133, 237, 202, 232, 13, 174, 19, 58, 25, 45, 158, 51, 199, ], ), }, sequence_number: 4233763770806966849, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ca2945874c5d7f2b33e6ed5b4e6a138faabac61580b8a3134b33febd97405be): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0fb1b61fb7cd1f741acee1d2afa02ad3000140fa7ae772eeb0d61acc62cbbabed899efc9fc6e5a84d14718e4ab0661d2d5f1b8f98aea054f72a2cd3d59c1c4569e77fbf84899973a605f5d18da7d31f743b34c1f18344476e30a7c314be17acf4e5824c9190b05674385f2be2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084e4f4c83a13fb709 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 182, 31, 183, 205, 31, 116, 26, 206, 225, 210, 175, 160, 42, 211, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 40fa7ae772eeb0d61acc62cbbabed899, }, ), received_events: EventHandle { count: 5175062970769394159, key: EventKey( [ 228, 171, 6, 97, 210, 213, 241, 184, 249, 138, 234, 5, 79, 114, 162, 205, 61, 89, 193, 196, 86, 158, 119, 251, ], ), }, sent_events: EventHandle { count: 6728202173082585336, key: EventKey( [ 218, 125, 49, 247, 67, 179, 76, 31, 24, 52, 68, 118, 227, 10, 124, 49, 75, 225, 122, 207, 78, 88, 36, 201, ], ), }, sequence_number: 13759206336107973401, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3cdd9f1bc66a12cecd1a058f364c15c9324a59f3e4cd9e5d9d6e4d81dc2efa69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d309dee408e4b960993a31d85877bbc1834e23097ff7696c8dcb8891361ec238f6365fe0460ce1bcbee5ffac1aaec5c3b5a0000e7b97af6a344187918da9fc61fb63445db3e6df9767fa8348e12c8b11872c12025521918115fcafc2018a52e02497d3a356cd67ea5b85ede43aa32b8c84391b1742438d3d8942cb99b242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1f0a7436915c4f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 238, 64, 142, 75, 150, 9, 147, 163, 29, 133, 135, 123, 188, 24, 52, 226, 48, 151, 255, 118, 150, 200, 220, 184, 137, 19, 97, 236, 35, 143, 99, 101, 254, 4, 96, 206, 27, 203, 238, 95, 250, 193, 170, 236, 92, 59, 90, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8725799749035932135, key: EventKey( [ 218, 159, 198, 31, 182, 52, 69, 219, 62, 109, 249, 118, 127, 168, 52, 142, 18, 200, 177, 24, 114, 193, 32, 37, ], ), }, sent_events: EventHandle { count: 2376997213002275154, key: EventKey( [ 165, 46, 2, 73, 125, 58, 53, 108, 214, 126, 165, 184, 94, 222, 67, 170, 50, 184, 200, 67, 145, 177, 116, 36, ], ), }, sequence_number: 2637905607882494776, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ceb5d8a1979bc8d6e3dbdb856de099c04f7008ab8b90c65966761c717952dd1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950031adc9f0000283576f5b1422a06189acae81c328b5593e720a013fd83fafb4c8f6b9f7c13c555842c68c2232baf0418f8d2e1d9322bbae2d1ea734c58d10d1c7235a646adc6a323bb83e993755b7e9e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708397db5549c6023ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 220, 159, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 444240845344224552, key: EventKey( [ 154, 202, 232, 28, 50, 139, 85, 147, 231, 32, 160, 19, 253, 131, 250, 251, 76, 143, 107, 159, 124, 19, 197, 85, ], ), }, sent_events: EventHandle { count: 337535929661533316, key: EventKey( [ 248, 210, 225, 217, 50, 43, 186, 226, 209, 234, 115, 76, 88, 209, 13, 28, 114, 53, 166, 70, 173, 198, 163, 35, ], ), }, sequence_number: 11420666265609012155, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ef34e3511b2a165ac3923c95ecfddeb5e25b2ed52fa5112f4a726df00906396): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9630665a9c042b8cb010ea74e1fd75e35bdff56194c6045ee140048b619f3b09775401897489e1625fc36df984292490e2819e3d411bd09372c401f779f6e323ed2333718859af119234164827715a18e7148af1795ec99f14257b8b9cd8105ed2cdaea882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812982c3d16ecdbea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 169, 192, 66, 184, 203, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0ea74e1fd75e35bdff56194c6045ee14, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4644785376951121480, key: EventKey( [ 151, 72, 158, 22, 37, 252, 54, 223, 152, 66, 146, 73, 14, 40, 25, 227, 212, 17, 189, 9, 55, 44, 64, 31, ], ), }, sent_events: EventHandle { count: 3977754060474195831, key: EventKey( [ 133, 154, 241, 25, 35, 65, 100, 130, 119, 21, 161, 142, 113, 72, 175, 23, 149, 236, 153, 241, 66, 87, 184, 185, ], ), }, sequence_number: 9865937820198470093, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3fa1acd2f17fc8afe3838cf02ff751d14c63ab55d41836effc199b3505efe4e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101246c2a7f6531e7c9fe08c8f716b3e3776f2681a453c011f153f670c93736ed251a90b48d240001e3af68c9cfb83e436d77bfd0afbc16ed30859c6bcd989847183e08a10a7d2c0c7dca5957606ffc9d666a035e5af768710ba9bf9df5a2924f151891f7dde759f00006f28263167ee40d7d02899510333b69c54dcbc1bda67fa7552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822ac820d1642508e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 42, 127, 101, 49, 231, 201, 254, 8, 200, 247, 22, 179, 227, 119, 111, 38, 129, 164, 83, 192, 17, 241, 83, 246, 112, 201, 55, 54, 237, 37, 26, 144, 180, 141, 36, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e3af68c9cfb83e436d77bfd0afbc16ed, }, ), received_events: EventHandle { count: 5159041381194040624, key: EventKey( [ 62, 8, 161, 10, 125, 44, 12, 125, 202, 89, 87, 96, 111, 252, 157, 102, 106, 3, 94, 90, 247, 104, 113, 11, ], ), }, sent_events: EventHandle { count: 1535607226559741865, key: EventKey( [ 145, 247, 221, 231, 89, 240, 0, 6, 242, 130, 99, 22, 126, 228, 13, 125, 2, 137, 149, 16, 51, 59, 105, 197, ], ), }, sequence_number: 6172042168459447117, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(416b35e257bf6f0c8fa52aa74cfc8c20ef790e81749a75b8de4997f1bcb2fcca): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d200d1e41e9e3b3fe1997beab79544e7a2ecfa9ba453e81979aba0438c7e1160bb700016a165c95d17975666fb60d0c372df5f26b478efb734ff45f1897522c856a1328613648021298f7016639a820d940b6be26d09ac24e14890b3a189d1452930d170e653d665665336242fae5bab802aec14a7db6b644e13490426f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d5f11ab3f812e346 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 30, 65, 233, 227, 179, 254, 25, 151, 190, 171, 121, 84, 78, 122, 46, 207, 169, 186, 69, 62, 129, 151, 154, 186, 4, 56, 199, 225, 22, 11, 183, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6a165c95d17975666fb60d0c372df5f2, }, ), received_events: EventHandle { count: 6914238687480792939, key: EventKey( [ 151, 82, 44, 133, 106, 19, 40, 97, 54, 72, 2, 18, 152, 247, 1, 102, 57, 168, 32, 217, 64, 182, 190, 38, ], ), }, sent_events: EventHandle { count: 4182587399257365200, key: EventKey( [ 157, 20, 82, 147, 13, 23, 14, 101, 61, 102, 86, 101, 51, 98, 66, 250, 229, 186, 184, 2, 174, 193, 74, 125, ], ), }, sequence_number: 8017128843464980150, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(41b9979f7069eb621ce310e1f3d9e5042706271836e306156f7b90c3af37aa92): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01601f60682e23d4c29cdf384f11ba2df692243dcab3bdd915b98fad63d13166d6a7de66990a158428d46c8ef2b55b7b47121382f8cb894ba04e2d341ba7cdf25be56463285d9d71191a0729977a7aa9b2f1e5783041c194824a8f8d43032dbafd260000d8e6c7172b117b4d18df7a11a33e974694d63292024dc293fae27421864cef00433f44d07a1fdcf1231852c4994cc6d928519005238ea37a81e40b07e54d4805c366e06b9c69af17c3d02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708724ff9237abbafa3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 96, 104, 46, 35, 212, 194, 156, 223, 56, 79, 17, 186, 45, 246, 146, 36, 61, 202, 179, 189, 217, 21, 185, 143, 173, 99, 209, 49, 102, 214, 167, 222, 102, 153, 10, 21, 132, 40, 212, 108, 142, 242, 181, 91, 123, 71, 18, 19, 130, 248, 203, 137, 75, 160, 78, 45, 52, 27, 167, 205, 242, 91, 229, 100, 99, 40, 93, 157, 113, 25, 26, 7, 41, 151, 122, 122, 169, 178, 241, 229, 120, 48, 65, 193, 148, 130, 74, 143, 141, 67, 3, 45, 186, 253, 38, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5583075039836104408, key: EventKey( [ 223, 122, 17, 163, 62, 151, 70, 148, 214, 50, 146, 2, 77, 194, 147, 250, 226, 116, 33, 134, 76, 239, 0, 67, ], ), }, sent_events: EventHandle { count: 2590093288477312063, key: EventKey( [ 82, 196, 153, 76, 198, 217, 40, 81, 144, 5, 35, 142, 163, 122, 129, 228, 11, 7, 229, 77, 72, 5, 195, 102, ], ), }, sequence_number: 15042893222506163168, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4212499fb8c454aeba77baecbf950e89fa2b076da8c5285587606f00b052b2d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c50158c8e311837153d5f46cf5c520aa0739b311c189fdc98b4e7d5beb6ddcd6842a7c85e7d80416b79b12e47305ec6a975f793eaa6b8107aee14d73da0c3e3ecd7e4d140624b1e869a7b84208ff8bffb357374c95600a7b52af0c01489ff1a9b87d989585886f5b8b0a761c016c64b6f35dd8be0e553b85ccee8c4c341a61711d4bc1307a181527c5fe5d7dab7b2fe82c119721a4a2479218fe7b4fa5c8823492271ec83b02187f64fb2d90162d2a260f410b32a02ef9961c38bc0f082022fbac3c6c2ab2573a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70872c4e87cb2e50d45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 200, 227, 17, 131, 113, 83, 213, 244, 108, 245, 197, 32, 170, 7, 57, 179, 17, 193, 137, 253, 201, 139, 78, 125, 91, 235, 109, 220, 214, 132, 42, 124, 133, 231, 216, 4, 22, 183, 155, 18, 228, 115, 5, 236, 106, 151, 95, 121, 62, 170, 107, 129, 7, 174, 225, 77, 115, 218, 12, 62, 62, 205, 126, 77, 20, 6, 36, 177, 232, 105, 167, 184, 66, 8, 255, 139, 255, 179, 87, 55, 76, 149, 96, 10, 123, 82, 175, 12, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 489ff1a9b87d989585886f5b8b0a761c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6c64b6f35dd8be0e553b85ccee8c4c34, }, ), received_events: EventHandle { count: 8804749799869997338, key: EventKey( [ 21, 39, 197, 254, 93, 125, 171, 123, 47, 232, 44, 17, 151, 33, 164, 162, 71, 146, 24, 254, 123, 79, 165, 200, ], ), }, sent_events: EventHandle { count: 160942243540251778, key: EventKey( [ 127, 100, 251, 45, 144, 22, 45, 42, 38, 15, 65, 11, 50, 160, 46, 249, 150, 28, 56, 188, 15, 8, 32, 34, ], ), }, sequence_number: 4204024672447933691, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(425839c5dfcc6b89ad7d150b74a6714de7c34e30d1da61fc4389bb823ef18c99): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f1256cf1d3bad5df4379040702b999b9f86090cd70d6994851720dac4857ec04f8d7e16f20d3b79cbc73893121745d00000673ed3b734e6be0718e257f89a37bb607501f139c20266c2f3e0bb22ce860e70430ceed6da3e894a4f186af0ecac020ded5062f27dc4178588ec5391d734b3cb1674f17a50c3db6974922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f36b5ac3b8abca1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 18, 86, 207, 29, 59, 173, 93, 244, 55, 144, 64, 112, 43, 153, 155, 159, 134, 9, 12, 215, 13, 105, 148, 133, 23, 32, 218, 196, 133, 126, 192, 79, 141, 126, 22, 242, 13, 59, 121, 203, 199, 56, 147, 18, 23, 69, 208, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 558136517937282663, key: EventKey( [ 226, 87, 248, 154, 55, 187, 96, 117, 1, 241, 57, 194, 2, 102, 194, 243, 224, 187, 34, 206, 134, 14, 112, 67, ], ), }, sent_events: EventHandle { count: 5713529980325391884, key: EventKey( [ 106, 240, 236, 172, 2, 13, 237, 80, 98, 242, 125, 196, 23, 133, 136, 236, 83, 145, 215, 52, 179, 203, 22, 116, ], ), }, sequence_number: 10553176219431500529, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42dfa857b84432610ac1b6e9abaec09219f185caa9f568ea19d0caf390c20e0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c952052f74da63a90000bc6ba0cb18c5e32518a3889dded719e4295743f7f752f71d8dcb709c6478fd08eb43131fa4d0e30f4718755e19fbe228be994e149617c11def1882854524dcd320c0f5b4f31e08708a5d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d494b3e16514797 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 116, 218, 99, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2730242509402827708, key: EventKey( [ 163, 136, 157, 222, 215, 25, 228, 41, 87, 67, 247, 247, 82, 247, 29, 141, 203, 112, 156, 100, 120, 253, 8, 235, ], ), }, sent_events: EventHandle { count: 5120561786589745987, key: EventKey( [ 117, 94, 25, 251, 226, 40, 190, 153, 78, 20, 150, 23, 193, 29, 239, 24, 130, 133, 69, 36, 220, 211, 32, 192, ], ), }, sequence_number: 6740322972494705909, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42fed243612262732eaa929a210108f33403f85d93ec531318f3abc130ee72b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01328e913c6df04e2687b4663c1fceb84271c51527b77ccc32caf78431223f6b48be1056370a5d1aac38988aadfa55106dc248ce01220ca3ced6b0fb4756c88522891d12270129b4f2b68e875eb009f7038e7ac26d531aa39969ef9caa2f18bbca2c720f0913270d6be325872cf59f7ac90207afd642c4f7d8fbeebf76215218c9cd9d7906132fb1cb3db9167f56c82867d39e065d22bc31a773985192ad88872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081bfc7bf50b142258 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 145, 60, 109, 240, 78, 38, 135, 180, 102, 60, 31, 206, 184, 66, 113, 197, 21, 39, 183, 124, 204, 50, 202, 247, 132, 49, 34, 63, 107, 72, 190, 16, 86, 55, 10, 93, 26, 172, 56, 152, 138, 173, 250, 85, 16, 109, 194, 72, 206, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 220ca3ced6b0fb4756c88522891d1227, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 29b4f2b68e875eb009f7038e7ac26d53, }, ), received_events: EventHandle { count: 3434730217906217754, key: EventKey( [ 187, 202, 44, 114, 15, 9, 19, 39, 13, 107, 227, 37, 135, 44, 245, 159, 122, 201, 2, 7, 175, 214, 66, 196, ], ), }, sent_events: EventHandle { count: 5918141952061855991, key: EventKey( [ 201, 205, 157, 121, 6, 19, 47, 177, 203, 61, 185, 22, 127, 86, 200, 40, 103, 211, 158, 6, 93, 34, 188, 49, ], ), }, sequence_number: 9766246635898696615, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(434dab447dde9399667adc22a2c9598b81f2c98cafb8d6102fe383c65048172c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd016094bc16d85e61e358a9c10526df4075c8190f669d2d10c22b3638da8c9409b4e09ea7741f137f049f930e91ba0a72f7175a0a52571778831b3478119aa49b8fe0b328ecfc674cc17dccc4efd44ddabe346d2bcb275caf2ba34d5664c8dbe8e029012f8d6101f6cbb3434c4ea6da7983e0a001f206135435bcd4bf918b82dbf7748f3ca3a3c73680ff532f187be45a49950c6b617e03983a07fec2a160504f7179994453d78b68823b3ee21e18e081e5b7d9ed12026f10db5c57b642ac958cc7dcfacb7006b1224fe2730abb832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bf4f28b5a6e4f139 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 188, 22, 216, 94, 97, 227, 88, 169, 193, 5, 38, 223, 64, 117, 200, 25, 15, 102, 157, 45, 16, 194, 43, 54, 56, 218, 140, 148, 9, 180, 224, 158, 167, 116, 31, 19, 127, 4, 159, 147, 14, 145, 186, 10, 114, 247, 23, 90, 10, 82, 87, 23, 120, 131, 27, 52, 120, 17, 154, 164, 155, 143, 224, 179, 40, 236, 252, 103, 76, 193, 125, 204, 196, 239, 212, 77, 218, 190, 52, 109, 43, 203, 39, 92, 175, 43, 163, 77, 86, 100, 200, 219, 232, 224, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2f8d6101f6cbb3434c4ea6da7983e0a0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f206135435bcd4bf918b82dbf7748f3c, }, ), received_events: EventHandle { count: 3410350268989547427, key: EventKey( [ 123, 228, 90, 73, 149, 12, 107, 97, 126, 3, 152, 58, 7, 254, 194, 161, 96, 80, 79, 113, 121, 153, 68, 83, ], ), }, sent_events: EventHandle { count: 2225409591186328535, key: EventKey( [ 224, 129, 229, 183, 217, 237, 18, 2, 111, 16, 219, 92, 87, 182, 66, 172, 149, 140, 199, 220, 250, 203, 112, 6, ], ), }, sequence_number: 9492192132447806129, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43a20882020ec53b23fe3e460c98c8a8c44a9f87ad9df8cac3ff1684927d3ec0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0eb8b4ed77d176a7f448bfa673370f010269334797c5230ffdd39ce14ec2d25c003457672d860081711826f89207f13423f21f6182a0ba45a2d1d3c8cd3c73ce2ca55bdc40616ade43491889a71263e78ad04bfdc237aac3e7ce92a4e6b45fa3e7ca70121b3e8276ca1f742101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708448c4c5117798d12 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 180, 237, 119, 209, 118, 167, 244, 72, 191, 166, 115, 55, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0269334797c5230ffdd39ce14ec2d25c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8178818974568896308, key: EventKey( [ 38, 248, 146, 7, 241, 52, 35, 242, 31, 97, 130, 160, 186, 69, 162, 209, 211, 200, 205, 60, 115, 206, 44, 165, ], ), }, sent_events: EventHandle { count: 5279307736687893595, key: EventKey( [ 137, 167, 18, 99, 231, 138, 208, 75, 253, 194, 55, 170, 195, 231, 206, 146, 164, 230, 180, 95, 163, 231, 202, 112, ], ), }, sequence_number: 8367629243017730834, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43c3138fca822f266aa246ab55d9d3a1e1f73681fc1fa26226a8bb6b5d4e3ee6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f020636000064d1f5eab55fbb1918ba039c177862e3551c4f30e854f735a3b23e298a9295cc1d87745178ef15ea75186dabcacec64e69b364840722814159dafb074b39445b9f7f56192ba453f2747e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089293b92629c17c2c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 54, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1854180906528788836, key: EventKey( [ 186, 3, 156, 23, 120, 98, 227, 85, 28, 79, 48, 232, 84, 247, 53, 163, 178, 62, 41, 138, 146, 149, 204, 29, ], ), }, sent_events: EventHandle { count: 8496627765247833223, key: EventKey( [ 109, 171, 202, 206, 198, 78, 105, 179, 100, 132, 7, 34, 129, 65, 89, 218, 251, 7, 75, 57, 68, 91, 159, 127, ], ), }, sequence_number: 9112174387127851350, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43f751c839261175ce4e2158d471b8302dee0ae798f1e91a8fe1cc2e80206e68): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306fc98fbabe0e300011e6885ea0b06eeaffc2b21e6622c34fd0cd321d831705a4c18a482d3e6dc1e5fa88839529be0cdff6d894733460d9f3c979c1540eda4878e4718632dd93e131eaa3f0d0142f3a2925706bcf75aca45facc8d1ea21a09cc18fb472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c00175895d82f3b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 152, 251, 171, 224, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e6885ea0b06eeaffc2b21e6622c34fd, }, ), received_events: EventHandle { count: 5501833254168285964, key: EventKey( [ 164, 130, 211, 230, 220, 30, 95, 168, 136, 57, 82, 155, 224, 205, 255, 109, 137, 71, 51, 70, 13, 159, 60, 151, ], ), }, sent_events: EventHandle { count: 5156207765810582940, key: EventKey( [ 99, 45, 217, 62, 19, 30, 170, 63, 13, 1, 66, 243, 162, 146, 87, 6, 188, 247, 90, 202, 69, 250, 204, 141, ], ), }, sequence_number: 5186766660452393502, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(44215750ddb7ab107ea87e5991fe5470c898f2c1e49dc3c4f94b5dafda5ce14e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b10154fd1ad264329a0f307f331d86d978a9f1aa588d76144aa72107372a0a22380d13e7b3945e21c2a498ae0ebe5df89c58a45084284e122921c7c9604b43da3d03832a7f413cd22e235bc245b65671bb9414c61c167000019d25e7029057b9aa2eea30a3296e111d4eaaefb38b21ec05180e454dfd7e219ceb99c3dbc3d04ba0e995153395b2a3c855b6479b6d33deb77a18588e8216fe2107a92c5a2e0f6f85d1eda9264d67a33025933f66d7422941edf42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e91d9444e74b2d05 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 26, 210, 100, 50, 154, 15, 48, 127, 51, 29, 134, 217, 120, 169, 241, 170, 88, 141, 118, 20, 74, 167, 33, 7, 55, 42, 10, 34, 56, 13, 19, 231, 179, 148, 94, 33, 194, 164, 152, 174, 14, 190, 93, 248, 156, 88, 164, 80, 132, 40, 78, 18, 41, 33, 199, 201, 96, 75, 67, 218, 61, 3, 131, 42, 127, 65, 60, 210, 46, 35, 91, 194, 69, 182, 86, 113, 187, 148, 20, 198, 28, 22, 112, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9d25e7029057b9aa2eea30a3296e111d, }, ), received_events: EventHandle { count: 426752948596353614, key: EventKey( [ 14, 69, 77, 253, 126, 33, 156, 235, 153, 195, 219, 195, 208, 75, 160, 233, 149, 21, 51, 149, 178, 163, 200, 85, ], ), }, sent_events: EventHandle { count: 8842780705828849590, key: EventKey( [ 88, 142, 130, 22, 254, 33, 7, 169, 44, 90, 46, 15, 111, 133, 209, 237, 169, 38, 77, 103, 163, 48, 37, 147, ], ), }, sequence_number: 17648834160205719103, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4532a3f66c0970bea2224133babb2c7eab547b464c2e4f4078174490cc1ff102): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f2272e0893ae4c7c93996396ad1e8bc55d76f28c27f0ece15f6fe1509640c51078d580b01ee61355050b02ae47afbda046334f02400ce58b84e15f04a4018f63845af2e8bef8ce509be9296279a675ae53135b21bd11c24086eedaae08843181c4a93d987db03f054ae01bf6910ffb0ccbdd48df5bf5814df6164060e89786f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70837609ce4a6ceff9c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 224, 137, 58, 228, 199, 201, 57, 150, 57, 106, 209, 232, 188, 85, 215, 111, 40, 194, 127, 14, 206, 21, 246, 254, 21, 9, 100, 12, 81, 7, 141, 88, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ee61355050b02ae47afbda046334f024, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4632779141009660110, key: EventKey( [ 246, 56, 69, 175, 46, 139, 239, 140, 229, 9, 190, 146, 150, 39, 154, 103, 90, 229, 49, 53, 178, 27, 209, 28, ], ), }, sent_events: EventHandle { count: 4866386422106294308, key: EventKey( [ 28, 74, 147, 217, 135, 219, 3, 240, 84, 174, 1, 191, 105, 16, 255, 176, 204, 189, 212, 141, 245, 191, 88, 20, ], ), }, sequence_number: 8032320628745069023, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4625f8ba1ce56eafcf562f58e9a54dade488c5d892a2efe0df499ea0c9407e38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015a5c2fc4c8c1fe05eebbda65b46a6480f0107eb624b22f32134fa13027062106eae0131f91afbc9aef7aa8946eda5bf258fad06ef4c6b5e16e466c56deaca8234a000d8ab22ceab2b3b80f15cd82564fe2a02622496172b683ffd400000d7c1ebd16cf6b71183948b5f90f3aefe4c75ce783839b9811d7c297111496fa011cf467cc6961765018cf0c01eaa823b05f736fa4b783f593a4949bc1e4ec71249707656328ad3632ec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708698b1f9d7031b131 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 92, 47, 196, 200, 193, 254, 5, 238, 187, 218, 101, 180, 106, 100, 128, 240, 16, 126, 182, 36, 178, 47, 50, 19, 79, 161, 48, 39, 6, 33, 6, 234, 224, 19, 31, 145, 175, 188, 154, 239, 122, 168, 148, 110, 218, 91, 242, 88, 250, 208, 110, 244, 198, 181, 225, 110, 70, 108, 86, 222, 172, 168, 35, 74, 0, 13, 138, 178, 44, 234, 178, 179, 184, 15, 21, 205, 130, 86, 79, 226, 160, 38, 34, 73, 97, 114, 182, 131, 255, 212, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8172853645363018765, key: EventKey( [ 57, 72, 181, 249, 15, 58, 239, 228, 199, 92, 231, 131, 131, 155, 152, 17, 215, 194, 151, 17, 20, 150, 250, 1, ], ), }, sent_events: EventHandle { count: 5797928677314917404, key: EventKey( [ 207, 12, 1, 234, 168, 35, 176, 95, 115, 111, 164, 183, 131, 245, 147, 164, 148, 155, 193, 228, 236, 113, 36, 151, ], ), }, sequence_number: 17019726059121370375, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(46ef402d1769d5d8af9cb01c91e787fb0a3c10a979f3cf38544b65a86aff90f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015901cd41229bb68118314ec03a0725ecdd959499d00571b2f0992f901da5f91bacce518c71258aed951274af7c1f90e61bafd565df992efbb5b90e45b50c311f51c99f02cafa2c737be296e6eb1239f78706dcde0b94de094eb801aedde56cca29b2c3b8e49fe82c8c26eb007b0c0b0b3bfd097a18c331b6a43ccb254b374c546924e38e8dc2bda958dc95677cd411706d15ce794d18492656218a33c934d86e83bb64feb53e952896e44722f5958661820ac60d9ebd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70895c01fbfe664e1b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 205, 65, 34, 155, 182, 129, 24, 49, 78, 192, 58, 7, 37, 236, 221, 149, 148, 153, 208, 5, 113, 178, 240, 153, 47, 144, 29, 165, 249, 27, 172, 206, 81, 140, 113, 37, 138, 237, 149, 18, 116, 175, 124, 31, 144, 230, 27, 175, 213, 101, 223, 153, 46, 251, 181, 185, 14, 69, 181, 12, 49, 31, 81, 201, 159, 2, 202, 250, 44, 115, 123, 226, 150, 230, 235, 18, 57, 247, 135, 6, 220, 222, 11, 148, 222, 9, 78, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: aedde56cca29b2c3b8e49fe82c8c26eb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8793838177447775355, key: EventKey( [ 195, 49, 182, 164, 60, 203, 37, 75, 55, 76, 84, 105, 36, 227, 142, 141, 194, 189, 169, 88, 220, 149, 103, 124, ], ), }, sent_events: EventHandle { count: 5582719804528136660, key: EventKey( [ 73, 38, 86, 33, 138, 51, 201, 52, 216, 110, 131, 187, 100, 254, 181, 62, 149, 40, 150, 228, 71, 34, 245, 149, ], ), }, sequence_number: 13663373463719666054, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4861d3af2dc8d6b8fae3dcc9e8ef2823540a325610596ab17e3e3ede74740c52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b031f453f60bfa1e685e8f5dbfbd71bd768e8b23edaaac9709bc7721dfa089de663769e961130322c16915000014d11a09a591c33318f80416f6ae57404a9c786ec2de50f42183140ac9d935bb2983f600ec5c714ea812e065a6e55a98c489af7e0465bb8950118c4b87b5cd340f26584682907ba1f8022f6d016bda3820de68799fcc63f1088f72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea3df973a5590381 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 3, 31, 69, 63, 96, 191, 161, 230, 133, 232, 245, 219, 251, 215, 27, 215, 104, 232, 178, 62, 218, 170, 201, 112, 155, 199, 114, 29, 250, 8, 157, 230, 99, 118, 158, 150, 17, 48, 50, 44, 22, 145, 80, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4d11a09a591c33318f80416f6ae57404, }, ), received_events: EventHandle { count: 4760275316558448553, key: EventKey( [ 49, 64, 172, 157, 147, 91, 178, 152, 63, 96, 14, 197, 199, 20, 234, 129, 46, 6, 90, 110, 85, 169, 140, 72, ], ), }, sent_events: EventHandle { count: 114200067738498970, key: EventKey( [ 196, 184, 123, 92, 211, 64, 242, 101, 132, 104, 41, 7, 186, 31, 128, 34, 246, 208, 22, 189, 163, 130, 13, 230, ], ), }, sequence_number: 17836524190308276615, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4878bf74ac42b83c10089b6db00fbd759d53545c0e9e18db6a0f402f51611c67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae016142101b2a75502111d1749accd1adaf62d31ed174b5703b8d6af32db54f935125d9aa989110be169a4fd12a8ddb262e55806d457bb555042b71543effa77a7c4620b0b9e9336d262b3de3f29ad6d82a7a2c077df4604caec5adaaf66779ef86c4fd0000dea34198a939c601182e72961dc677b2b9a187bed896983761ebc58bc22a60a02f7de0edef2bf34770185d254f4db40b1435be641741e0d448eebfaa443ed3863ab6a7070b9d7cf660182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843c02975c6a78a9f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 16, 27, 42, 117, 80, 33, 17, 209, 116, 154, 204, 209, 173, 175, 98, 211, 30, 209, 116, 181, 112, 59, 141, 106, 243, 45, 181, 79, 147, 81, 37, 217, 170, 152, 145, 16, 190, 22, 154, 79, 209, 42, 141, 219, 38, 46, 85, 128, 109, 69, 123, 181, 85, 4, 43, 113, 84, 62, 255, 167, 122, 124, 70, 32, 176, 185, 233, 51, 109, 38, 43, 61, 227, 242, 154, 214, 216, 42, 122, 44, 7, 125, 244, 96, 76, 174, 197, 173, 170, 246, 103, 121, 239, 134, 196, 253, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 127853039993332702, key: EventKey( [ 46, 114, 150, 29, 198, 119, 178, 185, 161, 135, 190, 216, 150, 152, 55, 97, 235, 197, 139, 194, 42, 96, 160, 47, ], ), }, sent_events: EventHandle { count: 8090702625628872829, key: EventKey( [ 93, 37, 79, 77, 180, 11, 20, 53, 190, 100, 23, 65, 224, 212, 72, 238, 191, 170, 68, 62, 211, 134, 58, 182, ], ), }, sequence_number: 1756674869745616807, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(48ae0780da473380112ff19bec86e55bce27cabb90c6b67890f7132b6edd25d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce0161593100725b84a7a906a45049dc4baf6520dce0dc9a386e4df4138861dfc21f4f7e5e99912baa22117283d97940031bd51ffce517adc556cb4973b24c9ca9651274c27fab826f552f8dbff3e25f58813ae6dd4a0eb24a2c4a2ef081529eccf2cf4f0124f68f88ba3a207da58e4f6a230ec55d01f4156f47935bdfad41c4fe8b1852c2c59434d56943d2c33518ed92a572ef51a057bf448c5980f704df5e2a29422a5ffd6b885f5df0241f9139187337683cbb2651dfc06ae2c17261bd09a38c0c27c04b790a9998bde323d41cbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ffee2612d0736963 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 89, 49, 0, 114, 91, 132, 167, 169, 6, 164, 80, 73, 220, 75, 175, 101, 32, 220, 224, 220, 154, 56, 110, 77, 244, 19, 136, 97, 223, 194, 31, 79, 126, 94, 153, 145, 43, 170, 34, 17, 114, 131, 217, 121, 64, 3, 27, 213, 31, 252, 229, 23, 173, 197, 86, 203, 73, 115, 178, 76, 156, 169, 101, 18, 116, 194, 127, 171, 130, 111, 85, 47, 141, 191, 243, 226, 95, 88, 129, 58, 230, 221, 74, 14, 178, 74, 44, 74, 46, 240, 129, 82, 158, 204, 242, 207, 79, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24f68f88ba3a207da58e4f6a230ec55d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f4156f47935bdfad41c4fe8b1852c2c5, }, ), received_events: EventHandle { count: 3874171291448980628, key: EventKey( [ 237, 146, 165, 114, 239, 81, 160, 87, 191, 68, 140, 89, 128, 247, 4, 223, 94, 42, 41, 66, 42, 95, 253, 107, ], ), }, sent_events: EventHandle { count: 4148130975296872328, key: EventKey( [ 115, 55, 104, 60, 187, 38, 81, 223, 192, 106, 226, 193, 114, 97, 189, 9, 163, 140, 12, 39, 192, 75, 121, 10, ], ), }, sequence_number: 13626999823126075545, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(494b882849876126e3f4790c1fcd54eccb6d24a1b0057c67122b5179259a4833): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690ce073ed836c853c09233fed0c00012d26194e984a0f262277b7a0ae360d096f7adca3c0186033184c80b4da28791285603d366517808850603295327b33bae46d4e7e4abee8cb721837b0d800dacb271fd9ceab772241540c4a06b1565417bf408520b8d5b55e0a092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f46eee9e524f4167 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 115, 237, 131, 108, 133, 60, 9, 35, 63, 237, 12, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2d26194e984a0f262277b7a0ae360d09, }, ), received_events: EventHandle { count: 3701986109360470639, key: EventKey( [ 76, 128, 180, 218, 40, 121, 18, 133, 96, 61, 54, 101, 23, 128, 136, 80, 96, 50, 149, 50, 123, 51, 186, 228, ], ), }, sent_events: EventHandle { count: 8271961044587269741, key: EventKey( [ 55, 176, 216, 0, 218, 203, 39, 31, 217, 206, 171, 119, 34, 65, 84, 12, 74, 6, 177, 86, 84, 23, 191, 64, ], ), }, sequence_number: 651437231176163461, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4952a238e51141464bb95d7da9bbbab72e785d4703fd2a820ee749d9c55fb040): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137028431caf15b3d790c2f3ea2df42c2733a9d81700264f9cea63b1157cab1be739c1cde68de6e7a6a45088526829927d8c154ec8938290d013903e0b5f0516b17a6a1af0ee49a4cfb01fb071b8b43dad213a5070268bfc58e94bd3d01930323ca291828e6faae8deb9465adf7ceac2947c306727bef26a23fea362ec416f4b4b97136180ad9644797a4fc3dab4563da8dd3a2f66b4d77b74096805994d45710c0e488b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0cede8863baab44 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 2, 132, 49, 202, 241, 91, 61, 121, 12, 47, 62, 162, 223, 66, 194, 115, 58, 157, 129, 112, 2, 100, 249, 206, 166, 59, 17, 87, 202, 177, 190, 115, 156, 28, 222, 104, 222, 110, 122, 106, 69, 8, 133, 38, 130, 153, 39, 216, 193, 84, 236, 137, 56, 41, 13, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3903e0b5f0516b17a6a1af0ee49a4cfb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fb071b8b43dad213a5070268bfc58e94, }, ), received_events: EventHandle { count: 3011257799108804029, key: EventKey( [ 40, 230, 250, 174, 141, 235, 148, 101, 173, 247, 206, 172, 41, 71, 195, 6, 114, 123, 239, 38, 162, 63, 234, 54, ], ), }, sent_events: EventHandle { count: 3923120937256797230, key: EventKey( [ 10, 217, 100, 71, 151, 164, 252, 61, 171, 69, 99, 218, 141, 211, 162, 246, 107, 77, 119, 183, 64, 150, 128, 89, ], ), }, sequence_number: 12792726255104939156, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(498fcdd6b0ee71faf484bb9e19c431e54eb4499af4ccf595ceac83ca5c155776): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c960034bd8d30001227716984d704d501404dca263c8b678297b9029a4f52f5f18e28c12dfdb319fb97f6aa6b6619596f995f2f868753ff391bac8370062d73c1b1892715bc5fba5b1ce98e2e0f3c7606075814c79bd87d12ed52d3bfd577357d2a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708453307d3d4e7e15e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 216, 211, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 227716984d704d501404dca263c8b678, }, ), received_events: EventHandle { count: 6858970842929330985, key: EventKey( [ 226, 140, 18, 223, 219, 49, 159, 185, 127, 106, 166, 182, 97, 149, 150, 249, 149, 242, 248, 104, 117, 63, 243, 145, ], ), }, sent_events: EventHandle { count: 1962680353537116346, key: EventKey( [ 146, 113, 91, 197, 251, 165, 177, 206, 152, 226, 224, 243, 199, 96, 96, 117, 129, 76, 121, 189, 135, 209, 46, 213, ], ), }, sequence_number: 11660478538124704557, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(49b6c782744ef3f05aa901d1db930dcfe5442d2bc41bdf378e96f40a295bee07): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c012f2fb50d33e539790c562af9e34e4396353913c5f8ec549e04b269e27e5aacb403d560731f28e9602736f4419feb2f9600011580fe0bbc46e24f2d68c111d1d0b51753fdea85012058281889d952cc3ff98c283bfc4823e6bb8e138c3efe213e5f2ce18896ff5e93bceb1c18d0791c5188ae5e13a3ea606f0805d2ff62940606e98723f6fe309ad9f76fa0e82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826a152c8aaeb498d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 181, 13, 51, 229, 57, 121, 12, 86, 42, 249, 227, 78, 67, 150, 53, 57, 19, 197, 248, 236, 84, 158, 4, 178, 105, 226, 126, 90, 172, 180, 3, 213, 96, 115, 31, 40, 233, 96, 39, 54, 244, 65, 159, 235, 47, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1580fe0bbc46e24f2d68c111d1d0b517, }, ), received_events: EventHandle { count: 2907108750381481299, key: EventKey( [ 137, 217, 82, 204, 63, 249, 140, 40, 59, 252, 72, 35, 230, 187, 142, 19, 140, 62, 254, 33, 62, 95, 44, 225, ], ), }, sent_events: EventHandle { count: 2083966593729009288, key: EventKey( [ 208, 121, 28, 81, 136, 174, 94, 19, 163, 234, 96, 111, 8, 5, 210, 255, 98, 148, 6, 6, 233, 135, 35, 246, ], ), }, sequence_number: 16762520923371352318, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4abe5929961902c579ea9872e39c4bb45fe0368148851c7dabfe7510980d4d01): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af01429399468505f40d5e15945d4a03c32d516ad61bfa95a530bca272f73bec0496c9215ceacf628c9db3812b3a019cceb73002ca34aef0f3ff42a1a4f56460d674213b2e01b35c98cc4680a3d0234a290acea1a63e016db3743b01705136fe07c9cfe57b814404786de5f4f0e47f18ff8ae58994462696157ca624cd5ff0380f52baa2d3b4b8a1919bb6aa566e995d18eadd3b38e05fe04b6a06c0c46d1e10572fd22602b9807e85d4b278dc31de9ee32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b63518c86470315d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 153, 70, 133, 5, 244, 13, 94, 21, 148, 93, 74, 3, 195, 45, 81, 106, 214, 27, 250, 149, 165, 48, 188, 162, 114, 247, 59, 236, 4, 150, 201, 33, 92, 234, 207, 98, 140, 157, 179, 129, 43, 58, 1, 156, 206, 183, 48, 2, 202, 52, 174, 240, 243, 255, 66, 161, 164, 245, 100, 96, 214, 116, 33, 59, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b35c98cc4680a3d0234a290acea1a63e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6db3743b01705136fe07c9cfe57b8144, }, ), received_events: EventHandle { count: 9215755672118720516, key: EventKey( [ 255, 138, 229, 137, 148, 70, 38, 150, 21, 124, 166, 36, 205, 95, 240, 56, 15, 82, 186, 162, 211, 180, 184, 161, ], ), }, sent_events: EventHandle { count: 6744543235474365329, key: EventKey( [ 234, 221, 59, 56, 224, 95, 224, 75, 106, 6, 192, 196, 109, 30, 16, 87, 47, 210, 38, 2, 185, 128, 126, 133, ], ), }, sequence_number: 16401791198663586516, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4af897dee590221442555d5951fc00c1a95c9a502002a37d696054ebbf89d0f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148a40aab90f990c3a5b1f039747c632ed88e30a01f834a945708c90b0bb5fd8e470d3372fadf6e5420203bbb4bf6289a6251e5d99ccb665ed835193a6aa7173884bb7539b54133566d018c8602825cb03959c03453ce2f4ee07401154f39136f4eea6f811fb38dcc8f89f2ac97b5e7e8aa785318e2e603dd9cf0522d97c8f8c1e827e7d5f678ffdd7b1ff0fa0b622c7eb2eadf4718187c0f34a48b3e0d96269122871aa5881d3d4e591c148e949254d1b9902f4a2a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089bdff63cf154d182 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 10, 171, 144, 249, 144, 195, 165, 177, 240, 57, 116, 124, 99, 46, 216, 142, 48, 160, 31, 131, 74, 148, 87, 8, 201, 11, 11, 181, 253, 142, 71, 13, 51, 114, 250, 223, 110, 84, 32, 32, 59, 187, 75, 246, 40, 154, 98, 81, 229, 217, 156, 203, 102, 94, 216, 53, 25, 58, 106, 167, 23, 56, 132, 187, 117, 57, 181, 65, 51, 86, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c8602825cb03959c03453ce2f4ee074, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 154f39136f4eea6f811fb38dcc8f89f2, }, ), received_events: EventHandle { count: 6014745219649869740, key: EventKey( [ 226, 230, 3, 221, 156, 240, 82, 45, 151, 200, 248, 193, 232, 39, 231, 213, 246, 120, 255, 221, 123, 31, 240, 250, ], ), }, sent_events: EventHandle { count: 5179116148841275915, key: EventKey( [ 24, 124, 15, 52, 164, 139, 62, 13, 150, 38, 145, 34, 135, 26, 165, 136, 29, 61, 78, 89, 28, 20, 142, 148, ], ), }, sequence_number: 3047300396508861586, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4bc9427bc3f55184b11dc8552ed3ee3bdc7df150594e023c7fc9a88f64668f7a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c993013694fbc06cb6da8c92ca319f3cf08c016d42ec874d7aee6baab787b14bb3c5938b46b678375d9994267137c5424172ca3f9b273d4e542a01f7ad1506fe0b4fae06bf764471c53cd800f499c72831f2a80c1835124d1531f4baad9eb250f746dc7b5167712b8db30afb79088869a3da1c1f6e185b2e9d256cc4d2c0e882adb54ef599934d3e3df5d540fd4c8956df3aaeb181d32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080b6ee3d76d01771d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 251, 192, 108, 182, 218, 140, 146, 202, 49, 159, 60, 240, 140, 1, 109, 66, 236, 135, 77, 122, 238, 107, 170, 183, 135, 177, 75, 179, 197, 147, 139, 70, 182, 120, 55, 93, 153, 148, 38, 113, 55, 197, 66, 65, 114, 202, 63, 155, 39, 61, 78, 84, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f7ad1506fe0b4fae06bf764471c53cd8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 912245217494014452, key: EventKey( [ 53, 18, 77, 21, 49, 244, 186, 173, 158, 178, 80, 247, 70, 220, 123, 81, 103, 113, 43, 141, 179, 10, 251, 121, ], ), }, sent_events: EventHandle { count: 7935092793820153864, key: EventKey( [ 91, 46, 157, 37, 108, 196, 210, 192, 232, 130, 173, 181, 78, 245, 153, 147, 77, 62, 61, 245, 213, 64, 253, 76, ], ), }, sequence_number: 15240657975868610185, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4cb98ccf13ce925a3c5834908b9f41d505849da0b2ca233c6b9fcf816953af4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a201453b79530f68bce9fcf5a17f5a8a73e92c9bdd90ed5a7cdf78d22d065ffb03e5dbe1c1033d97745be3fc5c5c1f61a796bae2fe6638f5e7c2a5f888943f2b9e2777ef7999e3720001d1aee0cbc7b89845024d1ec72cd1c607e565600d6619d47b18b66003bfad5e75b3a10cf436bf070a7e9814ded717b849a638cc7b5586b90c6c18678f7db146467b4ccb72606d46c5bcbe89e402b36abdae491b4fb3e826df2fb12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089930717088ca88da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 121, 83, 15, 104, 188, 233, 252, 245, 161, 127, 90, 138, 115, 233, 44, 155, 221, 144, 237, 90, 124, 223, 120, 210, 45, 6, 95, 251, 3, 229, 219, 225, 193, 3, 61, 151, 116, 91, 227, 252, 92, 92, 31, 97, 167, 150, 186, 226, 254, 102, 56, 245, 231, 194, 165, 248, 136, 148, 63, 43, 158, 39, 119, 239, 121, 153, 227, 114, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1aee0cbc7b89845024d1ec72cd1c607, }, ), received_events: EventHandle { count: 8922784687829575141, key: EventKey( [ 182, 96, 3, 191, 173, 94, 117, 179, 161, 12, 244, 54, 191, 7, 10, 126, 152, 20, 222, 215, 23, 184, 73, 166, ], ), }, sent_events: EventHandle { count: 7785801842427677752, key: EventKey( [ 103, 143, 125, 177, 70, 70, 123, 76, 203, 114, 96, 109, 70, 197, 188, 190, 137, 228, 2, 179, 106, 189, 174, 73, ], ), }, sequence_number: 12767668826824462107, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d0b4b7a8a28892f93b0b87a81aa12692e7960e0014cbe35abb2a0685aec168c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0deff9f72ca098017feacc14646c0189ea931cb0506d4508433a9ada49301401ba8d166ffd6cb4f93d984f616cf6ed9d76de132f3e138c5a18b5c917da8e65ffb930b27bf5a960fc99d17a6dd87899f3f153b5f38ede69c92a18547c22d80d412968e3bb9778cee2a2168fbac106cad39121a027f6b5b65a11212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708afb7bf20332978db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 239, 249, 247, 44, 160, 152, 1, 127, 234, 204, 20, 100, 108, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 89ea931cb0506d4508433a9ada493014, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ba8d166ffd6cb4f93d984f616cf6ed9d, }, ), received_events: EventHandle { count: 6524611117951737462, key: EventKey( [ 181, 201, 23, 218, 142, 101, 255, 185, 48, 178, 123, 245, 169, 96, 252, 153, 209, 122, 109, 216, 120, 153, 243, 241, ], ), }, sent_events: EventHandle { count: 3083111824513807699, key: EventKey( [ 84, 124, 34, 216, 13, 65, 41, 104, 227, 187, 151, 120, 206, 226, 162, 22, 143, 186, 193, 6, 202, 211, 145, 33, ], ), }, sequence_number: 2382785418639058848, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d20fe0175ca518172045f1d92f674943d604c0efef552e7b91ec350f02e1943): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d014052ab8023815c1bc7789e36602d6d177230a6d9539bc0fcde197aa62aabe73276004653efc48549f66d796db1945c8a68ad0980a52a4e68fc45d6c722f46a90d601a1e0f0d60955ad161fd78730971c5e6300e169f24c677bf1261818e0f777153092a937fbae06b8f9183a3b5620cd9af78724795db6e3894d2c0a18169de4e79c95ae3fbfa9fc7144dc83d75d6deb138f27e9912cfb3e84350e93c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089863e098aa2ce83e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 171, 128, 35, 129, 92, 27, 199, 120, 158, 54, 96, 45, 109, 23, 114, 48, 166, 217, 83, 155, 192, 252, 222, 25, 122, 166, 42, 171, 231, 50, 118, 0, 70, 83, 239, 196, 133, 73, 246, 109, 121, 109, 177, 148, 92, 138, 104, 173, 9, 128, 165, 42, 78, 104, 252, 69, 214, 199, 34, 244, 106, 144, 214, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a1e0f0d60955ad161fd78730971c5e63, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2806159726431332833, key: EventKey( [ 24, 224, 247, 119, 21, 48, 146, 169, 55, 251, 174, 6, 184, 249, 24, 58, 59, 86, 32, 205, 154, 247, 135, 36, ], ), }, sent_events: EventHandle { count: 733046093980786041, key: EventKey( [ 22, 157, 228, 231, 156, 149, 174, 63, 191, 169, 252, 113, 68, 220, 131, 215, 93, 109, 235, 19, 143, 39, 233, 145, ], ), }, sequence_number: 13876450499873405740, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d3a9301a97a90f7cf49eea66e6b14f5261993786aaadda38f2cba7e2766447f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d0150355ee26db913264d498862cc592208386127fa0b533800b2b439bb7532b43c1cb8c5bbafa3444c965c6540cae89f325a3de35ac1241fbd3abd2f7399261494beaf6664937a7d0e9c62f583cc022da62300002e21b2fe485b322e18370b78329f012408d55627b02f8c4a9a17163cbe62e14ae1d501b146d2667c3118e4fc9934e12a051f4c96832d5014ef09e102096229c1636bb4ec7ae7467eb3422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d01f5ff8e8b2d4cb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 94, 226, 109, 185, 19, 38, 77, 73, 136, 98, 204, 89, 34, 8, 56, 97, 39, 250, 11, 83, 56, 0, 178, 180, 57, 187, 117, 50, 180, 60, 28, 184, 197, 187, 175, 163, 68, 76, 150, 92, 101, 64, 202, 232, 159, 50, 90, 61, 227, 90, 193, 36, 31, 189, 58, 189, 47, 115, 153, 38, 20, 148, 190, 175, 102, 100, 147, 122, 125, 14, 156, 98, 245, 131, 204, 2, 45, 166, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3328823443649077550, key: EventKey( [ 55, 11, 120, 50, 159, 1, 36, 8, 213, 86, 39, 176, 47, 140, 74, 154, 23, 22, 60, 190, 98, 225, 74, 225, ], ), }, sent_events: EventHandle { count: 3565838058285760981, key: EventKey( [ 228, 252, 153, 52, 225, 42, 5, 31, 76, 150, 131, 45, 80, 20, 239, 9, 225, 2, 9, 98, 41, 193, 99, 107, ], ), }, sequence_number: 4806324070330854580, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d4bb171eafcbab6044b602d75080263cf5ff7e56f4216e73a1e01c02d23464e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b2e224ea7e7c5060f567f205e71a3135e9425bdb8853d83f872be529a14517b245d5cd95f76413fe44b1d8ae7dca43c0000a4b7602e5099e470181fdfb4656dadb55f9417ed341b5d34b98cf6c97a3e1a13a6ff2cff57aa6c4575185025bb1f8fb37181d8f0101843c0f5a82b59eec2be99d28d9b3c68fbec0328082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085e2e3c505e70e408 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 167, 231, 197, 6, 15, 86, 127, 32, 94, 113, 163, 19, 94, 148, 37, 189, 184, 133, 61, 131, 248, 114, 190, 82, 154, 20, 81, 123, 36, 93, 92, 217, 95, 118, 65, 63, 228, 75, 29, 138, 231, 220, 164, 60, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8134795396592482212, key: EventKey( [ 31, 223, 180, 101, 109, 173, 181, 95, 148, 23, 237, 52, 27, 93, 52, 185, 140, 246, 201, 122, 62, 26, 19, 166, ], ), }, sent_events: EventHandle { count: 8450279754707184895, key: EventKey( [ 80, 37, 187, 31, 143, 179, 113, 129, 216, 240, 16, 24, 67, 192, 245, 168, 43, 89, 238, 194, 190, 153, 210, 141, ], ), }, sequence_number: 587724067736927387, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d716a4c336df3ed42b24db2d476bb7d81a067154e428e91b7eb11e8ba19c050): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e458f34c8001611a285e8e366d9e30001becf0c57bc795179b94ffac9f19e9554f848d8f5b8193d13188bdc6861614dde0e8922c2830943482c54b1c9ef918768aebfdd45a0607c9064189b74aa89f12028de7e0ee4eeee9fd7879d00d5334b2412edfe4fe76c834d36b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f90be900f1038ce2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 143, 52, 200, 0, 22, 17, 162, 133, 232, 227, 102, 217, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: becf0c57bc795179b94ffac9f19e9554, }, ), received_events: EventHandle { count: 1386292542489250040, key: EventKey( [ 139, 220, 104, 97, 97, 77, 222, 14, 137, 34, 194, 131, 9, 67, 72, 44, 84, 177, 201, 239, 145, 135, 104, 174, ], ), }, sent_events: EventHandle { count: 7246428554886766015, key: EventKey( [ 155, 116, 170, 137, 241, 32, 40, 222, 126, 14, 228, 238, 238, 159, 215, 135, 157, 0, 213, 51, 75, 36, 18, 237, ], ), }, sequence_number: 12769479020318773246, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d7bd7a4b91da65131a2dc2011ff9a0393dece536b89eb0a1f49b65ec981209d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd0160bb57b83cb3d08a7d2e04141ef62cb1a5fe17b33d6d3190d3d6c42c5aca8a9996c1fe0ed8556e302e1324670487286a417a7cf734f55ad31c5010f6d3001c7b6859243cd76dfb7961e25f0bc5ff2b50d785b41e0a2261a9cbbbf967340ec94659018f4e8613541f4d43de206c0a5210627701b9da72e996bdc7d3c694d6494df37419561e66fc0f47c92c18edb0d9e03b4d8dcb2145da8c49a8edd62fc4fa8a3bb6354e8e81fe1c679fdb531876a9840be99df5db67ebc308b409717428ab827778be226e45858d3dcc5524b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70809554e522ac27154 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 187, 87, 184, 60, 179, 208, 138, 125, 46, 4, 20, 30, 246, 44, 177, 165, 254, 23, 179, 61, 109, 49, 144, 211, 214, 196, 44, 90, 202, 138, 153, 150, 193, 254, 14, 216, 85, 110, 48, 46, 19, 36, 103, 4, 135, 40, 106, 65, 122, 124, 247, 52, 245, 90, 211, 28, 80, 16, 246, 211, 0, 28, 123, 104, 89, 36, 60, 215, 109, 251, 121, 97, 226, 95, 11, 197, 255, 43, 80, 215, 133, 180, 30, 10, 34, 97, 169, 203, 187, 249, 103, 52, 14, 201, 70, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8f4e8613541f4d43de206c0a52106277, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b9da72e996bdc7d3c694d6494df37419, }, ), received_events: EventHandle { count: 3227188741972303446, key: EventKey( [ 237, 176, 217, 224, 59, 77, 141, 203, 33, 69, 218, 140, 73, 168, 237, 214, 47, 196, 250, 138, 59, 182, 53, 78, ], ), }, sent_events: EventHandle { count: 6042598590264541582, key: EventKey( [ 118, 169, 132, 11, 233, 157, 245, 219, 103, 235, 195, 8, 180, 9, 113, 116, 40, 171, 130, 119, 120, 190, 34, 110, ], ), }, sequence_number: 12908536767645058373, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e455ac02acec621ef01bafd01f10bb673e311345beb5480956c3a8a5e0eedc0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015dc9eefbb069c54f5367864891b301ccfdee48d4a7e1a021102741ca5e3c7590a0b617679408a1811c647978d1660c490a4e1053929fab621e2c4d945090bf3b999cdcf0d082e46bd8a19d042d84686e7d2ebaf3cf0bec036a98be30361f01c2dbd0c8df904e98db07a1ee5eaf59b401b188f20b30cc767edf1ebe8e8f6ef5a4eb3a17c9fed5e342182b4c20afe907add6b8addb63298a251262451a7d2939682b71a4b6459acfd132188bfee115533bf375a31971205fb02407fae6aba99141f2fe245b180de08854ed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8ee588a6952c0fa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 238, 251, 176, 105, 197, 79, 83, 103, 134, 72, 145, 179, 1, 204, 253, 238, 72, 212, 167, 225, 160, 33, 16, 39, 65, 202, 94, 60, 117, 144, 160, 182, 23, 103, 148, 8, 161, 129, 28, 100, 121, 120, 209, 102, 12, 73, 10, 78, 16, 83, 146, 159, 171, 98, 30, 44, 77, 148, 80, 144, 191, 59, 153, 156, 220, 240, 208, 130, 228, 107, 216, 161, 157, 4, 45, 132, 104, 110, 125, 46, 186, 243, 207, 11, 236, 3, 106, 152, 190, 48, 54, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c2dbd0c8df904e98db07a1ee5eaf59b4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b188f20b30cc767edf1ebe8e8f6ef5a4, }, ), received_events: EventHandle { count: 4819931316488714987, key: EventKey( [ 43, 76, 32, 175, 233, 7, 173, 214, 184, 173, 219, 99, 41, 138, 37, 18, 98, 69, 26, 125, 41, 57, 104, 43, ], ), }, sent_events: EventHandle { count: 3661936233530434673, key: EventKey( [ 139, 254, 225, 21, 83, 59, 243, 117, 163, 25, 113, 32, 95, 176, 36, 7, 250, 230, 171, 169, 145, 65, 242, 254, ], ), }, sequence_number: 17101444180906367780, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e5fb057bc3340b09706e8c4966a20d663bc1ef5f43809a0da7dca5867e9fcb3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f127e051f9bc8b08cf4e15a5ef4eef1ebd72dd0019588c0ca2b1ebb17eb3f47d7242fff540049a1a610adc2a71e18098d7189a80a60897e9efceb72fd8ffddd9afa11be230d0a6bf0b80db6970a3c18ce8177d18a40619a780936230a6162808a9dab04945ef29033d9e901d70bff222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8e84b9169d97841 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 126, 5, 31, 155, 200, 176, 140, 244, 225, 90, 94, 244, 238, 241, 235, 215, 45, 208, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9588c0ca2b1ebb17eb3f47d7242fff54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2208948190813004105, key: EventKey( [ 9, 141, 113, 137, 168, 10, 96, 137, 126, 158, 252, 235, 114, 253, 143, 253, 221, 154, 250, 17, 190, 35, 13, 10, ], ), }, sent_events: EventHandle { count: 4326437200212848747, key: EventKey( [ 206, 129, 119, 209, 138, 64, 97, 154, 120, 9, 54, 35, 10, 97, 98, 128, 138, 157, 171, 4, 148, 94, 242, 144, ], ), }, sequence_number: 2521747334428743987, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e73548357e671b61b8c5de63f868a3d354f86b3a54e1be4e770732a444c3835): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113711e167a146dc7fc6262c50b8ebba887612114016e17817502dcbf9630983376313b221701ae9e8bba50d9a1a37974a04394552bfd49773ec62cb57a50185ab1c6260c9013dbabc1759c46cce4c2a1800ad8abcb9b6572c10fcbc69e977f18383d76542a161c410e62994ed6fa2629ccb95159f15a59a0dd8b8dab2abcdbb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708468d78565b17cd1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 113, 30, 22, 122, 20, 109, 199, 252, 98, 98, 197, 11, 142, 187, 168, 135, 97, 33, 20, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6e17817502dcbf9630983376313b2217, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae9e8bba50d9a1a37974a04394552bfd, }, ), received_events: EventHandle { count: 5799146674102105929, key: EventKey( [ 90, 177, 198, 38, 12, 144, 19, 219, 171, 193, 117, 156, 70, 204, 228, 194, 161, 128, 10, 216, 171, 203, 155, 101, ], ), }, sent_events: EventHandle { count: 9193991740947677554, key: EventKey( [ 56, 61, 118, 84, 42, 22, 28, 65, 14, 98, 153, 78, 214, 250, 38, 41, 204, 185, 81, 89, 241, 90, 89, 160, ], ), }, sequence_number: 13392504808369130461, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(50012e55186d8d93e26a26d70791b661a8682e2e8241c0aa465d0a123e77dcbc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1df2db9e914e2128cd664faa8b66ed04ae242e49674e521d079be402ff4400005f69010445a5f05518162b68e1c1b88ecb78e11e750a4b3cec1a8aeb6810ed99f7701c7832447bb76c18d77bb2d295833803ec2409e5aa1d68313ecf8a938e318e7047b6e81e18a0113e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b8a964a00163b074 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 219, 158, 145, 78, 33, 40, 205, 102, 79, 170, 139, 102, 237, 4, 174, 36, 46, 73, 103, 78, 82, 29, 7, 155, 228, 2, 255, 68, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6192631203472959839, key: EventKey( [ 22, 43, 104, 225, 193, 184, 142, 203, 120, 225, 30, 117, 10, 75, 60, 236, 26, 138, 235, 104, 16, 237, 153, 247, ], ), }, sent_events: EventHandle { count: 7833865609668992112, key: EventKey( [ 215, 123, 178, 210, 149, 131, 56, 3, 236, 36, 9, 229, 170, 29, 104, 49, 62, 207, 138, 147, 142, 49, 142, 112, ], ), }, sequence_number: 4472531930413839943, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(503d7cf0cf04d4f2b21fdf91a894904a20246af66f2f9345f6efe3145d45b0b6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316f1ef80cbf929e57e6be4787dc98fc673ed01a03ef05e018c336c5c63c9fae45c1ed4e3a08ff6fe005edcf3c74e9e560d182d64502f45893481c43f3c9f447bb5e9fbc33c5adef3c874242d7a90d5b9221d189c8b7bd3eecf5d9ba4d805592019565d1a674224df28c3546214d9364fac04262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081464cde69c128f75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 239, 128, 203, 249, 41, 229, 126, 107, 228, 120, 125, 201, 143, 198, 115, 237, 1, 160, 62, 240, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c336c5c63c9fae45c1ed4e3a08ff6fe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 961129631689464926, key: EventKey( [ 45, 100, 80, 47, 69, 137, 52, 129, 196, 63, 60, 159, 68, 123, 181, 233, 251, 195, 60, 90, 222, 243, 200, 116, ], ), }, sent_events: EventHandle { count: 2099444703211171108, key: EventKey( [ 156, 139, 123, 211, 238, 207, 93, 155, 164, 216, 5, 89, 32, 25, 86, 93, 26, 103, 66, 36, 223, 40, 195, 84, ], ), }, sequence_number: 2739503929570694242, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51089eaa0157794b8803448a61f39e512918c8aae11fa310f2868f9389bc30f8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c1fbfe6689f2f2f79c63664f38865909a5bde7231e8fc5ba034b5d4b2ad99d8020000ef272e54690c232918a505dbc2c63424c13fa453c08987519fefe35be883b10dc6c81ee26754d0a53b18775a91563348e1bb1765a8e355e04bc6d0bd87b197a0c6501df732c189e27d7a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708efe72380239932c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 230, 104, 159, 47, 47, 121, 198, 54, 100, 243, 136, 101, 144, 154, 91, 222, 114, 49, 232, 252, 91, 160, 52, 181, 212, 178, 173, 153, 216, 2, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2964226626263328751, key: EventKey( [ 165, 5, 219, 194, 198, 52, 36, 193, 63, 164, 83, 192, 137, 135, 81, 159, 239, 227, 91, 232, 131, 177, 13, 198, ], ), }, sent_events: EventHandle { count: 4298070480333709000, key: EventKey( [ 119, 90, 145, 86, 51, 72, 225, 187, 23, 101, 168, 227, 85, 224, 75, 198, 208, 189, 135, 177, 151, 160, 198, 80, ], ), }, sequence_number: 8826459925995779869, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5133266cb9022ab301ad81118f929d1275b373d9ca976b83b098ec5f7a67cd96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163e7220b0bcd7e1d5b67e11fad03972e0b9015cf70cdb977bedd3956c0cfea10a0d7b12ccdf6022f415ba6cc7d77590dcf854a2775e2679738a82206b1a33c877d875361f47e407a77171b4840f80fdb79fc45342392e650647ee741fa9036054790883400018485d3cca9cbdf3f1ce00a8e4bc1b5120a28cde5d5072a1918e2350f8d8f079bb581954cc6bd64b2e3910175418920afc293f28e2c400dfa1a1822cd19fb7ae7d9c819add0bd48bdc0661449cc0c20e01bcb4b8a30e8881cc8d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826e01ed31ff846dc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 231, 34, 11, 11, 205, 126, 29, 91, 103, 225, 31, 173, 3, 151, 46, 11, 144, 21, 207, 112, 205, 185, 119, 190, 221, 57, 86, 192, 207, 234, 16, 160, 215, 177, 44, 205, 246, 2, 47, 65, 91, 166, 204, 125, 119, 89, 13, 207, 133, 74, 39, 117, 226, 103, 151, 56, 168, 34, 6, 177, 163, 60, 135, 125, 135, 83, 97, 244, 126, 64, 122, 119, 23, 27, 72, 64, 248, 15, 219, 121, 252, 69, 52, 35, 146, 230, 80, 100, 126, 231, 65, 250, 144, 54, 5, 71, 144, 136, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8485d3cca9cbdf3f1ce00a8e4bc1b512, }, ), received_events: EventHandle { count: 1813270415234902026, key: EventKey( [ 226, 53, 15, 141, 143, 7, 155, 181, 129, 149, 76, 198, 189, 100, 178, 227, 145, 1, 117, 65, 137, 32, 175, 194, ], ), }, sent_events: EventHandle { count: 1943880758440424083, key: EventKey( [ 34, 205, 25, 251, 122, 231, 217, 200, 25, 173, 208, 189, 72, 189, 192, 102, 20, 73, 204, 12, 32, 224, 27, 203, ], ), }, sequence_number: 15332536305719478859, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(517a3c8da9d66facbf8c2a1c224afd6d16497b7c5264c03bcee2691f2ee0d8df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01616a48f3b8608f9e3331b53d766304f0db425de3b50ef82d64827cb6f1568695fe7a0264a64b80af0a8d81e27b280d4b470eae0c3be591d56cf7ae92f047933ba2b05cd02cbe4dd816de6ea392f1d945a7889f979aa9f98e7939bf9cb0cc2a7ce3b201ae01102c948ee3085b8ddc6aee16d0390136de687278e8115eeaf55d6c200666d9df6b38048b59021c18951710efb7b3e902dcdc70bf3db143c11077798261ac089029523d326c76527d1825b10c245d18d6c98e5d25cb4d1facd9a24c638404b094602caf8c96bd9d0e282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708afa2c4cc83707a2d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 72, 243, 184, 96, 143, 158, 51, 49, 181, 61, 118, 99, 4, 240, 219, 66, 93, 227, 181, 14, 248, 45, 100, 130, 124, 182, 241, 86, 134, 149, 254, 122, 2, 100, 166, 75, 128, 175, 10, 141, 129, 226, 123, 40, 13, 75, 71, 14, 174, 12, 59, 229, 145, 213, 108, 247, 174, 146, 240, 71, 147, 59, 162, 176, 92, 208, 44, 190, 77, 216, 22, 222, 110, 163, 146, 241, 217, 69, 167, 136, 159, 151, 154, 169, 249, 142, 121, 57, 191, 156, 176, 204, 42, 124, 227, 178, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ae01102c948ee3085b8ddc6aee16d039, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 36de687278e8115eeaf55d6c200666d9, }, ), received_events: EventHandle { count: 2018274036621536223, key: EventKey( [ 149, 23, 16, 239, 183, 179, 233, 2, 220, 220, 112, 191, 61, 177, 67, 193, 16, 119, 121, 130, 97, 172, 8, 144, ], ), }, sent_events: EventHandle { count: 9030410409902690857, key: EventKey( [ 37, 177, 12, 36, 93, 24, 214, 201, 142, 93, 37, 203, 77, 31, 172, 217, 162, 76, 99, 132, 4, 176, 148, 96, ], ), }, sequence_number: 2886417848791248684, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51a6e4f642f88dd32ad9571019655c36c6292dd9cd38d4d1cf9e610e1422b474): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015fca3011863ebb6509a9dcc8e782bc91b4e3f0cd23a074a0104a777f3f40b4f7e5a84e74e8c617e56b2b6f47cdf174fdb04e23d7dc51fc8d37d56bf00cd9c0f94dd8fa09109778f41f72d76405b89f41ca4bfddd2e2e2dd3363ddc4998961e7801af4d0e272e2986a4f986a5bdd22a6efa00ed09d00097c97772188098307b39ff5295f57e154bfbf077990b1bcaa43251c7cfb2778a1830fd520618ca78877457869d0ba1120cce953c858d9b1f690c653ed7e59c1b86d2481be5242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089f60552511a81202 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 48, 17, 134, 62, 187, 101, 9, 169, 220, 200, 231, 130, 188, 145, 180, 227, 240, 205, 35, 160, 116, 160, 16, 74, 119, 127, 63, 64, 180, 247, 229, 168, 78, 116, 232, 198, 23, 229, 107, 43, 111, 71, 205, 241, 116, 253, 176, 78, 35, 215, 220, 81, 252, 141, 55, 213, 107, 240, 12, 217, 192, 249, 77, 216, 250, 9, 16, 151, 120, 244, 31, 114, 215, 100, 5, 184, 159, 65, 202, 75, 253, 221, 46, 46, 45, 211, 54, 61, 220, 73, 152, 150, 30, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: af4d0e272e2986a4f986a5bdd22a6efa, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8248282892943231469, key: EventKey( [ 128, 152, 48, 123, 57, 255, 82, 149, 245, 126, 21, 75, 251, 240, 119, 153, 11, 27, 202, 164, 50, 81, 199, 207, ], ), }, sent_events: EventHandle { count: 455704895329826738, key: EventKey( [ 202, 120, 135, 116, 87, 134, 157, 11, 161, 18, 12, 206, 149, 60, 133, 141, 155, 31, 105, 12, 101, 62, 215, 229, ], ), }, sequence_number: 2658561154615745436, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51d3898dfcdd3bd91155b9db1803736ca589ec8586b1555878d166fadfbc4ba6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b013ef79267172cd5959dd0e0949ce477d9ef85eb5004bd901f2b5b981c75e1f3de67203b2e38e345e324aa13252555b15e1c763ba47edcf7e4292052a1ed93bc000008c6480b1f17e9531813f0ed8d8f8261652ba838d880f5a308fdf3290a0417e1fa9971033b601c6b5518d043792234040365c95b947524f22955706372918dcc420e4e70865cb82b54d22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080583fb1a47ae9640 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 146, 103, 23, 44, 213, 149, 157, 208, 224, 148, 156, 228, 119, 217, 239, 133, 235, 80, 4, 189, 144, 31, 43, 91, 152, 28, 117, 225, 243, 222, 103, 32, 59, 46, 56, 227, 69, 227, 36, 170, 19, 37, 37, 85, 177, 94, 28, 118, 59, 164, 126, 220, 247, 228, 41, 32, 82, 161, 237, 147, 188, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6046389396822345224, key: EventKey( [ 19, 240, 237, 141, 143, 130, 97, 101, 43, 168, 56, 216, 128, 245, 163, 8, 253, 243, 41, 10, 4, 23, 225, 250, ], ), }, sent_events: EventHandle { count: 6155044515364434329, key: EventKey( [ 208, 67, 121, 34, 52, 4, 3, 101, 201, 91, 148, 117, 36, 242, 41, 85, 112, 99, 114, 145, 141, 204, 66, 14, ], ), }, sequence_number: 15155786716834852942, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5220657c3bb4b5616431a78997f80b1bcab0a4447ce303f7f2739a459b676627): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f22e545ecb91eab45ea47b8fe5fa62eb18b591d9e93e934ddae724359b0aed4dc1aa8d80001d71676f62723b2890cbb02a8ee80508e9c0eaf8db6e4821318343fe5bd1c9e39cfd08e552f95648fd20642a3863e887e446dcd2f5d61ef564e18e215ad009f1e8e8562178990540fc53f4bdbe11c2763f33b26dc2c149732a05d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708146102a036a23be2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 229, 69, 236, 185, 30, 171, 69, 234, 71, 184, 254, 95, 166, 46, 177, 139, 89, 29, 158, 147, 233, 52, 221, 174, 114, 67, 89, 176, 174, 212, 220, 26, 168, 216, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d71676f62723b2890cbb02a8ee80508e, }, ), received_events: EventHandle { count: 1405937506405256860, key: EventKey( [ 52, 63, 229, 189, 28, 158, 57, 207, 208, 142, 85, 47, 149, 100, 143, 210, 6, 66, 163, 134, 62, 136, 126, 68, ], ), }, sent_events: EventHandle { count: 5644962384409775469, key: EventKey( [ 226, 21, 173, 0, 159, 30, 142, 133, 98, 23, 137, 144, 84, 15, 197, 63, 75, 219, 225, 28, 39, 99, 243, 59, ], ), }, sequence_number: 6746447866260937766, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(52dee4700d2f3906696199d89a2720d0eac7624242da1387f5bed716f4338477): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a5015851a94b6210580c88d8f1f9ccdfcd7deaac11398ab0420781037434a1f43546cc35e227e93f5765dbfbc1b949da03358a51a14d3df18b58cc894afe74bba75872042cb85fe7db3f23233546995291b4cceb315865121508c40000d36de942b3a7d86f18075fe5e83c7c12c0a174b7834eb624403b9b34ef67d1e724a5ca5542ee6a093c18f562cef889da18fbe6b02d9a01ef67e7e3059349fdcb7c996dace56d2d13b4282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c47b2ffea82dba6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 169, 75, 98, 16, 88, 12, 136, 216, 241, 249, 204, 223, 205, 125, 234, 172, 17, 57, 138, 176, 66, 7, 129, 3, 116, 52, 161, 244, 53, 70, 204, 53, 226, 39, 233, 63, 87, 101, 219, 251, 193, 185, 73, 218, 3, 53, 138, 81, 161, 77, 61, 241, 139, 88, 204, 137, 74, 254, 116, 187, 167, 88, 114, 4, 44, 184, 95, 231, 219, 63, 35, 35, 53, 70, 153, 82, 145, 180, 204, 235, 49, 88, 101, 18, 21, 8, 196, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8059375921543081427, key: EventKey( [ 7, 95, 229, 232, 60, 124, 18, 192, 161, 116, 183, 131, 78, 182, 36, 64, 59, 155, 52, 239, 103, 209, 231, 36, ], ), }, sent_events: EventHandle { count: 4326106488613751461, key: EventKey( [ 245, 98, 206, 248, 137, 218, 24, 251, 230, 176, 45, 154, 1, 239, 103, 231, 227, 5, 147, 73, 253, 203, 124, 153, ], ), }, sequence_number: 2932990343163260013, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53991811ba39b54d466c3aa1cb73613f72c4821a757f864dfde2ad9491a54c07): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671af5afd849ef7210a0ddeace7f1b936eb0492db317f8a9ed23b0f60000bc6a1126a823940118ddb77b6a00fe3a233db60b9f746213ecdf37619ccad497945f77bebd9e13f16818c612ac963ee50e686147fe0fc00258af481b7cf96aa8d381369bfd8f491aa77f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca1c30c39b37f976 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 175, 216, 73, 239, 114, 16, 160, 221, 234, 206, 127, 27, 147, 110, 176, 73, 45, 179, 23, 248, 169, 237, 35, 176, 246, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 113755095691258556, key: EventKey( [ 221, 183, 123, 106, 0, 254, 58, 35, 61, 182, 11, 159, 116, 98, 19, 236, 223, 55, 97, 156, 202, 212, 151, 148, ], ), }, sent_events: EventHandle { count: 7561846821840910175, key: EventKey( [ 198, 18, 172, 150, 62, 229, 14, 104, 97, 71, 254, 15, 192, 2, 88, 175, 72, 27, 124, 249, 106, 168, 211, 129, ], ), }, sequence_number: 9198349667178224438, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53ca50a1d4f5587ec4a2ccb83a3ab847b57fb564905839fbbf190b817ba3f07c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9772a6e31fceee81f16eae10c6f5ffb39435a860ef77735b35586be654cbe1e9a7a5244c96783b53e1622c41a0000d44b89d07f20c353183fb699bcad4a0e96e336c4a23b965e5ab8ed34fec632785fabdb48faa7ce913f18ed34beee4e769c9cad83098f0dd691af80bc9cb9836ea926e9e101328954c4a62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708803c5917e33b0737 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 110, 49, 252, 238, 232, 31, 22, 234, 225, 12, 111, 95, 251, 57, 67, 90, 134, 14, 247, 119, 53, 179, 85, 134, 190, 101, 76, 190, 30, 154, 122, 82, 68, 201, 103, 131, 181, 62, 22, 34, 196, 26, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6035703658938190804, key: EventKey( [ 63, 182, 153, 188, 173, 74, 14, 150, 227, 54, 196, 162, 59, 150, 94, 90, 184, 237, 52, 254, 198, 50, 120, 95, ], ), }, sent_events: EventHandle { count: 4580669516866444203, key: EventKey( [ 237, 52, 190, 238, 78, 118, 156, 156, 173, 131, 9, 143, 13, 214, 145, 175, 128, 188, 156, 185, 131, 110, 169, 38, ], ), }, sequence_number: 12016822653957562857, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(54189ec9ace66b4fbfd14bf947a62998b07d89705e3ecd71516d718302f0a014): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dfb751f214cf4f0f57ea014f2381df12a38189184bf921f21794cd4ae4ff122ac292a74cf829a7f705cff1d4d1cf9dbfc929c4f1bf92a5f8b26e5ad2a3a01cab79baace508735ae67914a7fcf5850007f7e86dd57d9166418053f70afbeec1c23e173d61663edc95ac5d9c2dfb74e24e615de81ac22262c6718c4f541a2605396a4a239fc3c5f879a2c1aebbfeccbd615ab1f9aca3dd1be60092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aae6a9d971854585 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 117, 31, 33, 76, 244, 240, 245, 126, 160, 20, 242, 56, 29, 241, 42, 56, 24, 145, 132, 191, 146, 31, 33, 121, 76, 212, 174, 79, 241, 34, 172, 41, 42, 116, 207, 130, 154, 127, 112, 92, 255, 29, 77, 28, 249, 219, 252, 146, 156, 79, 27, 249, 42, 95, 139, 38, 229, 173, 42, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cab79baace508735ae67914a7fcf5850, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7212190824682389119, key: EventKey( [ 5, 63, 112, 175, 190, 236, 28, 35, 225, 115, 214, 22, 99, 237, 201, 90, 197, 217, 194, 223, 183, 78, 36, 230, ], ), }, sent_events: EventHandle { count: 7434359015246781973, key: EventKey( [ 196, 245, 65, 162, 96, 83, 150, 164, 162, 57, 252, 60, 95, 135, 154, 44, 26, 235, 191, 236, 203, 214, 21, 171, ], ), }, sequence_number: 675749749999704607, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5418e0605f29a26c1f99acf45d43e30df64f3b1c55b520cf8262e39e920bc467): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c61a823f234b55d6843b068ddc5fea252030ccb88b2a9f2d9383b2a5a0001a33a317413897d2eaee73d803f35bd8eb12d4b2dfda0d02418ee051bb4154a89ca93e2d60c852c16eb395159a61d694b8c55a90a430c222014182bf44c8e70ac2f9bd3fbe99121066e8b556d7f749db239e13608bfce786dbbbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086578f4631d2af443 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 168, 35, 242, 52, 181, 93, 104, 67, 176, 104, 221, 197, 254, 162, 82, 3, 12, 203, 136, 178, 169, 242, 217, 56, 59, 42, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a33a317413897d2eaee73d803f35bd8e, }, ), received_events: EventHandle { count: 2652797189768293809, key: EventKey( [ 238, 5, 27, 180, 21, 74, 137, 202, 147, 226, 214, 12, 133, 44, 22, 235, 57, 81, 89, 166, 29, 105, 75, 140, ], ), }, sent_events: EventHandle { count: 1450196516073023829, key: EventKey( [ 43, 244, 76, 142, 112, 172, 47, 155, 211, 251, 233, 145, 33, 6, 110, 139, 85, 109, 127, 116, 157, 178, 57, 225, ], ), }, sequence_number: 13671641459445401654, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5493123b79bdc32da77b3c33a953c39b55a8c0a88f63d2f8a575f43121e89f9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b301463734140b6cda1504b9ba723e0353bd98ccbddd09fecea8fc0abeec4f5394506ec6de0b3c0be686f41a6282a86bd0088ee524640f29414261b633f3e946572998f54876504d7c010b06f9ed552c0be9ca9ef760143ca17101b082e2d5e289167b43c0af86114224933dc37f894bb383371864fc9e7adbf4d7f164c98f23c4259135d20df9d9176f42c66df9380f3e07590518da37abb4acc455d453e4a6f6bcb69d40d585ea8b2b3aad9c03fa50782186e3d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083fc6e025ce8caafb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 52, 20, 11, 108, 218, 21, 4, 185, 186, 114, 62, 3, 83, 189, 152, 204, 189, 221, 9, 254, 206, 168, 252, 10, 190, 236, 79, 83, 148, 80, 110, 198, 222, 11, 60, 11, 230, 134, 244, 26, 98, 130, 168, 107, 208, 8, 142, 229, 36, 100, 15, 41, 65, 66, 97, 182, 51, 243, 233, 70, 87, 41, 152, 245, 72, 118, 80, 77, 124, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0b06f9ed552c0be9ca9ef760143ca171, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b082e2d5e289167b43c0af8611422493, }, ), received_events: EventHandle { count: 4000238031045903165, key: EventKey( [ 100, 252, 158, 122, 219, 244, 215, 241, 100, 201, 143, 35, 196, 37, 145, 53, 210, 13, 249, 217, 23, 111, 66, 198, ], ), }, sent_events: EventHandle { count: 385347206241646957, key: EventKey( [ 218, 55, 171, 180, 172, 196, 85, 212, 83, 228, 166, 246, 188, 182, 157, 64, 213, 133, 234, 139, 43, 58, 173, 156, ], ), }, sequence_number: 15340252234064656899, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(54c7c49fd45ca0ee96a4c015528dd3797dc10516b751e3b74af601a5531ed438): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f8e8d0bf0d2b59b04c82991b593dda4d3cb8ccaa24fdbd7fac74957fd7ee322e601b602acfd8862f728abcb616f73e10000ae97fc43b25be0441816559b535efe564cc767593bae84ba8b621c4a39a3a632d6a60d2645837d894318abb7e843677437044cb77f645bc779f1e5541f1410a1dcf435c140f9526a16d62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828c73b2ac6f278f3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 141, 11, 240, 210, 181, 155, 4, 200, 41, 145, 181, 147, 221, 164, 211, 203, 140, 202, 162, 79, 219, 215, 250, 199, 73, 87, 253, 126, 227, 34, 230, 1, 182, 2, 172, 253, 136, 98, 247, 40, 171, 203, 97, 111, 115, 225, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4963067610565220270, key: EventKey( [ 22, 85, 155, 83, 94, 254, 86, 76, 199, 103, 89, 59, 174, 132, 186, 139, 98, 28, 74, 57, 163, 166, 50, 214, ], ), }, sent_events: EventHandle { count: 4866558875104841126, key: EventKey( [ 171, 183, 232, 67, 103, 116, 55, 4, 76, 183, 127, 100, 91, 199, 121, 241, 229, 84, 31, 20, 16, 161, 220, 244, ], ), }, sequence_number: 15426634478205845813, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(56b3fcbf8c36b189465188f323757b3d08bf0f5ada0586cc2a3353cd8eafd696): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830126f13606bba6ac671d6351aad31db8f297496b223524c55a88941f78dec93ea891c6d58f942b1f016959eefd4777a4683e706f29bcb60e4600304ec50c13b04f5118c147e7f4a2d2414ddedec64d2f09f24cec3cd893bb79d27576e5272d9163bd011851d49a4eae9c882eba5b1342e0a3b33efd4431c1d66509fefd40469d5b6335632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e2fdf70ea254d1b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 54, 6, 187, 166, 172, 103, 29, 99, 81, 170, 211, 29, 184, 242, 151, 73, 107, 34, 53, 36, 197, 90, 136, 148, 31, 120, 222, 201, 62, 168, 145, 198, 213, 143, 148, 43, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6959eefd4777a4683e706f29bcb60e46, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5859095236097429040, key: EventKey( [ 193, 71, 231, 244, 162, 210, 65, 77, 222, 222, 198, 77, 47, 9, 242, 76, 236, 60, 216, 147, 187, 121, 210, 117, ], ), }, sent_events: EventHandle { count: 125365839815239030, key: EventKey( [ 81, 212, 154, 78, 174, 156, 136, 46, 186, 91, 19, 66, 224, 163, 179, 62, 253, 68, 49, 193, 214, 101, 9, 254, ], ), }, sequence_number: 7148729228652331261, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(570c812ad442771b104e0842f06174aa2231dc6daea6f657b921207e301f27b8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60159143356af677bdad5e499d0a571868316d91d8ec699e4d46d206dabf6d9e5a152f9c564aa905225a8349543abce9f8a46f0dc2baeac117bc24c1fadd6ba1d3336888adf23d797d45a1b64b068e82be780d9783dd81ec724f80e00008071827c40032a1f18e5b18109d6f9c0c8f81849b7c280260734e866037663c77a210e81b5668a000e18dcf83a2be733208ddfc474da8c6f5090028c0d4f7811063cbbd5492a684c600a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b50ca91c290fef9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 51, 86, 175, 103, 123, 218, 213, 228, 153, 208, 165, 113, 134, 131, 22, 217, 29, 142, 198, 153, 228, 212, 109, 32, 109, 171, 246, 217, 229, 161, 82, 249, 197, 100, 170, 144, 82, 37, 168, 52, 149, 67, 171, 206, 159, 138, 70, 240, 220, 43, 174, 172, 17, 123, 194, 76, 31, 173, 214, 186, 29, 51, 54, 136, 138, 223, 35, 215, 151, 212, 90, 27, 100, 176, 104, 232, 43, 231, 128, 217, 120, 61, 216, 30, 199, 36, 248, 14, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2245610939699327360, key: EventKey( [ 229, 177, 129, 9, 214, 249, 192, 200, 248, 24, 73, 183, 194, 128, 38, 7, 52, 232, 102, 3, 118, 99, 199, 122, ], ), }, sent_events: EventHandle { count: 1008958490267422241, key: EventKey( [ 220, 248, 58, 43, 231, 51, 32, 141, 223, 196, 116, 218, 140, 111, 80, 144, 2, 140, 13, 79, 120, 17, 6, 60, ], ), }, sequence_number: 747681548413294011, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(573585db5fd30adf747a864b24a4516c8725d6c7a78425936fd1a2375c4ebaaf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0162bdc7660082b193fc9b24dbf3a19b524564ac5aa63c10d404a3f14a8a5877e4acb4dc782e1facc83dc2cac99f64a320f10c9909a64f50563a24de65bd35dd04ba8ac7c98a457c4cd37a5fd15e0f4a6413f778c41f383a5f3cc0f4ba8db03c68ec50210001a59ef998dd5809b1fe7fbf0e8f7615fab8e6e5593ee8844318489fe8affeed4396cdf43790a774a9b7d7872430fa067d518edf86021fb4202418ca4569f574f9e63373ac5bdeab977e8cf6f80b51e870f4a2f07027c2f1e4ab5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086c10b317606f5465 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 199, 102, 0, 130, 177, 147, 252, 155, 36, 219, 243, 161, 155, 82, 69, 100, 172, 90, 166, 60, 16, 212, 4, 163, 241, 74, 138, 88, 119, 228, 172, 180, 220, 120, 46, 31, 172, 200, 61, 194, 202, 201, 159, 100, 163, 32, 241, 12, 153, 9, 166, 79, 80, 86, 58, 36, 222, 101, 189, 53, 221, 4, 186, 138, 199, 201, 138, 69, 124, 76, 211, 122, 95, 209, 94, 15, 74, 100, 19, 247, 120, 196, 31, 56, 58, 95, 60, 192, 244, 186, 141, 176, 60, 104, 236, 80, 33, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a59ef998dd5809b1fe7fbf0e8f7615fa, }, ), received_events: EventHandle { count: 4865268851960833720, key: EventKey( [ 72, 159, 232, 175, 254, 237, 67, 150, 205, 244, 55, 144, 167, 116, 169, 183, 215, 135, 36, 48, 250, 6, 125, 81, ], ), }, sent_events: EventHandle { count: 2603278629899526030, key: EventKey( [ 202, 69, 105, 245, 116, 249, 230, 51, 115, 172, 91, 222, 171, 151, 126, 140, 246, 248, 11, 81, 232, 112, 244, 162, ], ), }, sequence_number: 6605625005464580336, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(57f13350ad960490010f4db5445d585cf4c1088d9a36f68dc543c2dfe370e319): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af015238e57669162dcff4674236b164678e2aa0b9a402a40ec84802f95740ff29794d9fd61ad853c194ecbfb80e0cf43a14eac3333225a576789915820193e5d9e5734485ed5d7379149371482efa040e96b142c90001f65e77dbfe6d238032856ea8f9fad0458bd0fb39c6aa111718a0bae8bfa97e6d372cfbea8e29447f5b3b8e4fab7e13488351eb3b809929aa7a189e39f96406751e3e828c63de4016b1412ef69001ada7776126c16a718533cdc52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fffa3584d9c39232 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 229, 118, 105, 22, 45, 207, 244, 103, 66, 54, 177, 100, 103, 142, 42, 160, 185, 164, 2, 164, 14, 200, 72, 2, 249, 87, 64, 255, 41, 121, 77, 159, 214, 26, 216, 83, 193, 148, 236, 191, 184, 14, 12, 244, 58, 20, 234, 195, 51, 50, 37, 165, 118, 120, 153, 21, 130, 1, 147, 229, 217, 229, 115, 68, 133, 237, 93, 115, 121, 20, 147, 113, 72, 46, 250, 4, 14, 150, 177, 66, 201, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f65e77dbfe6d238032856ea8f9fad045, }, ), received_events: EventHandle { count: 1662297505829474443, key: EventKey( [ 160, 186, 232, 191, 169, 126, 109, 55, 44, 251, 234, 142, 41, 68, 127, 91, 59, 142, 79, 171, 126, 19, 72, 131, ], ), }, sent_events: EventHandle { count: 8838922957926165329, key: EventKey( [ 158, 57, 249, 100, 6, 117, 30, 62, 130, 140, 99, 222, 64, 22, 177, 65, 46, 246, 144, 1, 173, 167, 119, 97, ], ), }, sequence_number: 14253105043923976486, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(580bf8730d38e0631ecc258f770f0a01ebed7a4f6848de2fdf8593206a82d792): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00133b9dd141cfdb6cd5d01dc3d729d0a260b4b0b82b7c318fa825efab288afac45a6cfa7233c2c4e491b5f713d1b710c57bbd68f0201ba72f359a8200b927ae2e20b4aaad261017b8cda291625be174193f4b562616cd15f18d9c53e03af5418ebdbdd980a8c2c507b8c834044108e63e8272bab1c1078f0f1ce77010943ba5e18cd2cffcb13fa4945be97b68a7bed8156775e5f33e60cd1000b9d2e4368ef7f052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812d74c5e451351fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 185, 221, 20, 28, 253, 182, 205, 93, 1, 220, 61, 114, 157, 10, 38, 11, 75, 11, 130, 183, 195, 24, 250, 130, 94, 250, 178, 136, 175, 172, 69, 166, 207, 167, 35, 60, 44, 78, 73, 27, 95, 113, 61, 27, 113, 12, 87, 187, 214, 143, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ba72f359a8200b927ae2e20b4aaad261, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b8cda291625be174193f4b562616cd1, }, ), received_events: EventHandle { count: 6102099588252506207, key: EventKey( [ 235, 219, 221, 152, 10, 140, 44, 80, 123, 140, 131, 64, 68, 16, 142, 99, 232, 39, 43, 171, 28, 16, 120, 240, ], ), }, sent_events: EventHandle { count: 6825841891191803633, key: EventKey( [ 205, 44, 255, 203, 19, 250, 73, 69, 190, 151, 182, 138, 123, 237, 129, 86, 119, 94, 95, 51, 230, 12, 209, 0, ], ), }, sequence_number: 396298523314658571, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58677ba3a9fafffd3094a5b2625db79ce36ee6a8c98110a9fca24e61148f1271): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920125bdaaa74b1eb9149f38a99621a143d2cfa3017c83148e24859c5d2b31e2c3c638d6e841702201eaae387d269665d547f38d87ac9b8377014ca1e638de5791685133b0f2c8ade4373fcc025536042e1218cc592886b8f7a3fe291d513d30edb44dd0ed9647162ef50aed88a8b9c1ed23481842442f9969221bb9ae00b52c2b0008945117a1e5a8f2e2c41cea3fd42f091a752101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b6eef475aac9aa3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 170, 167, 75, 30, 185, 20, 159, 56, 169, 150, 33, 161, 67, 210, 207, 163, 1, 124, 131, 20, 142, 36, 133, 156, 93, 43, 49, 226, 195, 198, 56, 214, 232, 65, 112, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eaae387d269665d547f38d87ac9b8377, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4ca1e638de5791685133b0f2c8ade437, }, ), received_events: EventHandle { count: 1309989173012384831, key: EventKey( [ 204, 89, 40, 134, 184, 247, 163, 254, 41, 29, 81, 61, 48, 237, 180, 77, 208, 237, 150, 71, 22, 46, 245, 10, ], ), }, sent_events: EventHandle { count: 5198259811214985453, key: EventKey( [ 66, 68, 47, 153, 105, 34, 27, 185, 174, 0, 181, 44, 43, 0, 8, 148, 81, 23, 161, 229, 168, 242, 226, 196, ], ), }, sequence_number: 8438066952861116956, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58c6a8f55af91e51e838bbd1148e9367aec27887e8a08ca8e1f95a2dd4d8b9ac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781be31fadac543003c01ad39165ff6d00261d680134316434419b59e20001885a3f7e48797c41445591c8cd0312ada9981cc6660dd41118f946f3ace5952ac6e8072f1f7b365c5533f19488b632d9942d005e1f2e86a8511817d418bdc573609b8986dceecefb7327be6127e5710259cb1c7792581497cf8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0e9435406e6aeeb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 227, 31, 173, 172, 84, 48, 3, 192, 26, 211, 145, 101, 255, 109, 0, 38, 29, 104, 1, 52, 49, 100, 52, 65, 155, 89, 226, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 885a3f7e48797c41445591c8cd0312ad, }, ), received_events: EventHandle { count: 1284666528769022121, key: EventKey( [ 249, 70, 243, 172, 229, 149, 42, 198, 232, 7, 47, 31, 123, 54, 92, 85, 51, 241, 148, 136, 182, 50, 217, 148, ], ), }, sent_events: EventHandle { count: 5884100445812424749, key: EventKey( [ 23, 212, 24, 189, 197, 115, 96, 155, 137, 134, 220, 238, 206, 251, 115, 39, 190, 97, 39, 229, 113, 2, 89, 203, ], ), }, sequence_number: 10146494599130150684, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58dc2baf06255c2ddecf16b8e77cfea6339294a965046c6ae2dfc987f088f42c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a1dec4b910cb6ea03b46420e6322d87daa6fbf10828116338bf6f2fc0fb480001348b39e01aeab20610f323410a4e4040afe2a5ee04584d49189e5c525163adc795b54c004559fe8e585fa52c69a48e07da4e774c04cd770e181841ac05819ddf4b24ac854fbe49e1bda20fe2a8e87f1ef5729222c1e7d6b74a0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a5ee95b1bd6be6e7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 75, 145, 12, 182, 234, 3, 180, 100, 32, 230, 50, 45, 135, 218, 166, 251, 241, 8, 40, 17, 99, 56, 191, 111, 47, 192, 251, 72, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 348b39e01aeab20610f323410a4e4040, }, ), received_events: EventHandle { count: 5281974716182422191, key: EventKey( [ 158, 92, 82, 81, 99, 173, 199, 149, 181, 76, 0, 69, 89, 254, 142, 88, 95, 165, 44, 105, 164, 142, 7, 218, ], ), }, sent_events: EventHandle { count: 1733454629008340814, key: EventKey( [ 65, 172, 5, 129, 157, 223, 75, 36, 172, 133, 79, 190, 73, 225, 189, 162, 15, 226, 168, 232, 127, 30, 245, 114, ], ), }, sequence_number: 813664816332874386, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58e3ecb921b90df552397cba4ba351490f7d9c979bb84f43994e595f449ab87b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155a9ff8854b94629f1fc562408157103b268d580bb618da051c5685e3ec32724023b91602f5d000c603dcf918a4c62f8d1a434e790deea4f528d0a4c51e88b985cf24e80d10492fafbb44ecbc8f9d5da5b6c7f27bd2e0001a642afb2a8dc0ea737f05f0eccbd915281f6733c93bc757018dad6ac82a962d9222b4167466791e177335838b7608b170ff55d48d9af9d880618e802823a109dd27c36340fc323d25df081e494eeb973dbc0ade475b9ed996ae42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708973c7b55c552cdf2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 255, 136, 84, 185, 70, 41, 241, 252, 86, 36, 8, 21, 113, 3, 178, 104, 213, 128, 187, 97, 141, 160, 81, 197, 104, 94, 62, 195, 39, 36, 2, 59, 145, 96, 47, 93, 0, 12, 96, 61, 207, 145, 138, 76, 98, 248, 209, 164, 52, 231, 144, 222, 234, 79, 82, 141, 10, 76, 81, 232, 139, 152, 92, 242, 78, 128, 209, 4, 146, 250, 251, 180, 78, 203, 200, 249, 213, 218, 91, 108, 127, 39, 189, 46, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a642afb2a8dc0ea737f05f0eccbd9152, }, ), received_events: EventHandle { count: 8103590445083522689, key: EventKey( [ 218, 214, 172, 130, 169, 98, 217, 34, 43, 65, 103, 70, 103, 145, 225, 119, 51, 88, 56, 183, 96, 139, 23, 15, ], ), }, sent_events: EventHandle { count: 470799539650452981, key: EventKey( [ 232, 2, 130, 58, 16, 157, 210, 124, 54, 52, 15, 195, 35, 210, 93, 240, 129, 228, 148, 238, 185, 115, 219, 192, ], ), }, sequence_number: 16459137034476709037, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a1d03e8c9e9e7529638ed5a15f29115cb571b9d7a3a3947eb5ea65e965330af): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c0016383b7c150ffeea9f08a94245e9461f85b880622e4321572fdda7a80f5683f5dd92d2f9ab0351112c4bbe0cb8c99eb788b67e70dd7ef6a94ebbe0ac153de60602f96978aa309e9a54eb42279164fd3414c01498b2cbbeed12574091b6fa84069e43b9fc601ddffb79575e0fefa01510ee17991036600108a0bff799c152418e1b4e879669ad3a9c1b0aa139df0a0db671335f2df6457b388f28625d43b20531811017ec280c84bd1017d1a03c42dbbae8f938ce160a3036af609cbf45ad10cc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088dbe797b14ac439e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 183, 193, 80, 255, 238, 169, 240, 138, 148, 36, 94, 148, 97, 248, 91, 136, 6, 34, 228, 50, 21, 114, 253, 218, 122, 128, 245, 104, 63, 93, 217, 45, 47, 154, 176, 53, 17, 18, 196, 187, 224, 203, 140, 153, 235, 120, 139, 103, 231, 13, 215, 239, 106, 148, 235, 190, 10, 193, 83, 222, 96, 96, 47, 150, 151, 138, 163, 9, 233, 165, 78, 180, 34, 121, 22, 79, 211, 65, 76, 1, 73, 139, 44, 187, 238, 209, 37, 116, 9, 27, 111, 168, 64, 105, 228, 59, 159, 198, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ddffb79575e0fefa01510ee179910366, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2600156407660251664, key: EventKey( [ 225, 180, 232, 121, 102, 154, 211, 169, 193, 176, 170, 19, 157, 240, 160, 219, 103, 19, 53, 242, 223, 100, 87, 179, ], ), }, sent_events: EventHandle { count: 5989853286751466120, key: EventKey( [ 17, 1, 126, 194, 128, 200, 75, 209, 1, 125, 26, 3, 196, 45, 187, 174, 143, 147, 140, 225, 96, 163, 3, 106, ], ), }, sequence_number: 14343069101852396022, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a8764af24142b3211b80d734048e08f6e9f5dfda36071ee9cde1a81a4c108da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011fc00ee02680bd376ed6a879072033c163fc72dff6c540e9fbbdacea2cfbf99a019ce7eeed6dd384c5efbc24f9e5fa1e6901aac693f9ac2ef9566d719532521a872db2d8f389eef6be7418fc9b09880d6e85b94cc60bc62b0c974421611724cac55c4b49407aa96d61155d1807b0ae8cb7004b355e29dc3191d08f13f11390f26450861e0e42f33f29b02fe92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082724d6347cf5c01a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 14, 224, 38, 128, 189, 55, 110, 214, 168, 121, 7, 32, 51, 193, 99, 252, 114, 223, 246, 197, 64, 233, 251, 189, 172, 234, 44, 251, 249, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9ce7eeed6dd384c5efbc24f9e5fa1e69, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: aac693f9ac2ef9566d719532521a872d, }, ), received_events: EventHandle { count: 8412432658351773874, key: EventKey( [ 252, 155, 9, 136, 13, 110, 133, 185, 76, 198, 11, 198, 43, 12, 151, 68, 33, 97, 23, 36, 202, 197, 92, 75, ], ), }, sent_events: EventHandle { count: 6707374343660912713, key: EventKey( [ 7, 176, 174, 140, 183, 0, 75, 53, 94, 41, 220, 49, 145, 208, 143, 19, 241, 19, 144, 242, 100, 80, 134, 30, ], ), }, sequence_number: 16802842425955664398, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a9da43b498d97c35f7c83e4694d79b185e0b604d643d81f823ac9ee6e969247): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60139fe042be6b2bc3c74c393a32433a3b15b93966264f12ba44982dd592e1c7da5b049d3f400f4785aadf234a2b48da0c27c63d553efaf7162cd5301fb60fd43f1db2884926f2f39ff4955d101d74af3883d1ef829337fd9be93fc2f79d2902b3bfb97b61d18be7097d8e777287c0d26aae99c10e635144ef9ccbbe656b105e118ad65f8c029185b30ef3f09ed0a21c1f984d0b32a008aa3a89f68a4a1d8805f32c4b0cf607b9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e928bb42981f6713 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 4, 43, 230, 178, 188, 60, 116, 195, 147, 163, 36, 51, 163, 177, 91, 147, 150, 98, 100, 241, 43, 164, 73, 130, 221, 89, 46, 28, 125, 165, 176, 73, 211, 244, 0, 244, 120, 90, 173, 242, 52, 162, 180, 141, 160, 194, 124, 99, 213, 83, 239, 175, 113, 98, 205, 83, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fb60fd43f1db2884926f2f39ff4955d1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d74af3883d1ef829337fd9be93fc2f79, }, ), received_events: EventHandle { count: 2141065778146545874, key: EventKey( [ 190, 112, 151, 216, 231, 119, 40, 124, 13, 38, 170, 233, 156, 16, 230, 53, 20, 78, 249, 204, 187, 230, 86, 177, ], ), }, sent_events: EventHandle { count: 3008677666662965509, key: EventKey( [ 91, 48, 239, 63, 9, 237, 10, 33, 193, 249, 132, 208, 179, 42, 0, 138, 163, 168, 159, 104, 164, 161, 216, 128, ], ), }, sequence_number: 11347770131230241375, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5aabac9268be5896077e87b402c2ed8f53ebf0980391afbf713c781cd1c7da81): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c44c03e84c5addb2c3676ce6d00010e1f9f585a29ac2e06e1d661d254201a0888ac81761a7c7418bc554b56cc492937414d2824940c40824d88f3b49a2eccc178ed3573a5c60e0718ed23cc032c1f9e564e4c0ccfa02402d9bc1675f6ad40d0985e8c85233a4f89042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70897cdd5625e2d4a5c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, 192, 62, 132, 197, 173, 219, 44, 54, 118, 206, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e1f9f585a29ac2e06e1d661d254201a, }, ), received_events: EventHandle { count: 8393612901795792904, key: EventKey( [ 188, 85, 75, 86, 204, 73, 41, 55, 65, 77, 40, 36, 148, 12, 64, 130, 77, 136, 243, 180, 154, 46, 204, 193, ], ), }, sent_events: EventHandle { count: 508562221844262264, key: EventKey( [ 237, 35, 204, 3, 44, 31, 158, 86, 78, 76, 12, 207, 160, 36, 2, 217, 188, 22, 117, 246, 173, 64, 208, 152, ], ), }, sequence_number: 326879559083723870, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5b2ceb169bfb78b05db89a453ebe5dad46089d513c93a1f376c191f657cf0bb8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b0ea8d2ce71e4a00aac5662938bfbc80172429317711e889a72a36c1744e1835801ae0f70c4ab47a8aa5e7271341ef15938dc501ee46573f30218076d787321196f1d30c7bbc9187aa8dab2f8889110e2c788fdbeac2e5bf182331832bcdc486a1d2fe07e33490a00ecae6bcdd643a110a31180d4434627eb1b87712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844080b1993ba6baa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 210, 206, 113, 228, 160, 10, 172, 86, 98, 147, 139, 251, 200, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 72429317711e889a72a36c1744e18358, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae0f70c4ab47a8aa5e7271341ef15938, }, ), received_events: EventHandle { count: 212640488872628444, key: EventKey( [ 7, 109, 120, 115, 33, 25, 111, 29, 48, 199, 187, 201, 24, 122, 168, 218, 178, 248, 136, 145, 16, 226, 199, 136, ], ), }, sent_events: EventHandle { count: 3711794416834100989, key: EventKey( [ 50, 188, 220, 72, 106, 29, 47, 224, 126, 51, 73, 10, 0, 236, 174, 107, 205, 214, 67, 161, 16, 163, 17, 128, ], ), }, sequence_number: 8180537944931976148, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bc04a070ff8e41a3c693708d2de2a1a20687b4f827084f4b84d138a15c9c890): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e5eb3141cd704f72c5f95595bc1f801d7eaff095c7c486f50cd481805e9862600358bf8a05fe40c1318487273bd23ea83a23153bb30c97c63b021066f277c13878798232c3cd1f57b04183a08e821691f614879f5b34adcf9dccb66bc5225e08fb67764ab680ef10f71c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086231a61177b88680 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 94, 179, 20, 28, 215, 4, 247, 44, 95, 149, 89, 91, 193, 248, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d7eaff095c7c486f50cd481805e98626, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1372723085814827829, key: EventKey( [ 72, 114, 115, 189, 35, 234, 131, 162, 49, 83, 187, 48, 201, 124, 99, 176, 33, 6, 111, 39, 124, 19, 135, 135, ], ), }, sent_events: EventHandle { count: 323122077293618072, key: EventKey( [ 58, 8, 232, 33, 105, 31, 97, 72, 121, 245, 179, 74, 220, 249, 220, 203, 102, 188, 82, 37, 224, 143, 182, 119, ], ), }, sequence_number: 13866882255653743460, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bcb5e4751690fd0c1941978ef70d797e5b2ee5e10374ab301e84268f0faf7fb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800123f5ee519273b1049924696ce23a2172568dbd32e7931c48da9ac7c78ef05da5262c731100018a7667c03ec08b65480887bec9c26d7ae0ab0b47252eb21a18e1668f8cad82336085c375e16e702dece046df9c4a226f80218c194f443edb7018040ed90bc55cbb218b8b2f0b470b10104db95335ed3ab67bfd199b8aed337bce2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086d7d5e345fa3dd8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 238, 81, 146, 115, 177, 4, 153, 36, 105, 108, 226, 58, 33, 114, 86, 141, 189, 50, 231, 147, 28, 72, 218, 154, 199, 199, 142, 240, 93, 165, 38, 44, 115, 17, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8a7667c03ec08b65480887bec9c26d7a, }, ), received_events: EventHandle { count: 1923650728481237984, key: EventKey( [ 225, 102, 143, 140, 173, 130, 51, 96, 133, 195, 117, 225, 110, 112, 45, 236, 224, 70, 223, 156, 74, 34, 111, 128, ], ), }, sent_events: EventHandle { count: 8132162015253335073, key: EventKey( [ 4, 14, 217, 11, 197, 92, 187, 33, 139, 139, 47, 11, 71, 11, 16, 16, 77, 185, 83, 53, 237, 58, 182, 123, ], ), }, sequence_number: 14878542889274251773, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bfa2e9b3e4967596c592da96aa44a7c0da0aa684d1bc05ae576c55d7190f0a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9550888fbd1d9a53c8318000059135d7911e1357a18dde7433afdae2407465ee7a6c28091226ded1d0b67e5fd9436ed108d1583eb7f18b68740348a6fbb58f81659a9995340e4995993d9901712ac66bb81c25327d07f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708872b074726e2f550 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 251, 209, 217, 165, 60, 131, 24, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8806192111559709529, key: EventKey( [ 221, 231, 67, 58, 253, 174, 36, 7, 70, 94, 231, 166, 194, 128, 145, 34, 109, 237, 29, 11, 103, 229, 253, 148, ], ), }, sent_events: EventHandle { count: 9217605190928100662, key: EventKey( [ 182, 135, 64, 52, 138, 111, 187, 88, 248, 22, 89, 169, 153, 83, 64, 228, 153, 89, 147, 217, 144, 23, 18, 172, ], ), }, sequence_number: 9209904478671715174, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5cf229c3b1c1f4ded0b7329f46155b69582b9d04e88b9c998dd6395b37462cc0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01518f6a7034a466d9d138c4297b366dcc5cabc363fa52a69f25b9120dd8582f071bb341c5c48d897f2399b56ef3f55131155f817455200e34d023ddb175550958612eaf0133218054498c4bb4448d9dcf13a500007c1be0b09c1e3e68188c546ef6fa3f62cab52e63aeda49d6906f1389ebf59204d62ba6e106942d023418d1326aa6db0e482a6639bd05cee17713d59148679e2c540ee10059ee5a843b252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089ce7f203781932c2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 106, 112, 52, 164, 102, 217, 209, 56, 196, 41, 123, 54, 109, 204, 92, 171, 195, 99, 250, 82, 166, 159, 37, 185, 18, 13, 216, 88, 47, 7, 27, 179, 65, 197, 196, 141, 137, 127, 35, 153, 181, 110, 243, 245, 81, 49, 21, 95, 129, 116, 85, 32, 14, 52, 208, 35, 221, 177, 117, 85, 9, 88, 97, 46, 175, 1, 51, 33, 128, 84, 73, 140, 75, 180, 68, 141, 157, 207, 19, 165, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7511474886831774588, key: EventKey( [ 140, 84, 110, 246, 250, 63, 98, 202, 181, 46, 99, 174, 218, 73, 214, 144, 111, 19, 137, 235, 245, 146, 4, 214, ], ), }, sent_events: EventHandle { count: 3747607953719535147, key: EventKey( [ 209, 50, 106, 166, 219, 14, 72, 42, 102, 57, 189, 5, 206, 225, 119, 19, 213, 145, 72, 103, 158, 44, 84, 14, ], ), }, sequence_number: 2682883529109995745, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5d15c015aea0f7fb0875787947bccfc4b67a045d404a90865e57240e0c0f0542): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601590dca499ec762c4b656f510fe1f451fd9309a08565f0250e275e405057515e5438020e3588b40b1fdcffce14d9df6ec9135141991c2367db60a5d1c9d572f75c3d7c530fb79eee2c60ac562bd761d2f59521b4ba871ccae39ae0135eb4cdccaa02c1ac6c1ce10dc092a2e0120a36a5d3ce2f90d29ad5de3662ecd9d2c18a409a983b0651848102b0b5828389cf2385c1a59500dcfd14aba356521803de7b2deaefcef7b3618cda34e37225f2b9a319445acdde25051a1b9e026c569f199f216458956e59cff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086b3854c8d8ffc395 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 202, 73, 158, 199, 98, 196, 182, 86, 245, 16, 254, 31, 69, 31, 217, 48, 154, 8, 86, 95, 2, 80, 226, 117, 228, 5, 5, 117, 21, 229, 67, 128, 32, 227, 88, 139, 64, 177, 253, 207, 252, 225, 77, 157, 246, 236, 145, 53, 20, 25, 145, 194, 54, 125, 182, 10, 93, 28, 157, 87, 47, 117, 195, 215, 197, 48, 251, 121, 238, 226, 198, 10, 197, 98, 189, 118, 29, 47, 89, 82, 27, 75, 168, 113, 204, 174, 57, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 35eb4cdccaa02c1ac6c1ce10dc092a2e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 20a36a5d3ce2f90d29ad5de3662ecd9d, }, ), received_events: EventHandle { count: 7327501355766257708, key: EventKey( [ 72, 16, 43, 11, 88, 40, 56, 156, 242, 56, 92, 26, 89, 80, 13, 207, 209, 74, 186, 53, 101, 33, 128, 61, ], ), }, sent_events: EventHandle { count: 3925995368728146663, key: EventKey( [ 205, 163, 78, 55, 34, 95, 43, 154, 49, 148, 69, 172, 221, 226, 80, 81, 161, 185, 224, 38, 197, 105, 241, 153, ], ), }, sequence_number: 18418848735871440626, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5d3df65646f291c1b6f8717c298998f513b1cb531a09bc30afaa4ea861adc3f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920135c76a8fde7163ef5dc8d7ecf4857350aa76737e6c88373279a133a229d6ee7f7e88688b043219927b3ef945da5b63e6e3990457d20e0001fdfc8ecba22fe9ab84c036c160d73133d9eaa3255113a61418aba99f8f4c2ab686b67802e521f58412b696c364291cdcf3122e217c616caa1418214d0ec39ced4360c2fff4fbaa0fd2db8fcf5946a9456f636ed7e0c20974e09c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4027b9da5d6843c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 106, 143, 222, 113, 99, 239, 93, 200, 215, 236, 244, 133, 115, 80, 170, 118, 115, 126, 108, 136, 55, 50, 121, 161, 51, 162, 41, 214, 238, 127, 126, 136, 104, 139, 4, 50, 25, 146, 123, 62, 249, 69, 218, 91, 99, 230, 227, 153, 4, 87, 210, 14, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fdfc8ecba22fe9ab84c036c160d73133, }, ), received_events: EventHandle { count: 1487897966137305817, key: EventKey( [ 171, 169, 159, 143, 76, 42, 182, 134, 182, 120, 2, 229, 33, 245, 132, 18, 182, 150, 195, 100, 41, 28, 220, 243, ], ), }, sent_events: EventHandle { count: 1489121792749547026, key: EventKey( [ 33, 77, 14, 195, 156, 237, 67, 96, 194, 255, 244, 251, 170, 15, 210, 219, 143, 207, 89, 70, 169, 69, 111, 99, ], ), }, sequence_number: 11304162649972987758, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5db424a4fff79e6645c04175c6c4d8d48c11e6ab5e117381a15ee45275e90b92): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97023549238e9ec39b7e9e14758ba2690c91ea46bcea7ab300a09b62dd756d4543aecee71760000c42cedff1486c077184cef05dbfd9268043362cc0e5bdda5f747f6e56399edf2a3c1e3b5bace22cc051832822efa657561e9d043ba3199ce90bbfae17cb326b0befbd785e6ca05fd28442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c7daa79e0d03cab0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 146, 56, 233, 236, 57, 183, 233, 225, 71, 88, 186, 38, 144, 201, 30, 164, 107, 206, 167, 171, 48, 10, 9, 182, 45, 215, 86, 212, 84, 58, 236, 238, 113, 118, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8629044310793071812, key: EventKey( [ 76, 239, 5, 219, 253, 146, 104, 4, 51, 98, 204, 14, 91, 221, 165, 247, 71, 246, 229, 99, 153, 237, 242, 163, ], ), }, sent_events: EventHandle { count: 417747136729703361, key: EventKey( [ 50, 130, 46, 250, 101, 117, 97, 233, 208, 67, 186, 49, 153, 206, 144, 187, 250, 225, 124, 179, 38, 176, 190, 251, ], ), }, sequence_number: 4911453594968294871, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5e123344bd4467c1fecf86505b8c6f6f25f3ddee9659479073bebbd2cb397bb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d102f57033c6c5ebaf740460aacefc594be0000ed5fa62cb1bbf33f18360589a19db491e6ab0b0bcc15ef103575d89393420459734f05c91b66f9e565183c2df8256530c8fdec1b6e4e4e101fcd5fd1ea5e1548cca8e76c93c71378dca62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ad55411a78cae545 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 87, 3, 60, 108, 94, 186, 247, 64, 70, 10, 172, 239, 197, 148, 190, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4608233213362855917, key: EventKey( [ 54, 5, 137, 161, 157, 180, 145, 230, 171, 11, 11, 204, 21, 239, 16, 53, 117, 216, 147, 147, 66, 4, 89, 115, ], ), }, sent_events: EventHandle { count: 7342548984445601103, key: EventKey( [ 60, 45, 248, 37, 101, 48, 200, 253, 236, 27, 110, 78, 78, 16, 31, 205, 95, 209, 234, 94, 21, 72, 204, 168, ], ), }, sequence_number: 12023617131520421095, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5e7fab44b6eee35b631ce349284362321ae5fa6c640f38fb40df5e243c856008): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141df4b9021d8426dee81245d30f9f7b3eb8a97fcc7bc8a36b944818be7d5e9472d79ba343d08a262888447068f68879597dad6593d51f14f88cff657f6135780c0330191e3730a887c6a229ef91d7af6af8d2a01e1e0573dff33088f7816a5f4860d19c15a4ccd4525224c5418f9f3a2408a8baaf01e570e68c22053b132b63729d46b8d2ba40b969784c29f30186e5d8f72a14383b91938e9528c3beadfc7d905a40414a85768645835c1fc75362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708307607220a1dcebc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 75, 144, 33, 216, 66, 109, 238, 129, 36, 93, 48, 249, 247, 179, 235, 138, 151, 252, 199, 188, 138, 54, 185, 68, 129, 139, 231, 213, 233, 71, 45, 121, 186, 52, 61, 8, 162, 98, 136, 132, 71, 6, 143, 104, 135, 149, 151, 218, 214, 89, 61, 81, 241, 79, 136, 207, 246, 87, 246, 19, 87, 128, 192, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 91e3730a887c6a229ef91d7af6af8d2a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e1e0573dff33088f7816a5f4860d19c1, }, ), received_events: EventHandle { count: 6074267540896173146, key: EventKey( [ 249, 243, 162, 64, 138, 139, 170, 240, 30, 87, 14, 104, 194, 32, 83, 177, 50, 182, 55, 41, 212, 107, 141, 43, ], ), }, sent_events: EventHandle { count: 3503732909852199844, key: EventKey( [ 110, 93, 143, 114, 161, 67, 131, 185, 25, 56, 233, 82, 140, 59, 234, 223, 199, 217, 5, 164, 4, 20, 168, 87, ], ), }, sequence_number: 3924320557077128296, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5ea21c13df7edd0d2787709946beab1ef4b7654254d6c4ac08bea02b3fcd7328): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518b008ccd2eaf72169b731ce2541176a4ac274caeccbc92909000008c47db659e8a1601806dd4efe09258f5e43f89e9205bcb2ff156afd5bea3bcb47085faf62afa2fe1a186182d2424f156811d8145671fbf5269311ffd847cee762991f85eb74f01773aa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e15c64528a871182 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 176, 8, 204, 210, 234, 247, 33, 105, 183, 49, 206, 37, 65, 23, 106, 74, 194, 116, 202, 236, 203, 201, 41, 9, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6963101970902926344, key: EventKey( [ 6, 221, 78, 254, 9, 37, 143, 94, 67, 248, 158, 146, 5, 188, 178, 255, 21, 106, 253, 91, 234, 59, 203, 71, ], ), }, sent_events: EventHandle { count: 1945170963229269768, key: EventKey( [ 97, 130, 210, 66, 79, 21, 104, 17, 216, 20, 86, 113, 251, 245, 38, 147, 17, 255, 216, 71, 206, 231, 98, 153, ], ), }, sequence_number: 12282186930290656543, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f50781398031bcc1b5a029d760fb7ab5dbe510cf9e8530645978fafda77309b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f0152794680ded2e8fa615c94de88ccb2ba4c440a412dec93b8f6f98bce7a49f87a8b7a7fd04ca0db37385920cd346cc300eec8e0ea9791042a37fa883d0e24f8f18f1573ae5337a5f428f87334e3a558e9766f230000bb70172e0030176018fec7fc2fb3d823ed7f5fbf9627c88c3d39e887a1781d5cc0a2de4c1ea535617c18ed9643de4dc813f21b5de6535755b0377b178f327d5dfbb498105dfd3129352c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b7bb74bac66ec51 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 70, 128, 222, 210, 232, 250, 97, 92, 148, 222, 136, 204, 178, 186, 76, 68, 10, 65, 45, 236, 147, 184, 246, 249, 139, 206, 122, 73, 248, 122, 139, 122, 127, 208, 76, 160, 219, 55, 56, 89, 32, 205, 52, 108, 195, 0, 238, 200, 224, 234, 151, 145, 4, 42, 55, 250, 136, 61, 14, 36, 248, 241, 143, 21, 115, 174, 83, 55, 165, 244, 40, 248, 115, 52, 227, 165, 88, 233, 118, 111, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6924055729436848315, key: EventKey( [ 254, 199, 252, 47, 179, 216, 35, 237, 127, 95, 191, 150, 39, 200, 140, 61, 57, 232, 135, 161, 120, 29, 92, 192, ], ), }, sent_events: EventHandle { count: 8962503716738227874, key: EventKey( [ 237, 150, 67, 222, 77, 200, 19, 242, 27, 93, 230, 83, 87, 85, 176, 55, 123, 23, 143, 50, 125, 93, 251, 180, ], ), }, sequence_number: 3185497606115365016, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f6151b951f85c8ec2a7db141947c4203472a14d914aff1cd4f16bdf41a25374): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e92d819c0be21d90871773b86b669e17d7e719f2eb237624d07f15d40d0f067480fb1a21d05770462bb35c332c2d56f2bf69ca46a6fe091118c0a42804000d9d772839af0bc59c7b244db2edfd90caa1b70d5f0f04a720f4249262b16b5f4000156fd26e9632e9f802930fc24939db08261b5f68a7fb4943c1849e4f4991ab43b6342678419da9ca3e6a73ab5d69b9e190a4a94d0d485ebda4518876262d25290f28c834ec8363f463362920bfb20e3f97ea907a0848eae9171392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708183880c77e9112bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 216, 25, 192, 190, 33, 217, 8, 113, 119, 59, 134, 182, 105, 225, 125, 126, 113, 159, 46, 178, 55, 98, 77, 7, 241, 93, 64, 208, 240, 103, 72, 15, 177, 162, 29, 5, 119, 4, 98, 187, 53, 195, 50, 194, 213, 111, 43, 246, 156, 164, 106, 111, 224, 145, 17, 140, 10, 66, 128, 64, 0, 217, 215, 114, 131, 154, 240, 188, 89, 199, 178, 68, 219, 46, 223, 217, 12, 170, 27, 112, 213, 240, 240, 74, 114, 15, 66, 73, 38, 43, 22, 181, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 56fd26e9632e9f802930fc24939db082, }, ), received_events: EventHandle { count: 4365312398714123617, key: EventKey( [ 73, 228, 244, 153, 26, 180, 59, 99, 66, 103, 132, 25, 218, 156, 163, 230, 167, 58, 181, 214, 155, 158, 25, 10, ], ), }, sent_events: EventHandle { count: 5033594493573567562, key: EventKey( [ 135, 98, 98, 210, 82, 144, 242, 140, 131, 78, 200, 54, 63, 70, 51, 98, 146, 11, 251, 32, 227, 249, 126, 169, ], ), }, sequence_number: 4139249711431589895, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f662adc48a199d8c973762c7ca15394448210bcc0e3deab549393be5beb8b46): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32772ae9060df6ff7d7435f96ea38e2bd1c3c5b28140b3aa77338f1ddbf57579f301e7050748c04d9e7a47129f19ba2738838600001f62e4d43b814c15183f27e517d1b2c888a02b8766492853149e8a31e6f53d8985e32fab017da7324b18e7e8a8cda141f3e75ea3fc5643c5930eaa48bc9ba4f8bc1789aed3f22fd7179d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087443f29a79fd8efa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, 42, 233, 6, 13, 246, 255, 125, 116, 53, 249, 110, 163, 142, 43, 209, 195, 197, 178, 129, 64, 179, 170, 119, 51, 143, 29, 219, 245, 117, 121, 243, 1, 231, 5, 7, 72, 192, 77, 158, 122, 71, 18, 159, 25, 186, 39, 56, 131, 134, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1534743667001287199, key: EventKey( [ 63, 39, 229, 23, 209, 178, 200, 136, 160, 43, 135, 102, 73, 40, 83, 20, 158, 138, 49, 230, 245, 61, 137, 133, ], ), }, sent_events: EventHandle { count: 5418577457020874723, key: EventKey( [ 231, 232, 168, 205, 161, 65, 243, 231, 94, 163, 252, 86, 67, 197, 147, 14, 170, 72, 188, 155, 164, 248, 188, 23, ], ), }, sequence_number: 11319752789356424841, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f6840a6db088a2b0ca7a169b72931dd3105b2cf6b05ae0cc9881fbd82eef79f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130cd4050be577097f0a8a16bb3d0e9d0b8a77ecf99d484a56a8e50eff2ea1d986f1cc688047ffe0aea75f9ecc87613497700010aefc42e677bd24f0c7ef554f49f98b6348cc19f3d8ad00f1831eab3f4c23a2e182fd0e744fb09071a7ba9e7988603bea73d116d474de2957e187fd62e5dae4033ff612342faf3a502b7ca633a9d508cbf902f5d48821144809f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70886e6586bd454a7a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 64, 80, 190, 87, 112, 151, 240, 168, 161, 107, 179, 208, 233, 208, 184, 167, 126, 207, 153, 212, 132, 165, 106, 142, 80, 239, 242, 234, 29, 152, 111, 28, 198, 136, 4, 127, 254, 10, 234, 117, 249, 236, 200, 118, 19, 73, 119, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0aefc42e677bd24f0c7ef554f49f98b6, }, ), received_events: EventHandle { count: 1139562703002635316, key: EventKey( [ 49, 234, 179, 244, 194, 58, 46, 24, 47, 208, 231, 68, 251, 9, 7, 26, 123, 169, 231, 152, 134, 3, 190, 167, ], ), }, sent_events: EventHandle { count: 9121445441847497021, key: EventKey( [ 127, 214, 46, 93, 174, 64, 51, 255, 97, 35, 66, 250, 243, 165, 2, 183, 202, 99, 58, 157, 80, 140, 191, 144, ], ), }, sequence_number: 11493261091040419119, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6077686e77523c227bb56ff2d242b3ebc12e6da1fa1ebdcaa0b11b8aab5db167): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a1f9c0f6a71ef20b9ce92b3689520b73072720d52a070c02692a29baa9c7d2e32e418a300abab282ed5b99ca303ad22cf145b57f51b51669713e5bfd8c1020bc958c9da61e3477b59fca244699823916335a91b5e75142cc4ba2000015627b9e1d96464a5c0bd8a19e572fe13f87f432c9726fa5c18c737812b19ac5f6bfc0d37f0dbe28ef14f7c21ed7ce755ed571b11fc538963161805b40015afb0dd123e71eeedb3a2db88ae621ce96cf89a6362c919302a7b266f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083eeecf35d38e3f45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 156, 15, 106, 113, 239, 32, 185, 206, 146, 179, 104, 149, 32, 183, 48, 114, 114, 13, 82, 160, 112, 192, 38, 146, 162, 155, 170, 156, 125, 46, 50, 228, 24, 163, 0, 171, 171, 40, 46, 213, 185, 156, 163, 3, 173, 34, 207, 20, 91, 87, 245, 27, 81, 102, 151, 19, 229, 191, 216, 193, 2, 11, 201, 88, 201, 218, 97, 227, 71, 123, 89, 252, 162, 68, 105, 152, 35, 145, 99, 53, 169, 27, 94, 117, 20, 44, 196, 186, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5627b9e1d96464a5c0bd8a19e572fe13, }, ), received_events: EventHandle { count: 6699709826391572472, key: EventKey( [ 199, 55, 129, 43, 25, 172, 95, 107, 252, 13, 55, 240, 219, 226, 142, 241, 79, 124, 33, 237, 124, 231, 85, 237, ], ), }, sent_events: EventHandle { count: 1613284085333039959, key: EventKey( [ 5, 180, 0, 21, 175, 176, 221, 18, 62, 113, 238, 237, 179, 162, 219, 136, 174, 98, 28, 233, 108, 248, 154, 99, ], ), }, sequence_number: 8009224408450845026, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(61eb73ea5e891cdd0f7421374328828d1aefe885f3f6df48fb7ee553ff82fcb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01209284e7bc1007034a6e619573a5afb6141e0d231fec14466dabe090a3081993f401adb4aa1ba2c61a15d974e8cc01f0878d01bd4403a1d2985f93d309dc232dbf39c9f2f913963ab2cb6e18f065eee3da17325f2f06ca8bcd48118f0ff335823b16d4e7cb449c748d38db3e182b685cecfab3653c302018dd785fe9aa7d827d587312b2f72fabaa0d551a908d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084107ea2b33e17bbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 132, 231, 188, 16, 7, 3, 74, 110, 97, 149, 115, 165, 175, 182, 20, 30, 13, 35, 31, 236, 20, 70, 109, 171, 224, 144, 163, 8, 25, 147, 244, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: adb4aa1ba2c61a15d974e8cc01f0878d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd4403a1d2985f93d309dc232dbf39c9, }, ), received_events: EventHandle { count: 7983670729140074994, key: EventKey( [ 240, 101, 238, 227, 218, 23, 50, 95, 47, 6, 202, 139, 205, 72, 17, 143, 15, 243, 53, 130, 59, 22, 212, 231, ], ), }, sent_events: EventHandle { count: 4529276030449108171, key: EventKey( [ 43, 104, 92, 236, 250, 179, 101, 60, 48, 32, 24, 221, 120, 95, 233, 170, 125, 130, 125, 88, 115, 18, 178, 247, ], ), }, sequence_number: 10200682108598004527, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6236eaefb86c58c4b8de42bd4a25063667090ac2f2526e5622a62771ccb5c0fc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9721572d3efe1c98bec704390065f8d004eee5d906159c100013fceac6c8ebe23cdfc8cffa79e0eb235fccafb5b4974da07187d907a1a59ddaeddbe8d114d1e6341a97a5dde354ca74e8e94558836c7c9392c18a8ca3308ec0082eb021f8ccbd89cb9e6a7325e41fd2b9746824c19168a71d3872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708af6e909d798a5aef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 211, 239, 225, 201, 139, 236, 112, 67, 144, 6, 95, 141, 0, 78, 238, 93, 144, 97, 89, 193, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3fceac6c8ebe23cdfc8cffa79e0eb235, }, ), received_events: EventHandle { count: 565892561613081340, key: EventKey( [ 125, 144, 122, 26, 89, 221, 174, 221, 190, 141, 17, 77, 30, 99, 65, 169, 122, 93, 222, 53, 76, 167, 78, 142, ], ), }, sent_events: EventHandle { count: 3186800068791915924, key: EventKey( [ 168, 202, 51, 8, 236, 0, 130, 235, 2, 31, 140, 203, 216, 156, 185, 230, 167, 50, 94, 65, 253, 43, 151, 70, ], ), }, sequence_number: 9787291253096402050, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(63094ed5135207959f5d5999505e7c6628c5529299a91fad0e5c873d4f892d30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770a9dd17689e4af507d73820143da962b3cc13dfd271c9bd4560ae45701e8752a89ff4ce4f88b5b24b847f4f853af9051f04366417a181649348d4a2b54a156db56efa656024f01649dfd743134a2f42bb3fd5843bd2d187fabeb994bb646b3b086750d247650543df764e9a5ad1aa7134fcebf327892542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cea40b83862964eb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 209, 118, 137, 228, 175, 80, 125, 115, 130, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 43da962b3cc13dfd271c9bd4560ae457, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e8752a89ff4ce4f88b5b24b847f4f853, }, ), received_events: EventHandle { count: 8809434788094120111, key: EventKey( [ 22, 73, 52, 141, 74, 43, 84, 161, 86, 219, 86, 239, 166, 86, 2, 79, 1, 100, 157, 253, 116, 49, 52, 162, ], ), }, sent_events: EventHandle { count: 3295864551797631988, key: EventKey( [ 127, 171, 235, 153, 75, 182, 70, 179, 176, 134, 117, 13, 36, 118, 80, 84, 61, 247, 100, 233, 165, 173, 26, 167, ], ), }, sequence_number: 6094065405147369235, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6393434fc42b6146a7e6b02e3a92dc0663780dcfac5ec07bad46bfd3b10beaa9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501586bc56247777cd7e9db499d8b2adb291f3b64a2eb33bb259c241b04c45f374043770a61066b3a7cf18475091865a8c900d9fa5acd5401362a955254c0ebbb2c31b0e2f18663184e09f3f26e02ec58132df7438a87c7a22ec50122d36da03ba4a243a477cb9a6f2b2e7e00e060f3f12cd22d3018ef8f4b9adb135824974b5b68c865f7af03c86c924bef148dce8dfa6bbeacd246182afbc2a00a2eeb3c98c9d5a52fe64dffb06fb38babdd23a57ab28b11bc9a7d072101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852907342222e0c23 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 197, 98, 71, 119, 124, 215, 233, 219, 73, 157, 139, 42, 219, 41, 31, 59, 100, 162, 235, 51, 187, 37, 156, 36, 27, 4, 196, 95, 55, 64, 67, 119, 10, 97, 6, 107, 58, 124, 241, 132, 117, 9, 24, 101, 168, 201, 0, 217, 250, 90, 205, 84, 1, 54, 42, 149, 82, 84, 192, 235, 187, 44, 49, 176, 226, 241, 134, 99, 24, 78, 9, 243, 242, 110, 2, 236, 88, 19, 45, 247, 67, 138, 135, 199, 162, 46, 197, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 22d36da03ba4a243a477cb9a6f2b2e7e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3471661978252173536, key: EventKey( [ 239, 143, 75, 154, 219, 19, 88, 36, 151, 75, 91, 104, 200, 101, 247, 175, 3, 200, 108, 146, 75, 239, 20, 141, ], ), }, sent_events: EventHandle { count: 5103331261619539406, key: EventKey( [ 42, 251, 194, 160, 10, 46, 235, 60, 152, 201, 213, 165, 47, 230, 77, 255, 176, 111, 179, 139, 171, 221, 35, 165, ], ), }, sequence_number: 539757662893224570, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6553e74df8b18b93fc562d7eca71f1ac068132a82644b2171de7163dce144b30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d47538dabcc1c0c3eb267dcd06f5b1176cd2b9e3ab198c9579a66c23a36497f29bc36e6a3cfcbd4e96a482ef4780001323c85cc7d605fa149a2e2f352ecbc38ad17c4d62baca27f1848cea4bc504ba47a00760b1bcf3e286c8b8b721eac95a721dfacbffe80572c7b180e4810003b7088479f436876a57629d9dfe6955bc208d4464f51a4ed9360da762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089127addaa57c28af Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 71, 83, 141, 171, 204, 28, 12, 62, 178, 103, 220, 208, 111, 91, 17, 118, 205, 43, 158, 58, 177, 152, 201, 87, 154, 102, 194, 58, 54, 73, 127, 41, 188, 54, 230, 163, 207, 203, 212, 233, 106, 72, 46, 244, 120, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 323c85cc7d605fa149a2e2f352ecbc38, }, ), received_events: EventHandle { count: 9197102693330720685, key: EventKey( [ 72, 206, 164, 188, 80, 75, 164, 122, 0, 118, 11, 27, 207, 62, 40, 108, 139, 139, 114, 30, 172, 149, 167, 33, ], ), }, sent_events: EventHandle { count: 8875565177181809887, key: EventKey( [ 14, 72, 16, 0, 59, 112, 136, 71, 159, 67, 104, 118, 165, 118, 41, 217, 223, 230, 149, 91, 194, 8, 212, 70, ], ), }, sequence_number: 8564263829861847375, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6582f755c6ca534de0c662ad5e54e6ae1f50d18c47d21a4eab14d19440b6ab70): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013ad1a38ad6860670887868cc5455da549a5057a27ddd047f97be98e86dddbf954b338c9863e655d3286bd8c1b7b04a2f5ddd24910b408d7f384c380000e92f783d11e87d1c18f129c626d990a81d84de1dce5581fb8fb68f20f8b535b7e5f6027d1a001d8d6e18cf1c380f1e69c6fdf378946a4ec5878bf21a6c48c5c99ad9cf8bb38fc32ede442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708970487eb7c592afa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 209, 163, 138, 214, 134, 6, 112, 136, 120, 104, 204, 84, 85, 218, 84, 154, 80, 87, 162, 125, 221, 4, 127, 151, 190, 152, 232, 109, 221, 191, 149, 75, 51, 140, 152, 99, 230, 85, 211, 40, 107, 216, 193, 183, 176, 74, 47, 93, 221, 36, 145, 11, 64, 141, 127, 56, 76, 56, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2053052165894189033, key: EventKey( [ 241, 41, 198, 38, 217, 144, 168, 29, 132, 222, 29, 206, 85, 129, 251, 143, 182, 143, 32, 248, 181, 53, 183, 229, ], ), }, sent_events: EventHandle { count: 7966055202169881334, key: EventKey( [ 207, 28, 56, 15, 30, 105, 198, 253, 243, 120, 148, 106, 78, 197, 135, 139, 242, 26, 108, 72, 197, 201, 154, 217, ], ), }, sequence_number: 4962455256873274319, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(65ae8acd7f521c65d21fbd76365de90751783a26b62e05e5f919e92811fc46cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9d001631f1ae8c6a59552d407f4bb6c53a1688dea7c0273fe3e561b291893bb5c18f34ad12a580dc58092ecdb6b2c55cf0952821255d4285e8db4c62f2e906ea84ceebcf5090fe3fa4265e2adef9fe00e030185fe7a40152dafe7c4f848845605d53c3cd38c7d0192fa6f17bd32ef5d44a7db89ea3c5e0a013253e276d57103f1137495c332bcacc805594579b298166f182995086fae8974b5658923694455594a49f799d7d1d6ae1a71e3d09e07653f4f18840fcfd1099c9dcbf332ac3f3cece1925d60fe656b3e3e46db19857971d3177e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708af6bc336273fa58b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 26, 232, 198, 165, 149, 82, 212, 7, 244, 187, 108, 83, 161, 104, 141, 234, 124, 2, 115, 254, 62, 86, 27, 41, 24, 147, 187, 92, 24, 243, 74, 209, 42, 88, 13, 197, 128, 146, 236, 219, 107, 44, 85, 207, 9, 82, 130, 18, 85, 212, 40, 94, 141, 180, 198, 47, 46, 144, 110, 168, 76, 238, 188, 245, 9, 15, 227, 250, 66, 101, 226, 173, 239, 159, 224, 14, 3, 1, 133, 254, 122, 64, 21, 45, 175, 231, 196, 248, 72, 132, 86, 5, 213, 60, 60, 211, 140, 125, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 92fa6f17bd32ef5d44a7db89ea3c5e0a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3253e276d57103f1137495c332bcacc8, }, ), received_events: EventHandle { count: 8004753280003823877, key: EventKey( [ 41, 149, 8, 111, 174, 137, 116, 181, 101, 137, 35, 105, 68, 85, 89, 74, 73, 247, 153, 215, 209, 214, 174, 26, ], ), }, sent_events: EventHandle { count: 5710393935932744561, key: EventKey( [ 132, 15, 207, 209, 9, 156, 157, 203, 243, 50, 172, 63, 60, 236, 225, 146, 93, 96, 254, 101, 107, 62, 62, 70, ], ), }, sequence_number: 9085963257566796251, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(65f6bdaab30c282f0e240aaebf909d61845e0294a02626a0c048488b176da4db): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb158fc0c87e9db7f5601521335f5b864370e4833532605cca8982fecf92d71090b0c41cbb3856d9d254c379cfa6e01dafe6a0734d0c50daa627fea7c284445008831c42b3b59024418bfc94ad7029cd2b239ea4cd086729ce62b25079c769908f080b09e352def0b5018f3c5a9e8886aa6cbcedfcaa21b1d198a05cbf99d3cdd605b982d42f7695b319c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708136cd85bda003053 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 88, 252, 12, 135, 233, 219, 127, 86, 1, 82, 19, 53, 245, 184, 100, 55, 14, 72, 51, 83, 38, 5, 204, 168, 152, 47, 236, 249, 45, 113, 9, 11, 12, 65, 203, 179, 133, 109, 157, 37, 76, 55, 156, 250, 110, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dafe6a0734d0c50daa627fea7c284445, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4900577455204741512, key: EventKey( [ 191, 201, 74, 215, 2, 156, 210, 178, 57, 234, 76, 208, 134, 114, 156, 230, 43, 37, 7, 156, 118, 153, 8, 240, ], ), }, sent_events: EventHandle { count: 5767966725230211200, key: EventKey( [ 243, 197, 169, 232, 136, 106, 166, 203, 206, 223, 202, 162, 27, 29, 25, 138, 5, 203, 249, 157, 60, 221, 96, 91, ], ), }, sequence_number: 11254877454453583256, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(66305aa40564d763f1ff485f3c1387415e2990a35073c44f5d91b87b8ff46fa2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619ec66323a743d977194c16bf9b947971b115280748e3e8bfb5a00013e074eeaf3c5130fe8e3f364e9712d409dac01156452733418d6c7b347303eab7878b69108f982f8e44917e15b96a4c68cc33f9947c2944834185a250f84426459795f215567afd877708514cdcae10e3888510025dd6b6315392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f082bf4e0cf6fa80 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 102, 50, 58, 116, 61, 151, 113, 148, 193, 107, 249, 185, 71, 151, 27, 17, 82, 128, 116, 142, 62, 139, 251, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3e074eeaf3c5130fe8e3f364e9712d40, }, ), received_events: EventHandle { count: 3779455102096616605, key: EventKey( [ 214, 199, 179, 71, 48, 62, 171, 120, 120, 182, 145, 8, 249, 130, 248, 228, 73, 23, 225, 91, 150, 164, 198, 140, ], ), }, sent_events: EventHandle { count: 3767424650441211843, key: EventKey( [ 90, 37, 15, 132, 66, 100, 89, 121, 95, 33, 85, 103, 175, 216, 119, 112, 133, 20, 205, 202, 225, 14, 56, 136, ], ), }, sequence_number: 4113303149595656273, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(66741c26313757266564a88bf8a87cd5b527a20a968b1ed872fbfde2bfc2f4e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c961146541d3969cbf24bd6dee6dcfa911edeaedda11f100002d4e4020c0218f0a188efd1095248ed7ceea3f307206dd0005d81a7af4610b57cb753f9ccb17103a1318b54d607ac62611a906217eab211745ee910d146696675f12c59e97a8021c41e02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c55ae72f8c87732 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 65, 211, 150, 156, 191, 36, 189, 109, 238, 109, 207, 169, 17, 237, 234, 237, 218, 17, 241, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 760863971107425837, key: EventKey( [ 142, 253, 16, 149, 36, 142, 215, 206, 234, 63, 48, 114, 6, 221, 0, 5, 216, 26, 122, 244, 97, 11, 87, 203, ], ), }, sent_events: EventHandle { count: 1385437529756155765, key: EventKey( [ 181, 77, 96, 122, 198, 38, 17, 169, 6, 33, 126, 171, 33, 23, 69, 238, 145, 13, 20, 102, 150, 103, 95, 18, ], ), }, sequence_number: 16159227735726071493, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(672fa1a1236d07987b68705e2f9563b4e88332b07a348d58e4853f83404b9585): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7013adce6ab11a2edd9a18501a2d67bf87e01deb221a9025ab730bb65a5783795066466021788a31952ff5f4b2277592dce5ce3e9dd4268b2234df1e4016d2e6dbc74bb60751e74152e4fbc031e01465385e83a03930e9210f3d82d4284c6ed9168e2aeb3236e18b750cd1bb1269a07f321271e39c9cddbb3d5df61da0fa722ea22f4158ff5076718cc420052d638c34360a35c62732c30334987c05d379180ae6ff3211f9f7ff8ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ee119d7de3a59b06 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 230, 171, 17, 162, 237, 217, 161, 133, 1, 162, 214, 123, 248, 126, 1, 222, 178, 33, 169, 2, 90, 183, 48, 187, 101, 165, 120, 55, 149, 6, 100, 102, 2, 23, 136, 163, 25, 82, 255, 95, 75, 34, 119, 89, 45, 206, 92, 227, 233, 221, 66, 104, 178, 35, 77, 241, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d2e6dbc74bb60751e74152e4fbc031e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 465385e83a03930e9210f3d82d4284c6, }, ), received_events: EventHandle { count: 7936384532061131245, key: EventKey( [ 183, 80, 205, 27, 177, 38, 154, 7, 243, 33, 39, 30, 57, 201, 205, 219, 179, 213, 223, 97, 218, 15, 167, 34, ], ), }, sent_events: EventHandle { count: 7424172505641001706, key: EventKey( [ 204, 66, 0, 82, 214, 56, 195, 67, 96, 163, 92, 98, 115, 44, 48, 51, 73, 135, 192, 93, 55, 145, 128, 174, ], ), }, sequence_number: 18444632595294712687, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(67323a73037895b10cefda42013b83c85b1638c009770d8fa8d1f458846f7d2d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e01ba0138aa06f6684c0bbcefe0573af51bb61d01080fbfcb856de4cecd1b205de530a4c000369f0716b61061182704f68ab7a7ae949a22be56fb216d5192c11ac3fdbe531578ae4dcbfaf8d14318420f1a2acf0d3975c70422fb5448c8ac486825814e81e2d7860ba854f91ab5752101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708547c1997b8b144d6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 38aa06f6684c0bbcefe0573af51bb61d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 080fbfcb856de4cecd1b205de530a4c0, }, ), received_events: EventHandle { count: 6994290427039790592, key: EventKey( [ 39, 4, 246, 138, 183, 167, 174, 148, 154, 34, 190, 86, 251, 33, 109, 81, 146, 193, 26, 195, 253, 190, 83, 21, ], ), }, sent_events: EventHandle { count: 4886960826710077048, key: EventKey( [ 66, 15, 26, 42, 207, 13, 57, 117, 199, 4, 34, 251, 84, 72, 200, 172, 72, 104, 37, 129, 78, 129, 226, 215, ], ), }, sequence_number: 8481715131391675270, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(686a427c930a0ae8e574c99e20911201e779c0b22bbb18e9d9d73258f50183b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c991014410037b6ce2f036c586ff63ba4e6a280272eee4860b3f8077a36f2b8b0d4655601bdd0950c91034a8b78bc2061209f6ebfe9124a5cf5f9a39063eefa3b4569a133d50826e0000d305c684b759171a1863d07b511161fd76a876f781801de099cb22b5f2dd5826e603a2822e2b8cad7b18e5a7139bada8c7ae960be7c0f0c537980f215e6fd1520b16f49dc06dbcc0320a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083281e3857654ec30 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 16, 3, 123, 108, 226, 240, 54, 197, 134, 255, 99, 186, 78, 106, 40, 2, 114, 238, 228, 134, 11, 63, 128, 119, 163, 111, 43, 139, 13, 70, 85, 96, 27, 221, 9, 80, 201, 16, 52, 168, 183, 139, 194, 6, 18, 9, 246, 235, 254, 145, 36, 165, 207, 95, 154, 57, 6, 62, 239, 163, 180, 86, 154, 19, 61, 80, 130, 110, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1880070014191928787, key: EventKey( [ 99, 208, 123, 81, 17, 97, 253, 118, 168, 118, 247, 129, 128, 29, 224, 153, 203, 34, 181, 242, 221, 88, 38, 230, ], ), }, sent_events: EventHandle { count: 8911933354727875075, key: EventKey( [ 229, 167, 19, 155, 173, 168, 199, 174, 150, 11, 231, 192, 240, 197, 55, 152, 15, 33, 94, 111, 209, 82, 11, 22, ], ), }, sequence_number: 734861604742536692, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(68c44fe7e0ac9de26ff129111ef13a3c2b5e890a98c95deef8f72c1df3b4b89f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830126aeffa582f82750ffc29b28a950f4f5ea6e12fd9ca579b39ca48c02cea74650dd7b4fd763ff110001f887eed79087119a42f91afb4f325d5633983125d0656d6118d235a6662cd1399ca34be33ca440a066b916c1a7b6411c0131b0247e0ab2945b18e5cf96b1f638dab57dac93311e63d0ac3ed698c2403e75012c3801a72de2088f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1e42465061e1260 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 255, 165, 130, 248, 39, 80, 255, 194, 155, 40, 169, 80, 244, 245, 234, 110, 18, 253, 156, 165, 121, 179, 156, 164, 140, 2, 206, 167, 70, 80, 221, 123, 79, 215, 99, 255, 17, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f887eed79087119a42f91afb4f325d56, }, ), received_events: EventHandle { count: 7020379338792081459, key: EventKey( [ 210, 53, 166, 102, 44, 209, 57, 156, 163, 75, 227, 60, 164, 64, 160, 102, 185, 22, 193, 167, 182, 65, 28, 1, ], ), }, sent_events: EventHandle { count: 6599095112140369969, key: EventKey( [ 229, 207, 150, 177, 246, 56, 218, 181, 125, 172, 147, 49, 30, 99, 208, 172, 62, 214, 152, 194, 64, 62, 117, 1, ], ), }, sequence_number: 10306736432940660780, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(68d9596c29c3e9f5bc82ce06ce1e53df9f551833e3cc57441a5916b29a8ae983): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d00012a984a8fdada9a8f5b2f0892188a46fe017912a9796cbdfa2a594c17a564cfeaddd92bb9d489680c1518285f0c5662e25faa20aef826f4ff3ff527ce809b5d7b3a5b70ea0a4da9eea24918de8f00210f18d4c553aa2d1d61b266c45ad75c2a58afea551d91c0ed2983f5b92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088011e6517602eb24 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2a984a8fdada9a8f5b2f0892188a46fe, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7912a9796cbdfa2a594c17a564cfeadd, }, ), received_events: EventHandle { count: 1516702115705727961, key: EventKey( [ 40, 95, 12, 86, 98, 226, 95, 170, 32, 174, 248, 38, 244, 255, 63, 245, 39, 206, 128, 155, 93, 123, 58, 91, ], ), }, sent_events: EventHandle { count: 5306065721905310320, key: EventKey( [ 222, 143, 0, 33, 15, 24, 212, 197, 83, 170, 45, 29, 97, 178, 102, 196, 90, 215, 92, 42, 88, 175, 234, 85, ], ), }, sequence_number: 13399760482416496925, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6981aff08264bfd2b198804aa1e373661b9867579c5e20ef21c615fcee967f47): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014bbd597ba2dd199340c74fcff3de6d345718e0c1691d0d106a70cab973b1fa61e2bd9bf022c0a33c4cdc6d34b0a6fc6caa20841bebd5f1a0e2c56d93229ebc759a3097396c977fc5732785160000d25f10f50d65af591832d42a76f62e36abb9519b2eacefe317f51e0b46037e78d5c859dc49e5f7b16e182525d8d951e51ddd4964e2f98efe4007f5cb35a13b491ad6052a6d93431a3a982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b1fe1f84de03237 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 89, 123, 162, 221, 25, 147, 64, 199, 79, 207, 243, 222, 109, 52, 87, 24, 224, 193, 105, 29, 13, 16, 106, 112, 202, 185, 115, 177, 250, 97, 226, 189, 155, 240, 34, 192, 163, 60, 76, 220, 109, 52, 176, 166, 252, 108, 170, 32, 132, 27, 235, 213, 241, 160, 226, 197, 109, 147, 34, 158, 188, 117, 154, 48, 151, 57, 108, 151, 127, 197, 115, 39, 133, 22, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6462495100920422354, key: EventKey( [ 50, 212, 42, 118, 246, 46, 54, 171, 185, 81, 155, 46, 172, 239, 227, 23, 245, 30, 11, 70, 3, 126, 120, 213, ], ), }, sent_events: EventHandle { count: 7976428979208608200, key: EventKey( [ 37, 37, 216, 217, 81, 229, 29, 221, 73, 100, 226, 249, 142, 254, 64, 7, 245, 203, 53, 161, 59, 73, 26, 214, ], ), }, sequence_number: 10969108719952800261, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(698877d6e3dd4a38eeec3e91ab000341e55fe9faab802a5970cf03cb582570f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141d49b68f896c0da68c5a7023dfed9f2fdc312c9af967ff5460a4fefb8025de58e7c94fda5bc5106c6911f5c5350f03ceef6797dbebf93dff9c23301384e10ae2a5600017c7f9936951808538c2867d04fd0c49a37efaa01d8b06f4b18a1826c02fd0fd2496bb8f955c230cadb08d44cd291b5031be2337ad7c490bc65187c850d80093aadfa6c2c278067d6d6622e380c1b11fd88392404d52cd5b833032101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859797001a13cd0f2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 155, 104, 248, 150, 192, 218, 104, 197, 167, 2, 61, 254, 217, 242, 253, 195, 18, 201, 175, 150, 127, 245, 70, 10, 79, 239, 184, 2, 93, 229, 142, 124, 148, 253, 165, 188, 81, 6, 198, 145, 31, 92, 83, 80, 240, 60, 238, 246, 121, 125, 190, 191, 147, 223, 249, 194, 51, 1, 56, 78, 16, 174, 42, 86, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7c7f9936951808538c2867d04fd0c49a, }, ), received_events: EventHandle { count: 5435757717046882103, key: EventKey( [ 161, 130, 108, 2, 253, 15, 210, 73, 107, 184, 249, 85, 194, 48, 202, 219, 8, 212, 76, 210, 145, 181, 3, 27, ], ), }, sent_events: EventHandle { count: 7330893468555424738, key: EventKey( [ 124, 133, 13, 128, 9, 58, 173, 250, 108, 44, 39, 128, 103, 214, 214, 98, 46, 56, 12, 27, 17, 253, 136, 57, ], ), }, sequence_number: 230731231645729828, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(69b05369c2f7cba7451ad062efcb3196477587b7d9dd2f2590a3f57201ad261b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840117794f7900b8dc76d1100c3c677fdd42fef5363e46a342a2014750d8e6f1a5b94c1273e2ba7fc3aa9401f07877960567844e5a384dd30007bbc41c4795be8475591018f1f62e2909e185cf4970d87c8ec37bd676df4667c88de3f65edbee3e6446517918990824ab624ed4804341b0fddd75ed204beb1fc13a935516d41967c0986a9f262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc76306ef52a999d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 79, 121, 0, 184, 220, 118, 209, 16, 12, 60, 103, 127, 221, 66, 254, 245, 54, 62, 70, 163, 66, 162, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4750d8e6f1a5b94c1273e2ba7fc3aa94, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f07877960567844e5a384dd30007bbc4, }, ), received_events: EventHandle { count: 1178101990527682332, key: EventKey( [ 241, 246, 46, 41, 9, 225, 133, 207, 73, 112, 216, 124, 142, 195, 123, 214, 118, 223, 70, 103, 200, 141, 227, 246, ], ), }, sent_events: EventHandle { count: 8741845748069358430, key: EventKey( [ 153, 8, 36, 171, 98, 78, 212, 128, 67, 65, 176, 253, 221, 117, 237, 32, 75, 235, 31, 193, 58, 147, 85, 22, ], ), }, sequence_number: 2783060299033811412, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6a83627a094ae23a7ef1b7e95064cb14581cc46689db171ce72cf5eebd74cbbb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930126f3e44f2a32bf392cf535a1a4cac109b240dc6336dfeeca243b50c00b3351493d0b6b37386fc201eae0707a0c0634c04b26e3c0c5a8690a01d3e9bb2d29b219d1441ec3d7a22652841c7fbb358851867d18e70b11b70f030e275226e9b4e65961ccc8df7f53de4769538c32b506f6e0c50618d099163a72f60fa352c90f0169b4d690adaa8b66242908288bf18027de6f7db32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c07c68ac8aac642f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 228, 79, 42, 50, 191, 57, 44, 245, 53, 161, 164, 202, 193, 9, 178, 64, 220, 99, 54, 223, 238, 202, 36, 59, 80, 192, 11, 51, 81, 73, 61, 11, 107, 55, 56, 111, 194, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eae0707a0c0634c04b26e3c0c5a8690a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d3e9bb2d29b219d1441ec3d7a2265284, }, ), received_events: EventHandle { count: 9045006547079102236, key: EventKey( [ 231, 11, 17, 183, 15, 3, 14, 39, 82, 38, 233, 180, 230, 89, 97, 204, 200, 223, 127, 83, 222, 71, 105, 83, ], ), }, sent_events: EventHandle { count: 488043481918681740, key: EventKey( [ 208, 153, 22, 58, 114, 246, 15, 163, 82, 201, 15, 1, 105, 180, 214, 144, 173, 170, 139, 102, 36, 41, 8, 40, ], ), }, sequence_number: 12933616704814117259, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6a84159a3a942c0b6ba6be4912b4b1a38c0ead0b19cfb4af21e262f5b2b7cbad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014d271e702c4415a7323fafe94a5d4691c2925af300fe37adaf24594aeec9f3e977d6fbaaa36c25ffbb09fcbe31b2a57ae40c9f60b4f21fce8a6150c203788c1e9bf7a26b0d9b54c81e5d2f449a5d016fca5f9ce664b70c7079a8b88ecb234101538cf8cdcc8b117fc49e7adbb6e77451a430f2d11c80153a1801519850c8a21f01f1c5fbb757294305c009732efbbad4e49eae8357f4d3b14c18c009cce3172fef45e1e9950385bc2facba1ca02d8873920d826ffdeafaf0c68e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8926742bb21eb8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 30, 112, 44, 68, 21, 167, 50, 63, 175, 233, 74, 93, 70, 145, 194, 146, 90, 243, 0, 254, 55, 173, 175, 36, 89, 74, 238, 201, 243, 233, 119, 214, 251, 170, 163, 108, 37, 255, 187, 9, 252, 190, 49, 178, 165, 122, 228, 12, 159, 96, 180, 242, 31, 206, 138, 97, 80, 194, 3, 120, 140, 30, 155, 247, 162, 107, 13, 155, 84, 200, 30, 93, 47, 68, 154, 93, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6fca5f9ce664b70c7079a8b88ecb2341, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 538cf8cdcc8b117fc49e7adbb6e77451, }, ), received_events: EventHandle { count: 4185392289980493988, key: EventKey( [ 1, 81, 152, 80, 200, 162, 31, 1, 241, 197, 251, 183, 87, 41, 67, 5, 192, 9, 115, 46, 251, 186, 212, 228, ], ), }, sent_events: EventHandle { count: 5526431264154037918, key: EventKey( [ 192, 9, 204, 227, 23, 47, 239, 69, 225, 233, 149, 3, 133, 188, 47, 172, 186, 28, 160, 45, 136, 115, 146, 13, ], ), }, sequence_number: 10288175359249444738, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6b43359ca3db1aa1d34925ddd8380e8d397a3f6be0bf18348a880d8711486642): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148e1247da01dacf2e9f541280be6f8c6cc40c03890ad9c48e4629f85cb9b9ab8a2ed42374b5a4e0d764ebca1876b68cf9f54ffa928ff1d307386a3077a48b8b1f711886b3260ea54eb000105a7472c27a4f1af18ea701ceb23330025b7c7650fd9ca41183348f5bb7bb96a6d01e739fbc74a5289af61984208767b6c4185c348d3397b5a1828d60757e051a5c1bc729c7bdc53a9b8c71cb1e4f75357f5edd1495f2815cc6d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880f042bafbcdf726 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 36, 125, 160, 29, 172, 242, 233, 245, 65, 40, 11, 230, 248, 198, 204, 64, 192, 56, 144, 173, 156, 72, 228, 98, 159, 133, 203, 155, 154, 184, 162, 237, 66, 55, 75, 90, 78, 13, 118, 78, 188, 161, 135, 107, 104, 207, 159, 84, 255, 169, 40, 255, 29, 48, 115, 134, 163, 7, 122, 72, 184, 177, 247, 17, 136, 107, 50, 96, 234, 84, 235, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 05a7472c27a4f1af18ea701ceb233300, }, ), received_events: EventHandle { count: 4740840217916192549, key: EventKey( [ 51, 72, 245, 187, 123, 185, 106, 109, 1, 231, 57, 251, 199, 74, 82, 137, 175, 97, 152, 66, 8, 118, 123, 108, ], ), }, sent_events: EventHandle { count: 6519868465170580801, key: EventKey( [ 40, 214, 7, 87, 224, 81, 165, 193, 188, 114, 156, 123, 220, 83, 169, 184, 199, 28, 177, 228, 247, 83, 87, 245, ], ), }, sequence_number: 7911721908524667373, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6b69b7a6e56d6043d4c7855bb46f51d6c8db77f752c66da3e5585707ceea83ac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b012e973fe5a871e3d50f8416c6e72c6f132cf6ef65b62fd3a2e04619f0158a9a74eee31fa6b8833b4763414c5b98c31a011affd5c128184ac132a27ae5305e8d7d01bf267ec72480ac0aeb42aeb3c41b98c4f2af670dab77b21a18f409e32a35275e8e8e10057b081eb4fbba484b9cf0ca1aa8ed00a8d5ab82e30c1898c0f08e02b68523a5ea6c3de4e7864b4318d8c1d060657b3273b1a025b015e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb0ec1f4849c6378 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 63, 229, 168, 113, 227, 213, 15, 132, 22, 198, 231, 44, 111, 19, 44, 246, 239, 101, 182, 47, 211, 162, 224, 70, 25, 240, 21, 138, 154, 116, 238, 227, 31, 166, 184, 131, 59, 71, 99, 65, 76, 91, 152, 195, 26, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1affd5c128184ac132a27ae5305e8d7d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bf267ec72480ac0aeb42aeb3c41b98c4, }, ), received_events: EventHandle { count: 1923731567388635122, key: EventKey( [ 244, 9, 227, 42, 53, 39, 94, 142, 142, 16, 5, 123, 8, 30, 180, 251, 186, 72, 75, 156, 240, 202, 26, 168, ], ), }, sent_events: EventHandle { count: 928729622704029933, key: EventKey( [ 152, 192, 240, 142, 2, 182, 133, 35, 165, 234, 108, 61, 228, 231, 134, 75, 67, 24, 216, 193, 208, 96, 101, 123, ], ), }, sequence_number: 16363178496776827698, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ba39d87498336fbdbc186f519fc9ee31383c64fde69a194be6f5f7e8e61349e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac014f187cf1c67315b5acbec6a404c7d3b0f970fd5a34d4455109e06fe7d96befc3cce4c2cf0378edfc8588c304498e02b978b372a0d61bf0d22591b5fcda3f5c6a31cd626762983db9d867f8cbd80aa9b801d871d78182e6fde7d431406665173b3c0059c0bc154c52775818512a4284231de15bc9ba4dcbca2bc94f6e831d9aab65e5e7bec132e8973c2b0518c7d3e9b8780b04fbcb7b1fbd94f8fdccc2fca3a735a52a390d8944287ee3c5252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70864e70f1d7572226a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 24, 124, 241, 198, 115, 21, 181, 172, 190, 198, 164, 4, 199, 211, 176, 249, 112, 253, 90, 52, 212, 69, 81, 9, 224, 111, 231, 217, 107, 239, 195, 204, 228, 194, 207, 3, 120, 237, 252, 133, 136, 195, 4, 73, 142, 2, 185, 120, 179, 114, 160, 214, 27, 240, 210, 37, 145, 181, 252, 218, 63, 92, 106, 49, 205, 98, 103, 98, 152, 61, 185, 216, 103, 248, 203, 216, 10, 169, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d871d78182e6fde7d431406665173b3c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6374654284301910105, key: EventKey( [ 81, 42, 66, 132, 35, 29, 225, 91, 201, 186, 77, 203, 202, 43, 201, 79, 110, 131, 29, 154, 171, 101, 229, 231, ], ), }, sent_events: EventHandle { count: 372458017321566654, key: EventKey( [ 199, 211, 233, 184, 120, 11, 4, 251, 203, 123, 31, 189, 148, 248, 253, 204, 194, 252, 163, 167, 53, 165, 42, 57, ], ), }, sequence_number: 2721831680796297485, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6bf4cdbcf38ae003b5c8327e8aa62aa60d844eb276b90c45bcfd5b8069ef689b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce0161dfeb0f461176daec732ec3bd0933aabf1cea2f06eab6de401ec74974e599193c272f329c141452627aed7d34a5ed4980da8bca3ae5a1a9f354a07137ff2f75c68695249bb0f8d6fa9b087d39db8040fc080fae25c4c070cf7444427f91a75ebde501ba9a98070e2b21c5867cbf6e685410b501adb10b3a82b44f3c68e93e943a0fbf97e8ea3c50f3af9702189c0166fc96a5cc42df31252000d922b8c63c2b8e4f7d98de89a08208c4777733183c4067dc9e430f981e76f2945c10e6d1041471bdce48b1c5eda95c7aea58fbdc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0f2635f7a1390d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 235, 15, 70, 17, 118, 218, 236, 115, 46, 195, 189, 9, 51, 170, 191, 28, 234, 47, 6, 234, 182, 222, 64, 30, 199, 73, 116, 229, 153, 25, 60, 39, 47, 50, 156, 20, 20, 82, 98, 122, 237, 125, 52, 165, 237, 73, 128, 218, 139, 202, 58, 229, 161, 169, 243, 84, 160, 113, 55, 255, 47, 117, 198, 134, 149, 36, 155, 176, 248, 214, 250, 155, 8, 125, 57, 219, 128, 64, 252, 8, 15, 174, 37, 196, 192, 112, 207, 116, 68, 66, 127, 145, 167, 94, 189, 229, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ba9a98070e2b21c5867cbf6e685410b5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: adb10b3a82b44f3c68e93e943a0fbf97, }, ), received_events: EventHandle { count: 186811369117248232, key: EventKey( [ 156, 1, 102, 252, 150, 165, 204, 66, 223, 49, 37, 32, 0, 217, 34, 184, 198, 60, 43, 142, 79, 125, 152, 222, ], ), }, sent_events: EventHandle { count: 3708564502002966665, key: EventKey( [ 60, 64, 103, 220, 158, 67, 15, 152, 30, 118, 242, 148, 92, 16, 230, 209, 4, 20, 113, 189, 206, 72, 177, 197, ], ), }, sequence_number: 15923418671597005293, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c1386945cb2595988f157a382495be329d9cb016785f8df5acc9315d15688e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123d83b573f9d3d815c33f2a90fe7a5abd216045543a4871b7e3bb921ec715030ebf0e6fa0100776677df18829d4afc164b7323e8ef01ddc73556d49d30f8f5463869d59b4a20897d58981ad1345f18a2ac10e0aac36bf7a30771224faa0713fc76c223b25d22f480a3e3e792818532185379c4b59988a983a15882ef52139beb32af2123ea0fdc9c67c9d38bf8a4d4772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fbbd2bc33613fb35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 59, 87, 63, 157, 61, 129, 92, 51, 242, 169, 15, 231, 165, 171, 210, 22, 4, 85, 67, 164, 135, 27, 126, 59, 185, 33, 236, 113, 80, 48, 235, 240, 230, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00776677df18829d4afc164b7323e8ef, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ddc73556d49d30f8f5463869d59b4a20, }, ), received_events: EventHandle { count: 6860338044547399049, key: EventKey( [ 162, 172, 16, 224, 170, 195, 107, 247, 163, 7, 113, 34, 79, 170, 7, 19, 252, 118, 194, 35, 178, 93, 34, 244, ], ), }, sent_events: EventHandle { count: 3640458341754577792, key: EventKey( [ 83, 121, 196, 181, 153, 136, 169, 131, 161, 88, 130, 239, 82, 19, 155, 235, 50, 175, 33, 35, 234, 15, 220, 156, ], ), }, sequence_number: 8634707772980840807, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c3273d074d20e9ebe1390c67510810971c52ce0f4a9775a0b6ddbcdf2b00a0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97104d54749f40187a22ead16653857692b11a00dc16473010f7b34d7c13008db8576f7ce05f5fabdf745f8dd244e701c18c1c417ad4d1b91decdda232e3b4ba1b1b19df880e6256c2eb2d73d3c8c81e94b180385bc573ffa1e883eef303460e445b56b318769a289df296ee3dc8958bf40292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088979bdd685c9387f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 71, 73, 244, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 87a22ead16653857692b11a00dc16473, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0f7b34d7c13008db8576f7ce05f5fabd, }, ), received_events: EventHandle { count: 2049223750703400439, key: EventKey( [ 193, 196, 23, 173, 77, 27, 145, 222, 205, 218, 35, 46, 59, 75, 161, 177, 177, 157, 248, 128, 230, 37, 108, 46, ], ), }, sent_events: EventHandle { count: 5470045661724268466, key: EventKey( [ 3, 133, 188, 87, 63, 250, 30, 136, 62, 239, 48, 52, 96, 228, 69, 181, 107, 49, 135, 105, 162, 137, 223, 41, ], ), }, sequence_number: 2972586141055509358, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6e4fe5e0ebe11f2bdba54200d4789acb3d7b796782885a6081acd50faf837b9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01523be092132ce88f24db3e8dc44ca5b5aa3b6bc7ef47fa873d66d744b0aa709837bf40b46199008be5ca0af67d9d410c3af5ec2f530bb370db47ab2a809b410691b7dab849a041fba98290d4ad21cdbf0aee7200002671ad1416b46d7d180d9fb3656ea4b19633efd134b49a3b7828d076d3b1be5813eb5b6ec503f79c60186669909b09a5ff9599b32989e0156a6fcf8850ff535a6d2af4b7ce9a14994a382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4e120f3f605e1ec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 224, 146, 19, 44, 232, 143, 36, 219, 62, 141, 196, 76, 165, 181, 170, 59, 107, 199, 239, 71, 250, 135, 61, 102, 215, 68, 176, 170, 112, 152, 55, 191, 64, 180, 97, 153, 0, 139, 229, 202, 10, 246, 125, 157, 65, 12, 58, 245, 236, 47, 83, 11, 179, 112, 219, 71, 171, 42, 128, 155, 65, 6, 145, 183, 218, 184, 73, 160, 65, 251, 169, 130, 144, 212, 173, 33, 205, 191, 10, 238, 114, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9038078034131644710, key: EventKey( [ 13, 159, 179, 101, 110, 164, 177, 150, 51, 239, 209, 52, 180, 154, 59, 120, 40, 208, 118, 211, 177, 190, 88, 19, ], ), }, sent_events: EventHandle { count: 6961710719577250795, key: EventKey( [ 102, 105, 144, 155, 9, 165, 255, 149, 153, 179, 41, 137, 224, 21, 106, 111, 207, 136, 80, 255, 83, 90, 109, 42, ], ), }, sequence_number: 4056222728176187380, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ef7cf19b9747aab557326e2c965e0a1d53e3353d82e7d3d0247f3551b8fe54e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e01440000dc8574cbdc65847d183099b6c2b51f68793c3dcfd4c2569d740342c80b1200928df14b266217790e6418c50beeb098d4bfbc66e8e5b7b44f2c52dcb25811c10ca61aa240c66d6fd3f3412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089278c6584f0baf32 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9044465950647420380, key: EventKey( [ 48, 153, 182, 194, 181, 31, 104, 121, 60, 61, 207, 212, 194, 86, 157, 116, 3, 66, 200, 11, 18, 0, 146, 141, ], ), }, sent_events: EventHandle { count: 7209833194804628465, key: EventKey( [ 197, 11, 238, 176, 152, 212, 191, 188, 102, 232, 229, 183, 180, 79, 44, 82, 220, 178, 88, 17, 193, 12, 166, 26, ], ), }, sequence_number: 4752374507342545058, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(703ec89d85405c9c90144094bcb76f472b00b31cac77da762dec0b0a6128fb65): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad0140872fde7b35359f560723bdcb539c477dfc722ea9bcabe3df53f9aa1a7f37cabbddb9af553bacbff0de5a902f704809d3f9bf8177ff0ea8b0c54875b88775f1a901a1b37c69ac9f947fd6c63cc97107dd6801ab241b4686f7748134fb5ca996622a349a1b15c90ed1a15b18f0fecc748ccc04b717027f792e33a38f33167592e34ab48f8dd39fd768afac6f181781b7f1bf5df81bf0eb5a36fd8f0960021105c221e520fb13048b2601bdbc8f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d57348e937dc1c5a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 47, 222, 123, 53, 53, 159, 86, 7, 35, 189, 203, 83, 156, 71, 125, 252, 114, 46, 169, 188, 171, 227, 223, 83, 249, 170, 26, 127, 55, 202, 187, 221, 185, 175, 85, 59, 172, 191, 240, 222, 90, 144, 47, 112, 72, 9, 211, 249, 191, 129, 119, 255, 14, 168, 176, 197, 72, 117, 184, 135, 117, 241, 169, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a1b37c69ac9f947fd6c63cc97107dd68, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ab241b4686f7748134fb5ca996622a34, }, ), received_events: EventHandle { count: 6602788390135208858, key: EventKey( [ 240, 254, 204, 116, 140, 204, 4, 183, 23, 2, 127, 121, 46, 51, 163, 143, 51, 22, 117, 146, 227, 74, 180, 143, ], ), }, sent_events: EventHandle { count: 8046999499033269133, key: EventKey( [ 23, 129, 183, 241, 191, 93, 248, 27, 240, 235, 90, 54, 253, 143, 9, 96, 2, 17, 5, 194, 33, 229, 32, 251, ], ), }, sequence_number: 10357361055684559891, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(705d6457c72f34e5eb8e8fad6865f73e2d67f3353a14b2da57ea85d72ca64f78): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975189b3fc8d9b0713be1525655208b37e10b99dd589822b6c27b0001e7b7689b94dbe32dfe8d5260229ee3ca43bdef2a32dd824418ef84bc77cb5f20869488be62b9bc5302dda14505871f07286db70cf57b1c9c0e185871fe8c57ed4894ac49ecedb837864d861187271f5eb4ef93006172230b09ab2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708221fbf5c6abd8b2a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 63, 200, 217, 176, 113, 59, 225, 82, 86, 85, 32, 139, 55, 225, 11, 153, 221, 88, 152, 34, 182, 194, 123, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e7b7689b94dbe32dfe8d5260229ee3ca, }, ), received_events: EventHandle { count: 4936751349089942851, key: EventKey( [ 239, 132, 188, 119, 203, 95, 32, 134, 148, 136, 190, 98, 185, 188, 83, 2, 221, 161, 69, 5, 135, 31, 7, 40, ], ), }, sent_events: EventHandle { count: 1052747731615659885, key: EventKey( [ 88, 113, 254, 140, 87, 237, 72, 148, 172, 73, 236, 237, 184, 55, 134, 77, 134, 17, 135, 39, 31, 94, 180, 239, ], ), }, sequence_number: 12324394102146793619, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(725e8e3bff793ae3800cadc7a48ee920e8e497dbf7abc80cb181b845a36faf4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95a0dc958ed5556737b20d8a963ba8b00007f29f3fae05c3e43183a6dd1026835e51b4ad99dde5f77ecf459e63b4deb945c9bdd223f444117762e18908029cbfbbde361906f08e31300ec79b48de23af794d6b73f8fa70d0a7b62622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d9ae1136481a7338 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 88, 237, 85, 86, 115, 123, 32, 216, 169, 99, 186, 139, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4845412370449901951, key: EventKey( [ 58, 109, 209, 2, 104, 53, 229, 27, 74, 217, 157, 222, 95, 119, 236, 244, 89, 230, 59, 77, 235, 148, 92, 155, ], ), }, sent_events: EventHandle { count: 3347888942081843933, key: EventKey( [ 144, 128, 41, 203, 251, 189, 227, 97, 144, 111, 8, 227, 19, 0, 236, 121, 180, 141, 226, 58, 247, 148, 214, 183, ], ), }, sequence_number: 7089364046543556415, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(72a31110f97be344331b0834f0a077998c92e8cadd90c8f5bc02f3be4925acee): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974273c29ab535d6894746a843935b3c46dc6e6f136743e520f993ab4d882f953d92e1f3f023ce6dac8000029fc819579f6d03a18608a2d4057a213d1c60d0015d4c4927467733af3bfae9a2df6a107fd18ebf4521850efb857bd184262d13b6e2ed41e9b2dac5a49038a1dbcb376cebaaaab34a7242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086d3170ea049c7024 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 60, 41, 171, 83, 93, 104, 148, 116, 106, 132, 57, 53, 179, 196, 109, 198, 230, 241, 54, 116, 62, 82, 15, 153, 58, 180, 216, 130, 249, 83, 217, 46, 31, 63, 2, 60, 230, 218, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4238158251415436329, key: EventKey( [ 96, 138, 45, 64, 87, 162, 19, 209, 198, 13, 0, 21, 212, 196, 146, 116, 103, 115, 58, 243, 191, 174, 154, 45, ], ), }, sent_events: EventHandle { count: 5977661097984369142, key: EventKey( [ 80, 239, 184, 87, 189, 24, 66, 98, 209, 59, 110, 46, 212, 30, 155, 45, 172, 90, 73, 3, 138, 29, 188, 179, ], ), }, sequence_number: 2641137618384506486, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(734576773ba7edc64306fd18a2b56f257607a071c44cd709aa8f049a7e586651): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963069a3e4ca9aac500014fa33bd9aa4c77da77855a3404c4090317a83df25640fe3f185c71c6fb968059a98e5aa0b9c3cc61af51aad759f501fde47da74e41d63294201859e28132a7636604d504cb3f6335603be6ab173acea9ebff31c24a9ff50b4dc22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827420121d27a2f5b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 154, 62, 76, 169, 170, 197, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4fa33bd9aa4c77da77855a3404c40903, }, ), received_events: EventHandle { count: 4611193810649458711, key: EventKey( [ 92, 113, 198, 251, 150, 128, 89, 169, 142, 90, 160, 185, 195, 204, 97, 175, 81, 170, 215, 89, 245, 1, 253, 228, ], ), }, sent_events: EventHandle { count: 2347557201566934909, key: EventKey( [ 89, 226, 129, 50, 167, 99, 102, 4, 213, 4, 203, 63, 99, 53, 96, 59, 230, 171, 23, 58, 206, 169, 235, 255, ], ), }, sequence_number: 14000859966132109873, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(737e0606082fb75a00a0fbfb52e753cd0eebeaaf6b771058added9c53f1d1f80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316cb3caaaa6192e4032639e4a74999fc3e2bb2e01f3ae0011e7e126f88ca6e783219c70f3291753a00d20643bd39390b3f1822d5b3efa6f0abefb4ef67878e5467539d4703a0bb4569a0ea6b170b056f661c180deec44216990573751a2ab9472295e16cf2ccea41a32baf7eff9cf5c68396e62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c358f8908412978d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 60, 170, 170, 97, 146, 228, 3, 38, 57, 228, 167, 73, 153, 252, 62, 43, 178, 224, 31, 58, 224, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1e7e126f88ca6e783219c70f3291753a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4542787569284482770, key: EventKey( [ 34, 213, 179, 239, 166, 240, 171, 239, 180, 239, 103, 135, 142, 84, 103, 83, 157, 71, 3, 160, 187, 69, 105, 160, ], ), }, sent_events: EventHandle { count: 2046445148138073066, key: EventKey( [ 13, 238, 196, 66, 22, 153, 5, 115, 117, 26, 42, 185, 71, 34, 149, 225, 108, 242, 204, 234, 65, 163, 43, 175, ], ), }, sequence_number: 16615612765777493886, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7388577f4cd70ea748bba260145f7c87f2f96e66d734076ef5382929fa066591): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d015027cd1e77fd7bc1a52db6d63657d73aff18bb5df0cfb3338630f014b6fe69b9ecac4f8cec8a1cf135e88916e578f62e7f69282a5ec5537720788a56d43ecc925b598b1a7ed27cd0fe7c95de9ae33dfa4e00007ea1fce11a8f88361855d2b3e1be8f59275a0cc540de884712627b67fb42ae868cbcd52e8aa3814f4e18df0ad4ba87395339a16cc8c2bdf365917c963da7a0c1effd1e1cfdd9c58669c52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aa6f08df9af61615 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 205, 30, 119, 253, 123, 193, 165, 45, 182, 214, 54, 87, 215, 58, 255, 24, 187, 93, 240, 207, 179, 51, 134, 48, 240, 20, 182, 254, 105, 185, 236, 172, 79, 140, 236, 138, 28, 241, 53, 232, 137, 22, 229, 120, 246, 46, 127, 105, 40, 42, 94, 197, 83, 119, 32, 120, 138, 86, 212, 62, 204, 146, 91, 89, 139, 26, 126, 210, 124, 208, 254, 124, 149, 222, 154, 227, 61, 250, 78, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3929548020504109438, key: EventKey( [ 85, 210, 179, 225, 190, 143, 89, 39, 90, 12, 197, 64, 222, 136, 71, 18, 98, 123, 103, 251, 66, 174, 134, 140, ], ), }, sent_events: EventHandle { count: 5642871397516498364, key: EventKey( [ 223, 10, 212, 186, 135, 57, 83, 57, 161, 108, 200, 194, 189, 243, 101, 145, 124, 150, 61, 167, 160, 193, 239, 253, ], ), }, sequence_number: 14225049082350345246, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(73e772a43d105587ea8624ce9b04ca7d053aaf438d871a6867b841ecdcaf0edf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bf4700d24fbdf5cfb161d9a0000860d51cb9672b1301841533865741c5343eb5d7f5482614255b238580291c9d392c0c8d8c5f84e727f18f1ef4745e362831c3823196f7276ea32c9888e232b303029c0402d5cab1ad5732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083026d5be472a1e3c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 112, 13, 36, 251, 223, 92, 251, 22, 29, 154, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3508711576680074630, key: EventKey( [ 65, 83, 56, 101, 116, 28, 83, 67, 235, 93, 127, 84, 130, 97, 66, 85, 178, 56, 88, 2, 145, 201, 211, 146, ], ), }, sent_events: EventHandle { count: 9183489420540037312, key: EventKey( [ 241, 239, 71, 69, 227, 98, 131, 28, 56, 35, 25, 111, 114, 118, 234, 50, 201, 136, 142, 35, 43, 48, 48, 41, ], ), }, sequence_number: 8346606807689281728, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(74162f18ea15e85e3b084f60a0c6a244370a6b58bc1ab16a11edda881373989c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810124537003629d474ec47093a637eabc06c88ca4a46c037c4ece01f989e338b13db0268db2690001c361524bdb2c311cd29f8b309ccd00dfd3803b1f60dc49461821e2951b398890ab817805ac0b389160047c2db32b4f08ab2102ac30a0df410118a97da449fb50dac0db355a1af6a154c0b6c8fea7da5533ecc1aef84e0528f4552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef8accc83a57bdc2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 112, 3, 98, 157, 71, 78, 196, 112, 147, 166, 55, 234, 188, 6, 200, 140, 164, 164, 108, 3, 124, 78, 206, 1, 249, 137, 227, 56, 177, 61, 176, 38, 141, 178, 105, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c361524bdb2c311cd29f8b309ccd00df, }, ), received_events: EventHandle { count: 5064821561353797843, key: EventKey( [ 33, 226, 149, 27, 57, 136, 144, 171, 129, 120, 5, 172, 11, 56, 145, 96, 4, 124, 45, 179, 43, 79, 8, 171, ], ), }, sent_events: EventHandle { count: 90599346628461089, key: EventKey( [ 169, 125, 164, 73, 251, 80, 218, 192, 219, 53, 90, 26, 246, 161, 84, 192, 182, 200, 254, 167, 218, 85, 51, 236, ], ), }, sequence_number: 6193619390806142657, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(756347f926852c79dfdabb76f957690c8ec56196519538e0786b80d0caa97b85): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f013249cf50232d4f0ae3210edfa33c3c8e1ceb936adac3017947585967a62692c764ca3c13c3d6ef852e33994d8379847c302b70013f400e57dbd17982b0cd8bf4edf6b3ec01ccbb5fbd863eeab5977a181adc1154d114f5c6c2a431297d183a78f10bede8f4e60b2bbe415a4e34b565158a4691db1adeb202e424be50df781811dbe08da36c25ed319e6bde495ffeb125888343bcf7317f82e55d6039de80162101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce63831f8365e9b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 73, 207, 80, 35, 45, 79, 10, 227, 33, 14, 223, 163, 60, 60, 142, 28, 235, 147, 106, 218, 195, 1, 121, 71, 88, 89, 103, 166, 38, 146, 199, 100, 202, 60, 19, 195, 214, 239, 133, 46, 51, 153, 77, 131, 121, 132, 124, 48, 43, 112, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3f400e57dbd17982b0cd8bf4edf6b3ec, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ccbb5fbd863eeab5977a181adc1154d1, }, ), received_events: EventHandle { count: 9018794312498345236, key: EventKey( [ 58, 120, 241, 11, 237, 232, 244, 230, 11, 43, 190, 65, 90, 78, 52, 181, 101, 21, 138, 70, 145, 219, 26, 222, ], ), }, sent_events: EventHandle { count: 8709768981950759602, key: EventKey( [ 17, 219, 224, 141, 163, 108, 37, 237, 49, 158, 107, 222, 73, 95, 254, 177, 37, 136, 131, 67, 188, 247, 49, 127, ], ), }, sequence_number: 1621540203864647042, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(75bb550ea5f61645d076bd427e574af9aefd57b55ff2cef7861dbdb2bed9dcc1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152c7d3ccf32bcc453a49414baaf4a498f239ffd887b84be4e588e2febdb8ec1894d76168c4e21383a6ba1fd3724be64d2ab4e60fbc34c5f0c18a0a9d95f67c26dd0fd4c796e440b76f2e6e7a29b6f03ffff2de000131fc8e0b0f7bc8f5dd02328e87f733188c9bea6258463e30183381ff10db634f1fe548320337d8e0c623775681cea7fb0a7b79d7ac10b35d6718afd376d043a970cb4647607b5880d62d55f82a2e1d41c9e0ce57a828036581ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f9a5574092ae5e19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 211, 204, 243, 43, 204, 69, 58, 73, 65, 75, 170, 244, 164, 152, 242, 57, 255, 216, 135, 184, 75, 228, 229, 136, 226, 254, 189, 184, 236, 24, 148, 215, 97, 104, 196, 226, 19, 131, 166, 186, 31, 211, 114, 75, 230, 77, 42, 180, 230, 15, 188, 52, 197, 240, 193, 138, 10, 157, 149, 246, 124, 38, 221, 15, 212, 199, 150, 228, 64, 183, 111, 46, 110, 122, 41, 182, 240, 63, 255, 242, 222, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 31fc8e0b0f7bc8f5dd02328e87f73318, }, ), received_events: EventHandle { count: 3476293307807210380, key: EventKey( [ 51, 129, 255, 16, 219, 99, 79, 31, 229, 72, 50, 3, 55, 216, 224, 198, 35, 119, 86, 129, 206, 167, 251, 10, ], ), }, sent_events: EventHandle { count: 7448306242941319547, key: EventKey( [ 175, 211, 118, 208, 67, 169, 112, 203, 70, 71, 96, 123, 88, 128, 214, 45, 85, 248, 42, 46, 29, 65, 201, 224, ], ), }, sequence_number: 18411107815908726734, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(767f8e65bc411fcd657a575803d7d225a005e32733b20de3a6e6adfca522d99b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d5bbaa5d3692301c502e7d363d3f22333da3454348def6ecea9e41c478a2ae86b4f803837b180b4d8bbcc13c46d0186e9fa0467b97cfdb91ca7fadef36f490028ccbd80f931a446189906aff4cdd8adff8d570df93a15328d07ee764f711704f2c4d4fa6c9f24330518a747d781f307399608068b814fd402a91c4d4e39b43d568dceba2eb2a5755f292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7ae09e4f7421994 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 186, 165, 211, 105, 35, 1, 197, 2, 231, 211, 99, 211, 242, 35, 51, 218, 52, 84, 52, 141, 239, 110, 206, 169, 228, 28, 71, 138, 42, 232, 107, 79, 128, 56, 55, 177, 128, 180, 216, 187, 204, 19, 196, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86e9fa0467b97cfdb91ca7fadef36f49, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5090248426512043048, key: EventKey( [ 153, 6, 175, 244, 205, 216, 173, 255, 141, 87, 13, 249, 58, 21, 50, 141, 7, 238, 118, 79, 113, 23, 4, 242, ], ), }, sent_events: EventHandle { count: 374683461148660932, key: EventKey( [ 167, 71, 215, 129, 243, 7, 57, 150, 8, 6, 139, 129, 79, 212, 2, 169, 28, 77, 78, 57, 180, 61, 86, 141, ], ), }, sequence_number: 2981230832862018254, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7803d9aa570eb118a3b63b6e28c83d11150cd2279825e4143863348694f11da4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155b772295433d7378c7c9dc05d2ae4fff451122b0d39831f97616790b3b9cec9bbd8c23e2f69d39baa5f1a9c8b218834be0e029274936adbecf2397fe900b263fe0659936f214ce568a7f4914c8fab50a9bdbb68be860001192e63cdd0e077ac9b441eb7253b09572437a7d61d497d28184ed9ac41dc30a39467a360cafae096566db825b2dc61cf3ed45b9456785db1661885422f641544231a9aa4213d5f98673a2ba1b043b5e0625b7650be838c565edb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a4db98fbc6baef99 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 114, 41, 84, 51, 215, 55, 140, 124, 157, 192, 93, 42, 228, 255, 244, 81, 18, 43, 13, 57, 131, 31, 151, 97, 103, 144, 179, 185, 206, 201, 187, 216, 194, 62, 47, 105, 211, 155, 170, 95, 26, 156, 139, 33, 136, 52, 190, 14, 2, 146, 116, 147, 106, 219, 236, 242, 57, 127, 233, 0, 178, 99, 254, 6, 89, 147, 111, 33, 76, 229, 104, 167, 244, 145, 76, 143, 171, 80, 169, 189, 187, 104, 190, 134, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 192e63cdd0e077ac9b441eb7253b0957, }, ), received_events: EventHandle { count: 2917568526110111524, key: EventKey( [ 78, 217, 172, 65, 220, 48, 163, 148, 103, 163, 96, 202, 250, 224, 150, 86, 109, 184, 37, 178, 220, 97, 207, 62, ], ), }, sent_events: EventHandle { count: 7399798434176457684, key: EventKey( [ 133, 66, 47, 100, 21, 68, 35, 26, 154, 164, 33, 61, 95, 152, 103, 58, 43, 161, 176, 67, 181, 224, 98, 91, ], ), }, sequence_number: 15807166903622717558, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(787210776cfc3e5f694d21b7eff19a1d4fdd25e0973e8a1ddb33d29b306986b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00143c0039cb42b345e5f0f62a0e8cee36e38f3f3386703ba14e4875f3f0c280743ce3fa101b98e7928dcac64f9a4d720492d8102af1ba9092c1f82c3741fb0835ab759bd20000186baecc1d1d3af428bf62aed944cef59650f5be5d376a67a18cd917ae181ee4624aa0b24fb6982aa22db38c9c873a16508cfe4b5e382bfa11918a07c210f3cb6095c1a8458a56ac108f6d8d4cc48d75ced92d477e0cdb03c8a7f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088451deeda47395ee Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 3, 156, 180, 43, 52, 94, 95, 15, 98, 160, 232, 206, 227, 110, 56, 243, 243, 56, 103, 3, 186, 20, 228, 135, 95, 63, 12, 40, 7, 67, 206, 63, 161, 1, 185, 142, 121, 40, 220, 172, 100, 249, 164, 215, 32, 73, 45, 129, 2, 175, 27, 169, 9, 44, 31, 130, 195, 116, 31, 176, 131, 90, 183, 89, 189, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 86baecc1d1d3af428bf62aed944cef59, }, ), received_events: EventHandle { count: 8837881971219304293, key: EventKey( [ 205, 145, 122, 225, 129, 238, 70, 36, 170, 11, 36, 251, 105, 130, 170, 34, 219, 56, 201, 200, 115, 161, 101, 8, ], ), }, sent_events: EventHandle { count: 1846967891085616335, key: EventKey( [ 160, 124, 33, 15, 60, 182, 9, 92, 26, 132, 88, 165, 106, 193, 8, 246, 216, 212, 204, 72, 215, 92, 237, 146, ], ), }, sequence_number: 9190224719668869076, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(788af305bdcf0599cf400e6b25296f02f7264db422fe4a10a2a8595c5544f958): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012ee26f90d4c07f93b7f241d868922353c260de675db7c61ca94fb8c36fb135de8dae3b5d4bd1fde582254b4bf143a7011da98639b89623ce4a6e16f697dcbbbc00ea418cfef235ae27186dd2e650ee5fb307ec3951e12c4622fce384f1af230e7424c655540def63b62d181e08e902abe48e3774598b2a70d84954b7577f021284f358ea2435304ba516542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bedede97ddc97fb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 111, 144, 212, 192, 127, 147, 183, 242, 65, 216, 104, 146, 35, 83, 194, 96, 222, 103, 93, 183, 198, 28, 169, 79, 184, 195, 111, 177, 53, 222, 141, 174, 59, 93, 75, 209, 253, 229, 130, 37, 75, 75, 241, 67, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1da98639b89623ce4a6e16f697dcbbbc, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2859282131195806186, key: EventKey( [ 109, 210, 230, 80, 238, 95, 179, 7, 236, 57, 81, 225, 44, 70, 34, 252, 227, 132, 241, 175, 35, 14, 116, 36, ], ), }, sent_events: EventHandle { count: 3293930055840060870, key: EventKey( [ 30, 8, 233, 2, 171, 228, 142, 55, 116, 89, 139, 42, 112, 216, 73, 84, 183, 87, 127, 2, 18, 132, 243, 88, ], ), }, sequence_number: 6059212091023500522, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(79b4d6de120ce904ab4c1b15d658cd80787ee1ada55854951ef2e8e422476e30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b90b65835b5c1a9ab74c76ec1e27706074d4561502c1191f3c9e866fc6fa7b44641d5045cb13f903b7875fa495a8b47bf7454af445b422bd80e9e61b8747e3e7981b0663364898f82fdaaa701c4e2d15183c972dadec7c50f655fe75501602aaa955996b79c60e981859df00e5a4cdfd2fe82101b0e1847bdf5f455cb834d39a285eb36e8d065f9a8ce971b69e1ff0edc104abdb28d7c183ddc161c23db3e155df22dc8c79aeec24cf2470c8fc5539ce1f54bd4015eaae32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cd2a9335226d72ea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 182, 88, 53, 181, 193, 169, 171, 116, 199, 110, 193, 226, 119, 6, 7, 77, 69, 97, 80, 44, 17, 145, 243, 201, 232, 102, 252, 111, 167, 180, 70, 65, 213, 4, 92, 177, 63, 144, 59, 120, 117, 250, 73, 90, 139, 71, 191, 116, 84, 175, 68, 91, 66, 43, 216, 14, 158, 97, 184, 116, 126, 62, 121, 129, 176, 102, 51, 100, 137, 143, 130, 253, 170, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4e2d15183c972dadec7c50f655fe755, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 602aaa955996b79c60e981859df00e5a, }, ), received_events: EventHandle { count: 1016424295709204300, key: EventKey( [ 71, 189, 245, 244, 85, 203, 131, 77, 57, 162, 133, 235, 54, 232, 208, 101, 249, 168, 206, 151, 27, 105, 225, 255, ], ), }, sent_events: EventHandle { count: 8975026158480448526, key: EventKey( [ 61, 220, 22, 28, 35, 219, 62, 21, 93, 242, 45, 200, 199, 154, 238, 194, 76, 242, 71, 12, 143, 197, 83, 156, ], ), }, sequence_number: 16405027954600179169, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7a99b03b51e8931b907538bb53732bc615170c80eda86b484f89f0c75b32e3c1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9761937a8d511747ff9c8bba344af0520bade591cc8e2f438fa3ea3014c0cc6efd8a7dda32587b2ab91325fac005ae98a27b8d6e16918f00e7768105de12ea1f40825e584420cb1c3952a272275d4b2140d6d8b71617c18e7f3133b077abbe0e125c1be98e5a2b51f0bf8bbb97bbc7e6ca661831d44dda12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70841dbc7d61fdccd70 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 168, 213, 17, 116, 127, 249, 200, 187, 163, 68, 175, 5, 32, 186, 222, 89, 28, 200, 226, 244, 56, 250, 62, 163, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4c0cc6efd8a7dda32587b2ab91325fac, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7629615330168072538, key: EventKey( [ 240, 14, 119, 104, 16, 93, 225, 46, 161, 244, 8, 37, 229, 132, 66, 12, 177, 195, 149, 42, 39, 34, 117, 212, ], ), }, sent_events: EventHandle { count: 8962569577087964338, key: EventKey( [ 231, 243, 19, 59, 7, 122, 187, 224, 225, 37, 193, 190, 152, 229, 162, 181, 31, 11, 248, 187, 185, 123, 188, 126, ], ), }, sequence_number: 11663553503508407916, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7a9b1a46234c692efdeea8a2039485a26018f918b2e24ec7e64c230c6e98a88e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01415e4218f1896e438cb4f432a1ff3e7cc45b266eb797770d0554b4baf2d6495569fc10e1e17182a2232ee5b2149c96d9e0d3806df5927598e95c80ae60932353f4b1000019fbd950f2c1fd4118530938cfca0063a50d3b43ef2fa203c3384eec895ef72618caec6b5daf3426091879d43b2b7a7c6a803bc59298674b5cc79891a4dce9c22c1e9186f1678655ab852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080fa2df3ddf4ab8f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 94, 66, 24, 241, 137, 110, 67, 140, 180, 244, 50, 161, 255, 62, 124, 196, 91, 38, 110, 183, 151, 119, 13, 5, 84, 180, 186, 242, 214, 73, 85, 105, 252, 16, 225, 225, 113, 130, 162, 35, 46, 229, 178, 20, 156, 150, 217, 224, 211, 128, 109, 245, 146, 117, 152, 233, 92, 128, 174, 96, 147, 35, 83, 244, 177, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4755170028055821081, key: EventKey( [ 83, 9, 56, 207, 202, 0, 99, 165, 13, 59, 67, 239, 47, 162, 3, 195, 56, 78, 236, 137, 94, 247, 38, 24, ], ), }, sent_events: EventHandle { count: 659272323247631562, key: EventKey( [ 121, 212, 59, 43, 122, 124, 106, 128, 59, 197, 146, 152, 103, 75, 92, 199, 152, 145, 164, 220, 233, 194, 44, 30, ], ), }, sequence_number: 9631886263819798161, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7abfc02ef0645e9e68ff9279b6bb572912db6c231ca182754e41c7c0bfa50b37): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9771a05fa666c5660d93a83a4af6435b44719e229447f0ca83d95cde400010050142db393cb16982d60f168330111c84740ab71aa3a1a18aed122e451d5c2beb18f4ce3a5cfa5713814eb7ea23ace152b2c3b0ccc44d2421842f0dc7e9646bee98bc8ae708b3043ec38f0a3769aea08e16cc4520fa95c50a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d347594caca71d0b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 250, 102, 108, 86, 96, 217, 58, 131, 164, 175, 100, 53, 180, 71, 25, 226, 41, 68, 127, 12, 168, 61, 149, 205, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0050142db393cb16982d60f168330111, }, ), received_events: EventHandle { count: 1890010398816487368, key: EventKey( [ 174, 209, 34, 228, 81, 213, 194, 190, 177, 143, 76, 227, 165, 207, 165, 113, 56, 20, 235, 126, 162, 58, 206, 21, ], ), }, sent_events: EventHandle { count: 4814986594781703211, key: EventKey( [ 66, 240, 220, 126, 150, 70, 190, 233, 139, 200, 174, 112, 139, 48, 67, 236, 56, 240, 163, 118, 154, 234, 8, 225, ], ), }, sequence_number: 11840065301533344876, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7ac869b9e1e6330e3312c96f7c039500f0d2ba0d2cce5ab47cc698b753177214): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c996012932ea1521f45a14f4720d33da4e11c6784e64f9dfdf9cd0a5700b50fa584d89bece016c0adb6a1e19cb01701374404879988d0a5bed9ee0b24f5a01869500e066a80ad321172c8004fe0c8012de3aa58b5d624b180934f10ea5fe0c3e3b0cba4958251b0a6b55e415b72fac3b1da36a38a6145c701896c4087b5e02e4ff5be711aaf2638308f79f8c76f6c11fa81976e82ec9c05d132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ad3b6c7e9187ef20 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 234, 21, 33, 244, 90, 20, 244, 114, 13, 51, 218, 78, 17, 198, 120, 78, 100, 249, 223, 223, 156, 208, 165, 112, 11, 80, 250, 88, 77, 137, 190, 206, 1, 108, 10, 219, 106, 30, 25, 203, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 701374404879988d0a5bed9ee0b24f5a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 869500e066a80ad321172c8004fe0c80, }, ), received_events: EventHandle { count: 5432006954916175378, key: EventKey( [ 9, 52, 241, 14, 165, 254, 12, 62, 59, 12, 186, 73, 88, 37, 27, 10, 107, 85, 228, 21, 183, 47, 172, 59, ], ), }, sent_events: EventHandle { count: 8096368934248948509, key: EventKey( [ 150, 196, 8, 123, 94, 2, 228, 255, 91, 231, 17, 170, 242, 99, 131, 8, 247, 159, 140, 118, 246, 193, 31, 168, ], ), }, sequence_number: 1395483429862667801, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b125e7d3c8bc7cf14549626d61b70b3acf16061ad6705872488ce53f5cc3b37): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96417df8a626e6725f2b90a93ab5d76ff0cb1a56f5d830d19390000899bac79380050351825f5144b1c275927411e61ed3dc9849ea45dce87c90f3ce9d852a6ea325b9877188ace3e96848e61736fa8a9a2154e7ba769ea5d0cf7fa239687853df6114b86de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087c40792fe6015c4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 138, 98, 110, 103, 37, 242, 185, 10, 147, 171, 93, 118, 255, 12, 177, 165, 111, 93, 131, 13, 25, 57, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3841570724706556809, key: EventKey( [ 37, 245, 20, 75, 28, 39, 89, 39, 65, 30, 97, 237, 61, 201, 132, 158, 164, 93, 206, 135, 201, 15, 60, 233, ], ), }, sent_events: EventHandle { count: 8617738161216705240, key: EventKey( [ 138, 206, 62, 150, 132, 142, 97, 115, 111, 168, 169, 162, 21, 78, 123, 167, 105, 234, 93, 12, 247, 250, 35, 150, ], ), }, sequence_number: 16034586063816983943, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b25eb01c18d78b98c21cb975156fa0c879991da8a395da2e10db538688f4f1f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f129e01a3b4fec5d357107fa99421a2f7b480ef01e9a7b4a0e472ac94c7e7f268dcbad944017bcfe55c17ec77ff11cc6219affe1f10136d6d7dad9d06591879c81952724e8783ee81f022c8c54235b7c7c799c166d180082caee5f58a5e781815e72273a8b14603fecb11432ea9120992b4baa6df8cfb728e2a1b5bf2d9231b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085744d3401b623ca3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 158, 1, 163, 180, 254, 197, 211, 87, 16, 127, 169, 148, 33, 162, 247, 180, 128, 239, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e9a7b4a0e472ac94c7e7f268dcbad944, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7bcfe55c17ec77ff11cc6219affe1f10, }, ), received_events: EventHandle { count: 6414988087695076627, key: EventKey( [ 121, 200, 25, 82, 114, 78, 135, 131, 238, 129, 240, 34, 200, 197, 66, 53, 183, 199, 199, 153, 193, 102, 209, 128, ], ), }, sent_events: EventHandle { count: 8673522721087171592, key: EventKey( [ 21, 231, 34, 115, 168, 177, 70, 3, 254, 203, 17, 67, 46, 169, 18, 9, 146, 180, 186, 166, 223, 140, 251, 114, ], ), }, sequence_number: 1955646298142747278, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b6ccf26af8603822c953b1d4188fd442c2c02072c15b46c6708ed828c0b7bf1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d000001b54f155077d904e863740cd46ae1bac329a16b998c9c472518b67bc2ed7d8c810d9ebdc80d83e207aca52d47bebbe2319512a5c44fdfcc1c0f18118102f4f5d6398ed5c246124e9033b30c6a090b7140d353b78bc6463942baa52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fb433888989d8de2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b54f155077d904e863740cd46ae1bac3, }, ), received_events: EventHandle { count: 2686287830433112361, key: EventKey( [ 182, 123, 194, 237, 125, 140, 129, 13, 158, 189, 200, 13, 131, 226, 7, 172, 165, 45, 71, 190, 187, 226, 49, 149, ], ), }, sent_events: EventHandle { count: 1088970469404878098, key: EventKey( [ 17, 129, 2, 244, 245, 214, 57, 142, 213, 194, 70, 18, 78, 144, 51, 179, 12, 106, 9, 11, 113, 64, 211, 83, ], ), }, sequence_number: 11941930175694277559, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c030a4b520f689838fa8365b2df39a95870e5221b4b4c54e7ac707d686af353): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b2d84db6435ac6a3d660be314fe416271237c8c98284f49efffeca103116e8025dfbe7d2671459e7702281dd8c198db236ec9dee95bb54abb23941aeccf58bb021c8b9728b739465a9deb81efad9de04a935eb83afb46d41df8a72d0001523254eb643f96476a3ed944617fa4c8b840cfa030d00f76181d1100c9c098a61fb2774383e99252258c646d3c29e4005b5ce3dab155b5a62118a501834328fb08fee538dbbd9ce72498a8c007832106446d873cd7ee90f98b0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708133547a9d1d67b2b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 132, 219, 100, 53, 172, 106, 61, 102, 11, 227, 20, 254, 65, 98, 113, 35, 124, 140, 152, 40, 79, 73, 239, 255, 236, 161, 3, 17, 110, 128, 37, 223, 190, 125, 38, 113, 69, 158, 119, 2, 40, 29, 216, 193, 152, 219, 35, 110, 201, 222, 233, 91, 181, 74, 187, 35, 148, 26, 236, 207, 88, 187, 2, 28, 139, 151, 40, 183, 57, 70, 90, 157, 235, 129, 239, 173, 157, 224, 74, 147, 94, 184, 58, 251, 70, 212, 29, 248, 167, 45, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 523254eb643f96476a3ed944617fa4c8, }, ), received_events: EventHandle { count: 8507247128401100984, key: EventKey( [ 29, 17, 0, 201, 192, 152, 166, 31, 178, 119, 67, 131, 233, 146, 82, 37, 140, 100, 109, 60, 41, 228, 0, 91, ], ), }, sent_events: EventHandle { count: 2424824829046350684, key: EventKey( [ 165, 1, 131, 67, 40, 251, 8, 254, 229, 56, 219, 189, 156, 231, 36, 152, 168, 192, 7, 131, 33, 6, 68, 109, ], ), }, sequence_number: 832032957057678471, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c0c81fddd2dcaed64ae3b728f4344bf51d654f3de52b4cb60065f9096dbb05f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cc015fc90fa1bdd1eb6d58a4d4d0346d48c272845d3ab4cf5fcbb717235aa17b96fb563144b370875630e43ec8ae8945407e3ccc89d8b972eb3ffed1828552fc5894e44a11aaec34b795bcc75117eefbab69f7ddc538b8a4a4f98ceffb2c343db75a011b4d557a7adb8ca1d42f8f06f1c4a6bc01a666b360e48d9505ce1bfe64fa75acfa0c2746c67528784b189d9cbf4c68ecf4c13a4ebc359cfa3ccdbf2d423cd90d2e1bacdb407fe8325129187efda9b9a5c3bd8c6b0dc19b918b2d0ec92423cbdf82ffd795c4a9912170fb9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a2a4eb20ed8ff65e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 15, 161, 189, 209, 235, 109, 88, 164, 212, 208, 52, 109, 72, 194, 114, 132, 93, 58, 180, 207, 95, 203, 183, 23, 35, 90, 161, 123, 150, 251, 86, 49, 68, 179, 112, 135, 86, 48, 228, 62, 200, 174, 137, 69, 64, 126, 60, 204, 137, 216, 185, 114, 235, 63, 254, 209, 130, 133, 82, 252, 88, 148, 228, 74, 17, 170, 236, 52, 183, 149, 188, 199, 81, 23, 238, 251, 171, 105, 247, 221, 197, 56, 184, 164, 164, 249, 140, 239, 251, 44, 52, 61, 183, 90, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1b4d557a7adb8ca1d42f8f06f1c4a6bc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a666b360e48d9505ce1bfe64fa75acfa, }, ), received_events: EventHandle { count: 5438141036352644876, key: EventKey( [ 157, 156, 191, 76, 104, 236, 244, 193, 58, 78, 188, 53, 156, 250, 60, 205, 191, 45, 66, 60, 217, 13, 46, 27, ], ), }, sent_events: EventHandle { count: 2977216802817366956, key: EventKey( [ 126, 253, 169, 185, 165, 195, 189, 140, 107, 13, 193, 155, 145, 139, 45, 14, 201, 36, 35, 203, 223, 130, 255, 215, ], ), }, sequence_number: 11167642990475330709, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c6d037c1d7465f68254de9ed3389405a32a5ff2c31e11e5899da3e95c209acd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01306b13b7df3fb17794b802efc93c526ff273e137e677096f35e70c42c0f65cb2c939f2a2fb22a2dc1ffc8d0ffc513601fa00019e084a39853d0538a9442b248aee19dddb07a208c515fb7a180279dd7eca2c717cda2870945c1e42bd95b2e6791bcaf2c9cdffacf85623694818359b9505c05b369037533b2cd825347b8dbc23e11f6376303b2d62c67dfd36f72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec8fd8164cd15e93 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 19, 183, 223, 63, 177, 119, 148, 184, 2, 239, 201, 60, 82, 111, 242, 115, 225, 55, 230, 119, 9, 111, 53, 231, 12, 66, 192, 246, 92, 178, 201, 57, 242, 162, 251, 34, 162, 220, 31, 252, 141, 15, 252, 81, 54, 1, 250, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9e084a39853d0538a9442b248aee19dd, }, ), received_events: EventHandle { count: 8861700627779160027, key: EventKey( [ 2, 121, 221, 126, 202, 44, 113, 124, 218, 40, 112, 148, 92, 30, 66, 189, 149, 178, 230, 121, 27, 202, 242, 201, ], ), }, sent_events: EventHandle { count: 5217740499731677133, key: EventKey( [ 53, 155, 149, 5, 192, 91, 54, 144, 55, 83, 59, 44, 216, 37, 52, 123, 141, 188, 35, 225, 31, 99, 118, 48, ], ), }, sequence_number: 17813704092751637819, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7ce0624d4b22617f76e9397aa4262b875c57218869a9e61371f7c7befc78d7d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c991013461fe5c4c545a0bf8a2e075dedc18e1a46548aec229b714a9bfd00e51a2f1d69f26779ee4d61ebdac4c6cdb6e8539175a32d8e5450001d6d3ec0114a6cd25d53de38c1492bb82a843136c24fb9451185c84c1fe3debf9ca55e3f86be95ffe035c5ba3cd26712baa431ce7612604490b18a817d60e80d04bd7224b62276472fffe9e05219b23d298ea791a81de8b4f2bd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e250744c01667bea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 254, 92, 76, 84, 90, 11, 248, 162, 224, 117, 222, 220, 24, 225, 164, 101, 72, 174, 194, 41, 183, 20, 169, 191, 208, 14, 81, 162, 241, 214, 159, 38, 119, 158, 228, 214, 30, 189, 172, 76, 108, 219, 110, 133, 57, 23, 90, 50, 216, 229, 69, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d6d3ec0114a6cd25d53de38c1492bb82, }, ), received_events: EventHandle { count: 5878599547475936168, key: EventKey( [ 92, 132, 193, 254, 61, 235, 249, 202, 85, 227, 248, 107, 233, 95, 254, 3, 92, 91, 163, 205, 38, 113, 43, 170, ], ), }, sent_events: EventHandle { count: 813185770614889539, key: EventKey( [ 168, 23, 214, 14, 128, 208, 75, 215, 34, 75, 98, 39, 100, 114, 255, 254, 158, 5, 33, 155, 35, 210, 152, 234, ], ), }, sequence_number: 15432516010267187833, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7d864f49e4a7d39579ef06daa264b5453a081073f12d8c490619a3293280ae80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22520d5331387e0d928840f78582945354b3839fca6355613c85afc55df84551a58f2400008df3b8923fbcad60189c9a0af428f7fe458ac838612c9e55ac3f8ae504974aabb7df53e8bafe72513218ab58b8affa641b65b3f933b17eabb8d7d3dc7b62263e653f770516e4b64b63002101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70884d8ed87b8813f3d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 13, 83, 49, 56, 126, 13, 146, 136, 64, 247, 133, 130, 148, 83, 84, 179, 131, 159, 202, 99, 85, 97, 60, 133, 175, 197, 93, 248, 69, 81, 165, 143, 36, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6966431179842581389, key: EventKey( [ 156, 154, 10, 244, 40, 247, 254, 69, 138, 200, 56, 97, 44, 158, 85, 172, 63, 138, 229, 4, 151, 74, 171, 183, ], ), }, sent_events: EventHandle { count: 3625805613393007583, key: EventKey( [ 171, 88, 184, 175, 250, 100, 27, 101, 179, 249, 51, 177, 126, 171, 184, 215, 211, 220, 123, 98, 38, 62, 101, 63, ], ), }, sequence_number: 27949271577134455, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7d89e34b322e50178f7b4ebd699802e6925f3ec71eacb51600de0440d864be85): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e35576f5271384c6218139005d7b3cf2133e83abc754e14faa5806e375c4c1e365437f646176a1531208839515d0de622fc3ec15324a0be529776c3a6b76b8c7f19c62b8f5c9adf3b3e554d5503090001ad88332f00c56028009ae9bfbfaf7882dd8549d3afd089391829f847e505b020cf14c90152ad183d733e86a8c66e594a13c53dd5e9f0544c3218cb1a9ae8e434877cc7972c82a69af71430243310e0d15a1535463a4a470e5a9f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70856a06e909b1151ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 87, 111, 82, 113, 56, 76, 98, 24, 19, 144, 5, 215, 179, 207, 33, 51, 232, 58, 188, 117, 78, 20, 250, 165, 128, 110, 55, 92, 76, 30, 54, 84, 55, 246, 70, 23, 106, 21, 49, 32, 136, 57, 81, 93, 13, 230, 34, 252, 62, 193, 83, 36, 160, 190, 82, 151, 118, 195, 166, 183, 107, 140, 127, 25, 198, 43, 143, 92, 154, 223, 59, 62, 85, 77, 85, 3, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ad88332f00c56028009ae9bfbfaf7882, }, ), received_events: EventHandle { count: 4146074385553917405, key: EventKey( [ 41, 248, 71, 229, 5, 176, 32, 207, 20, 201, 1, 82, 173, 24, 61, 115, 62, 134, 168, 198, 110, 89, 74, 19, ], ), }, sent_events: EventHandle { count: 3624365193818357189, key: EventKey( [ 203, 26, 154, 232, 228, 52, 135, 124, 199, 151, 44, 130, 166, 154, 247, 20, 48, 36, 51, 16, 224, 209, 90, 21, ], ), }, sequence_number: 11482505899285300789, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e68da57c517e5e35922d9d7601afb22a1250eb062c0931c648c243f40883e34): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22e26972b79fba944c778085a2d7397a88f20fd77438dfe42d32707cc8321a0f07620000000a60be19a8b8727218345669b05fffa03e4faec31cafbffaae74a2f608bc29966bdc9a47aec88c630e1889cd57c59b22d5353a6db5a9113d5235021f16a4e73fef86717e8f20ff1cb4982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087de53302c882e224 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 105, 114, 183, 159, 186, 148, 76, 119, 128, 133, 162, 215, 57, 122, 136, 242, 15, 215, 116, 56, 223, 228, 45, 50, 112, 124, 200, 50, 26, 15, 7, 98, 0, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8246856899794722826, key: EventKey( [ 52, 86, 105, 176, 95, 255, 160, 62, 79, 174, 195, 28, 175, 191, 250, 174, 116, 162, 246, 8, 188, 41, 150, 107, ], ), }, sent_events: EventHandle { count: 1036827132770622172, key: EventKey( [ 137, 205, 87, 197, 155, 34, 213, 53, 58, 109, 181, 169, 17, 61, 82, 53, 2, 31, 22, 164, 231, 63, 239, 134, ], ), }, sequence_number: 11003451671661477489, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e70305de1692f58ebc7a2a1565979c95b9de409a26e162689a549abc3774104): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a73cf99c9a2ecf458ad5243b60e5bdcbd3a4f2e2174626ad3f5793fd2735d599f2e1c479f75dcfae97c5e04944e47216b60c2f55a5af774a6459fb332e987f7acfc10d2db233740c01e0de1dd40b56a5f2a43ef8bfc1e4c9ebf37018dbb9972d69be36f2734a6a055fd6f72006a36b1e1cbd071561873dccb39c1354e361bcc0dd2e780880d02983d928f80b125240c21e2d1804961187e7559a630542d49000ce6ca0afb6c5c881e643e1c9aed00fe0b4e1ec8ff9d1f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70833cb4e3590623876 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 207, 153, 201, 162, 236, 244, 88, 173, 82, 67, 182, 14, 91, 220, 189, 58, 79, 46, 33, 116, 98, 106, 211, 245, 121, 63, 210, 115, 93, 89, 159, 46, 28, 71, 159, 117, 220, 250, 233, 124, 94, 4, 148, 78, 71, 33, 107, 96, 194, 245, 90, 90, 247, 116, 166, 69, 159, 179, 50, 233, 135, 247, 172, 252, 16, 210, 219, 35, 55, 64, 192, 30, 13, 225, 221, 64, 181, 106, 95, 42, 67, 239, 139, 252, 30, 76, 158, 191, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8dbb9972d69be36f2734a6a055fd6f72, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6228989333713532522, key: EventKey( [ 115, 220, 203, 57, 193, 53, 78, 54, 27, 204, 13, 210, 231, 128, 136, 13, 2, 152, 61, 146, 143, 128, 177, 37, ], ), }, sent_events: EventHandle { count: 7010275933909224484, key: EventKey( [ 126, 117, 89, 166, 48, 84, 45, 73, 0, 12, 230, 202, 10, 251, 108, 92, 136, 30, 100, 62, 28, 154, 237, 0, ], ), }, sequence_number: 2278258221486312446, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e78e786c88ad637c404a8ed32173a4eee35f479e6c7e8459ffb13ded606c763): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d015006557a0f1d895df58d97bde8a99f8c69fd20c9a69217484ba8cb6c0cbe3bc65f5f4e0b4f5ee5ec85c3d37c8e6edfdd90727a248f8d5272eb330a81c3e3ed27fe7ddbe7f196f2bdb49befb0a420f202b60000468a62df35f6e01e185f996b319e8df79d94afa6bddb2836bd83a1b74acd2df668943de1859d48ae1318db7db0b253920877aff6d2666a8f10be619ec2b55f942a8de8a1c2cebaccc8b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a55c6d63bd38f1c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 85, 122, 15, 29, 137, 93, 245, 141, 151, 189, 232, 169, 159, 140, 105, 253, 32, 201, 166, 146, 23, 72, 75, 168, 203, 108, 12, 190, 59, 198, 95, 95, 78, 11, 79, 94, 229, 236, 133, 195, 211, 124, 142, 110, 223, 221, 144, 114, 122, 36, 143, 141, 82, 114, 235, 51, 10, 129, 195, 227, 237, 39, 254, 125, 219, 231, 241, 150, 242, 189, 180, 155, 239, 176, 164, 32, 242, 2, 182, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2225048927162501702, key: EventKey( [ 95, 153, 107, 49, 158, 141, 247, 157, 148, 175, 166, 189, 219, 40, 54, 189, 131, 161, 183, 74, 205, 45, 246, 104, ], ), }, sent_events: EventHandle { count: 1418150774061481364, key: EventKey( [ 219, 125, 176, 178, 83, 146, 8, 119, 175, 246, 210, 102, 106, 143, 16, 190, 97, 158, 194, 181, 95, 148, 42, 141, ], ), }, sequence_number: 12810714242760221160, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7edec657828450da458063ace9162e64890ca0631a0d4f5bc34709ae6baf00da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a601494b1b4ef718bfa148f66e0855d23c6aba1a7b2b06478750b874feb7a8e55135c7bc9d457a0e339a200a78d691513295c20b44c9d438cd831e719e18504a749158ee5b7cc3985bfabbd00001ae058c46d318d905964729533088698a6b79f8d8243fe64b183a5de6f4710e7927fb820759fd1e51a2aa60eeab48923c7c832b9cfbf1daf72a187ac7d745faff113b65ddac98e5e171750d7943985ce7db6ba79fc921d29683f52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080ac97bd699f4d652 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 27, 78, 247, 24, 191, 161, 72, 246, 110, 8, 85, 210, 60, 106, 186, 26, 123, 43, 6, 71, 135, 80, 184, 116, 254, 183, 168, 229, 81, 53, 199, 188, 157, 69, 122, 14, 51, 154, 32, 10, 120, 214, 145, 81, 50, 149, 194, 11, 68, 201, 212, 56, 205, 131, 30, 113, 158, 24, 80, 74, 116, 145, 88, 238, 91, 124, 195, 152, 91, 250, 187, 208, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae058c46d318d905964729533088698a, }, ), received_events: EventHandle { count: 5469128224979581291, key: EventKey( [ 58, 93, 230, 244, 113, 14, 121, 39, 251, 130, 7, 89, 253, 30, 81, 162, 170, 96, 238, 171, 72, 146, 60, 124, ], ), }, sent_events: EventHandle { count: 3096184001683794819, key: EventKey( [ 122, 199, 215, 69, 250, 255, 17, 59, 101, 221, 172, 152, 229, 225, 113, 117, 13, 121, 67, 152, 92, 231, 219, 107, ], ), }, sequence_number: 17691149590495600551, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f20860f9736c26f38486951c3c2375234c5382ecd668d65cb4c37a5ba3a7bbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7014a35ecea951c7dd368775555fd3a3a27d8425e0c7aaf146e39d913fd2c020695a527a7817a49d3d47d7d61d18bab2d757dc12b8dbb899ab5bef34a17ed3fcf31e9f7e6253e8601b6c571ec01ace57bc6320fcb370c7cf42958afc2ef0187403b080c090f64a76f436e7eee736333212212ec44883518e1a41655d30277acfda33248a6e856ae77ca3d0740c612fe289479a89c88f01918f3a91a6854952408edd5cf2a84ee453b58b807c63513684a4a526fe96250242b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843247e877229e065 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 236, 234, 149, 28, 125, 211, 104, 119, 85, 85, 253, 58, 58, 39, 216, 66, 94, 12, 122, 175, 20, 110, 57, 217, 19, 253, 44, 2, 6, 149, 165, 39, 167, 129, 122, 73, 211, 212, 125, 125, 97, 209, 139, 171, 45, 117, 125, 193, 43, 141, 187, 137, 154, 181, 190, 243, 74, 23, 237, 63, 207, 49, 233, 247, 230, 37, 62, 134, 1, 182, 197, 113, 236, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ace57bc6320fcb370c7cf42958afc2ef, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 87403b080c090f64a76f436e7eee7363, }, ), received_events: EventHandle { count: 3857408861550027059, key: EventKey( [ 225, 164, 22, 85, 211, 2, 119, 172, 253, 163, 50, 72, 166, 232, 86, 174, 119, 202, 61, 7, 64, 198, 18, 254, ], ), }, sent_events: EventHandle { count: 1869144051781571624, key: EventKey( [ 243, 169, 26, 104, 84, 149, 36, 8, 237, 213, 207, 42, 132, 238, 69, 59, 88, 184, 7, 198, 53, 19, 104, 74, ], ), }, sequence_number: 3108698028545888842, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f3b5e9f72dac0e3da78059ed9b7982503bd419a3c601e6f56917400d096fb67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999014cfe76eb6c9ab920ed14684c509c46b5c36db3a083952855c4d2361b5b4a38c8e6f4431d954cdaecdd03a9d95e9b092c11da0bbd86ae79db5398193f884a9251f082266065277463fd518a24a10000d16fdd4336aabe4f18b0d3250e3b7772c2ce073c04c67d08635f58e2f59c4d9218e4f383307adf7318186530c8101eb7d95b5633ff164e26becd7ed2e777ef0cd65852cfd33662e421842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fb437c70f3383e9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 118, 235, 108, 154, 185, 32, 237, 20, 104, 76, 80, 156, 70, 181, 195, 109, 179, 160, 131, 149, 40, 85, 196, 210, 54, 27, 91, 74, 56, 200, 230, 244, 67, 29, 149, 76, 218, 236, 221, 3, 169, 217, 94, 155, 9, 44, 17, 218, 11, 189, 134, 174, 121, 219, 83, 152, 25, 63, 136, 74, 146, 81, 240, 130, 38, 96, 101, 39, 116, 99, 253, 81, 138, 36, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5746217324614873041, key: EventKey( [ 176, 211, 37, 14, 59, 119, 114, 194, 206, 7, 60, 4, 198, 125, 8, 99, 95, 88, 226, 245, 156, 77, 146, 24, ], ), }, sent_events: EventHandle { count: 1761997595124954084, key: EventKey( [ 101, 48, 200, 16, 30, 183, 217, 91, 86, 51, 255, 22, 78, 38, 190, 205, 126, 210, 231, 119, 239, 12, 214, 88, ], ), }, sequence_number: 9521142197715717970, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8028259f9f834ee921e8451c2da1380c73498e4b34fc10e4f8a528a290f689a1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671a9f2c2d09350738d0a4e9562b46188ac993dfa748e738341ac9510000407905971763494f18e958328fad26c346e71a6f7194c90adaf2c6ec56030278551bbd27823a433e5818a0ad36bc92cc5c0fda29262c8e0babd567daddb3313875a1281fb7b04cc933362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082857d98d7b102861 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 44, 45, 9, 53, 7, 56, 208, 164, 233, 86, 43, 70, 24, 138, 201, 147, 223, 167, 72, 231, 56, 52, 26, 201, 81, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5713206555265300800, key: EventKey( [ 233, 88, 50, 143, 173, 38, 195, 70, 231, 26, 111, 113, 148, 201, 10, 218, 242, 198, 236, 86, 3, 2, 120, 85, ], ), }, sent_events: EventHandle { count: 6358593642464525595, key: EventKey( [ 160, 173, 54, 188, 146, 204, 92, 15, 218, 41, 38, 44, 142, 11, 171, 213, 103, 218, 221, 179, 49, 56, 117, 161, ], ), }, sequence_number: 3905686633079840552, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80ab7e2ef72996d6d37942ce98fe2a3601de1c9a67dc25a69d8e23844ae43961): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141a0f98535f0b6ae9fe7d82ce6fad5a9d0ca7898db7dbc35f0d006ace01d99a93daca86414c18c22270237b8bcbac2691cacc000e13e614d52efdb119925e684733701e6279c77b501581da16ded7be25940f401f0b56004f52265fc049014692c04bbeccbedb5121060bf2118911f93b4fbd503a4e2a1e5e3a8d06f3a5514caa0686bc2572615425ad5ac614118af58c46b267d6d4a330fc03462f2b7d209a37e954df59fdb925febb9dc4026112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088119f1a0bb6c7c6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 249, 133, 53, 240, 182, 174, 159, 231, 216, 44, 230, 250, 213, 169, 208, 202, 120, 152, 219, 125, 188, 53, 240, 208, 6, 172, 224, 29, 153, 169, 61, 172, 168, 100, 20, 193, 140, 34, 39, 2, 55, 184, 188, 186, 194, 105, 28, 172, 192, 0, 225, 62, 97, 77, 82, 239, 219, 17, 153, 37, 230, 132, 115, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e6279c77b501581da16ded7be25940f4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f0b56004f52265fc049014692c04bbec, }, ), received_events: EventHandle { count: 2431767945953013195, key: EventKey( [ 145, 31, 147, 180, 251, 213, 3, 164, 226, 161, 229, 227, 168, 208, 111, 58, 85, 20, 202, 160, 104, 107, 194, 87, ], ), }, sent_events: EventHandle { count: 4711236717548541222, key: EventKey( [ 175, 88, 196, 107, 38, 125, 109, 74, 51, 15, 192, 52, 98, 242, 183, 210, 9, 163, 126, 149, 77, 245, 159, 219, ], ), }, sequence_number: 1235746464515973010, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80bcaa4a3aaa0024571e27a1075261a39eecdfb16c3bba9b882322a24a0b9f25): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a2d0d28573d27e92773b9eade6448715a9a99272cfb7bbc5f28f7dba303ba6b380fa2066b5964ada5657988701a1b00008c235f5498094b4b18a535031f851f6f08993ef567f9ede729318cee26051f5effab01087ea905767418bd2e6c992ded902cab319fc06c4899df4e7e4a1328567f033cdb47b415d96fe82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081862a526f157eccf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 40, 87, 61, 39, 233, 39, 115, 185, 234, 222, 100, 72, 113, 90, 154, 153, 39, 44, 251, 123, 188, 95, 40, 247, 219, 163, 3, 186, 107, 56, 15, 162, 6, 107, 89, 100, 173, 165, 101, 121, 136, 112, 26, 27, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5425440725953094540, key: EventKey( [ 165, 53, 3, 31, 133, 31, 111, 8, 153, 62, 245, 103, 249, 237, 231, 41, 49, 140, 238, 38, 5, 31, 94, 255, ], ), }, sent_events: EventHandle { count: 8391901181173563819, key: EventKey( [ 189, 46, 108, 153, 45, 237, 144, 44, 171, 49, 159, 192, 108, 72, 153, 223, 78, 126, 74, 19, 40, 86, 127, 3, ], ), }, sequence_number: 16748844226456312636, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80fa401e60694bd7623f206209d7273f57ce72d24baec76480ac3c6660d7e6b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137452034f72bf4ee0e1d867e0b8623f8c456b540a30ccfe2efda55c5fc23750df7fecc6c9cbed152f63ac32d05825862b4a6348c2db127a6018ee5fc512aef5e7f7b21654a52b726d901adbca233563c2a7c95a30a0580e7d310bc9c7ac9a59c2c6518feb69822438193b876d95207754da8078dcf338c73b8941b2d0edd457a24b02218aced76c094b922e4870181dcbfb5d2f08e1f36a24f02566f1b3fe08e9dc68c8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a9ca27c89e5bc768 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 32, 52, 247, 43, 244, 238, 14, 29, 134, 126, 11, 134, 35, 248, 196, 86, 181, 64, 163, 12, 207, 226, 239, 218, 85, 197, 252, 35, 117, 13, 247, 254, 204, 108, 156, 190, 209, 82, 246, 58, 195, 45, 5, 130, 88, 98, 180, 166, 52, 140, 45, 177, 39, 166, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8ee5fc512aef5e7f7b21654a52b726d9, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: adbca233563c2a7c95a30a0580e7d310, }, ), received_events: EventHandle { count: 7290374132669783228, key: EventKey( [ 254, 182, 152, 34, 67, 129, 147, 184, 118, 217, 82, 7, 117, 77, 168, 7, 141, 207, 51, 140, 115, 184, 148, 27, ], ), }, sent_events: EventHandle { count: 2499537900767350317, key: EventKey( [ 172, 237, 118, 192, 148, 185, 34, 228, 135, 1, 129, 220, 191, 181, 210, 240, 142, 31, 54, 162, 79, 2, 86, 111, ], ), }, sequence_number: 10127688042058628891, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8110dbb3a0bb9b8782143e7651601c1ef6ca8545e93cfa62bab7ce1ea6953f52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975281f08a426a2937213da93066867a0ae53cd232fb6f255cea7a60f44552b36572cb3484e1c6f214dc1000060484ee401faf32e187d92760bfa5738583e5ebe6cb2beaa0f246dad239505cb81bd244965c9bbde0e185ef86720790f7bc92902e00566d98885b0208cd730b0f0a8081535ee6752a9a82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087bf61e420894d756 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 8, 164, 38, 162, 147, 114, 19, 218, 147, 6, 104, 103, 160, 174, 83, 205, 35, 47, 182, 242, 85, 206, 167, 166, 15, 68, 85, 43, 54, 87, 44, 179, 72, 78, 28, 111, 33, 77, 193, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3383322631117621344, key: EventKey( [ 125, 146, 118, 11, 250, 87, 56, 88, 62, 94, 190, 108, 178, 190, 170, 15, 36, 109, 173, 35, 149, 5, 203, 129, ], ), }, sent_events: EventHandle { count: 1071500235022869693, key: EventKey( [ 94, 248, 103, 32, 121, 15, 123, 201, 41, 2, 224, 5, 102, 217, 136, 133, 176, 32, 140, 215, 48, 176, 240, 168, ], ), }, sequence_number: 12153335675767559432, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8146dfe55a975d40021d39c625feb48e65d9a085a11a6baccd3ebf305a810e36): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970138c8c1391fdd4c746f13533cb24825c21ccdd7b011149be0b71b08d9e4d18f4e5f0940037002884de2664e1415f185bc0f50d621da3e5d9e75dfa5b2e2a6b50d06d9aba870e1888747e1012a4ac1b1858b7ad04f529c9ff848d09268cbcd8976704892317bd504bf66f2864f3e85e942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b0f41db7020e0b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 140, 19, 145, 253, 212, 199, 70, 241, 53, 51, 203, 36, 130, 92, 33, 204, 221, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1149be0b71b08d9e4d18f4e5f0940037, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6864015127354442792, key: EventKey( [ 91, 192, 245, 13, 98, 29, 163, 229, 217, 231, 93, 250, 91, 46, 42, 107, 80, 208, 109, 154, 186, 135, 14, 24, ], ), }, sent_events: EventHandle { count: 1994149132511376520, key: EventKey( [ 88, 183, 173, 4, 245, 41, 201, 255, 132, 141, 9, 38, 140, 188, 216, 151, 103, 4, 137, 35, 23, 189, 80, 75, ], ), }, sequence_number: 10691238697479204854, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(814e47b1ff12267cede46b0fb457da454f081592337a89bc77924038ad6bdcd0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f8ac63040daeaf40a963f2c3a9e2bc0570e23e9ddd1215b8014cb2111064497f79f90493dfa56c3e0615bce2d3533ce59f34b833a639eb59055640c9bfd0d7a00014c1e209c68ebe6dd3e27f600cda78e1f93e59627feb1f974183d7dadc099d61856c99cc9a3768ad7f96314cfc6234faa1a5f8bd99e73bc140618b4deb9b57830897b16127717ff639e71abe2031393d6b975b71adfda034034ed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088616480a19f13cee Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 198, 48, 64, 218, 234, 244, 10, 150, 63, 44, 58, 158, 43, 192, 87, 14, 35, 233, 221, 209, 33, 91, 128, 20, 203, 33, 17, 6, 68, 151, 247, 159, 144, 73, 61, 250, 86, 195, 224, 97, 91, 206, 45, 53, 51, 206, 89, 243, 75, 131, 58, 99, 158, 181, 144, 85, 100, 12, 155, 253, 13, 122, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4c1e209c68ebe6dd3e27f600cda78e1f, }, ), received_events: EventHandle { count: 8428963882744604051, key: EventKey( [ 61, 125, 173, 192, 153, 214, 24, 86, 201, 156, 201, 163, 118, 138, 215, 249, 99, 20, 207, 198, 35, 79, 170, 26, ], ), }, sent_events: EventHandle { count: 438182268534098783, key: EventKey( [ 180, 222, 185, 181, 120, 48, 137, 123, 22, 18, 119, 23, 255, 99, 158, 113, 171, 226, 3, 19, 147, 214, 185, 117, ], ), }, sequence_number: 17092356871079008951, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(814f3e02efd78b98ac85010c8aeabc0a607400785029bd9a43ccfb19eb64c198): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316060212c6c8318efc7caead17903345ea898984ac52ab000188110ac2fddf34cadb3c5949876e765f7dece711fbf09f1418414c1caaedf476a7ad843a36201f2fcc0c5c5031922f2bdf409aaec3ce2f977318c644d3caa7985aaaca94c5665f45cd87382233f7f418084f41b49c3567697bf32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f3a9154417b20f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 2, 18, 198, 200, 49, 142, 252, 124, 174, 173, 23, 144, 51, 69, 234, 137, 137, 132, 172, 82, 171, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 88110ac2fddf34cadb3c5949876e765f, }, ), received_events: EventHandle { count: 1486171363183422589, key: EventKey( [ 65, 76, 28, 170, 237, 244, 118, 167, 173, 132, 58, 54, 32, 31, 47, 204, 12, 92, 80, 49, 146, 47, 43, 223, ], ), }, sent_events: EventHandle { count: 8329178600937790016, key: EventKey( [ 198, 68, 211, 202, 167, 152, 90, 170, 202, 148, 197, 102, 95, 69, 205, 135, 56, 34, 51, 247, 244, 24, 8, 79, ], ), }, sequence_number: 17544732665353909313, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8182be0043af2b9810ec9e683fefda1d982e856d6fa8a893079285ebfa2f064a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015924da123c90850fca2597c2eb5127f22623bb368ca89dbbeede65b459ba6e7046016cfddf413191344e1982ffbd482754c7ab6f5c95c1adadbeb5bd3a9e70b555e84771a17e0df5dd1eb685b880a67382bbc3b7dee0afc2738501a14b590a73abedc6efb042a533507fd500a0a5791d1416f66a1812a2125f99850f2e486f25f3aff771d00e4752eaf0a7a206d0e12a16708d454b18fa9fe560bd747723af543ad8412d56634eafa32398c1d0ccaeed27320e401ba42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085f137b2a0fda3c19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 218, 18, 60, 144, 133, 15, 202, 37, 151, 194, 235, 81, 39, 242, 38, 35, 187, 54, 140, 168, 157, 187, 238, 222, 101, 180, 89, 186, 110, 112, 70, 1, 108, 253, 223, 65, 49, 145, 52, 78, 25, 130, 255, 189, 72, 39, 84, 199, 171, 111, 92, 149, 193, 173, 173, 190, 181, 189, 58, 158, 112, 181, 85, 232, 71, 113, 161, 126, 13, 245, 221, 30, 182, 133, 184, 128, 166, 115, 130, 187, 195, 183, 222, 224, 175, 194, 115, 133, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a14b590a73abedc6efb042a533507fd5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7707372087940851104, key: EventKey( [ 18, 162, 18, 95, 153, 133, 15, 46, 72, 111, 37, 243, 175, 247, 113, 208, 14, 71, 82, 234, 240, 167, 162, 6, ], ), }, sent_events: EventHandle { count: 5423896838785393104, key: EventKey( [ 250, 159, 229, 96, 189, 116, 119, 35, 175, 84, 58, 216, 65, 45, 86, 99, 78, 175, 163, 35, 152, 193, 208, 204, ], ), }, sequence_number: 11825115676306566574, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(818d9d2620223c2ee95516a512d591c28818749732e0faa9d1e9e6620cfd8971): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014abb69f1044ab1aad16120903138e6a23ff2a206318e28d37c947c820724ea551959061d240b459aef7870c694b80f21689050da4883a97218a5b995f488aeb32ee5b7c38043e9c33958f10000f0b032a529ea1d371822789ea9323f4eb68e55e7f45208aa317ab2bf0dc355569d428de17629fa570318a87cb827852179530a6b26381cc8157702843fae0a70db605f7bf7e0cdcde7922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708192543dd8c016cc1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 187, 105, 241, 4, 74, 177, 170, 209, 97, 32, 144, 49, 56, 230, 162, 63, 242, 162, 6, 49, 142, 40, 211, 124, 148, 124, 130, 7, 36, 234, 85, 25, 89, 6, 29, 36, 11, 69, 154, 239, 120, 112, 198, 148, 184, 15, 33, 104, 144, 80, 218, 72, 131, 169, 114, 24, 165, 185, 149, 244, 136, 174, 179, 46, 229, 183, 195, 128, 67, 233, 195, 57, 88, 241, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3971587910996766960, key: EventKey( [ 34, 120, 158, 169, 50, 63, 78, 182, 142, 85, 231, 244, 82, 8, 170, 49, 122, 178, 191, 13, 195, 85, 86, 157, ], ), }, sent_events: EventHandle { count: 240936161082707266, key: EventKey( [ 168, 124, 184, 39, 133, 33, 121, 83, 10, 107, 38, 56, 28, 200, 21, 119, 2, 132, 63, 174, 10, 112, 219, 96, ], ), }, sequence_number: 10585655733283945311, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(81ab7fcdee4be3955c165dedc596ec3c6ed50a669febab9e7d76c1ac1697f651): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32f994ca307cfcbe4aaf0969a42dc47895c87c51e9c39b85955350a0d6f8f4cda91c6fe3723ced7078073712f1340611f38fa200009fc68bc2c20cd51a18429cf389a28ae48e6fcb9b4554a0c6d6147bcd7978c02ed8273951799e13d6161824b18f56fc845d9fdcd074e6fb794ac355e85d865e519ba6ae496964884ac26f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858bac3755d0a17c6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 249, 148, 202, 48, 124, 252, 190, 74, 175, 9, 105, 164, 45, 196, 120, 149, 200, 124, 81, 233, 195, 155, 133, 149, 83, 80, 160, 214, 248, 244, 205, 169, 28, 111, 227, 114, 60, 237, 112, 120, 7, 55, 18, 241, 52, 6, 17, 243, 143, 162, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1933465645652625055, key: EventKey( [ 66, 156, 243, 137, 162, 138, 228, 142, 111, 203, 155, 69, 84, 160, 198, 214, 20, 123, 205, 121, 120, 192, 46, 216, ], ), }, sent_events: EventHandle { count: 1645524285211621671, key: EventKey( [ 36, 177, 143, 86, 252, 132, 93, 159, 220, 208, 116, 230, 251, 121, 74, 195, 85, 232, 93, 134, 94, 81, 155, 166, ], ), }, sequence_number: 8053081033352497582, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(827fde79759e52479acc679ccc11be766be913ee11a25934f3eba6970278eedf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501288f6a06549a93365e0c6fe87dae224462ddb307c2ee7e9734c1a36056ca341dad72e9cfdde61c1fdb01cd421bee928e505e033edadcfbb37b5400c2c6ac9446934c57183de16f50c6e82e48d954e7ca80c714333f40786096142eca6d3c275627a6215518267cd68274313f2c05eeed704bb34da511bfcd8b7bff98d24ae07dead72f54282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089e03aed33588b746 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 106, 6, 84, 154, 147, 54, 94, 12, 111, 232, 125, 174, 34, 68, 98, 221, 179, 7, 194, 238, 126, 151, 52, 193, 163, 96, 86, 202, 52, 29, 173, 114, 233, 207, 221, 230, 28, 31, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cd421bee928e505e033edadcfbb37b54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6290564710881085122, key: EventKey( [ 61, 225, 111, 80, 198, 232, 46, 72, 217, 84, 231, 202, 128, 199, 20, 51, 63, 64, 120, 96, 150, 20, 46, 202, ], ), }, sent_events: EventHandle { count: 6134366855334673517, key: EventKey( [ 38, 124, 214, 130, 116, 49, 63, 44, 5, 238, 237, 112, 75, 179, 77, 165, 17, 191, 205, 139, 123, 255, 152, 210, ], ), }, sequence_number: 2906000263959404618, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(82a14daf6d2f2df9a4e1cd318bbcfbd62c8da8b83a32759f3ce97a826531e4d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014e4f8928e0d60945873b5d352dc7842d8b5dc234e2b87f6188fd51def65825aefcd925d7a7c2692a9ca0f0a715f69ec028013efea299334ce28f99e39261f39cb7a9300c3412e03518e649c8e81abd01f3f0aab0d76754f119f6fa4af637259101e042de9526310b1f8eb7f4a79cc13571cfbc60fd45b1865218c5ffcc501c037114a4ec54df0b4f2d9ae5b3d41e9824295a420e2966712af6001821560a8451e635fb6651112ab29797dafc805b07bf4af5d0d239d32e0ea715792101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fa61ed4eeb5f9a8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 137, 40, 224, 214, 9, 69, 135, 59, 93, 53, 45, 199, 132, 45, 139, 93, 194, 52, 226, 184, 127, 97, 136, 253, 81, 222, 246, 88, 37, 174, 252, 217, 37, 215, 167, 194, 105, 42, 156, 160, 240, 167, 21, 246, 158, 192, 40, 1, 62, 254, 162, 153, 51, 76, 226, 143, 153, 227, 146, 97, 243, 156, 183, 169, 48, 12, 52, 18, 224, 53, 24, 230, 73, 200, 232, 26, 189, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3f0aab0d76754f119f6fa4af6372591, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e042de9526310b1f8eb7f4a79cc13571, }, ), received_events: EventHandle { count: 5946635272151153871, key: EventKey( [ 197, 255, 204, 80, 28, 3, 113, 20, 164, 236, 84, 223, 11, 79, 45, 154, 229, 179, 212, 30, 152, 36, 41, 90, ], ), }, sent_events: EventHandle { count: 69289510804459074, key: EventKey( [ 33, 86, 10, 132, 81, 230, 53, 251, 102, 81, 17, 42, 178, 151, 151, 218, 252, 128, 91, 7, 191, 74, 245, 208, ], ), }, sequence_number: 8725063532457179602, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(838b34320cc9c084676cea8406d9968929501b0895c0cb9d959e6a9cafaf97b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501286ca81986575872892eae044e18304ef7b43304e2b428235c9c86928e197613b7bf9da98e74dc212a0106e254c0e4b825a44b25f1315dce4be200685b532a7f383b0a184fb2f03872f4a3338906f16b283d6324c892a4020b75539f5b6fa290077ab47f184455b86bce8832f6fdb9d262c92c054e604f4cfe9e39ca0c1b21bee7393e2dd52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ea3d2b0a647934f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 168, 25, 134, 87, 88, 114, 137, 46, 174, 4, 78, 24, 48, 78, 247, 180, 51, 4, 226, 180, 40, 35, 92, 156, 134, 146, 142, 25, 118, 19, 183, 191, 157, 169, 142, 116, 220, 33, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 06e254c0e4b825a44b25f1315dce4be2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 737245082827316072, key: EventKey( [ 79, 178, 240, 56, 114, 244, 163, 51, 137, 6, 241, 107, 40, 61, 99, 36, 200, 146, 164, 2, 11, 117, 83, 159, ], ), }, sent_events: EventHandle { count: 9202114111534690139, key: EventKey( [ 68, 85, 184, 107, 206, 136, 50, 246, 253, 185, 210, 98, 201, 44, 5, 78, 96, 79, 76, 254, 158, 57, 202, 12, ], ), }, sequence_number: 15361002322452685083, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(83939a72b3e2a4b610cd51c90e3523cdda67cb225e33948303540086c7d14c05): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014c8c340a30660c1942ee96bff1ca6648373161cdb60de7b89ad2ef588045bf93c34b75787595d5c32eb595501e61e3056f61009225b319b6d17f2f2c63962e5d6f14efd448ec50b723053c79670001327dd92a12a6807278487ecc7be5497c974ae91f9f100a661882eac789ec78426001441f344ebfac96a1e9f22ad17ead4d3aeff37ce119df1218ae4c3b92652e8e87bcd7a1255cad7ff1b9e277bbd9fc8c8a79a9371ff9f2c9fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089786c0e05b1f0a65 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 52, 10, 48, 102, 12, 25, 66, 238, 150, 191, 241, 202, 102, 72, 55, 49, 97, 205, 182, 13, 231, 184, 154, 210, 239, 88, 128, 69, 191, 147, 195, 75, 117, 120, 117, 149, 213, 195, 46, 181, 149, 80, 30, 97, 227, 5, 111, 97, 0, 146, 37, 179, 25, 182, 209, 127, 47, 44, 99, 150, 46, 93, 111, 20, 239, 212, 72, 236, 80, 183, 35, 5, 60, 121, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 327dd92a12a6807278487ecc7be5497c, }, ), received_events: EventHandle { count: 7352707617256983191, key: EventKey( [ 130, 234, 199, 137, 236, 120, 66, 96, 1, 68, 31, 52, 78, 191, 172, 150, 161, 233, 242, 42, 209, 126, 173, 77, ], ), }, sent_events: EventHandle { count: 1359834068743876410, key: EventKey( [ 174, 76, 59, 146, 101, 46, 142, 135, 188, 215, 161, 37, 92, 173, 127, 241, 185, 226, 119, 187, 217, 252, 140, 138, ], ), }, sequence_number: 18287414913699129721, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84130aadc8ee3a65765f6cf17b990d0b2812c44696eeda709ee37df0e157ab7c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0140838e1f3fba5b81ff54c7349f3424d7dacc21fd241c66e6c5165fbb62529b2dd2fbf4ac9c68025166ece3e80fe41ecfbe36c1d43dc0b75235da1e4783e4c49afb0000a2175fc06ab5476618bb579df2451608f9562f9c4cdd7f8a9a5604220ee60e1ff4123265b390a62d0818d3ad3089164d320bb52bf45c9900d1572e33b09dcfee065082056aaa956c847a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e1ef19a6c98f3525 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 142, 31, 63, 186, 91, 129, 255, 84, 199, 52, 159, 52, 36, 215, 218, 204, 33, 253, 36, 28, 102, 230, 197, 22, 95, 187, 98, 82, 155, 45, 210, 251, 244, 172, 156, 104, 2, 81, 102, 236, 227, 232, 15, 228, 30, 207, 190, 54, 193, 212, 61, 192, 183, 82, 53, 218, 30, 71, 131, 228, 196, 154, 251, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7370058785313724322, key: EventKey( [ 187, 87, 157, 242, 69, 22, 8, 249, 86, 47, 156, 76, 221, 127, 138, 154, 86, 4, 34, 14, 230, 14, 31, 244, ], ), }, sent_events: EventHandle { count: 589310266670658066, key: EventKey( [ 211, 173, 48, 137, 22, 77, 50, 11, 181, 43, 244, 92, 153, 0, 209, 87, 46, 51, 176, 157, 207, 238, 6, 80, ], ), }, sequence_number: 8828300559618016642, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84ae4c5ef1cb7641d62f07d117520caf0cc6a76518a9dc9ecb68d05c65b934be): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20145389b2f88757683a59660f6f6b45231b93d6dae3a3a148f5a65cff3ce269e9903b0cebffcf8bb93ae7dda44b76eba9c2fad09f8a17f16b7d228158c717b375326cc4551d905000128c49f7495c2849207fa3e50b94d0ad7bf36f51f14b6490518ecf57367d3af8ab1a422d54809e307eb97acfd49a47721cdc2c33e1e647794651824d4d7503bcd1f0bbad9db2488703887107d9a858da10280885ddd88d3a496262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc547c4591fa7341 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 155, 47, 136, 117, 118, 131, 165, 150, 96, 246, 246, 180, 82, 49, 185, 61, 109, 174, 58, 58, 20, 143, 90, 101, 207, 243, 206, 38, 158, 153, 3, 176, 206, 191, 252, 248, 187, 147, 174, 125, 218, 68, 183, 110, 186, 156, 47, 173, 9, 248, 161, 127, 22, 183, 210, 40, 21, 140, 113, 123, 55, 83, 38, 204, 69, 81, 217, 5, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 28c49f7495c2849207fa3e50b94d0ad7, }, ), received_events: EventHandle { count: 381035841041282751, key: EventKey( [ 236, 245, 115, 103, 211, 175, 138, 177, 164, 34, 213, 72, 9, 227, 7, 235, 151, 172, 253, 73, 164, 119, 33, 205, ], ), }, sent_events: EventHandle { count: 7319606566271763394, key: EventKey( [ 36, 212, 215, 80, 59, 205, 31, 11, 186, 217, 219, 36, 136, 112, 56, 135, 16, 125, 154, 133, 141, 161, 2, 128, ], ), }, sequence_number: 2780591048389123464, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84edfea2de4d09c0f60c0b0cb18ce595069da935224d8932a2160e73cbda60b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c101543e0d0d2380ebadcbbcc8ee7a301bbf4b571e467601b55207b3a9eb1b6e41b39808882b5c4d83ef1389c95c80b865759728bbdf192574e14d29afe5f22dbbc1fe0bef583895a20ad95b71beeb76b452691b4ac0e1015cf93939ff200cfcb947271417b416040135696c0a407a6d0abcaab1cb3b3e0237068c23b289a8260418cb158ebf1119a6f00c98768bf6dd3eac73493732711bbdf6c6d54b7f36ad1e011857f27427f2bc62938ea3ccac05b832bf8dfe576ef974148629813184f8f5e3bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a31084d4da52e36b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 62, 13, 13, 35, 128, 235, 173, 203, 188, 200, 238, 122, 48, 27, 191, 75, 87, 30, 70, 118, 1, 181, 82, 7, 179, 169, 235, 27, 110, 65, 179, 152, 8, 136, 43, 92, 77, 131, 239, 19, 137, 201, 92, 128, 184, 101, 117, 151, 40, 187, 223, 25, 37, 116, 225, 77, 41, 175, 229, 242, 45, 187, 193, 254, 11, 239, 88, 56, 149, 162, 10, 217, 91, 113, 190, 235, 118, 180, 82, 105, 27, 74, 192, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5cf93939ff200cfcb947271417b41604, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 35696c0a407a6d0abcaab1cb3b3e0237, }, ), received_events: EventHandle { count: 299111734619376646, key: EventKey( [ 203, 21, 142, 191, 17, 25, 166, 240, 12, 152, 118, 139, 246, 221, 62, 172, 115, 73, 55, 50, 113, 27, 189, 246, ], ), }, sent_events: EventHandle { count: 80692292914763206, key: EventKey( [ 87, 242, 116, 39, 242, 188, 98, 147, 142, 163, 204, 172, 5, 184, 50, 191, 141, 254, 87, 110, 249, 116, 20, 134, ], ), }, sequence_number: 13683050540600230185, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(86067a877e8b1cc7ac452b5774cb8465f79482882514cd101a6fc61b47b92d34): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9722523eecbdd1c805d6b7ce08883f2d6c3a159c7b55bcfbfecfdf3d35a93ae1347944e9a103da60000b714f12956d1795e188cd393d759a23baffdd80027a6babd3a604c2735fe06c01ed349312333527b4118199eeb685186e32726faefb43c33acc89e75cfaf1abe3e5dad015a3ada7a37bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70888394bb454423348 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 238, 203, 221, 28, 128, 93, 107, 124, 224, 136, 131, 242, 214, 195, 161, 89, 199, 181, 91, 207, 191, 236, 253, 243, 211, 90, 147, 174, 19, 71, 148, 78, 154, 16, 61, 166, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6807702479748273335, key: EventKey( [ 140, 211, 147, 215, 89, 162, 59, 175, 253, 216, 0, 39, 166, 186, 189, 58, 96, 76, 39, 53, 254, 6, 192, 30, ], ), }, sent_events: EventHandle { count: 4718455414187968979, key: EventKey( [ 25, 158, 235, 104, 81, 134, 227, 39, 38, 250, 239, 180, 60, 51, 172, 200, 158, 117, 207, 175, 26, 190, 62, 93, ], ), }, sequence_number: 13634501474587902381, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(86f96ac0b4b9fd6c893a4adf1f36608017ac86316125faf996c05121a7831f33): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e018f0000a716fa2ae3151a471897642fe6f930626698db3fb78036bb4134958389eafc47b148dfcff98234925a18a8e1a8051e147c9b108e43f146ca188103b68cbfc560c54ed8f3484dc1e07bbf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1568176a96dd188 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5123431591510152871, key: EventKey( [ 151, 100, 47, 230, 249, 48, 98, 102, 152, 219, 63, 183, 128, 54, 187, 65, 52, 149, 131, 137, 234, 252, 71, 177, ], ), }, sent_events: EventHandle { count: 6526336547154812744, key: EventKey( [ 168, 225, 168, 5, 30, 20, 124, 155, 16, 142, 67, 241, 70, 202, 24, 129, 3, 182, 140, 191, 197, 96, 197, 78, ], ), }, sequence_number: 13797869004209583064, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8700c05823cc2382540eced8838e8b20914412247cd49b17450419aa8d701c72): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163cdb5449db64153b54d4de868e17964e24bf903ae467f9e34431a907a59217d1d1765773ea6f857e7e37efe6c01cc7770ac81f0c546a62decdf90609271fb4c8b33fd2fc49a5cfffbca29e5adb3268685db327333f3d83db4922c93c583d55f5ec7ed5e01a91ca996a8d9dad9fbc98ef694e9dd2c0071e84da1aba5251e18d86ea4b2d9ff2c40a541d3f4e2e0287316cce8743766fbe7a245793290a9d660189b6d7230f1f3669cf1979efb1393cd9f4d7deaa8ac5deb2e6a03c3deb15b7d572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca5f5da946249c35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 181, 68, 157, 182, 65, 83, 181, 77, 77, 232, 104, 225, 121, 100, 226, 75, 249, 3, 174, 70, 127, 158, 52, 67, 26, 144, 122, 89, 33, 125, 29, 23, 101, 119, 62, 166, 248, 87, 231, 227, 126, 254, 108, 1, 204, 119, 112, 172, 129, 240, 197, 70, 166, 45, 236, 223, 144, 96, 146, 113, 251, 76, 139, 51, 253, 47, 196, 154, 92, 255, 251, 202, 41, 229, 173, 179, 38, 134, 133, 219, 50, 115, 51, 243, 216, 61, 180, 146, 44, 147, 197, 131, 213, 95, 94, 199, 237, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a91ca996a8d9dad9fbc98ef694e9dd2c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2172324551840360561, key: EventKey( [ 216, 110, 164, 178, 217, 255, 44, 64, 165, 65, 211, 244, 226, 224, 40, 115, 22, 204, 232, 116, 55, 102, 251, 231, ], ), }, sent_events: EventHandle { count: 6977951109444355490, key: EventKey( [ 155, 109, 114, 48, 241, 243, 102, 156, 241, 151, 158, 251, 19, 147, 205, 159, 77, 125, 234, 168, 172, 93, 235, 46, ], ), }, sequence_number: 6304295872893223786, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8738bf1bdb961816e6d387b6bc6fb44a6d3695a47a12bcafc82cd14b6a9959f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820115ab645f19c42d2a954c1fc046c89c1d4b67206d4e64016262eb9aedfb6b3af3cbcb7919a423410170485f7fb08298cd808dca8a11fc16263eef426820d42335180bdbd6b98a3382eecdaaf733055047a1410dd6d74c35002c5e8ba2d3ac5e422018391589faad5e7e4abe05e4fd7bd2095df6c326f13b9455ac0a3c3364bd29127d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70802a7bf2963853f48 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 100, 95, 25, 196, 45, 42, 149, 76, 31, 192, 70, 200, 156, 29, 75, 103, 32, 109, 78, 100, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6262eb9aedfb6b3af3cbcb7919a42341, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 70485f7fb08298cd808dca8a11fc1626, }, ), received_events: EventHandle { count: 3829137343848312638, key: EventKey( [ 11, 219, 214, 185, 138, 51, 130, 238, 205, 170, 247, 51, 5, 80, 71, 161, 65, 13, 214, 215, 76, 53, 0, 44, ], ), }, sent_events: EventHandle { count: 2324524454054628190, key: EventKey( [ 57, 21, 137, 250, 173, 94, 126, 74, 190, 5, 228, 253, 123, 210, 9, 93, 246, 195, 38, 241, 59, 148, 85, 172, ], ), }, sequence_number: 9012311697728420874, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8825ff3aa7d7f3d29fb1ccf62b27fb25b5bb17cf7963789c79ea6d387abd3dfc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0f06d90373a11d2751883212ea20b7d5000028450e0b1bba583d18db386d365fd3060a44db65a58a6fd252ccfd63496003f022c70cfe53aa2dc50218931619f05cffa4b90f817f1aa1185ca8c9b6793c13620c3dd75ef32f0d98baad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708591509d36d40ce42 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 217, 3, 115, 161, 29, 39, 81, 136, 50, 18, 234, 32, 183, 213, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4420487659576509736, key: EventKey( [ 219, 56, 109, 54, 95, 211, 6, 10, 68, 219, 101, 165, 138, 111, 210, 82, 204, 253, 99, 73, 96, 3, 240, 34, ], ), }, sent_events: EventHandle { count: 199615968064703687, key: EventKey( [ 147, 22, 25, 240, 92, 255, 164, 185, 15, 129, 127, 26, 161, 24, 92, 168, 201, 182, 121, 60, 19, 98, 12, 61, ], ), }, sequence_number: 12518485296636190423, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8864b7299fc56eb8d863ee961feeabdfe94b048b617d9a3b8164c895d9ccbf66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99501383f16808f2ce6177e5846c1061660183371ccdb1ba989c1a5f1069e3bfaf5b24de230f23eed8df594d2ae985ba3bff294ac687a13d129fd0600017581c4ea201379b22139f6d600938ecc78806427be17c749184592765591c514f3d0a6264f2cca4638a5944a1f335a5f3cd5e909ba7d690d271890072f184c4bb176afd9ca42d0d89497dddad96926e39ee7987517763afd6a782101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f19e25d7373115c3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 22, 128, 143, 44, 230, 23, 126, 88, 70, 193, 6, 22, 96, 24, 51, 113, 204, 219, 27, 169, 137, 193, 165, 241, 6, 158, 59, 250, 245, 178, 77, 226, 48, 242, 62, 237, 141, 245, 148, 210, 174, 152, 91, 163, 191, 242, 148, 172, 104, 122, 19, 209, 41, 253, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7581c4ea201379b22139f6d600938ecc, }, ), received_events: EventHandle { count: 5316243990606282872, key: EventKey( [ 69, 146, 118, 85, 145, 197, 20, 243, 208, 166, 38, 79, 44, 202, 70, 56, 165, 148, 74, 31, 51, 90, 95, 60, ], ), }, sent_events: EventHandle { count: 2814021330889468373, key: EventKey( [ 144, 7, 47, 24, 76, 75, 177, 118, 175, 217, 202, 66, 208, 216, 148, 151, 221, 218, 217, 105, 38, 227, 158, 231, ], ), }, sequence_number: 8677026059613861272, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(88a541964d909141ad2179f7fe03040ded20ad0230d7e104aa7f17709451e267): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152cfa52f94daa3edb714e55c1ce3fe97c37e8b1ddbd85d35a01908992a2465a789b32e1a14591f650da2fe906a5292927586ed99c74d17e66ed41325b1b730c98c2ea770f4c123ebf1d4b6e79a1ed86ea803c400014677d8af8de5962494eefda835ed9c4d47570664c097522d18fc0d4a26e9d059bf47705e4cbec607b422f93a943451a02d404f250a221cc83918001f7b38fb6716a501f08aed3f6b6df762a7ae4a925df98b4a68531f15f03a7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846083229a95ffa3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 165, 47, 148, 218, 163, 237, 183, 20, 229, 92, 28, 227, 254, 151, 195, 126, 139, 29, 219, 216, 93, 53, 160, 25, 8, 153, 42, 36, 101, 167, 137, 179, 46, 26, 20, 89, 31, 101, 13, 162, 254, 144, 106, 82, 146, 146, 117, 134, 237, 153, 199, 77, 23, 230, 110, 212, 19, 37, 177, 183, 48, 201, 140, 46, 167, 112, 244, 193, 35, 235, 241, 212, 182, 231, 154, 30, 216, 110, 168, 3, 196, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4677d8af8de5962494eefda835ed9c4d, }, ), received_events: EventHandle { count: 3265839532364683079, key: EventKey( [ 252, 13, 74, 38, 233, 208, 89, 191, 71, 112, 94, 76, 190, 198, 7, 180, 34, 249, 58, 148, 52, 81, 160, 45, ], ), }, sent_events: EventHandle { count: 4163608788028706624, key: EventKey( [ 0, 31, 123, 56, 251, 103, 22, 165, 1, 240, 138, 237, 63, 107, 109, 247, 98, 167, 174, 74, 146, 93, 249, 139, ], ), }, sequence_number: 8879673588824893514, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89281cf0c22b072201b7c8b129ff00bf22347b2d6092c729c4ae3b773bee863c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131934a0445e47d13a420586d604b3cb2c7a35997511295cb162ffae25d416962f7dee494219a212658d29a67df5d34d2940e01e7a72a38ee666cf2f6f2c929a15e6cc3003ef8baf2837eaf2218a6aed239149a65f9e707cea468f71e9afe109ff436124d7aabfc615a979caa1b18677a07253542813fbaa4bb87f7ed98b64be439b84af4d68e759ec334a30e54ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708927bb2d88d245999 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 74, 4, 69, 228, 125, 19, 164, 32, 88, 109, 96, 75, 60, 178, 199, 163, 89, 151, 81, 18, 149, 203, 22, 47, 250, 226, 93, 65, 105, 98, 247, 222, 228, 148, 33, 154, 33, 38, 88, 210, 154, 103, 223, 93, 52, 210, 148, 14, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7a72a38ee666cf2f6f2c929a15e6cc3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2499355423392069694, key: EventKey( [ 166, 174, 210, 57, 20, 154, 101, 249, 231, 7, 206, 164, 104, 247, 30, 154, 254, 16, 159, 244, 54, 18, 77, 122, ], ), }, sent_events: EventHandle { count: 1993577958935231659, key: EventKey( [ 103, 122, 7, 37, 53, 66, 129, 63, 186, 164, 187, 135, 247, 237, 152, 182, 75, 228, 57, 184, 74, 244, 214, 142, ], ), }, sequence_number: 17173367373198237301, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(892ff05eafd6ef4786c8efb5dc6c7b7be6e9b57d4e1e9f82f0309844cead24ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96205233dd8d80f01f3e71d0ec895790b7739be637b9896f60052c9042617b88e491891b9cc632df1d103805671efd63fe76cca2698a3204b6303a1889daac79a606d18878565dcafc289dabc4cdae2242c682cc740af3deba8cfa91d37c676959d19e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e969426018cc7091 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 61, 216, 216, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3e71d0ec895790b7739be637b9896f6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5300376221023258962, key: EventKey( [ 145, 185, 204, 99, 45, 241, 209, 3, 128, 86, 113, 239, 214, 63, 231, 108, 202, 38, 152, 163, 32, 75, 99, 3, ], ), }, sent_events: EventHandle { count: 7881469530249988257, key: EventKey( [ 135, 133, 101, 220, 175, 194, 137, 218, 188, 76, 218, 226, 36, 44, 104, 44, 199, 64, 175, 61, 235, 168, 207, 169, ], ), }, sequence_number: 16508399174371653405, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89624496de0495000cb0ae9da2d5dc6abd0639a18ee171e04636bedd714eddab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d00016def410f49f1c5dc35a71ce169f67556000ddf1ff8ad60ba741894a2aa3aa8eeb51b719ec756c434528b18481119153efd8a144087d4911cd34d185c39c783010aaafc0155f1a72585b03a4340b1a7b89729d5049f404276b773c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cb31026b686fe850 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6def410f49f1c5dc35a71ce169f67556, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8411141554376269581, key: EventKey( [ 148, 162, 170, 58, 168, 238, 181, 27, 113, 158, 199, 86, 196, 52, 82, 139, 24, 72, 17, 25, 21, 62, 253, 138, ], ), }, sent_events: EventHandle { count: 5607857373667868692, key: EventKey( [ 92, 57, 199, 131, 1, 10, 170, 252, 1, 85, 241, 167, 37, 133, 176, 58, 67, 64, 177, 167, 184, 151, 41, 213, ], ), }, sequence_number: 14083802178263228164, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89652bc09dc9dd6b4dfacb621bf59778f2aea9daad64f3d54147705a216ad24f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c20155bf8bf09c3c09d7d6d91a421156cac68d86baa4c9e17a364c8d07ddb5558f01ab151e639a033531d882015777f6c8ec65078be852bde8ad03564b855abd2870135dcbdc1b15ed798c2ebfc49d87d3c3249033b2205701c800e5852bf13378217556f207aba8d301047683ce1bddbc35b3c6fd7e13d2f2e15473a398b5d967271816e6afba4bb0f9a7487e1bcc4a7b420f8cb344758b4787578735000f1ff8ac261813ad7d880a9d4013e38b162bcd3736d7a41f39fe88bc3135f33a68fe466cf2e82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708973d11b2807ffb31 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 139, 240, 156, 60, 9, 215, 214, 217, 26, 66, 17, 86, 202, 198, 141, 134, 186, 164, 201, 225, 122, 54, 76, 141, 7, 221, 181, 85, 143, 1, 171, 21, 30, 99, 154, 3, 53, 49, 216, 130, 1, 87, 119, 246, 200, 236, 101, 7, 139, 232, 82, 189, 232, 173, 3, 86, 75, 133, 90, 189, 40, 112, 19, 93, 203, 220, 27, 21, 237, 121, 140, 46, 191, 196, 157, 135, 211, 195, 36, 144, 51, 178, 32, 87, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c800e5852bf13378217556f207aba8d3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 047683ce1bddbc35b3c6fd7e13d2f2e1, }, ), received_events: EventHandle { count: 2839477464053543764, key: EventKey( [ 22, 230, 175, 186, 75, 176, 249, 167, 72, 126, 27, 204, 74, 123, 66, 15, 140, 179, 68, 117, 139, 71, 135, 87, ], ), }, sent_events: EventHandle { count: 2786875081714840967, key: EventKey( [ 19, 173, 125, 136, 10, 157, 64, 19, 227, 139, 22, 43, 205, 55, 54, 215, 164, 31, 57, 254, 136, 188, 49, 53, ], ), }, sequence_number: 16785597813335014131, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(898efd33b752976402cd90cfbd1d5bfd8719b3e3f0bc7d084916a1410863f044): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c993013667daf47ba591d4f076457d9c218966a9dadb1994fa129040406dc1acb1c73a672f0571520b17c773aa3d88924fbf746e3db89f092bee0112de7ccbae0a0f00f21006a5a5f3aa0400fcfc48e2709353391800c0bafa42721ddb93917eb24618e8e91e1e85f80572af37065aa4f755a30a4218aa8bc9da328b0a1161a72eb04818504ee8e5472f235b782c74de7b396a2310702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70860f0f573547d3afd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 103, 218, 244, 123, 165, 145, 212, 240, 118, 69, 125, 156, 33, 137, 102, 169, 218, 219, 25, 148, 250, 18, 144, 64, 64, 109, 193, 172, 177, 199, 58, 103, 47, 5, 113, 82, 11, 23, 199, 115, 170, 61, 136, 146, 79, 191, 116, 110, 61, 184, 159, 9, 43, 238, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 12de7ccbae0a0f00f21006a5a5f3aa04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4130807396270931196, key: EventKey( [ 0, 192, 186, 250, 66, 114, 29, 219, 147, 145, 126, 178, 70, 24, 232, 233, 30, 30, 133, 248, 5, 114, 175, 55, ], ), }, sent_events: EventHandle { count: 4758795545892641286, key: EventKey( [ 170, 139, 201, 218, 50, 139, 10, 17, 97, 167, 46, 176, 72, 24, 80, 78, 232, 229, 71, 47, 35, 91, 120, 44, ], ), }, sequence_number: 8074993071013224052, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89ac53c5c12ce65c0fdcc9aab4e0f9bd8dd6e969c22e01e4103e09325d0cdc6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9550830ad493090ae7e3000002c94da4bf3332376189e7ce93d10a97532a8ac92663d6dbf0f21c9d2faf2e2d0bca68b24437157f64d18faf693522f2b81e6a05b877e32128f1e1cba600875b7d8023eee8588ec63dae92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080d59c1c61dbebd4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 173, 73, 48, 144, 174, 126, 48, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8512704840703054892, key: EventKey( [ 158, 124, 233, 61, 16, 169, 117, 50, 168, 172, 146, 102, 61, 109, 191, 15, 33, 201, 210, 250, 242, 226, 208, 188, ], ), }, sent_events: EventHandle { count: 5617773729160661926, key: EventKey( [ 250, 246, 147, 82, 47, 43, 129, 230, 160, 91, 135, 126, 50, 18, 143, 30, 28, 186, 96, 8, 117, 183, 216, 2, ], ), }, sequence_number: 16850890823314042430, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a25653a70cedc91bd2c5e842b7fe42df87cd21ecd5e1311a3fbb5fbc9a91bd6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940137c44ae98251af0bd8c5d89a9ee8d1d71afc55c3fd59221fc9ae5d22ce0e4c0815c098830f97c4ba540babcc1276cbff8bc659ca27b1b8b60001ad719564dac074bf375cb0344caaee13146dc1cb53622c451817739d8bf4003fe233baee5476ceef69f2e7739931be92b1cebf959bc04cad1818129ba221328358ec65010d2aa0c7cebb2deda47d3bafc479eaba07b5389bdc2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3971b1f33293ed0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 74, 233, 130, 81, 175, 11, 216, 197, 216, 154, 158, 232, 209, 215, 26, 252, 85, 195, 253, 89, 34, 31, 201, 174, 93, 34, 206, 14, 76, 8, 21, 192, 152, 131, 15, 151, 196, 186, 84, 11, 171, 204, 18, 118, 203, 255, 139, 198, 89, 202, 39, 177, 184, 182, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ad719564dac074bf375cb0344caaee13, }, ), received_events: EventHandle { count: 4984466999632555284, key: EventKey( [ 23, 115, 157, 139, 244, 0, 63, 226, 51, 186, 238, 84, 118, 206, 239, 105, 242, 231, 115, 153, 49, 190, 146, 177, ], ), }, sent_events: EventHandle { count: 1778161818008928206, key: EventKey( [ 18, 155, 162, 33, 50, 131, 88, 236, 101, 1, 13, 42, 160, 199, 206, 187, 45, 237, 164, 125, 59, 175, 196, 121, ], ), }, sequence_number: 3304686894440757994, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a5f8322c9aa9403b1c9c99c9862bbbf51cab0a848ea5f054d99f9b2e7e42a5a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014de144a5dba29a6378ec6be66156d5208122e9be8ec4e79020c6d77ef2ece5e6f50e76ae0d49abf089ce8c3a4d604cc1bbe144ee77cf0f8f689d263cfb10cff2365c751c8cf8d7bc0358596e0a900001979e482aff8fa52f5342c686d8be9fd939f65ef8e1aeb63d180df61b70ee839eca6c226cf0d7e764e85da92e50c1c3639d06a87da04dd95e0518c18aeea935257ba869fb86dbf69ec930da1688c6d5aad2c195444fa9c4ab8a832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d4f7e591ca04523 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 68, 165, 219, 162, 154, 99, 120, 236, 107, 230, 97, 86, 213, 32, 129, 34, 233, 190, 142, 196, 231, 144, 32, 198, 215, 126, 242, 236, 229, 230, 245, 14, 118, 174, 13, 73, 171, 240, 137, 206, 140, 58, 77, 96, 76, 193, 187, 225, 68, 238, 119, 207, 15, 143, 104, 157, 38, 60, 251, 16, 207, 242, 54, 92, 117, 28, 140, 248, 215, 188, 3, 88, 89, 110, 10, 144, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 979e482aff8fa52f5342c686d8be9fd9, }, ), received_events: EventHandle { count: 4446933967632791097, key: EventKey( [ 13, 246, 27, 112, 238, 131, 158, 202, 108, 34, 108, 240, 215, 231, 100, 232, 93, 169, 46, 80, 193, 195, 99, 157, ], ), }, sent_events: EventHandle { count: 386985545428740102, key: EventKey( [ 193, 138, 238, 169, 53, 37, 123, 168, 105, 251, 134, 219, 246, 158, 201, 48, 218, 22, 136, 198, 213, 170, 210, 193, ], ), }, sequence_number: 9478577226897114261, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a6055950369c32e7118113b946f8318cc902d0ecb5f7fabcde198f51069e847): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974278cad12d75772d888724cf0deecc38294c5230dfc673598e73dfde6be73f4e7c7c1ea703aa1e65a00005eca54ee6ea25b6318493c5d7c1320367464cd6daadbd470b21dbf78a69b337c04873d91ed56b425261805c8dccf0c085900e35b5953f009c8dbdec0855733a623d39f44624d2a8fa7172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70838f1aa20653a8562 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 173, 18, 215, 87, 114, 216, 136, 114, 76, 240, 222, 236, 195, 130, 148, 197, 35, 13, 252, 103, 53, 152, 231, 61, 253, 230, 190, 115, 244, 231, 199, 193, 234, 112, 58, 161, 230, 90, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7159494629964171870, key: EventKey( [ 73, 60, 93, 124, 19, 32, 54, 116, 100, 205, 109, 170, 219, 212, 112, 178, 29, 191, 120, 166, 155, 51, 124, 4, ], ), }, sent_events: EventHandle { count: 2748801433025461639, key: EventKey( [ 5, 200, 220, 207, 12, 8, 89, 0, 227, 91, 89, 83, 240, 9, 200, 219, 222, 192, 133, 87, 51, 166, 35, 211, ], ), }, sequence_number: 1704488395832706207, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b01d00716d5cdeba4e8ac8cdc4ab1feb41a353bad45904854d17243c6330aff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161df891026f5174f83afbe9a819f9b0e87a833332700cc943a40b552dabac3dcaa232e9ab7c2d1ac737fd96a1f9f24fa333fb6e8497fb1a1c154141e1117e639d753800b699a2a7c4258eae44e85e67f02eaefab6fc20bc45a5658cf10da086d1fba0000e2b981928e9c2c6718114302e36e1257e2f19f25b947745a95e7042699a0ce7cb208af7a511fded51d183eadd2bc83a2023b6b24ad0a7b65a0a9e1b4c4eb23aec213e24d0ddc85e05e892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aff3ad5ce34dafb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 137, 16, 38, 245, 23, 79, 131, 175, 190, 154, 129, 159, 155, 14, 135, 168, 51, 51, 39, 0, 204, 148, 58, 64, 181, 82, 218, 186, 195, 220, 170, 35, 46, 154, 183, 194, 209, 172, 115, 127, 217, 106, 31, 159, 36, 250, 51, 63, 182, 232, 73, 127, 177, 161, 193, 84, 20, 30, 17, 23, 230, 57, 215, 83, 128, 11, 105, 154, 42, 124, 66, 88, 234, 228, 78, 133, 230, 127, 2, 234, 239, 171, 111, 194, 11, 196, 90, 86, 88, 207, 16, 218, 8, 109, 31, 186, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7434489221039110626, key: EventKey( [ 17, 67, 2, 227, 110, 18, 87, 226, 241, 159, 37, 185, 71, 116, 90, 149, 231, 4, 38, 153, 160, 206, 124, 178, ], ), }, sent_events: EventHandle { count: 2149868623231627016, key: EventKey( [ 62, 173, 210, 188, 131, 162, 2, 59, 107, 36, 173, 10, 123, 101, 160, 169, 225, 180, 196, 235, 35, 174, 194, 19, ], ), }, sequence_number: 9898595896534060514, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b371d434f3b462a0ca9eae6b6b6be9a026563c6ed2a050779c82d812b6d8b3e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012b98a70e0e17aeb57c226b7e90c070039bb9a00b817dd43f28426b0b7d54d141d1f52349832c13eac4fe014501fb43f4324b299ef39a460d16255e8d93017f5232310481ea9539c01896e5324b2f3f1770811b6e9f4718f9bc1db16ddcb8858a941981d35c11a86b71836a3c7988e39dd515b163434c3b186ae9f731f1bbf2b1c893ef3590f05bb4bdb9081156f5480f948f45c7aa0cfa972101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70845132caf8224a3b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 167, 14, 14, 23, 174, 181, 124, 34, 107, 126, 144, 192, 112, 3, 155, 185, 160, 11, 129, 125, 212, 63, 40, 66, 107, 11, 125, 84, 209, 65, 209, 245, 35, 73, 131, 44, 19, 234, 196, 254, 1, 69, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fb43f4324b299ef39a460d16255e8d93, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7f5232310481ea9539c01896e5324b2f, }, ), received_events: EventHandle { count: 5160964762404656959, key: EventKey( [ 249, 188, 29, 177, 109, 220, 184, 133, 138, 148, 25, 129, 211, 92, 17, 168, 107, 113, 131, 106, 60, 121, 136, 227, ], ), }, sent_events: EventHandle { count: 4272864241919579549, key: EventKey( [ 106, 233, 247, 49, 241, 187, 242, 177, 200, 147, 239, 53, 144, 240, 91, 180, 189, 185, 8, 17, 86, 245, 72, 15, ], ), }, sequence_number: 10951079371531980692, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b58c113a49dcf7468d5d002619b8f32e72f2517203030ac69ace0ee3a9da1bb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0ed8507e906a482e7d3c3fd6da4de301ec1eb2f79a027c336ac44fad5403607f00ef3f7cf1be8bf746181a09fb9eef2e403fd4275ed14aedf7edee9a92ffaced209cf425601279590955187f3486015a5e6ac92f5f1cba664e8f7d7bcc327e7461922ec9e73ce63641fd1d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085bffa9503299ea1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 80, 126, 144, 106, 72, 46, 125, 60, 63, 214, 218, 77, 227, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ec1eb2f79a027c336ac44fad5403607f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5113709554113986543, key: EventKey( [ 26, 9, 251, 158, 239, 46, 64, 63, 212, 39, 94, 209, 74, 237, 247, 237, 238, 154, 146, 255, 172, 237, 32, 156, ], ), }, sent_events: EventHandle { count: 6127527144548476404, key: EventKey( [ 127, 52, 134, 1, 90, 94, 106, 201, 47, 95, 28, 186, 102, 78, 143, 125, 123, 204, 50, 126, 116, 97, 146, 46, ], ), }, sequence_number: 2160955100254496713, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b985e5837bb099048c07157e2d91d066b96b2fcc7785252e5c391dbb937ce1f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015d9e4302716ee70ad0b085c4d26bf62937999c575c53549e9fe736719a81e55d8559aecb13800682e0a106bbf3dc14738f80fb253f33d4ddc1693fdacaca72c8364700903a1636f51d3867df8ab3be006ff679920f5044d90599edac9b29017cadda70aafed6d887646bbbbbdc610b00c4526066b284f74218a65947a5a4dfda9c812845a5de9d27e1720aa558d39fd7898ea3de558d153b51182a730abf3b9a2577638099a1342d03e48e3d997218dad395cf4e319aaf443fa62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828f496f3e242cfc0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 158, 67, 2, 113, 110, 231, 10, 208, 176, 133, 196, 210, 107, 246, 41, 55, 153, 156, 87, 92, 83, 84, 158, 159, 231, 54, 113, 154, 129, 229, 93, 133, 89, 174, 203, 19, 128, 6, 130, 224, 161, 6, 187, 243, 220, 20, 115, 143, 128, 251, 37, 63, 51, 212, 221, 193, 105, 63, 218, 202, 202, 114, 200, 54, 71, 0, 144, 58, 22, 54, 245, 29, 56, 103, 223, 138, 179, 190, 0, 111, 246, 121, 146, 15, 80, 68, 217, 5, 153, 237, 172, 155, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7cadda70aafed6d887646bbbbbdc610b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4825471427507409604, key: EventKey( [ 166, 89, 71, 165, 164, 223, 218, 156, 129, 40, 69, 165, 222, 157, 39, 225, 114, 10, 165, 88, 211, 159, 215, 137, ], ), }, sent_events: EventHandle { count: 5853295837473317774, key: EventKey( [ 42, 115, 10, 191, 59, 154, 37, 119, 99, 128, 153, 161, 52, 45, 3, 228, 142, 61, 153, 114, 24, 218, 211, 149, ], ), }, sequence_number: 11979369054825696975, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8baa46dee6611cd4a690731428994108f7306ca8078e8f94da741f09c21d96f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c992013537d1f2b7a08795430fcc65514300f118e6d96ef31c0c08a25d5d42ff1d70c6e7bddadd04bd7d3ec04f4ab2445d2617c715cde7c7fc0001615720edf0dd268ed9ac297546ca7691e1b6984163ebea4a1812d2d76a27dac47a3e5b651a19ce163df17b0d48fd7f952c0e2bdfb467a1c90a18e6af47c20821ac8b11334171f968e0dc35a2e9c1aa1b061b32026b7f02e981f62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f0e99339c028adec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 209, 242, 183, 160, 135, 149, 67, 15, 204, 101, 81, 67, 0, 241, 24, 230, 217, 110, 243, 28, 12, 8, 162, 93, 93, 66, 255, 29, 112, 198, 231, 189, 218, 221, 4, 189, 125, 62, 192, 79, 74, 178, 68, 93, 38, 23, 199, 21, 205, 231, 199, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 615720edf0dd268ed9ac297546ca7691, }, ), received_events: EventHandle { count: 5398385914891777761, key: EventKey( [ 18, 210, 215, 106, 39, 218, 196, 122, 62, 91, 101, 26, 25, 206, 22, 61, 241, 123, 13, 72, 253, 127, 149, 44, ], ), }, sent_events: EventHandle { count: 777329877486349070, key: EventKey( [ 230, 175, 71, 194, 8, 33, 172, 139, 17, 51, 65, 113, 249, 104, 224, 220, 53, 162, 233, 193, 170, 27, 6, 27, ], ), }, sequence_number: 17762734602262872626, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8cc20fb9ed97fc075ee117917eafc176b8f25acb07405750b844fe0e8bd49000): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9014cd5191c9a3ea9bb6471125945320689cd9083191837f9c45a711ba8c3ffc170612b7f75262d3ff3b086cd0fd9f59b88db0255532a867c6b6dbf125e30c9363176344860b34eab495601c9e149014c894c50382547ebbcad2c031f6e5de501ceb77a81053444b52cd74e54072b976eae4fd88cf5e5780d1885c78bbc64312337ab5a1d8b74dc250759f76089bd141e9127d89ddad330f74b18a5d74524e2fe0a9e4689be46d23f2f07efe4f035d60e0af10cd667463b692b632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fda3de397822ffe3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 25, 28, 154, 62, 169, 187, 100, 113, 18, 89, 69, 50, 6, 137, 205, 144, 131, 25, 24, 55, 249, 196, 90, 113, 27, 168, 195, 255, 193, 112, 97, 43, 127, 117, 38, 45, 63, 243, 176, 134, 205, 15, 217, 245, 155, 136, 219, 2, 85, 83, 42, 134, 124, 107, 109, 191, 18, 94, 48, 201, 54, 49, 118, 52, 72, 96, 179, 78, 171, 73, 86, 1, 201, 225, 73, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4c894c50382547ebbcad2c031f6e5de5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ceb77a81053444b52cd74e54072b976e, }, ), received_events: EventHandle { count: 970778562491076526, key: EventKey( [ 133, 199, 139, 188, 100, 49, 35, 55, 171, 90, 29, 139, 116, 220, 37, 7, 89, 247, 96, 137, 189, 20, 30, 145, ], ), }, sent_events: EventHandle { count: 5473897558556137511, key: EventKey( [ 165, 215, 69, 36, 226, 254, 10, 158, 70, 137, 190, 70, 210, 63, 47, 7, 239, 228, 240, 53, 214, 14, 10, 241, ], ), }, sequence_number: 7145920937058620940, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d59c5689aa6075fcd6e4b07142e422429ce14fd2661e07cdde381ed4fd1ce4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01304f2d51a9cafcd4d5f32a6c026d057e01fd8df6b359bf787dfc5265132413d00a7099bbf7dec0adbf5e2c51f38f8c78390001351752fe6bce1f642eea8e0a784c0ed07b3529ac0e09392b18a7e367875f006b6cecbc24b15beb5e54c7044ca7b55f1357a001dd417c5ef83f18eb7b82eb542540c7c3d04511a115973da4a1ec289146525cd0c05c7faf623a632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b63b1aac3f30a980 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 45, 81, 169, 202, 252, 212, 213, 243, 42, 108, 2, 109, 5, 126, 1, 253, 141, 246, 179, 89, 191, 120, 125, 252, 82, 101, 19, 36, 19, 208, 10, 112, 153, 187, 247, 222, 192, 173, 191, 94, 44, 81, 243, 143, 140, 120, 57, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 351752fe6bce1f642eea8e0a784c0ed0, }, ), received_events: EventHandle { count: 3114530575925982587, key: EventKey( [ 167, 227, 103, 135, 95, 0, 107, 108, 236, 188, 36, 177, 91, 235, 94, 84, 199, 4, 76, 167, 181, 95, 19, 87, ], ), }, sent_events: EventHandle { count: 4609538106387661216, key: EventKey( [ 235, 123, 130, 235, 84, 37, 64, 199, 195, 208, 69, 17, 161, 21, 151, 61, 164, 161, 236, 40, 145, 70, 82, 92, ], ), }, sequence_number: 7150135864299667664, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8db76f919887c1cd287e87f4f8b15527d6dc293ecfeb4ec11373ebc96f937ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95a0d2d996e0e53d3310516e9e2e6f80000959e4a21d873ef4f18e85caae998b696d1ced0b40b0bced3de34def4114a2d7e23fd9907289999a77518a8366de9222f93f1bfe1055b48a685162d4c05b81de1da8083fb4c68e7accabd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bb4f3498480e27c7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 153, 110, 14, 83, 211, 49, 5, 22, 233, 226, 230, 248, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5759949820538822293, key: EventKey( [ 232, 92, 170, 233, 152, 182, 150, 209, 206, 208, 180, 11, 11, 206, 211, 222, 52, 222, 244, 17, 74, 45, 126, 35, ], ), }, sent_events: EventHandle { count: 8477913706628880893, key: EventKey( [ 168, 54, 109, 233, 34, 47, 147, 241, 191, 225, 5, 91, 72, 166, 133, 22, 45, 76, 5, 184, 29, 225, 218, 128, ], ), }, sequence_number: 13675933328351230851, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8facf6852394d9955604dba4fdb16a9378c278f56dbc33b9b6dbe1cbfae1119f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012e1efc6f6a34f9d4f014f92ee6ba3c05b87f6cf88a246589fe4bb49e0fe5fec130bb971fa6ece0695b5a451e69239200019753de47ab7c9c1a71cfedb309c0cdfc13db90f4ffbeef4918a3edf4c21a1f22e117e1152672828edc78f939dab60461b296db3dea25bd9635184aa136bdff6a21ed630420dd234759b80399ad8dcb11e3ed8477fd4acecf227a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708803749b5fa7afc09 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 252, 111, 106, 52, 249, 212, 240, 20, 249, 46, 230, 186, 60, 5, 184, 127, 108, 248, 138, 36, 101, 137, 254, 75, 180, 158, 15, 229, 254, 193, 48, 187, 151, 31, 166, 236, 224, 105, 91, 90, 69, 30, 105, 35, 146, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9753de47ab7c9c1a71cfedb309c0cdfc, }, ), received_events: EventHandle { count: 5327686890731658003, key: EventKey( [ 163, 237, 244, 194, 26, 31, 34, 225, 23, 225, 21, 38, 114, 130, 142, 220, 120, 249, 57, 218, 182, 4, 97, 178, ], ), }, sent_events: EventHandle { count: 3861481701058141078, key: EventKey( [ 74, 161, 54, 189, 255, 106, 33, 237, 99, 4, 32, 221, 35, 71, 89, 184, 3, 153, 173, 141, 203, 17, 227, 237, ], ), }, sequence_number: 8800825106763708292, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9006bb3694685127b6df08c2cce383674638a4f0f5bda39a69f1c6d39e96baad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013cfb3373a7295c6f7fd117e61ea062334778170df5e23f1c3b08cfd2e7c2e7ca7676637363665406fa74c9f41824cb6abe35b6d29bbf5e747b58355b0201e28d2c1796e58823ae86c5569776f9c3015958c8a2594100f35371a3a51fb8118e3d5aa65c4e74e74f187a55271de548b605fdeb3455f9cd28cf40fc6176735095b85d24c795ce4413581826d58d80ab956b7237560c6c3fbad5d780567c56b633317e38cd9d14b7b4e9c42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881661e4c5c7e99e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 51, 115, 167, 41, 92, 111, 127, 209, 23, 230, 30, 160, 98, 51, 71, 120, 23, 13, 245, 226, 63, 28, 59, 8, 207, 210, 231, 194, 231, 202, 118, 118, 99, 115, 99, 102, 84, 6, 250, 116, 201, 244, 24, 36, 203, 106, 190, 53, 182, 210, 155, 191, 94, 116, 123, 88, 53, 91, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e28d2c1796e58823ae86c5569776f9c3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5958c8a2594100f35371a3a51fb8118e, }, ), received_events: EventHandle { count: 5757698528527145533, key: EventKey( [ 122, 85, 39, 29, 229, 72, 182, 5, 253, 235, 52, 85, 249, 205, 40, 207, 64, 252, 97, 118, 115, 80, 149, 184, ], ), }, sent_events: EventHandle { count: 6346491953961968733, key: EventKey( [ 38, 213, 141, 128, 171, 149, 107, 114, 55, 86, 12, 108, 63, 186, 213, 215, 128, 86, 124, 86, 182, 51, 49, 126, ], ), }, sequence_number: 14189070799425359160, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90a652446d1874062446a07efcf3713467ed3eec63780c360dac7ac62282372b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01522163622ca38e5c1c8cfc114d3607e3d96f8efd2fe53f184e5a8a78f72f470448e5e818fa8e860848e88c39d5991f41bf301e9357fc87eac068ddf01160d63d273b81e64fcb0f8ef7a6143e3703db75ec6afc0000d07cc14fb904a16518bdf27902d2f7fb8f4e51c794c06e2bee703314cda4521cf23fc3fdd1025c2d4d18f1be1fa70e6b47678c76772f15f523e4204c0e02f4ee35166993340fd046c25c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f22c28b83436d0ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 99, 98, 44, 163, 142, 92, 28, 140, 252, 17, 77, 54, 7, 227, 217, 111, 142, 253, 47, 229, 63, 24, 78, 90, 138, 120, 247, 47, 71, 4, 72, 229, 232, 24, 250, 142, 134, 8, 72, 232, 140, 57, 213, 153, 31, 65, 191, 48, 30, 147, 87, 252, 135, 234, 192, 104, 221, 240, 17, 96, 214, 61, 39, 59, 129, 230, 79, 203, 15, 142, 247, 166, 20, 62, 55, 3, 219, 117, 236, 106, 252, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7323139663034678480, key: EventKey( [ 189, 242, 121, 2, 210, 247, 251, 143, 78, 81, 199, 148, 192, 110, 43, 238, 112, 51, 20, 205, 164, 82, 28, 242, ], ), }, sent_events: EventHandle { count: 5561202282055189311, key: EventKey( [ 241, 190, 31, 167, 14, 107, 71, 103, 140, 118, 119, 47, 21, 245, 35, 228, 32, 76, 14, 2, 244, 238, 53, 22, ], ), }, sequence_number: 6683982656393483113, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90c54355e773dbc5e9831b1d922f6ef6e5c71993bfa3e438df552af8c3365e14): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c30156b8ce67edcdf5a4217ae9038e6102394de23f829d5bf577351885772558d99959af297a3f1625decb063f5b7160f7f4c5054e000c97ccc7c40f7c2c780339cd3ba0ddc18432df3ece030c96584f2be1233cfb4e4bec4b01a884f0f9a915bb0eb4998cef69939fc40116e34e65be0c86c0b0aacaa2b905627c42c294185933434f18dbc7de0f042c40270fd3827a8f86e2202b204d0b430786d77e13daa255528f5618a8396e3297c03bf60db361c592f88fa41eb0efe9f77786fb0d850f686aa2d2e42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708836f8957f9c1b263 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 206, 103, 237, 205, 245, 164, 33, 122, 233, 3, 142, 97, 2, 57, 77, 226, 63, 130, 157, 91, 245, 119, 53, 24, 133, 119, 37, 88, 217, 153, 89, 175, 41, 122, 63, 22, 37, 222, 203, 6, 63, 91, 113, 96, 247, 244, 197, 5, 78, 0, 12, 151, 204, 199, 196, 15, 124, 44, 120, 3, 57, 205, 59, 160, 221, 193, 132, 50, 223, 62, 206, 3, 12, 150, 88, 79, 43, 225, 35, 60, 251, 78, 75, 236, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a884f0f9a915bb0eb4998cef69939fc4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 16e34e65be0c86c0b0aacaa2b905627c, }, ), received_events: EventHandle { count: 5711465210193429058, key: EventKey( [ 219, 199, 222, 15, 4, 44, 64, 39, 15, 211, 130, 122, 143, 134, 226, 32, 43, 32, 77, 11, 67, 7, 134, 215, ], ), }, sent_events: EventHandle { count: 6237294536689324926, key: EventKey( [ 168, 57, 110, 50, 151, 192, 59, 246, 13, 179, 97, 197, 146, 248, 143, 164, 30, 176, 239, 233, 247, 119, 134, 251, ], ), }, sequence_number: 16488419763652887821, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90dee1588d339126a855162a67fe34736c1cd7dd7b912e662f7a8ef62ddf29b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123eeee40767c351c259bbfb0efa5a1ddc7bfebc9367a99cc72874f700e58f5c913ac2d3301f6d28b8db1074face5ae06698939d25001cb1d7f88d029239dc73c462eebf9fe287f1fb454a70f466a185f133c808543fb8295b822875050bf0419f086b0aa1b6f9bebec2207acb3f70b18712dc3ea2723c05cc3768f34c8ef4558189270c6301ae2fa593243e6131c378a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708edb7c9ddd502ee04 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 238, 64, 118, 124, 53, 28, 37, 155, 191, 176, 239, 165, 161, 221, 199, 191, 235, 201, 54, 122, 153, 204, 114, 135, 79, 112, 14, 88, 245, 201, 19, 172, 45, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f6d28b8db1074face5ae06698939d250, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cb1d7f88d029239dc73c462eebf9fe28, }, ), received_events: EventHandle { count: 7657825427745152895, key: EventKey( [ 95, 19, 60, 128, 133, 67, 251, 130, 149, 184, 34, 135, 80, 80, 191, 4, 25, 240, 134, 176, 170, 27, 111, 155, ], ), }, sent_events: EventHandle { count: 862355405100215531, key: EventKey( [ 113, 45, 195, 234, 39, 35, 192, 92, 195, 118, 143, 52, 200, 239, 69, 88, 24, 146, 112, 198, 48, 26, 226, 250, ], ), }, sequence_number: 9959459972746261081, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9115d73086bb347cef53f11eedf278ea79623d308550141785800c1114a60770): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800133f1be90d02fd8d8da594b401d95585c4c8a77ae3d6e8282b7bafd5b372d3ef4472d01e16f98924103847e4c3267db2dd70a07790000decf46c95f790d5c18a2f397cbb7d504da1ebf81fda197d5b65c288e903d7043e29547a2bb2af4393918d7b96621838b3f515c46aa5d3a71e6cad3a586607dd8b1e2653b3877dd96edba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a44660d952cea2e4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 190, 144, 208, 47, 216, 216, 218, 89, 75, 64, 29, 149, 88, 92, 76, 138, 119, 174, 61, 110, 130, 130, 183, 186, 253, 91, 55, 45, 62, 244, 71, 45, 1, 225, 111, 152, 146, 65, 3, 132, 126, 76, 50, 103, 219, 45, 215, 10, 7, 121, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6633091278492323806, key: EventKey( [ 162, 243, 151, 203, 183, 213, 4, 218, 30, 191, 129, 253, 161, 151, 213, 182, 92, 40, 142, 144, 61, 112, 67, 226, ], ), }, sent_events: EventHandle { count: 4123595398208178069, key: EventKey( [ 215, 185, 102, 33, 131, 139, 63, 81, 92, 70, 170, 93, 58, 113, 230, 202, 211, 165, 134, 96, 125, 216, 177, 226, ], ), }, sequence_number: 13469587938467134309, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(91af878c9bdb648316bd8a8540db67cf91a11fca77d0a17eb9f9e1cc1696c4eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0132e824ea099d32bbf93ad63abf81358d144271b340b4b28fa0c9c16499808e55966bee6b5868008e61ce4508677f2486e0facc013204f565be6123006fce8c5bbac96cb2003df4f7e72a1cc9121847348ac1e0848f977fcbabebbe7f09100076cfd101cb8cad5a6b92ba0de61c7c18bab641c04b63347696b25bb2a1d9b1507667ae3a64c61d103d0b15c275b543332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec1ac2a505d0addf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 36, 234, 9, 157, 50, 187, 249, 58, 214, 58, 191, 129, 53, 141, 20, 66, 113, 179, 64, 180, 178, 143, 160, 201, 193, 100, 153, 128, 142, 85, 150, 107, 238, 107, 88, 104, 0, 142, 97, 206, 69, 8, 103, 127, 36, 134, 224, 250, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3204f565be6123006fce8c5bbac96cb2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1353644133607535677, key: EventKey( [ 71, 52, 138, 193, 224, 132, 143, 151, 127, 203, 171, 235, 190, 127, 9, 16, 0, 118, 207, 209, 1, 203, 140, 173, ], ), }, sent_events: EventHandle { count: 8943275906690083674, key: EventKey( [ 186, 182, 65, 192, 75, 99, 52, 118, 150, 178, 91, 178, 161, 217, 177, 80, 118, 103, 174, 58, 100, 198, 29, 16, ], ), }, sequence_number: 3693995636745898813, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(920c85e21948ea35ca1f2ef6033488c8da13ed3eeab6d7735a4a2db5030fbc0a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a1d224e0f40e05a50c102e292e6d08788e3d7f2023129e5723e6f8abc77b7000156b078ff27d1d90de705221bfbe4696d80a00cf902342d41188919c9e9a58e53222e81e1cfb7a771eefa5b4922e5254c1138b4b8383ed57d7f1862bfba288e76bf91d060785200216c1af50878e43a506287c6a43dbef51cf1172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084faa429c2ef30f7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 15, 64, 224, 90, 80, 193, 2, 226, 146, 230, 208, 135, 136, 227, 215, 242, 2, 49, 41, 229, 114, 62, 111, 138, 188, 119, 183, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 56b078ff27d1d90de705221bfbe4696d, }, ), received_events: EventHandle { count: 4696467173790228608, key: EventKey( [ 137, 25, 201, 233, 165, 142, 83, 34, 46, 129, 225, 207, 183, 167, 113, 238, 250, 91, 73, 34, 229, 37, 76, 17, ], ), }, sent_events: EventHandle { count: 9186733278121997368, key: EventKey( [ 98, 191, 186, 40, 142, 118, 191, 145, 208, 96, 120, 82, 0, 33, 108, 26, 245, 8, 120, 228, 58, 80, 98, 135, ], ), }, sequence_number: 1725191974043886790, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9252d6aa31b9cafe92e9480135dc5ebd8edc06f63e95f393fe29c5474304a7d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148bcdbb5f5b538d9260dc456337b6b00e1ac1ef115e0ed516ea73a9508d3c2416906d798a63841b5404b4787c4147382d9f7481f73bcd672809eac85f68f3114a0f3cffe15c9110cb4011a7923648a3890fd8286f736a495a74801098fc36ea830ea69bbb47094e35cfe2b89c35cf891d65048186b56f14a62670a4574daa46ec1e7c216f3189c5bc26d4fe17a08cb760376ba1518e8828b007218494a5f32ff80b31d8bb51fb26b86b6ece216689a38df335e7c9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843739953fb6464b6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 219, 181, 245, 181, 56, 217, 38, 13, 196, 86, 51, 123, 107, 0, 225, 172, 30, 241, 21, 224, 237, 81, 110, 167, 58, 149, 8, 211, 194, 65, 105, 6, 215, 152, 166, 56, 65, 181, 64, 75, 71, 135, 196, 20, 115, 130, 217, 247, 72, 31, 115, 188, 214, 114, 128, 158, 172, 133, 246, 143, 49, 20, 160, 243, 207, 254, 21, 201, 17, 12, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1a7923648a3890fd8286f736a495a748, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 098fc36ea830ea69bbb47094e35cfe2b, }, ), received_events: EventHandle { count: 5210900691293094793, key: EventKey( [ 107, 86, 241, 74, 98, 103, 10, 69, 116, 218, 164, 110, 193, 231, 194, 22, 243, 24, 156, 91, 194, 109, 79, 225, ], ), }, sent_events: EventHandle { count: 1565693577714665594, key: EventKey( [ 232, 130, 139, 0, 114, 24, 73, 74, 95, 50, 255, 128, 179, 29, 139, 181, 31, 178, 107, 134, 182, 236, 226, 22, ], ), }, sequence_number: 11131875955834395240, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(92c0954d3c0bdb01cc3471854ca493f1ec1799445d36c67978ca2b2901809d65): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820135af47eacf18362930f2a423fc9cd167770c85c36bedf2395907398de0f8aabeae796733d6b2c473b1d961d1021e5b2c7bbddb4b1aef00000efce15700c134091866249a59ab74dc034bc44c6d93982869e5272b3e9e93fec37bc2b796bb1dd667180bb09488e78ff239b5832c65b242adb3ec958a769414101e193eb02faa75939f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084767277bc2bd3244 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 71, 234, 207, 24, 54, 41, 48, 242, 164, 35, 252, 156, 209, 103, 119, 12, 133, 195, 107, 237, 242, 57, 89, 7, 57, 141, 224, 248, 170, 190, 174, 121, 103, 51, 214, 178, 196, 115, 177, 217, 97, 209, 2, 30, 91, 44, 123, 189, 219, 75, 26, 239, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 663367252348894222, key: EventKey( [ 102, 36, 154, 89, 171, 116, 220, 3, 75, 196, 76, 109, 147, 152, 40, 105, 229, 39, 43, 62, 158, 147, 254, 195, ], ), }, sent_events: EventHandle { count: 7482200522447372923, key: EventKey( [ 11, 176, 148, 136, 231, 143, 242, 57, 181, 131, 44, 101, 178, 66, 173, 179, 236, 149, 138, 118, 148, 20, 16, 30, ], ), }, sequence_number: 11498663647411977753, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9368e9ef6803cb39b8f040e86c0f28a2f1c1d9b1be9f26299406df56849514e5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bbecd214126517a0abf7adf2296b2a5106b9f73aa2dcb503263465f58a1b4a1c99586dc6863d39fdd0e6c37a8ab3561a25a8eead7b545a1c3a25ae8a9b0e0fed5161212dd0c54b7b896141f3abec26c317992c6cd81f5b568e784b601682d26071ab101c09da68203cb94f98600498c51c32a5ef25118ca312647cbdbbb83f19fbf07edd3065888eca47530b2398d0c7754c672438c4a1800a5135c3cddb6192455c153b2c128ca905c8db11bee92b9e589c45e1060c84e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708921d5b8a9cf8cbef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 190, 205, 33, 65, 38, 81, 122, 10, 191, 122, 223, 34, 150, 178, 165, 16, 107, 159, 115, 170, 45, 203, 80, 50, 99, 70, 95, 88, 161, 180, 161, 201, 149, 134, 220, 104, 99, 211, 159, 221, 14, 108, 55, 168, 171, 53, 97, 162, 90, 142, 234, 215, 181, 69, 161, 195, 162, 90, 232, 169, 176, 224, 254, 213, 22, 18, 18, 221, 12, 84, 183, 184, 150, 20, 31, 58, 190, 194, 108, 49, 121, 146, 198, 205, 129, 245, 181, 104, 231, 132, 182, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 682d26071ab101c09da68203cb94f986, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5904885599194680393, key: EventKey( [ 202, 49, 38, 71, 203, 219, 187, 131, 241, 159, 191, 7, 237, 211, 6, 88, 136, 236, 164, 117, 48, 178, 57, 141, ], ), }, sent_events: EventHandle { count: 5371742615778916108, key: EventKey( [ 0, 165, 19, 92, 60, 221, 182, 25, 36, 85, 193, 83, 178, 193, 40, 202, 144, 92, 141, 177, 27, 238, 146, 185, ], ), }, sequence_number: 5676892953726192101, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(942bbc57489c6478619453405a5033712d7cbf4393d524478e80511fb5ad4c42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001434690fa610d895ae9904a57b2ded1dbce3b3c402fc6bf6722a7529c9d16b59e127624c75b721a55bc66081702a1a2126ba112569ca8fb3bcbd1043daf9245428ffdccb80000e5f8bc76be28b11218f5ce8ba3936a2f90b097f4dad8f61b8d616f5e1aef84c4a891449d7539de961a185ef2e4d475141dd3c59bdc894fdb38710c2f239cc329e4154bd7b51e4655ace22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708661b37b41661a505 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 144, 250, 97, 13, 137, 90, 233, 144, 74, 87, 178, 222, 209, 219, 206, 59, 60, 64, 47, 198, 191, 103, 34, 167, 82, 156, 157, 22, 181, 158, 18, 118, 36, 199, 91, 114, 26, 85, 188, 102, 8, 23, 2, 161, 162, 18, 107, 161, 18, 86, 156, 168, 251, 59, 203, 209, 4, 61, 175, 146, 69, 66, 143, 253, 204, 184, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1346902562061482213, key: EventKey( [ 245, 206, 139, 163, 147, 106, 47, 144, 176, 151, 244, 218, 216, 246, 27, 141, 97, 111, 94, 26, 239, 132, 196, 168, ], ), }, sent_events: EventHandle { count: 1915963029860467857, key: EventKey( [ 94, 242, 228, 212, 117, 20, 29, 211, 197, 155, 220, 137, 79, 219, 56, 113, 12, 47, 35, 156, 195, 41, 228, 21, ], ), }, sequence_number: 16333523708217251659, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94aaeb1ceb9e4df2dd2d2899827e5112915d199495e8c737e726066f3a544b40): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d105ffcabbeb6dba45384ae55e00014870001240f5e9c8dfe36661c8cf688b152c1f30070df91f1c88b47521840947b32d3fd3c6270a4059ed1cd770afcb94218907feb388226650d71e802091872fc6b0f667cff0ff84cd6954308ac87d6268bc920a28e229f138d6abb4faa952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70877a729a3ceaef444 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 252, 171, 190, 182, 219, 164, 83, 132, 174, 85, 224, 0, 20, 135, 0, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 240f5e9c8dfe36661c8cf688b152c1f3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5928861129619136368, key: EventKey( [ 64, 148, 123, 50, 211, 253, 60, 98, 112, 164, 5, 158, 209, 205, 119, 10, 252, 185, 66, 24, 144, 127, 235, 56, ], ), }, sent_events: EventHandle { count: 649336868548454018, key: EventKey( [ 114, 252, 107, 15, 102, 124, 255, 15, 248, 76, 214, 149, 67, 8, 172, 135, 214, 38, 139, 201, 32, 162, 142, 34, ], ), }, sequence_number: 10784519924057183135, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9641e729d6065887f4ad3701871d6e3a80fc15596cb67eb4bf6dc7a5e0e26713): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c966098891534011f624b77b01e9467dfa780cb5467a7bc87ba343ef9400181a00cd860a16451835a85dcd6a15de975217a5832eb97f840a05dc0a03eb383eb583155b5b92ca711804f8a239fae677a44a679c632f4eea2066b379a615d31b98fa3049277bba45882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086e70b881bb875397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 145, 83, 64, 17, 246, 36, 183, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e9467dfa780cb5467a7bc87ba343ef94, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4978178012185893400, key: EventKey( [ 53, 168, 93, 205, 106, 21, 222, 151, 82, 23, 165, 131, 46, 185, 127, 132, 10, 5, 220, 10, 3, 235, 56, 62, ], ), }, sent_events: EventHandle { count: 8199526992649225141, key: EventKey( [ 4, 248, 162, 57, 250, 230, 119, 164, 74, 103, 156, 99, 47, 78, 234, 32, 102, 179, 121, 166, 21, 211, 27, 152, ], ), }, sequence_number: 9819459600654086394, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9686f790a78c15e639eec68b1ea9bc5f8aae72c742749c2741970eead4d8cd25): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001438b470c14b66e73e832c70fc2c6a5de05f823e9f3dc6af66c6689b22f02c739bf959672e881be1124f4318078af11e21cbb53e90b0cf9e5e0e464ef62b81f69afe358fa01b4580d7e8990c21782b41c259ac070c200ca9f229a4650051b184352bcb74ef7dee83ecc3ef966ac9dc68a5a1dfe4eef88d57e1b96800732f0761849fc24b66062fbb8e6ec3502e88b5740ddf75c3820535b72dfdfad6315346f772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70862f837b08a6e5fb4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 139, 71, 12, 20, 182, 110, 115, 232, 50, 199, 15, 194, 198, 165, 222, 5, 248, 35, 233, 243, 220, 106, 246, 108, 102, 137, 178, 47, 2, 199, 57, 191, 149, 150, 114, 232, 129, 190, 17, 36, 244, 49, 128, 120, 175, 17, 226, 28, 187, 83, 233, 11, 12, 249, 229, 224, 228, 100, 239, 98, 184, 31, 105, 175, 227, 88, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b4580d7e8990c21782b41c259ac070c2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1947050678071500746, key: EventKey( [ 67, 82, 188, 183, 78, 247, 222, 232, 62, 204, 62, 249, 102, 172, 157, 198, 138, 90, 29, 254, 78, 239, 136, 213, ], ), }, sent_events: EventHandle { count: 8570405098689534846, key: EventKey( [ 73, 252, 36, 182, 96, 98, 251, 184, 230, 236, 53, 2, 232, 139, 87, 64, 221, 247, 92, 56, 32, 83, 91, 114, ], ), }, sequence_number: 8606154679399604191, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96acf0e7f370e4f0a55152b1c3e87782bdffa7087f9f16a435cf7448e350b449): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99201351a6814edbb706b2fee63d7adca38a3d04c5d0781b2e85b32725f54a67a0508e97b6a559dff04d961b11300632ae23a0f46531b207f0171633cd8f326da5ae71738aba9cc1f36001e34ad70e827840e18a91aa57e3410e77598b47f922bf306a493ecef3811d334e8763392b278bfc525186565a44376e0fcd15dda654aef64dd723296010f2268d5be5600853c4c0614e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc6317ffb99f9ba5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 104, 20, 237, 187, 112, 107, 47, 238, 99, 215, 173, 202, 56, 163, 208, 76, 93, 7, 129, 178, 232, 91, 50, 114, 95, 84, 166, 122, 5, 8, 233, 123, 106, 85, 157, 255, 4, 217, 97, 177, 19, 0, 99, 42, 226, 58, 15, 70, 83, 27, 32, 127, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 71633cd8f326da5ae71738aba9cc1f36, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1046004892733092894, key: EventKey( [ 169, 26, 165, 126, 52, 16, 231, 117, 152, 180, 127, 146, 43, 243, 6, 164, 147, 236, 239, 56, 17, 211, 52, 232, ], ), }, sent_events: EventHandle { count: 2721792074928239478, key: EventKey( [ 101, 101, 164, 67, 118, 224, 252, 209, 93, 218, 101, 74, 239, 100, 221, 114, 50, 150, 1, 15, 34, 104, 213, 190, ], ), }, sequence_number: 16362710270646485078, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96d5c40d740c1f3fac88d968960023ef388b3fa9b8861836a6050942ab7ef14f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01415b3730d589c202c4a6409f6775a52e9ce3be514a2b19ef6053e3adccfff8ea8a4f68d1f2e2771dca563355fb52ec2d267cc681bc6ecea3e269310a94e9b861df9f010c92fdfe65061153772612c833d847750022ae7510bff19d741884fc8a0a4e930664fbbcfb52ddf742875a357fe98a126db2f11ba76b8c6bd671183c86d62577c52242e397d7ac45c835bab2ec52452e6c26a03d2b8376500da46c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70879965b1af183ab8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 55, 48, 213, 137, 194, 2, 196, 166, 64, 159, 103, 117, 165, 46, 156, 227, 190, 81, 74, 43, 25, 239, 96, 83, 227, 173, 204, 255, 248, 234, 138, 79, 104, 209, 242, 226, 119, 29, 202, 86, 51, 85, 251, 82, 236, 45, 38, 124, 198, 129, 188, 110, 206, 163, 226, 105, 49, 10, 148, 233, 184, 97, 223, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0c92fdfe65061153772612c833d84775, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8403138282660408866, key: EventKey( [ 132, 252, 138, 10, 78, 147, 6, 100, 251, 188, 251, 82, 221, 247, 66, 135, 90, 53, 127, 233, 138, 18, 109, 178, ], ), }, sent_events: EventHandle { count: 8202862022147644401, key: EventKey( [ 60, 134, 214, 37, 119, 197, 34, 66, 227, 151, 215, 172, 69, 200, 53, 186, 178, 236, 82, 69, 46, 108, 38, 160, ], ), }, sequence_number: 7828396691513617213, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96e5cb2f9e47b259a014a13c319d55d969213195bef260dae04ea3d92c04f997): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b2ee1b534870205960f2df4275ae6d7dba61b2084e0757a2926dc9b5dab8ea30e5daef973731a2f6bf73fe2769bbe2b000039ac2bf0705c147618d321b3a1fbe74402398f95af41f6227e51f93336c28c8951ada4afe213e750671872c7261ac7e1e564a1721188b15e6b3178a53e52856876334cc67525018b98eb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4fc455c77cffbe4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 181, 52, 135, 2, 5, 150, 15, 45, 244, 39, 90, 230, 215, 219, 166, 27, 32, 132, 224, 117, 122, 41, 38, 220, 155, 93, 171, 142, 163, 14, 93, 174, 249, 115, 115, 26, 47, 107, 247, 63, 226, 118, 155, 190, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8508527236145196089, key: EventKey( [ 211, 33, 179, 161, 251, 231, 68, 2, 57, 143, 149, 175, 65, 246, 34, 126, 81, 249, 51, 54, 194, 140, 137, 81, ], ), }, sent_events: EventHandle { count: 7444704256636986541, key: EventKey( [ 114, 199, 38, 26, 199, 225, 229, 100, 161, 114, 17, 136, 177, 94, 107, 49, 120, 165, 62, 82, 133, 104, 118, 51, ], ), }, sequence_number: 16976471632412788300, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(98bc2c7396a621d660486657cdab8e2d2819a740a1b622b38323e820156cfc17): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c4c61b74bff9371803d7673a6f1222332961c7165d4778adf28ac152f3a289b60c9f585c56931ed7d3c2c39582e0d09bdbf5f5967250aa6f7a7b99ab8000112d3ee9bb809d0059614b1ab15bde9e61f9c93ce298abb321816a36919e226a2f2ff7b86af1a2e837275dcbefe19c3fa160c4363e47d19e2701821e5ad3991a671da6c8aabba211fff8751387131079fa10052873fd854a0a3b02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e16c182f28aae5f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 76, 97, 183, 75, 255, 147, 113, 128, 61, 118, 115, 166, 241, 34, 35, 50, 150, 28, 113, 101, 212, 119, 138, 223, 40, 172, 21, 47, 58, 40, 155, 96, 201, 245, 133, 197, 105, 49, 237, 125, 60, 44, 57, 88, 46, 13, 9, 189, 191, 95, 89, 103, 37, 10, 166, 247, 167, 185, 154, 184, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 12d3ee9bb809d0059614b1ab15bde9e6, }, ), received_events: EventHandle { count: 3655667434705361951, key: EventKey( [ 22, 163, 105, 25, 226, 38, 162, 242, 255, 123, 134, 175, 26, 46, 131, 114, 117, 220, 190, 254, 25, 195, 250, 22, ], ), }, sent_events: EventHandle { count: 8134091905477853964, key: EventKey( [ 33, 229, 173, 57, 145, 166, 113, 218, 108, 138, 171, 186, 33, 31, 255, 135, 81, 56, 113, 49, 7, 159, 161, 0, ], ), }, sequence_number: 12728193258144892754, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(995382fa113e5eb48c194854ba18e57453b66d41b1be19c321e4c76e3e12aef8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601598a0e49d807f47c7beb057c5b833f04f62505e352996f7cf5420f7099c3813db98f4a907cd489efdfcdbbf993c32727f469b9df2f4689c3758816647ab6ca623c1ac6809ccd3e5738c39aab7d81ac7c1daacce9675c262e47eb01f79dff8f5fa905f35f2d1b19f384eabb01001690dfcc5035a9acb4d17b47d898a3a0cf5f620872665918508994760b24dd50a0c9226085eac661ea1ed616bf99e138d90d153f306901281845f4bae305ff43f6fa697593da9f44749b9d791fde2370424b09863dd34dbd9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708774fa2b44b1b2ca7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 14, 73, 216, 7, 244, 124, 123, 235, 5, 124, 91, 131, 63, 4, 246, 37, 5, 227, 82, 153, 111, 124, 245, 66, 15, 112, 153, 195, 129, 61, 185, 143, 74, 144, 124, 212, 137, 239, 223, 205, 187, 249, 147, 195, 39, 39, 244, 105, 185, 223, 47, 70, 137, 195, 117, 136, 22, 100, 122, 182, 202, 98, 60, 26, 198, 128, 156, 205, 62, 87, 56, 195, 154, 171, 125, 129, 172, 124, 29, 170, 204, 233, 103, 92, 38, 46, 71, 235, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f79dff8f5fa905f35f2d1b19f384eabb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 001690dfcc5035a9acb4d17b47d898a3, }, ), received_events: EventHandle { count: 6441961697335824288, key: EventKey( [ 80, 137, 148, 118, 11, 36, 221, 80, 160, 201, 34, 96, 133, 234, 198, 97, 234, 30, 214, 22, 191, 153, 225, 56, ], ), }, sent_events: EventHandle { count: 2882700892431519193, key: EventKey( [ 69, 244, 186, 227, 5, 255, 67, 246, 250, 105, 117, 147, 218, 159, 68, 116, 155, 157, 121, 31, 222, 35, 112, 66, ], ), }, sequence_number: 11366326604218632523, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(997ebcf7729a513b1b763bbc30cd6f0ddc4ee8c488a5f2674264f290a9807d79): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97407075c898677630e0177624afdad66d5b9f3bb0917ce6afc3f0171f3e5fb9f2896b02c6bbd2d8472e8e596e95414797e5317180fb29907f5281a68c622153e929d93bb84d899a91d8717edcf5043783e8a976318a3356e0b793eb26fd0647d2c311c260b0e0ea31089c5c65a89223d52bd73d2d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aeee4469209adf46 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 7, 92, 137, 134, 119, 99, 14, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 77624afdad66d5b9f3bb0917ce6afc3f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71f3e5fb9f2896b02c6bbd2d8472e8e5, }, ), received_events: EventHandle { count: 1680826144436578710, key: EventKey( [ 15, 178, 153, 7, 245, 40, 26, 104, 198, 34, 21, 62, 146, 157, 147, 187, 132, 216, 153, 169, 29, 135, 23, 237, ], ), }, sent_events: EventHandle { count: 7176356532148457679, key: EventKey( [ 163, 53, 110, 11, 121, 62, 178, 111, 208, 100, 125, 44, 49, 28, 38, 11, 14, 14, 163, 16, 137, 197, 198, 90, ], ), }, sequence_number: 15695734908305351305, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(99caeb4f8eedffb831f7ea70ceac7b7d74858f0fb1c7d717ede4a247f85ba3b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f014261452c7d88a3c8c0e1e19164c7a884cdc8fe3de3e27280225580424d852399043b775092501b79c91adf169d1a08bcd08ce8400714a157cd02ef366be9c8ff38d42401bc53077d6ed27bf4cac85293ad16217200f11d39ac99353f7418f09fa51e597e821d7dd003a82ec555b128506141ec966d72739a5ad3a149027518f162d038361f23de0da5aa93d9ec3f3bd29e589e5affc60c3139cabf46bf62662101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826d7b531eab3f92c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 69, 44, 125, 136, 163, 200, 192, 225, 225, 145, 100, 199, 168, 132, 205, 200, 254, 61, 227, 226, 114, 128, 34, 85, 128, 66, 77, 133, 35, 153, 4, 59, 119, 80, 146, 80, 27, 121, 201, 26, 223, 22, 157, 26, 8, 188, 208, 140, 232, 64, 7, 20, 161, 87, 205, 2, 239, 54, 107, 233, 200, 255, 56, 212, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bc53077d6ed27bf4cac85293ad162172, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8376472766068104689, key: EventKey( [ 240, 159, 165, 30, 89, 126, 130, 29, 125, 208, 3, 168, 46, 197, 85, 177, 40, 80, 97, 65, 236, 150, 109, 114, ], ), }, sent_events: EventHandle { count: 8431382411775482483, key: EventKey( [ 241, 98, 208, 56, 54, 31, 35, 222, 13, 165, 170, 147, 217, 236, 63, 59, 210, 158, 88, 158, 90, 255, 198, 12, ], ), }, sequence_number: 7377669450172610865, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9a6053755621698a24212b64c54ff81f5bbf591e04f6cdd63a2c1df03fbd087a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c001537ddbcb6edabdf87ae20dffef99be369050cb0784d0583a76f75e15d82e7d479d9a46175ed10b0bb20bf95339a0114078fb4f028685a4c33ea4932c4ef4ff2fad7ee7d36b7c3046aa15a8a454f67eb1bf4641e201dd0c2eb7d204756dda7ce2eae58c2e4a013c86f3d8336759795be950c71b2aea01c256fe5bbcf51d78186b989e6e0434af14a2f54bd8964b94836eda060ed1a1f730c92c3ffb30f7c637189b0e208b01db5dd45a2efba1b67e32b34d1f6b487b7b1b7c30e8e2b5781c198c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ada3970830e7de4d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 219, 203, 110, 218, 189, 248, 122, 226, 13, 255, 239, 153, 190, 54, 144, 80, 203, 7, 132, 208, 88, 58, 118, 247, 94, 21, 216, 46, 125, 71, 157, 154, 70, 23, 94, 209, 11, 11, 178, 11, 249, 83, 57, 160, 17, 64, 120, 251, 79, 2, 134, 133, 164, 195, 62, 164, 147, 44, 78, 244, 255, 47, 173, 126, 231, 211, 107, 124, 48, 70, 170, 21, 168, 164, 84, 246, 126, 177, 191, 70, 65, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dd0c2eb7d204756dda7ce2eae58c2e4a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3c86f3d8336759795be950c71b2aea01, }, ), received_events: EventHandle { count: 8655344248222013122, key: EventKey( [ 107, 152, 158, 110, 4, 52, 175, 20, 162, 245, 75, 216, 150, 75, 148, 131, 110, 218, 6, 14, 209, 161, 247, 48, ], ), }, sent_events: EventHandle { count: 4019171507220458697, key: EventKey( [ 155, 14, 32, 139, 1, 219, 93, 212, 90, 46, 251, 161, 182, 126, 50, 179, 77, 31, 107, 72, 123, 123, 27, 124, ], ), }, sequence_number: 10095131344500877360, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9a64f708ab719541f77e20dd9830dab2be6994d977b77916fa282be3b6b54f02): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95508c6b0cbde541765cb0000cf9cdf46aebdc61f184f209cb7780239d4e82105ac1c653988b3e37c0e23857e88c3b0e97afcfc0a721887083ea4c46aa23998ea1c428b7df3aec8122f13981ec044b3c9b7358e77f77e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7b53e7e2922dee6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 176, 203, 222, 84, 23, 101, 203, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2289726016775494863, key: EventKey( [ 79, 32, 156, 183, 120, 2, 57, 212, 232, 33, 5, 172, 28, 101, 57, 136, 179, 227, 124, 14, 35, 133, 126, 136, ], ), }, sent_events: EventHandle { count: 8217658631414984899, key: EventKey( [ 135, 8, 62, 164, 196, 106, 162, 57, 152, 234, 28, 66, 139, 125, 243, 174, 200, 18, 47, 19, 152, 30, 192, 68, ], ), }, sequence_number: 9148912620696750515, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aad46f854c5775cff46e5c320794218210684cf0a3715ebb91973d47390732b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974178fb775f43c4d5f0fd34ac174e3e3e77db3179fe584c226010fccbc720c59a34954c15a8602d6effc002ed2d749bfd6fc7c18cd2783f9275e9081707eab349355c7a32602d6ca5b8eec5f59d2105221a1871118377d232ee028d9066a446a4e340ce75c3d0ab02d996759e241d704b3799e510b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d5ca286cd07448f6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 183, 117, 244, 60, 77, 95, 15, 211, 74, 193, 116, 227, 227, 231, 125, 179, 23, 159, 229, 132, 194, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0fccbc720c59a34954c15a8602d6effc, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9006309471900127790, key: EventKey( [ 205, 39, 131, 249, 39, 94, 144, 129, 112, 126, 171, 52, 147, 85, 199, 163, 38, 2, 214, 202, 91, 142, 236, 95, ], ), }, sent_events: EventHandle { count: 1263155384983540313, key: EventKey( [ 55, 125, 35, 46, 224, 40, 217, 6, 106, 68, 106, 78, 52, 12, 231, 92, 61, 10, 176, 45, 153, 103, 89, 226, ], ), }, sequence_number: 815607253062440769, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aae46449fb64ec8891629129544ad4125eba074198f55edccdfd4819a541525): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f8eef07e1ae2def600a3e08b3b89aee2c80ab3c02fe073528a5aefd60492fae62936e36dd6514b4ae0082cb27572c3a0000111fc13796530c7118deeecca536acd15d123606046b8fb806c700692e347aa3cd8a6d8a097ba82c76184bd2fd5b4e2d31690d74fe446641c9aef840aea6c286fe094ce8ccb9d308c1422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708488dd80d8fdc65e5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 239, 7, 225, 174, 45, 239, 96, 10, 62, 8, 179, 184, 154, 238, 44, 128, 171, 60, 2, 254, 7, 53, 40, 165, 174, 253, 96, 73, 47, 174, 98, 147, 110, 54, 221, 101, 20, 180, 174, 0, 130, 203, 39, 87, 44, 58, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8145977730651987729, key: EventKey( [ 222, 238, 204, 165, 54, 172, 209, 93, 18, 54, 6, 4, 107, 143, 184, 6, 199, 0, 105, 46, 52, 122, 163, 205, ], ), }, sent_events: EventHandle { count: 8515366241845276042, key: EventKey( [ 75, 210, 253, 91, 78, 45, 49, 105, 13, 116, 254, 68, 102, 65, 201, 174, 248, 64, 174, 166, 194, 134, 254, 9, ], ), }, sequence_number: 4810135582456735820, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ac5de7b6d7e72b23a06da6efd66791e32b635cbbb4b4132cd3cb89e6d639a6e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa013d09f16695bfb267917da358b48ba06db9e3ec4c5513337596331e82f5e03deff9d18b7b536724a2853e5744f0f67a503ebebf50d823c992e7351ded83e101c35cd50ce4b013e89cf6c8dfaf3012c6010b83c0eeea5aa8f8fecd040a9f5ed830c693dcdcec6c023d189b16748bfc0f0f9c8812710c1e48fe5100d3b4e3392efae029f06f47a9fe814e182dcb186ffafaf99e3e864bf77c992251ea9aea8c6ad2f292a5482c4e108d37042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cbeaddbd5e4876f1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 241, 102, 149, 191, 178, 103, 145, 125, 163, 88, 180, 139, 160, 109, 185, 227, 236, 76, 85, 19, 51, 117, 150, 51, 30, 130, 245, 224, 61, 239, 249, 209, 139, 123, 83, 103, 36, 162, 133, 62, 87, 68, 240, 246, 122, 80, 62, 190, 191, 80, 216, 35, 201, 146, 231, 53, 29, 237, 131, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c35cd50ce4b013e89cf6c8dfaf3012c6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0b83c0eeea5aa8f8fecd040a9f5ed830, }, ), received_events: EventHandle { count: 4396195950840550342, key: EventKey( [ 155, 22, 116, 139, 252, 15, 15, 156, 136, 18, 113, 12, 30, 72, 254, 81, 0, 211, 180, 227, 57, 46, 250, 224, ], ), }, sent_events: EventHandle { count: 5657082609955500073, key: EventKey( [ 45, 203, 24, 111, 250, 250, 249, 158, 62, 134, 75, 247, 124, 153, 34, 81, 234, 154, 234, 140, 106, 210, 242, 146, ], ), }, sequence_number: 303866601041316005, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9b26c04f88e4dfcd24f320b94866f1e562ea87c1c06accac77bb52eff90c0f18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c989012cf720874baf0abe2954b5f7f217aaf4c075c0e7840baab82aa56f1ada0115e7fd2df4de39c204e329be5a4be50001866d29a3dae28b6afce314092ea2aafc62696d36779a8a73187ccceaa3f70a349aa674466a28b163f03f79fc9c38cf07e8d3c914e2938030411885629bc97111310db007f455d938ae2149d7a682e2bd8a8714e9cb7a440ff4fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086c7a5ceeb0b44ccc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 32, 135, 75, 175, 10, 190, 41, 84, 181, 247, 242, 23, 170, 244, 192, 117, 192, 231, 132, 11, 170, 184, 42, 165, 111, 26, 218, 1, 21, 231, 253, 45, 244, 222, 57, 194, 4, 227, 41, 190, 90, 75, 229, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 866d29a3dae28b6afce314092ea2aafc, }, ), received_events: EventHandle { count: 8325636697952708962, key: EventKey( [ 124, 204, 234, 163, 247, 10, 52, 154, 166, 116, 70, 106, 40, 177, 99, 240, 63, 121, 252, 156, 56, 207, 7, 232, ], ), }, sent_events: EventHandle { count: 4697395783988988371, key: EventKey( [ 133, 98, 155, 201, 113, 17, 49, 13, 176, 7, 244, 85, 217, 56, 174, 33, 73, 215, 166, 130, 226, 189, 138, 135, ], ), }, sequence_number: 18371325566743472404, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9b39854a38e811dc35b05bc215ce49e7eb71e0f8d7606ca53971c75d50e0abd8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d30667087a510a01d8dc29601f82e89322eff09402f3d5ae64c75b74f8d739f2940eaf46c52ce79a4076b5f3071a01aaf8e0000d725f1318140d94f18751e754a18f571d76ae204775ba239562ae37b71dabca19eae463fb5bbfe1129189df452295e00700ccc950fd2c53ee435f4f6e28a4a7c0843ada81c46b689ae9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70854b94e85ed776ba8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 112, 135, 165, 16, 160, 29, 141, 194, 150, 1, 248, 46, 137, 50, 46, 255, 9, 64, 47, 61, 90, 230, 76, 117, 183, 79, 141, 115, 159, 41, 64, 234, 244, 108, 82, 206, 121, 164, 7, 107, 95, 48, 113, 160, 26, 175, 142, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5753700922575365591, key: EventKey( [ 117, 30, 117, 74, 24, 245, 113, 215, 106, 226, 4, 119, 91, 162, 57, 86, 42, 227, 123, 113, 218, 188, 161, 158, ], ), }, sent_events: EventHandle { count: 2959426512312288942, key: EventKey( [ 157, 244, 82, 41, 94, 0, 112, 12, 204, 149, 15, 210, 197, 62, 228, 53, 244, 246, 226, 138, 74, 124, 8, 67, ], ), }, sequence_number: 11145997543741892781, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ba0cc93f5b0d5d33b851202cd2dbf53746263b64ca9178a6001d389f944f144): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a05972bba7975a973a5468714873647d52cf6dd1ca8f86c5b973161b45376151f2c734ea71061c65d075d3f439591e2e95d9d056d686d4c568cc897e68efed3e1b64119beb4e27138d5280bac28b350e282b85b34b12b1394ae3a01c4f374ee91a4b1f25a7a241fa7c921d900174470d2f8c0207318212fec2eb02ff33fc8e465850651da55db878560ed7e95f43955bebad1a101581817e2fa90bafa403685907dc32ad53cc64ebaea882a35e115092c8bc721cb1c2a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d296640fcc7b0cff Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 151, 43, 186, 121, 117, 169, 115, 165, 70, 135, 20, 135, 54, 71, 213, 44, 246, 221, 28, 168, 248, 108, 91, 151, 49, 97, 180, 83, 118, 21, 31, 44, 115, 78, 167, 16, 97, 198, 93, 7, 93, 63, 67, 149, 145, 226, 233, 93, 157, 5, 109, 104, 109, 76, 86, 140, 200, 151, 230, 142, 254, 211, 225, 182, 65, 25, 190, 180, 226, 113, 56, 213, 40, 11, 172, 40, 179, 80, 226, 130, 184, 91, 52, 177, 43, 19, 148, 174, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4f374ee91a4b1f25a7a241fa7c921d9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8295842688531448855, key: EventKey( [ 33, 47, 236, 46, 176, 47, 243, 63, 200, 228, 101, 133, 6, 81, 218, 85, 219, 135, 133, 96, 237, 126, 149, 244, ], ), }, sent_events: EventHandle { count: 6341527672467641657, key: EventKey( [ 23, 226, 250, 144, 186, 250, 64, 54, 133, 144, 125, 195, 42, 213, 60, 198, 78, 186, 234, 136, 42, 53, 225, 21, ], ), }, sequence_number: 3034523594883017737, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9bd9220a49a0372ef09b29a32315ad6cb31b8d5b3318738bb7aafb3c49707bdb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab015e76b12ead0bb8102bb4ce62f3b528b1290b274de6acf915495b3dfa3413229120db96d0b5ce680e1c189d72ccd256d92e1044fe4d28570e1ffaa41b8e0eaae95c8b6eda6d48dd75914342bc9c118abf32498a38a8e3c76f96130e7c69c3e1000072e61d158963443a1888fe3ef994d778a1767ab64d0e845ccfb9caf30137a1c177537845d5a385650d18a2aa8330d6d90fbd76b6cf0f6a8c80b8095897e7ada0d0628f7b6375a960f9402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708832245ee080fd47e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 177, 46, 173, 11, 184, 16, 43, 180, 206, 98, 243, 181, 40, 177, 41, 11, 39, 77, 230, 172, 249, 21, 73, 91, 61, 250, 52, 19, 34, 145, 32, 219, 150, 208, 181, 206, 104, 14, 28, 24, 157, 114, 204, 210, 86, 217, 46, 16, 68, 254, 77, 40, 87, 14, 31, 250, 164, 27, 142, 14, 170, 233, 92, 139, 110, 218, 109, 72, 221, 117, 145, 67, 66, 188, 156, 17, 138, 191, 50, 73, 138, 56, 168, 227, 199, 111, 150, 19, 14, 124, 105, 195, 225, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4198590193032095346, key: EventKey( [ 136, 254, 62, 249, 148, 215, 120, 161, 118, 122, 182, 77, 14, 132, 92, 207, 185, 202, 243, 1, 55, 161, 193, 119, ], ), }, sent_events: EventHandle { count: 965324633845102675, key: EventKey( [ 162, 170, 131, 48, 214, 217, 15, 189, 118, 182, 207, 15, 106, 140, 128, 184, 9, 88, 151, 231, 173, 160, 208, 98, ], ), }, sequence_number: 4681879568563534735, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9c483766a86de09bcab53cd75337dc24886e27b4e07b411f1f41261364dbd18e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32f66cf30320d7f46a755f1491dbc85b9fe75eaaba7290fa1c68eb62e4d59ca7598b43680c44a594660dcc47d35a4fb935b7750000fc0b6ec4838724261844a89097d8e5412238daed0d0d669b79c1475f8b210977c78a69f8919ae73a4b18f3a2dcfffd2e3974fd4465facea47a6d1afa544c81d6953ec7c3b9dac2e70ea42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70820d6ab1f26d671b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 246, 108, 243, 3, 32, 215, 244, 106, 117, 95, 20, 145, 219, 200, 91, 159, 231, 94, 170, 186, 114, 144, 250, 28, 104, 235, 98, 228, 213, 156, 167, 89, 139, 67, 104, 12, 68, 165, 148, 102, 13, 204, 71, 211, 90, 79, 185, 53, 183, 117, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2748470672608857084, key: EventKey( [ 68, 168, 144, 151, 216, 229, 65, 34, 56, 218, 237, 13, 13, 102, 155, 121, 193, 71, 95, 139, 33, 9, 119, 199, ], ), }, sent_events: EventHandle { count: 5420899752553769354, key: EventKey( [ 243, 162, 220, 255, 253, 46, 57, 116, 253, 68, 101, 250, 206, 164, 122, 109, 26, 250, 84, 76, 129, 214, 149, 62, ], ), }, sequence_number: 11821640895973409735, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ca85e4b3d25cf4dc159dbd1a73a383d33f53e675c061b4a2531d710ab0457ce): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671af4db093a3bcd6bfc3a7c021fa76693d00eaabd707d19163c8551000094bc232b9244257e18aec3bcb8dff814338d2f1649dd58b817c94e5fffd4741b07a6f77e7769fcb10118a9154f207ca41c1494daa0418aa97770f97ccce91e0dab6cf5e1128738d81c9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822c0f7a5123fd7a6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 219, 9, 58, 59, 205, 107, 252, 58, 124, 2, 31, 167, 102, 147, 208, 14, 170, 189, 112, 125, 25, 22, 60, 133, 81, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9089746817496890516, key: EventKey( [ 174, 195, 188, 184, 223, 248, 20, 51, 141, 47, 22, 73, 221, 88, 184, 23, 201, 78, 95, 255, 212, 116, 27, 7, ], ), }, sent_events: EventHandle { count: 122156194822289318, key: EventKey( [ 169, 21, 79, 32, 124, 164, 28, 20, 148, 218, 160, 65, 138, 169, 119, 112, 249, 124, 204, 233, 30, 13, 171, 108, ], ), }, sequence_number: 11321161300598514165, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9d8d240f7fadc9bc697371b487bd3794458c512261f691d733590e3df5626f72): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01615a78e7cd14e33923ac5ec794aad2a5e6f4bd58bf6251bf42101a5c844dcdac3800d7bf20b91fb74d9d5de809b2b417273e954a10e6b977d24cf0d5d11f98fe942a5c0b235835bc9e05b1268abb1d8413ef49aa998ff2c4ccfa8b2f17dd0bded88701da885418ebf04a686b3e9e8ea10bb48401984f455cd7b87cc53d8f666180a7a58c66f16bcb18df725018d2e9ccac7d0ec9150b16872301c502ce4b7e608efbf7b3a35ae17bfb3bd9140a18a2814e24441ba86ad6c487d94c4cfe644e37658f2ae58db4983e55463fd3756d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708391d680b38f875e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 120, 231, 205, 20, 227, 57, 35, 172, 94, 199, 148, 170, 210, 165, 230, 244, 189, 88, 191, 98, 81, 191, 66, 16, 26, 92, 132, 77, 205, 172, 56, 0, 215, 191, 32, 185, 31, 183, 77, 157, 93, 232, 9, 178, 180, 23, 39, 62, 149, 74, 16, 230, 185, 119, 210, 76, 240, 213, 209, 31, 152, 254, 148, 42, 92, 11, 35, 88, 53, 188, 158, 5, 177, 38, 138, 187, 29, 132, 19, 239, 73, 170, 153, 143, 242, 196, 204, 250, 139, 47, 23, 221, 11, 222, 216, 135, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: da885418ebf04a686b3e9e8ea10bb484, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 984f455cd7b87cc53d8f666180a7a58c, }, ), received_events: EventHandle { count: 5796940967964307814, key: EventKey( [ 210, 233, 204, 172, 125, 14, 201, 21, 11, 22, 135, 35, 1, 197, 2, 206, 75, 126, 96, 142, 251, 247, 179, 163, ], ), }, sent_events: EventHandle { count: 726444291558990170, key: EventKey( [ 162, 129, 78, 36, 68, 27, 168, 106, 214, 196, 135, 217, 76, 76, 254, 100, 78, 55, 101, 143, 42, 229, 141, 180, ], ), }, sequence_number: 7887442591125683864, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9e5b653346fce241acf382dd33d9066f84144990d9b777b8e347d4483a935117): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e012b019a09fb65ffd0d1ad6bf2a12c4a8ab66a011e429647fc5a1097310a39e16dc917cee9da521aa520e51818f55afbb1d704e4454ecb80d01638f4a1c158c2b1db60d1707258bc3d8ee4d92c1856db9aaa8b936fb3d9760485cc2dc0e0067cb20b868dc2cacf0f50eb0f5116a82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbe7f1400c655b7d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9a09fb65ffd0d1ad6bf2a12c4a8ab66a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e429647fc5a1097310a39e16dc917ce, }, ), received_events: EventHandle { count: 1793875920060340969, key: EventKey( [ 245, 90, 251, 177, 215, 4, 228, 69, 78, 203, 128, 208, 22, 56, 244, 161, 193, 88, 194, 177, 219, 96, 209, 112, ], ), }, sent_events: EventHandle { count: 3231865507187284082, key: EventKey( [ 86, 219, 154, 170, 139, 147, 111, 179, 217, 118, 4, 133, 204, 45, 192, 224, 6, 124, 178, 11, 134, 141, 194, 202, ], ), }, sequence_number: 12111957376673779663, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ed30dd1c607de591e96dc550b72b080a6238e4add6374fd05aed97b3a0d9058): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9015c09deceaa609712851b97224f0b451819c1d187c112cd4b8dfaa760a2d02e3abc506e03514c603d9d9eb4f04697bc485681c9e32aba1731241280f6901a1176c1dfe85d73fa56597c316e14ff220137ee7d0ed8fa9bade2ea306cda1c0000b57367dd1833705318760553ec0dc761e4f7f2c1c2fb6c8f0bca00be929061ca75492d110d89ecac06184639df0769966bd2068359bf4209c0985b9a201d4fbad8097d2db89ee20812842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dfd2142fd859224e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 222, 206, 170, 96, 151, 18, 133, 27, 151, 34, 79, 11, 69, 24, 25, 193, 209, 135, 193, 18, 205, 75, 141, 250, 167, 96, 162, 208, 46, 58, 188, 80, 110, 3, 81, 76, 96, 61, 157, 158, 180, 240, 70, 151, 188, 72, 86, 129, 201, 227, 42, 186, 23, 49, 36, 18, 128, 246, 144, 26, 17, 118, 193, 223, 232, 93, 115, 250, 86, 89, 124, 49, 110, 20, 255, 34, 1, 55, 238, 125, 14, 216, 250, 155, 173, 226, 234, 48, 108, 218, 28, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6012361684426388405, key: EventKey( [ 118, 5, 83, 236, 13, 199, 97, 228, 247, 242, 193, 194, 251, 108, 143, 11, 202, 0, 190, 146, 144, 97, 202, 117, ], ), }, sent_events: EventHandle { count: 481019333595704649, key: EventKey( [ 70, 57, 223, 7, 105, 150, 107, 210, 6, 131, 89, 191, 66, 9, 192, 152, 91, 154, 32, 29, 79, 186, 216, 9, ], ), }, sequence_number: 9516678732005780861, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a077e33f13f8d551845ca0cc993f20e2c2a8f8922e8d1c566a4925df07ba9838): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96003978f9f0129fa9e6d8252fa49669eee3e7b9344a20048d776564cfc9120182a7d2be0603d7eb838845190852c7a7463654cfbae8fee1778c0187a7e16982218077f38cfd681a2e2eedc2a34726af0ee5a65b210a40da0324be9432ddfe4c9172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae90840ca87f586c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 143, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 29fa9e6d8252fa49669eee3e7b9344a2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2346934285635082056, key: EventKey( [ 42, 125, 43, 224, 96, 61, 126, 184, 56, 132, 81, 144, 133, 44, 122, 116, 99, 101, 76, 251, 174, 143, 238, 23, ], ), }, sent_events: EventHandle { count: 2492767126219702392, key: EventKey( [ 7, 127, 56, 207, 214, 129, 162, 226, 238, 220, 42, 52, 114, 106, 240, 238, 90, 101, 178, 16, 164, 13, 160, 50, ], ), }, sequence_number: 1714152780379449675, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a085c05eba6129f8539b82d125c28e901e90419f4285d2eae65cd570f5e29714): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a601494068fd343184891f92f37dbd6746aeda3354f5fb6730e7515f9eb5ce06fa09da3ae38b8722ce840aab3f1977f0a1f86605a8bfda05bae5f2c0ec9df943b59ff0d79cf833dd21cfe0da0001fe9ed5387ba85ac3b86567c31f6e19bf7f0cbab24f1a580c187da5cadf897ce8b24ed7b12b8fa79f576dd18be1cfa95493355c87373a3ac63f18ff57553f184ddfe6128ca9e3c48c788e87a39d3c14385a28e6c093839be4df712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082284bcde4dc0c330 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 104, 253, 52, 49, 132, 137, 31, 146, 243, 125, 189, 103, 70, 174, 218, 51, 84, 245, 251, 103, 48, 231, 81, 95, 158, 181, 206, 6, 250, 9, 218, 58, 227, 139, 135, 34, 206, 132, 10, 171, 63, 25, 119, 240, 161, 248, 102, 5, 168, 191, 218, 5, 186, 229, 242, 192, 236, 157, 249, 67, 181, 159, 240, 215, 156, 248, 51, 221, 33, 207, 224, 218, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fe9ed5387ba85ac3b86567c31f6e19bf, }, ), received_events: EventHandle { count: 889489856008948863, key: EventKey( [ 125, 165, 202, 223, 137, 124, 232, 178, 78, 215, 177, 43, 143, 167, 159, 87, 109, 209, 139, 225, 207, 169, 84, 147, ], ), }, sent_events: EventHandle { count: 4595424491492301877, key: EventKey( [ 255, 87, 85, 63, 24, 77, 223, 230, 18, 140, 169, 227, 196, 140, 120, 142, 135, 163, 157, 60, 20, 56, 90, 40, ], ), }, sequence_number: 8205528402670895334, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a0ee13320fdbee93c5dcc40e427f485a23d2e41363f246732bcf6a1f74fb0b8a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a011dfbec37278afb96b51a968ee00dc81dd2d46d741bf6fd62181d6d673f9401b244630477a57326a35d1b3d1c260fb00174da3913e60950d1ad409afcbde52f51370aa83d7918b70b1851e039f250bd5948c306b38134d177406d70a3438aaf74fa1a992d4d0e5ffe7b18ccf2bb744e647260373a22b7daba7f9c0cc3929ef8e1eb86f86d4c9a42f5bfe92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089a2276ff3c831cb9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 236, 55, 39, 138, 251, 150, 181, 26, 150, 142, 224, 13, 200, 29, 210, 212, 109, 116, 27, 246, 253, 98, 24, 29, 109, 103, 63, 148, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b244630477a57326a35d1b3d1c260fb0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 74da3913e60950d1ad409afcbde52f51, }, ), received_events: EventHandle { count: 844170364159789623, key: EventKey( [ 81, 224, 57, 242, 80, 189, 89, 72, 195, 6, 179, 129, 52, 209, 119, 64, 109, 112, 163, 67, 138, 175, 116, 250, ], ), }, sent_events: EventHandle { count: 8934683225778657562, key: EventKey( [ 204, 242, 187, 116, 78, 100, 114, 96, 55, 58, 34, 183, 218, 186, 127, 156, 12, 195, 146, 158, 248, 225, 235, 134, ], ), }, sequence_number: 16843450797794291192, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a0f8e7ad783241423a8cd4c7e631d39a172ae7928015f34a1e3357acb296487b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dcbe566161f429274a54f4bf7ca568b27f40f7138574912b5d4f44d8a81475597dfab64a828fe0936490b7a6e55e0adba63ff460f7462eab1987401a6420001b534b057afe1def9930811e49a91f83d0e337d184a1abd24189bbb39561009aed7ffa6aaed596d85949c48bd6f3909bfd52efe243e808b7f691897a406b3626b61a415695aff6803f17cad2c5cd4c3a511993e1a4e26795e8c662101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cc21e6e10f72302 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 229, 102, 22, 31, 66, 146, 116, 165, 79, 75, 247, 202, 86, 139, 39, 244, 15, 113, 56, 87, 73, 18, 181, 212, 244, 77, 138, 129, 71, 85, 151, 223, 171, 100, 168, 40, 254, 9, 54, 73, 11, 122, 110, 85, 224, 173, 186, 99, 255, 70, 15, 116, 98, 234, 177, 152, 116, 1, 166, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b534b057afe1def9930811e49a91f83d, }, ), received_events: EventHandle { count: 2647301061504480014, key: EventKey( [ 155, 187, 57, 86, 16, 9, 174, 215, 255, 166, 170, 237, 89, 109, 133, 148, 156, 72, 189, 111, 57, 9, 191, 213, ], ), }, sent_events: EventHandle { count: 7601948078939373102, key: EventKey( [ 151, 164, 6, 179, 98, 107, 97, 164, 21, 105, 90, 255, 104, 3, 241, 124, 173, 44, 92, 212, 195, 165, 17, 153, ], ), }, sequence_number: 7389384963034847806, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a12ee966cfc06c0060e8a1b6db67681b18d96ccbcd7f9715781e0cc9161c8ae8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c985013840d0e65203a8a96e249a2b92ffa7b5fbc358473b02afc760cca7f592caf9764d74baf375fbe9e22d5db065e3fc45f0d0df2effa04ecf8303000020f60bc0a22ce52f1825cb75a2327df62a3f6d9449bafa87650f5aca367a43f8e206b9d0240be6d60e1827fd2b73ffeb7680b33cb0e3aa0f97f3b6a351ee87a01a1a9fbcafe90a34616d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1ea21f46c77c1f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 208, 230, 82, 3, 168, 169, 110, 36, 154, 43, 146, 255, 167, 181, 251, 195, 88, 71, 59, 2, 175, 199, 96, 204, 167, 245, 146, 202, 249, 118, 77, 116, 186, 243, 117, 251, 233, 226, 45, 93, 176, 101, 227, 252, 69, 240, 208, 223, 46, 255, 160, 78, 207, 131, 3, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3451213766967686688, key: EventKey( [ 37, 203, 117, 162, 50, 125, 246, 42, 63, 109, 148, 73, 186, 250, 135, 101, 15, 90, 202, 54, 122, 67, 248, 226, ], ), }, sent_events: EventHandle { count: 1069294897083758854, key: EventKey( [ 39, 253, 43, 115, 255, 235, 118, 128, 179, 60, 176, 227, 170, 15, 151, 243, 182, 163, 81, 238, 135, 160, 26, 26, ], ), }, sequence_number: 7881638044350004383, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a13ab3c531c258ec325150bea2ecf43998a5f29a20cdac4e3a40394cb70d217f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9772a87a336f7830afc3d50c5cfc526f7ff508d008fbd1ce1776e63e598ac7b702e474fbdf445aeba84d268ea0000887c2480e690e37318340ae623a71dcaba1c8a685b12dbf6e021aa0bb357ea4ba1817c7772fc17861e18bd8af6ab5c1178b5308504e2a0f89ac8d5bf13c175d1dc1a4f74b9b8c96e73972101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a84a211f5db23058 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 163, 54, 247, 131, 10, 252, 61, 80, 197, 207, 197, 38, 247, 255, 80, 141, 0, 143, 189, 28, 225, 119, 110, 99, 229, 152, 172, 123, 112, 46, 71, 79, 189, 244, 69, 174, 186, 132, 210, 104, 234, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8350677453741784200, key: EventKey( [ 52, 10, 230, 35, 167, 29, 202, 186, 28, 138, 104, 91, 18, 219, 246, 224, 33, 170, 11, 179, 87, 234, 75, 161, ], ), }, sent_events: EventHandle { count: 2199471841036696705, key: EventKey( [ 189, 138, 246, 171, 92, 17, 120, 181, 48, 133, 4, 226, 160, 248, 154, 200, 213, 191, 19, 193, 117, 209, 220, 26, ], ), }, sequence_number: 10913188134715487311, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a14275a1176510cf8d9d4ba926cb6d4bf1559c053f5101440e15c448e25a1d95): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bc47c18a4b9db4eed99ca3021f704f4fbf6daeb7bda14689ec292fb971498e99de0eaa0656b5cd30382ecf0aa4b4c9d569b5db2083c6e478b88c95bd44b7d6a18cd6f659c11adcef6c1dd58f22596b05f043df77ef6e1b4fa99e0d100010a658ab988271a0d1c22b22d04efb3c049a961c49c593e5118ea37a5a72ad7dabe9095f77a430dded61fcda2662e8ac64fe0cec21ffc2cfc4518831fc5f0b1ce922c49d870283e4c3b372b8503b7ff7df522cca82eacdff830892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a1f58fa60db94c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 124, 24, 164, 185, 219, 78, 237, 153, 202, 48, 33, 247, 4, 244, 251, 246, 218, 235, 123, 218, 20, 104, 158, 194, 146, 251, 151, 20, 152, 233, 157, 224, 234, 160, 101, 107, 92, 211, 3, 130, 236, 240, 170, 75, 76, 157, 86, 155, 93, 178, 8, 60, 110, 71, 139, 136, 201, 91, 212, 75, 125, 106, 24, 205, 111, 101, 156, 17, 173, 206, 246, 193, 221, 88, 242, 37, 150, 176, 95, 4, 61, 247, 126, 246, 225, 180, 250, 153, 224, 209, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0a658ab988271a0d1c22b22d04efb3c0, }, ), received_events: EventHandle { count: 5854215095472728393, key: EventKey( [ 234, 55, 165, 167, 42, 215, 218, 190, 144, 149, 247, 122, 67, 13, 222, 214, 31, 205, 162, 102, 46, 138, 198, 79, ], ), }, sent_events: EventHandle { count: 5042955144124354272, key: EventKey( [ 131, 31, 197, 240, 177, 206, 146, 44, 73, 216, 112, 40, 62, 76, 59, 55, 43, 133, 3, 183, 255, 125, 245, 34, ], ), }, sequence_number: 9885674821628373196, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a190b22f5a8d7220ec386e2595c9670604a42210cc87ca08e2ba399ac258fe58): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781be92180bed2d1d2f5018e236603569f9b4a6c50b706e6e30083d68d01752ff65c61e60d5b6d07b80e0c5e756a0006e57cbce857b85218716363fa6d7991f1b48bdac92028c24af85582d1a6c1319f4895c31a6cf3346418af62ab8ee84ad7d92ccbb0fa53c0611df7223b9b2768828d06057717b1a83d842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085f25808a93346fce Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 33, 128, 190, 210, 209, 210, 245, 1, 142, 35, 102, 3, 86, 159, 155, 74, 108, 80, 183, 6, 230, 227, 0, 131, 214, 141, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 752ff65c61e60d5b6d07b80e0c5e756a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5960610763931182342, key: EventKey( [ 113, 99, 99, 250, 109, 121, 145, 241, 180, 139, 218, 201, 32, 40, 194, 74, 248, 85, 130, 209, 166, 193, 49, 159, ], ), }, sent_events: EventHandle { count: 7220663748212790600, key: EventKey( [ 175, 98, 171, 142, 232, 74, 215, 217, 44, 203, 176, 250, 83, 192, 97, 29, 247, 34, 59, 155, 39, 104, 130, 141, ], ), }, sequence_number: 9528957865142191366, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a1b3a0a64c412e50805fe2a5022b4b8977446005333f97cca05089de4b49e435): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012df241faad8c64ff438a587dcb823c713118a657cc7805b7af25d7be93a5cc37a70a0a8faad8d1d7d708af4af96f018cf5d11d070985a88d0140cdc060d9a000b3d2cd5c48a3ba4118304d8da4956dbc1469cac31161b5c330cfa767a05a80c456e5816d5a8e49650c18dc5f5b2e3e0da0913079d1f25f7de05e89d87e43ae1fef179bd1eb8b3421ceb52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b96f5cc10a510723 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 65, 250, 173, 140, 100, 255, 67, 138, 88, 125, 203, 130, 60, 113, 49, 24, 166, 87, 204, 120, 5, 183, 175, 37, 215, 190, 147, 165, 204, 55, 167, 10, 10, 143, 170, 216, 209, 215, 215, 8, 175, 74, 249, 111, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8cf5d11d070985a88d0140cdc060d9a0, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4736277489323463347, key: EventKey( [ 48, 77, 141, 164, 149, 109, 188, 20, 105, 202, 195, 17, 97, 181, 195, 48, 207, 167, 103, 160, 90, 128, 196, 86, ], ), }, sent_events: EventHandle { count: 893200976854221285, key: EventKey( [ 220, 95, 91, 46, 62, 13, 160, 145, 48, 121, 209, 242, 95, 125, 224, 94, 137, 216, 126, 67, 174, 31, 239, 23, ], ), }, sequence_number: 13100444875636855195, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a27b9548718475b7a1cc4258affb3119404c50ca0f7daa2cb6714e0226b66101): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014addb5bcef8cbdf29a94d08e23d6a3bde5d876fc3f7a545e22eaec36362f57b37691267342ae9270fbbe556528c558de037d9d9b6610a94999b72f6392387e8c83da6654db5852fe6e51100000828737633288001b18f92aa95d6b8ad3d7b84eecec14f5b9f93d33df968747d0552c93fb358820cc2518eeb43082785be88f72ae5ed57952768bd81a09e2b25c83a367907faceeff129e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708045c7d7a6211291a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 181, 188, 239, 140, 189, 242, 154, 148, 208, 142, 35, 214, 163, 189, 229, 216, 118, 252, 63, 122, 84, 94, 34, 234, 236, 54, 54, 47, 87, 179, 118, 145, 38, 115, 66, 174, 146, 112, 251, 190, 85, 101, 40, 197, 88, 222, 3, 125, 157, 155, 102, 16, 169, 73, 153, 183, 47, 99, 146, 56, 126, 140, 131, 218, 102, 84, 219, 88, 82, 254, 110, 81, 16, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1945704789018380162, key: EventKey( [ 249, 42, 169, 93, 107, 138, 211, 215, 184, 78, 236, 236, 20, 245, 185, 249, 61, 51, 223, 150, 135, 71, 208, 85, ], ), }, sent_events: EventHandle { count: 2723587644045628204, key: EventKey( [ 238, 180, 48, 130, 120, 91, 232, 143, 114, 174, 94, 213, 121, 82, 118, 139, 216, 26, 9, 226, 178, 92, 131, 163, ], ), }, sequence_number: 11390447808134746215, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a304d3cf01dfb175f4f0b960de475703f698938627fffaa8c5b6c92a89f6f1d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f222ad1fe4f9c905c14ef87605a1eed4ad718d358ca0d8f845a26902b11c23f670dba2d000193b77fd09d1af7d19be7c3218ab144f8222d589ed9af697018ada16a6436392525b54764f5ae5f1d03118cc4d8ba54fe9dc0c994d670dd19181829ee9a78dd9cf5a30d1c0f37e15cae6568c6267a5180b3cd82e29abf23d92b082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7e05ab3645d32e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 42, 209, 254, 79, 156, 144, 92, 20, 239, 135, 96, 90, 30, 237, 74, 215, 24, 211, 88, 202, 13, 143, 132, 90, 38, 144, 43, 17, 194, 63, 103, 13, 186, 45, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 93b77fd09d1af7d19be7c3218ab144f8, }, ), received_events: EventHandle { count: 8100198754001890594, key: EventKey( [ 173, 161, 106, 100, 54, 57, 37, 37, 181, 71, 100, 245, 174, 95, 29, 3, 17, 140, 196, 216, 186, 84, 254, 157, ], ), }, sent_events: EventHandle { count: 1736662608034187712, key: EventKey( [ 41, 238, 154, 120, 221, 156, 245, 163, 13, 28, 15, 55, 225, 92, 174, 101, 104, 198, 38, 122, 81, 128, 179, 205, ], ), }, sequence_number: 588802923863663234, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3a573bf8451bb1ad411810848f09ccdb053e921dfad82d15120530c689d9d9d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800133c095b813223c3d2645d3a7418927ef62e06849715640e70fba8d62288271db3a88b71e32faf3692b5466a34b772deeecc777130000564dd379793ccb1718e90b1d7bf3c6b9b9ea7d5e9bacd76e45024d640737d768e599c6453232f8cc1918ff5a4dfddd670a6b89e8be3858bc4c10480fc618107fb51ed9921543f3228e6f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089ee6cdd3022df869 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 149, 184, 19, 34, 60, 61, 38, 69, 211, 167, 65, 137, 39, 239, 98, 224, 104, 73, 113, 86, 64, 231, 15, 186, 141, 98, 40, 130, 113, 219, 58, 136, 183, 30, 50, 250, 243, 105, 43, 84, 102, 163, 75, 119, 45, 238, 236, 199, 119, 19, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1714530575577206102, key: EventKey( [ 233, 11, 29, 123, 243, 198, 185, 185, 234, 125, 94, 155, 172, 215, 110, 69, 2, 77, 100, 7, 55, 215, 104, 229, ], ), }, sent_events: EventHandle { count: 1859133640672659097, key: EventKey( [ 255, 90, 77, 253, 221, 103, 10, 107, 137, 232, 190, 56, 88, 188, 76, 16, 72, 15, 198, 24, 16, 127, 181, 30, ], ), }, sequence_number: 8038400813100798681, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3c6d1f162c75af7fda8a27c2c1df1953d5ae332cc27635c9a928391ccd81bea): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01308241eae677bc531b80b596ad8d7650e781a668ec4458d0363685f881b6966c65be1de685ee0ff3449abb965f8bfa6f770001dcbc3830176d12072889b93c1382ccc0ba4b238e448139381800d3f4f6d0e2c0c99f257b5d2c54fe80bfff4badb77e56ac1ebd9f260e1c53471853e34cbb4c2ca8bb5b5d30c767e33b6bb9f37950bb7f3ca6b84f26a13de92dfe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8ca9a3fc1ad8bb8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 65, 234, 230, 119, 188, 83, 27, 128, 181, 150, 173, 141, 118, 80, 231, 129, 166, 104, 236, 68, 88, 208, 54, 54, 133, 248, 129, 182, 150, 108, 101, 190, 29, 230, 133, 238, 15, 243, 68, 154, 187, 150, 95, 139, 250, 111, 119, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: dcbc3830176d12072889b93c1382ccc0, }, ), received_events: EventHandle { count: 4051411471238908858, key: EventKey( [ 0, 211, 244, 246, 208, 226, 192, 201, 159, 37, 123, 93, 44, 84, 254, 128, 191, 255, 75, 173, 183, 126, 86, 172, ], ), }, sent_events: EventHandle { count: 5139482446862990622, key: EventKey( [ 83, 227, 76, 187, 76, 44, 168, 187, 91, 93, 48, 199, 103, 227, 59, 107, 185, 243, 121, 80, 187, 127, 60, 166, ], ), }, sequence_number: 18315551710491594680, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3e3a48f9c73aaf56bc185cfe6ccb0fad14631e304891b328aa1faf379e16e3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e8df025a42cca7c1ed83e9235596002c01be2ce03b87f8153f19fd175da041b0699d4f614a925b1964b40813e0a67d609156c0f1f36185c929c1b2c57e32f2aacaf73eb5e408e621c281bc04e5161556a1b2f5d6a231f282f424cfbbf8c4f016d002f4058a012beef6f566b9310a18e00f10c9005cf8f747a18712ed6d7e5c51935a2561bd5d05aaadd596d91c47b55f80b225e063680b29025189e7d0cf5dab4a07ee84e6f1c6b85715fd2e05b41a79aef5900773595784c7b462101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084dd989b1230655b6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 240, 37, 164, 44, 202, 124, 30, 216, 62, 146, 53, 89, 96, 2, 192, 27, 226, 206, 3, 184, 127, 129, 83, 241, 159, 209, 117, 218, 4, 27, 6, 153, 212, 246, 20, 169, 37, 177, 150, 75, 64, 129, 62, 10, 103, 214, 9, 21, 108, 15, 31, 54, 24, 92, 146, 156, 27, 44, 87, 227, 47, 42, 172, 175, 115, 235, 94, 64, 142, 98, 28, 40, 27, 192, 78, 81, 97, 85, 106, 27, 47, 93, 106, 35, 31, 40, 47, 66, 76, 251, 191, 140, 79, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d002f4058a012beef6f566b9310a18e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8823835689239973105, key: EventKey( [ 113, 46, 214, 215, 229, 197, 25, 53, 162, 86, 27, 213, 208, 90, 170, 221, 89, 109, 145, 196, 123, 85, 248, 11, ], ), }, sent_events: EventHandle { count: 2706859639781613090, key: EventKey( [ 158, 125, 12, 245, 218, 180, 160, 126, 232, 78, 111, 28, 107, 133, 113, 95, 210, 224, 91, 65, 167, 154, 239, 89, ], ), }, sequence_number: 5078737085573461760, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a4eebd1394e5504f3f34e88d3759e8d365c8fcaad540efb54db5bb0277ac58e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791cf97a488f484e6d692fa25bc98d43564ada6ecd14d0cdb865a8e13dda01c52a7d09c3f4dfa728eabe0b7411fa2d003a18b68f18e79e5c18abf6a3725e3020bfbbbb8520ae08f46f7cae5f668532a5a4401677c9e644693d18b39b129ae36f4e26b2a24afee4aabb686c0dd5e073d2ee91f499cac44597c7882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d455a7c4e8bb2ddb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 249, 122, 72, 143, 72, 78, 109, 105, 47, 162, 91, 201, 141, 67, 86, 74, 218, 110, 205, 20, 208, 205, 184, 101, 168, 225, 61, 218, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c52a7d09c3f4dfa728eabe0b7411fa2d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6674025790485960762, key: EventKey( [ 171, 246, 163, 114, 94, 48, 32, 191, 187, 187, 133, 32, 174, 8, 244, 111, 124, 174, 95, 102, 133, 50, 165, 164, ], ), }, sent_events: EventHandle { count: 4425143866881414720, key: EventKey( [ 179, 155, 18, 154, 227, 111, 78, 38, 178, 162, 74, 254, 228, 170, 187, 104, 108, 13, 213, 224, 115, 210, 238, 145, ], ), }, sequence_number: 9856012635433769460, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a57b7afabbc8e570a4d6754a6a35e2df65a9cc6ecb9d90b8b702973e3e1f97d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e1105db01357d78a36b37c524403b2ddb5fc501cb1bacca81f3100c739a5e9f2b1bd27b001f76819896625232180a74ac969187fd8bd34322250c46e35feb90898807b72ce89f5adb7848a8353918f816e0cc692320d09669ca06abdeabe34a48d3a8255179c02aeddb2a582d454b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089c980f7016faebe0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 219, 1, 53, 125, 120, 163, 107, 55, 197, 36, 64, 59, 45, 219, 95, 197, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cb1bacca81f3100c739a5e9f2b1bd27b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3626069048929908255, key: EventKey( [ 10, 116, 172, 150, 145, 135, 253, 139, 211, 67, 34, 37, 12, 70, 227, 95, 235, 144, 137, 136, 7, 183, 44, 232, ], ), }, sent_events: EventHandle { count: 4122386063146310303, key: EventKey( [ 248, 22, 224, 204, 105, 35, 32, 208, 150, 105, 202, 6, 171, 222, 171, 227, 74, 72, 211, 168, 37, 81, 121, 192, ], ), }, sequence_number: 5423791182937058602, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5a42d6003cdd774f99f8374a2e0b6838eb05482d1ea4bde3c4d96ead94ada9e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c980012365dfcfff8d121dc91ccecac6b33c724f4b118b36b2a1b73f627e97a46ef39576867e5001c45fed2dca91130e5e362c33f43b59cb00f09851a52604705d181a03b4e80e3832eb97712090f5a9eae3fab7154c0edc6c71ba7a6e6959ba5a6d18517e665dc201c286266b3c86f50e40aba7b1588557751e274a5579265a03ef5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70899c29e0048bc4045 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 223, 207, 255, 141, 18, 29, 201, 28, 206, 202, 198, 179, 60, 114, 79, 75, 17, 139, 54, 178, 161, 183, 63, 98, 126, 151, 164, 110, 243, 149, 118, 134, 126, 80, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c45fed2dca91130e5e362c33f43b59cb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6732886006947748080, key: EventKey( [ 26, 3, 180, 232, 14, 56, 50, 235, 151, 113, 32, 144, 245, 169, 234, 227, 250, 183, 21, 76, 14, 220, 108, 113, ], ), }, sent_events: EventHandle { count: 7879815391221807802, key: EventKey( [ 81, 126, 102, 93, 194, 1, 194, 134, 38, 107, 60, 134, 245, 14, 64, 171, 167, 177, 88, 133, 87, 117, 30, 39, ], ), }, sequence_number: 6624517262612714826, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5c7ef6a7aee4701209350fc7a32251465223d795c05a3d54cc70487d01138bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f74be47ddfec51e0cf3a20f67a1f4090001c4e7362aa0ecea3e635a22a65a3f58f9634ba5b8a880bb3518fef087d95dbb5a07f044310553d7f989c04835e1e428419b63ebfa74cce42c391881eff000151e2adb5811c6daacf567dc3806fee3d7e7aa32e70cf4cadd515f2b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708adcd07d7d3f21a55 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 190, 71, 221, 254, 197, 30, 12, 243, 162, 15, 103, 161, 244, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c4e7362aa0ecea3e635a22a65a3f58f9, }, ), received_events: EventHandle { count: 3871829766795774819, key: EventKey( [ 254, 240, 135, 217, 93, 187, 90, 7, 240, 68, 49, 5, 83, 215, 249, 137, 192, 72, 53, 225, 228, 40, 65, 155, ], ), }, sent_events: EventHandle { count: 4119919325924223843, key: EventKey( [ 129, 239, 240, 0, 21, 30, 42, 219, 88, 17, 198, 218, 172, 245, 103, 220, 56, 6, 254, 227, 215, 231, 170, 50, ], ), }, sequence_number: 3125306679453027559, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a66091beadd49d2d6d905e5f6dee30290000a93e0c20ae4410952298aabc4d42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30156d6930c1eb39fa6828b404bded0a33372bc64b4b0ef9bb9d055cd34dccea79e61fb1e1ae998f681005e37083cd59c32ed3dfb65abfbf2a3d79df9cfca4d45141275ad4cd8e0f8bdb191e86564b8f29f05b12fec0616da00017b7a137c6eaa5e8ef20d3af086a19d530e3e0e19da1a3d561803f3eb3fa96b2526804706b2d136c6ba22ea5897c7db179efad468a0052e737418cc3610ed5ea2bbc479607ca39d357a63ae0b6461c8a2c604eb6e9bf51e64359f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea2ee0460d46ce0e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 214, 147, 12, 30, 179, 159, 166, 130, 139, 64, 75, 222, 208, 163, 51, 114, 188, 100, 180, 176, 239, 155, 185, 208, 85, 205, 52, 220, 206, 167, 158, 97, 251, 30, 26, 233, 152, 246, 129, 0, 94, 55, 8, 60, 213, 156, 50, 237, 61, 251, 101, 171, 251, 242, 163, 215, 157, 249, 207, 202, 77, 69, 20, 18, 117, 173, 76, 216, 224, 248, 189, 177, 145, 232, 101, 100, 184, 242, 159, 5, 177, 47, 236, 6, 22, 218, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b7a137c6eaa5e8ef20d3af086a19d53, }, ), received_events: EventHandle { count: 6214152584866709006, key: EventKey( [ 3, 243, 235, 63, 169, 107, 37, 38, 128, 71, 6, 178, 209, 54, 198, 186, 34, 234, 88, 151, 199, 219, 23, 158, ], ), }, sent_events: EventHandle { count: 8391101132422305018, key: EventKey( [ 204, 54, 16, 237, 94, 162, 187, 196, 121, 96, 124, 163, 157, 53, 122, 99, 174, 11, 100, 97, 200, 162, 198, 4, ], ), }, sequence_number: 11472185709928607467, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a67d2e632c22cd119be86f9690ff6f630934a7282c4c9c3fff37450cfffe4fac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e21243e20312ca9aa094a4569e3459167bb773c0fd79c32715912b60d1d65af1eb53a0000672864da0d3d6d1c188b9118ce4dff9aa49bcbcf9efebb8d0a9e47de2b568b30de3c8530773fbac579188a6e4b68b25951db6c96fe787774a163d8bc50b34957a6a11a53ed4640b30dfd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae962d14b0e21b6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 62, 32, 49, 44, 169, 170, 9, 74, 69, 105, 227, 69, 145, 103, 187, 119, 60, 15, 215, 156, 50, 113, 89, 18, 182, 13, 29, 101, 175, 30, 181, 58, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2048360535231309927, key: EventKey( [ 139, 145, 24, 206, 77, 255, 154, 164, 155, 203, 207, 158, 254, 187, 141, 10, 158, 71, 222, 43, 86, 139, 48, 222, ], ), }, sent_events: EventHandle { count: 8774624230746654012, key: EventKey( [ 138, 110, 75, 104, 178, 89, 81, 219, 108, 150, 254, 120, 119, 116, 161, 99, 216, 188, 80, 179, 73, 87, 166, 161, ], ), }, sequence_number: 18234427554942243610, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a6be7115b78680cfdeb7e1d75c89f00a988bff12a7e084762b758744eb3afe66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e016001380a3284931e0ea1cb217c62aa2cd93d00a0cea62ab7c16021180156353bbe9a4713e8498eb0b02bd63da85238a3fd23a9c88babcc25461c9354182a003337dfee070a7241c8900f19aa7f6638c36c87f1de7d67791316a1767d522101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c0c51479a7eb3c0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 380a3284931e0ea1cb217c62aa2cd93d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2405135193454595744, key: EventKey( [ 1, 86, 53, 59, 190, 154, 71, 19, 232, 73, 142, 176, 176, 43, 214, 61, 168, 82, 56, 163, 253, 35, 169, 200, ], ), }, sent_events: EventHandle { count: 6094245808369871755, key: EventKey( [ 42, 0, 51, 55, 223, 238, 7, 10, 114, 65, 200, 144, 15, 25, 170, 127, 102, 56, 195, 108, 135, 241, 222, 125, ], ), }, sequence_number: 5944037517431109991, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a6d176bde4083dd5940ae66309dfff24947e4912eded17b2f33582e1cf01704b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10154e87c8b7fc29fce5c07a9ba47c32a004ea7b1432c7348cffa1440a7cddf39fa5b3e96b07415c8328ead93255ff2e8c9c158f95c1e557023bc2905bc5490df02dd4e276cd98991c1f69cb0c48a6d54fb95744bbc84000098aa45272193dc24185159872370f7d3dd309f52c215bc04fdff004bb73aeb6252fb2df941d2ef1f02182a5d9d0a811a58e139734da34e4664e7335b387ac12dae26e3a91ba8ab02d6342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084ba738f47ce2db3f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 124, 139, 127, 194, 159, 206, 92, 7, 169, 186, 71, 195, 42, 0, 78, 167, 177, 67, 44, 115, 72, 207, 250, 20, 64, 167, 205, 223, 57, 250, 91, 62, 150, 176, 116, 21, 200, 50, 142, 173, 147, 37, 95, 242, 232, 201, 193, 88, 249, 92, 30, 85, 112, 35, 188, 41, 5, 188, 84, 144, 223, 2, 221, 78, 39, 108, 217, 137, 145, 193, 246, 156, 176, 196, 138, 109, 84, 251, 149, 116, 75, 188, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2656159650843830936, key: EventKey( [ 81, 89, 135, 35, 112, 247, 211, 221, 48, 159, 82, 194, 21, 188, 4, 253, 255, 0, 75, 183, 58, 235, 98, 82, ], ), }, sent_events: EventHandle { count: 153104598682906107, key: EventKey( [ 42, 93, 157, 10, 129, 26, 88, 225, 57, 115, 77, 163, 78, 70, 100, 231, 51, 91, 56, 122, 193, 45, 174, 38, ], ), }, sequence_number: 3807233471271381475, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a75ff241b814f43f204bef56feb530f12a2647d7d4b6b092b03c0bc6f7017a77): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d6c5690d12a7e4c463e79eb98b0a8dd0aaedf0d4ae2e09f20a388093d13d8d21ad5748ed75c78639525a660fceae51e887acff80dfba0b1fa98143c1b310001c133ff4017de9e60a806740b2805c9f70d5b6036638c6732183827dada862787790758038607463b95715448f983148094a578c0891b4faa4b182488ef238cec36bdee621f7857a4d81c73ccabb8b4c0271eecf717eb09fce6562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085718be5851bf0d2f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 86, 144, 209, 42, 126, 76, 70, 62, 121, 235, 152, 176, 168, 221, 10, 174, 223, 13, 74, 226, 224, 159, 32, 163, 136, 9, 61, 19, 216, 210, 26, 213, 116, 142, 215, 92, 120, 99, 149, 37, 166, 96, 252, 234, 229, 30, 136, 122, 207, 248, 13, 251, 160, 177, 250, 152, 20, 60, 27, 49, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c133ff4017de9e60a806740b2805c9f7, }, ), received_events: EventHandle { count: 3632025982239529741, key: EventKey( [ 56, 39, 218, 218, 134, 39, 135, 121, 7, 88, 3, 134, 7, 70, 59, 149, 113, 84, 72, 249, 131, 20, 128, 148, ], ), }, sent_events: EventHandle { count: 5452257278579210405, key: EventKey( [ 36, 136, 239, 35, 140, 236, 54, 189, 238, 98, 31, 120, 87, 164, 216, 28, 115, 204, 171, 184, 180, 192, 39, 30, ], ), }, sequence_number: 6261969451434375148, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a78cb2fff23f16e2a936cf226510465f69e34c0a4b0b68a97838424e99a0a64a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910134aa7116a57286cdd95d1e0dae02938f3e2e7b62243c3a32ce9598f0b36e6e310c1e85188d74006f0b2d163b4e619f4e13dff2b2e200015dc29f0ecc941549c2cc852ffd450c0552b9f458ba8ced4b18cc25e4bfa6367ab32dfdc462442c5c14f1d9306bcbfaea41322425d96caa0a6c18045e1d3fd3af61b097b38e1f4d1a7a06638dd0c32d7cd3c2b024868d51dc012e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088ac40efb05269836 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 113, 22, 165, 114, 134, 205, 217, 93, 30, 13, 174, 2, 147, 143, 62, 46, 123, 98, 36, 60, 58, 50, 206, 149, 152, 240, 179, 110, 110, 49, 12, 30, 133, 24, 141, 116, 0, 111, 11, 45, 22, 59, 78, 97, 159, 78, 19, 223, 242, 178, 226, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5dc29f0ecc941549c2cc852ffd450c05, }, ), received_events: EventHandle { count: 5471183854309259602, key: EventKey( [ 204, 37, 228, 191, 166, 54, 122, 179, 45, 253, 196, 98, 68, 44, 92, 20, 241, 217, 48, 107, 203, 250, 234, 65, ], ), }, sent_events: EventHandle { count: 7785222290339603506, key: EventKey( [ 4, 94, 29, 63, 211, 175, 97, 176, 151, 179, 142, 31, 77, 26, 122, 6, 99, 141, 208, 195, 45, 124, 211, 194, ], ), }, sequence_number: 3315173043546236080, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a7ac4801c39a626a73d6884ea1b2ad1a6b341c17e9db785551b152eaf9d8c8b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149c48ad2da9d536626d93970fdb56a759962ba958d85324389e347403c8fb527c670f97f434315ac8a521db4ab88bdae6480158ae5af03ae273920a681f94736c46bcadd4d9f6705227e00013c8504c349a729d0a756b4749530b8dbb767dee71580037918a9e5bfc9bb5106071a90ac8404992afc528b120e9cb9c81f0afdde62ee132d3d1891aac717af44f4df9f55dd5edcd275d950e060790969e797d5d683b2bb1e52aa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f594134982b4675c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 138, 210, 218, 157, 83, 102, 38, 217, 57, 112, 253, 181, 106, 117, 153, 98, 186, 149, 141, 133, 50, 67, 137, 227, 71, 64, 60, 143, 181, 39, 198, 112, 249, 127, 67, 67, 21, 172, 138, 82, 29, 180, 171, 136, 189, 174, 100, 128, 21, 138, 229, 175, 3, 174, 39, 57, 32, 166, 129, 249, 71, 54, 196, 107, 202, 221, 77, 159, 103, 5, 34, 126, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3c8504c349a729d0a756b4749530b8db, }, ), received_events: EventHandle { count: 8719954135092193207, key: EventKey( [ 169, 229, 191, 201, 187, 81, 6, 7, 26, 144, 172, 132, 4, 153, 42, 252, 82, 139, 18, 14, 156, 185, 200, 31, ], ), }, sent_events: EventHandle { count: 4408201524847508746, key: EventKey( [ 145, 170, 199, 23, 175, 68, 244, 223, 159, 85, 221, 94, 220, 210, 117, 217, 80, 224, 96, 121, 9, 105, 231, 151, ], ), }, sequence_number: 12272905726040725205, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a7e1c3760f16bf8a371b70cd45c8e74d224afce759dc3f8a4b68d1535b9eba9c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970133b9dfe4a0e23f494ae8671bea3b5d27afbf8f201100b40cb1ab9e5baf439ec63d472fc45005fc5ceabb1dc4e3418c6f1bb14c1f3a8ad588d7bd781f923a4dee3a6bd45c34eaba4cc379a4e82b03918491dd19ffebe6e39574bca1cf1dd90f8858723a6bd58d902834b53ac8282897a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708470e44fca02cf9fa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 157, 254, 74, 14, 35, 244, 148, 174, 134, 113, 190, 163, 181, 210, 122, 251, 248, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 100b40cb1ab9e5baf439ec63d472fc45, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3769192593805460831, key: EventKey( [ 198, 241, 187, 20, 193, 243, 168, 173, 88, 141, 123, 215, 129, 249, 35, 164, 222, 227, 166, 189, 69, 195, 78, 171, ], ), }, sent_events: EventHandle { count: 4156965730169375908, key: EventKey( [ 73, 29, 209, 159, 254, 190, 110, 57, 87, 75, 202, 28, 241, 221, 144, 248, 133, 135, 35, 166, 189, 88, 217, 2, ], ), }, sequence_number: 8829732042185067395, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a8076a0b2c81b4ec5ae16dd8186623695039ce5f5da86f7c0c92e3bee214e8df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0142ccf00fe0055f5d44f33331e1ce4efe02dfbeecb14068bfbbc919be7c84a35856599e49f72f013b6eed2dbc23064b9a272bd9f58de6ab33a2ec0539738976978794dc0000a97086d0652bae2e189b7a4b674ba905c1ca9bfb021f7a6a6b3c008703c6cec89a75c49f4f7f13022d18a9846e075cc300da5632f3e9c701ec5c2b9b2756a6f7ce9d9eb18df0f5abe2d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c227cc2a32d7802a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 204, 240, 15, 224, 5, 95, 93, 68, 243, 51, 49, 225, 206, 78, 254, 2, 223, 190, 236, 177, 64, 104, 191, 187, 201, 25, 190, 124, 132, 163, 88, 86, 89, 158, 73, 247, 47, 1, 59, 110, 237, 45, 188, 35, 6, 75, 154, 39, 43, 217, 245, 141, 230, 171, 51, 162, 236, 5, 57, 115, 137, 118, 151, 135, 148, 220, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3363673687982502057, key: EventKey( [ 155, 122, 75, 103, 75, 169, 5, 193, 202, 155, 251, 2, 31, 122, 106, 107, 60, 0, 135, 3, 198, 206, 200, 154, ], ), }, sent_events: EventHandle { count: 3243176119177823349, key: EventKey( [ 169, 132, 110, 7, 92, 195, 0, 218, 86, 50, 243, 233, 199, 1, 236, 92, 43, 155, 39, 86, 166, 247, 206, 157, ], ), }, sequence_number: 15628242729720197534, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a815140dc33fc52da2727d327e6558e58685e3c04e9ca1e2cb8a48e90d0eb07e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401271d7820ed7a4e7eca5c2bab573eecba23b6317d1f32dd7559f84854e2d2f60a2875afd40d1e57c401f3ae3aee6c50e0fb199bf141a1e890ec01a03839e54e7c0062b04e91174e12c22f3b8f4d7390a6776b18752008f84be40140fca88015fed190e25d6e8aedd06f46d86f7cf97c38a1a311187105907761686f5a3f37b67478b75fc823da87f5f37181dde96102ae0f484cd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cd4452eb7ed7bc64 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 120, 32, 237, 122, 78, 126, 202, 92, 43, 171, 87, 62, 236, 186, 35, 182, 49, 125, 31, 50, 221, 117, 89, 248, 72, 84, 226, 210, 246, 10, 40, 117, 175, 212, 13, 30, 87, 196, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3ae3aee6c50e0fb199bf141a1e890ec, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a03839e54e7c0062b04e91174e12c22f, }, ), received_events: EventHandle { count: 7743841223626821435, key: EventKey( [ 117, 32, 8, 248, 75, 228, 1, 64, 252, 168, 128, 21, 254, 209, 144, 226, 93, 110, 138, 237, 208, 111, 70, 216, ], ), }, sent_events: EventHandle { count: 1271036783835577455, key: EventKey( [ 113, 5, 144, 119, 97, 104, 111, 90, 63, 55, 182, 116, 120, 183, 95, 200, 35, 218, 135, 245, 243, 113, 129, 221, ], ), }, sequence_number: 15441796454527689193, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a850dc84963d962bf5b2b830ed3e521055917108ad146f3e8c5ac37e7f8822f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770ac27aaeee128827d9f2a401773c5dcff0c4df99d0ec5885430eb4e701bd71231ff5009c99d06531763bc40338bab10197fe9e62601846ea61844d1da1bf7629648788f0d48a4bc8587c02d3f631045c2fffb0f0664018f311c806e9bb331e73139f58d97fbdbe8036674d2854ee8d9134adc520029c0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ab362fdb71b78309 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 194, 122, 174, 238, 18, 136, 39, 217, 242, 164, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 773c5dcff0c4df99d0ec5885430eb4e7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd71231ff5009c99d06531763bc40338, }, ), received_events: EventHandle { count: 6945288391651078586, key: EventKey( [ 70, 234, 97, 132, 77, 29, 161, 191, 118, 41, 100, 135, 136, 240, 212, 138, 75, 200, 88, 124, 2, 211, 246, 49, ], ), }, sent_events: EventHandle { count: 4640661109038078980, key: EventKey( [ 243, 17, 200, 6, 233, 187, 51, 30, 115, 19, 159, 88, 217, 127, 189, 190, 128, 54, 103, 77, 40, 84, 238, 141, ], ), }, sequence_number: 836545970562741393, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a951b535c5f7080ee28ee5869554136ddb024f58ff861c2c7053e8f5acbac4c2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101246d8f55db549330c3d3d5ef52b03ff9fe3b7f7103b29e5a25edd72dbc4f4088b3b66f8b4b00014beec6f2ca7d69104420207eaf6102126d52fccd5dd2c70618d0c90523e6c907a236b2308e1e4f098efa9329fb981c9aa7fc3f71472c580f1d18f5d7d8e63838faa454f2f7f2a8446bd1bed5cf2abad140f022090b7b7915e1312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708341204a33573f980 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 143, 85, 219, 84, 147, 48, 195, 211, 213, 239, 82, 176, 63, 249, 254, 59, 127, 113, 3, 178, 158, 90, 37, 237, 215, 45, 188, 79, 64, 136, 179, 182, 111, 139, 75, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4beec6f2ca7d69104420207eaf610212, }, ), received_events: EventHandle { count: 488590384922645101, key: EventKey( [ 208, 201, 5, 35, 230, 201, 7, 162, 54, 178, 48, 142, 30, 79, 9, 142, 250, 147, 41, 251, 152, 28, 154, 167, ], ), }, sent_events: EventHandle { count: 2093989298950979580, key: EventKey( [ 245, 215, 216, 230, 56, 56, 250, 164, 84, 242, 247, 242, 168, 68, 107, 209, 190, 213, 207, 42, 186, 209, 64, 240, ], ), }, sequence_number: 3594177589117913378, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a9b1459630198c60a3f919c32f337e9d651253b07eaff2aabd30ac5253fb4cef): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ecb015bddd9e4559a36d249bfd8c326c1486fa3915abbcff43b7d9681a0edd0c1f5d9ff7b34bb2a8be023dfdbf1f5171c9cb2b29de231f026f9192afc6a558bb12cf111109d85ce3248f17fc3c9f012df0265496e1a4e8f1be20e752fec5c0100d60f68eda355b7bca60a6788dff0f90072b8c2fc44d8df2018c55097790b156dd849143ae3d7176730438f7d6e620455c87843609c0de70b0e18dce25ac2fc4fd818a15d991ad522a736da31f625d580ea86cbd8034d54a19e7a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080ce5cd5d2b4da1d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 1, 91, 221, 217, 228, 85, 154, 54, 210, 73, 191, 216, 195, 38, 193, 72, 111, 163, 145, 90, 187, 207, 244, 59, 125, 150, 129, 160, 237, 208, 193, 245, 217, 255, 123, 52, 187, 42, 139, 224, 35, 223, 219, 241, 245, 23, 28, 156, 178, 178, 157, 226, 49, 240, 38, 249, 25, 42, 252, 106, 85, 139, 177, 44, 241, 17, 16, 157, 133, 206, 50, 72, 241, 127, 195, 201, 240, 18, 223, 2, 101, 73, 110, 26, 78, 143, 27, 226, 14, 117, 47, 236, 92, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00d60f68eda355b7bca60a6788dff0f9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2368849719830165618, key: EventKey( [ 197, 80, 151, 121, 11, 21, 109, 216, 73, 20, 58, 227, 215, 23, 103, 48, 67, 143, 125, 110, 98, 4, 85, 200, ], ), }, sent_events: EventHandle { count: 1012156586918953848, key: EventKey( [ 220, 226, 90, 194, 252, 79, 216, 24, 161, 93, 153, 26, 213, 34, 167, 54, 218, 49, 246, 37, 213, 128, 234, 134, ], ), }, sequence_number: 8835676902388914379, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a9f69cea7b3bf861ab1ffba94cf6f36880d7ca786d5a2d98b3e506b56eecdd20): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125d312e2f823060aae237d6dd8c9ebae1b387c2243f171229d04ee14d237a235a1d0e1b4e8a00001bc3354d032a02b2ad3a448d877a2e2e144fdb3a3fdaec33f18a815c9d5b72e768b23c4d2fb2c2d840832f9f174ae6114a3d783a35a06674e1818b490bff0a8a56dc4ba1c732c344b296e7b0d12dc7c9855ac7e8154dd85fb96052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70815b3ea9564384d77 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 18, 226, 248, 35, 6, 10, 174, 35, 125, 109, 216, 201, 235, 174, 27, 56, 124, 34, 67, 241, 113, 34, 157, 4, 238, 20, 210, 55, 162, 53, 161, 208, 225, 180, 232, 160, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bc3354d032a02b2ad3a448d877a2e2e1, }, ), received_events: EventHandle { count: 4594708449244478788, key: EventKey( [ 168, 21, 201, 213, 183, 46, 118, 139, 35, 196, 210, 251, 44, 45, 132, 8, 50, 249, 241, 116, 174, 97, 20, 163, ], ), }, sent_events: EventHandle { count: 1751450582081831895, key: EventKey( [ 180, 144, 191, 240, 168, 165, 109, 196, 186, 28, 115, 44, 52, 75, 41, 110, 123, 13, 18, 220, 124, 152, 85, 172, ], ), }, sequence_number: 402785769058763134, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aa4a16cf7bf913f4abf717fa201be8aea20c4d76527670e4755ed7342dc37549): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1da0d34b293d8f437ae25e2b9938a741a56ea158604652873f2e069319a90000b4c8f034d2759479185b6b2e76abc2fc3af9380f2b9bdabe79fb8af61d206d3499a1e72069debcce5c18a297c6a75b8d352329f774edc74bc264673911c4ae184754b1b7b363415896542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ba165a0d371f1ffd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 211, 75, 41, 61, 143, 67, 122, 226, 94, 43, 153, 56, 167, 65, 165, 110, 161, 88, 96, 70, 82, 135, 63, 46, 6, 147, 25, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8760756720834234548, key: EventKey( [ 91, 107, 46, 118, 171, 194, 252, 58, 249, 56, 15, 43, 155, 218, 190, 121, 251, 138, 246, 29, 32, 109, 52, 153, ], ), }, sent_events: EventHandle { count: 6687490160124290977, key: EventKey( [ 162, 151, 198, 167, 91, 141, 53, 35, 41, 247, 116, 237, 199, 75, 194, 100, 103, 57, 17, 196, 174, 24, 71, 84, ], ), }, sequence_number: 6095156183561385905, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab3881bc717818c1dbc200768c780bbd79249f2e09fc2a29e9c109493ca432d9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9680bd241c1fa609e140f6407f20193d29d8f72e22af0043e4abf6dd0c71800f8055e911ac7286e18718c77b9cde8b7670943154060ca7ca58da924acee86cdbfb8a6330e2b2f7c511889e23b1d703bbbcc3992773ecff7511ba19799ab96ab5161f4e9170a796bd1762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e95fd37c1a61d844 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 210, 65, 193, 250, 96, 158, 20, 15, 100, 7, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 93d29d8f72e22af0043e4abf6dd0c718, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7937813260162434552, key: EventKey( [ 113, 140, 119, 185, 205, 232, 183, 103, 9, 67, 21, 64, 96, 202, 124, 165, 141, 169, 36, 172, 238, 134, 205, 191, ], ), }, sent_events: EventHandle { count: 5871619876152649400, key: EventKey( [ 137, 226, 59, 29, 112, 59, 187, 204, 57, 146, 119, 62, 207, 247, 81, 27, 161, 151, 153, 171, 150, 171, 81, 97, ], ), }, sequence_number: 8561742534212577780, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab6201c79290fb754aacf628d7ec2aabdb0f02dbc606a6ecb2535164ee1c5d4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97508cf90a7154cce2d33016d6bb2d8f1520f7704460579141d630c01269a802b1c8db09a540f26a200f1f119dd5d14850732f842184d83d7ff122ca179a8a568b37b608f3cd4ddd95092af50f787f73c70a43a443818f84243b6ae7fcce51bc5e61da55b864f78d404767f0b350dd21e5e2a769e0aa82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869417f665009b634 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 144, 167, 21, 76, 206, 45, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d6bb2d8f1520f7704460579141d630c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 269a802b1c8db09a540f26a200f1f119, }, ), received_events: EventHandle { count: 4825662008606350813, key: EventKey( [ 77, 131, 215, 255, 18, 44, 161, 121, 168, 165, 104, 179, 123, 96, 143, 60, 212, 221, 217, 80, 146, 175, 80, 247, ], ), }, sent_events: EventHandle { count: 4054430042472380295, key: EventKey( [ 248, 66, 67, 182, 174, 127, 204, 229, 27, 197, 230, 29, 165, 91, 134, 79, 120, 212, 4, 118, 127, 11, 53, 13, ], ), }, sequence_number: 12108664778493140690, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab93b1112fe4608996a8bc8f3092f3cd21819f56586820547c5ef66ac70439a3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95b0e0b025c228def7828294697fa03010000930f9990eeb14c5a183b28f0b8eba29ac6c05bb617f216b0a31b41c6579fdab10b524fe0f1356ce17c18717637d679ba709e2999f330139fd63bf72999c6dbbcd8e885c582703b0072882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089460fa7f4707a5db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 2, 92, 34, 141, 239, 120, 40, 41, 70, 151, 250, 3, 1, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6506771199829806995, key: EventKey( [ 59, 40, 240, 184, 235, 162, 154, 198, 192, 91, 182, 23, 242, 22, 176, 163, 27, 65, 198, 87, 159, 218, 177, 11, ], ), }, sent_events: EventHandle { count: 8998592509410037586, key: EventKey( [ 113, 118, 55, 214, 121, 186, 112, 158, 41, 153, 243, 48, 19, 159, 214, 59, 247, 41, 153, 198, 219, 188, 216, 232, ], ), }, sequence_number: 9831921191793902981, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(abb55f2fbcb5bf97af217c33301fe0ced2680054b2b5536af71d234c2700d73a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a012d53f79b41da04bb63d055b11c0d55e892fcad93b146591a1ccd092d52bbcf54bb9e97de90fc8c1fd44d1ea41369015ad76658110f2d4ae44729f5339fa89c016ed564b7df74edba049afabcdf2943fdbe34755808c68c2d189a51647215adad69cf4cbfe5d11a4b983e7f9eee92422d90f81bf9fcf0abc44b18c6779fb746aa083a660e5849961079bf899f152c16fab1613f819361991619142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e5b22775905f044a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 247, 155, 65, 218, 4, 187, 99, 208, 85, 177, 28, 13, 85, 232, 146, 252, 173, 147, 177, 70, 89, 26, 28, 205, 9, 45, 82, 187, 207, 84, 187, 158, 151, 222, 144, 252, 140, 31, 212, 77, 30, 164, 19, 105, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ad76658110f2d4ae44729f5339fa89c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6ed564b7df74edba049afabcdf2943fd, }, ), received_events: EventHandle { count: 3282215967592363198, key: EventKey( [ 154, 81, 100, 114, 21, 173, 173, 105, 207, 76, 191, 229, 209, 26, 75, 152, 62, 127, 158, 238, 146, 66, 45, 144, ], ), }, sent_events: EventHandle { count: 5459677699804568568, key: EventKey( [ 198, 119, 159, 183, 70, 170, 8, 58, 102, 14, 88, 73, 150, 16, 121, 191, 137, 159, 21, 44, 22, 250, 177, 97, ], ), }, sequence_number: 1448213603199189311, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(abc7b6f6d8988ec30b4012e8630a90bfff8823d17a7e995c0cf9d43d3bbdbd38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b366a294bb5b6dd7469047e5be4fde3f0b938a2beafbb6a7840b6af2bda2d8d90fc9616ff1b0c34dda556b4bd2b0b4f621bf73397b27fc8bdb32d960001394b2686d3f7da39a31ea595d5c382179e96cc5b8107b341184e6cfc69524b12888af57dcadb1c71d84327346da0e045eb92c5b5bf05ac966418fe0cd5b90467f127ff7cba6ac52c561ddbdb743c86491b9c7d94ad9b8c4d80ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861e21991277063c6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 106, 41, 75, 181, 182, 221, 116, 105, 4, 126, 91, 228, 253, 227, 240, 185, 56, 162, 190, 175, 187, 106, 120, 64, 182, 175, 43, 218, 45, 141, 144, 252, 150, 22, 255, 27, 12, 52, 221, 165, 86, 180, 189, 43, 11, 79, 98, 27, 247, 51, 151, 178, 127, 200, 189, 179, 45, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 394b2686d3f7da39a31ea595d5c38217, }, ), received_events: EventHandle { count: 4734135885468833438, key: EventKey( [ 78, 108, 252, 105, 82, 75, 18, 136, 138, 245, 125, 202, 219, 28, 113, 216, 67, 39, 52, 109, 160, 224, 69, 235, ], ), }, sent_events: EventHandle { count: 7248169790990566802, key: EventKey( [ 254, 12, 213, 185, 4, 103, 241, 39, 255, 124, 186, 106, 197, 44, 86, 29, 219, 219, 116, 60, 134, 73, 27, 156, ], ), }, sequence_number: 18410800542993192061, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ac4cccb85a2fc3433b79f801af127293a7d73cc31b25bb633a51002db9235e62): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98601299f66fa5f899e52da31e311658dee079b8ca34cd5190dce94fffab86a8a2a61b34e9d0f404fcd936e1501961aea28c0ac41c25f87ba51b0c168c300fae9d76503f7757c18ab96fcfc5e7ada0cc2587c05d4b138008ad2bccbdda5f97b906dd4c96de2714618b6a21219809059b8de8caa162fcb58f053c8bb8015ea11e6db05790719428c2e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c7474a61eef8ecd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 102, 250, 95, 137, 158, 82, 218, 49, 227, 17, 101, 141, 238, 7, 155, 140, 163, 76, 213, 25, 13, 206, 148, 255, 250, 184, 106, 138, 42, 97, 179, 78, 157, 15, 64, 79, 205, 147, 110, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 961aea28c0ac41c25f87ba51b0c168c3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8968345826943822330, key: EventKey( [ 171, 150, 252, 252, 94, 122, 218, 12, 194, 88, 124, 5, 212, 177, 56, 0, 138, 210, 188, 203, 221, 165, 249, 123, ], ), }, sent_events: EventHandle { count: 5076087216188714384, key: EventKey( [ 182, 162, 18, 25, 128, 144, 89, 184, 222, 140, 170, 22, 47, 203, 88, 240, 83, 200, 187, 128, 21, 234, 17, 230, ], ), }, sequence_number: 3354128497751164379, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(acd6cb2f8eeb6a44dc23efef9a3d3d6557d1bc387368da0b233a790f5175948a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964079311dd4f8c44bb01a4c60abb6cc20952c48f600dfef3142b003d3a6bc2515a572618e5bf7c65ccdc261bbd1b8d30ea0593270d0a2afc0856c446a474dcd6fc6c1472181bc2eb76e1e57d4fbb43c6cb989360178c620a8f223c42cda2dd966b455b2eeb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a5d96c53e748237 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 17, 221, 79, 140, 68, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a4c60abb6cc20952c48f600dfef3142b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2762776203615746621, key: EventKey( [ 229, 191, 124, 101, 204, 220, 38, 27, 189, 27, 141, 48, 234, 5, 147, 39, 13, 10, 42, 252, 8, 86, 196, 70, ], ), }, sent_events: EventHandle { count: 8220315053050328228, key: EventKey( [ 27, 194, 235, 118, 225, 229, 125, 79, 187, 67, 198, 203, 152, 147, 96, 23, 140, 98, 10, 143, 34, 60, 66, 205, ], ), }, sequence_number: 16946582801557675426, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(acf70b393a98ebcc115f43f6f946fec96ff3f030688c62295d7796ee69274d8e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8013babf73e8e7b78a0a29fb945f37a4ee327ff10ffc6c8be678e98607fcc60cd52ecd17af1f355e8339521bc6d02f6c159d76e94ca8c303042f038787b018d7d6a003b4206c11281a2a948de31a801fd4f6c14428e0c208450852c312eea7c2a0df8ffff11fe521859cf17109d539fda09374be315b806be2c705b723be37ecd40c9a57f40fde62c18b4a921018b0b6b2fc29585d554552edfdb50a28a9940f11c5358468c1011ddc22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70813525831626fd217 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 247, 62, 142, 123, 120, 160, 162, 159, 185, 69, 243, 122, 78, 227, 39, 255, 16, 255, 198, 200, 190, 103, 142, 152, 96, 127, 204, 96, 205, 82, 236, 209, 122, 241, 243, 85, 232, 51, 149, 33, 188, 109, 2, 246, 193, 89, 215, 110, 148, 202, 140, 48, 48, 66, 240, 56, 120, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8d7d6a003b4206c11281a2a948de31a8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fd4f6c14428e0c208450852c312eea7c, }, ), received_events: EventHandle { count: 5980237146403376426, key: EventKey( [ 89, 207, 23, 16, 157, 83, 159, 218, 9, 55, 75, 227, 21, 184, 6, 190, 44, 112, 91, 114, 59, 227, 126, 205, ], ), }, sent_events: EventHandle { count: 3235551835773585728, key: EventKey( [ 180, 169, 33, 1, 139, 11, 107, 47, 194, 149, 133, 213, 84, 85, 46, 223, 219, 80, 162, 138, 153, 64, 241, 28, ], ), }, sequence_number: 14041397975981643859, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ad3a3de8d4909465bb76f4b54194988360f3be8cacd98c3dec447b0e52c25205): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974179077b47136904d28c91435393fba922e65fa39d9629ac10001a4601a9df8198cd56b82de0a5e271155a1cca03fdf41c86a18a8682c0509431fcb0a8908eb31ded1a5e72992489e9b41d1d223138d2a921d34180f9d16fba629d7812224d48910d6a26857e63f7644cd25b725719ac7a02d6ca42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f28a48eba36c00a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 119, 180, 113, 54, 144, 77, 40, 201, 20, 53, 57, 63, 186, 146, 46, 101, 250, 57, 217, 98, 154, 193, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a4601a9df8198cd56b82de0a5e271155, }, ), received_events: EventHandle { count: 7694472390463507617, key: EventKey( [ 168, 104, 44, 5, 9, 67, 31, 203, 10, 137, 8, 235, 49, 222, 209, 165, 231, 41, 146, 72, 158, 155, 65, 209, ], ), }, sent_events: EventHandle { count: 3755318375749985234, key: EventKey( [ 15, 157, 22, 251, 166, 41, 215, 129, 34, 36, 212, 137, 16, 214, 162, 104, 87, 230, 63, 118, 68, 205, 37, 183, ], ), }, sequence_number: 11847894888271737125, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ad65eabaa678740292042ce74cc61678a4fd819cb05753fa5942c4c22466ce52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139dd8e149ca66b23278b9df8a90222861a41affc7b6d5a0fd50a19768ec449b9bbece7cbe65446d77b7c6922ef9f0759eb5677d3da5c53827b5701058231cfcef61d92b6fb61386201086a00db61e2f6a81d0e0718d2ca84e1d2fe016a00892e331dc059845410e2111715ee231e480baac706f23218c5494f05d3378fe57f05e53b1ae9d21cdaff95505b6e657e466840894068688e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1ebc5d63f0f4cb0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 142, 20, 156, 166, 107, 35, 39, 139, 157, 248, 169, 2, 34, 134, 26, 65, 175, 252, 123, 109, 90, 15, 213, 10, 25, 118, 142, 196, 73, 185, 187, 236, 231, 203, 230, 84, 70, 215, 123, 124, 105, 34, 239, 159, 7, 89, 235, 86, 119, 211, 218, 92, 83, 130, 123, 87, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 058231cfcef61d92b6fb61386201086a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 508376419473187291, key: EventKey( [ 210, 202, 132, 225, 210, 254, 1, 106, 0, 137, 46, 51, 29, 192, 89, 132, 84, 16, 226, 17, 23, 21, 238, 35, ], ), }, sent_events: EventHandle { count: 3671004100881500190, key: EventKey( [ 197, 73, 79, 5, 211, 55, 143, 229, 127, 5, 229, 59, 26, 233, 210, 28, 218, 255, 149, 80, 91, 110, 101, 126, ], ), }, sequence_number: 10261566377353570374, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ada80a27e1c313b24bb627e83aafb2b5b5c3e09412ec81206beb9e64e142ae67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001536a38d93706b0ea56b00bfb1c46a86997702dcaeddd042733a4f6a120bfea981522f9ac3fc934e0a77c1c1e32a9197e6386c4dfa3cabbe352cf2bcdeb774685413673fb75926fed717b1c68fa5b1d20fbd8de830000c91535648453952318659603ab64a7d6fe1416657be9925686dd2120e6f3f2830035a64a8cfb158a6d18762a65b903ee4e2fbdd9b3eaad0f0c8dfe9d6285c819852d6fa76b57954e25c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0a21dd335247af5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 56, 217, 55, 6, 176, 234, 86, 176, 11, 251, 28, 70, 168, 105, 151, 112, 45, 202, 237, 221, 4, 39, 51, 164, 246, 161, 32, 191, 234, 152, 21, 34, 249, 172, 63, 201, 52, 224, 167, 124, 28, 30, 50, 169, 25, 126, 99, 134, 196, 223, 163, 202, 187, 227, 82, 207, 43, 205, 235, 119, 70, 133, 65, 54, 115, 251, 117, 146, 111, 237, 113, 123, 28, 104, 250, 91, 29, 32, 251, 216, 222, 131, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2564047390939354569, key: EventKey( [ 101, 150, 3, 171, 100, 167, 214, 254, 20, 22, 101, 123, 233, 146, 86, 134, 221, 33, 32, 230, 243, 242, 131, 0, ], ), }, sent_events: EventHandle { count: 7893145467054892597, key: EventKey( [ 118, 42, 101, 185, 3, 238, 78, 47, 189, 217, 179, 234, 173, 15, 12, 141, 254, 157, 98, 133, 200, 25, 133, 45, ], ), }, sequence_number: 13989674220820080495, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(adf85e39acd4e8ed4713512b20337c07e29cd8f82d3dda7c530df90e235fe337): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820135a6ef5893386034d3d3e64e5fe42887631a1e676028c8942666811d6cbe67067929a65744369ce7fab1e03a465dfb20b0021ca757390000c5a1fa9c2144f15f18427ccf5529f341799e8f5a2f4f8870b15f5e86f3000780fa0c8266dea0bfd874187e6522e1149832757bf50fb37129659ebd06a73d7ab329c66271f2d4a4651ac92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a8f21a77188b1c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 166, 239, 88, 147, 56, 96, 52, 211, 211, 230, 78, 95, 228, 40, 135, 99, 26, 30, 103, 96, 40, 200, 148, 38, 102, 129, 29, 108, 190, 103, 6, 121, 41, 166, 87, 68, 54, 156, 231, 250, 177, 224, 58, 70, 93, 251, 32, 176, 2, 28, 167, 87, 57, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6913381814148702661, key: EventKey( [ 66, 124, 207, 85, 41, 243, 65, 121, 158, 143, 90, 47, 79, 136, 112, 177, 95, 94, 134, 243, 0, 7, 128, 250, ], ), }, sent_events: EventHandle { count: 8419690201016074764, key: EventKey( [ 126, 101, 34, 225, 20, 152, 50, 117, 123, 245, 15, 179, 113, 41, 101, 158, 189, 6, 167, 61, 122, 179, 41, 198, ], ), }, sequence_number: 14491006509639692642, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ae4f3f6f168637ddb578e9ba61ca8c42934419c852406482c5860f4fa90d09f4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a8d7d0fc69bd57e2e066071c42a0a19b4aa65a86f13f7e01c78bef8709ce95897f3208b654ac8978a268da278a43a1fad1e5cf188c62b76fffdc7013c0f0a63629f1a69cb7e923657422a99005bdb5e3e28a4c32118a5b3314f19f32ac2b4691a08ea1bdb78e97f472ea08f4bba3935fcdde36dcf2e18cdc6b07a07b0df7d9dd4de7a487f43f00acb733557dfeb3bc760a8341f679cfc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083682511862002604 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 125, 15, 198, 155, 213, 126, 46, 6, 96, 113, 196, 42, 10, 25, 180, 170, 101, 168, 111, 19, 247, 224, 28, 120, 190, 248, 112, 156, 233, 88, 151, 243, 32, 139, 101, 74, 200, 151, 138, 38, 141, 162, 120, 164, 58, 31, 173, 30, 92, 241, 136, 198, 43, 118, 255, 253, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3c0f0a63629f1a69cb7e923657422a99, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2432968716462250843, key: EventKey( [ 165, 179, 49, 79, 25, 243, 42, 194, 180, 105, 26, 8, 234, 27, 219, 120, 233, 127, 71, 46, 160, 143, 75, 186, ], ), }, sent_events: EventHandle { count: 3373035471373088057, key: EventKey( [ 205, 198, 176, 122, 7, 176, 223, 125, 157, 212, 222, 122, 72, 127, 67, 240, 10, 203, 115, 53, 87, 223, 235, 59, ], ), }, sequence_number: 18202537177649799367, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ae96153d5225b53f3da7431236d8c8053b8f2cadeea22cbc9b0117fe8ca56e4d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131257343101d37c047f196ece82a36e21ccbf43db9b7ce56db3a0c70930ba5bd8b504ce895f6ff06e5ef50cbeb6b193ea25101fd6ade98be71bc3e1b86024e6d6594d700874e5ddb06c23f291850b2341f1098c77ccd06919e6974303b00b7c64a1e44f17deb3ee63029c28a7c1807c40b301118a55d9013747b346ad28cb85c9bf2d7a5ae7037bc769965b23cbe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e684356ed0aa4ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 37, 115, 67, 16, 29, 55, 192, 71, 241, 150, 236, 232, 42, 54, 226, 28, 203, 244, 61, 185, 183, 206, 86, 219, 58, 12, 112, 147, 11, 165, 189, 139, 80, 76, 232, 149, 246, 255, 6, 229, 239, 80, 203, 235, 107, 25, 62, 162, 81, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fd6ade98be71bc3e1b86024e6d6594d7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2972307613793734279, key: EventKey( [ 80, 178, 52, 31, 16, 152, 199, 124, 205, 6, 145, 158, 105, 116, 48, 59, 0, 183, 198, 74, 30, 68, 241, 125, ], ), }, sent_events: EventHandle { count: 8974198689658978027, key: EventKey( [ 7, 196, 11, 48, 17, 24, 165, 93, 144, 19, 116, 123, 52, 106, 210, 140, 184, 92, 155, 242, 215, 165, 174, 112, ], ), }, sequence_number: 13708027515245083703, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aee36771bb41a6e44a91c2623839ed4d45b5239945bfb12dac02629e5f86693b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f87db14fb2db8ff987cc7267b654e39dff8aeef9b53faa420342224380b350e000138c19aacb41807275fcbc7362583106ff596b512cd10432218b07dd3d769e62a3cffcaf5a9e8a143ac4dc8efe00c6ccc0f75233257cc55df0d18ae88d00268a0566419cfb82e0035d066b72afb56ff4a9dbc5fd02928ee7044782101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851f50379eb093d75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 219, 20, 251, 45, 184, 255, 152, 124, 199, 38, 123, 101, 78, 57, 223, 248, 174, 239, 155, 83, 250, 164, 32, 52, 34, 36, 56, 11, 53, 14, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 38c19aacb41807275fcbc7362583106f, }, ), received_events: EventHandle { count: 2468835493697394421, key: EventKey( [ 176, 125, 211, 215, 105, 230, 42, 60, 255, 202, 245, 169, 232, 161, 67, 172, 77, 200, 239, 224, 12, 108, 204, 15, ], ), }, sent_events: EventHandle { count: 999611978424132469, key: EventKey( [ 174, 136, 208, 2, 104, 160, 86, 100, 25, 207, 184, 46, 0, 53, 208, 102, 183, 42, 251, 86, 255, 74, 157, 188, ], ), }, sequence_number: 8666175751146033247, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(af9e8c8a2e4713b0e5628eda1bcb8591018e40cf1ba6cb298e2de784597706a4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97023161c0e112896bdaf0490939347d235f67b45eeeecd4f4d0bbfa4707f15f028a4bcc171000082428fb79318901918b0b6e063346bfe4f80552a0d2661eafc8d6b754db873a780b90d5bae82d2746918d6208de77a0c8e888587d389e334296900674f49c692e43a6eb5d26403067b892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a3e60c694fc643a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 28, 14, 17, 40, 150, 189, 175, 4, 144, 147, 147, 71, 210, 53, 246, 123, 69, 238, 238, 205, 79, 77, 11, 191, 164, 112, 127, 21, 240, 40, 164, 188, 193, 113, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1841999270313411202, key: EventKey( [ 176, 182, 224, 99, 52, 107, 254, 79, 128, 85, 42, 13, 38, 97, 234, 252, 141, 107, 117, 77, 184, 115, 167, 128, ], ), }, sent_events: EventHandle { count: 7598929929993653689, key: EventKey( [ 214, 32, 141, 231, 122, 12, 142, 136, 133, 135, 211, 137, 227, 52, 41, 105, 0, 103, 79, 73, 198, 146, 228, 58, ], ), }, sequence_number: 9906518416977737070, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b01563cf866434fa8f47f78db39580b339ab4087c602fc5798be9c4a8af859d1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01513be7b342661a966c5a4eddb56a72b640d196875b6a033ec7700e70a70c86759e2e7db2a812822eddc1f902d38034dc48b2453907fa4e95a729d38cdf1bfb45cdcd780bd837d2906169404e11ad4c6e6e6201ae06890b09399d6659315a13a2ea5a2500ad452e140ef5ee0c18ce0743eeb3efee4de73a28f875f07e779cc92e7a83330a0490437063a7a02b4d18df6238169ea0e967eb29d27eab0dca3831da2c34a3579da2342d432c055adb712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea37f6e3376a9369 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 231, 179, 66, 102, 26, 150, 108, 90, 78, 221, 181, 106, 114, 182, 64, 209, 150, 135, 91, 106, 3, 62, 199, 112, 14, 112, 167, 12, 134, 117, 158, 46, 125, 178, 168, 18, 130, 46, 221, 193, 249, 2, 211, 128, 52, 220, 72, 178, 69, 57, 7, 250, 78, 149, 167, 41, 211, 140, 223, 27, 251, 69, 205, 205, 120, 11, 216, 55, 210, 144, 97, 105, 64, 78, 17, 173, 76, 110, 110, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ae06890b09399d6659315a13a2ea5a25, }, ), key_rotation_capability: None, received_events: EventHandle { count: 931951613729195437, key: EventKey( [ 206, 7, 67, 238, 179, 239, 238, 77, 231, 58, 40, 248, 117, 240, 126, 119, 156, 201, 46, 122, 131, 51, 10, 4, ], ), }, sent_events: EventHandle { count: 5560714805707293584, key: EventKey( [ 223, 98, 56, 22, 158, 160, 233, 103, 235, 41, 210, 126, 171, 13, 202, 56, 49, 218, 44, 52, 163, 87, 157, 162, ], ), }, sequence_number: 8204250124449426740, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b0fc5df523d8fd05ca7bbbaf77901902cbc69a89d35eda3ba144f2984dcfafd6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b60159d9ee196beacf705eae7855fcf34edad1185afc60c3f3239da95396073e428b6c8a567c44c14ea87ba437bd53887db47fd2032585beb088ec8c21083d03d0900fe8b84ca6f770207bca1a74230f1aa6e87e2566c48fbb6d226d01c9642adb364256d48bd6d6b87404138900104d4d074790a04e18551623d5ca7691cc7392239424b6c8c64e5e62e2d0c2ab5523b2d7455a97e33a18fee27789fe08248552734dc85dfba19397c980391ccb73cc69c8cbc0bf56a4af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc3bed9288ca5dba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 217, 238, 25, 107, 234, 207, 112, 94, 174, 120, 85, 252, 243, 78, 218, 209, 24, 90, 252, 96, 195, 243, 35, 157, 169, 83, 150, 7, 62, 66, 139, 108, 138, 86, 124, 68, 193, 78, 168, 123, 164, 55, 189, 83, 136, 125, 180, 127, 210, 3, 37, 133, 190, 176, 136, 236, 140, 33, 8, 61, 3, 208, 144, 15, 232, 184, 76, 166, 247, 112, 32, 123, 202, 26, 116, 35, 15, 26, 166, 232, 126, 37, 102, 196, 143, 187, 109, 34, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c9642adb364256d48bd6d6b874041389, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5665686965971668240, key: EventKey( [ 85, 22, 35, 213, 202, 118, 145, 204, 115, 146, 35, 148, 36, 182, 200, 198, 78, 94, 98, 226, 208, 194, 171, 85, ], ), }, sent_events: EventHandle { count: 4243401687887753763, key: EventKey( [ 254, 226, 119, 137, 254, 8, 36, 133, 82, 115, 77, 200, 93, 251, 161, 147, 151, 201, 128, 57, 28, 203, 115, 204, ], ), }, sequence_number: 12656336234391259241, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b1ee389d79b91069d39e14b8e596b7932b25e74d10bb8ee22294d555339a6d3f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c588b3b5b31d73171323b834d6f92d2d601dc45e7c9a1df2fc082ca4e6eddbed7714f311810689c21500c53bcba864022c2c4215d5aaa4a1ed98e7a3501f196f2436075466312523a9424b8e7a1004498c2fbd5f4457b182ddc90cda41446775b8c7b0433531e8b4c34eb62a9038f52e2c37c92f4e3e07218a0cb5c7131f248d279444596e385b1e0cb18d0d41657ada3e4ef0e9fac3a42632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c204160c975eacc3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 139, 59, 91, 49, 215, 49, 113, 50, 59, 131, 77, 111, 146, 210, 214, 1, 220, 69, 231, 201, 161, 223, 47, 192, 130, 202, 78, 110, 221, 190, 215, 113, 79, 49, 24, 16, 104, 156, 33, 80, 12, 83, 188, 186, 134, 64, 34, 194, 196, 33, 93, 90, 170, 74, 30, 217, 142, 122, 53, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f196f2436075466312523a9424b8e7a1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8882775039947216964, key: EventKey( [ 45, 220, 144, 205, 164, 20, 70, 119, 91, 140, 123, 4, 51, 83, 30, 139, 76, 52, 235, 98, 169, 3, 143, 82, ], ), }, sent_events: EventHandle { count: 8277866754676147170, key: EventKey( [ 160, 203, 92, 113, 49, 242, 72, 210, 121, 68, 69, 150, 227, 133, 177, 224, 203, 24, 208, 212, 22, 87, 173, 163, ], ), }, sequence_number: 7152343671295111140, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b21ac31a7d3eec8eb10d0a5fcd24a37cef156d067442f246d9216fb9b3a37565): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f4b3395ed9201f499e8e91bc37c73158bcd892501256a6f0026b1bdaf3d15810001cf16f388949b986a26a3a2ac8d279aa83effc5fd3667c819186dcd467d91996edb6e5debccd20e528ae656b36064098ce593a4cac301111c0418b9b437f1ccdbf285129891315ae1921bf43437ec16198dca27114bc10b0f61502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70871f53216c8b783df Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 51, 149, 237, 146, 1, 244, 153, 232, 233, 27, 195, 124, 115, 21, 139, 205, 137, 37, 1, 37, 106, 111, 0, 38, 177, 189, 175, 61, 21, 129, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf16f388949b986a26a3a2ac8d279aa8, }, ), received_events: EventHandle { count: 1857848332173836094, key: EventKey( [ 109, 205, 70, 125, 145, 153, 110, 219, 110, 93, 235, 204, 210, 14, 82, 138, 230, 86, 179, 96, 100, 9, 140, 229, ], ), }, sent_events: EventHandle { count: 296130374777087123, key: EventKey( [ 185, 180, 55, 241, 204, 219, 242, 133, 18, 152, 145, 49, 90, 225, 146, 27, 244, 52, 55, 236, 22, 25, 141, 202, ], ), }, sequence_number: 5791927138937147687, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b29894e1ff38398da4c84bb04a74a54764c75bfed03f481ca540da7014aec9cf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f7f75dbfbb915c50c14dcaa5a7dfa6f5e05684db021be86eda4f4dc978c4fe77a8169b27bf09b83b37c87aa8271216a4cc6ff05a8751e5783edf53a65b99a2b0001fc1bb68aef986aea8d54a2b1051f1eb318d62089ac0e944f181fe23aa34d044f31b586ab98c0aee3bc69735220f0417bce93f45874460d0f62181fe9cdcffc1ae801914a9d0ff350ad53d6240a2236c9946e1160ab4e4b633eab2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805aa29ae39118656 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 117, 219, 251, 185, 21, 197, 12, 20, 220, 170, 90, 125, 250, 111, 94, 5, 104, 77, 176, 33, 190, 134, 237, 164, 244, 220, 151, 140, 79, 231, 122, 129, 105, 178, 123, 240, 155, 131, 179, 124, 135, 170, 130, 113, 33, 106, 76, 198, 255, 5, 168, 117, 30, 87, 131, 237, 245, 58, 101, 185, 154, 43, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc1bb68aef986aea8d54a2b1051f1eb3, }, ), received_events: EventHandle { count: 5734224359747278360, key: EventKey( [ 31, 226, 58, 163, 77, 4, 79, 49, 181, 134, 171, 152, 192, 174, 227, 188, 105, 115, 82, 32, 240, 65, 123, 206, ], ), }, sent_events: EventHandle { count: 7065880936618456211, key: EventKey( [ 31, 233, 205, 207, 252, 26, 232, 1, 145, 74, 157, 15, 243, 80, 173, 83, 214, 36, 10, 34, 54, 201, 148, 110, ], ), }, sequence_number: 12339409204135288849, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b2cf961ae6c1fac383f3603954d8ed03951e1a1dab5aed5c8759e8c64b42b3c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d10b72a97625e2992c7df810958cc084b2c0000e18879e96977041418a617a81e3b64c6ce373b86a9fbba965b30381ccdb389fd39f3e50fb94956a83d1821190b86488baa670a55cc330fc585511478e5a81c82e5369e6b98f0de3fdff62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084c52de1f6cb4572a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 42, 151, 98, 94, 41, 146, 199, 223, 129, 9, 88, 204, 8, 75, 44, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1442409077437728993, key: EventKey( [ 166, 23, 168, 30, 59, 100, 198, 206, 55, 59, 134, 169, 251, 186, 150, 91, 48, 56, 28, 205, 179, 137, 253, 57, ], ), }, sent_events: EventHandle { count: 4442895907038422515, key: EventKey( [ 33, 25, 11, 134, 72, 139, 170, 103, 10, 85, 204, 51, 15, 197, 133, 81, 20, 120, 229, 168, 28, 130, 229, 54, ], ), }, sequence_number: 17789007279888559006, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b43fb7d6c4e6535590c9bbb803ef26f10fa1b6472640a20edf25c77bc9984711): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b2ebcda55a6b64cf95656630228b16a5f64dccd6640c295509cde7d6338582c45790e8b253b8071b2937f9d63749971cdc7ba0ccd804464dee963388fe9caa8e2fa3e617e64c53731bbbe950109089f12c8d372e4b58fc43441b4e40f0120ab9229ce51f3ba4d70ee30d27bf9ad41353d5a1a54c601188902b2de7eefd1e9167aa2050968772baedda8e20adc764dcb2c594a30f2153718956a1e843633a2fba4f56c11f4fb6ca0323e0fc70173f86b3753bd71df8e5fd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805b7ab75d56f04ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 188, 218, 85, 166, 182, 76, 249, 86, 86, 99, 2, 40, 177, 106, 95, 100, 220, 205, 102, 64, 194, 149, 80, 156, 222, 125, 99, 56, 88, 44, 69, 121, 14, 139, 37, 59, 128, 113, 178, 147, 127, 157, 99, 116, 153, 113, 205, 199, 186, 12, 205, 128, 68, 100, 222, 233, 99, 56, 143, 233, 202, 168, 226, 250, 62, 97, 126, 100, 197, 55, 49, 187, 190, 149, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 09089f12c8d372e4b58fc43441b4e40f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 20ab9229ce51f3ba4d70ee30d27bf9ad, }, ), received_events: EventHandle { count: 127882111586481473, key: EventKey( [ 137, 2, 178, 222, 126, 239, 209, 233, 22, 122, 162, 5, 9, 104, 119, 43, 174, 221, 168, 226, 10, 220, 118, 77, ], ), }, sent_events: EventHandle { count: 3969344935816670411, key: EventKey( [ 149, 106, 30, 132, 54, 51, 162, 251, 164, 245, 108, 17, 244, 251, 108, 160, 50, 62, 15, 199, 1, 115, 248, 107, ], ), }, sequence_number: 15447222337241174839, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b485f8df7df34b8e6a53b5847ae86a826e3210929bfdaf1f8b1c40d3c9a88a4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95205acd442949600008ec3ed32311705701840696fe105dee6ce80553c8702962666517112049982966e1aeed983cb1bf54318a9fb3bbf7b7d6364c655efddbe52f15df94a29989d02c8a8061b22747ca4f69e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708da9b9533561381af Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 212, 66, 148, 150, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8071883407206761358, key: EventKey( [ 64, 105, 111, 225, 5, 222, 230, 206, 128, 85, 60, 135, 2, 150, 38, 102, 81, 113, 18, 4, 153, 130, 150, 110, ], ), }, sent_events: EventHandle { count: 4896850730739691034, key: EventKey( [ 169, 251, 59, 191, 123, 125, 99, 100, 198, 85, 239, 221, 190, 82, 241, 93, 249, 74, 41, 152, 157, 2, 200, 168, ], ), }, sequence_number: 11454523556694727430, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b4fd8865283cf3fb80217dafe3d6a79abf828a9617a22ba7055c029f5bf91c4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d20653d165e400423f85aa5d7e64a3c424a2db8b3feb8d0bee9384a6c5fe8d871d10186e56f64503e1455de64aac56e02da8e00ebeba59041ac6812189792b7497ca1f1e8b2fad153578acb39c525700c10f0886193cfc8b3d549be51184e2f5c5632cff237e435ed3e2de0539735e5c70b3da3160b45b27043179a40642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083576e67bf903e21f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 61, 22, 94, 64, 4, 35, 248, 90, 165, 215, 230, 74, 60, 66, 74, 45, 184, 179, 254, 184, 208, 190, 233, 56, 74, 108, 95, 232, 216, 113, 209, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86e56f64503e1455de64aac56e02da8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1326499487860255723, key: EventKey( [ 151, 146, 183, 73, 124, 161, 241, 232, 178, 250, 209, 83, 87, 138, 203, 57, 197, 37, 112, 12, 16, 240, 136, 97, ], ), }, sent_events: EventHandle { count: 5890226544840331155, key: EventKey( [ 78, 47, 92, 86, 50, 207, 242, 55, 228, 53, 237, 62, 45, 224, 83, 151, 53, 229, 199, 11, 61, 163, 22, 11, ], ), }, sequence_number: 7223943227008660037, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b5658880811fcfed5aa2a6b14b0eb790e76ec75007c103cda3af3b0bd13d7f2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1d5b5c5183726e8292610ec113a99302c3b3b6789b141b9685dcc67101f20000a9f6cdcd48b2390418a04f91818545f235712f868ace4a4debe4245e9b8c3750fae220465f0a462e49180c2f4f4906a84c3fd08a5fe713648e9fed650f65a8f8c7b111b31dd7cc551c282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b772aa5884c8c794 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 92, 81, 131, 114, 110, 130, 146, 97, 14, 193, 19, 169, 147, 2, 195, 179, 182, 120, 155, 20, 27, 150, 133, 220, 198, 113, 1, 242, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 304470475584435881, key: EventKey( [ 160, 79, 145, 129, 133, 69, 242, 53, 113, 47, 134, 138, 206, 74, 77, 235, 228, 36, 94, 155, 140, 55, 80, 250, ], ), }, sent_events: EventHandle { count: 5273229224059478242, key: EventKey( [ 12, 47, 79, 73, 6, 168, 76, 63, 208, 138, 95, 231, 19, 100, 142, 159, 237, 101, 15, 101, 168, 248, 199, 177, ], ), }, sequence_number: 2890279399135752977, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b6144d30f560d9265ffe5d1d7c132ff6ad7ac2869639ba34a30d52c13b1f6f95): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1d1e11223a91d6842151a545908d7647c1990ba49697123cb064f3405ba10000ee28100e8b63c671186804e5956dc45510aea429794f45ba6e4f17935095a16d4753c00f4a3b5ba766187ac2955606b176a0ac3da690be4aece7f78d90a8e52e1aea60685cf2003bf6902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708219c7ea41fa65426 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 17, 34, 58, 145, 214, 132, 33, 81, 165, 69, 144, 141, 118, 71, 193, 153, 11, 164, 150, 151, 18, 60, 176, 100, 243, 64, 91, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8198349620562110702, key: EventKey( [ 104, 4, 229, 149, 109, 196, 85, 16, 174, 164, 41, 121, 79, 69, 186, 110, 79, 23, 147, 80, 149, 161, 109, 71, ], ), }, sent_events: EventHandle { count: 7396981223183073363, key: EventKey( [ 122, 194, 149, 86, 6, 177, 118, 160, 172, 61, 166, 144, 190, 74, 236, 231, 247, 141, 144, 168, 229, 46, 26, 234, ], ), }, sequence_number: 10445601260984625248, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b629ecd6d39966de60641895cb29a6a440221c457d4686e9377f656c1c0009e4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973260dd81cae4d16bf9c4f10e3604a005d643ba45fb29f9a086937704f1b998d040538501dba60210000d7e0c7e23c8eb61718946f17b1d705bf445318f34e194e542df0f2e791ab3eeee662a5123cfd097d1218539656eeb815edfeaf2a20d05122f08896bea8ac4b413c79823745a01fef8e6a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085cafe946042ecd13 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 216, 28, 174, 77, 22, 191, 156, 79, 16, 227, 96, 74, 0, 93, 100, 59, 164, 95, 178, 159, 154, 8, 105, 55, 112, 79, 27, 153, 141, 4, 5, 56, 80, 29, 186, 96, 33, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1708709500787613911, key: EventKey( [ 148, 111, 23, 177, 215, 5, 191, 68, 83, 24, 243, 78, 25, 78, 84, 45, 240, 242, 231, 145, 171, 62, 238, 230, ], ), }, sent_events: EventHandle { count: 1332232048010765666, key: EventKey( [ 83, 150, 86, 238, 184, 21, 237, 254, 175, 42, 32, 208, 81, 34, 240, 136, 150, 190, 168, 172, 75, 65, 60, 121, ], ), }, sequence_number: 7678337333825189762, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b65c69dcc842781990087780881674d29fa7e25096d06253f68001c615926fd7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f226167d849cb47c68b647dd418a77340a4edbaafe415a8fb412b7b42affbb4ebfb7649000193011c5b78152b072ba6ee60e353c31d2a646c310782287a18b76196ae3ffdccc83815c6cda5f52be745800c9e9fdc316279bd0fbe5be1736b186cf45304d206bf58632b85c615665380604e741350f83e25c51ce80e91feb3892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817b3f1d86ec786fc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 103, 216, 73, 203, 71, 198, 139, 100, 125, 212, 24, 167, 115, 64, 164, 237, 186, 175, 228, 21, 168, 251, 65, 43, 123, 66, 175, 251, 180, 235, 251, 118, 73, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 93011c5b78152b072ba6ee60e353c31d, }, ), received_events: EventHandle { count: 8802428439101203498, key: EventKey( [ 183, 97, 150, 174, 63, 253, 204, 200, 56, 21, 198, 205, 165, 245, 43, 231, 69, 128, 12, 158, 159, 220, 49, 98, ], ), }, sent_events: EventHandle { count: 7742779968526990713, key: EventKey( [ 108, 244, 83, 4, 210, 6, 191, 88, 99, 43, 133, 198, 21, 102, 83, 128, 96, 78, 116, 19, 80, 248, 62, 37, ], ), }, sequence_number: 9922554303001140421, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b661aec3175b703da4333a2d2595de9b9a522087abb9f5131c8cbbcc873c5984): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e01399ba8debd65a21f04e3e4108f0001740f100ced01938ddcfcb2f8e14e8fb643fe9a8d4b1e2306183fff9a66510ea7146597cc2655019900944d90749c16b66b6b476b3b7adff8581885b7e78721f53eba6cf898fa374f7b95cfa881ee5bc9c3f273343bdafe034b372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dd0663c63acbff7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 57, 155, 168, 222, 189, 101, 162, 31, 4, 227, 228, 16, 143, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 740f100ced01938ddcfcb2f8e14e8fb6, }, ), received_events: EventHandle { count: 442230498259566147, key: EventKey( [ 63, 255, 154, 102, 81, 14, 167, 20, 101, 151, 204, 38, 85, 1, 153, 0, 148, 77, 144, 116, 156, 22, 182, 107, ], ), }, sent_events: EventHandle { count: 6411119785637791595, key: EventKey( [ 133, 183, 231, 135, 33, 245, 62, 186, 108, 248, 152, 250, 55, 79, 123, 149, 207, 168, 129, 238, 91, 201, 195, 242, ], ), }, sequence_number: 3984282688457225331, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b71aa12a03e214f74ceb449f0ee2257a7b82e095b2deca4a12e7dfa64d32f588): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a075f70cd524b56b4c9322f50d88dc352656675cba95d734df5a691081ecb6375a4b9f3c4bea25651f127bb52cbe33c89b5f77204e17e73076b5c0001cf0988901eccea948a4f38507ee0adcfeeb397b7c770ed1018f58fd34294f7c140a27988f39baf64e53dc60de1fd8d67d99e1833b859d7cd2618040226167eda5e068613845bc51e36b78e9ed3931072c00b42443776d1c16d332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a815bc146b3f6550 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 7, 95, 112, 205, 82, 75, 86, 180, 201, 50, 47, 80, 216, 141, 195, 82, 101, 102, 117, 203, 169, 93, 115, 77, 245, 166, 145, 8, 30, 203, 99, 117, 164, 185, 243, 196, 190, 162, 86, 81, 241, 39, 187, 82, 203, 227, 60, 137, 181, 247, 114, 4, 225, 126, 115, 7, 107, 92, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf0988901eccea948a4f38507ee0adcf, }, ), received_events: EventHandle { count: 1219755077168247790, key: EventKey( [ 245, 143, 211, 66, 148, 247, 193, 64, 162, 121, 136, 243, 155, 175, 100, 229, 61, 198, 13, 225, 253, 141, 103, 217, ], ), }, sent_events: EventHandle { count: 2796127724009363614, key: EventKey( [ 4, 2, 38, 22, 126, 218, 94, 6, 134, 19, 132, 91, 197, 30, 54, 183, 142, 158, 211, 147, 16, 114, 192, 11, ], ), }, sequence_number: 3705831173771445314, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8214d272edfb8dc54caae6dc1478c3aceea31b274269e1a321d9c2fbfae511d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d60a5906bb66cec73310c4d1af801eb9a1974863f8b80cded8d8c7fec14e70077d1925219edad45180d462307b04ccaa5d4ff856427b2bacf702b78b0406c76a5c207fe9d0e45e207183dbe61f2fd6286a69027b3e6027236c4b0b3d9a1c43db19ac4cc8365dd1b78902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708377fa688e331cfd5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 165, 144, 107, 182, 108, 236, 115, 49, 12, 77, 26, 248, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eb9a1974863f8b80cded8d8c7fec14e7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5020929852603289975, key: EventKey( [ 13, 70, 35, 7, 176, 76, 202, 165, 212, 255, 133, 100, 39, 178, 186, 207, 112, 43, 120, 176, 64, 108, 118, 165, ], ), }, sent_events: EventHandle { count: 568092432084633538, key: EventKey( [ 61, 190, 97, 242, 253, 98, 134, 166, 144, 39, 179, 230, 2, 114, 54, 196, 176, 179, 217, 161, 196, 61, 177, 154, ], ), }, sequence_number: 10410101176371760324, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b83fa8ec67586554d521711bd3b25dc0c58f2ffee71beca9cb1dbceaf0e44854): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97326f0dd63b7752ba8f105a527e5f5a9124da3490590316032812fec9d2a2a9a87a685bad83b602b00000e1d8efa114e3f7c184d2059fbaaced7a10e31c807e290c6f3e5c8d8e11b5a74c2a69a374d5ebef72c18508981a809f6480c2353bbcaac583cdf5ed3d371d64a6e9e82605a4661b3183e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083996f55995955988 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 240, 221, 99, 183, 117, 43, 168, 241, 5, 165, 39, 229, 245, 169, 18, 77, 163, 73, 5, 144, 49, 96, 50, 129, 47, 236, 157, 42, 42, 154, 135, 166, 133, 186, 216, 59, 96, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8952960423360863502, key: EventKey( [ 77, 32, 89, 251, 170, 206, 215, 161, 14, 49, 200, 7, 226, 144, 198, 243, 229, 200, 216, 225, 27, 90, 116, 194, ], ), }, sent_events: EventHandle { count: 3240267769148054182, key: EventKey( [ 80, 137, 129, 168, 9, 246, 72, 12, 35, 83, 187, 202, 172, 88, 60, 223, 94, 211, 211, 113, 214, 74, 110, 158, ], ), }, sequence_number: 4474523460166115458, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b84dd721c4f23270bf6c2a21d92b7d5a527200637bb5f9b8f33ed54052c59019): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b2015580cfcd1899e9b322b052b1424e9088c1be6835f7281f91e3d6d3d90bb10eedfe4feff5541714f0c0f249eb34269817902d8fd141068200c2a086316060e49e6fbaf79defe3a137ddd3ae93c4cba05928353b1e13fb01e7869656c35cc2ed61fc2b6405ad1d4b00f9335e62ec65da1d18d2cceaf6dd16cb9a8ac1976c9cb4c5d12f6221370ad2ed4378c625601e9e7d4518223aac6176d8c3faf92362f061cd4d46e9cd4dbef8370f955aa18c7d1062b66a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fa5c675cab648753 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 128, 207, 205, 24, 153, 233, 179, 34, 176, 82, 177, 66, 78, 144, 136, 193, 190, 104, 53, 247, 40, 31, 145, 227, 214, 211, 217, 11, 177, 14, 237, 254, 79, 239, 245, 84, 23, 20, 240, 192, 242, 73, 235, 52, 38, 152, 23, 144, 45, 143, 209, 65, 6, 130, 0, 194, 160, 134, 49, 96, 96, 228, 158, 111, 186, 247, 157, 239, 227, 161, 55, 221, 211, 174, 147, 196, 203, 160, 89, 40, 53, 59, 30, 19, 251, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7869656c35cc2ed61fc2b6405ad1d4b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2151143837959861241, key: EventKey( [ 210, 204, 234, 246, 221, 22, 203, 154, 138, 193, 151, 108, 156, 180, 197, 209, 47, 98, 33, 55, 10, 210, 237, 67, ], ), }, sent_events: EventHandle { count: 5007332214005155448, key: EventKey( [ 34, 58, 172, 97, 118, 216, 195, 250, 249, 35, 98, 240, 97, 205, 77, 70, 233, 205, 77, 190, 248, 55, 15, 149, ], ), }, sequence_number: 7689441236747067738, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8aa0cc14f160a324d1007de0f429cfd5b8fc67420b60b44811c15f6585fb409): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984011786a43704d335ec1a47f64044a8979a6ba6a64d814a5ff70160bbf07dece549c043ce19cb7542218501eaeb107cda0dd773231eee6a29fdac00dfa66b1642c0f84d18a49a6445b49397fe27652f6e0b4e05009badedcc82dbacbe30260e7208e9d232189b7fe9d3c0f5368e0b6eff69b29f937d47d59d8c046925e0c9c0338f187333292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e932eb2001afac3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 164, 55, 4, 211, 53, 236, 26, 71, 246, 64, 68, 168, 151, 154, 107, 166, 166, 77, 129, 74, 95, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 60bbf07dece549c043ce19cb75422185, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eaeb107cda0dd773231eee6a29fdac00, }, ), received_events: EventHandle { count: 5618451925221222111, key: EventKey( [ 164, 154, 100, 69, 180, 147, 151, 254, 39, 101, 47, 110, 11, 78, 5, 0, 155, 173, 237, 204, 130, 219, 172, 190, ], ), }, sent_events: EventHandle { count: 3662245669488174640, key: EventKey( [ 155, 127, 233, 211, 192, 245, 54, 142, 11, 110, 255, 105, 178, 159, 147, 125, 71, 213, 157, 140, 4, 105, 37, 224, ], ), }, sequence_number: 2968843128686231753, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b97981414747a13c8016af6d6fd8ebd23b8a2c31bd13344a73a4a3d7ac72e9b2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9701365aea1749baee0d43a07d803e51b9bf8d4549a000134cc11bb4efa7d6df13aa622076e12d940b5ec46eac00b251818037a2239d55c8f211c21b3bbaeaea8cdeb04dd326542bd3a83403f7afe275418e0aa1b3409c0c02ef301dcdacb8724ed6af40255ead6391c9bb76d076f087fb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708abd668c5b5852dfe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 174, 161, 116, 155, 174, 224, 212, 58, 7, 216, 3, 229, 27, 155, 248, 212, 84, 154, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 34cc11bb4efa7d6df13aa622076e12d9, }, ), received_events: EventHandle { count: 2669439316591949120, key: EventKey( [ 24, 3, 122, 34, 57, 213, 92, 143, 33, 28, 33, 179, 187, 174, 174, 168, 205, 235, 4, 221, 50, 101, 66, 189, ], ), }, sent_events: EventHandle { count: 6064095224278319930, key: EventKey( [ 224, 170, 27, 52, 9, 192, 192, 46, 243, 1, 220, 218, 203, 135, 36, 237, 106, 244, 2, 85, 234, 214, 57, 28, ], ), }, sequence_number: 13366411492017944475, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b9edefe4ab01d02c455d660f09a8c8e06ae19e3955190f878b0be779c2e9b51b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015deefa2be16ab59d16fa937e12457fbb05ac8089337f7594042484407a4147a25b55a0b565f27680d516830553d2545da53b90bed579e6dcd633ba042e3e7568f6fc0fe72fdcddd5e0dd454dffe527da8a661bfb852c8b4ed97f23c2372701dcca7e05197e38108607f1e7e51e82e90199491e85a936e9f8691ff67e32787160b4ad50b39f95ca4e189231b2fa706ca6a00939d4fb71ff7189b47a622aa26083d9737f564a181ab279189ca7531cefba62bc00a7b2fe3a0c9f2bd53a14cf43b39b11eb1ceae3ff6deed62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080cddcb303db3f36e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 250, 43, 225, 106, 181, 157, 22, 250, 147, 126, 18, 69, 127, 187, 5, 172, 128, 137, 51, 127, 117, 148, 4, 36, 132, 64, 122, 65, 71, 162, 91, 85, 160, 181, 101, 242, 118, 128, 213, 22, 131, 5, 83, 210, 84, 93, 165, 59, 144, 190, 213, 121, 230, 220, 214, 51, 186, 4, 46, 62, 117, 104, 246, 252, 15, 231, 47, 220, 221, 213, 224, 221, 69, 77, 255, 229, 39, 218, 138, 102, 27, 251, 133, 44, 139, 78, 217, 127, 35, 194, 55, 39, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dcca7e05197e38108607f1e7e51e82e9, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 99491e85a936e9f8691ff67e32787160, }, ), received_events: EventHandle { count: 5677514793394679220, key: EventKey( [ 146, 49, 178, 250, 112, 108, 166, 160, 9, 57, 212, 251, 113, 255, 113, 137, 180, 122, 98, 42, 162, 96, 131, 217, ], ), }, sent_events: EventHandle { count: 8769100116072497011, key: EventKey( [ 156, 167, 83, 28, 239, 186, 98, 188, 0, 167, 178, 254, 58, 12, 159, 43, 213, 58, 20, 207, 67, 179, 155, 17, ], ), }, sequence_number: 15487437114381573355, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba0d10bc7d3e13ab435c4c0832e16099f33d09b5d6bbd31985cc04d3e90196ab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b0b22a50e0239b9829dd9e1c8c950ee63d3a3507e53b4605d2bf5870001c7606fa90d82a27f1b3ca4bb089ec051693b3e135493d33a184c5e581fc062d5611d81883b036e71bb02602a60230ee01405f56fe01029091f186f246e39817ea295e73e9c1b21e5515a9aa4074ffdf77f1e274978fae44b522f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef6d3a0efc694b5f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 34, 165, 14, 2, 57, 185, 130, 157, 217, 225, 200, 201, 80, 238, 99, 211, 163, 80, 126, 83, 180, 96, 93, 43, 245, 135, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c7606fa90d82a27f1b3ca4bb089ec051, }, ), received_events: EventHandle { count: 4238893663595150185, key: EventKey( [ 76, 94, 88, 31, 192, 98, 213, 97, 29, 129, 136, 59, 3, 110, 113, 187, 2, 96, 42, 96, 35, 14, 224, 20, ], ), }, sent_events: EventHandle { count: 2236363842427811077, key: EventKey( [ 111, 36, 110, 57, 129, 126, 162, 149, 231, 62, 156, 27, 33, 229, 81, 90, 154, 164, 7, 79, 253, 247, 127, 30, ], ), }, sequence_number: 3409871314699700519, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba1088c1446442e5df04c6c62a0d6005ae489a3dcc33d4d88de208a0bf1909a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01608b059ef35efd4b6132b7369dd741b168e04360d407f38dc8fa8743b3cdf2284a778fe93899d39303171b9c213e18b9f5bacb3636231b1021285d148188f8d9aeb3d0904763cbb52f4bf5cb73d57efe8d1c76912d7759cc06693d89846ad9f4ae0001809e1d7bbd9903fb58744350b56c0d906c65ef6f047c5533183d4fc2775e9d0cf0cefb786413e5320148e960d4c94b007aef748d65f8b3fe49189fe2d8ab90b22d7fdf29da5c98598b3054917ddb2f0136e03a20f403394f4faa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c6a7788eb960d707 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 139, 5, 158, 243, 94, 253, 75, 97, 50, 183, 54, 157, 215, 65, 177, 104, 224, 67, 96, 212, 7, 243, 141, 200, 250, 135, 67, 179, 205, 242, 40, 74, 119, 143, 233, 56, 153, 211, 147, 3, 23, 27, 156, 33, 62, 24, 185, 245, 186, 203, 54, 54, 35, 27, 16, 33, 40, 93, 20, 129, 136, 248, 217, 174, 179, 208, 144, 71, 99, 203, 181, 47, 75, 245, 203, 115, 213, 126, 254, 141, 28, 118, 145, 45, 119, 89, 204, 6, 105, 61, 137, 132, 106, 217, 244, 174, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 809e1d7bbd9903fb58744350b56c0d90, }, ), received_events: EventHandle { count: 3698999027454403948, key: EventKey( [ 61, 79, 194, 119, 94, 157, 12, 240, 206, 251, 120, 100, 19, 229, 50, 1, 72, 233, 96, 212, 201, 75, 0, 122, ], ), }, sent_events: EventHandle { count: 5331896888290276591, key: EventKey( [ 159, 226, 216, 171, 144, 178, 45, 127, 223, 41, 218, 92, 152, 89, 139, 48, 84, 145, 125, 219, 47, 1, 54, 224, ], ), }, sequence_number: 12272114615905951802, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba754a4b4a648fccf9b6a224df1dee8c4307fb8440ed298f51485a82b1d19545): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b1014491b81ab2ef34c88eccb8f8852ba0e56afdc975390b1491dd4a76780f2e7fb24a7a669372cbd445d49fb402ca4231918c2c7a65a38293a554e23183e9c4ef227ddab14b1c01d0ea6ddee5af0900000bb3d6a0a1a02f01998f50dc7d414b207a4a7c554b61f763836072b174af9959186587c693cb53a6bb95992f807079d722d8f51d547dd4b7b2a0170a432054be4518f1f2148dc814a2658ed245e344a2862228526b6f047017f010bc44cc33086acd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708573b914daede0aae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 145, 184, 26, 178, 239, 52, 200, 142, 204, 184, 248, 133, 43, 160, 229, 106, 253, 201, 117, 57, 11, 20, 145, 221, 74, 118, 120, 15, 46, 127, 178, 74, 122, 102, 147, 114, 203, 212, 69, 212, 159, 180, 2, 202, 66, 49, 145, 140, 44, 122, 101, 163, 130, 147, 165, 84, 226, 49, 131, 233, 196, 239, 34, 125, 218, 177, 75, 28, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d0ea6ddee5af0900000bb3d6a0a1a02f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 998f50dc7d414b207a4a7c554b61f763, }, ), received_events: EventHandle { count: 6456384456540446851, key: EventKey( [ 101, 135, 198, 147, 203, 83, 166, 187, 149, 153, 47, 128, 112, 121, 215, 34, 216, 245, 29, 84, 125, 212, 183, 178, ], ), }, sent_events: EventHandle { count: 5025546731732473760, key: EventKey( [ 241, 242, 20, 141, 200, 20, 162, 101, 142, 210, 69, 227, 68, 162, 134, 34, 40, 82, 107, 111, 4, 112, 23, 240, ], ), }, sequence_number: 14801652143869967376, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba8a8349fa98cc89ac0a24b613d547f2e305ef1c7e7190f5c9ea43ea9cb8feb4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101546005cd8237f91f0151252a8b638637621041a364747892d757061c9911e3b302bad3802530a4fef26fa5bb9c20e9cf2011baab3e396ce62598eb7701654807e968f6c43a3c315f1305fd554a2b858bfa4ccd15a501f15ca7f2d6b8bc55f9e16f00c148098000831de5d3eeb9ae3e18d3d4f2ccfaa568e7ecb094bfddae64ee2f918aed0828287de86c1200ea7e9d5418bfba669ca02f12e987080af56a752419e0279c11673df1864b2db83816ca8b702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a92706d82eb8468 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 5, 205, 130, 55, 249, 31, 1, 81, 37, 42, 139, 99, 134, 55, 98, 16, 65, 163, 100, 116, 120, 146, 215, 87, 6, 28, 153, 17, 227, 179, 2, 186, 211, 128, 37, 48, 164, 254, 242, 111, 165, 187, 156, 32, 233, 207, 32, 17, 186, 171, 62, 57, 108, 230, 37, 152, 235, 119, 1, 101, 72, 7, 233, 104, 246, 196, 58, 60, 49, 95, 19, 5, 253, 85, 74, 43, 133, 139, 250, 76, 205, 21, 165, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f15ca7f2d6b8bc55f9e16f00c1480980, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4516751911707549059, key: EventKey( [ 211, 212, 242, 204, 250, 165, 104, 231, 236, 176, 148, 191, 221, 174, 100, 238, 47, 145, 138, 237, 8, 40, 40, 125, ], ), }, sent_events: EventHandle { count: 6097169014018174184, key: EventKey( [ 191, 186, 102, 156, 160, 47, 18, 233, 135, 8, 10, 245, 106, 117, 36, 25, 224, 39, 156, 17, 103, 61, 241, 134, ], ), }, sequence_number: 8109797750800395595, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bafb204dab0c64741bac181bf48000a98ce0cb1a6a136c1ba457962a1cc0e3d3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125e96bba105229e8120fac5864ded8849392e2d033f2fb170e03f18acfbce3e80b2cef59788e01e80b5dbc92d80b39c4d399d1b6fd1d110095c3f68e08966b60183e07ce3456c3a30d481a86a420745b05a63860fe7c6ed40dd344dc1bd957122d1897c9c49f4990678cd4d24dd841098ef02fc001cdf92bedb20082e06056fcc86e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70854bf74f7ccd14013 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 107, 186, 16, 82, 41, 232, 18, 15, 172, 88, 100, 222, 216, 132, 147, 146, 226, 208, 51, 242, 251, 23, 14, 3, 241, 138, 207, 188, 227, 232, 11, 44, 239, 89, 120, 142, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e80b5dbc92d80b39c4d399d1b6fd1d11, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6947811813651563413, key: EventKey( [ 62, 7, 206, 52, 86, 195, 163, 13, 72, 26, 134, 164, 32, 116, 91, 5, 166, 56, 96, 254, 124, 110, 212, 13, ], ), }, sent_events: EventHandle { count: 3247754871274489043, key: EventKey( [ 151, 201, 196, 159, 73, 144, 103, 140, 212, 210, 77, 216, 65, 9, 142, 240, 47, 192, 1, 205, 249, 43, 237, 178, ], ), }, sequence_number: 7982907787436917248, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb15a062e2e8f96652be857725bf8f0bd3bf8cd40dd5f0fcdfad24e709c2437f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d01402593b0f5f54ad52d6b1935f55e2b5b12b2d1e47204caab7e54fbb9bea654f39f2c8b154aff5aa7d9c6a65c931fe933da299c74398075ce62fbf6631b99e849400001a77d9cbb089ef32d15560d48c8442f9dab5e96a8377b053e18ba5dd88f666b35f2016a7390cb50b59a32142d038feb645a2a95ee51f7e708021872dc34407d2b6a0fea9172ae650492007f8f7262176c3f71c59d702ada0d1a292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdafe0d8122889c5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 37, 147, 176, 245, 245, 74, 213, 45, 107, 25, 53, 245, 94, 43, 91, 18, 178, 209, 228, 114, 4, 202, 171, 126, 84, 251, 185, 190, 166, 84, 243, 159, 44, 139, 21, 74, 255, 90, 167, 217, 198, 166, 92, 147, 31, 233, 51, 218, 41, 156, 116, 57, 128, 117, 206, 98, 251, 246, 99, 27, 153, 232, 73, 64, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a77d9cbb089ef32d15560d48c8442f9d, }, ), received_events: EventHandle { count: 4469113684216929963, key: EventKey( [ 186, 93, 216, 143, 102, 107, 53, 242, 1, 106, 115, 144, 203, 80, 181, 154, 50, 20, 45, 3, 143, 235, 100, 90, ], ), }, sent_events: EventHandle { count: 146622037307069738, key: EventKey( [ 114, 220, 52, 64, 125, 43, 106, 15, 234, 145, 114, 174, 101, 4, 146, 0, 127, 143, 114, 98, 23, 108, 63, 113, ], ), }, sequence_number: 2961694935615577541, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb408e14271f956d78ab9f164089d70c107de3ec713e188dc98724dae72da4d1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800123843b47849127076d80ffd02831b64b0b12eab56bfd7c73073e5960241db17f7f74c22401e0a3ce506841d7cb5ea3d58638e4fc3d00c0f998861de261771856d20572f417d583fcfb131f36149b6ab624705b72a3e6c8159f5294cf7c96411811201aefa8f626fe7c0deadd9ccc34139f5cca114a61f13734eb2acf802a69bf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8fa8cfc768f302e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 132, 59, 71, 132, 145, 39, 7, 109, 128, 255, 208, 40, 49, 182, 75, 11, 18, 234, 181, 107, 253, 124, 115, 7, 62, 89, 96, 36, 29, 177, 127, 127, 116, 194, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e0a3ce506841d7cb5ea3d58638e4fc3d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8602405379694459328, key: EventKey( [ 86, 210, 5, 114, 244, 23, 213, 131, 252, 251, 19, 31, 54, 20, 155, 106, 182, 36, 112, 91, 114, 163, 230, 200, ], ), }, sent_events: EventHandle { count: 4726102089960431381, key: EventKey( [ 17, 32, 26, 239, 168, 246, 38, 254, 124, 13, 234, 221, 156, 204, 52, 19, 159, 92, 202, 17, 74, 97, 241, 55, ], ), }, sequence_number: 13792602066518731572, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb4b34d092dd9adeac015f9f9e5ebd9988f265aac344ba26b1204b8039f8bce5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f12a86abf66f105187620824fd7c449a282805b0000dcd3510edfdbd95f1847b5e895a683622eaeb551b552b426078dcb697b77b2103d24940188a76ae717186392a5d71086c6a36fe088fc63c6099dc9f8a76a0209cfb88b80f9117fb61bcc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4061cd168089bab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 106, 191, 102, 241, 5, 24, 118, 32, 130, 79, 215, 196, 73, 162, 130, 128, 91, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6906793254613799900, key: EventKey( [ 71, 181, 232, 149, 166, 131, 98, 46, 174, 181, 81, 181, 82, 180, 38, 7, 141, 203, 105, 123, 119, 178, 16, 61, ], ), }, sent_events: EventHandle { count: 1722462650266391588, key: EventKey( [ 99, 146, 165, 215, 16, 134, 198, 163, 111, 224, 136, 252, 99, 198, 9, 157, 201, 248, 167, 106, 2, 9, 207, 184, ], ), }, sequence_number: 14707549664987152523, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb847d73c0ad7f3050a4793113db65ee356967df71f969679b04de9c16f3faa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32770c678b4a3f94003bdb78fe279292f5a9252f3437012fa3aedefb0c45c214f44c9aa52392cb39c74a343d6f4abeccd2ddd70000c03bfdf079d7275118171b6bfb2249ce74ea2f8983a2d1f8d65dc23af1da2319f09128b02ca7ce147118d89c34c879eea87b6fcc8a9b53a30b11394dd0a0801f66f3daa4db3160a2e42a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db47ce01c038bb88 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, 12, 103, 139, 74, 63, 148, 0, 59, 219, 120, 254, 39, 146, 146, 245, 169, 37, 47, 52, 55, 1, 47, 163, 174, 222, 251, 12, 69, 194, 20, 244, 76, 154, 165, 35, 146, 203, 57, 199, 74, 52, 61, 111, 74, 190, 204, 210, 221, 215, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5847879559898020800, key: EventKey( [ 23, 27, 107, 251, 34, 73, 206, 116, 234, 47, 137, 131, 162, 209, 248, 214, 93, 194, 58, 241, 218, 35, 25, 240, ], ), }, sent_events: EventHandle { count: 8148364843224672401, key: EventKey( [ 216, 156, 52, 200, 121, 238, 168, 123, 111, 204, 138, 155, 83, 163, 11, 17, 57, 77, 208, 160, 128, 31, 102, 243, ], ), }, sequence_number: 3090773778320041178, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bbc3ecfbfb39fa6149222be63410ee2a9eee5048d5ba688b226e62dc765ecbf6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99201350eb13990d42057b81f3db7ff3ed932be8591ed6f24078ad5930612e7276b7798b1391bf8fee4192d1dd86239267ee3b17d8d2cd94b000177bedffc59689bbc2a4417125a8fc415397c3651007548771842cbd23f114c9e289b281479de93dd7807d46bbfd3a8c61a8452d98237cfb84518451149ec4aacfb701ff2ab7df97757cbe0d2d96c6469333d6f4bf71a08dae1dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708acf43ff64c5e89b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 177, 57, 144, 212, 32, 87, 184, 31, 61, 183, 255, 62, 217, 50, 190, 133, 145, 237, 111, 36, 7, 138, 213, 147, 6, 18, 231, 39, 107, 119, 152, 177, 57, 27, 248, 254, 228, 25, 45, 29, 216, 98, 57, 38, 126, 227, 177, 125, 141, 44, 217, 75, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 77bedffc59689bbc2a4417125a8fc415, }, ), received_events: EventHandle { count: 8595248533059566649, key: EventKey( [ 66, 203, 210, 63, 17, 76, 158, 40, 155, 40, 20, 121, 222, 147, 221, 120, 7, 212, 107, 191, 211, 168, 198, 26, ], ), }, sent_events: EventHandle { count: 5023993221657219716, key: EventKey( [ 69, 17, 73, 236, 74, 172, 251, 112, 31, 242, 171, 125, 249, 119, 87, 203, 224, 210, 217, 108, 100, 105, 51, 61, ], ), }, sequence_number: 15916242286451051375, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc7868a4ab35f64df85d87d25bc174b92ccfa1e552553bb6cca4ccbd22b6696f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997012ab6ab238dff55bfd8a88a9c6d7bf0d7461b9e1fd06dda2ea144c7e4ed711e8f5d456804f554a0c4f28afe01ad6c277d73f4c4036038622011a7f9330147ae2f0eb19c8ee8af4935cd134345413c9640c68a903d3118e9a0e5f29de6453f1c46a2ba23a82d9e8f9dfde89187d093c1951ee6a8bb327318598554b9caf75d1744c32272a5d3a0923b4a63224330e3ac16d2a3afe1ad5dd72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847649a3e3196f63d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 171, 35, 141, 255, 85, 191, 216, 168, 138, 156, 109, 123, 240, 215, 70, 27, 158, 31, 208, 109, 218, 46, 161, 68, 199, 228, 237, 113, 30, 143, 93, 69, 104, 4, 245, 84, 160, 196, 242, 138, 254, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ad6c277d73f4c4036038622011a7f933, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 47ae2f0eb19c8ee8af4935cd13434541, }, ), received_events: EventHandle { count: 3548151007143827004, key: EventKey( [ 233, 160, 229, 242, 157, 230, 69, 63, 28, 70, 162, 186, 35, 168, 45, 158, 143, 157, 253, 232, 145, 135, 208, 147, ], ), }, sent_events: EventHandle { count: 8300903397286909377, key: EventKey( [ 89, 133, 84, 185, 202, 247, 93, 23, 68, 195, 34, 114, 165, 211, 160, 146, 59, 74, 99, 34, 67, 48, 227, 172, ], ), }, sequence_number: 15518751075814593046, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bcb603049c3b30a21250e2a2afdbb0782bbbd501ac4afd82b693b9571d2ecd63): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f320c240c3719c5427ec7dac8d530c0b9742e9379cca9e1d0603d4a31b8236049926f63469aa6784a3f477adc38b20436a5da780000bddabd566ff35959187c73b45e0bc9d4a91f94e3fac4093d178d4c18792bd1f95d3394aeca24c3b06118030aabb1f8336e14b9ecfc257ae5aa989a1c3f38e7eeef09664ae48d005babb22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70842e6a47383b5fc8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 36, 12, 55, 25, 197, 66, 126, 199, 218, 200, 213, 48, 192, 185, 116, 46, 147, 121, 204, 169, 225, 208, 96, 61, 74, 49, 184, 35, 96, 73, 146, 111, 99, 70, 154, 166, 120, 74, 63, 71, 122, 220, 56, 178, 4, 54, 165, 218, 120, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6438444801825036989, key: EventKey( [ 124, 115, 180, 94, 11, 201, 212, 169, 31, 148, 227, 250, 196, 9, 61, 23, 141, 76, 24, 121, 43, 209, 249, 93, ], ), }, sent_events: EventHandle { count: 7039340780366763059, key: EventKey( [ 3, 10, 171, 177, 248, 51, 110, 20, 185, 236, 252, 37, 122, 229, 170, 152, 154, 28, 63, 56, 231, 238, 239, 9, ], ), }, sequence_number: 12874484017707371110, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bcb76b5cf684be29de17869f8f9f341be66aff407b79c244fbb661a4d5b77da0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01312eabc92838be155ef1d0d855ae630cb99bc5a1452228d0e1595fe0226e2f743336509ed142659508005b908fe2e62e8d840001754d3ac92bd907269e9102926dd15b98b19e1aae37d38d7718ac8d158548a3281b316a557080397456a54b23f708d8d8a0d454aa69db575a1f18f45b6156c75771c9c98e80da6d9e83ffc4463192652840ce65add4590b1309f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b5d7f28d629811c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 171, 201, 40, 56, 190, 21, 94, 241, 208, 216, 85, 174, 99, 12, 185, 155, 197, 161, 69, 34, 40, 208, 225, 89, 95, 224, 34, 110, 47, 116, 51, 54, 80, 158, 209, 66, 101, 149, 8, 0, 91, 144, 143, 226, 230, 46, 141, 132, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 754d3ac92bd907269e9102926dd15b98, }, ), received_events: EventHandle { count: 8614773898327269041, key: EventKey( [ 172, 141, 21, 133, 72, 163, 40, 27, 49, 106, 85, 112, 128, 57, 116, 86, 165, 75, 35, 247, 8, 216, 216, 160, ], ), }, sent_events: EventHandle { count: 2259214762961949908, key: EventKey( [ 244, 91, 97, 86, 199, 87, 113, 201, 201, 142, 128, 218, 109, 158, 131, 255, 196, 70, 49, 146, 101, 40, 64, 206, ], ), }, sequence_number: 17584607159517490533, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(be4e6487195fefadda492420a6eeb50286b15b2595b0331932c546467151e3f1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e113f7d04be037ac210eaf2027f97ff45c335014810fc61b68286101b7a7b688343cbff01278b7da212ef316a7dc2acc37af07fa24b9e9ce36d9a5f0018acacbc15ab5fe515b5daccc649789966c4287865a96036c61748d696f54e01191832e93452a899430d3603b36312e5b6482405c8c66e073325e1df2c789b37143c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876aeaffc01310bfd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 125, 4, 190, 3, 122, 194, 16, 234, 242, 2, 127, 151, 255, 69, 195, 53, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4810fc61b68286101b7a7b688343cbff, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 278b7da212ef316a7dc2acc37af07fa2, }, ), received_events: EventHandle { count: 26909919548317259, key: EventKey( [ 172, 172, 188, 21, 171, 95, 229, 21, 181, 218, 204, 198, 73, 120, 153, 102, 196, 40, 120, 101, 169, 96, 54, 198, ], ), }, sent_events: EventHandle { count: 1801808142629488663, key: EventKey( [ 50, 233, 52, 82, 168, 153, 67, 13, 54, 3, 179, 99, 18, 229, 182, 72, 36, 5, 200, 198, 110, 7, 51, 37, ], ), }, sequence_number: 4329146282685554657, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bed2cc71e1ac9a10a27dafbc12d50d3bbcfc58f93559ebb4857da1ef67171c6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d81f0a5c2ad8e46057342f048e70001f7c503a879500f2a15f0c07e80402c413ad6f82f0d8b554a181e538cc07f76bba50fa0f60e97c0600713c356007025b3f7f84cd5a76a001e2618fd102c875d66b9ddce70ef499152ca3506961cc7daf6469238bb2eeebb0f89f32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083466dd8e3879fa1c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 129, 240, 165, 194, 173, 142, 70, 5, 115, 66, 240, 72, 231, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f7c503a879500f2a15f0c07e80402c41, }, ), received_events: EventHandle { count: 5356340220582745658, key: EventKey( [ 30, 83, 140, 192, 127, 118, 187, 165, 15, 160, 246, 14, 151, 192, 96, 7, 19, 195, 86, 0, 112, 37, 179, 247, ], ), }, sent_events: EventHandle { count: 2746633280824888568, key: EventKey( [ 253, 16, 44, 135, 93, 102, 185, 221, 206, 112, 239, 73, 145, 82, 202, 53, 6, 150, 28, 199, 218, 246, 70, 146, ], ), }, sequence_number: 17548574722855189304, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf1df6738a20a34ce09cd1cb2a79c580321f4611b1f63c69d05c478463779e62): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013eee52eebb6e6d2cc7758d5a6e67da9f5eb177ac0198ad3c284af9a009aae8ea132a0f9ca2858874200cbba9df5b71c6f58f61447b6a39f7720f1bd8f7078201b631b00fe57127b0a7e3a8df02c3231f00f86a5509b74cf764186af594290763d4a9b34e0fd06bd63616b7e7ceb6aa3def9aa57a6e8ed1d4344c180aa6cdfd030bc128afa0b5e70a3e803ee07306a90df260e755cdbafb33d64a332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3c521f7edb1e47f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 82, 238, 187, 110, 109, 44, 199, 117, 141, 90, 110, 103, 218, 159, 94, 177, 119, 172, 1, 152, 173, 60, 40, 74, 249, 160, 9, 170, 232, 234, 19, 42, 15, 156, 162, 133, 136, 116, 32, 12, 187, 169, 223, 91, 113, 198, 245, 143, 97, 68, 123, 106, 57, 247, 114, 15, 27, 216, 247, 7, 130, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b631b00fe57127b0a7e3a8df02c3231f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7275368072059644664, key: EventKey( [ 106, 245, 148, 41, 7, 99, 212, 169, 179, 78, 15, 208, 107, 214, 54, 22, 183, 231, 206, 182, 170, 61, 239, 154, ], ), }, sent_events: EventHandle { count: 5491247842174335653, key: EventKey( [ 10, 166, 205, 253, 3, 11, 193, 40, 175, 160, 181, 231, 10, 62, 128, 62, 224, 115, 6, 169, 13, 242, 96, 231, ], ), }, sequence_number: 3696001962965912917, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf38a97144b57fc1ceedc2610e206e7ebc6500355fbf396468f3254908cb6c64): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7013ab2ac9a3b40e5f2f459d16e7efadeb4788408c465092b79d20731bf146ac8db0a8334296133a38f0d6dd0993506a3f538de159883a897279aa163017452b2e1205c44b8c61c312090efd3bf014f6de326ad036a7abe8d7e7bf1f79b338c8566448864fe2418e0dc61c68be0dafd3042bc98f9823f22d85424f44e371897da51acbd43099e391867e465c2e6598e82ee2eb02e88bd654327bab1f069948321588092aaa1968ea72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800c075c37b48366a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 178, 172, 154, 59, 64, 229, 242, 244, 89, 209, 110, 126, 250, 222, 180, 120, 132, 8, 196, 101, 9, 43, 121, 210, 7, 49, 191, 20, 106, 200, 219, 10, 131, 52, 41, 97, 51, 163, 143, 13, 109, 208, 153, 53, 6, 163, 245, 56, 222, 21, 152, 131, 168, 151, 39, 154, 161, 99, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7452b2e1205c44b8c61c312090efd3bf, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4f6de326ad036a7abe8d7e7bf1f79b33, }, ), received_events: EventHandle { count: 2665678565875811724, key: EventKey( [ 224, 220, 97, 198, 139, 224, 218, 253, 48, 66, 188, 152, 249, 130, 63, 34, 216, 84, 36, 244, 78, 55, 24, 151, ], ), }, sent_events: EventHandle { count: 4151766093031821786, key: EventKey( [ 103, 228, 101, 194, 230, 89, 142, 130, 238, 46, 176, 46, 136, 189, 101, 67, 39, 186, 177, 240, 105, 148, 131, 33, ], ), }, sequence_number: 12073753272122507352, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfbcfc2f15a369d2f58049425f76afffe9b182569d75dcd9872df9d71e43aec5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98001133a8f93e92238cd3a04cdd2b2650bc323e53974016cf7179cec9ae84170a9bd049459da7a01bf344bc588e53aceaa67b9cbd456c11c713ac4991cd7723f189eab3b4b59afc52ae72b69fc67c3ed788d30b6ebf78db2e9b77267f64265d34718688fa4ae0fc9c942ff932334fca8288b9e68eaed6c926ce28f4cfc9825ba4a5e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f51e224bf1e06930 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 58, 143, 147, 233, 34, 56, 205, 58, 4, 205, 210, 178, 101, 11, 195, 35, 229, 57, 116, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6cf7179cec9ae84170a9bd049459da7a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bf344bc588e53aceaa67b9cbd456c11c, }, ), received_events: EventHandle { count: 4571953089573304945, key: EventKey( [ 158, 171, 59, 75, 89, 175, 197, 42, 231, 43, 105, 252, 103, 195, 237, 120, 141, 48, 182, 235, 247, 141, 178, 233, ], ), }, sent_events: EventHandle { count: 5175591735055053495, key: EventKey( [ 104, 143, 164, 174, 15, 201, 201, 66, 255, 147, 35, 52, 252, 168, 40, 139, 158, 104, 234, 237, 108, 146, 108, 226, ], ), }, sequence_number: 6794447658485042319, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfc6c740e6d0c19624984a382c7ac111b3823b876a90e43320d65a6517d72716): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98001339d93123d899bde99e14559897ca909f0353537674d088fcc72ff0526937b53d0f163a8e524816e9194d8bde6aef63218d083af0000794b57336243d14d1885d4af99917dce5d6ca60e3d9e67196b9756dab2a9b0651d55191b4748af6b7f18be7946863c5e3a86622cc8089048a188e5cdffced1733a122e6d19566ad67c212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088afdd1429609b435 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 147, 18, 61, 137, 155, 222, 153, 225, 69, 89, 137, 124, 169, 9, 240, 53, 53, 55, 103, 77, 8, 143, 204, 114, 255, 5, 38, 147, 123, 83, 208, 241, 99, 168, 229, 36, 129, 110, 145, 148, 216, 189, 230, 174, 246, 50, 24, 208, 131, 175, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5607337100100193145, key: EventKey( [ 133, 212, 175, 153, 145, 125, 206, 93, 108, 166, 14, 61, 158, 103, 25, 107, 151, 86, 218, 178, 169, 176, 101, 29, ], ), }, sent_events: EventHandle { count: 9181624990290352469, key: EventKey( [ 190, 121, 70, 134, 60, 94, 58, 134, 98, 44, 200, 8, 144, 72, 161, 136, 229, 205, 255, 206, 209, 115, 58, 18, ], ), }, sequence_number: 2413039252563127598, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfddd2eef2f0adb7b34c25c671a99602c9ce6d3b263979545527beebe1a2277c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c983011669fd5a2f46f12fb891d44bde608564f70d832f873fa1018143726e03fcf4b41fcc870a6d01374601a9746e6ed69474af817b151d75252a4647f5ad449bfb430f189c0d80d0322571f255fb5a0084ef42ae93aff64aa563e6c00e5484c255d5be37186076c9e7f5db0038e3c94ca7a276ec123f5f0ee212af96091c0630af26718fd02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812819f10e9c23764 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 105, 253, 90, 47, 70, 241, 47, 184, 145, 212, 75, 222, 96, 133, 100, 247, 13, 131, 47, 135, 63, 161, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8143726e03fcf4b41fcc870a6d013746, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a9746e6ed69474af817b151d75252a46, }, ), received_events: EventHandle { count: 1099999378299286855, key: EventKey( [ 156, 13, 128, 208, 50, 37, 113, 242, 85, 251, 90, 0, 132, 239, 66, 174, 147, 175, 246, 74, 165, 99, 230, 192, ], ), }, sent_events: EventHandle { count: 4016882481973449742, key: EventKey( [ 96, 118, 201, 231, 245, 219, 0, 56, 227, 201, 76, 167, 162, 118, 236, 18, 63, 95, 14, 226, 18, 175, 150, 9, ], ), }, sequence_number: 15028354892520490524, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c0a5b4b7a0465cd83305294e4ba519a4bd0f65ed686f6d735ae0dc8430b9a936): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e0467a3edd792b72fbd5717a48407f07b668ea45b42d1b8a4dee2dd7b4bc40d8a15452095ed7af864bdf1ffb3319c88c77a1d44711cec880851ea2919a90471b3006190b667240b3a028b9a9ad0cc2f44017e8bc25ebbad32100afff98a1701a18b83bb0b6f2d1765b5aa1041375f8e004dfa9a5bef2b96291802724c3ed4e52c955cf10c039e0f555bd11ace192d7e57fb99b6b3728a54c242185ebcc1f0852345b97c333a8fc14778847bcb1632ad4b90530fd8a0ca99e5dd0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708844b1f07151228a1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 103, 163, 237, 215, 146, 183, 47, 189, 87, 23, 164, 132, 7, 240, 123, 102, 142, 164, 91, 66, 209, 184, 164, 222, 226, 221, 123, 75, 196, 13, 138, 21, 69, 32, 149, 237, 122, 248, 100, 189, 241, 255, 179, 49, 156, 136, 199, 122, 29, 68, 113, 28, 236, 136, 8, 81, 234, 41, 25, 169, 4, 113, 179, 0, 97, 144, 182, 103, 36, 11, 58, 2, 139, 154, 154, 208, 204, 47, 68, 1, 126, 139, 194, 94, 187, 173, 50, 16, 10, 255, 249, 138, 23, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a18b83bb0b6f2d1765b5aa1041375f8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2996630909095705165, key: EventKey( [ 2, 114, 76, 62, 212, 229, 44, 149, 92, 241, 12, 3, 158, 15, 85, 91, 209, 26, 206, 25, 45, 126, 87, 251, ], ), }, sent_events: EventHandle { count: 4810500305591711385, key: EventKey( [ 94, 188, 193, 240, 133, 35, 69, 185, 124, 51, 58, 143, 193, 71, 120, 132, 123, 203, 22, 50, 173, 75, 144, 83, ], ), }, sequence_number: 855091952962557967, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c0ac560d5d34ffa0b03fa28d9c250a541266240b7bb908329bd131d319f928ce): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014cd3c6c1e6797680fbddffec9c5c7ad578937714a2b3850f6e979a3b5ff1e12183528b8ceffbe464f08881dcbe8ca8bd4e79c474614551da79d582ec90b45aff49e221472178b2c6d8468d5bce0131fb6f144f10341813f282d217fa92c700a9c0040c3417214c189b10e8aa79b907250ce2248dd0a6a55a62f56c16636473e5928df2bbc5c67c35183559fa3d892ba10d83a58a9c4ff7a0876fda7d8b612416662d131f890b945d562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084eb752f92cd5db6f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 198, 193, 230, 121, 118, 128, 251, 221, 255, 236, 156, 92, 122, 213, 120, 147, 119, 20, 162, 179, 133, 15, 110, 151, 154, 59, 95, 241, 225, 33, 131, 82, 139, 140, 239, 251, 228, 100, 240, 136, 129, 220, 190, 140, 168, 189, 78, 121, 196, 116, 97, 69, 81, 218, 121, 213, 130, 236, 144, 180, 90, 255, 73, 226, 33, 71, 33, 120, 178, 198, 216, 70, 141, 91, 206, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 31fb6f144f10341813f282d217fa92c7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5485691333421351081, key: EventKey( [ 155, 16, 232, 170, 121, 185, 7, 37, 12, 226, 36, 141, 208, 166, 165, 90, 98, 245, 108, 22, 99, 100, 115, 229, ], ), }, sent_events: EventHandle { count: 3854173933686394258, key: EventKey( [ 53, 89, 250, 61, 137, 43, 161, 13, 131, 165, 138, 156, 79, 247, 160, 135, 111, 218, 125, 139, 97, 36, 22, 102, ], ), }, sequence_number: 6223293037361959725, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c12b36ce51f15bccfc66fb975e8cb99a7bba3d0fd78a2472571aae4bf8473a53): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201553fad6245fc8aa757b11c4174702283eca643588ca84a83276ee2cae3ddc9fd92a59c699c810c18777c26d3b668e8f391007da32bd68984bc56dc4c5ca905b38db3f3a2cf97a4a197bd29b4d98035fdeb913f202632000186d9abab20d7bbdb873bab62d6802f9d8ba6d33669616060184cd0c694bcd41a1a59105fd3c2120c1673a6b584fd6f6a7395593b0d5e3b4b25186550a9b196977f98b92813a698dae2588a9770655182502de7da9822f5ca21e12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70821947ef467be4049 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 173, 98, 69, 252, 138, 167, 87, 177, 28, 65, 116, 112, 34, 131, 236, 166, 67, 88, 140, 168, 74, 131, 39, 110, 226, 202, 227, 221, 201, 253, 146, 165, 156, 105, 156, 129, 12, 24, 119, 124, 38, 211, 182, 104, 232, 243, 145, 0, 125, 163, 43, 214, 137, 132, 188, 86, 220, 76, 92, 169, 5, 179, 141, 179, 243, 162, 207, 151, 164, 161, 151, 189, 41, 180, 217, 128, 53, 253, 235, 145, 63, 32, 38, 50, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 86d9abab20d7bbdb873bab62d6802f9d, }, ), received_events: EventHandle { count: 6944657729924605579, key: EventKey( [ 76, 208, 198, 148, 188, 212, 26, 26, 89, 16, 95, 211, 194, 18, 12, 22, 115, 166, 181, 132, 253, 111, 106, 115, ], ), }, sent_events: EventHandle { count: 2687306877791590805, key: EventKey( [ 101, 80, 169, 177, 150, 151, 127, 152, 185, 40, 19, 166, 152, 218, 226, 88, 138, 151, 112, 101, 81, 130, 80, 45, ], ), }, sequence_number: 16222470486961478375, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c1600a2e6c577478bfcdbf560a9e8160a0aead937d2eb473b11641e8f14414bd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417366fc94b546a8bbd572f18c1aadd359750daf1ac60283d0001d687306ca3b1fd60f8a3dbaebe9b13bf4b36915f0a9edb1d1802c35dfdc07cc05bc8c2e82cd1cae26a881525e99059ca65830756d771804d7a186145aada9ad8ee45668acd4d93f58fd1157fe8eb3a56f3286dc737532e0f34562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70867fb0b24464eb928 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 111, 201, 75, 84, 106, 139, 189, 87, 47, 24, 193, 170, 221, 53, 151, 80, 218, 241, 172, 96, 40, 61, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d687306ca3b1fd60f8a3dbaebe9b13bf, }, ), received_events: EventHandle { count: 2151487014389757515, key: EventKey( [ 2, 195, 93, 253, 192, 124, 192, 91, 200, 194, 232, 44, 209, 202, 226, 106, 136, 21, 37, 233, 144, 89, 202, 101, ], ), }, sent_events: EventHandle { count: 8812841272266327939, key: EventKey( [ 97, 69, 170, 218, 154, 216, 238, 69, 102, 138, 205, 77, 147, 245, 143, 209, 21, 127, 232, 235, 58, 86, 243, 40, ], ), }, sequence_number: 6211606477689833325, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c1e70c8469dbdb79d6f4ca37e9baf6ac60d4b5124f3a6b78c9c4cc7fcd09e8fe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96104f444466e0001d91ff4b726309f0a3201a3a4ae98a097f97aeec45554ab0518f26c43c02c6d4dc3c923e35e589bde7e8c79ee78639613944876d0b6edb4b46c18eb2b24d85f1771c09d931b61a9d2c69273dbd7978e22b9d3bef5601205c9f0bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e456f69faf205201 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 68, 70, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d91ff4b726309f0a3201a3a4ae98a097, }, ), received_events: EventHandle { count: 408512918560078585, key: EventKey( [ 242, 108, 67, 192, 44, 109, 77, 195, 201, 35, 227, 94, 88, 155, 222, 126, 140, 121, 238, 120, 99, 150, 19, 148, ], ), }, sent_events: EventHandle { count: 7833084584971499080, key: EventKey( [ 235, 43, 36, 216, 95, 23, 113, 192, 157, 147, 27, 97, 169, 210, 198, 146, 115, 219, 215, 151, 142, 34, 185, 211, ], ), }, sequence_number: 13542545103123445182, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c30dea296a4236b4967ec288bd3ca59c28cb0a450de3b3ec7a602c18d85ab819): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113e67b8b1167945b4f6e8d23d10a6814b25a875a0192727b8b81b85055f7819094aeee053b01d03c229a49769f5987f1a810164df5023915f6917595ff39182dcd98419b7e5c0c481c87d7459b1ae5f3ddf7403a91fc547e05f8bc960c255918fb98a58dbc9e1ab98e1738517c1fc49bba06be9269834c0d5c5a2d0b38f11e0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b12f8cc77855a92e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 123, 139, 17, 103, 148, 91, 79, 110, 141, 35, 209, 10, 104, 20, 178, 90, 135, 90, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 92727b8b81b85055f7819094aeee053b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d03c229a49769f5987f1a810164df502, }, ), received_events: EventHandle { count: 4179223311415645497, key: EventKey( [ 45, 205, 152, 65, 155, 126, 92, 12, 72, 28, 135, 215, 69, 155, 26, 229, 243, 221, 247, 64, 58, 145, 252, 84, ], ), }, sent_events: EventHandle { count: 6423554285068879230, key: EventKey( [ 251, 152, 165, 141, 188, 158, 26, 185, 142, 23, 56, 81, 124, 31, 196, 155, 186, 6, 190, 146, 105, 131, 76, 13, ], ), }, sequence_number: 801343006726511196, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c320cf80ec4194971a41dfd0ed90a97be2d8456a9b4f4597a5c56276413cab0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c976295073aceb62f7d05c31f6fa3d471698fb3a454745272d47576978c2abb469a91f8a73e2e7e5e12a282500009c241721f3a2055a186dc06e9e5d52628f8681eb3317a2bd7ba34df672c06a3128dba334b81c1de254184d6d23b3576a7ab5b37bd8c2cfb098fb0e964a0c69449490bba9f07b44ec1ed92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081f68f905930ada6f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 80, 115, 172, 235, 98, 247, 208, 92, 49, 246, 250, 61, 71, 22, 152, 251, 58, 69, 71, 69, 39, 45, 71, 87, 105, 120, 194, 171, 180, 105, 169, 31, 138, 115, 226, 231, 229, 225, 42, 40, 37, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6486770003412984988, key: EventKey( [ 109, 192, 110, 158, 93, 82, 98, 143, 134, 129, 235, 51, 23, 162, 189, 123, 163, 77, 246, 114, 192, 106, 49, 40, ], ), }, sent_events: EventHandle { count: 6116483253109302235, key: EventKey( [ 77, 109, 35, 179, 87, 106, 122, 181, 179, 123, 216, 194, 207, 176, 152, 251, 14, 150, 74, 12, 105, 68, 148, 144, ], ), }, sequence_number: 15645201934412982715, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c3594c9324e78699435b3222045ac9d52dac42fd29526b7d47cb420417150aeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95609bc52088523b90aa936000091c9d082b5d2de17184a6774683dd74a15e879cb38bcd68dea1316d2b7196483a429ea68c86ec72c4e18d99204336526bb17c618a656ba93b4e81fd92ebc25956478c98b73e074d3bea12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c587c23decd7f512 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 82, 8, 133, 35, 185, 10, 169, 54, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1720043784727742865, key: EventKey( [ 74, 103, 116, 104, 61, 215, 74, 21, 232, 121, 203, 56, 188, 214, 141, 234, 19, 22, 210, 183, 25, 100, 131, 164, ], ), }, sent_events: EventHandle { count: 5633096512556296745, key: EventKey( [ 217, 146, 4, 51, 101, 38, 187, 23, 198, 24, 166, 86, 186, 147, 180, 232, 31, 217, 46, 188, 37, 149, 100, 120, ], ), }, sequence_number: 11654985384616758217, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c3825f162b107c246689a9bc17afd43a8b93d9f7a1b8b8ceddc9cab86e5dc570): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987012abfff7ed55730bda03e8200cb11d88a80110d4da0ae57322ce0519829fc422f3e93e760b79e30022eb340010653ceb978676c262f4f4f322f70eb5100c3d1a9052eb8c42b187ca6fb65b3f36f4a75556382dacacc0209895e506fe94a14f600e08f898a05691840cf67c309757549350b127aba81a9a1d48dbe7651ee0b2dcca2b036f70a9b6d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846de53691b3f26ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 255, 126, 213, 87, 48, 189, 160, 62, 130, 0, 203, 17, 216, 138, 128, 17, 13, 77, 160, 174, 87, 50, 44, 224, 81, 152, 41, 252, 66, 47, 62, 147, 231, 96, 183, 158, 48, 2, 46, 179, 64, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0653ceb978676c262f4f4f322f70eb51, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3153848146869211587, key: EventKey( [ 124, 166, 251, 101, 179, 243, 111, 74, 117, 85, 99, 130, 218, 202, 204, 2, 9, 137, 94, 80, 111, 233, 74, 20, ], ), }, sent_events: EventHandle { count: 7567607072294961398, key: EventKey( [ 64, 207, 103, 195, 9, 117, 117, 73, 53, 11, 18, 122, 186, 129, 169, 161, 212, 141, 190, 118, 81, 238, 11, 45, ], ), }, sequence_number: 7897918428415042252, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c41ed3b7840a868be33557f77a3aff1d9ecff5430aba3b249f8f6ae5af8aa3da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316b6e6abda28adc1fb2ccf1b3fb10aa72e0b7e5d5207b000015fd147b610c28a06c053488beab629c01075e35aaa10917418857d599ae355f31e11aac21c4f1039c6bd080f502528c7cf0b9a51f62ac68b6b18da2d16ed3e7add0c6430e1c7234c6cb7d3a7ce5db79145cbc79de994aa5da4c42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708930c7606fcd83162 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 230, 171, 218, 40, 173, 193, 251, 44, 207, 27, 63, 177, 10, 167, 46, 11, 126, 93, 82, 7, 176, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5fd147b610c28a06c053488beab629c0, }, ), received_events: EventHandle { count: 8399513103878026512, key: EventKey( [ 133, 125, 89, 154, 227, 85, 243, 30, 17, 170, 194, 28, 79, 16, 57, 198, 189, 8, 15, 80, 37, 40, 199, 207, ], ), }, sent_events: EventHandle { count: 7749505471644539403, key: EventKey( [ 218, 45, 22, 237, 62, 122, 221, 12, 100, 48, 225, 199, 35, 76, 108, 183, 211, 167, 206, 93, 183, 145, 69, 203, ], ), }, sequence_number: 14169553314838584775, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c484f538259fdd2363204324906e423c6e6fe17549b1f21db209b02f9ace22ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e11f7587236dcf9af1c0b2b6d94c2c38820a0000048a9ab39b2f6610d1858b33585f848eb7b130a8dd13996c1a9874f49ef156f986a7558434b8b04d73118ff6703adc26fbfb0aedd5ba25d63793cc5ec8425270030978167b027263175642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d0af467899e7a50 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 88, 114, 54, 220, 249, 175, 28, 11, 43, 109, 148, 194, 195, 136, 32, 160, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 964323040566159688, key: EventKey( [ 88, 179, 53, 133, 248, 72, 235, 123, 19, 10, 141, 209, 57, 150, 193, 169, 135, 79, 73, 239, 21, 111, 152, 106, ], ), }, sent_events: EventHandle { count: 3591344224160929909, key: EventKey( [ 255, 103, 3, 173, 194, 111, 191, 176, 174, 221, 91, 162, 93, 99, 121, 60, 197, 236, 132, 37, 39, 0, 48, 151, ], ), }, sequence_number: 7238746016012330881, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c4bab0ee0ef28d12dcb48011f24e36895faa07512b4546c19f4aa08ce140e4c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013ee063183699720061cbdba71f199340556159a54e583a8a695a7319b52b03c7f0c9613c0c59ccdce4b2677205f27cc6498299e9de9e9dd39a742e5379b92c0001d471f2f795f730a022520f24dbd2e5a38e92d8f829e38f64188e5df4a842e2d6d2ff58992a1532dd38723382f9a32cc6cfcd6ce263f23f9c5718b9690ee07212d466423e7cd8208f53bed7dd9527ea541c46afa1aeacfa8ac1ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e81441e3c8b4512 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 99, 24, 54, 153, 114, 0, 97, 203, 219, 167, 31, 25, 147, 64, 85, 97, 89, 165, 78, 88, 58, 138, 105, 90, 115, 25, 181, 43, 3, 199, 240, 201, 97, 60, 12, 89, 204, 220, 228, 178, 103, 114, 5, 242, 124, 198, 73, 130, 153, 233, 222, 158, 157, 211, 154, 116, 46, 83, 121, 185, 44, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d471f2f795f730a022520f24dbd2e5a3, }, ), received_events: EventHandle { count: 7246260094870524558, key: EventKey( [ 142, 93, 244, 168, 66, 226, 214, 210, 255, 88, 153, 42, 21, 50, 221, 56, 114, 51, 130, 249, 163, 44, 198, 207, ], ), }, sent_events: EventHandle { count: 6312991087957011661, key: EventKey( [ 185, 105, 14, 224, 114, 18, 212, 102, 66, 62, 124, 216, 32, 143, 83, 190, 215, 221, 149, 39, 234, 84, 28, 70, ], ), }, sequence_number: 18429163959420363183, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c51655eabfb2bf65e78e5708ef55419a4c106bfb6fc37a858f9761dd13ecc234): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417caddca0dad448f9a4d4f3f70416b0decef46bfd523cf370001e6406983dcc6aef8c82f4e12e5209e020ee15f91f125d90d18d7872cb207dafa1db03c48d77d14252a80cca6aa8df324312b066925dd673e33189c9032546ba6f3a4e5baa488ad70db7e61cbea010802c0b6214c95516be96b382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846a41212e870a192 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 221, 202, 13, 173, 68, 143, 154, 77, 79, 63, 112, 65, 107, 13, 236, 239, 70, 191, 213, 35, 207, 55, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e6406983dcc6aef8c82f4e12e5209e02, }, ), received_events: EventHandle { count: 997870511895601422, key: EventKey( [ 215, 135, 44, 178, 7, 218, 250, 29, 176, 60, 72, 215, 125, 20, 37, 42, 128, 204, 166, 170, 141, 243, 36, 49, ], ), }, sent_events: EventHandle { count: 3692502944003458603, key: EventKey( [ 156, 144, 50, 84, 107, 166, 243, 164, 229, 186, 164, 136, 173, 112, 219, 126, 97, 203, 234, 1, 8, 2, 192, 182, ], ), }, sequence_number: 4065599735771515937, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5568db2a6d9bad60777cc69da310428d29d4920338e7f90437b1545902a9dcc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306bab5a5b644590001cfde88be56dfabc6cbdf64682f154f316f9ce254608b723e180262d04463d9a7e34c6f61fd20759b1cb72f7b3984ac9377b8dc3e082b78d00f186e88e11e0f58557709dc1f6944d360f55aebab08389fee5a77e0980908c66faa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70802ec21d607d03132 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 181, 165, 182, 68, 89, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cfde88be56dfabc6cbdf64682f154f31, }, ), received_events: EventHandle { count: 4499812223553805423, key: EventKey( [ 2, 98, 208, 68, 99, 217, 167, 227, 76, 111, 97, 253, 32, 117, 155, 28, 183, 47, 123, 57, 132, 172, 147, 119, ], ), }, sent_events: EventHandle { count: 1139542831941999800, key: EventKey( [ 110, 136, 225, 30, 15, 88, 85, 119, 9, 220, 31, 105, 68, 211, 96, 245, 90, 235, 171, 8, 56, 159, 238, 90, ], ), }, sequence_number: 12281252446685683831, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c59b72df80767a3a4235013759a0aaae616ecb1253e248074851bc82c653ac74): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201451f8a78e350d853bf5c8e36eee785aeef842e9f68157461068a120c9355b170b1442467c7db39ca412a89330741dc8ed6046d5a8f170ae8a793fd570851f51d65812aff5305013feeeacc6e0f21c623ba613b172d0bfc01b97821761f0ddd3dafa3b926372ed0cbaffee1fa0192117318adc977343633cc570781d0d0ebfad4e4c957492897de374f88edcfe331002c3f18e9fbabcc4eb0fa43306a493587f6c720784e6ea2e40df328dea96836902bb9192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d18d416eb5728a6e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 138, 120, 227, 80, 216, 83, 191, 92, 142, 54, 238, 231, 133, 174, 239, 132, 46, 159, 104, 21, 116, 97, 6, 138, 18, 12, 147, 85, 177, 112, 177, 68, 36, 103, 199, 219, 57, 202, 65, 42, 137, 51, 7, 65, 220, 142, 214, 4, 109, 90, 143, 23, 10, 232, 167, 147, 253, 87, 8, 81, 245, 29, 101, 129, 42, 255, 83, 5, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3feeeacc6e0f21c623ba613b172d0bfc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b97821761f0ddd3dafa3b926372ed0cb, }, ), received_events: EventHandle { count: 8291568926167531183, key: EventKey( [ 173, 201, 119, 52, 54, 51, 204, 87, 7, 129, 208, 208, 235, 250, 212, 228, 201, 87, 73, 40, 151, 222, 55, 79, ], ), }, sent_events: EventHandle { count: 4552013537640181128, key: EventKey( [ 233, 251, 171, 204, 78, 176, 250, 67, 48, 106, 73, 53, 135, 246, 199, 32, 120, 78, 110, 162, 228, 13, 243, 40, ], ), }, sequence_number: 1853560620027783646, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5c5e2e697c92556023043cc8003d5182b65d0b68600ac235afd1423a4c83af0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014bb60b3d0f1230224aae0bb2d122b5a1ca2bc4b626bceb86fe33e432e8b975c941e84ba0e20d5fe62f4c63f23c182e8c7b2127af5368c668a8d46663d39d922f2fd6b1fac64983a7eb2f628b0000cb7c6ed76eeaef31188110fca782469844e4c91a24e36623646c626daf8608ee44495ab55e12624f40188914ab75afafbb0f507debd29c0578d7c8282c4ecc420597825a93c4fad0edc52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081b85c2e82305a540 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 11, 61, 15, 18, 48, 34, 74, 174, 11, 178, 209, 34, 181, 161, 202, 43, 196, 182, 38, 188, 235, 134, 254, 51, 228, 50, 232, 185, 117, 201, 65, 232, 75, 160, 226, 13, 95, 230, 47, 76, 99, 242, 60, 24, 46, 140, 123, 33, 39, 175, 83, 104, 198, 104, 168, 212, 102, 99, 211, 157, 146, 47, 47, 214, 177, 250, 198, 73, 131, 167, 235, 47, 98, 139, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3598352389073960139, key: EventKey( [ 129, 16, 252, 167, 130, 70, 152, 68, 228, 201, 26, 36, 227, 102, 35, 100, 108, 98, 109, 175, 134, 8, 238, 68, ], ), }, sent_events: EventHandle { count: 4634030372625406537, key: EventKey( [ 137, 20, 171, 117, 175, 175, 187, 15, 80, 125, 235, 210, 156, 5, 120, 215, 200, 40, 44, 78, 204, 66, 5, 151, ], ), }, sequence_number: 14262285370410621570, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5dc16635c40b35cd1dd5c01e03ee40ec26d6d4437dc11ba2f64895a13d1b7c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7014afb1c7657bca5925d9882abe4b5a8fe0483b6459989cd327744599e9a757595938785c99be70ea1cf1881de361a7ff4f2f4db269e1a1bde8f2193ec90ecbea248bce9b12ca72ef4dac84b01f8eb7b224bfbafd653272ee1621fe9310191afaeb0c5b1dcc731b0d3f2d6a1e491dfafad14798a936e1829b69041e3850460cccbf69b16016412608da79ecce3e20e4dad5944fbf32e6418ffa175065b92f5aabdf1c58dd654039e90e1b682d48af6b650bac4eb50c13e082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f50efbea0478a8b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 28, 118, 87, 188, 165, 146, 93, 152, 130, 171, 228, 181, 168, 254, 4, 131, 182, 69, 153, 137, 205, 50, 119, 68, 89, 158, 154, 117, 117, 149, 147, 135, 133, 201, 155, 231, 14, 161, 207, 24, 129, 222, 54, 26, 127, 244, 242, 244, 219, 38, 158, 26, 27, 222, 143, 33, 147, 236, 144, 236, 190, 162, 72, 188, 233, 177, 44, 167, 46, 244, 218, 200, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f8eb7b224bfbafd653272ee1621fe931, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 91afaeb0c5b1dcc731b0d3f2d6a1e491, }, ), received_events: EventHandle { count: 7967864418391142367, key: EventKey( [ 41, 182, 144, 65, 227, 133, 4, 96, 204, 203, 246, 155, 22, 1, 100, 18, 96, 141, 167, 158, 204, 227, 226, 14, ], ), }, sent_events: EventHandle { count: 7218975513230552397, key: EventKey( [ 255, 161, 117, 6, 91, 146, 245, 170, 189, 241, 197, 141, 214, 84, 3, 158, 144, 225, 182, 130, 212, 138, 246, 182, ], ), }, sequence_number: 594124754156567120, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5fc1fd678e96f043bb6ef7c1c82924c9cea9d6d5452b4533267d95a19b427f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0ffaa691759cff6538a144582f5533fd01062ef485f5ba2c7b947131331cc99e4c00cc5ebdb750c2381f18447caec0599ce7b54826122c0f35225745e6a1f36d3ab05ffb2b0b4ab86fb274187ee1e3a80042cbf6854c9c011042c39cc6ca13ec9c477190519561e9daa734372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb3945adf6acaa56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 250, 166, 145, 117, 156, 255, 101, 56, 161, 68, 88, 47, 85, 51, 253, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 062ef485f5ba2c7b947131331cc99e4c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2249761665807376076, key: EventKey( [ 68, 124, 174, 192, 89, 156, 231, 181, 72, 38, 18, 44, 15, 53, 34, 87, 69, 230, 161, 243, 109, 58, 176, 95, ], ), }, sent_events: EventHandle { count: 8408906291561049083, key: EventKey( [ 126, 225, 227, 168, 0, 66, 203, 246, 133, 76, 156, 1, 16, 66, 195, 156, 198, 202, 19, 236, 156, 71, 113, 144, ], ), }, sequence_number: 3977988929535186257, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c666893e079f5338c5d00a8f2f7e35340ab688a0912b20e811933afc6b9e2e69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c972158a97a093d3fb02fb97ee2a4dc0e72935916558c4fc00016d6c6d86910bae7d0e5191f7fb5a240bcbe4560f83e97c1218f1fb31d40bae8e94ab09ec9c598e7e51549a4fa0fc45a606dc6ab6dbb3ba2a0018eba7356ba7dc3512fc2fed9c1fff7cf12e7e96f20a92865c4e8ca28dc9fd14c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b689d332dcfa3475 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 151, 160, 147, 211, 251, 2, 251, 151, 238, 42, 77, 192, 231, 41, 53, 145, 101, 88, 196, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6d6c6d86910bae7d0e5191f7fb5a240b, }, ), received_events: EventHandle { count: 1332196338902164683, key: EventKey( [ 241, 251, 49, 212, 11, 174, 142, 148, 171, 9, 236, 156, 89, 142, 126, 81, 84, 154, 79, 160, 252, 69, 166, 6, ], ), }, sent_events: EventHandle { count: 12027230669925084, key: EventKey( [ 235, 167, 53, 107, 167, 220, 53, 18, 252, 47, 237, 156, 31, 255, 124, 241, 46, 126, 150, 242, 10, 146, 134, 92, ], ), }, sequence_number: 13840966596922870862, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c72b25d2a11c9c79f3dc6e3992ff731dc1d4fe89585ebe66ba7327a3c3020464): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163e907826881b42751217bd9a183efb889de2b0a02e8d3b96df3100f1986bd7a0510d88e2376a9246b951f6d971f9af5bab2f55d459885f8180e3b96cf7e582a3649c9bf4a883fd2197f907a2387c3115de0f920dc2e79f861c49cab0d1d496cf46cb27101f71a72fec0bac6748f81c19ff854ebb600a18cfc0482ff4a67189e48088a09f7dd7748ef947dbaf2fc4e7356ba9626c18e4a757e6db3ea14802218b5624247397423936f917e616aed3a773bd81180240e2d19f07c97a07c9b51532101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d27b5dd7f896e72b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 7, 130, 104, 129, 180, 39, 81, 33, 123, 217, 161, 131, 239, 184, 137, 222, 43, 10, 2, 232, 211, 185, 109, 243, 16, 15, 25, 134, 189, 122, 5, 16, 216, 142, 35, 118, 169, 36, 107, 149, 31, 109, 151, 31, 154, 245, 186, 178, 245, 93, 69, 152, 133, 248, 24, 14, 59, 150, 207, 126, 88, 42, 54, 73, 201, 191, 74, 136, 63, 210, 25, 127, 144, 122, 35, 135, 195, 17, 93, 224, 249, 32, 220, 46, 121, 248, 97, 196, 156, 171, 13, 29, 73, 108, 244, 108, 178, 113, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f71a72fec0bac6748f81c19ff854ebb6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7443042268077657249, key: EventKey( [ 158, 72, 8, 138, 9, 247, 221, 119, 72, 239, 148, 125, 186, 242, 252, 78, 115, 86, 186, 150, 38, 193, 142, 74, ], ), }, sent_events: EventHandle { count: 2486009992573714037, key: EventKey( [ 181, 98, 66, 71, 57, 116, 35, 147, 111, 145, 126, 97, 106, 237, 58, 119, 59, 216, 17, 128, 36, 14, 45, 25, ], ), }, sequence_number: 6003750737834114288, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c731de57b94733f0910a21daecc2749bedc2f11569834fc632c5c454910f79c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d625dd09f4dd79b082ac0b3c6ec000141ecf0a30b7271c88c4be9b15056804e7d88ea101cafdb1c1800147f4e2801123a472f3e16e2fa06f25c61a1ee7ea7c6d64d1801e17497db2018956a8f157a5a97a45667327771dd4bbc01e348488d1682d13824058c4d8f12542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852ef333ba1accdea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 93, 208, 159, 77, 215, 155, 8, 42, 192, 179, 198, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 41ecf0a30b7271c88c4be9b15056804e, }, ), received_events: EventHandle { count: 2079448188039366781, key: EventKey( [ 0, 20, 127, 78, 40, 1, 18, 58, 71, 47, 62, 22, 226, 250, 6, 242, 92, 97, 161, 238, 126, 167, 198, 214, ], ), }, sent_events: EventHandle { count: 2367652557360273485, key: EventKey( [ 149, 106, 143, 21, 122, 90, 151, 164, 86, 103, 50, 119, 113, 221, 75, 188, 1, 227, 72, 72, 141, 22, 130, 209, ], ), }, sequence_number: 6058062011991139384, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c73262c635bc545dfcb2d5f2e5543a388a5893caa01717039ad171a339e7004f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b00153179e575a3b360ff4bfd6fe6963c37dadc39ca83d43f06812a02686f5c205453dc7bdcd3f853208ad226446d54c9a47857b70d7cb649bc8495d5aba80aafac55b11b43e3570db382c5d7cc8165c60ea585593900154254d49622e2f561dace89b5631e27c006ebcf69280b8a42e18303936b2c4c4983f144dfe12e5e139b554e1e22931af0d4127c938a52d11b00d1844675a0d92471adc91bdec187b81e6692bc4421c6784af9cc1a8723378e656142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c501caec7d21d951 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 23, 158, 87, 90, 59, 54, 15, 244, 191, 214, 254, 105, 99, 195, 125, 173, 195, 156, 168, 61, 67, 240, 104, 18, 160, 38, 134, 245, 194, 5, 69, 61, 199, 189, 205, 63, 133, 50, 8, 173, 34, 100, 70, 213, 76, 154, 71, 133, 123, 112, 215, 203, 100, 155, 200, 73, 93, 90, 186, 128, 170, 250, 197, 91, 17, 180, 62, 53, 112, 219, 56, 44, 93, 124, 200, 22, 92, 96, 234, 88, 85, 147, 144, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 54254d49622e2f561dace89b5631e27c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3361014084286200942, key: EventKey( [ 48, 57, 54, 178, 196, 196, 152, 63, 20, 77, 254, 18, 229, 225, 57, 181, 84, 225, 226, 41, 49, 175, 13, 65, ], ), }, sent_events: EventHandle { count: 986307206137301287, key: EventKey( [ 68, 103, 90, 13, 146, 71, 26, 220, 145, 189, 236, 24, 123, 129, 230, 105, 43, 196, 66, 28, 103, 132, 175, 156, ], ), }, sequence_number: 1465612132689291457, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c7baeac6b631175ef2d17900bf4e2254d880a2b21c4efbddd7074aa17618343a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155414d8ab0305625052adde173148c5f852b32deb42a11ef456d6cb0837db6426267b473ddbfa17bb52fd3a97e0820597fff09899f9e36f36c3bbc1688b5d83f347aa05eb53d688f96d062fd55557755e27d15f1db230001905d81d335a5af4fd6de94ff86492ac00d973d76ce8ee14718e1a73835ab7faf256799bbf105ac8ad5ef65314bcb57719fb8f4235cff2a4f1e187ded059061008e72124643f0b70e77561850ba149ca06a5132b55ccb29fda7f52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc9845b0784ce34a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 77, 138, 176, 48, 86, 37, 5, 42, 221, 225, 115, 20, 140, 95, 133, 43, 50, 222, 180, 42, 17, 239, 69, 109, 108, 176, 131, 125, 182, 66, 98, 103, 180, 115, 221, 191, 161, 123, 181, 47, 211, 169, 126, 8, 32, 89, 127, 255, 9, 137, 159, 158, 54, 243, 108, 59, 188, 22, 136, 181, 216, 63, 52, 122, 160, 94, 181, 61, 104, 143, 150, 208, 98, 253, 85, 85, 119, 85, 226, 125, 21, 241, 219, 35, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 905d81d335a5af4fd6de94ff86492ac0, }, ), received_events: EventHandle { count: 5179578063850936077, key: EventKey( [ 225, 167, 56, 53, 171, 127, 175, 37, 103, 153, 187, 241, 5, 172, 138, 213, 239, 101, 49, 75, 203, 87, 113, 159, ], ), }, sent_events: EventHandle { count: 2184011620548867256, key: EventKey( [ 125, 237, 5, 144, 97, 0, 142, 114, 18, 70, 67, 240, 183, 14, 119, 86, 24, 80, 186, 20, 156, 160, 106, 81, ], ), }, sequence_number: 17701395216350360882, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c7db27fcea652c559f3bd060d4fb19b4713d6bea0e645416b2a153be5a123239): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0fae17840fb5377d79dd60e0f6d96ea701af032e008536dd56f2b9ecca1dcb113e00483cb26220d7813d180c3f3ed0f809753d5747145adc1412bc84a38f105674ffd3cf21e6d50bc7704418dbc3a014fadd7f003f90080498ad6b9a27e2b3f9d786faa78233611cb07fc1852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708942ade8d87cb7dd7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 23, 132, 15, 181, 55, 125, 121, 221, 96, 224, 246, 217, 110, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: af032e008536dd56f2b9ecca1dcb113e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4432060042404052040, key: EventKey( [ 12, 63, 62, 208, 248, 9, 117, 61, 87, 71, 20, 90, 220, 20, 18, 188, 132, 163, 143, 16, 86, 116, 255, 211, ], ), }, sent_events: EventHandle { count: 4931660445617889743, key: EventKey( [ 219, 195, 160, 20, 250, 221, 127, 0, 63, 144, 8, 4, 152, 173, 107, 154, 39, 226, 179, 249, 215, 134, 250, 167, ], ), }, sequence_number: 9638125071916675970, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c833d39165bcc29dd0bf8c9b6d3ec65f07742d6620b3a4b2f61411843af11a8b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0142a99817ca11ff7c6acdff3dfc7bbc1084573577797064c335392132f0afe82186d4e36739215b0dd6c482085d7fd25ad581da1ca8369bff3a8f55ff6fc26fe71c3acf00004c64400bff730d1f18f80828125d9a0ac4b93c2e99682e3766e483929b7ce3ab5a159af130a502b1651877f070e92a6ad39e09ff60bff72a77e5f98f59e0f6692979e650baedebb499d02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089c806c82358e764d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 152, 23, 202, 17, 255, 124, 106, 205, 255, 61, 252, 123, 188, 16, 132, 87, 53, 119, 121, 112, 100, 195, 53, 57, 33, 50, 240, 175, 232, 33, 134, 212, 227, 103, 57, 33, 91, 13, 214, 196, 130, 8, 93, 127, 210, 90, 213, 129, 218, 28, 168, 54, 155, 255, 58, 143, 85, 255, 111, 194, 111, 231, 28, 58, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2237572129115628620, key: EventKey( [ 248, 8, 40, 18, 93, 154, 10, 196, 185, 60, 46, 153, 104, 46, 55, 102, 228, 131, 146, 155, 124, 227, 171, 90, ], ), }, sent_events: EventHandle { count: 7327640977222507029, key: EventKey( [ 119, 240, 112, 233, 42, 106, 211, 158, 9, 255, 96, 191, 247, 42, 119, 229, 249, 143, 89, 224, 246, 105, 41, 121, ], ), }, sequence_number: 15031244156724465894, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c84ba869e4f22c6b9e41c8c4f7e4de50b89cdf0d1aceba2ebb676e8e72166508): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f57056fd6e2fc386b7e6cb30bf26bb8da6a8cd5f946a6998142591465b31f8b0e29a75151c8a7345e0fbcda4de1c34200006c773b0fd7e7516a18e4bd0a969a63271f7d2b9089f008e435285f82f992f35d50dfb4d9e13182cd5218b37ca37282409c6c8da72308b2bc11c038a85345073f54d65adc62d230a4644e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70806481974eeb364cc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 5, 111, 214, 226, 252, 56, 107, 126, 108, 179, 11, 242, 107, 184, 218, 106, 140, 213, 249, 70, 166, 153, 129, 66, 89, 20, 101, 179, 31, 139, 14, 41, 167, 81, 81, 200, 167, 52, 94, 15, 188, 218, 77, 225, 195, 66, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7661159351993464684, key: EventKey( [ 228, 189, 10, 150, 154, 99, 39, 31, 125, 43, 144, 137, 240, 8, 228, 53, 40, 95, 130, 249, 146, 243, 93, 80, ], ), }, sent_events: EventHandle { count: 5966568232089924831, key: EventKey( [ 179, 124, 163, 114, 130, 64, 156, 108, 141, 167, 35, 8, 178, 188, 17, 192, 56, 168, 83, 69, 7, 63, 84, 214, ], ), }, sequence_number: 5648820362224524378, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c893857720ccbdaa3503ddbed69d6101a590f50fb701d3631b7a3a0a4883e0a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00153fdbcb9fc7a24f1140adbf3770a09ed6247a5d912f16d20cabe826d0b97521cc9db94a16b081ae3a8c9e9ae324b38142b65776bd2dd321774a83c0e375a2bbeee7b1f8c91b21807c57cb932005cb7bde1e63980000024f4d18e73bc6f03180180a8016462e8a207751e18384665465dc5abd8b8aa0fcd28377d59c2e5f34318c664188113738d18ea1e6b5a68c003d90ab9c1827bb486a5605e49cbeb9639512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70829f8ba5342e3efac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 188, 185, 252, 122, 36, 241, 20, 10, 219, 243, 119, 10, 9, 237, 98, 71, 165, 217, 18, 241, 109, 32, 202, 190, 130, 109, 11, 151, 82, 28, 201, 219, 148, 161, 107, 8, 26, 227, 168, 201, 233, 174, 50, 75, 56, 20, 43, 101, 119, 107, 210, 221, 50, 23, 116, 168, 60, 14, 55, 90, 43, 190, 238, 123, 31, 140, 145, 178, 24, 7, 197, 124, 185, 50, 0, 92, 183, 189, 225, 230, 57, 128, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 247623709032051748, key: EventKey( [ 1, 128, 168, 1, 100, 98, 232, 162, 7, 117, 30, 24, 56, 70, 101, 70, 93, 197, 171, 216, 184, 170, 15, 205, ], ), }, sent_events: EventHandle { count: 4896509842769655592, key: EventKey( [ 198, 100, 24, 129, 19, 115, 141, 24, 234, 30, 107, 90, 104, 192, 3, 217, 10, 185, 193, 130, 123, 180, 134, 165, ], ), }, sequence_number: 5852875130216734304, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c8ac6922089df28b2a3f04447a947921b312d4aba9d71d8614eccc2ff55eee24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f64db93ffdb4976b8cbb56aaffc30b40124b4cf2395443faa0ae5a81924d10e74005966bbc1aeed312f18573b85fe9948988894c09452b2f40b512bea0137ac87d88f4ad628a02e6359041845f5eba023db4664dd5f383252713f21f9ef972be0a404dd1ddb322be03bd8432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889560ebd9453a99a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 100, 219, 147, 255, 219, 73, 118, 184, 203, 181, 106, 175, 252, 48, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24b4cf2395443faa0ae5a81924d10e74, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3400760528471811673, key: EventKey( [ 87, 59, 133, 254, 153, 72, 152, 136, 148, 192, 148, 82, 178, 244, 11, 81, 43, 234, 1, 55, 172, 135, 216, 143, ], ), }, sent_events: EventHandle { count: 313390700985636426, key: EventKey( [ 69, 245, 235, 160, 35, 219, 70, 100, 221, 95, 56, 50, 82, 113, 63, 33, 249, 239, 151, 43, 224, 164, 4, 221, ], ), }, sequence_number: 4888723229494139677, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c8af29b1b68b95edcc69901762c40769320d4a9c3372faaefa54156619dd67d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015cbd9705d717ee1c9973bd0ed462e6d9236a2a41226ae3fa065c3e5eba488baaa7734c4f492f6deee8e0cae991b984a82f070a0a0139cb77a6482f84bf9d5c3f96e2083d134d6a75650f5eff69c78836c8b6eb0f566761acf68e4b8c3d01e42620f1cf708ecb043d2e630253b5dd001370db1552e5736c1877c73a72e6c5f74fa861c33f7b56fd62ac93928fb4228fa6dadb43d8343a9d1e183d9f777168d06ca74adcb0e76b842f535a6465cfae77c1e4793e814535afc6fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4ed538783801870 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 151, 5, 215, 23, 238, 28, 153, 115, 189, 14, 212, 98, 230, 217, 35, 106, 42, 65, 34, 106, 227, 250, 6, 92, 62, 94, 186, 72, 139, 170, 167, 115, 76, 79, 73, 47, 109, 238, 232, 224, 202, 233, 145, 185, 132, 168, 47, 7, 10, 10, 1, 57, 203, 119, 166, 72, 47, 132, 191, 157, 92, 63, 150, 226, 8, 61, 19, 77, 106, 117, 101, 15, 94, 255, 105, 199, 136, 54, 200, 182, 235, 15, 86, 103, 97, 172, 246, 142, 75, 140, 61, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e42620f1cf708ecb043d2e630253b5dd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7814841919134724115, key: EventKey( [ 119, 199, 58, 114, 230, 197, 247, 79, 168, 97, 195, 63, 123, 86, 253, 98, 172, 147, 146, 143, 180, 34, 143, 166, ], ), }, sent_events: EventHandle { count: 2205983391122447322, key: EventKey( [ 61, 159, 119, 113, 104, 208, 108, 167, 74, 220, 176, 231, 107, 132, 47, 83, 90, 100, 101, 207, 174, 119, 193, 228, ], ), }, sequence_number: 18358553574356631161, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cbe7169dddefeec8754872aef770dac570c1236d246ea8540ecf0fe0c27e6cf9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dd71ca5d9b71fe432e5f0fbe30832a93501c2f829e63799797136e60546d9fb73c3cc6511ac95082392a294f364f89ad541365b191597539d2be01e4ebb00015749fdbed9a25a0693576162965779d2ad5a184d25208f4118b9fd80588ae6effc559502f22c74e9e795fa3e47effe0281b8a2f256cfd27f621868c54252fd29b9f14631c430e81ee5d068248f1c7df31ca045975c829853402c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a725ea06369fffe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 28, 165, 217, 183, 31, 228, 50, 229, 240, 251, 227, 8, 50, 169, 53, 1, 194, 248, 41, 230, 55, 153, 121, 113, 54, 230, 5, 70, 217, 251, 115, 195, 204, 101, 17, 172, 149, 8, 35, 146, 162, 148, 243, 100, 248, 154, 213, 65, 54, 91, 25, 21, 151, 83, 157, 43, 224, 30, 78, 187, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5749fdbed9a25a0693576162965779d2, }, ), received_events: EventHandle { count: 4724029878714260141, key: EventKey( [ 185, 253, 128, 88, 138, 230, 239, 252, 85, 149, 2, 242, 44, 116, 233, 231, 149, 250, 62, 71, 239, 254, 2, 129, ], ), }, sent_events: EventHandle { count: 7097623325717996216, key: EventKey( [ 104, 197, 66, 82, 253, 41, 185, 241, 70, 49, 196, 48, 232, 30, 229, 208, 104, 36, 143, 28, 125, 243, 28, 160, ], ), }, sequence_number: 3188640450665551685, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cc0e6e4661f284a1882948c9e52ff60bc8622e57b4261581fedf4a2c0fb5744e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b0014334eaa7cc62664dbfd4651e5949e239b8b439d8b3bb684b50965c0a52200299846d2e552f849a362a84ebd30c0ac40c702c0c54859e22e8c0a3f6669a4bff4e1737782c01e68ebed122b7f3a26357d8326c05374d012a5af5c5c131efef527ae0d113f63b39b790c0d5bba9471f184ae3aad8fb996a98956683f8af8887c178fddf711cd27c369b565d4c0c54674718458bf2d886952d5897e739186063665dae18b2ca50f9d01aff94cf5c7fa9b3d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b8c2d4c9191cbb9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 52, 234, 167, 204, 98, 102, 77, 191, 212, 101, 30, 89, 73, 226, 57, 184, 180, 57, 216, 179, 187, 104, 75, 80, 150, 92, 10, 82, 32, 2, 153, 132, 109, 46, 85, 47, 132, 154, 54, 42, 132, 235, 211, 12, 10, 196, 12, 112, 44, 12, 84, 133, 158, 34, 232, 192, 163, 246, 102, 154, 75, 255, 78, 23, 55, 120, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e68ebed122b7f3a26357d8326c05374d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2a5af5c5c131efef527ae0d113f63b39, }, ), received_events: EventHandle { count: 2253956762732368055, key: EventKey( [ 74, 227, 170, 216, 251, 153, 106, 152, 149, 102, 131, 248, 175, 136, 135, 193, 120, 253, 223, 113, 28, 210, 124, 54, ], ), }, sent_events: EventHandle { count: 5145173511091607195, key: EventKey( [ 69, 139, 242, 216, 134, 149, 45, 88, 151, 231, 57, 24, 96, 99, 102, 93, 174, 24, 178, 202, 80, 249, 208, 26, ], ), }, sequence_number: 15687068291544618239, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cc3660115ef643168c689137f143e811466d3b50465e034b3082785a4c6f2b33): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c012fadc4acff65346ebe880f783ce52374425730351eec5d03d3f53572e62819def2ca6ab4b83bf7b16dd82cfa04ddc9fd017725e1348b6a56c532604c173231412f01e7eeaa17ceb677c5e818770803a80d868095b7467b70434b18f159efbe867d772637960e5fc5c09f0b58a6384b3a2e0bf61b79f998bbc1703e185923f14f9b260dd3e7b6ac1270301163cf96c6bfdec0bf13d68838a4a9226c152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708053a14152a1ff58f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 196, 172, 255, 101, 52, 110, 190, 136, 15, 120, 60, 229, 35, 116, 66, 87, 48, 53, 30, 236, 93, 3, 211, 245, 53, 114, 230, 40, 25, 222, 242, 202, 106, 180, 184, 59, 247, 177, 109, 216, 44, 250, 4, 221, 201, 253, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7725e1348b6a56c532604c173231412f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e7eeaa17ceb677c5e818770803a80d86, }, ), received_events: EventHandle { count: 5423302051053933952, key: EventKey( [ 241, 89, 239, 190, 134, 125, 119, 38, 55, 150, 14, 95, 197, 192, 159, 11, 88, 166, 56, 75, 58, 46, 11, 246, ], ), }, sent_events: EventHandle { count: 4499309039212656923, key: EventKey( [ 89, 35, 241, 79, 155, 38, 13, 211, 231, 182, 172, 18, 112, 48, 17, 99, 207, 150, 198, 191, 222, 192, 191, 19, ], ), }, sequence_number: 1543646884281223382, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd4c034f7010a8eb3d1034833ff5f9e4f39ce9dee9ae66b675c3f4cf2c5685fa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988011bd796eadf7ea1d3f9507a7abb00f802e3455616e955f6a95d55025901d5e705ae2b55bb9ddd9ec938460f1cc701880b393f7cace1b8cc7227342728a5fc7daf08e97f79942718ceed21a89ab1328e658244c6ef44ff063fa749988d451a9beceab3eaabee3e3318e6a8d225710e00138079d1b8e5dfae9927922e3952e9d24ad267594527437eb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a409465e47a57365 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 150, 234, 223, 126, 161, 211, 249, 80, 122, 122, 187, 0, 248, 2, 227, 69, 86, 22, 233, 85, 246, 169, 93, 85, 2, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5e705ae2b55bb9ddd9ec938460f1cc7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 880b393f7cace1b8cc7227342728a5fc, }, ), received_events: EventHandle { count: 2852038054309834621, key: EventKey( [ 206, 237, 33, 168, 154, 177, 50, 142, 101, 130, 68, 198, 239, 68, 255, 6, 63, 167, 73, 152, 141, 69, 26, 155, ], ), }, sent_events: EventHandle { count: 3692651166634863340, key: EventKey( [ 230, 168, 210, 37, 113, 14, 0, 19, 128, 121, 209, 184, 229, 223, 174, 153, 39, 146, 46, 57, 82, 233, 210, 74, ], ), }, sequence_number: 13366194580028483538, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd695c61e309ee5bcc03f4bf37f799f7608f046223faf8f7c6e38632709b402d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f31aca42dadaccad1bd1f4b13014316111952f0456fbfab8630381e89b94ed57222398dd79d6a1d86e851c560698b33507d5b398f44f26fdcc916dc126ce67cb2a785886badd3ca75835bf5101bb833d27953e14f8b4b41276b3d74b1708b6e00019ae7781461a13e6272c03a3a050d7a6ca129f6ddcbe8682218acf2403fa3874595fc8775341bb77fa35302695c120a93bb180f68a5c0a6517318a46cfcb0dcf1f937d80cbbebae8b91be83359e4aae5ef63d3e7f8cc03c3b94922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876d39ec2421ff024 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 49, 172, 164, 45, 173, 172, 202, 209, 189, 31, 75, 19, 1, 67, 22, 17, 25, 82, 240, 69, 111, 191, 171, 134, 48, 56, 30, 137, 185, 78, 213, 114, 34, 57, 141, 215, 157, 106, 29, 134, 232, 81, 197, 96, 105, 139, 51, 80, 125, 91, 57, 143, 68, 242, 111, 220, 201, 22, 220, 18, 108, 230, 124, 178, 167, 133, 136, 107, 173, 211, 202, 117, 131, 91, 245, 16, 27, 184, 51, 210, 121, 83, 225, 79, 139, 75, 65, 39, 107, 61, 116, 177, 112, 139, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9ae7781461a13e6272c03a3a050d7a6c, }, ), received_events: EventHandle { count: 2479487557167360417, key: EventKey( [ 172, 242, 64, 63, 163, 135, 69, 149, 252, 135, 117, 52, 27, 183, 127, 163, 83, 2, 105, 92, 18, 10, 147, 187, ], ), }, sent_events: EventHandle { count: 8309606133814267672, key: EventKey( [ 164, 108, 252, 176, 220, 241, 249, 55, 216, 12, 187, 235, 174, 139, 145, 190, 131, 53, 158, 74, 174, 94, 246, 61, ], ), }, sequence_number: 10562132158205165374, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd83d20e939613608f0da06551199def2ff9af60de795c0ca0334654a6ac4980): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141a0cd70f6fcf46e80c092ebf7f112397c088d20b5f032de7b974f2f830e2e394138004140ac0bd6476291f55402452c9929f3b168057c01c83a10570c05f7cd70e801dfb639e5746f8af9d6c603092a43436500b86f951a2b3a852b18846c9e1c08d20b62f20afd9eb594c5c7cfa28ad7c6db67c971a43c6e84e1825418807bedf37a3d45006e2f37105940ea85e70c01ce15bd79ceead36d6c3f1cd9072101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc7505feb31dcf35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 205, 112, 246, 252, 244, 110, 128, 192, 146, 235, 247, 241, 18, 57, 124, 8, 141, 32, 181, 240, 50, 222, 123, 151, 79, 47, 131, 14, 46, 57, 65, 56, 0, 65, 64, 172, 11, 214, 71, 98, 145, 245, 84, 2, 69, 44, 153, 41, 243, 177, 104, 5, 124, 1, 200, 58, 16, 87, 12, 5, 247, 205, 112, 232, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dfb639e5746f8af9d6c603092a434365, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3135976672337424312, key: EventKey( [ 132, 108, 158, 28, 8, 210, 11, 98, 242, 10, 253, 158, 181, 148, 197, 199, 207, 162, 138, 215, 198, 219, 103, 201, ], ), }, sent_events: EventHandle { count: 6089677605059732593, key: EventKey( [ 128, 123, 237, 243, 122, 61, 69, 0, 110, 47, 55, 16, 89, 64, 234, 133, 231, 12, 1, 206, 21, 189, 121, 206, ], ), }, sequence_number: 565514286939362282, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cdb0a7f73b43d787f9c6df61202005ab6dc75a19c4e5b20879c0fc7098359244): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a30156abb7098c54921d0debcfc3355ec94b3dd8ea2be746a7d83aac9b8ef0e7498b4447392c9b0794fdf9499dbf88dea50e0644c3e4dd3b40c8ca9a38bd79c70d548d3ca02104c0186017a35596d82965b6f0deb9e31aae880000cab74b4e8f724c471877e862a3eb45b3be3840416408197071b02a30f2a23bd21f5b44c2a747402a1818baca79bc1730f7b7eda5ec970162df711774b7c948844e738147097d813ee3cd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bbe125ac655dc025 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 183, 9, 140, 84, 146, 29, 13, 235, 207, 195, 53, 94, 201, 75, 61, 216, 234, 43, 231, 70, 167, 216, 58, 172, 155, 142, 240, 231, 73, 139, 68, 71, 57, 44, 155, 7, 148, 253, 249, 73, 157, 191, 136, 222, 165, 14, 6, 68, 195, 228, 221, 59, 64, 200, 202, 154, 56, 189, 121, 199, 13, 84, 141, 60, 160, 33, 4, 192, 24, 96, 23, 163, 85, 150, 216, 41, 101, 182, 240, 222, 185, 227, 26, 174, 136, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5137607234742368202, key: EventKey( [ 119, 232, 98, 163, 235, 69, 179, 190, 56, 64, 65, 100, 8, 25, 112, 113, 176, 42, 48, 242, 162, 59, 210, 31, ], ), }, sent_events: EventHandle { count: 1741274882433500251, key: EventKey( [ 186, 202, 121, 188, 23, 48, 247, 183, 237, 165, 236, 151, 1, 98, 223, 113, 23, 116, 183, 201, 72, 132, 78, 115, ], ), }, sequence_number: 14835770323358009217, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ce66505a711fa99ecb08533be9e29a076ea2b4e78f3e7eda3e27314e1ae28f60): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960149217c90494deb21ee87fa9206da9a9e4210ab3acd1ca398e97d9f129ad85854c2d9c4e3d602c5ebd29ce88772ff13e1b6dab0eeca254c76e2c133973a3a299bad023093190857e2b5380000e934989d1c70ff07189f2d7f5908db1e087223e93f334dd4ab328de454b7df4b540a6cf9ea94470349181da4b63a2651b3a45c76626ab861f9077171aafc36762ec2c510f7b5e16b888a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e2ebdfae47d0093a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 124, 144, 73, 77, 235, 33, 238, 135, 250, 146, 6, 218, 154, 158, 66, 16, 171, 58, 205, 28, 163, 152, 233, 125, 159, 18, 154, 216, 88, 84, 194, 217, 196, 227, 214, 2, 197, 235, 210, 156, 232, 135, 114, 255, 19, 225, 182, 218, 176, 238, 202, 37, 76, 118, 226, 193, 51, 151, 58, 58, 41, 155, 173, 2, 48, 147, 25, 8, 87, 226, 181, 56, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 576302545532105961, key: EventKey( [ 159, 45, 127, 89, 8, 219, 30, 8, 114, 35, 233, 63, 51, 77, 212, 171, 50, 141, 228, 84, 183, 223, 75, 84, ], ), }, sent_events: EventHandle { count: 5261127494621817866, key: EventKey( [ 29, 164, 182, 58, 38, 81, 179, 164, 92, 118, 98, 106, 184, 97, 249, 7, 113, 113, 170, 252, 54, 118, 46, 194, ], ), }, sequence_number: 9982347191231385797, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cfeec9ae44e08f0f1797f20b7a34d5da39a17801d03c6d2b644f3061145daf10): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144cfd9ecfc19c212ddc800c442f3306f242dd082a4805673925aa4b4735ffc0be09c191546939c95134107538afc769083d965cbfae1a130343670c17f841c24a1ff7f390100002fe289120e79e55e18cd14a0f382ac55521d01dc16083168100d77c2ff55caa374af48baee949d4f0218c19323e8f3011aad9700affb892a96b74a0687f0c822bbdeec8daaa2acd990a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b74cdb718953cc4b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 217, 236, 252, 25, 194, 18, 221, 200, 0, 196, 66, 243, 48, 111, 36, 45, 208, 130, 164, 128, 86, 115, 146, 90, 164, 180, 115, 95, 252, 11, 224, 156, 25, 21, 70, 147, 156, 149, 19, 65, 7, 83, 138, 252, 118, 144, 131, 217, 101, 203, 250, 225, 161, 48, 52, 54, 112, 193, 127, 132, 28, 36, 161, 255, 127, 57, 1, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6838004710579495471, key: EventKey( [ 205, 20, 160, 243, 130, 172, 85, 82, 29, 1, 220, 22, 8, 49, 104, 16, 13, 119, 194, 255, 85, 202, 163, 116, ], ), }, sent_events: EventHandle { count: 166524974221904047, key: EventKey( [ 193, 147, 35, 232, 243, 1, 26, 173, 151, 0, 175, 251, 137, 42, 150, 183, 74, 6, 135, 240, 200, 34, 187, 222, ], ), }, sequence_number: 11858217154353204716, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d0ce1421ad156e6a830091d91ca1b9b1074682b3782819f9d75dd9fa7c0c3f96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950038102a100003f095f5fb1fb6b7318b9c73b7a337bf2ded9c8ca1dadfe009cc4822094a410890df9201772456df53e187f9de532e864334044edcbee3c8cf7558c447837e0b9c25e44de335e30835f602101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70831a6be12c203d108 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 129, 2, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8317017876097599807, key: EventKey( [ 185, 199, 59, 122, 51, 123, 242, 222, 217, 200, 202, 29, 173, 254, 0, 156, 196, 130, 32, 148, 164, 16, 137, 13, ], ), }, sent_events: EventHandle { count: 4536652344679932153, key: EventKey( [ 127, 157, 229, 50, 232, 100, 51, 64, 68, 237, 203, 238, 60, 140, 247, 85, 140, 68, 120, 55, 224, 185, 194, 94, ], ), }, sequence_number: 6944413394190720580, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d13eb5acea4c3fdc0a9e086b4ce62e4348bdd3847005f69330151bc2ec99385f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f63b8c18d05260e4a4cd3a91ab51ff4ea39fc7058ee8e9f3d620dd563066ca76e94b2eafa85dd590f99fc68e136b95e00001f9122d5d339d6131842ae166001b4437deb268b702d6cb60222acf5b80553a950c9161ed4a42b3d09180cd0cfa9aba28ded11d49e7c427274cfbbbe32db10695c281b60d34f7c3007272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d2ba124652cad947 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 99, 184, 193, 141, 5, 38, 14, 74, 76, 211, 169, 26, 181, 31, 244, 234, 57, 252, 112, 88, 238, 142, 159, 61, 98, 13, 213, 99, 6, 108, 167, 110, 148, 178, 234, 250, 133, 221, 89, 15, 153, 252, 104, 225, 54, 185, 94, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1429393513713406239, key: EventKey( [ 66, 174, 22, 96, 1, 180, 67, 125, 235, 38, 139, 112, 45, 108, 182, 2, 34, 172, 245, 184, 5, 83, 169, 80, ], ), }, sent_events: EventHandle { count: 665736306854074057, key: EventKey( [ 12, 208, 207, 169, 171, 162, 141, 237, 17, 212, 158, 124, 66, 114, 116, 207, 187, 190, 50, 219, 16, 105, 92, 40, ], ), }, sequence_number: 2812269802789494811, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1765398a1bd88b94869a9306c2a3707f9fd0d929e87269b58f0b29363955a4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d108d1faa83d927b57b796b463cb7804f5b014a0d6c252d977be0bbe76a6c2706f0d5014d9d141bb4e9c8fe5f9ab689a098aa59bd5f784ea2b6e03a18190f541cf28fe034c028fb4613037e86f3c47be66e5ee95d63e7fa6cfb83cc72183f8c1d551664da5ecf2cf97ba92c8f43a9e8e6a6839780661cd31889eb07d78c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a621c3ce6f80f45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 31, 170, 131, 217, 39, 181, 123, 121, 107, 70, 60, 183, 128, 79, 91, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4a0d6c252d977be0bbe76a6c2706f0d5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4d9d141bb4e9c8fe5f9ab689a098aa59, }, ), received_events: EventHandle { count: 4242591657200476093, key: EventKey( [ 25, 15, 84, 28, 242, 143, 224, 52, 192, 40, 251, 70, 19, 3, 126, 134, 243, 196, 123, 230, 110, 94, 233, 93, ], ), }, sent_events: EventHandle { count: 8272131731461171043, key: EventKey( [ 63, 140, 29, 85, 22, 100, 218, 94, 207, 44, 249, 123, 169, 44, 143, 67, 169, 232, 230, 166, 131, 151, 128, 102, ], ), }, sequence_number: 10148588993501516572, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d17961d63bec07c6045da68d08c36dea17fe2710aefae9e90ec9217017dc2b0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130ce869ed4dfa772ecefdd7160b708ccdb380202a19f07131c9e5181a030f1b246184f4b76483d297e1801bb4a3e108c41015513a8faea9d208e4cc4ce79aa22427a00efef043299b82b431831310ed4abc4b147b566894ffa184e395b7fe60f837f7dce3067decdb1336f3418b56b3f73775b0d40c87835a37066e91c1cda5d38521f4ed2651be1cc3f33239d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085188f833e1177c32 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 134, 158, 212, 223, 167, 114, 236, 239, 221, 113, 96, 183, 8, 204, 219, 56, 2, 2, 161, 159, 7, 19, 28, 158, 81, 129, 160, 48, 241, 178, 70, 24, 79, 75, 118, 72, 61, 41, 126, 24, 1, 187, 74, 62, 16, 140, 65, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5513a8faea9d208e4cc4ce79aa22427a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4840165192648421359, key: EventKey( [ 49, 49, 14, 212, 171, 196, 177, 71, 181, 102, 137, 79, 250, 24, 78, 57, 91, 127, 230, 15, 131, 127, 125, 206, ], ), }, sent_events: EventHandle { count: 3778295451143268144, key: EventKey( [ 181, 107, 63, 115, 119, 91, 13, 64, 200, 120, 53, 163, 112, 102, 233, 28, 28, 218, 93, 56, 82, 31, 78, 210, ], ), }, sequence_number: 11322950237252819813, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1ab06384a23fdd122d3058529c5ad9b3dc95c8d2fdc2cc6cc0601cef674d46b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c960033db41f010b9799b9d40de2dd47ecbef50587c8c900ce55f208c1b7832d18bd5343c5dc3abf1493ca148d897591d695c94014b1d6457b71f77784c04abd31189ad1bebe98bd31662f890e07eeb31053a348c485f35bee316995231311edc26c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e92347649e41b9a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 180, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0b9799b9d40de2dd47ecbef50587c8c9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3279666993362523598, key: EventKey( [ 189, 83, 67, 197, 220, 58, 191, 20, 147, 202, 20, 141, 137, 117, 145, 214, 149, 201, 64, 20, 177, 214, 69, 123, ], ), }, sent_events: EventHandle { count: 3584103069173413745, key: EventKey( [ 154, 209, 190, 190, 152, 189, 49, 102, 47, 137, 14, 7, 238, 179, 16, 83, 163, 72, 196, 133, 243, 91, 238, 49, ], ), }, sequence_number: 7837086959169410409, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1b95a5cc46233812351ad98cbbd62d054bf16d84df081588e26c937b4687e4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c3295320d9740faaef748d31400019facc08835654d77dfde2d906615939493248b3afe486d6218c860cdb28a3e8747819c779c50ef865a3099d994711906b95e0770de311f1554186cc33b502f67289535745100d32c1fc5ec536e73bd4b3b366ca4a892010423132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085e2410e8c580a9b8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 149, 50, 13, 151, 64, 250, 174, 247, 72, 211, 20, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9facc08835654d77dfde2d9066159394, }, ), received_events: EventHandle { count: 7092405244919489683, key: EventKey( [ 200, 96, 205, 178, 138, 62, 135, 71, 129, 156, 119, 156, 80, 239, 134, 90, 48, 153, 217, 148, 113, 25, 6, 185, ], ), }, sent_events: EventHandle { count: 6058783172742612830, key: EventKey( [ 108, 195, 59, 80, 47, 103, 40, 149, 53, 116, 81, 0, 211, 44, 31, 197, 236, 83, 110, 115, 189, 75, 59, 54, ], ), }, sequence_number: 1378950315707507820, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d2034f830a268d5ec2bf61d960e8ac3db330f593ddf69e0557a1d76550f8e9ad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01408094dc3ed8858db3ccadb10393e0aef5cf4e1f8aeebd32ae34ca166682d66423a59c6158a2ca1538d53e1c6451c0099f9b36cc23b582f9937b8d8f8ed3b83d61012eb0d08b956b6d92d25f0e7e8485ed8b01e482ddd628d55480dcdd190396ac761b21bbda70c46967261854ad85c4b7a9f98f881c632967b5fd2c39e844761c3135a743abb30b6944e46c1829465b18ac730890a3cdbc862f50b7dfbea0d336aa400cb0860d7b0e01c71acc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d4c76b143304c7e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 128, 148, 220, 62, 216, 133, 141, 179, 204, 173, 177, 3, 147, 224, 174, 245, 207, 78, 31, 138, 238, 189, 50, 174, 52, 202, 22, 102, 130, 214, 100, 35, 165, 156, 97, 88, 162, 202, 21, 56, 213, 62, 28, 100, 81, 192, 9, 159, 155, 54, 204, 35, 181, 130, 249, 147, 123, 141, 143, 142, 211, 184, 61, 97, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2eb0d08b956b6d92d25f0e7e8485ed8b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e482ddd628d55480dcdd190396ac761b, }, ), received_events: EventHandle { count: 2767296788470348577, key: EventKey( [ 84, 173, 133, 196, 183, 169, 249, 143, 136, 28, 99, 41, 103, 181, 253, 44, 57, 232, 68, 118, 28, 49, 53, 167, ], ), }, sent_events: EventHandle { count: 7846471668744825667, key: EventKey( [ 41, 70, 91, 24, 172, 115, 8, 144, 163, 205, 188, 134, 47, 80, 183, 223, 190, 160, 211, 54, 170, 64, 12, 176, ], ), }, sequence_number: 14707286340483616134, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d21940c090d4f131d4ebb03f59be9cf32254a73e87dc751d4585690860d95c2f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e40fc626e469f456131315d8cd2d9461658ec835ecd72d3fadd2e61e61863addc7ee27b7c65c019966d2d609558ad6280976c2839dc8d28f18f7a46c574677f08cbcfef46bc699cf6ea1fbcc71ce033812433a96c0bf9fc947aed42f90ddc015a7c471b4fd4787053ee3c0642e2fbb401b02cc1c14f8923471a0de840274b401036fbea047cde8f23182a9f0eac2936591c2f82ae6c9a80ca8f3062acc48fa6975cfb7436ea94df2c0d18f0e0b7370a1e5906993ac3cbb3ef1dc5fd8dddd03084de48b9a9d90c36ce2f2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087a2cc31d79e6bc19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 252, 98, 110, 70, 159, 69, 97, 49, 49, 93, 140, 210, 217, 70, 22, 88, 236, 131, 94, 205, 114, 211, 250, 221, 46, 97, 230, 24, 99, 173, 220, 126, 226, 123, 124, 101, 192, 25, 150, 109, 45, 96, 149, 88, 173, 98, 128, 151, 108, 40, 57, 220, 141, 40, 241, 143, 122, 70, 197, 116, 103, 127, 8, 203, 207, 239, 70, 188, 105, 156, 246, 234, 31, 188, 199, 28, 224, 51, 129, 36, 51, 169, 108, 11, 249, 252, 148, 122, 237, 66, 249, 13, 220, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5a7c471b4fd4787053ee3c0642e2fbb4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b02cc1c14f8923471a0de840274b4010, }, ), received_events: EventHandle { count: 2562511337236921142, key: EventKey( [ 42, 159, 14, 172, 41, 54, 89, 28, 47, 130, 174, 108, 154, 128, 202, 143, 48, 98, 172, 196, 143, 166, 151, 92, ], ), }, sent_events: EventHandle { count: 949379452145923323, key: EventKey( [ 240, 224, 183, 55, 10, 30, 89, 6, 153, 58, 195, 203, 179, 239, 29, 197, 253, 141, 221, 208, 48, 132, 222, 72, ], ), }, sequence_number: 3256047787151305145, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d21f0ea8d41ce7e7ad3b72fae7934b92ab902ba9875ac6bdfbdece8ea1daec7f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e8e3aa296304a2170eaf355d7af87474aa272e70b11b5e19f6f7455e4bf6860136d0fcc82a024bd69eca1aa0c015e42eb8aba00171067d6691d449a1b7ed56fc762d76fde5ccfdddc6ea0b3473e9558584335dfc0d5f8514584ac4a844ebf015e98285d8223116b2dadc1e64154cb370163d530fb20cd7357c89c4662b7bc821e406cdcb5922f7b02186234a97dc2ef29d3104266638df195d2f263428c30c4ceb47c8af57ef9bfe447187c94ab34dfb3665850efcbfb9f3ad958ff5687ca508ca34f4d8df8c8eb2eaeec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70892523587be8c4af2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 58, 162, 150, 48, 74, 33, 112, 234, 243, 85, 215, 175, 135, 71, 74, 162, 114, 231, 11, 17, 181, 225, 159, 111, 116, 85, 228, 191, 104, 96, 19, 109, 15, 204, 130, 160, 36, 189, 105, 236, 161, 170, 12, 1, 94, 66, 235, 138, 186, 0, 23, 16, 103, 214, 105, 29, 68, 154, 27, 126, 213, 111, 199, 98, 215, 111, 222, 92, 207, 221, 220, 110, 160, 179, 71, 62, 149, 88, 88, 67, 53, 223, 192, 213, 248, 81, 69, 132, 172, 74, 132, 78, 191, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5e98285d8223116b2dadc1e64154cb37, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 63d530fb20cd7357c89c4662b7bc821e, }, ), received_events: EventHandle { count: 178788917374118976, key: EventKey( [ 98, 52, 169, 125, 194, 239, 41, 211, 16, 66, 102, 99, 141, 241, 149, 210, 242, 99, 66, 140, 48, 196, 206, 180, ], ), }, sent_events: EventHandle { count: 5180476549680695932, key: EventKey( [ 124, 148, 171, 52, 223, 179, 102, 88, 80, 239, 203, 251, 159, 58, 217, 88, 255, 86, 135, 202, 80, 140, 163, 79, ], ), }, sequence_number: 17054620429122571597, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d2c59ecac40c228cde5d2bf811dc1c0b52638bc41e47e0ab26fad4bccc105d6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133ee5d24cfff453d5e962bc853f81d821090e5f9f9d6fbd1d36bf981fdcdbf837ccec0b8ffaa90e1d23017201f8e8899652325e4000108b326e734bece7ac81133176863b85219ed52c2f13d667618a25f2aeb81715e8b447426d9ca1b26f0d07ed161c9466f1ab45fc6b898ce6a0118abd5ebc3be6f556150a0ef4d1c680b965f76d5794dd5a37c1a03f841ec8eb67b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869ddcb68a2f80a77 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 93, 36, 207, 255, 69, 61, 94, 150, 43, 200, 83, 248, 29, 130, 16, 144, 229, 249, 249, 214, 251, 209, 211, 107, 249, 129, 253, 205, 191, 131, 124, 206, 192, 184, 255, 170, 144, 225, 210, 48, 23, 32, 31, 142, 136, 153, 101, 35, 37, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 08b326e734bece7ac81133176863b852, }, ), received_events: EventHandle { count: 8531574652656610585, key: EventKey( [ 162, 95, 42, 235, 129, 113, 94, 139, 68, 116, 38, 217, 202, 27, 38, 240, 208, 126, 209, 97, 201, 70, 111, 26, ], ), }, sent_events: EventHandle { count: 102121096899616692, key: EventKey( [ 171, 213, 235, 195, 190, 111, 85, 97, 80, 160, 239, 77, 28, 104, 11, 150, 95, 118, 213, 121, 77, 213, 163, 124, ], ), }, sequence_number: 8914469657796674330, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d3f3583fc6eb95219274f59bf82d4f5d503678c077308069823b6108a7b24627): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830116535383c0f53b6684e96a6c6c8b743c47f3796bedf7f701e37f5c8fe26a706804f978b01c46f35401e69fd59ffb07b9cb76192c22eb9244d0f07b7d831145104b18ff659f106ea4367b832d32b5e6e8775a7a4c1ed53ea0db7976350b63d6f6674218cb19592bbab7466894b8963f5dd38dacd2e0f365ab03bb541614910b1dd30ccb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084060c5ae9807323f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 83, 131, 192, 245, 59, 102, 132, 233, 106, 108, 108, 139, 116, 60, 71, 243, 121, 107, 237, 247, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e37f5c8fe26a706804f978b01c46f354, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e69fd59ffb07b9cb76192c22eb9244d0, }, ), received_events: EventHandle { count: 5408899093994765296, key: EventKey( [ 255, 101, 159, 16, 110, 164, 54, 123, 131, 45, 50, 181, 230, 232, 119, 90, 122, 76, 30, 213, 62, 160, 219, 121, ], ), }, sent_events: EventHandle { count: 4785064529749554550, key: EventKey( [ 203, 25, 89, 43, 186, 183, 70, 104, 148, 184, 150, 63, 93, 211, 141, 172, 210, 224, 243, 101, 171, 3, 187, 84, ], ), }, sequence_number: 14631301411121468438, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d3f4b9954b401e9844bfcf76f5d3a63f3dd32960973feadb9de140cd504bc87e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b799744c567dc05032c9627932cdff4bcd398754ea7ef1614fdbd2e77d0b0588c14fbee20aeba5bdcc103c895ddee5b11f965cec91f10cbd0a7516fb460c4e3c30ece4713d9ffc081575f3f04bc2c1b571e1421290fc05b0b132e72017b1fa2088816ed57094b532f2e0c25cf007e40f2415264f7291886753157c4f67d9951ed31ca857cbaced3439d59ddd9f42b2c5684577080d54718c8836774f070b19a8ecb95144dd1ffc113ea7012c01f39245e98f855f7fc615f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c16ef07095498ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 151, 68, 197, 103, 220, 5, 3, 44, 150, 39, 147, 44, 223, 244, 188, 211, 152, 117, 78, 167, 239, 22, 20, 253, 189, 46, 119, 208, 176, 88, 140, 20, 251, 238, 32, 174, 186, 91, 220, 193, 3, 200, 149, 221, 238, 91, 17, 249, 101, 206, 201, 31, 16, 203, 208, 167, 81, 111, 180, 96, 196, 227, 195, 14, 206, 71, 19, 217, 255, 192, 129, 87, 95, 63, 4, 188, 44, 27, 87, 30, 20, 33, 41, 15, 192, 91, 11, 19, 46, 114, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7b1fa2088816ed57094b532f2e0c25cf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3023995979259068542, key: EventKey( [ 134, 117, 49, 87, 196, 246, 125, 153, 81, 237, 49, 202, 133, 124, 186, 206, 211, 67, 157, 89, 221, 217, 244, 43, ], ), }, sent_events: EventHandle { count: 5176184566725236268, key: EventKey( [ 200, 131, 103, 116, 240, 112, 177, 154, 142, 203, 149, 20, 77, 209, 255, 193, 19, 234, 112, 18, 192, 31, 57, 36, ], ), }, sequence_number: 6873052645573564510, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d427ccdeb123d66fe466d09b32d2d753949ebdfb63646105216e2a69825707e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201559735b9bda330fa59356ffc31fe928f4854be1ceff5c521ddad8cc0078d84256eec715beb130456f7e7d7fd4caf6bb61344eebc2bd96bbe8640a096e7a57e8844d1db0cfbad61ddbe6abc0f3a8b11d694534ca286e80140f251793d6668f5f4ccb5b879a6c650002d8b8e3d5ac37a66183f498bc17effba96abab65928ffa646ca39f7b35fff7545ee3d88fb05a7456521870f50faf032b755b7e23c424b5b20df7805ec2594f7225834786d44737bc564b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a4f6de491d22d10a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 53, 185, 189, 163, 48, 250, 89, 53, 111, 252, 49, 254, 146, 143, 72, 84, 190, 28, 239, 245, 197, 33, 221, 173, 140, 192, 7, 141, 132, 37, 110, 236, 113, 91, 235, 19, 4, 86, 247, 231, 215, 253, 76, 175, 107, 182, 19, 68, 238, 188, 43, 217, 107, 190, 134, 64, 160, 150, 231, 165, 126, 136, 68, 209, 219, 12, 251, 173, 97, 221, 190, 106, 188, 15, 58, 139, 17, 214, 148, 83, 76, 162, 134, 232, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 40f251793d6668f5f4ccb5b879a6c650, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7384429331374574381, key: EventKey( [ 63, 73, 139, 193, 126, 255, 186, 150, 171, 171, 101, 146, 143, 250, 100, 108, 163, 159, 123, 53, 255, 247, 84, 94, ], ), }, sent_events: EventHandle { count: 5933057491965303011, key: EventKey( [ 112, 245, 15, 175, 3, 43, 117, 91, 126, 35, 196, 36, 181, 178, 13, 247, 128, 94, 194, 89, 79, 114, 37, 131, ], ), }, sequence_number: 5428733346456045127, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d42c31329887f25c64f3758defaab17f59ef5ab6c90945689dc4060b9e0396ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96114e212a0b749a8ca193a882a9c893fc1d4c1a60e9f0000018648255cf308361884f0ceb898168e7520b7799e9f2604280c503f5cd0e909f2da96015f553a2e5a180eafd5505c9f3e49e6634bd9dfe0e7d8bc447314c2cdf1439e79b6474bf114332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70877bcd1b5b0e6b338 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 18, 160, 183, 73, 168, 202, 25, 58, 136, 42, 156, 137, 63, 193, 212, 193, 166, 14, 159, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3893629454949844481, key: EventKey( [ 132, 240, 206, 184, 152, 22, 142, 117, 32, 183, 121, 158, 159, 38, 4, 40, 12, 80, 63, 92, 208, 233, 9, 242, ], ), }, sent_events: EventHandle { count: 6498195450682775258, key: EventKey( [ 14, 175, 213, 80, 92, 159, 62, 73, 230, 99, 75, 217, 223, 224, 231, 216, 188, 68, 115, 20, 194, 205, 241, 67, ], ), }, sequence_number: 3680832101096520094, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d47ddb19c2f3b7fab6e83e77f043bef1d42ca385977d4a52d4823ac23d139730): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501480ccb9c5b67d845ab4bf27460ffcdaa885dcf5daad2f1a7ff6f0f3f0f4fc74c5f4fb1df20c621c8065cbe43ed58994e81b9bc974cd0d2a0a056978adab9be91b2bf17ddcfde99ad6401a68abcb01a223095aafad8a2097ff58c00c8752c4192300644184372432147088766fd7942e25f87771e6b3d99defc4056a28763baed57174b1718227b6ab045564ea08a9220135c3817335ed86980d975f657cccf0c2a005418712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828503a2dc7a7d0ff Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 203, 156, 91, 103, 216, 69, 171, 75, 242, 116, 96, 255, 205, 170, 136, 93, 207, 93, 170, 210, 241, 167, 255, 111, 15, 63, 15, 79, 199, 76, 95, 79, 177, 223, 32, 198, 33, 200, 6, 92, 190, 67, 237, 88, 153, 78, 129, 185, 188, 151, 76, 208, 210, 160, 160, 86, 151, 138, 218, 185, 190, 145, 178, 191, 23, 221, 207, 222, 153, 173, 100, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a68abcb01a223095aafad8a2097ff58c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4901658649156154824, key: EventKey( [ 67, 114, 67, 33, 71, 8, 135, 102, 253, 121, 66, 226, 95, 135, 119, 30, 107, 61, 153, 222, 252, 64, 86, 162, ], ), }, sent_events: EventHandle { count: 1678460952543650695, key: EventKey( [ 34, 123, 106, 176, 69, 86, 78, 160, 138, 146, 32, 19, 92, 56, 23, 51, 94, 216, 105, 128, 217, 117, 246, 87, ], ), }, sequence_number: 8149355885409128396, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d4c7004e0eaaab0c2ef8361e04480f8065337d57652f32062aa983083623a24f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f1d589b46be0ed62a8c30d555293e8d01dd89d0a396a14eecc40766b5db669f76006a9a77f59e754073188305c38e6f634458398fa7f2b4303886d57c7939da9dfbc6151ff06df3fc7507181046896794ce67b4352851e66874a38c90fdaab62b8f563b3957d4b5010adf432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708171311937a853233 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 88, 155, 70, 190, 14, 214, 42, 140, 48, 213, 85, 41, 62, 141, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dd89d0a396a14eecc40766b5db669f76, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8304767038454733418, key: EventKey( [ 131, 5, 195, 142, 111, 99, 68, 88, 57, 143, 167, 242, 180, 48, 56, 134, 213, 124, 121, 57, 218, 157, 251, 198, ], ), }, sent_events: EventHandle { count: 537613852992347925, key: EventKey( [ 16, 70, 137, 103, 148, 206, 103, 180, 53, 40, 81, 230, 104, 116, 163, 140, 144, 253, 170, 182, 43, 143, 86, 59, ], ), }, sequence_number: 4890638722809485113, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d4fd4dac46c7b17629f51bc4626bba8ca5d48fc43096e0c95612f9bce2f6a26c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940127e66eb2455b41285bd04e6871355a4e2ec9d180d635b15522eab4cc325fd42c494a9b720cfac60701c1a80c6d59fadd50835eea4f837bdc3601d7dcff9210959efc95063cb7b9ccecfaa2426381f098c7531840a514662c77baa62fc0daa84698c3047dcb7b20e843e2cb21e46c712b7fb74218d1f19aa4dab5fca829e0c708e8f0709b1b2285a7f3c9e1265e7769d470c077c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081eff916e5aeae1d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 110, 178, 69, 91, 65, 40, 91, 208, 78, 104, 113, 53, 90, 78, 46, 201, 209, 128, 214, 53, 177, 85, 34, 234, 180, 204, 50, 95, 212, 44, 73, 74, 155, 114, 12, 250, 198, 7, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c1a80c6d59fadd50835eea4f837bdc36, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d7dcff9210959efc95063cb7b9ccecfa, }, ), received_events: EventHandle { count: 6036961984243778210, key: EventKey( [ 64, 165, 20, 102, 44, 119, 186, 166, 47, 192, 218, 168, 70, 152, 195, 4, 125, 203, 123, 32, 232, 67, 226, 203, ], ), }, sent_events: EventHandle { count: 4807450951804576801, key: EventKey( [ 209, 241, 154, 164, 218, 181, 252, 168, 41, 224, 199, 8, 232, 240, 112, 155, 27, 34, 133, 167, 243, 201, 225, 38, ], ), }, sequence_number: 14012880356419139422, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d53174e5a5b0a9b92c9fc365b1a41b0b270a1e8371aae9db44c7db49c3141150): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a301464603e3395d63061cc1da3ed9ca8d8d3d2d64d229c0145e42a5e699f2dacc920f1f49257f537074f233e8332c5cac1705cc112ee26120af74f63b005592c4aefa6d3800aca89a0156b752d97a28adc71c085d1a6d5b725200d5abda017f9a342918d9e8450414e08bc7327ff3c184edcbb9a4836883697e3f28d8303f791c1b902818fa0531f258402f7360b8e04e70e11ebb06165552813fc1fdea5f88d66552d2802101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c7d9a30df7005f4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 3, 227, 57, 93, 99, 6, 28, 193, 218, 62, 217, 202, 141, 141, 61, 45, 100, 210, 41, 192, 20, 94, 66, 165, 230, 153, 242, 218, 204, 146, 15, 31, 73, 37, 127, 83, 112, 116, 242, 51, 232, 51, 44, 92, 172, 23, 5, 204, 17, 46, 226, 97, 32, 175, 116, 246, 59, 0, 85, 146, 196, 174, 250, 109, 56, 0, 172, 168, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 56b752d97a28adc71c085d1a6d5b7252, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2969167924626631637, key: EventKey( [ 217, 232, 69, 4, 20, 224, 139, 199, 50, 127, 243, 193, 132, 237, 203, 185, 164, 131, 104, 131, 105, 126, 63, 40, ], ), }, sent_events: EventHandle { count: 2922865967270670552, key: EventKey( [ 250, 5, 49, 242, 88, 64, 47, 115, 96, 184, 224, 78, 112, 225, 30, 187, 6, 22, 85, 82, 129, 63, 193, 253, ], ), }, sequence_number: 9282572379308449770, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d535fcbf3d1dae5a641fc68315100ea17ace9daebe206ddddeb47fe8f4707c01): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c048df8cc296727a66a99c4ccb2ff0b50cc59ba8ea3111a46d5a32d070ce3808b5abdeb93eac1a3c5c581db99b086f7f4b9dd2a56997704c5ae2d8b260170010082bc2427302fb87d9250f29df600287acb7bbe04cc1218b34d4206184fec166164d6a43686a91d58be95d3b73dd1fe210acc97da422203186a36229ba7d402f0550873800c9e5520a9c4a3a8a3e6b56e500ee393d55513b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cf6c0258de090a8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 141, 248, 204, 41, 103, 39, 166, 106, 153, 196, 204, 178, 255, 11, 80, 204, 89, 186, 142, 163, 17, 26, 70, 213, 163, 45, 7, 12, 227, 128, 139, 90, 189, 235, 147, 234, 193, 163, 197, 197, 129, 219, 153, 176, 134, 247, 244, 185, 221, 42, 86, 153, 119, 4, 197, 174, 45, 139, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 70010082bc2427302fb87d9250f29df6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1354462804098906664, key: EventKey( [ 179, 77, 66, 6, 24, 79, 236, 22, 97, 100, 214, 164, 54, 134, 169, 29, 88, 190, 149, 211, 183, 61, 209, 254, ], ), }, sent_events: EventHandle { count: 225816437938981409, key: EventKey( [ 106, 54, 34, 155, 167, 212, 2, 240, 85, 8, 115, 128, 12, 158, 85, 32, 169, 196, 163, 168, 163, 230, 181, 110, ], ), }, sequence_number: 12903751733144129104, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d5d92476d80952ce838c04b30f9df822a12d67c984ff3114da0cb986be3fe2eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940137f2952a44d04d36b71a49c44483e97c63e98cf42442dda1277edc22765f2c1eb5e5c5cde00d55eefabee62db7daf5d42e77da2a168c1a6a0108a8579d28b7e2b76966ab1149e1657300985753cd754d212b186b8cf49ac3634e7f01a2b56301a896a33067bb38febd9ee1948c3e111c3bbd7318cc7c0aff4b3218199c339bd77dd630503b9350597c0c1c4ed8529a6609af516d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708559d766361b1cc16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 149, 42, 68, 208, 77, 54, 183, 26, 73, 196, 68, 131, 233, 124, 99, 233, 140, 244, 36, 66, 221, 161, 39, 126, 220, 34, 118, 95, 44, 30, 181, 229, 197, 205, 224, 13, 85, 238, 250, 190, 230, 45, 183, 218, 245, 212, 46, 119, 218, 42, 22, 140, 26, 106, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 08a8579d28b7e2b76966ab1149e16573, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3107850386213656472, key: EventKey( [ 107, 140, 244, 154, 195, 99, 78, 127, 1, 162, 181, 99, 1, 168, 150, 163, 48, 103, 187, 56, 254, 189, 158, 225, ], ), }, sent_events: EventHandle { count: 8339887076694461588, key: EventKey( [ 204, 124, 10, 255, 75, 50, 24, 25, 156, 51, 155, 215, 125, 214, 48, 80, 59, 147, 80, 89, 124, 12, 28, 78, ], ), }, sequence_number: 7877269678158664408, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d62f37f159ed10d2240cbc6ba007a920580fac0cf842df3420d5b5774a0648cb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9560952af241517c1484b2200008bb6697612dd0061181a25042999195a9fedc9095ecc6b54673c9ec4b339b3306f29ee07940bb23c701886a683b749c1a3b0f875d082dac73329a956a1d546bfc86c777d5e1a75d1581b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e815a660b7317354 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 175, 36, 21, 23, 193, 72, 75, 34, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6989829693044799115, key: EventKey( [ 26, 37, 4, 41, 153, 25, 90, 159, 237, 201, 9, 94, 204, 107, 84, 103, 60, 158, 196, 179, 57, 179, 48, 111, ], ), }, sent_events: EventHandle { count: 8087534793648500265, key: EventKey( [ 134, 166, 131, 183, 73, 193, 163, 176, 248, 117, 208, 130, 218, 199, 51, 41, 169, 86, 161, 213, 70, 191, 200, 108, ], ), }, sequence_number: 1970555137858370935, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d63a82f132ba4a5fd00eea3f473844d24c1b2190d194dd68925efe16d7edcf03): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012b1da432eb5adc346d72343c9c155f2af6ae3196fd0a9e0dbcf6aaa8333735a8b9abcebc15d7dd530559caa701120d23bb914d490a4627c75167acc968015ea2c70bc6a7db6c2b891d93fefad1e13fada97c1c843e1918bba96435009438dbb732163fb2a2a6007491f8e0925723552f790e304cc01508180d7450e6641329043783e5515c372148b26f5609e74b4b18f359f8011fedc3902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cb1510a60ce05cc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 164, 50, 235, 90, 220, 52, 109, 114, 52, 60, 156, 21, 95, 42, 246, 174, 49, 150, 253, 10, 158, 13, 188, 246, 170, 168, 51, 55, 53, 168, 185, 171, 206, 188, 21, 215, 221, 83, 5, 89, 202, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 120d23bb914d490a4627c75167acc968, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5ea2c70bc6a7db6c2b891d93fefad1e1, }, ), received_events: EventHandle { count: 1819036557389704511, key: EventKey( [ 187, 169, 100, 53, 0, 148, 56, 219, 183, 50, 22, 63, 178, 162, 166, 0, 116, 145, 248, 224, 146, 87, 35, 85, ], ), }, sent_events: EventHandle { count: 582583160270649647, key: EventKey( [ 13, 116, 80, 230, 100, 19, 41, 4, 55, 131, 229, 81, 92, 55, 33, 72, 178, 111, 86, 9, 231, 75, 75, 24, ], ), }, sequence_number: 10431441879353022963, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d69feecf4d652926cd05a9356bdc9813f4e2060ab4e6ca258b7b1e4c73e28241): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014da43a3ed02e185e9353b8f811a7447c9c5d5fb729a248ec3be3b6384304fdb08ca88a0e028ce9e79fd89bacdc61300ace3846b0aa8e13847fd7170dc4d9685783bc78dcf894cddee1584070ce1101627474190c8fdccf849eaab3ccb21f900065beabbac86b2056184e443915b74562f87078073e3f172761be43471be837bbc4b6fb2cab21c3ea0218b49e135177a357f05d18024c83e977249dc6c70dabf5d67fb6cc9e967172044a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d7c1aaa2953ae2e7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 58, 62, 208, 46, 24, 94, 147, 83, 184, 248, 17, 167, 68, 124, 156, 93, 95, 183, 41, 162, 72, 236, 59, 227, 182, 56, 67, 4, 253, 176, 140, 168, 138, 14, 2, 140, 233, 231, 159, 216, 155, 172, 220, 97, 48, 10, 206, 56, 70, 176, 170, 142, 19, 132, 127, 215, 23, 13, 196, 217, 104, 87, 131, 188, 120, 220, 248, 148, 205, 222, 225, 88, 64, 112, 206, 17, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 627474190c8fdccf849eaab3ccb21f90, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6206078796385992293, key: EventKey( [ 78, 68, 57, 21, 183, 69, 98, 248, 112, 120, 7, 62, 63, 23, 39, 97, 190, 67, 71, 27, 232, 55, 187, 196, ], ), }, sent_events: EventHandle { count: 210194881999338422, key: EventKey( [ 180, 158, 19, 81, 119, 163, 87, 240, 93, 24, 2, 76, 131, 233, 119, 36, 157, 198, 199, 13, 171, 245, 214, 127, ], ), }, sequence_number: 5333513690897370294, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d6b7abf9cf1ea340e11548f86ebfe0c0849302ea3dee91dba31989c6e0aa7d15): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139ede8756963a43d2ac1b4ad6c0b5241fe6df8e33a6eb3528bd8010c67597acf72134464046823d559c95811e191d19ad867469a446194725a7b0001701a4c490e56b2c27c3518535fb8fb461aa6e0c56309507a18557e524674a080d5ee47de80a88f029e6c132c36a99455ba7e887efed7a114121841a3cd07470d9bd0a6093d0dbf52cdb98d334f7b291ad96e91fbc9d8c7c194362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822c54227d2494045 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 237, 232, 117, 105, 99, 164, 61, 42, 193, 180, 173, 108, 11, 82, 65, 254, 109, 248, 227, 58, 110, 179, 82, 139, 216, 1, 12, 103, 89, 122, 207, 114, 19, 68, 100, 4, 104, 35, 213, 89, 201, 88, 17, 225, 145, 209, 154, 216, 103, 70, 154, 68, 97, 148, 114, 90, 123, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 701a4c490e56b2c27c3518535fb8fb46, }, ), received_events: EventHandle { count: 8813554794890307098, key: EventKey( [ 85, 126, 82, 70, 116, 160, 128, 213, 238, 71, 222, 128, 168, 143, 2, 158, 108, 19, 44, 54, 169, 148, 85, 186, ], ), }, sent_events: EventHandle { count: 1302844141276661886, key: EventKey( [ 65, 163, 205, 7, 71, 13, 155, 208, 166, 9, 61, 13, 191, 82, 205, 185, 141, 51, 79, 123, 41, 26, 217, 110, ], ), }, sequence_number: 3932981438681054097, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d74767365ae4653707984345abc8a81067552c170a0dede728d03ad9b41faa4a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0f78bec3d763eb40caca90184e0424870000360c62fd4477623618ea9dc9488b83a03b8d78816cf8ba5707203a27edb0d5c9333dabf6d97411600718106cca0427c5908a95f3ed5a9c1cbf309805bb7fa43648926d4f839d166bd8732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70818a2ec0980e58ac3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 120, 190, 195, 215, 99, 235, 64, 202, 202, 144, 24, 78, 4, 36, 135, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3918825763958295606, key: EventKey( [ 234, 157, 201, 72, 139, 131, 160, 59, 141, 120, 129, 108, 248, 186, 87, 7, 32, 58, 39, 237, 176, 213, 201, 51, ], ), }, sent_events: EventHandle { count: 531443949600418621, key: EventKey( [ 16, 108, 202, 4, 39, 197, 144, 138, 149, 243, 237, 90, 156, 28, 191, 48, 152, 5, 187, 127, 164, 54, 72, 146, ], ), }, sequence_number: 8347539654207295341, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d814b8be7639954956e630060b88b61d4b6d8555df190db28accfb1ac94911b5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b7ce34ef7a59de65ff07b78011953561e26045d821ac546d0572be33e0158ae33c6faecaef8c1b3708f693dd50473596b6e39e30f7b188dcb01c99a2b0deea3b1c101c772a4bfcb6279ebf6663b0c20bf252cc739b011183894e689cdd3abbc16db2329d4d633eb4d1750012406dcd0276d776286bc7bbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826032e69359a4c35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 227, 78, 247, 165, 157, 230, 95, 240, 123, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1953561e26045d821ac546d0572be33e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 58ae33c6faecaef8c1b3708f693dd504, }, ), received_events: EventHandle { count: 8867556027120966003, key: EventKey( [ 141, 203, 1, 201, 154, 43, 13, 238, 163, 177, 193, 1, 199, 114, 164, 191, 203, 98, 121, 235, 246, 102, 59, 12, ], ), }, sent_events: EventHandle { count: 1274582222147796768, key: EventKey( [ 56, 148, 230, 137, 205, 211, 171, 188, 22, 219, 35, 41, 212, 214, 51, 235, 77, 23, 80, 1, 36, 6, 220, 208, ], ), }, sequence_number: 13653713980667424039, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d81c480735b7bbf4e0c5d65bbd32e04ae7d1785e3cd169ec9c3c84a92add756b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97528052d6f16b98f0139128673d21a80d4aa0d2429c731fe8e02420f29ae7c62f1a83bc3435229ea263d0000e4603ee83985113718114567f70107423ae9cfde46bd355999a23c667d8ab173ddea688a39b93ca41e182ed60ae3c820acad709c357f65ac2d474cff705a1ace6008faeb3f70ed0252452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a6e4db498438a14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 45, 111, 22, 185, 143, 1, 57, 18, 134, 115, 210, 26, 128, 212, 170, 13, 36, 41, 199, 49, 254, 142, 2, 66, 15, 41, 174, 124, 98, 241, 168, 59, 195, 67, 82, 41, 234, 38, 61, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3968099230446149860, key: EventKey( [ 17, 69, 103, 247, 1, 7, 66, 58, 233, 207, 222, 70, 189, 53, 89, 153, 162, 60, 102, 125, 138, 177, 115, 221, ], ), }, sent_events: EventHandle { count: 2207956483550374122, key: EventKey( [ 46, 214, 10, 227, 200, 32, 172, 173, 112, 156, 53, 127, 101, 172, 45, 71, 76, 255, 112, 90, 26, 206, 96, 8, ], ), }, sequence_number: 4995058155521043450, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8b6e6174c48c4f314d99b120baa5503132251d88166168a516b0224baf1c99b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a201456e713c0bb2ab3cbea6a036ba62f3f27a5882f24031641f4d5ef18456e87cab527af651a822462ecd8f014c0d2063527ae5b1e1c7e96e8fef183e4a8c2cd39eeea2b3f404b101488516f54bf2cbc5e377cc5b38a2f1da000c1b3073a8656f7f18ff7ac3b4deda52de0ce41569dad8e9a3c192f914cea4a1fe0825da0beb7fff2018797733a9b5a5f5bf7f76cc74c0beb7032c5354729862d0b43b4c6d13e4dbb0c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851af36fdf7ad3266 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 110, 113, 60, 11, 178, 171, 60, 190, 166, 160, 54, 186, 98, 243, 242, 122, 88, 130, 242, 64, 49, 100, 31, 77, 94, 241, 132, 86, 232, 124, 171, 82, 122, 246, 81, 168, 34, 70, 46, 205, 143, 1, 76, 13, 32, 99, 82, 122, 229, 177, 225, 199, 233, 110, 143, 239, 24, 62, 74, 140, 44, 211, 158, 238, 162, 179, 244, 4, 177, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 488516f54bf2cbc5e377cc5b38a2f1da, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9182669939393174284, key: EventKey( [ 255, 122, 195, 180, 222, 218, 82, 222, 12, 228, 21, 105, 218, 216, 233, 163, 193, 146, 249, 20, 206, 164, 161, 254, ], ), }, sent_events: EventHandle { count: 2377759775767799048, key: EventKey( [ 121, 119, 51, 169, 181, 165, 245, 191, 127, 118, 204, 116, 192, 190, 183, 3, 44, 83, 84, 114, 152, 98, 208, 180, ], ), }, sequence_number: 13884839423808195643, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8e592ab010b8ab98553bf2a61c8ce13d5d8f622cca8b9899b84be6f7eed129b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ebfe43579e8233f433d9b169d54cf2bfefe1fbd744a844b1a1eb6c2903ad5d8eb12a9cdb98d5344395f2d850e3cda5d6e6fab3e40bab6f7a693427fed59b6ecde55b4eb747233ae953b91db0a3fd398edc417a7e32a094c78c94b52576834000101c8cae7fbe5a842073a4f26321a0f3f86b3d4f2020acd591814b4c0d5e34b20c05d7db8d71ff2d8fffc71041e9a24a13cc693d4d4bc4dee7818c755d58bff56bf1bbaddb244f76428794aaafb63db6686a766b4a76229f1abd22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f6a15bf8fad9fefe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 228, 53, 121, 232, 35, 63, 67, 61, 155, 22, 157, 84, 207, 43, 254, 254, 31, 189, 116, 74, 132, 75, 26, 30, 182, 194, 144, 58, 213, 216, 235, 18, 169, 205, 185, 141, 83, 68, 57, 95, 45, 133, 14, 60, 218, 93, 110, 111, 171, 62, 64, 186, 182, 247, 166, 147, 66, 127, 237, 89, 182, 236, 222, 85, 180, 235, 116, 114, 51, 174, 149, 59, 145, 219, 10, 63, 211, 152, 237, 196, 23, 167, 227, 42, 9, 76, 120, 201, 75, 82, 87, 104, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 01c8cae7fbe5a842073a4f26321a0f3f, }, ), received_events: EventHandle { count: 6470839247381508998, key: EventKey( [ 20, 180, 192, 213, 227, 75, 32, 192, 93, 125, 184, 215, 31, 242, 216, 255, 252, 113, 4, 30, 154, 36, 161, 60, ], ), }, sent_events: EventHandle { count: 8713987802428380102, key: EventKey( [ 199, 85, 213, 139, 255, 86, 191, 27, 186, 221, 178, 68, 247, 100, 40, 121, 74, 170, 251, 99, 219, 102, 134, 167, ], ), }, sequence_number: 15180492129033499750, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8e9f7804999c21c90b9e7b5815642e9f0050c81ac8ec46c527fdef7ec612f8b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e73b88c8a4b125ae3f72a8cf6ac08c574ca446ed69ca8b1fde397fbd96a7d3d8671d53a9709ae18424e02bb438be2aac10b23f9e17c71956b1731a1b950b8c1d46c98248755b9c4602b80a5218d51011d517c3634424de6251bf124cdb20073001dbed6f90ec8d110183a74dee01e7d3fe3ba0ccce2fb2a1b49aaabc91c32393485f015b57b176be446180a36f86b3e92bb5e5775761e311d316760c16fda44bd223e7ad09e8d2f24a27e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b19ac7fa6cf9114e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 184, 140, 138, 75, 18, 90, 227, 247, 42, 140, 246, 172, 8, 197, 116, 202, 68, 110, 214, 156, 168, 177, 253, 227, 151, 251, 217, 106, 125, 61, 134, 113, 213, 58, 151, 9, 174, 24, 66, 78, 2, 187, 67, 139, 226, 170, 193, 11, 35, 249, 225, 124, 113, 149, 107, 23, 49, 161, 185, 80, 184, 193, 212, 108, 152, 36, 135, 85, 185, 196, 96, 43, 128, 165, 33, 141, 81, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d517c3634424de6251bf124cdb20073, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1211969741386071581, key: EventKey( [ 58, 116, 222, 224, 30, 125, 63, 227, 186, 12, 204, 226, 251, 42, 27, 73, 170, 171, 201, 28, 50, 57, 52, 133, ], ), }, sent_events: EventHandle { count: 5108325625948870128, key: EventKey( [ 10, 54, 248, 107, 62, 146, 187, 94, 87, 117, 118, 30, 49, 29, 49, 103, 96, 193, 111, 218, 68, 189, 34, 62, ], ), }, sequence_number: 9124895581664104570, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8f339c9dfdb7230bdef2f530e6197fc0504b1d02731c74c9d4fdc37e179a888): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144b654f95e899de0fa84f3e76b2db841e0e5e1131fedc6af124521f1ac5a7729ddccfe7afcd36db02102df8269af32b151819502f98d0b8bfcfbf5c2143f51ddc2faa325bb012cb0ac2d859e778d3248227ad8b73e970015b37e6e2c8b992f1847ed3d2d0226e08c29c34ca1f302ebbddbe1c057cd3bf8f83ef97d4b243ada2d1878ce6d5b4172b3dffffa3e713bae1d6b76d0d03cbb895f5c0884f2fae0ce297c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708781ad370ae77d8c0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 84, 249, 94, 137, 157, 224, 250, 132, 243, 231, 107, 45, 184, 65, 224, 229, 225, 19, 31, 237, 198, 175, 18, 69, 33, 241, 172, 90, 119, 41, 221, 204, 254, 122, 252, 211, 109, 176, 33, 2, 223, 130, 105, 175, 50, 177, 81, 129, 149, 2, 249, 141, 11, 139, 252, 251, 245, 194, 20, 63, 81, 221, 194, 250, 163, 37, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2cb0ac2d859e778d3248227ad8b73e97, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3429925614167962389, key: EventKey( [ 71, 237, 61, 45, 2, 38, 224, 140, 41, 195, 76, 161, 243, 2, 235, 189, 219, 225, 192, 87, 205, 59, 248, 248, ], ), }, sent_events: EventHandle { count: 3304017204189460798, key: EventKey( [ 120, 206, 109, 91, 65, 114, 179, 223, 255, 250, 62, 113, 59, 174, 29, 107, 118, 208, 208, 60, 187, 137, 95, 92, ], ), }, sequence_number: 8946909600426394632, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d92c7aa5c5766acf8a5a0886b46574d3920ab79b1c37d5a223aebc4de961ff9d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a301467d6615ffae4dcbfa8575fba2d1658891cb91cdf32c499c85e948d13cbeeaebf191b0476a31da6a4914d6692f2d3179571b0abbadd33aee396fca729668a97ffd798638b9931200018e59eaed85732bd789a5296ecdec117f5e73489aed5a4b1a18d6b18ba5981f204ec64f9a336dedc10497812e7722ed21f4a75a819fc46039661832521cc766132bfe99fe4e154ae9f0f7e52e3a1ba1c1dc659ee3d0a88942a1d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d01a363d4e666502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 102, 21, 255, 174, 77, 203, 250, 133, 117, 251, 162, 209, 101, 136, 145, 203, 145, 205, 243, 44, 73, 156, 133, 233, 72, 209, 60, 190, 234, 235, 241, 145, 176, 71, 106, 49, 218, 106, 73, 20, 214, 105, 47, 45, 49, 121, 87, 27, 10, 187, 173, 211, 58, 238, 57, 111, 202, 114, 150, 104, 169, 127, 253, 121, 134, 56, 185, 147, 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8e59eaed85732bd789a5296ecdec117f, }, ), received_events: EventHandle { count: 1894708044781613918, key: EventKey( [ 214, 177, 139, 165, 152, 31, 32, 78, 198, 79, 154, 51, 109, 237, 193, 4, 151, 129, 46, 119, 34, 237, 33, 244, ], ), }, sent_events: EventHandle { count: 7366025063147068071, key: EventKey( [ 50, 82, 28, 199, 102, 19, 43, 254, 153, 254, 78, 21, 74, 233, 240, 247, 229, 46, 58, 27, 161, 193, 220, 101, ], ), }, sequence_number: 15393658160339280798, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d99cec3339641d99f39dcb9f29ed7be7a45bc544d478fb5a59c71d1fbd31db69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987012aecb536821f20e7cc17e2933eceb8744de8cd8715eb513082b51cc5a2c1a93650da1ad4917e1309fef3bb01f8c223ce7908ee913f72b299f0899a5b00e1dba1c1578f945d18398ac5cf78c6112536e2c66ffbfba524c78bdabe597baa5fcda3aee4adafcf101825e65f80d7f40b2bf4a8ce9f8b8612a39ea74d0e7df59f6ff1f97eaf36b4e6ba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708522634692bd59b56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 181, 54, 130, 31, 32, 231, 204, 23, 226, 147, 62, 206, 184, 116, 77, 232, 205, 135, 21, 235, 81, 48, 130, 181, 28, 197, 162, 193, 169, 54, 80, 218, 26, 212, 145, 126, 19, 9, 254, 243, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f8c223ce7908ee913f72b299f0899a5b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6743172149154012129, key: EventKey( [ 57, 138, 197, 207, 120, 198, 17, 37, 54, 226, 198, 111, 251, 251, 165, 36, 199, 139, 218, 190, 89, 123, 170, 95, ], ), }, sent_events: EventHandle { count: 1211379986186806221, key: EventKey( [ 37, 230, 95, 128, 215, 244, 11, 43, 244, 168, 206, 159, 139, 134, 18, 163, 158, 167, 77, 14, 125, 245, 159, 111, ], ), }, sequence_number: 13467649882663614961, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d9b04b175940b81f654c420b9f3ac0f3d730f16d733e8693bd84e63d2adac379): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c1f0a5d8e34dc56f78bf1b33c3b7a85921c0f1203ce6af10848fe1517f8bae12900001fe17f7f5fe1361518362f7b899b704043062a3f737ec5983bdb05f9d879ab730a089b40c5131be43518f2824c8736ea438e50ac179b3792aecac22484643be30180a2f4a9145f8da85f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708580b59e49182fc1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 10, 93, 142, 52, 220, 86, 247, 139, 241, 179, 60, 59, 122, 133, 146, 28, 15, 18, 3, 206, 106, 241, 8, 72, 254, 21, 23, 248, 186, 225, 41, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1528656923816091935, key: EventKey( [ 54, 47, 123, 137, 155, 112, 64, 67, 6, 42, 63, 115, 126, 197, 152, 59, 219, 5, 249, 216, 121, 171, 115, 10, ], ), }, sent_events: EventHandle { count: 3883258550427884296, key: EventKey( [ 242, 130, 76, 135, 54, 234, 67, 142, 80, 172, 23, 155, 55, 146, 174, 202, 194, 36, 132, 100, 59, 227, 1, 128, ], ), }, sequence_number: 6892914669198636194, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(da4260d92eca33d21c60fe5178a26a9a1a58530eef1533c0091e9e687064255f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a329726d234960ef834670124e81104e11fb4c73343703afa440acd003f37f611085a294e185d9cbcc1d4e3abcfe0e5394bff3b407f00979d1ede75416cc09b0d0bd97eee031875a865eeffe26f64b1edd03d901e4f048b11a27c68c94a9a99854bbfca5b1dfe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70820b70aacdb5b48b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 151, 38, 210, 52, 150, 14, 248, 52, 103, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24e81104e11fb4c73343703afa440acd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5632131799711102783, key: EventKey( [ 93, 156, 188, 193, 212, 227, 171, 207, 224, 229, 57, 75, 255, 59, 64, 127, 0, 151, 157, 30, 222, 117, 65, 108, ], ), }, sent_events: EventHandle { count: 283303297229364160, key: EventKey( [ 117, 168, 101, 238, 255, 226, 111, 100, 177, 237, 208, 61, 144, 30, 79, 4, 139, 17, 162, 124, 104, 201, 74, 154, ], ), }, sequence_number: 18310892586309223833, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(daf49fd9cf58db1427854615079e8c838ab453d057f46d69d993887cf65dce6f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9681b09885f98cc157591359a99ba2003215a0e383fda9e00570d98a72b0000189e3071b783766f180864abf16be07838b1a4cd78dadf684e0db11079647677fcb01b91d9c68aa226182981654ee2878b9da91780b8ffb6784be4d5a4552ef9017d4bed4491e724f4fc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f64cdaae63a7523 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 136, 95, 152, 204, 21, 117, 145, 53, 154, 153, 186, 32, 3, 33, 90, 14, 56, 63, 218, 158, 0, 87, 13, 152, 167, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8031751809363123736, key: EventKey( [ 8, 100, 171, 241, 107, 224, 120, 56, 177, 164, 205, 120, 218, 223, 104, 78, 13, 177, 16, 121, 100, 118, 119, 252, ], ), }, sent_events: EventHandle { count: 2783940106326711216, key: EventKey( [ 41, 129, 101, 78, 226, 135, 139, 157, 169, 23, 128, 184, 255, 182, 120, 75, 228, 213, 164, 85, 46, 249, 1, 125, ], ), }, sequence_number: 18227234168868498763, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db177762f245b943befadefced20767371c52ae280faac4170745d6cb38e2f5a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619654159ca4ef73bbee39982eabe6cfdccdd538671e8a53585710000c001f154f0073943185e67f81cab9e4c8fb5d3c5834981557778b7d739ab32680a3127cab354e58265184c833353d4aff1f208742f8fc235ecc7a1612e8d057d7aad50e4f929b0ce29152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083d928bc0e73db59b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 65, 89, 202, 78, 247, 59, 190, 227, 153, 130, 234, 190, 108, 253, 204, 221, 83, 134, 113, 232, 165, 53, 133, 113, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4843911603012305344, key: EventKey( [ 94, 103, 248, 28, 171, 158, 76, 143, 181, 211, 197, 131, 73, 129, 85, 119, 120, 183, 215, 57, 171, 50, 104, 10, ], ), }, sent_events: EventHandle { count: 7314660896759490353, key: EventKey( [ 76, 131, 51, 83, 212, 175, 241, 242, 8, 116, 47, 143, 194, 53, 236, 199, 161, 97, 46, 141, 5, 125, 122, 173, ], ), }, sequence_number: 1524977204855432272, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db4adda33d79a547489b7dd8b0d247321382c9123797a2179d9688f947ae63b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0fa2a7a127fd9c7200cb0bd720b88f750000e49fb7f3d1bc312718ef23655242f4714e7fa40ec0decd61aa411adec61187f4d99f0b274a50628b051816f81f2306be8adba024df27899333f6e879a083cce00241bc81752b6f1d5bd32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b28fa804c517555a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 167, 161, 39, 253, 156, 114, 0, 203, 11, 215, 32, 184, 143, 117, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2824246051261095908, key: EventKey( [ 239, 35, 101, 82, 66, 244, 113, 78, 127, 164, 14, 192, 222, 205, 97, 170, 65, 26, 222, 198, 17, 135, 244, 217, ], ), }, sent_events: EventHandle { count: 399521088933399455, key: EventKey( [ 22, 248, 31, 35, 6, 190, 138, 219, 160, 36, 223, 39, 137, 147, 51, 246, 232, 121, 160, 131, 204, 224, 2, 65, ], ), }, sequence_number: 15229798928191160764, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db9d618c80854240d3707226fc1d2cb59f07381ece5bcd851775f1ffccf55252): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96205a82ff33d3400019c12b2f34833c0fddfe55128e10c5af5060dceb182199c2f18687352550387d61a6827d539ea82d64bd2ee6cd40cae30a0f5e8b25988a9171518e18992cce2a130b8358b2f98420ba133dc1338874862151b374b8c94b0c939ef2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817152f56ce6d677e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 47, 243, 61, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9c12b2f34833c0fddfe55128e10c5af5, }, ), received_events: EventHandle { count: 3430645065268989190, key: EventKey( [ 104, 115, 82, 85, 3, 135, 214, 26, 104, 39, 213, 57, 234, 130, 214, 75, 210, 238, 108, 212, 12, 174, 48, 160, ], ), }, sent_events: EventHandle { count: 1519869802346375413, key: EventKey( [ 225, 137, 146, 204, 226, 161, 48, 184, 53, 139, 47, 152, 66, 11, 161, 51, 220, 19, 56, 135, 72, 98, 21, 27, ], ), }, sequence_number: 17238030808980933431, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dbe1ca21b8a2f22445d71a466fbd4a44d38eb7e4787369de5fd0a03c40753c2f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963166d65b8cf9fad0fd9a92d7042d819de36a0608cfdffcf0000277a81f6a5c4fd1e18a13aea90da7318dd5d36dd72be4bac5317a56c48ea806e82bca3254b81cc333a18ad68217e1129273c35f98bcc81f66cfa839e54a3f34d78e91af4e5722f8dc04b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c22d80a7d5511a7c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 101, 184, 207, 159, 173, 15, 217, 169, 45, 112, 66, 216, 25, 222, 54, 160, 96, 140, 253, 255, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2233157207329962535, key: EventKey( [ 161, 58, 234, 144, 218, 115, 24, 221, 93, 54, 221, 114, 190, 75, 172, 83, 23, 165, 108, 72, 234, 128, 110, 130, ], ), }, sent_events: EventHandle { count: 4193920533695669180, key: EventKey( [ 173, 104, 33, 126, 17, 41, 39, 60, 53, 249, 139, 204, 129, 246, 108, 250, 131, 158, 84, 163, 243, 77, 120, 233, ], ), }, sequence_number: 5458517983303693338, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dcee7d0f806e08c58dc4caf30df659a2b3e27d7e7b08575c612595fc3579a971): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d0140628ce429178d3dc621d70eb7f39e1d06bff1d5178d51f260a9a440f70ea325469857a3ca5158c0c9aa0ad73b5f40ddfed0dc0a7ae30ea5761d2859a680becfba0001a65ca0c9de1deea90a850b8786f36ace404637ab92f60c41189f7afa4c038acad6035938c425f4a4e5b37b727177dd80e9ae96490a99dabc68182c63ea4f51308e8de783966fda6279e31ad69c983512df318af1f6475d270e642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880ddbdb5d216bf3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 140, 228, 41, 23, 141, 61, 198, 33, 215, 14, 183, 243, 158, 29, 6, 191, 241, 213, 23, 141, 81, 242, 96, 169, 164, 64, 247, 14, 163, 37, 70, 152, 87, 163, 202, 81, 88, 192, 201, 170, 10, 215, 59, 95, 64, 221, 254, 208, 220, 10, 122, 227, 14, 165, 118, 29, 40, 89, 166, 128, 190, 207, 186, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a65ca0c9de1deea90a850b8786f36ace, }, ), received_events: EventHandle { count: 4687392421984028224, key: EventKey( [ 159, 122, 250, 76, 3, 138, 202, 214, 3, 89, 56, 196, 37, 244, 164, 229, 179, 123, 114, 113, 119, 221, 128, 233, ], ), }, sent_events: EventHandle { count: 7547147426403554990, key: EventKey( [ 44, 99, 234, 79, 81, 48, 142, 141, 231, 131, 150, 111, 218, 98, 121, 227, 26, 214, 156, 152, 53, 18, 223, 49, ], ), }, sequence_number: 7209743335059550602, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd5ca4eece94c27e13ed6eec8a500a70aa90931be25bbc4dea187ea265d4c940): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001434d2cb6414eeb3f47d4ed31085e8164aaa28e7177604c7b5114745711865d1b190a15403a0e3539d0e0deb4b4eba6b0f683f45a5d8242a7c860f9cce25116e2ada0cee9000061d8f36ac516d958183a3a55daeab119679a54ac7976061704e4df10bf6f22a207d7d1f253cb7d115b18c9db993712d10a9c812b51cd09adac886d09c447e79e07f7a8ec673fe7331b442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdbebc7586485e01 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 77, 44, 182, 65, 78, 235, 63, 71, 212, 237, 49, 8, 94, 129, 100, 170, 162, 142, 113, 119, 96, 76, 123, 81, 20, 116, 87, 17, 134, 93, 27, 25, 10, 21, 64, 58, 14, 53, 57, 208, 224, 222, 180, 180, 235, 166, 176, 246, 131, 244, 90, 93, 130, 66, 167, 200, 96, 249, 204, 226, 81, 22, 226, 173, 160, 206, 233, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6402173382442604641, key: EventKey( [ 58, 58, 85, 218, 234, 177, 25, 103, 154, 84, 172, 121, 118, 6, 23, 4, 228, 223, 16, 191, 111, 34, 162, 7, ], ), }, sent_events: EventHandle { count: 6562164444295778775, key: EventKey( [ 201, 219, 153, 55, 18, 209, 10, 156, 129, 43, 81, 205, 9, 173, 172, 136, 109, 9, 196, 71, 231, 158, 7, 247, ], ), }, sequence_number: 4907573287244524712, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd5f067705641f71fde5b0456e49ee56e020560ef7dd6fde1c3617d91d640a24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149b16b24d362e9ce1ca3f5f239745c88e8231d8a9a4241535ceb70640182eb3d2444daf7b19634dc48171010542799a414c72f6b5be3357a1c4ceba38fa122ca2519039bc504ca64300200014554243bcfa772676a0b803119594923c809eefa57c22b1a1802fb12ba701b1c2b3187c7a3f33d4e17444918c6f3763d65d9155daef48c771918b873b33bce7dbd5e912c0d86df9a9e269b0039257f693c7cbd5329e7376824a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082f69a173d7ae3ea0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 107, 36, 211, 98, 233, 206, 28, 163, 245, 242, 57, 116, 92, 136, 232, 35, 29, 138, 154, 66, 65, 83, 92, 235, 112, 100, 1, 130, 235, 61, 36, 68, 218, 247, 177, 150, 52, 220, 72, 23, 16, 16, 84, 39, 153, 164, 20, 199, 47, 107, 91, 227, 53, 122, 28, 76, 235, 163, 143, 161, 34, 202, 37, 25, 3, 155, 197, 4, 202, 100, 48, 2, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4554243bcfa772676a0b803119594923, }, ), received_events: EventHandle { count: 1885814552112531912, key: EventKey( [ 2, 251, 18, 186, 112, 27, 28, 43, 49, 135, 199, 163, 243, 61, 78, 23, 68, 73, 24, 198, 243, 118, 61, 101, ], ), }, sent_events: EventHandle { count: 1835090355702011353, key: EventKey( [ 184, 115, 179, 59, 206, 125, 189, 94, 145, 44, 13, 134, 223, 154, 158, 38, 155, 0, 57, 37, 127, 105, 60, 124, ], ), }, sequence_number: 11827693110692500413, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd81b3d4c9076cf922ca63b46d05b998b37ab312f5a1893db1e6b87025097160): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b401575a6007cd116fdf3fc542810494a440208e99b9a298f2e99b0d33bb7a109558ab00356dbcc6c3ef6a65b020e05b7724e4b4d1fa1eae9ebea065cdbf77158b7622456893f130cf68fc8ce47dc4dbff3c06995bbe538583410001715ebaa851e206e52b96edecebd08e016b6846db113aa57f18c9bbdf881949d30058fc9d459fa5e36eb40882b53adae43724aaf33eb78d325b18511a06834d15797c7f13dc48b11c0d12de1ae29f38564ba8f1f19b0f3342efe22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be4fbcfff19e89b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 96, 7, 205, 17, 111, 223, 63, 197, 66, 129, 4, 148, 164, 64, 32, 142, 153, 185, 162, 152, 242, 233, 155, 13, 51, 187, 122, 16, 149, 88, 171, 0, 53, 109, 188, 198, 195, 239, 106, 101, 176, 32, 224, 91, 119, 36, 228, 180, 209, 250, 30, 174, 158, 190, 160, 101, 205, 191, 119, 21, 139, 118, 34, 69, 104, 147, 241, 48, 207, 104, 252, 140, 228, 125, 196, 219, 255, 60, 6, 153, 91, 190, 83, 133, 131, 65, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 715ebaa851e206e52b96edecebd08e01, }, ), received_events: EventHandle { count: 9197821662341785707, key: EventKey( [ 201, 187, 223, 136, 25, 73, 211, 0, 88, 252, 157, 69, 159, 165, 227, 110, 180, 8, 130, 181, 58, 218, 228, 55, ], ), }, sent_events: EventHandle { count: 6571470624461662756, key: EventKey( [ 81, 26, 6, 131, 77, 21, 121, 124, 127, 19, 220, 72, 177, 28, 13, 18, 222, 26, 226, 159, 56, 86, 75, 168, ], ), }, sequence_number: 16352361559078203889, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dddede26d7b1202724ae4fcd29da2be85f3f85f1dc8cd817a006fbf63ce55a6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501489749b5a5590d6271c2613d03c8c8519be0689f02364f429aea0eba12d9195e9c91a527ae7236ee142345181987ddb688b8343ff834755b32754793e4a268305ccb749f9a1e87d966013a88c9d4933f4de49c899f94ad5c7a0e00e546847862ded76e180be46e66c13410d61749e95caffe9f1a55b1666e8d9b952ac0b1e300095284201849b83e57069fd81e612bbd39f3cb47b48daf1ffae2422c1071ac86a0e3b159892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f430e8bb29a1a4ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 73, 181, 165, 89, 13, 98, 113, 194, 97, 61, 3, 200, 200, 81, 155, 224, 104, 159, 2, 54, 79, 66, 154, 234, 14, 186, 18, 217, 25, 94, 156, 145, 165, 39, 174, 114, 54, 238, 20, 35, 69, 24, 25, 135, 221, 182, 136, 184, 52, 63, 248, 52, 117, 91, 50, 117, 71, 147, 228, 162, 104, 48, 92, 203, 116, 159, 154, 30, 135, 217, 102, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3a88c9d4933f4de49c899f94ad5c7a0e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7987096978674960101, key: EventKey( [ 11, 228, 110, 102, 193, 52, 16, 214, 23, 73, 233, 92, 175, 254, 159, 26, 85, 177, 102, 110, 141, 155, 149, 42, ], ), }, sent_events: EventHandle { count: 2343087904762606016, key: EventKey( [ 73, 184, 62, 87, 6, 159, 216, 30, 97, 43, 189, 57, 243, 203, 71, 180, 141, 175, 31, 250, 226, 66, 44, 16, ], ), }, sequence_number: 9897137247332248689, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ddee705cdca3bfcbff1d3d26aa83734046ad0b5a56517cbcead27649f92bef60): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152ca10b24ee7000cdbdf5cf873f0df4b58b72f385ef825f2ba2e6015f7eea76cc0387bb99df124db7496aa82d16bcb38a62abd5e06c4ccd28eca1c70afa763c5bdc71621292c5c4776160504e0a9ae34cb946201b9a7551d2a314c644e812d90e49fdbdb00e658ade6e2444f7818526046d451abf49c0cf6166d8688bdfde0177480f8cb7b2d43fc1fd606d0341c184aea9f00995571cd3ac4d329f9e0302f355f51d9a5a449c1f90b471070f6ddc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b77dd4a6b5a6cd68 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 16, 178, 78, 231, 0, 12, 219, 223, 92, 248, 115, 240, 223, 75, 88, 183, 47, 56, 94, 248, 37, 242, 186, 46, 96, 21, 247, 238, 167, 108, 192, 56, 123, 185, 157, 241, 36, 219, 116, 150, 170, 130, 209, 107, 203, 56, 166, 42, 189, 94, 6, 196, 204, 210, 142, 202, 28, 112, 175, 167, 99, 197, 189, 199, 22, 33, 41, 44, 92, 71, 118, 22, 5, 4, 224, 169, 174, 52, 203, 148, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b9a7551d2a314c644e812d90e49fdbdb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8669223549034911974, key: EventKey( [ 82, 96, 70, 212, 81, 171, 244, 156, 12, 246, 22, 109, 134, 136, 189, 253, 224, 23, 116, 128, 248, 203, 123, 45, ], ), }, sent_events: EventHandle { count: 2032478059631737923, key: EventKey( [ 74, 234, 159, 0, 153, 85, 113, 205, 58, 196, 211, 41, 249, 224, 48, 47, 53, 95, 81, 217, 165, 164, 73, 193, ], ), }, sequence_number: 13969592580343008249, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(de6bf0ad407346e505b195910e1e171cc94ff6ec79eb45f2e990d104d41aa7df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964071a0a45cb30480f01090465a765e871c6969b4c2d462afcc2000dd01389db4eff19181417ba57e8ff7c61257707e79239c85ca9a08d48de7b746f24cd4a23732f983d18a7d7f3b5dbf6fccc309bd5e03f52c64467a5780b98ec798e1ee3cefc20ca724e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d1f8b8afe218b34 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 10, 69, 203, 48, 72, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 090465a765e871c6969b4c2d462afcc2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1873302674813997069, key: EventKey( [ 20, 23, 186, 87, 232, 255, 124, 97, 37, 119, 7, 231, 146, 57, 200, 92, 169, 160, 141, 72, 222, 123, 116, 111, ], ), }, sent_events: EventHandle { count: 4438349604333473060, key: EventKey( [ 167, 215, 243, 181, 219, 246, 252, 204, 48, 155, 213, 224, 63, 82, 198, 68, 103, 165, 120, 11, 152, 236, 121, 142, ], ), }, sequence_number: 5652802725332575006, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df76d3ad0c1d34fa81a903534b8ef526c5af0168715829e942922636842862e9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d6db63f48e048879b9d86f298d2f5734a2c3b3d85bac0318474b822087b55207585bf5dab53425eacb6dbbaa43affff876d798a73615bec5e9dcbe2b515018af9eafa4df48ee204b5c541767b542d0026fe6b302a7a7e7b18a3beedc75f4f6258890a00396dd94351583ebae24cb30358431e0eb0722af264181e3851f14e7fd4e51bccc8167ff3d083f28f477e6664aa508040abb815ba80a32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4149c2614d488cd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 182, 63, 72, 224, 72, 135, 155, 157, 134, 242, 152, 210, 245, 115, 74, 44, 59, 61, 133, 186, 192, 49, 132, 116, 184, 34, 8, 123, 85, 32, 117, 133, 191, 93, 171, 83, 66, 94, 172, 182, 219, 186, 164, 58, 255, 255, 135, 109, 121, 138, 115, 97, 91, 236, 94, 157, 203, 226, 181, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8af9eafa4df48ee204b5c541767b542d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8898684235350277670, key: EventKey( [ 163, 190, 237, 199, 95, 79, 98, 88, 137, 10, 0, 57, 109, 217, 67, 81, 88, 62, 186, 226, 76, 179, 3, 88, ], ), }, sent_events: EventHandle { count: 7273923020225125955, key: EventKey( [ 30, 56, 81, 241, 78, 127, 212, 229, 27, 204, 200, 22, 127, 243, 208, 131, 242, 143, 71, 126, 102, 100, 170, 80, ], ), }, sequence_number: 11781621227656528000, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df9b8848fb0a75b72beb95bced427a920c8f07afd69bb2c40ae66870aa275a6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974179370d4819b76850d5df52af55a4ca73829026578f9c1f201e6899125dde4d040a92bb836f77be15400c2a478132efd2a6e1804b39f927d4fd9a25ccb966d1e0530979ce2f8ae241742c29dfd2f4165343b45185bdcb158e1c0096d412faf25220c04fb4f57aff99873d68e810d84e242627f442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086e5862e92dcf44be Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 112, 212, 129, 155, 118, 133, 13, 93, 245, 42, 245, 90, 76, 167, 56, 41, 2, 101, 120, 249, 193, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e6899125dde4d040a92bb836f77be154, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7938435667530917058, key: EventKey( [ 4, 179, 159, 146, 125, 79, 217, 162, 92, 203, 150, 109, 30, 5, 48, 151, 156, 226, 248, 174, 36, 23, 66, 194, ], ), }, sent_events: EventHandle { count: 4988638621732961693, key: EventKey( [ 91, 220, 177, 88, 225, 192, 9, 109, 65, 47, 175, 37, 34, 12, 4, 251, 79, 87, 175, 249, 152, 115, 214, 142, ], ), }, sequence_number: 4935771756029021569, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dfba6ddaefa878fc7f34168d2dddc3068311879bf83647593de36bd845ab6fc6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013ece735b2b9b6ce66b4fd5a5a665577f0a78cc2fc10f8cc529d0fea0938beec2a896e2318bc85d9796b1ee4c363e1c1d7bc1d9c0771dc14ec335561988e7f000017f5d3f99f142f3f2c7f7f15e2a0a5a367c9ecd686c8e386718548d6a9e43b3e35f6b766f030ad35cb174e27029b301f141b68d05d29ad03a2b180032389227cdbd14c3948dcb5f02a4f8ff2269f0afa0d8c4c7f858e6945c98202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080531b0b38a4e2754 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 115, 91, 43, 155, 108, 230, 107, 79, 213, 165, 166, 101, 87, 127, 10, 120, 204, 47, 193, 15, 140, 197, 41, 208, 254, 160, 147, 139, 238, 194, 168, 150, 226, 49, 139, 200, 93, 151, 150, 177, 238, 76, 54, 62, 28, 29, 123, 193, 217, 192, 119, 29, 193, 78, 195, 53, 86, 25, 136, 231, 240, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7f5d3f99f142f3f2c7f7f15e2a0a5a36, }, ), received_events: EventHandle { count: 7437851380868292220, key: EventKey( [ 84, 141, 106, 158, 67, 179, 227, 95, 107, 118, 111, 3, 10, 211, 92, 177, 116, 226, 112, 41, 179, 1, 241, 65, ], ), }, sent_events: EventHandle { count: 3115031455647239606, key: EventKey( [ 0, 50, 56, 146, 39, 205, 189, 20, 195, 148, 141, 203, 95, 2, 164, 248, 255, 34, 105, 240, 175, 160, 216, 196, ], ), }, sequence_number: 2348729000263219399, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e097ee67c8536d5bec71c701cad8f4b4ca217b6748f9898a98534f9c8fd07569): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c992014586d167a899277cb60e0f164657f87715425f74552398111c5ff8bb2bbd1b945effc89c64810f747f583debeee909a8d73dc2a9ca00da305617db00c527d9ea38b3120702e2000001ead3752def436518df497774ec40bfa675b44a2651692aadeef4bebae28684da357d146a51928718185ce5c96d2e07b3699709e63afe9fdad3a61987b50ed3c9d8ce4fd8950c751d6b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800e40be04c725c53 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 209, 103, 168, 153, 39, 124, 182, 14, 15, 22, 70, 87, 248, 119, 21, 66, 95, 116, 85, 35, 152, 17, 28, 95, 248, 187, 43, 189, 27, 148, 94, 255, 200, 156, 100, 129, 15, 116, 127, 88, 61, 235, 238, 233, 9, 168, 215, 61, 194, 169, 202, 0, 218, 48, 86, 23, 219, 0, 197, 39, 217, 234, 56, 179, 18, 7, 2, 226, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7296938799799724545, key: EventKey( [ 223, 73, 119, 116, 236, 64, 191, 166, 117, 180, 74, 38, 81, 105, 42, 173, 238, 244, 190, 186, 226, 134, 132, 218, ], ), }, sent_events: EventHandle { count: 1767542257135942965, key: EventKey( [ 92, 229, 201, 109, 46, 7, 179, 105, 151, 9, 230, 58, 254, 159, 218, 211, 166, 25, 135, 181, 14, 211, 201, 216, ], ), }, sequence_number: 7718454033296936910, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0a08d98a835e81d0cbd6def12842048986149ca2f339aed57bcf695ad8fe494): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22a507b4f26bb65215c3926189481601adef6e4d933612821e99370c77b4779d22642300005e3725f63322516118b7efb1902ef10e7a4af2eb6fb04b85bb2c5afd4dc4c772503261c5b1be63dc561860b1a8ebfe01b334179851aecf898a6bd3d5af22269ea001da5a5e6962a07d042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869bbf75699b77689 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 7, 180, 242, 107, 182, 82, 21, 195, 146, 97, 137, 72, 22, 1, 173, 239, 110, 77, 147, 54, 18, 130, 30, 153, 55, 12, 119, 180, 119, 157, 34, 100, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7012423701360883550, key: EventKey( [ 183, 239, 177, 144, 46, 241, 14, 122, 74, 242, 235, 111, 176, 75, 133, 187, 44, 90, 253, 77, 196, 199, 114, 80, ], ), }, sent_events: EventHandle { count: 6258987252815585586, key: EventKey( [ 96, 177, 168, 235, 254, 1, 179, 52, 23, 152, 81, 174, 207, 137, 138, 107, 211, 213, 175, 34, 38, 158, 160, 1, ], ), }, sequence_number: 323591092775574234, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0ca101592daa30749b6188fec077be442318981b98f424fbc5410dbf5ed65da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d0bf2cc407cc98488da7be95c060001c25ec84d9052885d0ef3aa2924c307a1d1757eec590e6976186880c60835122961b189afa1bceb1f5152f92aff9fc0dc517bbc4fa9f6560d7a1863be1f10809410c4d3dd82ece4cc4f8786fe08461a562cc81650c129682ef2ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878f54fd13d364529 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 242, 204, 64, 124, 201, 132, 136, 218, 123, 233, 92, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c25ec84d9052885d0ef3aa2924c307a1, }, ), received_events: EventHandle { count: 8532366748412704209, key: EventKey( [ 104, 128, 198, 8, 53, 18, 41, 97, 177, 137, 175, 161, 188, 235, 31, 81, 82, 249, 42, 255, 159, 192, 220, 81, ], ), }, sent_events: EventHandle { count: 8794781264726965371, key: EventKey( [ 99, 190, 31, 16, 128, 148, 16, 196, 211, 221, 130, 236, 228, 204, 79, 135, 134, 254, 8, 70, 26, 86, 44, 200, ], ), }, sequence_number: 17217875350302838806, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e116a7d5277d45dfcf931885c8a75ed7ebfd452edbc6c7b74af893cb9f617422): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013a4220d2a85635a6f5a3b72da7d8a2c1a87101dece5aa3e31d5fe315dadbc0bff17bfdbd96cbfef8181509543a3a53b5573e5fe8676eec680b05810000289b8e207826f50718d0dba7b283e923db4374121062fc4342ea2b5be747017ce641fde354e93cc639181a1c91de210200c3c8746cd08b7b3f43ca168aba15e9b85c473c71c22d66cc572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708443e3d2196ab1502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 32, 210, 168, 86, 53, 166, 245, 163, 183, 45, 167, 216, 162, 193, 168, 113, 1, 222, 206, 90, 163, 227, 29, 95, 227, 21, 218, 219, 192, 191, 241, 123, 253, 189, 150, 203, 254, 248, 24, 21, 9, 84, 58, 58, 83, 181, 87, 62, 95, 232, 103, 110, 236, 104, 11, 5, 129, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 573406824943754024, key: EventKey( [ 208, 219, 167, 178, 131, 233, 35, 219, 67, 116, 18, 16, 98, 252, 67, 66, 234, 43, 91, 231, 71, 1, 124, 230, ], ), }, sent_events: EventHandle { count: 4163081878399876417, key: EventKey( [ 26, 28, 145, 222, 33, 2, 0, 195, 200, 116, 108, 208, 139, 123, 63, 67, 202, 22, 138, 186, 21, 233, 184, 92, ], ), }, sequence_number: 6326543923270466631, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1cde6bde32b76fafe83a49c9e1f4049eb8392f10c135a6c7b3bff41d0d519ca): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97518da615fffc46652977696b49b2130e6e1ce778c1a3fd2b60001336b24e31b85ca977828c56c97ceb370006755565d6e85340118918639e4310dbfd5c4bd27795c46372c66b2cba464d1383e0219576fc7e3b62a182230836232c8b5c5fd87f8f8d806c8302eab442bf9c2b2f1f33bcbeb6b90d7ef2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708584cbb9f3d79bdb6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 97, 95, 255, 196, 102, 82, 151, 118, 150, 180, 155, 33, 48, 230, 225, 206, 119, 140, 26, 63, 210, 182, 0, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 336b24e31b85ca977828c56c97ceb370, }, ), key_rotation_capability: None, received_events: EventHandle { count: 86841001885717863, key: EventKey( [ 145, 134, 57, 228, 49, 13, 191, 213, 196, 189, 39, 121, 92, 70, 55, 44, 102, 178, 203, 164, 100, 209, 56, 62, ], ), }, sent_events: EventHandle { count: 3077897841060288770, key: EventKey( [ 34, 48, 131, 98, 50, 200, 181, 197, 253, 135, 248, 248, 216, 6, 200, 48, 46, 171, 68, 43, 249, 194, 178, 241, ], ), }, sequence_number: 17282440888249433075, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1eeec35238fae2186ebdf8d0b33571237f4d63531561b1962a32ff4757ba639): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014b24a11e8a7c2756a9af512bd23fdeec5d571b6a3fc6a4bdccec72da2d5204eceb386ba38cdf8cf6509f81c123bf1384a453b1ae5193e0b2b3989cf2053998c3b7043235d956c7593081978a0000be3d86d56677a47f1866fd99193f3f51f5d2fd472fd8411c7219e8d6b285bc59df9aa89873a3777112189d1e1f07e0cd50a426595a41c12f225aff1490f479563166fd924b47d190f05c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708491b43a7912f574a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 161, 30, 138, 124, 39, 86, 169, 175, 81, 43, 210, 63, 222, 236, 93, 87, 27, 106, 63, 198, 164, 189, 204, 236, 114, 218, 45, 82, 4, 236, 235, 56, 107, 163, 140, 223, 140, 246, 80, 159, 129, 193, 35, 191, 19, 132, 164, 83, 177, 174, 81, 147, 224, 178, 179, 152, 156, 242, 5, 57, 152, 195, 183, 4, 50, 53, 217, 86, 199, 89, 48, 129, 151, 138, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9197607622550109630, key: EventKey( [ 102, 253, 153, 25, 63, 63, 81, 245, 210, 253, 71, 47, 216, 65, 28, 114, 25, 232, 214, 178, 133, 188, 89, 223, ], ), }, sent_events: EventHandle { count: 1328974908953766042, key: EventKey( [ 157, 30, 31, 7, 224, 205, 80, 164, 38, 89, 90, 65, 193, 47, 34, 90, 255, 20, 144, 244, 121, 86, 49, 102, ], ), }, sequence_number: 6697011874418627325, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1fe9be0d70405e598d58a63d8d28a21903836e7710952cdc4d7e7befc97907b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01515675fd4b69b6b4d365eafaed5a6b2e6a8f8aa447255758bb12121cd7eca8e7f08c318c71c4ec6e50ada253db72f88e62973a0c876501adbb12bb485d39d622b11d5a92e5b6704ab938c88ca407e7d139cf0000e678b4774a95e13e1886bb229bc3d398aed9b1e2729ce2c4d44d67c24d8ef779ad2a03c4465343413918fda518b500a5046a1ff44900472e9d043c20d9b57af4fc61594a87282aa339422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bbd1d8116c4b4cd0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 86, 117, 253, 75, 105, 182, 180, 211, 101, 234, 250, 237, 90, 107, 46, 106, 143, 138, 164, 71, 37, 87, 88, 187, 18, 18, 28, 215, 236, 168, 231, 240, 140, 49, 140, 113, 196, 236, 110, 80, 173, 162, 83, 219, 114, 248, 142, 98, 151, 58, 12, 135, 101, 1, 173, 187, 18, 187, 72, 93, 57, 214, 34, 177, 29, 90, 146, 229, 182, 112, 74, 185, 56, 200, 140, 164, 7, 231, 209, 57, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4531066847179864294, key: EventKey( [ 134, 187, 34, 155, 195, 211, 152, 174, 217, 177, 226, 114, 156, 226, 196, 212, 77, 103, 194, 77, 142, 247, 121, 173, ], ), }, sent_events: EventHandle { count: 4125652758596682538, key: EventKey( [ 253, 165, 24, 181, 0, 165, 4, 106, 31, 244, 73, 0, 71, 46, 157, 4, 60, 32, 217, 181, 122, 244, 252, 97, ], ), }, sequence_number: 4772024681639660121, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e201440c8a0ee0a1775475ff8a24b33c0f8bd097db47a9f45c3d0fcbd977f613): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b65f94c0b893f21bdf49901062e20715fdd032620a6d80631703dde00017019b7e5cd0766bbdd524e292320e08da1bb48c3b9591b251821ac3e7750a07e5b23235b1fac3fa9a608b4d23f5ff20b51e278fc474cc6de5618a26a78a7a77e54d155256e2e7c6fdb314b5351825e4b47ca61bf182cd9708aad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088ed21dc080e440eb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 249, 76, 11, 137, 63, 33, 189, 244, 153, 1, 6, 46, 32, 113, 95, 221, 3, 38, 32, 166, 216, 6, 49, 112, 61, 222, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7019b7e5cd0766bbdd524e292320e08d, }, ), received_events: EventHandle { count: 2673829458154666913, key: EventKey( [ 33, 172, 62, 119, 80, 160, 126, 91, 35, 35, 91, 31, 172, 63, 169, 166, 8, 180, 210, 63, 95, 242, 11, 81, ], ), }, sent_events: EventHandle { count: 6259658563019110626, key: EventKey( [ 162, 106, 120, 167, 167, 126, 84, 209, 85, 37, 110, 46, 124, 111, 219, 49, 75, 83, 81, 130, 94, 75, 71, 202, ], ), }, sequence_number: 12504931393397636961, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e346e6d37406239ddf5a78617cae4a0eb46882c519e773468802584742f96c2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619988e50aa4f50b27fc9979b4d02c1febec2aa8943df3692e0480000b119cc516fb8734218e80ed05abc479358a8f38ba8d127293c2a1ceda7aeb7419f60dec33c8922f57a18c1b6452785a981d94b8695f52404f1449ef2f2e2d689d781d63d305f7f41894f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b253b99ab2d4d043 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 142, 80, 170, 79, 80, 178, 127, 201, 151, 155, 77, 2, 193, 254, 190, 194, 170, 137, 67, 223, 54, 146, 224, 72, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4788373617078180273, key: EventKey( [ 232, 14, 208, 90, 188, 71, 147, 88, 168, 243, 139, 168, 209, 39, 41, 60, 42, 28, 237, 167, 174, 183, 65, 159, ], ), }, sent_events: EventHandle { count: 8860025814746652256, key: EventKey( [ 193, 182, 69, 39, 133, 169, 129, 217, 75, 134, 149, 245, 36, 4, 241, 68, 158, 242, 242, 226, 214, 137, 215, 129, ], ), }, sequence_number: 5731184016119315926, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e36421d572213246cef99da094d5f5574322cce705e9c558c3975e7096b4a155): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133b77e9852ed34a4e5e13235bf568820b4ff7f7d2011710429550cead31b410de2414255d27692ecdca8880c3278c996abeb5178019663a63bffda841f1b67f6f328bda3c100a06176f8a7f0cc6a1864fc4ce69f525aabd60e62c5d43388698b45a9185997975041a80953c0974f56185973491adcdac1b3c09e8043b40bc799f42013f1489af6494e9a6166a3989f942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084ebe67b1cc6c682b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 126, 152, 82, 237, 52, 164, 229, 225, 50, 53, 191, 86, 136, 32, 180, 255, 127, 125, 32, 17, 113, 4, 41, 85, 12, 234, 211, 27, 65, 13, 226, 65, 66, 85, 210, 118, 146, 236, 220, 168, 136, 12, 50, 120, 201, 150, 171, 235, 81, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9663a63bffda841f1b67f6f328bda3c1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7695790467488047520, key: EventKey( [ 100, 252, 76, 230, 159, 82, 90, 171, 214, 14, 98, 197, 212, 51, 136, 105, 139, 69, 169, 24, 89, 151, 151, 80, ], ), }, sent_events: EventHandle { count: 6219356462704601153, key: EventKey( [ 89, 115, 73, 26, 220, 218, 193, 179, 192, 158, 128, 67, 180, 11, 199, 153, 244, 32, 19, 241, 72, 154, 246, 73, ], ), }, sequence_number: 10709446266475092558, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e36aa3e3fcdd151f75f2600148c74e9d4d417b56595277256f125e8589d5e2e2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e110960b53312626680d4e8cbbb2970db2f680000689f7c951c3d5d48180a99aaae08f15132fe5e2c0d170813a887bffaca83d8aae3b8307c571dc659171824bd941d8f3ee5f95483a974248765bf5d9f69eb01d26e5549d0643eb4bc0ea52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708182aa07b21d93909 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 96, 181, 51, 18, 98, 102, 128, 212, 232, 203, 187, 41, 112, 219, 47, 104, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5214391136541253480, key: EventKey( [ 10, 153, 170, 174, 8, 241, 81, 50, 254, 94, 44, 13, 23, 8, 19, 168, 135, 191, 250, 202, 131, 216, 170, 227, ], ), }, sent_events: EventHandle { count: 1682593765123698872, key: EventKey( [ 36, 189, 148, 29, 143, 62, 229, 249, 84, 131, 169, 116, 36, 135, 101, 191, 93, 159, 105, 235, 1, 210, 110, 85, ], ), }, sequence_number: 11893651148258988105, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e3fc311dddd7cdb276d4a2e28c3ea043da3c3c7ab5f22eebe241646071bfd05f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01e101da89be634f3e826818ef2570d688ee5a006d6c9f9bdcd3d96618b619e1c16f037df1452a0cb5e0bba537b546254244fd605157db09982fc725741848108fc84bb93aa114c30f2131ad1cdd0f3910a942a27090756cee780a4c95c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083e62356da64f4217 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: da89be634f3e826818ef2570d688ee5a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7411187606272044141, key: EventKey( [ 182, 25, 225, 193, 111, 3, 125, 241, 69, 42, 12, 181, 224, 187, 165, 55, 181, 70, 37, 66, 68, 253, 96, 81, ], ), }, sent_events: EventHandle { count: 8369314489766107991, key: EventKey( [ 72, 16, 143, 200, 75, 185, 58, 161, 20, 195, 15, 33, 49, 173, 28, 221, 15, 57, 16, 169, 66, 162, 112, 144, ], ), }, sequence_number: 13949139028712254581, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e4e204c6371fcec5b4334ca6e42763426fbe5b89ef9d59143317232372110c76): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d109a2f8d66b14df012303e414aff82f36d01e8defa31d844ac912ee804afe7f01ad60172ded66cfc4745b415d30a64e5ea4be19a643094bb2f6625184329aa7718cab9038ea8e56c7d8624aeb863cace785bd008c49140e21b6a262218c06628ac6f04a17db3d3c9159ca0ab3212e0a539717622ae86b949be697764632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081cdadf8758ed394c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 154, 47, 141, 102, 177, 77, 240, 18, 48, 62, 65, 74, 255, 130, 243, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e8defa31d844ac912ee804afe7f01ad6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 72ded66cfc4745b415d30a64e5ea4be1, }, ), received_events: EventHandle { count: 2694893909719409818, key: EventKey( [ 67, 41, 170, 119, 24, 202, 185, 3, 142, 168, 229, 108, 125, 134, 36, 174, 184, 99, 202, 206, 120, 91, 208, 8, ], ), }, sent_events: EventHandle { count: 2460770914397098436, key: EventKey( [ 192, 102, 40, 172, 111, 4, 161, 125, 179, 211, 201, 21, 156, 160, 171, 50, 18, 224, 165, 57, 113, 118, 34, 174, ], ), }, sequence_number: 7161980603473705350, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e4feff360438cff988b7e061bb4ef940cb042fd6e389fe59817c38b386685422): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215450943f0eee5a341d1212d6b0513edb746836f75e70001165290c2cb9787c2ee26be9454caafb4a3793379406b993918f600e8c77c3ac68984130958ba927abe4d8b815de23e1b05ae529c672da97f621839394ec8abb91fe5cad9192341652cde87e41afa8211ae2a7107970b5407ea402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878584169d73c963b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 9, 67, 240, 238, 229, 163, 65, 209, 33, 45, 107, 5, 19, 237, 183, 70, 131, 111, 117, 231, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 165290c2cb9787c2ee26be9454caafb4, }, ), received_events: EventHandle { count: 4150466456254118307, key: EventKey( [ 246, 0, 232, 199, 124, 58, 198, 137, 132, 19, 9, 88, 186, 146, 122, 190, 77, 139, 129, 93, 226, 62, 27, 5, ], ), }, sent_events: EventHandle { count: 7097577550236111534, key: EventKey( [ 57, 57, 78, 200, 171, 185, 31, 229, 202, 217, 25, 35, 65, 101, 44, 222, 135, 228, 26, 250, 130, 17, 174, 42, ], ), }, sequence_number: 4677559220530775921, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e515e3e210514c92deed7010ab4f1097f117386131621a4322f62f86aec87642): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001337d05d255968417b14feec4b006db8530ff36c532ddffd532679899bd94e70de6c6667092b12b5613422cef7932f9accabe3f6c015ba5958fb268a35a7bf8817f83dc0d81016d02129e7bd7e8affc0de482ba9b0d837626a5ce76fc464218c7fc54adbca583285078c98fa51e01544512d2f6e24550ee69d8688c12fe62451885c453fc4b1bd0e2e399e231d8437c2ed3b9b0c078ccdde884af4217dacb9cbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d0ffe457dcdb06d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 5, 210, 85, 150, 132, 23, 177, 79, 238, 196, 176, 6, 219, 133, 48, 255, 54, 197, 50, 221, 255, 213, 50, 103, 152, 153, 189, 148, 231, 13, 230, 198, 102, 112, 146, 177, 43, 86, 19, 66, 44, 239, 121, 50, 249, 172, 202, 190, 63, 108, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ba5958fb268a35a7bf8817f83dc0d81, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6d02129e7bd7e8affc0de482ba9b0d83, }, ), received_events: EventHandle { count: 4775782042076259958, key: EventKey( [ 199, 252, 84, 173, 188, 165, 131, 40, 80, 120, 201, 143, 165, 30, 1, 84, 69, 18, 210, 246, 226, 69, 80, 238, ], ), }, sent_events: EventHandle { count: 4999837891953219689, key: EventKey( [ 133, 196, 83, 252, 75, 27, 208, 226, 227, 153, 226, 49, 216, 67, 124, 46, 211, 185, 176, 192, 120, 204, 221, 232, ], ), }, sequence_number: 13663019507088797572, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e536ab8c03499ab2d2b5b4bc8c0679db8ba8b625a9e5038834de951fa6299a82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014ef1144c27b0ed57f871e374de7a97eff9e683be27be717f287387fee64234bdc291883a740cd49e6988669ba8961a7bdc3b3d05970a55396236d21a212e3da1de310b5d2edab51c2cd422bcdfdf0b0166d66221bd3f985a5dd8004a2fedf6af01be2fd8e80d6fc2d4208e75e8c13314a1dc4dd9b8fddfd206188f42950c3d0fddf14e546f0fc5ba2a6c6e7e8dc5afdbf278dac2a8005cde9c301870e32eeb0d42e57e6b49e76d44cb0406fffababd7a0840e78de338db7457d6e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70883457614ad09cb9f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 20, 76, 39, 176, 237, 87, 248, 113, 227, 116, 222, 122, 151, 239, 249, 230, 131, 190, 39, 190, 113, 127, 40, 115, 135, 254, 230, 66, 52, 189, 194, 145, 136, 58, 116, 12, 212, 158, 105, 136, 102, 155, 168, 150, 26, 123, 220, 59, 61, 5, 151, 10, 85, 57, 98, 54, 210, 26, 33, 46, 61, 161, 222, 49, 11, 93, 46, 218, 181, 28, 44, 212, 34, 188, 223, 223, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 66d66221bd3f985a5dd8004a2fedf6af, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: be2fd8e80d6fc2d4208e75e8c13314a1, }, ), received_events: EventHandle { count: 491701590157774300, key: EventKey( [ 143, 66, 149, 12, 61, 15, 221, 241, 78, 84, 111, 15, 197, 186, 42, 108, 110, 126, 141, 197, 175, 219, 242, 120, ], ), }, sent_events: EventHandle { count: 3502919096916820698, key: EventKey( [ 112, 227, 46, 235, 13, 66, 229, 126, 107, 73, 231, 109, 68, 203, 4, 6, 255, 250, 186, 189, 122, 8, 64, 231, ], ), }, sequence_number: 16561520839107339149, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e541aec070b4ac0faf1c56f69805fc106b47ea6fafe136f09bdacb20bf295fb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f22eeeebd7a46251fe0c0d9f9dd5bb837f94d91c06e29f0a287c1a49189c36400a0536201283ae9da70de0807774575079096302f008e61938504771c58184b2f984e6946ac1b2585a68181e7d0a5b743939bbe7bd22566f7ad0dd074370c18f4a5aff867a06ba65f879bdc89c67ec76266e0c70c4554840ad05ba923f52d2f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080d90ba9b3d986903 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 238, 189, 122, 70, 37, 31, 224, 192, 217, 249, 221, 91, 184, 55, 249, 77, 145, 192, 110, 41, 240, 162, 135, 193, 164, 145, 137, 195, 100, 0, 160, 83, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 283ae9da70de0807774575079096302f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6349080435990159758, key: EventKey( [ 75, 47, 152, 78, 105, 70, 172, 27, 37, 133, 166, 129, 129, 231, 208, 165, 183, 67, 147, 155, 190, 123, 210, 37, ], ), }, sent_events: EventHandle { count: 880300689105745766, key: EventKey( [ 244, 165, 175, 248, 103, 160, 107, 166, 95, 135, 155, 220, 137, 198, 126, 199, 98, 102, 224, 199, 12, 69, 84, 132, ], ), }, sequence_number: 3399642827248619530, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e6302df17bf1b108015e37dd9420b399d2e4ba194eb52e1779108f7e41227936): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015afb86d2572df93209f4f41fdebd7fb1d4f2ab436cf3b6ecc35156e80bdc29b181fbca254e051c8dbb65a65e5a0380fb33f0bdfaaab93f70efb0f99ed5cfb676a6245d506237617f95700526d82b29285bdea898ecf05f3043357c0000eb51c08db029d53a189d95a8f7bef82c1795cc27baaeb7ea6ace72154d23951aeac897eeb16bf96a19184ed166f3a6fa03662347823bcf39f54b29b1c2bd963e1a4d947c156078d234822101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084cf2e3f38e9d73e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 134, 210, 87, 45, 249, 50, 9, 244, 244, 31, 222, 189, 127, 177, 212, 242, 171, 67, 108, 243, 182, 236, 195, 81, 86, 232, 11, 220, 41, 177, 129, 251, 202, 37, 78, 5, 28, 141, 187, 101, 166, 94, 90, 3, 128, 251, 51, 240, 189, 250, 170, 185, 63, 112, 239, 176, 249, 158, 213, 207, 182, 118, 166, 36, 93, 80, 98, 55, 97, 127, 149, 112, 5, 38, 216, 43, 41, 40, 91, 222, 168, 152, 236, 240, 95, 48, 67, 53, 124, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4239340462508364267, key: EventKey( [ 157, 149, 168, 247, 190, 248, 44, 23, 149, 204, 39, 186, 174, 183, 234, 106, 206, 114, 21, 77, 35, 149, 26, 234, ], ), }, sent_events: EventHandle { count: 1831550439421548488, key: EventKey( [ 78, 209, 102, 243, 166, 250, 3, 102, 35, 71, 130, 59, 207, 57, 245, 75, 41, 177, 194, 189, 150, 62, 26, 77, ], ), }, sequence_number: 9382355338169515156, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e6b196e0815bbfd25a09fc912d511de63ddead6e11a41f6fae0f0d48b807b308): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015de021fb35e8ea60bb5e88b8a7bae6bd0cfc066d47dfd809099957047e6f43f470ae671eeefc5d0d88012a072dff86fcbc9dab0824d097fbfffc18369e7b4f214dc897ac2b99c467d7351a861b0c3049713d11bf197dc8380639161d8dc3010f0fa6904daa7e9ec429ed4d0386e6a70008c303934b01641a18785729fc57aba71a0077594b8d6a0f0a0469385088bfd20c84c3133681eed254182241cdc15f9100809481781e5d93cfd2140dca236b01dd0c36984764681bd8392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082ffa394aeb32ee01 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 33, 251, 53, 232, 234, 96, 187, 94, 136, 184, 167, 186, 230, 189, 12, 252, 6, 109, 71, 223, 216, 9, 9, 153, 87, 4, 126, 111, 67, 244, 112, 174, 103, 30, 238, 252, 93, 13, 136, 1, 42, 7, 45, 255, 134, 252, 188, 157, 171, 8, 36, 208, 151, 251, 255, 252, 24, 54, 158, 123, 79, 33, 77, 200, 151, 172, 43, 153, 196, 103, 215, 53, 26, 134, 27, 12, 48, 73, 113, 61, 17, 191, 25, 125, 200, 56, 6, 57, 22, 29, 141, 195, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0f0fa6904daa7e9ec429ed4d0386e6a7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1901646366757864200, key: EventKey( [ 120, 87, 41, 252, 87, 171, 167, 26, 0, 119, 89, 75, 141, 106, 15, 10, 4, 105, 56, 80, 136, 191, 210, 12, ], ), }, sent_events: EventHandle { count: 6112209883020641156, key: EventKey( [ 34, 65, 205, 193, 95, 145, 0, 128, 148, 129, 120, 30, 93, 147, 207, 210, 20, 13, 202, 35, 107, 1, 221, 12, ], ), }, sequence_number: 4168111590304356406, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e85ebc55e355c2c1c8a9085026348c2095eed132c6e852d0590c3adb1ae8100c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0fd8f506d27f852e244b116229784318000050e7f99a0c28a462187c4975ceeb7843de6537c747b24eef9915e50dd79caf07c0ea131838e8f1d22a1847f7e9b1a8a2590507b1b59668e160e51a981a4a1991700314327917c50d155b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083a37380b71df1e1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 245, 6, 210, 127, 133, 46, 36, 75, 17, 98, 41, 120, 67, 24, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7107850146502272848, key: EventKey( [ 124, 73, 117, 206, 235, 120, 67, 222, 101, 55, 199, 71, 178, 78, 239, 153, 21, 229, 13, 215, 156, 175, 7, 192, ], ), }, sent_events: EventHandle { count: 3085794674378019818, key: EventKey( [ 71, 247, 233, 177, 168, 162, 89, 5, 7, 177, 181, 150, 104, 225, 96, 229, 26, 152, 26, 74, 25, 145, 112, 3, ], ), }, sequence_number: 6563167172115902996, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e87fe9675bac5870f131f6f9712f550754bcb4c5acee5c0547f502b5e5058cc7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d014089fd03614be9c2ebcd7381311ff9d5ba181f71748545e4a6cd7a07502639ec5d626f44d6a26f46a98206ccf25bc5c94bab87ba0ed7a354a5b2f637b18c7b1c7e0001a99b5ee9f69efad0828cf09120d8a839bc2c890b24037e0718cf6bf59417645157a24f64257370c8b83d63c67d0aef9d66f7ee67fdff56f93f181fda9a3007afa33d08fa8297301fbe550aec82ef905a485c1b3787852ab07f272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc9a50e4468c8dd1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 137, 253, 3, 97, 75, 233, 194, 235, 205, 115, 129, 49, 31, 249, 213, 186, 24, 31, 113, 116, 133, 69, 228, 166, 205, 122, 7, 80, 38, 57, 236, 93, 98, 111, 68, 214, 162, 111, 70, 169, 130, 6, 204, 242, 91, 197, 201, 75, 171, 135, 186, 14, 215, 163, 84, 165, 178, 246, 55, 177, 140, 123, 28, 126, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a99b5ee9f69efad0828cf09120d8a839, }, ), received_events: EventHandle { count: 539872458678283452, key: EventKey( [ 207, 107, 245, 148, 23, 100, 81, 87, 162, 79, 100, 37, 115, 112, 200, 184, 61, 99, 198, 125, 10, 239, 157, 102, ], ), }, sent_events: EventHandle { count: 4609811351058509559, key: EventKey( [ 31, 218, 154, 48, 7, 175, 163, 61, 8, 250, 130, 151, 48, 31, 190, 85, 10, 236, 130, 239, 144, 90, 72, 92, ], ), }, sequence_number: 2846187186196789019, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e8a8edb65fb5ea57a2b4220367c83487b8170faf515eb5c19ed109a750e2435c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137dacd636ba5ecc193c49fb69bd458006b66dfef14ec062423132438fe71a103c09e345afc1d168bb1505d734b108ba93d4ee009f5687931012b5011af71bf83361083851f974c3ba601bae6b240b378b800d9403b1b439fb97712929d95a4a69c0618d005e496534bb7ed2c93452c0195a7e22e0d938808a4b6683dbe583580fff45f18a5421c78ad2a427a0922682f442d6c6e4284fe03d09d9032a1d97e6247a49f042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ee990f89fd46f7c9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 205, 99, 107, 165, 236, 193, 147, 196, 159, 182, 155, 212, 88, 0, 107, 102, 223, 239, 20, 236, 6, 36, 35, 19, 36, 56, 254, 113, 161, 3, 192, 158, 52, 90, 252, 29, 22, 139, 177, 80, 93, 115, 75, 16, 139, 169, 61, 78, 224, 9, 245, 104, 121, 49, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2b5011af71bf83361083851f974c3ba6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bae6b240b378b800d9403b1b439fb977, }, ), received_events: EventHandle { count: 476438886409409042, key: EventKey( [ 208, 5, 228, 150, 83, 75, 183, 237, 44, 147, 69, 44, 1, 149, 167, 226, 46, 13, 147, 136, 8, 164, 182, 104, ], ), }, sent_events: EventHandle { count: 6914432254036459069, key: EventKey( [ 165, 66, 28, 120, 173, 42, 66, 122, 9, 34, 104, 47, 68, 45, 108, 110, 66, 132, 254, 3, 208, 157, 144, 50, ], ), }, sequence_number: 333165523950819745, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e90e972bba570f56d61f27b0fdb072aef697c77a6351b249a0229d3af247abeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619ebeb30f637b1ad702957c089e2cf89b4a1bbf95e7f7a5d2e7001db1f70c4757137aa125fd6521ba26196002b80718c00d2d663188702d02021984604b2ec997a1b9dbacf6334f444ee2625dc20a7441c726c4a291848431a53187d19f1cda99402ce3bbb496bf7ada907d8cc2d879a13df15d18a822101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9d7a6c88a35adf6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 235, 48, 246, 55, 177, 173, 112, 41, 87, 192, 137, 226, 207, 137, 180, 161, 187, 249, 94, 127, 122, 93, 46, 112, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: db1f70c4757137aa125fd6521ba26196, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7194168354569027627, key: EventKey( [ 135, 2, 208, 32, 33, 152, 70, 4, 178, 236, 153, 122, 27, 157, 186, 207, 99, 52, 244, 68, 238, 38, 37, 220, ], ), }, sent_events: EventHandle { count: 2975309741187966752, key: EventKey( [ 72, 67, 26, 83, 24, 125, 25, 241, 205, 169, 148, 2, 206, 59, 187, 73, 107, 247, 173, 169, 7, 216, 204, 45, ], ), }, sequence_number: 9406560663583824519, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e9261741c0c2a518e12445350103b0565c529a8283acca8aef4c7e2664f081ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d1096bd239022161f870637ac2def082e840000ffabbe957003d63818f60c8494a386fbd7d0193d1d3b22280e15965b2a8902c0755697efbec6da140018e0a6db39afe1b6d665165a070999a64dea2fad804e71c847ce94ee5c592453d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708945339086bf5d323 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 150, 189, 35, 144, 34, 22, 31, 135, 6, 55, 172, 45, 239, 8, 46, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4095464693223566335, key: EventKey( [ 246, 12, 132, 148, 163, 134, 251, 215, 208, 25, 61, 29, 59, 34, 40, 14, 21, 150, 91, 42, 137, 2, 192, 117, ], ), }, sent_events: EventHandle { count: 5870046675965782, key: EventKey( [ 224, 166, 219, 57, 175, 225, 182, 214, 101, 22, 90, 7, 9, 153, 166, 77, 234, 47, 173, 128, 78, 113, 200, 71, ], ), }, sequence_number: 15587842701489247438, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e9b87b7d24234fbad3b42fcbb2b0d667f86b53f3bfb41c831501e45fbd81d002): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8014be2867111edf26020f10dd636fea8f6ca4187491dadbed2537f065ce9e6e448dfd182a76589048ae66270a9ed213033ec996aebddb241ecba11b43e7cbafab52ef92d98a0c551899ce1d3f7000149f9f5b2392dfc9f385d45ac3691594760a17683f954f50518f36db72f4981a296813b04b8be25a5a8921a6fb794c573a92361ed41dbfdb17f1851a778cc481b9b8ccf7bd70c01e6b0d163554314bb8794c261177c9878d6fcf72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083a49f7d879b69549 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 134, 113, 17, 237, 242, 96, 32, 241, 13, 214, 54, 254, 168, 246, 202, 65, 135, 73, 29, 173, 190, 210, 83, 127, 6, 92, 233, 230, 228, 72, 223, 209, 130, 167, 101, 137, 4, 138, 230, 98, 112, 169, 237, 33, 48, 51, 236, 153, 106, 235, 221, 178, 65, 236, 186, 17, 180, 62, 124, 186, 250, 181, 46, 249, 45, 152, 160, 197, 81, 137, 156, 225, 211, 247, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 49f9f5b2392dfc9f385d45ac36915947, }, ), received_events: EventHandle { count: 429342770112930144, key: EventKey( [ 243, 109, 183, 47, 73, 129, 162, 150, 129, 59, 4, 184, 190, 37, 165, 168, 146, 26, 111, 183, 148, 197, 115, 169, ], ), }, sent_events: EventHandle { count: 9201414631840375075, key: EventKey( [ 81, 167, 120, 204, 72, 27, 155, 140, 207, 123, 215, 12, 1, 230, 176, 209, 99, 85, 67, 20, 187, 135, 148, 194, ], ), }, sequence_number: 17869393234941974369, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ea193f853f492dd05d02fbdc49001c4935ba33a7dafc55a22cb96061fa110805): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd016023bdcfb9d9f7108f2780097305bff2d8095a5445409a48ae02b2e5a5efe094e16fdbeeaab58d5b9e9215420636823789d16744646ae61e7556bb4557cdfd1232fad57f645a39a2d3f291f7587e1b4bc0389c0136398f59119df92d2641c796f70001e60862e464b55c22147cb4441f1a6b34ff28a65fdb2f2c1518c183f31bee0591006559c483ff5d2f3415260b3d2eef5040fe5733a82a1ad17e1872ef49b34f55a0c618768cad440b81e67013da1ca9373466cace8fc4fab783dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70868dd82e8f99e9c91 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 189, 207, 185, 217, 247, 16, 143, 39, 128, 9, 115, 5, 191, 242, 216, 9, 90, 84, 69, 64, 154, 72, 174, 2, 178, 229, 165, 239, 224, 148, 225, 111, 219, 238, 170, 181, 141, 91, 158, 146, 21, 66, 6, 54, 130, 55, 137, 209, 103, 68, 100, 106, 230, 30, 117, 86, 187, 69, 87, 205, 253, 18, 50, 250, 213, 127, 100, 90, 57, 162, 211, 242, 145, 247, 88, 126, 27, 75, 192, 56, 156, 1, 54, 57, 143, 89, 17, 157, 249, 45, 38, 65, 199, 150, 247, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e60862e464b55c22147cb4441f1a6b34, }, ), received_events: EventHandle { count: 1525646993020823807, key: EventKey( [ 193, 131, 243, 27, 238, 5, 145, 0, 101, 89, 196, 131, 255, 93, 47, 52, 21, 38, 11, 61, 46, 239, 80, 64, ], ), }, sent_events: EventHandle { count: 9138113889424332798, key: EventKey( [ 114, 239, 73, 179, 79, 85, 160, 198, 24, 118, 140, 173, 68, 11, 129, 230, 112, 19, 218, 28, 169, 55, 52, 102, ], ), }, sequence_number: 15889746197960707786, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eab33f30b57e0e20c6bd9f8669420182a25236fd15bad509bc3e50e8c8c3c524): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99301365a01bc1b442db14f4aabc02c7cc68b589f63f36ee221a5202f7a343a1061e64d5d5aff474a98655b66e285c32955a3ce25079d8decb900019180890728b620c8320e4f0eda5f1e36b22f673feb84d922183ba4daa21f535f0e8de714d63769d5714e7ecbfa5f969d0837a85bd30d05d43f1887019f440359b7bc59af0e1c0796ae52bdb13a42f0335c12dd3e57749b5cb2f62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708632fd6b128844195 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 1, 188, 27, 68, 45, 177, 79, 74, 171, 192, 44, 124, 198, 139, 88, 159, 99, 243, 110, 226, 33, 165, 32, 47, 122, 52, 58, 16, 97, 230, 77, 93, 90, 255, 71, 74, 152, 101, 91, 102, 226, 133, 195, 41, 85, 163, 206, 37, 7, 157, 141, 236, 185, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9180890728b620c8320e4f0eda5f1e36, }, ), received_events: EventHandle { count: 2511184413151670194, key: EventKey( [ 59, 164, 218, 162, 31, 83, 95, 14, 141, 231, 20, 214, 55, 105, 213, 113, 78, 126, 203, 250, 95, 150, 157, 8, ], ), }, sent_events: EventHandle { count: 4599306676390832183, key: EventKey( [ 135, 1, 159, 68, 3, 89, 183, 188, 89, 175, 14, 28, 7, 150, 174, 82, 189, 177, 58, 66, 240, 51, 92, 18, ], ), }, sequence_number: 17776372501926330077, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb08012cf571a6fe4ec66461a3c0e302e79b28eb971ccbcfb51a331837158e2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963165288c96b870225f8628ad04536f1e7a060b5806aca62000001b03cfea0217f3a18596e76137a672aabf33da3b7beef6e3f9d07c844b89da4a2f4d6d86b8e3a101e180d66ee3f712886693830aab3c629a48445d6e12eb23e07d4c041f30fea099bf42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8cf808f6410c929 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 136, 201, 107, 135, 2, 37, 248, 98, 138, 208, 69, 54, 241, 231, 160, 96, 181, 128, 106, 202, 98, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4215124751585947649, key: EventKey( [ 89, 110, 118, 19, 122, 103, 42, 171, 243, 61, 163, 183, 190, 239, 110, 63, 157, 7, 200, 68, 184, 157, 164, 162, ], ), }, sent_events: EventHandle { count: 2166295804134348532, key: EventKey( [ 13, 102, 238, 63, 113, 40, 134, 105, 56, 48, 170, 179, 198, 41, 164, 132, 69, 214, 225, 46, 178, 62, 7, 212, ], ), }, sequence_number: 17625692467539165632, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb232b6d2f65d345fe4bc9d688a60ceb3f2f8a6610840afa4e66cf96ccfd43f6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9860139bcba154ae8fe7e78bf1af10865cf97b5bf4752482b53781e146f6ded00a77dc59de5183a1a6205824379e9565aa6fb60f7cfb438c0fb27e94200001a26d36f203bcd7218f5921b092b2db3b57738ad3f514b88503bbc3e845e37d03957d28b60ab69dd0718c25fca844c6f200ddf157681a91a6c41e238d974d96c75f38dded57f951a78932101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8f9519bae21aad8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 186, 21, 74, 232, 254, 126, 120, 191, 26, 241, 8, 101, 207, 151, 181, 191, 71, 82, 72, 43, 83, 120, 30, 20, 111, 109, 237, 0, 167, 125, 197, 157, 229, 24, 58, 26, 98, 5, 130, 67, 121, 233, 86, 90, 166, 251, 96, 247, 207, 180, 56, 192, 251, 39, 233, 66, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8272333101050570266, key: EventKey( [ 245, 146, 27, 9, 43, 45, 179, 181, 119, 56, 173, 63, 81, 75, 136, 80, 59, 188, 62, 132, 94, 55, 208, 57, ], ), }, sent_events: EventHandle { count: 566725312898650711, key: EventKey( [ 194, 95, 202, 132, 76, 111, 32, 13, 223, 21, 118, 129, 169, 26, 108, 65, 226, 56, 217, 116, 217, 108, 117, 243, ], ), }, sequence_number: 10626272550177857165, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb847467781690609663c2f0f977ecb0740652bdcfd18b36ea45bd1f47acbd96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014ed55855110576f0034cdffd9e71331b7cba5b17d2e6fd4312f849f781f284c77c6cc17747e39547e4b91ffb8267c364c19764f294f793d545578c3ef959bfb0a7d129434726edec2a40d3ccf5cc1201ed84af4eea223cabc302c3ceff875d0400e8b86b0467cdf9561802edb3783fdd122b129595bb3e2255809dd58421432dc4d04cf2f62ccb90bd5f181ca8d87c2c46f945230fed47d1b2ffd352212cb68322374ee38aacbee85438152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083dada3d648b30a43 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 88, 85, 17, 5, 118, 240, 3, 76, 223, 253, 158, 113, 51, 27, 124, 186, 91, 23, 210, 230, 253, 67, 18, 248, 73, 247, 129, 242, 132, 199, 124, 108, 193, 119, 71, 227, 149, 71, 228, 185, 31, 251, 130, 103, 195, 100, 193, 151, 100, 242, 148, 247, 147, 213, 69, 87, 140, 62, 249, 89, 191, 176, 167, 209, 41, 67, 71, 38, 237, 236, 42, 64, 211, 204, 245, 204, 18, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ed84af4eea223cabc302c3ceff875d04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6267266198802249960, key: EventKey( [ 2, 237, 179, 120, 63, 221, 18, 43, 18, 149, 149, 187, 62, 34, 85, 128, 157, 213, 132, 33, 67, 45, 196, 208, ], ), }, sent_events: EventHandle { count: 6898829406508610124, key: EventKey( [ 28, 168, 216, 124, 44, 70, 249, 69, 35, 15, 237, 71, 209, 178, 255, 211, 82, 33, 44, 182, 131, 34, 55, 78, ], ), }, sequence_number: 1529065432100408035, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec445e24cd766b6a6131788d9eb0b7e8796e0081c92569464a9f56ce7ea47f3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101147445e695dfc15902017674b43e9fceaa5e69478f0108510b5ada46d3d8553ef6c40c96a4ee0122696dc421068d53ea5e6761fac6b453e807bd8962a8346618a4fe718ef237a284c922c7a80ad9025bdb80b929e027c8cd68d19e367a182a7f1825027ae004d19a5ce73e35f028d2a9736074fc6ab83a087819a4a591071766772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e3cc96c85eb8a4de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 69, 230, 149, 223, 193, 89, 2, 1, 118, 116, 180, 62, 159, 206, 170, 94, 105, 71, 143, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 08510b5ada46d3d8553ef6c40c96a4ee, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 22696dc421068d53ea5e6761fac6b453, }, ), received_events: EventHandle { count: 7364696431828731880, key: EventKey( [ 164, 254, 113, 142, 242, 55, 162, 132, 201, 34, 199, 168, 10, 217, 2, 91, 219, 128, 185, 41, 224, 39, 200, 205, ], ), }, sent_events: EventHandle { count: 9163163305020150120, key: EventKey( [ 37, 2, 122, 224, 4, 209, 154, 92, 231, 62, 53, 240, 40, 210, 169, 115, 96, 116, 252, 106, 184, 58, 8, 120, ], ), }, sequence_number: 8603589459413672985, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec62c0686a78ffe9b79016d72d6a7d12ba12000afc11734e6c97bc059f64a55a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af01522451e9d16e7eed695052bb592ea46cb64922ee33c1f5638e8c71af789cd3a7eb5c19375c9b2b59777f92ff894afdf074275751cb4f2683261dd96bd80942e76b2138a741ebd97559c449ae90b3c75f8ee57501a8885381acb32efaffd09e9d4bd841a4003d1663b00f05202c18809fb41c4fab554877c6743dd317f385eb545d50b132e8242822e601604fab101843b38936c35b1e4cc054c3f7edf388497ba75e5f1a7247b1424ae37152bb69af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70891f927bc8a62a3db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 81, 233, 209, 110, 126, 237, 105, 80, 82, 187, 89, 46, 164, 108, 182, 73, 34, 238, 51, 193, 245, 99, 142, 140, 113, 175, 120, 156, 211, 167, 235, 92, 25, 55, 92, 155, 43, 89, 119, 127, 146, 255, 137, 74, 253, 240, 116, 39, 87, 81, 203, 79, 38, 131, 38, 29, 217, 107, 216, 9, 66, 231, 107, 33, 56, 167, 65, 235, 217, 117, 89, 196, 73, 174, 144, 179, 199, 95, 142, 229, 117, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a8885381acb32efaffd09e9d4bd841a4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3179546901865502269, key: EventKey( [ 128, 159, 180, 28, 79, 171, 85, 72, 119, 198, 116, 61, 211, 23, 243, 133, 235, 84, 93, 80, 177, 50, 232, 36, ], ), }, sent_events: EventHandle { count: 1201140999391683112, key: EventKey( [ 67, 179, 137, 54, 195, 91, 30, 76, 192, 84, 195, 247, 237, 243, 136, 73, 123, 167, 94, 95, 26, 114, 71, 177, ], ), }, sequence_number: 12639839791964441154, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec6ebe7a38aa15ccd893aeda525f0635f013ff4e1318566b57fcbe927724fd50): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144dd212a3f8d27ba802d94d1caad8f8c89659f035777268dcccced19d1c60e0d39c864fe822f5b49c270cd2ea1b5c6b2442352359b587a3773a47fcd5c28dedd3a8fa3d8370001c8e19a2c6c3c26f6879125fe1348ae3b72e644167eb6c46b18500ae18735597f631f665866f22ce4fecb7259d749ad24a971378f0f8f5d6e0f18ae5f1ae38595ef4ec858a527d4cc9be6be781e21d3bc3dd28f0c67d73eab9a0e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70897cb966628c1c168 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 33, 42, 63, 141, 39, 186, 128, 45, 148, 209, 202, 173, 143, 140, 137, 101, 159, 3, 87, 119, 38, 141, 204, 204, 237, 25, 209, 198, 14, 13, 57, 200, 100, 254, 130, 47, 91, 73, 194, 112, 205, 46, 161, 181, 198, 178, 68, 35, 82, 53, 155, 88, 122, 55, 115, 164, 127, 205, 92, 40, 222, 221, 58, 143, 163, 216, 55, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c8e19a2c6c3c26f6879125fe1348ae3b, }, ), received_events: EventHandle { count: 7765532310149326450, key: EventKey( [ 80, 10, 225, 135, 53, 89, 127, 99, 31, 102, 88, 102, 242, 44, 228, 254, 203, 114, 89, 215, 73, 173, 36, 169, ], ), }, sent_events: EventHandle { count: 1111929027029841777, key: EventKey( [ 174, 95, 26, 227, 133, 149, 239, 78, 200, 88, 165, 39, 212, 204, 155, 230, 190, 120, 30, 33, 211, 188, 61, 210, ], ), }, sequence_number: 1052341749334609039, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec89b30d8c61a990668c34108e7ae03e8d926c00af8c94c45328278d4c7753e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c995013801b823e25fbbb3973bd272a6233eb3df98a48ddbe81a775acb9f2072923f2c2c0d506d9e3454cd567c8fb51a7aafa5b9ff8256cb5f2731780001caafac1a21d07d8417ae729b3570d50da87e788c608a3c0718901d359d4893411f5101e71a425abe069dd6c1073fb71d31fcac2b74cbb7444818617599633ddd63cac054706111ff12a6e6580d5503bb126d1f1f1fe8677946c72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70811f711c198f0a319 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 184, 35, 226, 95, 187, 179, 151, 59, 210, 114, 166, 35, 62, 179, 223, 152, 164, 141, 219, 232, 26, 119, 90, 203, 159, 32, 114, 146, 63, 44, 44, 13, 80, 109, 158, 52, 84, 205, 86, 124, 143, 181, 26, 122, 175, 165, 185, 255, 130, 86, 203, 95, 39, 49, 120, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: caafac1a21d07d8417ae729b3570d50d, }, ), received_events: EventHandle { count: 521443804146335400, key: EventKey( [ 144, 29, 53, 157, 72, 147, 65, 31, 81, 1, 231, 26, 66, 90, 190, 6, 157, 214, 193, 7, 63, 183, 29, 49, ], ), }, sent_events: EventHandle { count: 5207489153602399484, key: EventKey( [ 97, 117, 153, 99, 61, 221, 99, 202, 192, 84, 112, 97, 17, 255, 18, 166, 230, 88, 13, 85, 3, 187, 18, 109, ], ), }, sequence_number: 14359297949100351263, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ecb019cf8f52ef65a49580c8e408cff68c2c6c871eeb141c7b090e13a72b16bf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a30156cee19fe1f3bb7674e927a4c5ae97b319f2533a25305d98ab649ed42799b12bce582a4c540ebeaabeb11a7198c39e2d06f531e3ffd1dab105c225488f7e0d8c33df7c2ddf4050f6085486ded0ab35ca3fd5855d54f4dd0000f8e143c692a35d3218a51aeb2e277fd8ae66381b806571e0a0534c7038a575f50273df50129320c97d187a715f6cee83799f0f1a02a657bc97a97ebb7906f34f33deb2cafd73b2cac9b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70896b705040b7662d2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 225, 159, 225, 243, 187, 118, 116, 233, 39, 164, 197, 174, 151, 179, 25, 242, 83, 58, 37, 48, 93, 152, 171, 100, 158, 212, 39, 153, 177, 43, 206, 88, 42, 76, 84, 14, 190, 170, 190, 177, 26, 113, 152, 195, 158, 45, 6, 245, 49, 227, 255, 209, 218, 177, 5, 194, 37, 72, 143, 126, 13, 140, 51, 223, 124, 45, 223, 64, 80, 246, 8, 84, 134, 222, 208, 171, 53, 202, 63, 213, 133, 93, 84, 244, 221, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3629236725517378040, key: EventKey( [ 165, 26, 235, 46, 39, 127, 216, 174, 102, 56, 27, 128, 101, 113, 224, 160, 83, 76, 112, 56, 165, 117, 245, 2, ], ), }, sent_events: EventHandle { count: 9063811541099405171, key: EventKey( [ 122, 113, 95, 108, 238, 131, 121, 159, 15, 26, 2, 166, 87, 188, 151, 169, 126, 187, 121, 6, 243, 79, 51, 222, ], ), }, sequence_number: 12810993482831088306, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ed57bc0575214154371d1e8e3473b5ea586388feca522a18072552d2b5b2fc17): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f225759128dab76c51b23704abffdf14c909de1e2b459d80c653257a161cac4c38f78a6000088008595a998216d184e625f6c667647ce735a9e62797f14fc37aaf0e798994d654b497f508886ad1018b48287776c44267ea377e0bcb728aedfe1d2b06f1ef148ce1ded83184efaac142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aebecfb0673d968f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 89, 18, 141, 171, 118, 197, 27, 35, 112, 74, 191, 253, 241, 76, 144, 157, 225, 226, 180, 89, 216, 12, 101, 50, 87, 161, 97, 202, 196, 195, 143, 120, 166, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7863734278491013256, key: EventKey( [ 78, 98, 95, 108, 102, 118, 71, 206, 115, 90, 158, 98, 121, 127, 20, 252, 55, 170, 240, 231, 152, 153, 77, 101, ], ), }, sent_events: EventHandle { count: 1201764595601983819, key: EventKey( [ 180, 130, 135, 119, 108, 68, 38, 126, 163, 119, 224, 188, 183, 40, 174, 223, 225, 210, 176, 111, 30, 241, 72, 206, ], ), }, sequence_number: 1489840790078483741, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ed84dbad2224e81c1c0d68b7ca46d4e428aac627d810c0fe14d8c99894e57312): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01730001fc093f1baabdac1689eaac6a57f611d89eb2cafc7076fa6c18f7e965d7be07de9c321536c1f598d2f757d4feacc666bf2fcdc9dec9b3991d561836c4c83867bcdd882807752d97d2f97961978d74088c12e7629e35763fd2f19c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083827bcf44aedc7e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc093f1baabdac1689eaac6a57f611d8, }, ), received_events: EventHandle { count: 7852719127923438238, key: EventKey( [ 247, 233, 101, 215, 190, 7, 222, 156, 50, 21, 54, 193, 245, 152, 210, 247, 87, 212, 254, 172, 198, 102, 191, 47, ], ), }, sent_events: EventHandle { count: 6205284859051428301, key: EventKey( [ 54, 196, 200, 56, 103, 188, 221, 136, 40, 7, 117, 45, 151, 210, 249, 121, 97, 151, 141, 116, 8, 140, 18, 231, ], ), }, sequence_number: 11309051309312024162, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(edcaaf7387d24e19793acd7fb714e92327723b5316de25784af0f76ebe94e6a3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840117ae7dc64b709f6d578c109de3dde3f066b14c74eaa6a24a018f9d73920d6f896cfaac206cac3099d3013a70527097ca671f175a95bc3753ab5c820d9127cf843a16182a669194cadbdbedbe6b73dffe98f2ca68f6ed4f8648bd7dc17d245a55b3fa7a18371ca7476374caee03d15a607bf2d5b7040844456e865f2f7820d64d7281b03c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086920b8a3195b24ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 125, 198, 75, 112, 159, 109, 87, 140, 16, 157, 227, 221, 227, 240, 102, 177, 76, 116, 234, 166, 162, 74, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8f9d73920d6f896cfaac206cac3099d3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3a70527097ca671f175a95bc3753ab5c, }, ), received_events: EventHandle { count: 1601738642740546946, key: EventKey( [ 42, 102, 145, 148, 202, 219, 219, 237, 190, 107, 115, 223, 254, 152, 242, 202, 104, 246, 237, 79, 134, 72, 189, 125, ], ), }, sent_events: EventHandle { count: 8861592395970805185, key: EventKey( [ 55, 28, 167, 71, 99, 116, 202, 238, 3, 209, 90, 96, 123, 242, 213, 183, 4, 8, 68, 69, 110, 134, 95, 47, ], ), }, sequence_number: 4373137566108885112, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee1655ea11cb6579f1fa969c5398f87939310ecd5d758faf95af431095fea52c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f02fb6e01f170b824ed66fd5dceb02745a470f400012f70e304348768dcaa2db4fa1ad9369a7c91247c3525f1621876970441aba54cf7dca8bd6e85d92cc8cd7dc32b08ab0c9e6b29a7d856c2aa1418387522ee38ef005ce30ce42268ce2b54dffba5a03a18a346bf5877d1fef6b4da2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d7ebf7842277ff1c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 110, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f170b824ed66fd5dceb02745a470f400, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2f70e304348768dcaa2db4fa1ad9369a, }, ), received_events: EventHandle { count: 7129520596750471548, key: EventKey( [ 118, 151, 4, 65, 171, 165, 76, 247, 220, 168, 189, 110, 133, 217, 44, 200, 205, 125, 195, 43, 8, 171, 12, 158, ], ), }, sent_events: EventHandle { count: 1489216305057180011, key: EventKey( [ 56, 117, 34, 238, 56, 239, 0, 92, 227, 12, 228, 34, 104, 206, 43, 84, 223, 251, 165, 160, 58, 24, 163, 70, ], ), }, sequence_number: 15759492570372593855, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee996638db5861a195860117d9627e6f90327350843df5d8fd6d9fde663a1625): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161a9c23ce6cbd0d14b2191348b55fe9e88ff2b19756d6454692e04ec285fb7f69b00d017fbf666cddcf87694515f310d69e7e8298275586d8490583327a79023e820be81f94ea7f6e2b813ba21d854336e60eefc8da0a66f11618acd7cc3048529bb0000f5173cc8edca8b3818b26aba9c1ada620466878c1142469e09703befd6f318252247fd1ae008b360631847e38953b35055113fbea20ce33f5ccd4f7c2042abdd6e2c492851b0c884a52b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dffcd361c8514ae0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 194, 60, 230, 203, 208, 209, 75, 33, 145, 52, 139, 85, 254, 158, 136, 255, 43, 25, 117, 109, 100, 84, 105, 46, 4, 236, 40, 95, 183, 246, 155, 0, 208, 23, 251, 246, 102, 205, 220, 248, 118, 148, 81, 95, 49, 13, 105, 231, 232, 41, 130, 117, 88, 109, 132, 144, 88, 51, 39, 167, 144, 35, 232, 32, 190, 129, 249, 78, 167, 246, 226, 184, 19, 186, 33, 216, 84, 51, 110, 96, 238, 252, 141, 160, 166, 111, 17, 97, 138, 205, 124, 195, 4, 133, 41, 187, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4074573410502186997, key: EventKey( [ 178, 106, 186, 156, 26, 218, 98, 4, 102, 135, 140, 17, 66, 70, 158, 9, 112, 59, 239, 214, 243, 24, 37, 34, ], ), }, sent_events: EventHandle { count: 7160920258220064071, key: EventKey( [ 71, 227, 137, 83, 179, 80, 85, 17, 63, 190, 162, 12, 227, 63, 92, 205, 79, 124, 32, 66, 171, 221, 110, 44, ], ), }, sequence_number: 3145065912274593865, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef41e2249c57fa4f390bcc23c3ffeebe291f6b5e4ca7c7291dda6e98f1a5eff5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96114b3b1b4ce8ca6b4aa0922be16ed475d846dd1188e000068897ee0a14d8e6a18367d97036320761ba68d5e9c49baa14cbe9306fb7b9a6459c40f2782aaa4a91d18b97d826a1caa5835187f577791aac9db0133625c175f367bd48f4330a179e7622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a37548f6087d4912 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 179, 177, 180, 206, 140, 166, 180, 170, 9, 34, 190, 22, 237, 71, 93, 132, 109, 209, 24, 142, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7678159772364736872, key: EventKey( [ 54, 125, 151, 3, 99, 32, 118, 27, 166, 141, 94, 156, 73, 186, 161, 76, 190, 147, 6, 251, 123, 154, 100, 89, ], ), }, sent_events: EventHandle { count: 2137420550399004612, key: EventKey( [ 185, 125, 130, 106, 28, 170, 88, 53, 24, 127, 87, 119, 145, 170, 201, 219, 1, 51, 98, 92, 23, 95, 54, 123, ], ), }, sequence_number: 7126798668543528916, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef613958062a8481b694396a2c2cf26ca3a251a4ff1690b9733edb0d84805ed3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c966196a61448c8bdb00e90bb83352924f092891b7859a8e39f9894600006ccf25730b2e43591810de5961d0e64d111df72472967fc9c13e6434cfa28ecbcb94be25db714ab4171829612eba175efab75254ed9e01bb7472d38857cd0c8564931623a4eb3beab6212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080f6ce28080340766 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 97, 68, 140, 139, 219, 0, 233, 11, 184, 51, 82, 146, 79, 9, 40, 145, 183, 133, 154, 142, 57, 249, 137, 70, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6432035319526575980, key: EventKey( [ 16, 222, 89, 97, 208, 230, 77, 17, 29, 247, 36, 114, 150, 127, 201, 193, 62, 100, 52, 207, 162, 142, 203, 203, ], ), }, sent_events: EventHandle { count: 1708072011548704404, key: EventKey( [ 41, 97, 46, 186, 23, 94, 250, 183, 82, 84, 237, 158, 1, 187, 116, 114, 211, 136, 87, 205, 12, 133, 100, 147, ], ), }, sequence_number: 2429386592090333974, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(efbe0584b9e08008870fe28352430e41f1c9daaab86512cd557f47ddc1680580): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac013fa101316afa3dcaff2885309f9e32947a1f2a4da1127cc54ce553834430b54efe9d477b6001d4d3a7f8ee42120a59cd03e82a5cb79cbb3fae19ef6695388bb40198fe0ddf33f5bd847389744ff477ce4f0176e81c1d9c91112dca5530aeeaa274127712b3d239d4c02518791e3bd22181695b938619cc9407dc90a26b291691673130922167bbb1311946188bb93aae09f71196a3ccbceaa12f02343c43610832e7da0eb9eefaa94408ec612101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708737801f9dc19a3a4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 1, 49, 106, 250, 61, 202, 255, 40, 133, 48, 159, 158, 50, 148, 122, 31, 42, 77, 161, 18, 124, 197, 76, 229, 83, 131, 68, 48, 181, 78, 254, 157, 71, 123, 96, 1, 212, 211, 167, 248, 238, 66, 18, 10, 89, 205, 3, 232, 42, 92, 183, 156, 187, 63, 174, 25, 239, 102, 149, 56, 139, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 98fe0ddf33f5bd847389744ff477ce4f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 76e81c1d9c91112dca5530aeeaa27412, }, ), received_events: EventHandle { count: 2720407519744954999, key: EventKey( [ 121, 30, 59, 210, 33, 129, 105, 91, 147, 134, 25, 204, 148, 7, 220, 144, 162, 107, 41, 22, 145, 103, 49, 48, ], ), }, sent_events: EventHandle { count: 5051123096495792530, key: EventKey( [ 139, 185, 58, 174, 9, 247, 17, 150, 163, 204, 188, 234, 161, 47, 2, 52, 60, 67, 97, 8, 50, 231, 218, 14, ], ), }, sequence_number: 7056023807185317561, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f084f6d2c4000c4ea88e518de56ca2df19488ce9e984f01b776c47544a3d795b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601597a55f4b8d516fe80f9f7d84d9d31f8e40954357039a3d1fffbcbb5f06eb82851f8d57b1ed7d96f30b4945231bae33396fcddb0473fc90b8e5787026a88a85217808e5c1889402bd3f17a96388db473384a5e3078799b37a2530121ce7693aa04e035a8f430de4f99131401fd0061f5f57bff17fb7914cde47f1be042ee62a4cfa9577c18f5ee9f0c4cc875d68f586876f2580424f93ab703c5de4f0090a16180f766d75d18e8231b55886cca60397c10d10a1f849a92e5644257b46da312c198665947fec02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1b540f1d95cba89 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 122, 85, 244, 184, 213, 22, 254, 128, 249, 247, 216, 77, 157, 49, 248, 228, 9, 84, 53, 112, 57, 163, 209, 255, 251, 203, 181, 240, 110, 184, 40, 81, 248, 213, 123, 30, 215, 217, 111, 48, 180, 148, 82, 49, 186, 227, 51, 150, 252, 221, 176, 71, 63, 201, 11, 142, 87, 135, 2, 106, 136, 168, 82, 23, 128, 142, 92, 24, 137, 64, 43, 211, 241, 122, 150, 56, 141, 180, 115, 56, 74, 94, 48, 120, 121, 155, 55, 162, 83, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 21ce7693aa04e035a8f430de4f991314, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fd0061f5f57bff17fb7914cde47f1be0, }, ), received_events: EventHandle { count: 8959816692958162498, key: EventKey( [ 245, 238, 159, 12, 76, 200, 117, 214, 143, 88, 104, 118, 242, 88, 4, 36, 249, 58, 183, 3, 197, 222, 79, 0, ], ), }, sent_events: EventHandle { count: 6761986578716926352, key: EventKey( [ 232, 35, 27, 85, 136, 108, 202, 96, 57, 124, 16, 209, 10, 31, 132, 154, 146, 229, 100, 66, 87, 180, 109, 163, ], ), }, sequence_number: 13906631148665618706, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f0c846ae221e2e218a16293d1907bf88ee628f1da8f537b1a47863f54df0b394): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9570af7ff307c8c23705b075d0000fad354e7dd2877681875c0e974bc13d8bba69b15021d0cfab9db8d9eef926bf73c280b01b573cde12a18f2a7b203ba3d2bb1a6b132c87072a0803b2b9091251d7c8593f40b566c2e04172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7d773d143766b1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 255, 48, 124, 140, 35, 112, 91, 7, 93, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7527530235707053050, key: EventKey( [ 117, 192, 233, 116, 188, 19, 216, 187, 166, 155, 21, 2, 29, 12, 250, 185, 219, 141, 158, 239, 146, 107, 247, 60, ], ), }, sent_events: EventHandle { count: 3089976716194548520, key: EventKey( [ 242, 167, 178, 3, 186, 61, 43, 177, 166, 177, 50, 200, 112, 114, 160, 128, 59, 43, 144, 145, 37, 29, 124, 133, ], ), }, sequence_number: 1658501605614154899, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f1183ad8aa6b80ee97637d9b3d1a3ade0006d6ac41833caef03796379d10ca24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163d46005ac99bc18783e533bf4c0726a73b3252c5ed056f4060dd6b210b9870ad485ba100f9105d668946dce5d744b5ddf32cbf30c51f57cb4aeb7a33d61924b7c58615090737b953a9ce1d45bf7903a9c9b1d188d8ac8e0c7eb58d6176891a126298bcd01be80a64a8ad982ef5df163edb980dccf00981237fdee052d171838e79c2575bc9e910bb4c6b707a7b3541b7955abcd06b070c336f04d881b075d189a24a5c835c66219fde80be144c62e6171596fa9a3800f6faf4a0b6cc98d0ec42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708884655119d5462d2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 96, 5, 172, 153, 188, 24, 120, 62, 83, 59, 244, 192, 114, 106, 115, 179, 37, 44, 94, 208, 86, 244, 6, 13, 214, 178, 16, 185, 135, 10, 212, 133, 186, 16, 15, 145, 5, 214, 104, 148, 109, 206, 93, 116, 75, 93, 223, 50, 203, 243, 12, 81, 245, 124, 180, 174, 183, 163, 61, 97, 146, 75, 124, 88, 97, 80, 144, 115, 123, 149, 58, 156, 225, 212, 91, 247, 144, 58, 156, 155, 29, 24, 141, 138, 200, 224, 199, 235, 88, 214, 23, 104, 145, 161, 38, 41, 139, 205, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: be80a64a8ad982ef5df163edb980dccf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1669997560832922264, key: EventKey( [ 56, 231, 156, 37, 117, 188, 158, 145, 11, 180, 198, 183, 7, 167, 179, 84, 27, 121, 85, 171, 205, 6, 176, 112, ], ), }, sent_events: EventHandle { count: 6703356842601363139, key: EventKey( [ 154, 36, 165, 200, 53, 198, 98, 25, 253, 232, 11, 225, 68, 198, 46, 97, 113, 89, 111, 169, 163, 128, 15, 111, ], ), }, sequence_number: 14127384977348446895, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f277d2abc4335418a1e4b3ce8ca1b8aa88a023f7b49ce79faeb0de5acc54b76a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001330d86f07f2c85be8f5fd93ca139148ac4fa69445d6a442d3b0f664c6fc3a26fbda04a03effebb8cc57bb94bc5892589cfab17af01b301fb35a5afef88c25c21baa797bc7001ddcbf169de4c30cf4c5b56a7edf2e62d224ee94653255f63187115b742bfa9cae3af42891538bd6fb7212eb48a058b2962bc594d6ae965431118244289f2addea45816bdace541d58ea02698d13308742b2968a29196eebe909f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b2825c002f16f53 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 134, 240, 127, 44, 133, 190, 143, 95, 217, 60, 161, 57, 20, 138, 196, 250, 105, 68, 93, 106, 68, 45, 59, 15, 102, 76, 111, 195, 162, 111, 189, 160, 74, 3, 239, 254, 187, 140, 197, 123, 185, 75, 197, 137, 37, 137, 207, 171, 23, 175, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b301fb35a5afef88c25c21baa797bc70, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ddcbf169de4c30cf4c5b56a7edf2e62d, }, ), received_events: EventHandle { count: 7160482972144586274, key: EventKey( [ 113, 21, 183, 66, 191, 169, 202, 227, 175, 66, 137, 21, 56, 189, 111, 183, 33, 46, 180, 138, 5, 139, 41, 98, ], ), }, sent_events: EventHandle { count: 1243949975269628348, key: EventKey( [ 36, 66, 137, 242, 173, 222, 164, 88, 22, 189, 172, 229, 65, 213, 142, 160, 38, 152, 209, 51, 8, 116, 43, 41, ], ), }, sequence_number: 11497899780614496872, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f3695cdb6a5eff97b998ce9b81cdf72f98df27a5594b1b0361eebf7b3c36f6c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137274b233c253252b711066761a8888539fcf29acb9b76290a1d8c82f8e97608467bf3a7b1c160e0dbdc7f78a8b0d43c0c13311859b4c9be011ecc6c5abff08fcf576c9987dabca6a301aa2b0cb3951ee5db9d0e9f5d6cbe4a78e4943ddf815ba57718b6714f6b5dade847493b7de5f9f89e928e18d7e9d4cf27110a0666b331779e7218dacdb2b7c5694c8bee645e4100b43fd3928783456dd631e53b3a62edbb3e4f902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708558edabd9ae327f2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 75, 35, 60, 37, 50, 82, 183, 17, 6, 103, 97, 168, 136, 133, 57, 252, 242, 154, 203, 155, 118, 41, 10, 29, 140, 130, 248, 233, 118, 8, 70, 123, 243, 167, 177, 193, 96, 224, 219, 220, 127, 120, 168, 176, 212, 60, 12, 19, 49, 24, 89, 180, 201, 190, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1ecc6c5abff08fcf576c9987dabca6a3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: aa2b0cb3951ee5db9d0e9f5d6cbe4a78, }, ), received_events: EventHandle { count: 8621397675024946404, key: EventKey( [ 182, 113, 79, 107, 93, 173, 232, 71, 73, 59, 125, 229, 249, 248, 158, 146, 142, 24, 215, 233, 212, 207, 39, 17, ], ), }, sent_events: EventHandle { count: 8259169821990979082, key: EventKey( [ 218, 205, 178, 183, 197, 105, 76, 139, 238, 100, 94, 65, 0, 180, 63, 211, 146, 135, 131, 69, 109, 214, 49, 229, ], ), }, sequence_number: 10398599041484208699, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f37ecf748757c42ce499a357bf181a1968df7f1e28b9428639adc722d0d3276f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b1e641b853893da095176885a6d966f66ddb4d00c08c42d31622ee1f8a728cc00010ed1afd5815b7210944ff655d0f000dd8ccdddb5c2846e2118277d858f8d1e254ea82df514f2ac2ca007955a3a567caddb7af7ed4d08db7a18181d6a68f54d632daa2ec9188dd8d3b0ed6c6b099e45abf53b597a22526f82efba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b5e0b8037f80384 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 100, 27, 133, 56, 147, 218, 9, 81, 118, 136, 90, 109, 150, 111, 102, 221, 180, 208, 12, 8, 196, 45, 49, 98, 46, 225, 248, 167, 40, 204, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0ed1afd5815b7210944ff655d0f000dd, }, ), received_events: EventHandle { count: 2409008822499528076, key: EventKey( [ 39, 125, 133, 143, 141, 30, 37, 78, 168, 45, 245, 20, 242, 172, 44, 160, 7, 149, 90, 58, 86, 124, 173, 219, ], ), }, sent_events: EventHandle { count: 1763963032782632826, key: EventKey( [ 29, 106, 104, 245, 77, 99, 45, 170, 46, 201, 24, 141, 216, 211, 176, 237, 108, 107, 9, 158, 69, 171, 245, 59, ], ), }, sequence_number: 13470128425119414873, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f3e6f5b5d7f5a92ec85b0f3c062873fb47aa6cd1d579e310601961acbbafa9b1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810134542066ee5b93ffe2a1a3dc8613fb25f524e34e68a497e4ab048047d5799a4c406c5345a0933a95d504e5ee97cff709f428be3ac7000062228ddc46b560071845401ed0336eb2cbbdeb99a42fb7ad75a6e1fc1697f4351fdffb4d2eb2c7f00f18ec7a92e2530cb0a85708c0e6db1f907622563056b28dbbf0b38c92eb059daf0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a2d9195eafd766ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 32, 102, 238, 91, 147, 255, 226, 161, 163, 220, 134, 19, 251, 37, 245, 36, 227, 78, 104, 164, 151, 228, 171, 4, 128, 71, 213, 121, 154, 76, 64, 108, 83, 69, 160, 147, 58, 149, 213, 4, 229, 238, 151, 207, 247, 9, 244, 40, 190, 58, 199, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 531624071982293602, key: EventKey( [ 69, 64, 30, 208, 51, 110, 178, 203, 189, 235, 153, 164, 47, 183, 173, 117, 166, 225, 252, 22, 151, 244, 53, 31, ], ), }, sent_events: EventHandle { count: 1148637473074445279, key: EventKey( [ 236, 122, 146, 226, 83, 12, 176, 168, 87, 8, 192, 230, 219, 31, 144, 118, 34, 86, 48, 86, 178, 141, 187, 240, ], ), }, sequence_number: 842064304094219443, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f4a773354fe3c41c17cccbeaedebab88594a87d6a10a653e7a06a8b7ac8aede1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9730694ebd6fd02240129c35ec2bb7a6e491f422cf51909c2bd01bd3f6303f69a2d5085684902515bc7aff82bb4a9ac33ce3718a523d7d57cafe1be3f6a7d34815ee8333caca9ebc126789b8fc152f5793dde0e18f34da61eefd5b100f804cd5b5a0a6870f4e3b62baee6dc80b7caeb4ffea956d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088e8ee4f18b099ee6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 235, 214, 253, 2, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 29c35ec2bb7a6e491f422cf51909c2bd, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd3f6303f69a2d5085684902515bc7af, }, ), received_events: EventHandle { count: 4021208333962980344, key: EventKey( [ 165, 35, 215, 213, 124, 175, 225, 190, 63, 106, 125, 52, 129, 94, 232, 51, 60, 172, 169, 235, 193, 38, 120, 155, ], ), }, sent_events: EventHandle { count: 1071361355376935311, key: EventKey( [ 243, 77, 166, 30, 239, 213, 177, 0, 248, 4, 205, 91, 90, 10, 104, 112, 244, 227, 182, 43, 174, 230, 220, 128, ], ), }, sequence_number: 15300603693765479095, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f509fb13562c4df5c983e577346cdd7efd5b3cbd6df6573f7f85391a78450851): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f127086721d564540f271ec76306575363fde75012a42d5916e6d80da9d3c62b6fd859572005ebfaa3c5711fc7e189155d326ad7f5077f0a12ff7eb2f81f6c5de972bfcc9bb872d2bdc6f76220c00185b7e606966f0e6f6468cbcac18f12eb194c6940e6eb469992d1ca872033326bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b1cf39cb17f545c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 134, 114, 29, 86, 69, 64, 242, 113, 236, 118, 48, 101, 117, 54, 63, 222, 117, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2a42d5916e6d80da9d3c62b6fd859572, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9150207609287655262, key: EventKey( [ 145, 85, 211, 38, 173, 127, 80, 119, 240, 161, 47, 247, 235, 47, 129, 246, 197, 222, 151, 43, 252, 201, 187, 135, ], ), }, sent_events: EventHandle { count: 3415591798713133, key: EventKey( [ 91, 126, 96, 105, 102, 240, 230, 246, 70, 140, 188, 172, 24, 241, 46, 177, 148, 198, 148, 14, 110, 180, 105, 153, ], ), }, sequence_number: 13629637412184923181, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f556826d99abfbecbd8eef1a6b476a3fb2747ba1867118f903b76ad31e28f442): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d7ab3915a88089312d83611c9002891a6f67f22c8107fa548c4ae73d127b0e6fd1505debb8724168d7525a01d692df497d7a6211b0d6b725dcb0398ad740001bd3cf2f703bb51faeba8487a21ffede6cc984f9c9204de5b18c4784758c48f06cbfcccfc330bf1736d4bf6bdd68669e091127f79c24b728e1018d98038c993e75eea2bc4371783073b7ae99f8782c2a65902fefec588d3dc09372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d9492fff4d043f16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 122, 179, 145, 90, 136, 8, 147, 18, 216, 54, 17, 201, 0, 40, 145, 166, 246, 127, 34, 200, 16, 127, 165, 72, 196, 174, 115, 209, 39, 176, 230, 253, 21, 5, 222, 187, 135, 36, 22, 141, 117, 37, 160, 29, 105, 45, 244, 151, 215, 166, 33, 27, 13, 107, 114, 93, 203, 3, 152, 173, 116, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd3cf2f703bb51faeba8487a21ffede6, }, ), received_events: EventHandle { count: 6619733530015406284, key: EventKey( [ 196, 120, 71, 88, 196, 143, 6, 203, 252, 204, 252, 51, 11, 241, 115, 109, 75, 246, 189, 214, 134, 105, 224, 145, ], ), }, sent_events: EventHandle { count: 1193016621010616082, key: EventKey( [ 217, 128, 56, 201, 147, 231, 94, 234, 43, 196, 55, 23, 131, 7, 59, 122, 233, 159, 135, 130, 194, 166, 89, 2, ], ), }, sequence_number: 3965943747967319806, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f5fa83341eb1a9b5757ea44ec160bc134bb247cbe2586edf6048d98c01175f4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01318eef2e694dfac0016ff3a0222c141344b69e5bff777ebf1780b409465e25180bdd436aab2efc77e8ff68d7d7b8d746da190001d1eea67ca9555d88816d6905b51b9b886f76e8c4ab161a0318016716fe5ffe6488cdb16bdd3c7383a9fed7717db0245fa1566defeb9829497718233df090cfafcea9b79b1a2e95a1c357d5b02efb7742d02c1f048775d692d8fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0495e0ff5949727 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 239, 46, 105, 77, 250, 192, 1, 111, 243, 160, 34, 44, 20, 19, 68, 182, 158, 91, 255, 119, 126, 191, 23, 128, 180, 9, 70, 94, 37, 24, 11, 221, 67, 106, 171, 46, 252, 119, 232, 255, 104, 215, 215, 184, 215, 70, 218, 25, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1eea67ca9555d88816d6905b51b9b88, }, ), received_events: EventHandle { count: 223516058507048559, key: EventKey( [ 1, 103, 22, 254, 95, 254, 100, 136, 205, 177, 107, 221, 60, 115, 131, 169, 254, 215, 113, 125, 176, 36, 95, 161, ], ), }, sent_events: EventHandle { count: 8595447100583406934, key: EventKey( [ 35, 61, 240, 144, 207, 175, 206, 169, 183, 155, 26, 46, 149, 161, 195, 87, 213, 176, 46, 251, 119, 66, 208, 44, ], ), }, sequence_number: 18363588930395636767, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f60af067ba7527ebec02ad14aec030678e0f0e1e79a609ddf9051f245cc4e1d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01611d926225b982ad77588ef5c2534376ac06279a9f90c3d2343172ff4bdb10a8aa7cb25e55b649698848fe43e5a13c9923bcb41f895a26f2a516e1e0092e01fecce3eabb912392b0dea619778fa03bb7ded39540ca192136392a787d2f04b4e025b8012d79eddd1e47c36a0b05515974a5eebe01e07eff8bdd8fc09c979fd59d7890d12fc6b361bb114579501861b3d36f38c4cb3a53e6f2cafc9c09f68b57b044f3a039ae42f3f97cd3b6f57e185c3922f06b783a59cfa0a3aa1e1135cc47279035d0c16230510d86c81f9f372a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708355a1e266df6e742 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 146, 98, 37, 185, 130, 173, 119, 88, 142, 245, 194, 83, 67, 118, 172, 6, 39, 154, 159, 144, 195, 210, 52, 49, 114, 255, 75, 219, 16, 168, 170, 124, 178, 94, 85, 182, 73, 105, 136, 72, 254, 67, 229, 161, 60, 153, 35, 188, 180, 31, 137, 90, 38, 242, 165, 22, 225, 224, 9, 46, 1, 254, 204, 227, 234, 187, 145, 35, 146, 176, 222, 166, 25, 119, 143, 160, 59, 183, 222, 211, 149, 64, 202, 25, 33, 54, 57, 42, 120, 125, 47, 4, 180, 224, 37, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d79eddd1e47c36a0b05515974a5eebe, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e07eff8bdd8fc09c979fd59d7890d12f, }, ), received_events: EventHandle { count: 5798741937676727238, key: EventKey( [ 97, 179, 211, 111, 56, 196, 203, 58, 83, 230, 242, 202, 252, 156, 9, 246, 139, 87, 176, 68, 243, 160, 57, 174, ], ), }, sent_events: EventHandle { count: 9148419237524140866, key: EventKey( [ 92, 57, 34, 240, 107, 120, 58, 89, 207, 160, 163, 170, 30, 17, 53, 204, 71, 39, 144, 53, 208, 193, 98, 48, ], ), }, sequence_number: 3042075032169090385, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f669bc0f4f45d37fd440fd2771ff805104626f94bace3118ec673ec8815caa80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b470ee47e10563193eb814b01a18f0ed82f12edb04f73185823ef26fa0138f2f8e09bad5a8b05d5597b8884638d9c3061ecd56e0c2918416bee8834000173b08fcdfa68f063522dfd9c4abdb02c31506d803980547359183e0806cb4ce958f0efb01a7ffd46de391d7334e0bc52fb6c22aac325b6c6baa82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef9200b36b641397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 71, 14, 228, 126, 16, 86, 49, 147, 235, 129, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a18f0ed82f12edb04f73185823ef26fa, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 38f2f8e09bad5a8b05d5597b8884638d, }, ), received_events: EventHandle { count: 2957860920348455068, key: EventKey( [ 65, 107, 238, 136, 52, 0, 1, 115, 176, 143, 205, 250, 104, 240, 99, 82, 45, 253, 156, 74, 189, 176, 44, 49, ], ), }, sent_events: EventHandle { count: 6445588401394576720, key: EventKey( [ 62, 8, 6, 203, 76, 233, 88, 240, 239, 176, 26, 127, 253, 70, 222, 57, 29, 115, 52, 224, 188, 82, 251, 108, ], ), }, sequence_number: 12158248629660002850, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f6ae23f00efaa53636e417cdae405b561b29273c4fa971294289b526d4b129c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c971141fae6e868e8e0604b0f6985a3269ea5a4db261e201cd2a8040cdb2781af886448aa3fe21ef0041159ea99aa997511842e477f43e9bbe7f0d0685b328a04d0a3f04201982e82fdf439f3e314e0b131f1854fdb8b67fcf265092b3511e87e549b1ac3e09a0c0fafab885b407825b8f96272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3968e4f0e4c3091 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 174, 110, 134, 142, 142, 6, 4, 176, 246, 152, 90, 50, 105, 234, 90, 77, 178, 97, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cd2a8040cdb2781af886448aa3fe21ef, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5879354320291239233, key: EventKey( [ 66, 228, 119, 244, 62, 155, 190, 127, 13, 6, 133, 179, 40, 160, 77, 10, 63, 4, 32, 25, 130, 232, 47, 223, ], ), }, sent_events: EventHandle { count: 2239145870194810691, key: EventKey( [ 84, 253, 184, 182, 127, 207, 38, 80, 146, 179, 81, 30, 135, 229, 73, 177, 172, 62, 9, 160, 192, 250, 250, 184, ], ), }, sequence_number: 2852625037172126853, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f73587aefccea43a05caece9536930f6869c7912e5f466fdad57211866e47851): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b001535132babdf6140c2a1a907e2076a41ce032e67ecc5cccbb30f1620a474f46729563dfc1a55413747af4018857d5c7620d01932a655139efa605984be846f5c76e8854828cadc69f6428a01f78c7ab5104a007a30148763cea5407395bf7647a2f0fa156cf009715f8549066422b18854ca12ae057c4d526b03632663c6177346a50acec55f9b41a37123f5da5a93318d35de923e4c3e120396e223a69ef19eb456cec9d3808b47c2e727bbc45cae2712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087eb1cc966a576c47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 50, 186, 189, 246, 20, 12, 42, 26, 144, 126, 32, 118, 164, 28, 224, 50, 230, 126, 204, 92, 204, 187, 48, 241, 98, 10, 71, 79, 70, 114, 149, 99, 223, 193, 165, 84, 19, 116, 122, 244, 1, 136, 87, 213, 199, 98, 13, 1, 147, 42, 101, 81, 57, 239, 166, 5, 152, 75, 232, 70, 245, 199, 110, 136, 84, 130, 140, 173, 198, 159, 100, 40, 160, 31, 120, 199, 171, 81, 4, 160, 7, 163, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 48763cea5407395bf7647a2f0fa156cf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3117166662180672919, key: EventKey( [ 133, 76, 161, 42, 224, 87, 196, 213, 38, 176, 54, 50, 102, 60, 97, 119, 52, 106, 80, 172, 236, 85, 249, 180, ], ), }, sent_events: EventHandle { count: 3722688386907125530, key: EventKey( [ 211, 93, 233, 35, 228, 195, 225, 32, 57, 110, 34, 58, 105, 239, 25, 235, 69, 108, 236, 157, 56, 8, 180, 124, ], ), }, sequence_number: 8206343871886225966, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f78f092ef28cab0045e46c23f8142dc01b0af176627d57cf8be3e4c7fac2ba61): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af014272a8caeb8eeffb8396d61b1665e4de6eb73db42119d72aa6665d87cf4bf134de68ddbd95e0777b54f26bafd018da23edb4ccbc2122055e47bd400c0daa1def3cd6bc0191200a63b5352523aac377f062d1a48f01e505227e2f0b53cb9d06a818505a3ee7fea06384c77f794518d3868f5a5cde4ec40a87673fca7cd187d55d9cd61d5ae63de2202a9b66b0af6d1842eb87199404c50aaa7ee9939e3435a7b9cb7d149e634568bff18d1c84771ecd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084519a540c53ad114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 168, 202, 235, 142, 239, 251, 131, 150, 214, 27, 22, 101, 228, 222, 110, 183, 61, 180, 33, 25, 215, 42, 166, 102, 93, 135, 207, 75, 241, 52, 222, 104, 221, 189, 149, 224, 119, 123, 84, 242, 107, 175, 208, 24, 218, 35, 237, 180, 204, 188, 33, 34, 5, 94, 71, 189, 64, 12, 13, 170, 29, 239, 60, 214, 188, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 91200a63b5352523aac377f062d1a48f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e505227e2f0b53cb9d06a818505a3ee7, }, ), received_events: EventHandle { count: 5006172955695358206, key: EventKey( [ 211, 134, 143, 90, 92, 222, 78, 196, 10, 135, 103, 63, 202, 124, 209, 135, 213, 93, 156, 214, 29, 90, 230, 61, ], ), }, sent_events: EventHandle { count: 7903729825794892002, key: EventKey( [ 66, 235, 135, 25, 148, 4, 197, 10, 170, 126, 233, 147, 158, 52, 53, 167, 185, 203, 125, 20, 158, 99, 69, 104, ], ), }, sequence_number: 14780382436374999487, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f7f126e9f29944a97aa35be3855819259e89a824402c6f3d65d7cf2d9c2989a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c982013598393550dd984e27ab63ae220b0613809924f0c0ed3b211b04130e646310dd653d9af6ec1b94af65751040f1143d0943684291fa8800005a5f6045dbdff151181e80d7fdb51e4cba1a4059d95315d161c13dd2123393db552c9c6914083cbe4e18bd9535ad33d4122f4969b85924c015cdfd492fa397d7d672f457ea5711c39d572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c5c4c764e8f47ddd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 57, 53, 80, 221, 152, 78, 39, 171, 99, 174, 34, 11, 6, 19, 128, 153, 36, 240, 192, 237, 59, 33, 27, 4, 19, 14, 100, 99, 16, 221, 101, 61, 154, 246, 236, 27, 148, 175, 101, 117, 16, 64, 241, 20, 61, 9, 67, 104, 66, 145, 250, 136, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5904746719314206554, key: EventKey( [ 30, 128, 215, 253, 181, 30, 76, 186, 26, 64, 89, 217, 83, 21, 209, 97, 193, 61, 210, 18, 51, 147, 219, 85, ], ), }, sent_events: EventHandle { count: 5674038585933274156, key: EventKey( [ 189, 149, 53, 173, 51, 212, 18, 47, 73, 105, 184, 89, 36, 192, 21, 205, 253, 73, 47, 163, 151, 215, 214, 114, ], ), }, sequence_number: 6313416731900139508, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f859e32df951ce79dfd13996941dd451a4db0219535cb99fc131233ec44fd978): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bb74beeefd61ed1f30ea30b00000603a5109f168e5a1873af977bd9e9084aada0c078ae5898df61484b2304d0f2e9a02550d2836c3d4c183fae4ec1463dc2f035f3e71da4e3b26cc7901ab81fc88e35dac7b1ec863b35e42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082296947fc8565502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 75, 238, 239, 214, 30, 209, 243, 14, 163, 11, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6525177782541288198, key: EventKey( [ 115, 175, 151, 123, 217, 233, 8, 74, 173, 160, 192, 120, 174, 88, 152, 223, 97, 72, 75, 35, 4, 208, 242, 233, ], ), }, sent_events: EventHandle { count: 5493666433886856608, key: EventKey( [ 63, 174, 78, 193, 70, 61, 194, 240, 53, 243, 231, 29, 164, 227, 178, 108, 199, 144, 26, 184, 31, 200, 142, 53, ], ), }, sequence_number: 16444115065095964634, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f89388df69a7f26e999e44528cefa019dc8c835026c3ec14280f8b24f28ae35b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160cb135e9afa0cb22c058291fd6e59b77d25fc439e222ec4db25bb1ad441a1ef9a41e8e4e89e99338dcf0f79a4106c601f9829fdd2d4a550985cb403f2675eb504f453b87048ece16b6e539aac3c068e712dd5301f1e34759dafb8435cc96679730146cc93a0e19756534c586f735007bcf40058f553639035837a18e6895aa5bdf5f0d074078a1fa72b11b7d9544ab84b2970539aa441fb4d0f0140185a5723ad824c02f9ad01b66e9cc70a7000d9ece85f1bfb7ab69d8963eb3ce6bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bcdbdce9c3b9041e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 19, 94, 154, 250, 12, 178, 44, 5, 130, 145, 253, 110, 89, 183, 125, 37, 252, 67, 158, 34, 46, 196, 219, 37, 187, 26, 212, 65, 161, 239, 154, 65, 232, 228, 232, 158, 153, 51, 141, 207, 15, 121, 164, 16, 108, 96, 31, 152, 41, 253, 210, 212, 165, 80, 152, 92, 180, 3, 242, 103, 94, 181, 4, 244, 83, 184, 112, 72, 236, 225, 107, 110, 83, 154, 172, 60, 6, 142, 113, 45, 213, 48, 31, 30, 52, 117, 157, 175, 184, 67, 92, 201, 102, 121, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 46cc93a0e19756534c586f735007bcf4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8827958588834313560, key: EventKey( [ 230, 137, 90, 165, 189, 245, 240, 208, 116, 7, 138, 31, 167, 43, 17, 183, 217, 84, 74, 184, 75, 41, 112, 83, ], ), }, sent_events: EventHandle { count: 4611984321006380186, key: EventKey( [ 90, 87, 35, 173, 130, 76, 2, 249, 173, 1, 182, 110, 156, 199, 10, 112, 0, 217, 236, 232, 95, 27, 251, 122, ], ), }, sequence_number: 13539576311420919222, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f89cae2bee30bd38667e73695460a059fa0862e7b4c151a3a43ab2bffd500cb4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d722d65af64779ca741eaa7caca0001b83a437f350be79300fc095de35d3ed352cda275dd7df61b1848ccfd29dbc507c5a1b6dec1582ba5c4cea37edac4862e389e1e02161fe7a14c18db6f309e18049e99ec05dac430579b92d27b51909ad8cc83077f1d6d8345dffa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b74d85c27452a55 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 45, 101, 175, 100, 119, 156, 167, 65, 234, 167, 202, 202, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b83a437f350be79300fc095de35d3ed3, }, ), received_events: EventHandle { count: 2014936273409723730, key: EventKey( [ 72, 204, 253, 41, 219, 197, 7, 197, 161, 182, 222, 193, 88, 43, 165, 196, 206, 163, 126, 218, 196, 134, 46, 56, ], ), }, sent_events: EventHandle { count: 5521948738832178846, key: EventKey( [ 219, 111, 48, 158, 24, 4, 158, 153, 236, 5, 218, 196, 48, 87, 155, 146, 210, 123, 81, 144, 154, 216, 204, 131, ], ), }, sequence_number: 18077243860062142215, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f98a488d7552ff00915c95c113875ecb132107414dfbd64aa32b65281050d2a6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c43cb637ce3aa347127a2efd928e1d70e3a083785f47fa3c3c42cfba4b600e736c6636254b095b4d1155ed1d407bed85697de4d8c73f52012f8d03cbb017f0eae2540e108987cd1a7bb0c36e6df0192dfd134879612f9281953274f287caa2aa03f759dd41274184179f67f1be4b711b2fdcee33cfdfe98d5d45001ecf1c18b4f5a90420a93e7611837507790655727d52239d789fe0af4d738fab86f7c932a3cffb32587c0a6f4fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70862d73c15335f0d56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 67, 203, 99, 124, 227, 170, 52, 113, 39, 162, 239, 217, 40, 225, 215, 14, 58, 8, 55, 133, 244, 127, 163, 195, 196, 44, 251, 164, 182, 0, 231, 54, 198, 99, 98, 84, 176, 149, 180, 209, 21, 94, 209, 212, 7, 190, 216, 86, 151, 222, 77, 140, 115, 245, 32, 18, 248, 208, 60, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7f0eae2540e108987cd1a7bb0c36e6df, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 92dfd134879612f9281953274f287caa, }, ), received_events: EventHandle { count: 8363981230722490410, key: EventKey( [ 65, 121, 246, 127, 27, 228, 183, 17, 178, 253, 206, 227, 60, 253, 254, 152, 213, 212, 80, 1, 236, 241, 193, 139, ], ), }, sent_events: EventHandle { count: 7054769013574883919, key: EventKey( [ 55, 80, 119, 144, 101, 87, 39, 213, 34, 57, 215, 137, 254, 10, 244, 215, 56, 250, 184, 111, 124, 147, 42, 60, ], ), }, sequence_number: 18299434531744494591, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fa4ae38e8dfe84bdaf874de4104a035bb7377a414d37803da18af634e4eec02d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014dac10587f16782a26c61dc199a1803c1c394f689c55610096f3d84be7384fc4441f0aedb8f61bc7eb8e422b23529ec3023476f869baad4b73896735589d14701e1f380b831dc4758449bf220c710001fc0914ec657c0006b2f38eb8bd1c70a25bef20253ede68071801ee88f3093550ecef3dc489b59fa05b921cc46285aaf4ae9539c459e0c2e90818e814ef94183d0030b09375c8626e4f5fb931243ecc6c3274b6f54cbedb7522e02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a10a855a202983a1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 16, 88, 127, 22, 120, 42, 38, 198, 29, 193, 153, 161, 128, 60, 28, 57, 79, 104, 156, 85, 97, 0, 150, 243, 216, 75, 231, 56, 79, 196, 68, 31, 10, 237, 184, 246, 27, 199, 235, 142, 66, 43, 35, 82, 158, 195, 2, 52, 118, 248, 105, 186, 173, 75, 115, 137, 103, 53, 88, 157, 20, 112, 30, 31, 56, 11, 131, 29, 196, 117, 132, 73, 191, 34, 12, 113, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc0914ec657c0006b2f38eb8bd1c70a2, }, ), received_events: EventHandle { count: 533920914335657819, key: EventKey( [ 1, 238, 136, 243, 9, 53, 80, 236, 239, 61, 196, 137, 181, 159, 160, 91, 146, 28, 196, 98, 133, 170, 244, 174, ], ), }, sent_events: EventHandle { count: 642258690711501205, key: EventKey( [ 232, 20, 239, 148, 24, 61, 0, 48, 176, 147, 117, 200, 98, 110, 79, 95, 185, 49, 36, 62, 204, 108, 50, 116, ], ), }, sequence_number: 16150600800355022262, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fb33d3d1367c27ade478df19568b47e53e3eb0046e495b0853d4e4635ba253a9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b00143aa0d8cc0fdf2c14ff02a646957637995eca52f95b9a2f97f95a53b2d262376423b13a0ec0b2783a1cfeea4916f5227ee566b54e3bef32d7b1e516f85e12883074736e5018e70f7a9652db8d542ce10d031f6fa47019d16a47b6a6c27f911b2a07733f745dbc9e5b6cdfa67f46418acd61c92d9ec87f0cb6832a2961ba9b936ba72776f09e28e1dd567e5de1af06c187b286ffe87a2c8bb1e3f4adec77e441e34c47b6538bb0f85236d40fd30bca43a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a9e62fe8eebe032b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 13, 140, 192, 253, 242, 193, 79, 240, 42, 100, 105, 87, 99, 121, 149, 236, 165, 47, 149, 185, 162, 249, 127, 149, 165, 59, 45, 38, 35, 118, 66, 59, 19, 160, 236, 11, 39, 131, 161, 207, 238, 164, 145, 111, 82, 39, 238, 86, 107, 84, 227, 190, 243, 45, 123, 30, 81, 111, 133, 225, 40, 131, 7, 71, 54, 229, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8e70f7a9652db8d542ce10d031f6fa47, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9d16a47b6a6c27f911b2a07733f745db, }, ), received_events: EventHandle { count: 7274553625000994249, key: EventKey( [ 172, 214, 28, 146, 217, 236, 135, 240, 203, 104, 50, 162, 150, 27, 169, 185, 54, 186, 114, 119, 111, 9, 226, 142, ], ), }, sent_events: EventHandle { count: 7849803695140623645, key: EventKey( [ 123, 40, 111, 254, 135, 162, 200, 187, 30, 63, 74, 222, 199, 126, 68, 30, 52, 196, 123, 101, 56, 187, 15, 133, ], ), }, sequence_number: 4225709268973677859, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fbf798edf5127a73ed86b01321b783b06245d55b6ab69965991c9018f6fb4d5b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9792cd23cebdb133ff27a547dea624d02e2ccf0747e0bd468c62b8be3e38ec6dc30b802a88b15fdbb44881192fffc0000e01cf0b392476429188de21aa31e74ad614ba45bc6973b39bd0bb44c9397402de9d1e43cfa87d718161801c06157aaf5a397885bf6d2faae8411627eee6109e63dc5028e069e51ada7292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e1926a9560fb9fa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 210, 60, 235, 219, 19, 63, 242, 122, 84, 125, 234, 98, 77, 2, 226, 204, 240, 116, 126, 11, 212, 104, 198, 43, 139, 227, 227, 142, 198, 220, 48, 184, 2, 168, 139, 21, 253, 187, 68, 136, 17, 146, 255, 252, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2982587548635765984, key: EventKey( [ 141, 226, 26, 163, 30, 116, 173, 97, 75, 164, 91, 198, 151, 59, 57, 189, 11, 180, 76, 147, 151, 64, 45, 233, ], ), }, sent_events: EventHandle { count: 1592259447294321873, key: EventKey( [ 1, 192, 97, 87, 170, 245, 163, 151, 136, 91, 246, 210, 250, 174, 132, 17, 98, 126, 238, 97, 9, 230, 61, 197, ], ), }, sequence_number: 3001558242720910850, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fc763d7d660b7a5fd90d0b34d73655f786f7b168267d79f2c3762374c87266fa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965088cc527b5fbc6d5ae01ec4ce2538a3f040f8121bb6156aedbce006f45e9228aae684e188150d1e7c1232d0f7c68414ac920080fc7fcbf2c82ac8c44171b8e1786d6543718917c95ddee067055faecc5737f4e994a38ef4146e7da695de1291d6ff8723d192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847a3a46d500489be Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 197, 39, 181, 251, 198, 213, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ec4ce2538a3f040f8121bb6156aedbce, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5649957640850720111, key: EventKey( [ 129, 80, 209, 231, 193, 35, 45, 15, 124, 104, 65, 74, 201, 32, 8, 15, 199, 252, 191, 44, 130, 172, 140, 68, ], ), }, sent_events: EventHandle { count: 3987047441538882327, key: EventKey( [ 145, 124, 149, 221, 238, 6, 112, 85, 250, 236, 197, 115, 127, 78, 153, 74, 56, 239, 65, 70, 231, 218, 105, 93, ], ), }, sequence_number: 1818736235869186529, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fcadfebdae2a0a845b38e359893885afef8e5ac7514a7f8bc1cea24cd4cc142b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b601594b89a2ea420b286d1bf514f9da771bfd86cc224d1447ad8d674f95ef79c830db1c4c86bf1bba0c611ae3675228cc90735e788d5e67b902c35320188008825ba90ac0b75c5637b163c1f7ade142a9addf12a915c4128dea6f9201484a619338468587b548040efa9addf800d18d9cc8d7bfbd2618f90ee94d5db19e7979584abeb7bea34d1c88b1a18226fde29e94538b243b2e0718dcb106fdf362e5af294c75455ae4b50bc582e0768f8176cc698253e0f2d062d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70892b1128241546332 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 137, 162, 234, 66, 11, 40, 109, 27, 245, 20, 249, 218, 119, 27, 253, 134, 204, 34, 77, 20, 71, 173, 141, 103, 79, 149, 239, 121, 200, 48, 219, 28, 76, 134, 191, 27, 186, 12, 97, 26, 227, 103, 82, 40, 204, 144, 115, 94, 120, 141, 94, 103, 185, 2, 195, 83, 32, 24, 128, 8, 130, 91, 169, 10, 192, 183, 92, 86, 55, 177, 99, 193, 247, 173, 225, 66, 169, 173, 223, 18, 169, 21, 196, 18, 141, 234, 111, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 484a619338468587b548040efa9addf8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2791598277544152529, key: EventKey( [ 249, 14, 233, 77, 93, 177, 158, 121, 121, 88, 74, 190, 183, 190, 163, 77, 28, 136, 177, 161, 130, 38, 253, 226, ], ), }, sent_events: EventHandle { count: 517416035336557726, key: EventKey( [ 220, 177, 6, 253, 243, 98, 229, 175, 41, 76, 117, 69, 90, 228, 181, 11, 197, 130, 224, 118, 143, 129, 118, 204, ], ), }, sequence_number: 15664312195512238697, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff184a9f665beec979886cccfaf69b45a23d0c1b83a3a0aafc704adc7f99c4f9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670aceeed70f390df0fbaea1000102d398e48714f7329cf27ebaa13b6d8bf3d19bff93e4ca7e182a19a92ab30fc0cef9dbe9363ae80bad8d7e3480c68fb029d75bbed3ab802d3d183788d5ae290ef03f6c8eea0de68264dc0a086332ee9b2354c4dc35894927d9952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca3cd564f1688f4a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 238, 215, 15, 57, 13, 240, 251, 174, 161, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 02d398e48714f7329cf27ebaa13b6d8b, }, ), received_events: EventHandle { count: 9136366118374199795, key: EventKey( [ 42, 25, 169, 42, 179, 15, 192, 206, 249, 219, 233, 54, 58, 232, 11, 173, 141, 126, 52, 128, 198, 143, 176, 41, ], ), }, sent_events: EventHandle { count: 4408321085745814487, key: EventKey( [ 55, 136, 213, 174, 41, 14, 240, 63, 108, 142, 234, 13, 230, 130, 100, 220, 10, 8, 99, 50, 238, 155, 35, 84, ], ), }, sequence_number: 10797704778385579204, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff41461a62da7c9d5ece0dee2307ed4eda5fbe6cf8e7cdf8f4d68f22f9d2a3bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975183fe0688db39ecd8d1262fc648b123ace51f28de08be41f33000179697c5aa1f2366e0ed1a1327a1e2f70fcd2619a58df5f581831311985c12bc889543c82ee2f147caeb45b82e89562edb7a31c8d94f4bf512118c2f3a62b59259b7d9d679611c1a708132cfd0d57466f67ac0d2e972e613f28382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc1f4c381c35724d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 224, 104, 141, 179, 158, 205, 141, 18, 98, 252, 100, 139, 18, 58, 206, 81, 242, 141, 224, 139, 228, 31, 51, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 79697c5aa1f2366e0ed1a1327a1e2f70, }, ), received_events: EventHandle { count: 6368053969765389052, key: EventKey( [ 49, 49, 25, 133, 193, 43, 200, 137, 84, 60, 130, 238, 47, 20, 124, 174, 180, 91, 130, 232, 149, 98, 237, 183, ], ), }, sent_events: EventHandle { count: 2400911133550386339, key: EventKey( [ 194, 243, 166, 43, 89, 37, 155, 125, 157, 103, 150, 17, 193, 167, 8, 19, 44, 253, 13, 87, 70, 111, 103, 172, ], ), }, sequence_number: 4046553951818427917, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff623328eb5704d8d2c804f1804cbc1fc01accdb0051f945359b9696a548c823): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b011e7dc4ad66375237ae376ba3e8275066efb9144258364ad2ae27785dab703d016265eb2fa47cb1716d633a0aa83bd63c01cd999da1b09c8336b9c598efc2e27b1ea3953c762f85a41f182cd19146183511ee3ddc060537ae9766ef9ee58105483025ca32092c25d9703018444a886702119e2fdfc119018abdd4a580492adcddd118ce217c620a9af817292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087d0c597636993155 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 196, 173, 102, 55, 82, 55, 174, 55, 107, 163, 232, 39, 80, 102, 239, 185, 20, 66, 88, 54, 74, 210, 174, 39, 120, 93, 171, 112, 61, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6265eb2fa47cb1716d633a0aa83bd63c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cd999da1b09c8336b9c598efc2e27b1e, }, ), received_events: EventHandle { count: 2280093750249952675, key: EventKey( [ 44, 209, 145, 70, 24, 53, 17, 238, 61, 220, 6, 5, 55, 174, 151, 102, 239, 158, 229, 129, 5, 72, 48, 37, ], ), }, sent_events: EventHandle { count: 3490528464887952074, key: EventKey( [ 68, 74, 136, 103, 2, 17, 158, 47, 223, 193, 25, 1, 138, 189, 212, 165, 128, 73, 42, 220, 221, 209, 24, 206, ], ), }, sequence_number: 2961108620502268961, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff74ae02592f921c067f44fe7cfb837a7377e097d23f39aaa0acdf7d62bbe08c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0162fdf7d2aedd8d9fcddb974c4406273b0b420d291d65610de440fe26ae3e606de22a956c1de795e500099d70a161094be68c988e572f007e93532b90039e359c483c117b243c37a51dfa4f0723248939610e2fad78c8305056433958bf43bc7ebc2bb9000093c39ede342e583d18d9e8b83a4829e47abb0e34c8a9c3efb72ccaf94224144c5f89a036d4a4995d2c188ac9a6bf821bbbd5652106706a886af8cd4837ad5dfbb2d94608c1df8b9cef4f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d604b753ec2b555c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 247, 210, 174, 221, 141, 159, 205, 219, 151, 76, 68, 6, 39, 59, 11, 66, 13, 41, 29, 101, 97, 13, 228, 64, 254, 38, 174, 62, 96, 109, 226, 42, 149, 108, 29, 231, 149, 229, 0, 9, 157, 112, 161, 97, 9, 75, 230, 140, 152, 142, 87, 47, 0, 126, 147, 83, 43, 144, 3, 158, 53, 156, 72, 60, 17, 123, 36, 60, 55, 165, 29, 250, 79, 7, 35, 36, 137, 57, 97, 14, 47, 173, 120, 200, 48, 80, 86, 67, 57, 88, 191, 67, 188, 126, 188, 43, 185, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4420333838872265619, key: EventKey( [ 217, 232, 184, 58, 72, 41, 228, 122, 187, 14, 52, 200, 169, 195, 239, 183, 44, 202, 249, 66, 36, 20, 76, 95, ], ), }, sent_events: EventHandle { count: 3196880243716956297, key: EventKey( [ 138, 201, 166, 191, 130, 27, 187, 213, 101, 33, 6, 112, 106, 136, 106, 248, 205, 72, 55, 173, 93, 251, 178, 217, ], ), }, sequence_number: 5759994572998510662, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ffc736bab1af2ad60ba995fbcb3602ebbc4433c67b6ed1955cdef7e6c5c26771): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e11e712be0176e07db6ead80d91b439369e460001700e1480e7d3a30b40274ea6c1cae2029eacebeee585954218238aa369829c1df800b496afa666c366ef44bf12392bf87e06792db56c56327118385b6213414cf5d16d12875af211aaef865e6a99a9a0cd6784c560afdac455a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b40b0c60816c07fe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 231, 18, 190, 1, 118, 224, 125, 182, 234, 216, 13, 145, 180, 57, 54, 158, 70, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 700e1480e7d3a30b40274ea6c1cae202, }, ), received_events: EventHandle { count: 4797888200635559070, key: EventKey( [ 35, 138, 163, 105, 130, 156, 29, 248, 0, 180, 150, 175, 166, 102, 195, 102, 239, 68, 191, 18, 57, 43, 248, 126, ], ), }, sent_events: EventHandle { count: 8156676900017502470, key: EventKey( [ 56, 91, 98, 19, 65, 76, 245, 209, 109, 18, 135, 90, 242, 17, 170, 239, 134, 94, 106, 153, 169, 160, 205, 103, ], ), }, sequence_number: 11625414456651072900, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ffcd6a9637a9d78539ee4622125a80061fcd4d88377c1432e9aac5daa2ccd9dd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01302d9484fa403b5daa72ccef94a5b5f29ff033619225a42140ff2bd3a4ea1b14abdb08755a16fe98671e580cd35636133e000142237c93555e752efb43e0f841d94f68da6529e4e8d3c06318142725145e44f650fc106adc6006eed5bad428503f0dd54e74760b84af592d0b18e5618f2352725fcc34d269be2fd413cc0ce424ab308f6ee8bcc699985c76a57b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0949ab152676081 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 148, 132, 250, 64, 59, 93, 170, 114, 204, 239, 148, 165, 181, 242, 159, 240, 51, 97, 146, 37, 164, 33, 64, 255, 43, 211, 164, 234, 27, 20, 171, 219, 8, 117, 90, 22, 254, 152, 103, 30, 88, 12, 211, 86, 54, 19, 62, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42237c93555e752efb43e0f841d94f68, }, ), received_events: EventHandle { count: 7187978002497103322, key: EventKey( [ 20, 39, 37, 20, 94, 68, 246, 80, 252, 16, 106, 220, 96, 6, 238, 213, 186, 212, 40, 80, 63, 13, 213, 78, ], ), }, sent_events: EventHandle { count: 805398518738679412, key: EventKey( [ 229, 97, 143, 35, 82, 114, 95, 204, 52, 210, 105, 190, 47, 212, 19, 204, 12, 228, 36, 171, 48, 143, 110, 232, ], ), }, sequence_number: 8909657577891677884, }, ) } LibraTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }}, target_version = 1157 +cc fc36f2202b7c17f1857dba535185a743db189a10704bf1e9002c27cc78ad5751 # shrinks to btree1 = {HashValue(006ed75a89cb5d876a16c0a7858990f312b210e5a3fedf3940dfc680f15d7602): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9701399c07e2e81187e049add7884be972155aa32e40155d762d86f4e044384d18871c105a7480071b0e64a14456e4918a282cb74aad3d22afa209b67e84ac6fff78c39880eea5b89f06462982e5d886c18a4a3e272ce8d7e0e7b9baa9693a2a342a29d366e6c51641ff2d2231f15b38d6c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cb0e6eaec4a361f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 192, 126, 46, 129, 24, 126, 4, 154, 221, 120, 132, 190, 151, 33, 85, 170, 50, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 55d762d86f4e044384d18871c105a748, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5291242565665206385, key: EventKey( [ 162, 130, 203, 116, 170, 211, 210, 42, 250, 32, 155, 103, 232, 74, 198, 255, 247, 140, 57, 136, 14, 234, 91, 137, ], ), }, sent_events: EventHandle { count: 7820603207635330288, key: EventKey( [ 164, 163, 226, 114, 206, 141, 126, 14, 123, 155, 170, 150, 147, 162, 163, 66, 162, 157, 54, 110, 108, 81, 100, 31, ], ), }, sequence_number: 7822105031110546162, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0395039482543d81c3ebc324f361ec1d07ad7d5b49627bb10eb0a164b07daed2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963168a18e8cc674f9ec949dcd1afdc1aab3b0ae9858d4273000094a7dc0f5d4032791805676c9de21e9410136768f9fe82dbc022a979fb504bdc7c4f4dc1ff60109a3618c322a448bd4d603cea0357ddf934ac220f6173708ebad1bf9b24fbe098ba3fe02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085d8ebc3a2186bfbc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 24, 232, 204, 103, 79, 158, 201, 73, 220, 209, 175, 220, 26, 171, 59, 10, 233, 133, 141, 66, 115, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8733113395867068308, key: EventKey( [ 5, 103, 108, 157, 226, 30, 148, 16, 19, 103, 104, 249, 254, 130, 219, 192, 34, 169, 121, 251, 80, 75, 220, 124, ], ), }, sent_events: EventHandle { count: 3934475233255312719, key: EventKey( [ 195, 34, 164, 72, 189, 77, 96, 60, 234, 3, 87, 221, 249, 52, 172, 34, 15, 97, 115, 112, 142, 186, 209, 191, ], ), }, sequence_number: 16158839153800979611, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(03b12d2ca808cc6a6759a3774bf0dc125e36ab8267ca080d2086adfe888e2d0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144589d7d473165c59f8303cb445843bdc265dac2fe228befb959800dae9eb3018b551d78c24d41cbbc62a7e8b66af4a7f38e7f678480422ed0507bc64dc249465f3bd893f601daca58a910864679eb585d2678937f980078bab25e5db4350e180d7b08528a9ec154d2553bbf411173725f34e279f845df8a20d09003546f982518a86ac74d7afb262c62f8a73f8b82baf62ffd27c6e4428cf58871427c517b5c412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac8a3f4183b97470 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 157, 125, 71, 49, 101, 197, 159, 131, 3, 203, 68, 88, 67, 189, 194, 101, 218, 194, 254, 34, 139, 239, 185, 89, 128, 13, 174, 158, 179, 1, 139, 85, 29, 120, 194, 77, 65, 203, 188, 98, 167, 232, 182, 106, 244, 167, 243, 142, 127, 103, 132, 128, 66, 46, 208, 80, 123, 198, 77, 194, 73, 70, 95, 59, 216, 147, 246, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: daca58a910864679eb585d2678937f98, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1023922803410385528, key: EventKey( [ 13, 123, 8, 82, 138, 158, 193, 84, 210, 85, 59, 191, 65, 17, 115, 114, 95, 52, 226, 121, 248, 69, 223, 138, ], ), }, sent_events: EventHandle { count: 2709037582491111456, key: EventKey( [ 168, 106, 199, 77, 122, 251, 38, 44, 98, 248, 167, 63, 139, 130, 186, 246, 47, 253, 39, 198, 228, 66, 140, 245, ], ), }, sequence_number: 4709774900229992840, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0590d04351b500231858bbb1b52b2b39300afff1a1d56132012d7e8dd18b33a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201554b690b0726409738676dba6ee013896f57d6fc93bee265b32b6e5e5d93b711b0467af6247a94524cebfa91c1713f86f51ef92caccd59b11d9f1dbe54bf81bd98a2ade9f2358f2aeb539bbc88b2d5bf365c10576ff40001b1b1277c26178fa5faae83449bd8314599d9786711f8a85e18f9444152107c60093682f07bc2cb2e0007df87ac6f457982c3f259248767ca1f18a769d1486c8b12da2d97cc527555989ef283fc3bcf83d7948c4a2921b68074492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70885cbf64c68e83f67 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 105, 11, 7, 38, 64, 151, 56, 103, 109, 186, 110, 224, 19, 137, 111, 87, 214, 252, 147, 190, 226, 101, 179, 43, 110, 94, 93, 147, 183, 17, 176, 70, 122, 246, 36, 122, 148, 82, 76, 235, 250, 145, 193, 113, 63, 134, 245, 30, 249, 44, 172, 205, 89, 177, 29, 159, 29, 190, 84, 191, 129, 189, 152, 162, 173, 233, 242, 53, 143, 42, 235, 83, 155, 188, 136, 178, 213, 191, 54, 92, 16, 87, 111, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b1b1277c26178fa5faae83449bd83145, }, ), received_events: EventHandle { count: 6820974389286721945, key: EventKey( [ 249, 68, 65, 82, 16, 124, 96, 9, 54, 130, 240, 123, 194, 203, 46, 0, 7, 223, 135, 172, 111, 69, 121, 130, ], ), }, sent_events: EventHandle { count: 2290757190599439043, key: EventKey( [ 167, 105, 209, 72, 108, 139, 18, 218, 45, 151, 204, 82, 117, 85, 152, 158, 242, 131, 252, 59, 207, 131, 215, 148, ], ), }, sequence_number: 5292996981795932812, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(059bac0a5e35fd076c9b8e56d833886d438b2a3aa1f1cb16b172f1376fd3a445): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01600e0cf52f030fcbc5aa4461516178ebbea8a6ad8001d746e309428ec5c74f755f31f0fe4bc45db10952eb054d5337b694525fffa9d02cef411b7f2b1c04533643fb82a16e92f750f9646e0e9067445071c2814791aa6dae19acf949fdae501a6d0001ec2abdb9167a565cab1f79371bf4b432853531db9ca4726e18b44eebe4256f9fc958313dcac425dc7bb70e0b607b750c1850570e9a91e2475718d1fd907cf6cda127e0a63c408856cb6f5b3c90835a8ace02541a58358e6234b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce832efaa2f8cfa9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 12, 245, 47, 3, 15, 203, 197, 170, 68, 97, 81, 97, 120, 235, 190, 168, 166, 173, 128, 1, 215, 70, 227, 9, 66, 142, 197, 199, 79, 117, 95, 49, 240, 254, 75, 196, 93, 177, 9, 82, 235, 5, 77, 83, 55, 182, 148, 82, 95, 255, 169, 208, 44, 239, 65, 27, 127, 43, 28, 4, 83, 54, 67, 251, 130, 161, 110, 146, 247, 80, 249, 100, 110, 14, 144, 103, 68, 80, 113, 194, 129, 71, 145, 170, 109, 174, 25, 172, 249, 73, 253, 174, 80, 26, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ec2abdb9167a565cab1f79371bf4b432, }, ), received_events: EventHandle { count: 7958604485116376453, key: EventKey( [ 180, 78, 235, 228, 37, 111, 159, 201, 88, 49, 61, 202, 196, 37, 220, 123, 183, 14, 11, 96, 123, 117, 12, 24, ], ), }, sent_events: EventHandle { count: 6289244519628953424, key: EventKey( [ 209, 253, 144, 124, 246, 205, 161, 39, 224, 166, 60, 64, 136, 86, 203, 111, 91, 60, 144, 131, 90, 138, 206, 2, ], ), }, sequence_number: 13201284770649610836, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08846494e680e6088b6563c15b7390c317fd717fdea1734da9c44d4d07829b09): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148821846888d6e0e47a678a6e110073187ddc5c1d292b7b893901bdd9cd2853636bc19e41b615e00d9c678ef402438e105a7c9e879f356c23539c0c71670fba8fa45113af23afbadf600018c9fffbcceea5771bdba039779f9316b57dffcbe7faf590f18b5b7c54d15b47e6c1e7b85f4487f5abfcf2c5a7415ac4623afa9b1333e5dda591841ada5540b0560a2c52eb95b6855bf46f1c42402a59598f170fcc411941a53762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081b0bbb64caa5a353 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 24, 70, 136, 141, 110, 14, 71, 166, 120, 166, 225, 16, 7, 49, 135, 221, 197, 193, 210, 146, 183, 184, 147, 144, 27, 221, 156, 210, 133, 54, 54, 188, 25, 228, 27, 97, 94, 0, 217, 198, 120, 239, 64, 36, 56, 225, 5, 167, 201, 232, 121, 243, 86, 194, 53, 57, 192, 199, 22, 112, 251, 168, 250, 69, 17, 58, 242, 58, 251, 173, 246, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c9fffbcceea5771bdba039779f9316b, }, ), received_events: EventHandle { count: 1106108146696118103, key: EventKey( [ 181, 183, 197, 77, 21, 180, 126, 108, 30, 123, 133, 244, 72, 127, 90, 191, 207, 44, 90, 116, 21, 172, 70, 35, ], ), }, sent_events: EventHandle { count: 6474589936035146159, key: EventKey( [ 65, 173, 165, 84, 11, 5, 96, 162, 197, 46, 185, 91, 104, 85, 191, 70, 241, 196, 36, 2, 165, 149, 152, 241, ], ), }, sequence_number: 8526187742798085232, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(09e9156c87c1d9aa9c465c0d411e3fdd04c129c4778ab509f61f5bcc7093d758): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97114ca73f254a9352eb9f7b607241c0de030acbdcafc018be3bd945c750f714ffa9bfe44b75f0a00626f621a5d667a0b1884d267c4cd5e1e35d177eb113c2295d64cc822f85fa955cbe06787da5c2ea17e1841398b7e8d1a74097dc003e037628eb3de6667e223a9ef3b08df91b9aca9cf702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70887ce2c2c804d28b5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 115, 242, 84, 169, 53, 46, 185, 247, 182, 7, 36, 28, 13, 224, 48, 172, 189, 202, 252, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8be3bd945c750f714ffa9bfe44b75f0a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 827086031636557666, key: EventKey( [ 132, 210, 103, 196, 205, 94, 30, 53, 209, 119, 235, 17, 60, 34, 149, 214, 76, 200, 34, 248, 95, 169, 85, 203, ], ), }, sent_events: EventHandle { count: 9124625296367511520, key: EventKey( [ 65, 57, 139, 126, 141, 26, 116, 9, 125, 192, 3, 224, 55, 98, 142, 179, 222, 102, 103, 226, 35, 169, 239, 59, ], ), }, sequence_number: 8128902411739848456, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0a848b1cea0e7a814ae17c34168557138d7e0ded6eb9f21574996af339843d77): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001335331ddebaf9e5999e0d12e262ae7ed36201fa0f6d762b25d6a65e8ffd1e82f7357a5c19d65e3dbf407705d75ed1ed701f6ae8e000132528711b9aee60517d0dabf459d13f25ec37e0ee64e6417188f1c3f86651354bfa62646833f105e2ad8f69e64e62089f4aefb3512f0d01a6618e31628f588d97230eeb02cbf73a98a8f6787727708957b24e0df711e2b4a600e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbd1790a36a44f57 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 49, 221, 235, 175, 158, 89, 153, 224, 209, 46, 38, 42, 231, 237, 54, 32, 31, 160, 246, 215, 98, 178, 93, 106, 101, 232, 255, 209, 232, 47, 115, 87, 165, 193, 157, 101, 227, 219, 244, 7, 112, 93, 117, 237, 30, 215, 1, 246, 174, 142, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 32528711b9aee60517d0dabf459d13f2, }, ), received_events: EventHandle { count: 1685558910536041310, key: EventKey( [ 143, 28, 63, 134, 101, 19, 84, 191, 166, 38, 70, 131, 63, 16, 94, 42, 216, 246, 158, 100, 230, 32, 137, 244, ], ), }, sent_events: EventHandle { count: 7357422670779382702, key: EventKey( [ 227, 22, 40, 245, 136, 217, 114, 48, 238, 176, 44, 191, 115, 169, 138, 143, 103, 135, 114, 119, 8, 149, 123, 36, ], ), }, sequence_number: 1035909463350042592, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0aeb5ca27e7f39f10e6615f7b215aa951b59202de4bcc096bbe12d7473a90e21): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b0014399fa1fad12d7d8e17bde39f0f745b6fd5c40471dca271455115ae11064ff29a60dd300408653e5017b40cc8c570f2f684178d6d93f6a03f85603efd5cf9eb0b5aa097901b557d2976b22eb412cdd257f476056e001ab9d832f51df68dfb4e18f8769d925367c1ac9633ddd604d185860d78a74bd1a3efaea696f5acfddc820bd011246dedc7cbb10e60465bd8d671831d3625c00edda186432aaff3040f3c19421001734e9c03a1ad2cc7a91203f3a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb0d1c549be9bc63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 250, 31, 173, 18, 215, 216, 225, 123, 222, 57, 240, 247, 69, 182, 253, 92, 64, 71, 29, 202, 39, 20, 85, 17, 90, 225, 16, 100, 255, 41, 166, 13, 211, 0, 64, 134, 83, 229, 1, 123, 64, 204, 140, 87, 15, 47, 104, 65, 120, 214, 217, 63, 106, 3, 248, 86, 3, 239, 213, 207, 158, 176, 181, 170, 9, 121, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b557d2976b22eb412cdd257f476056e0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ab9d832f51df68dfb4e18f8769d92536, }, ), received_events: EventHandle { count: 5575699594421541500, key: EventKey( [ 88, 96, 215, 138, 116, 189, 26, 62, 250, 234, 105, 111, 90, 207, 221, 200, 32, 189, 1, 18, 70, 222, 220, 124, ], ), }, sent_events: EventHandle { count: 7461828399194312891, key: EventKey( [ 49, 211, 98, 92, 0, 237, 218, 24, 100, 50, 170, 255, 48, 64, 243, 193, 148, 33, 0, 23, 52, 233, 192, 58, ], ), }, sequence_number: 4197109186935181850, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b27347d5376bd261662d6ebba92f859729bdc6952b52c91fa8a8571f7ea0097): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130fc54a75c829e854b43c8dff0a10fee0941363532a30d2b2266ae06a46e9e42a707578f2c3a3b8aee3774239fe51332ac0001d8d5d80314b70affa5823605d498f20b3e6403036c21b20718cbe88bafc1b7b52b5fa2f235ccad028a2df17bc1725271ab7d38e9bf96732e7a18eac5493a51f95ec7f57a07b1c235c47c5ad23631591e30466a9b38c190a897dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed03241a39b98b52 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 84, 167, 92, 130, 158, 133, 75, 67, 200, 223, 240, 161, 15, 238, 9, 65, 54, 53, 50, 163, 13, 43, 34, 102, 174, 6, 164, 110, 158, 66, 167, 7, 87, 143, 44, 58, 59, 138, 238, 55, 116, 35, 159, 229, 19, 50, 172, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d8d5d80314b70affa5823605d498f20b, }, ), received_events: EventHandle { count: 554542451910730814, key: EventKey( [ 203, 232, 139, 175, 193, 183, 181, 43, 95, 162, 242, 53, 204, 173, 2, 138, 45, 241, 123, 193, 114, 82, 113, 171, ], ), }, sent_events: EventHandle { count: 8804101412857919613, key: EventKey( [ 234, 197, 73, 58, 81, 249, 94, 199, 245, 122, 7, 177, 194, 53, 196, 124, 90, 210, 54, 49, 89, 30, 48, 70, ], ), }, sequence_number: 15895358749497924458, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c2a4183b8657f5d1bb942a9d52c27fa105a3e26b59ebc12e451753e4847e449): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012e7b3ba170a1b273890f6600a967e96c64e9cb3ce95a2cd461d15f15dcad28421304e34c876d21d9d1e4cb48ec42ad01afcb5ca435311b95f8f85f3d13f6791700a84cf53843ebc25d18c72f7d576ad570163b3d7e7faa9fadb8dabd2c61494eb40c16a7ad93999e3f5a189d953f8990b5ee977ffa756cd2f0e52916045b9fda507fe605ce5a179586df132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805e7516388d3b5de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 59, 161, 112, 161, 178, 115, 137, 15, 102, 0, 169, 103, 233, 108, 100, 233, 203, 60, 233, 90, 44, 212, 97, 209, 95, 21, 220, 173, 40, 66, 19, 4, 227, 76, 135, 109, 33, 217, 209, 228, 203, 72, 236, 66, 173, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: afcb5ca435311b95f8f85f3d13f67917, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6756221064960101544, key: EventKey( [ 199, 47, 125, 87, 106, 213, 112, 22, 59, 61, 126, 127, 170, 159, 173, 184, 218, 189, 44, 97, 73, 78, 180, 12, ], ), }, sent_events: EventHandle { count: 6503090769391101718, key: EventKey( [ 157, 149, 63, 137, 144, 181, 238, 151, 127, 250, 117, 108, 210, 240, 229, 41, 22, 4, 91, 159, 218, 80, 127, 230, ], ), }, sequence_number: 1432011181427183109, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0e21e44d1fc0d270ee238c0f303fc25b20fdef704c7f2818c10847a0e0584649): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a2015554d137f885b37c6cb163975690aad1f5aa36ab1a8f486d726094610c6db180d8f445384a1c245644bef0bee1a3a989cf0211f50e9f0a4513f1ab00f5b2a69896f407a9a48ae46a9eef2e614f3a32b491bc080c83530000417da55f54bd3b0f18d6910d03f16701f8c107d1259a24a0e7c81b05de0c9863774d2edfc9af1860471804ac33bd40bde20ace7673eeaa26c3f48c2bc6d5a7c56077baffc4a69a7ff8442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f43a291470d49af5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 209, 55, 248, 133, 179, 124, 108, 177, 99, 151, 86, 144, 170, 209, 245, 170, 54, 171, 26, 143, 72, 109, 114, 96, 148, 97, 12, 109, 177, 128, 216, 244, 69, 56, 74, 28, 36, 86, 68, 190, 240, 190, 225, 163, 169, 137, 207, 2, 17, 245, 14, 159, 10, 69, 19, 241, 171, 0, 245, 178, 166, 152, 150, 244, 7, 169, 164, 138, 228, 106, 158, 239, 46, 97, 79, 58, 50, 180, 145, 188, 8, 12, 131, 83, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1097679104274431297, key: EventKey( [ 214, 145, 13, 3, 241, 103, 1, 248, 193, 7, 209, 37, 154, 36, 160, 231, 200, 27, 5, 222, 12, 152, 99, 119, ], ), }, sent_events: EventHandle { count: 5143137917742296653, key: EventKey( [ 4, 172, 51, 189, 64, 189, 226, 10, 206, 118, 115, 238, 170, 38, 195, 244, 140, 43, 198, 213, 167, 197, 96, 119, ], ), }, sequence_number: 4969862491002961850, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(156d0e5667c8720efe735ea759162797ecf150ea1f7818016eebbe60158519e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601394b4d472f7893ca6f61e31212e54a7cf19e05faef550119ed35b74121a26b9432f7a8908c1f89d525c2c7efc997cab676f10f6c733f50fc3df901a4b289b8fcc383c9931ce80c62ffea8e008e6f5a9fd890507f18f42c97fdf1f523bc85a58de5f8f8d0aae7d5c98df5743059bae650e404b19f23186f39186aa957391a316b3b50c223778d7cc3fa2cb08b76e4d0338ea27152a6fc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70867c7d6539762acb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 77, 71, 47, 120, 147, 202, 111, 97, 227, 18, 18, 229, 74, 124, 241, 158, 5, 250, 239, 85, 1, 25, 237, 53, 183, 65, 33, 162, 107, 148, 50, 247, 168, 144, 140, 31, 137, 213, 37, 194, 199, 239, 201, 151, 202, 182, 118, 241, 15, 108, 115, 63, 80, 252, 61, 249, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a4b289b8fcc383c9931ce80c62ffea8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9173991701014540174, key: EventKey( [ 244, 44, 151, 253, 241, 245, 35, 188, 133, 165, 141, 229, 248, 248, 208, 170, 231, 213, 201, 141, 245, 116, 48, 89, ], ), }, sent_events: EventHandle { count: 2566964947192964794, key: EventKey( [ 111, 57, 24, 106, 169, 87, 57, 26, 49, 107, 59, 80, 194, 35, 119, 141, 124, 195, 250, 44, 176, 139, 118, 228, ], ), }, sequence_number: 18205329191703819216, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(165b77682bfdec992ccb3389864b8a8297e1c274509beddae25ba874a310bd1b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01616b218c97a29e6d6299ee60606f54a5c9d53f89ad5e8eb73f5fc0b305fb7f9296adfa0fbdca6adda15ff71e83b5142135bc08fde9ae5c2fe4828edeb8cb2378834e0bcf537fc6b5081db7411f0782a0b66976b72eb80cedba35a0450eb422d9c3f001e5568ea10cdfb9cdd1c0b13d3a63369601cf005223c648469d7d4b277fdf52efeeba2de2f839085e00183055213c5facb9139a0aa525b7e4b8445f772450256e09a825c0c0371e5c9a0518fdae42735eb1942f9d6180457208e0b4f1eb37998cb237229266f6ec8f0698122101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087390e3f6f0b8a554 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 33, 140, 151, 162, 158, 109, 98, 153, 238, 96, 96, 111, 84, 165, 201, 213, 63, 137, 173, 94, 142, 183, 63, 95, 192, 179, 5, 251, 127, 146, 150, 173, 250, 15, 189, 202, 106, 221, 161, 95, 247, 30, 131, 181, 20, 33, 53, 188, 8, 253, 233, 174, 92, 47, 228, 130, 142, 222, 184, 203, 35, 120, 131, 78, 11, 207, 83, 127, 198, 181, 8, 29, 183, 65, 31, 7, 130, 160, 182, 105, 118, 183, 46, 184, 12, 237, 186, 53, 160, 69, 14, 180, 34, 217, 195, 240, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e5568ea10cdfb9cdd1c0b13d3a633696, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf005223c648469d7d4b277fdf52efee, }, ), received_events: EventHandle { count: 26467692892532154, key: EventKey( [ 48, 85, 33, 60, 95, 172, 185, 19, 154, 10, 165, 37, 183, 228, 184, 68, 95, 119, 36, 80, 37, 110, 9, 168, ], ), }, sent_events: EventHandle { count: 403736401457233957, key: EventKey( [ 253, 174, 66, 115, 94, 177, 148, 47, 157, 97, 128, 69, 114, 8, 224, 180, 241, 235, 55, 153, 140, 178, 55, 34, ], ), }, sequence_number: 1339828104368383634, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(175f4fe70af29adb641cfd7c6446dcbd0a9cc2e8f91c3e300baae959bf7bade4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8015b44a184783fc62ae349a4166aa8d7b3c548e7f7dcd739d31b3f6a031d2ce12a2a4ab13f544237f6f0962a356806bd1fb323379758a07fe1dbb17c1a830b43a5fca49b59899d9e1d03081c26fec5f96f8be7b9973bbb34724d570a990000e4dcd995cf01180518b8d608e29d4083faf9439a9ad4de598aeb175bc3e1cefe0937dca41733bc980518a82b592103749abc3742d2cf8f2e8f2098f90e2712591a66437cbeb95c44229a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aebe053dc16e8a7b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, 161, 132, 120, 63, 198, 42, 227, 73, 164, 22, 106, 168, 215, 179, 197, 72, 231, 247, 220, 215, 57, 211, 27, 63, 106, 3, 29, 44, 225, 42, 42, 74, 177, 63, 84, 66, 55, 246, 240, 150, 42, 53, 104, 6, 189, 31, 179, 35, 55, 151, 88, 160, 127, 225, 219, 177, 124, 26, 131, 11, 67, 165, 252, 164, 155, 89, 137, 157, 158, 29, 3, 8, 28, 38, 254, 197, 249, 111, 139, 231, 185, 151, 59, 187, 52, 114, 77, 87, 10, 153, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 367045360714636516, key: EventKey( [ 184, 214, 8, 226, 157, 64, 131, 250, 249, 67, 154, 154, 212, 222, 89, 138, 235, 23, 91, 195, 225, 206, 254, 9, ], ), }, sent_events: EventHandle { count: 403279094275693623, key: EventKey( [ 168, 43, 89, 33, 3, 116, 154, 188, 55, 66, 210, 207, 143, 46, 143, 32, 152, 249, 14, 39, 18, 89, 26, 102, ], ), }, sequence_number: 11106514796093013059, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1843c25dc4ddd6bea3249e84149e45366c9e133095f3283d3adcad0f4ce0a28e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d201e82b10f7cac8d3389b12fb25a7093ed7ceb6665612513924dddbca912826a740000b40c2f595061f72d1839584fd5d203ebdf5af890a30b46541b8c1613f199204221e6d73c13147a1c47180e50c48fdd51b7f9bef5f7024137e6a9c366648f48bc1ce17a4a0d1ade63364a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080f4597d8c70d22e9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 130, 177, 15, 124, 172, 141, 51, 137, 177, 47, 178, 90, 112, 147, 237, 124, 235, 102, 101, 97, 37, 19, 146, 77, 221, 188, 169, 18, 130, 106, 116, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3312223048675822772, key: EventKey( [ 57, 88, 79, 213, 210, 3, 235, 223, 90, 248, 144, 163, 11, 70, 84, 27, 140, 22, 19, 241, 153, 32, 66, 33, ], ), }, sent_events: EventHandle { count: 5124104702681470950, key: EventKey( [ 14, 80, 196, 143, 221, 81, 183, 249, 190, 245, 247, 2, 65, 55, 230, 169, 195, 102, 100, 143, 72, 188, 28, 225, ], ), }, sequence_number: 5347571413120010874, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19c7a0b6feb6bd373d892eaf3e9569d8fdfe0ad732c8e3cc4c439a4dbb19dc38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00153c5da97928a61b9b3c20fafd563a72aa7e7d5870b7100b71b4f6369024c537fa16a64356220872bd43ab20ea561dddfb8f417a03c5645968e3b4f64b9efe73ae82ed8c842c7b1b55df9a9b6ccc016cc410ddff00131c70277c8f1d33d72b8de6c8449f68d0114fd5b186f96d3f878c98fa6ac78716dc9eb780bca99c77b186f26bfb9762f326725cb5d8d414a5eefcd520e2a5d1820486652567b8ab0cf2f18e123a923ec57345d0ba714d2fe79831c1268b8d7eb9c8264a3cd9cf2c12bcddf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088fb331d7aafa519a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 197, 218, 151, 146, 138, 97, 185, 179, 194, 15, 175, 213, 99, 167, 42, 167, 231, 213, 135, 11, 113, 0, 183, 27, 79, 99, 105, 2, 76, 83, 127, 161, 106, 100, 53, 98, 32, 135, 43, 212, 58, 178, 14, 165, 97, 221, 223, 184, 244, 23, 160, 60, 86, 69, 150, 142, 59, 79, 100, 185, 239, 231, 58, 232, 46, 216, 200, 66, 199, 177, 181, 93, 249, 169, 182, 204, 192, 22, 204, 65, 13, 223, 240, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 31c70277c8f1d33d72b8de6c8449f68d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 14fd5b186f96d3f878c98fa6ac78716d, }, ), received_events: EventHandle { count: 8919266680085474249, key: EventKey( [ 111, 38, 191, 185, 118, 47, 50, 103, 37, 203, 93, 141, 65, 74, 94, 239, 205, 82, 14, 42, 93, 24, 32, 72, ], ), }, sent_events: EventHandle { count: 3445166348782948966, key: EventKey( [ 225, 35, 169, 35, 236, 87, 52, 93, 11, 167, 20, 210, 254, 121, 131, 28, 18, 104, 184, 215, 235, 156, 130, 100, ], ), }, sequence_number: 16126593952682659235, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19f56411f70dd9ffd1ca3ad3166244fdb5e173fcbc1020db26a07102b971b295): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997012aa35fd5e59ee8ea727d89be2f02e803bb9c59aec95df2cf8ebef182e593c4d12f282ac8ca381a1d4c0120012d021a2df4d903686564926cadc8c33b01ded9b34bbc1b41497f5b34ed05b8df40fdc5f2bf660ff435188c733b815a16073406cf639862989050fb37e5b6cae73417d2a753fdcd5dc41018ffc9cfd997e87c78888d4845ade091ae71f47235b53f9afc22dffe28fc06fd4f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708746d7954031ab6b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 163, 95, 213, 229, 158, 232, 234, 114, 125, 137, 190, 47, 2, 232, 3, 187, 156, 89, 174, 201, 93, 242, 207, 142, 190, 241, 130, 229, 147, 196, 209, 47, 40, 42, 200, 202, 56, 26, 29, 76, 1, 32, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d021a2df4d903686564926cadc8c33b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ded9b34bbc1b41497f5b34ed05b8df40, }, ), received_events: EventHandle { count: 3887749312309020157, key: EventKey( [ 140, 115, 59, 129, 90, 22, 7, 52, 6, 207, 99, 152, 98, 152, 144, 80, 251, 55, 229, 182, 202, 231, 52, 23, ], ), }, sent_events: EventHandle { count: 1208193739341932498, key: EventKey( [ 255, 201, 207, 217, 151, 232, 124, 120, 136, 141, 72, 69, 173, 224, 145, 174, 113, 244, 114, 53, 181, 63, 154, 252, ], ), }, sequence_number: 5763770778193420066, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1b544a0f55022cfb7a7bf325f11a819f1233da1aa974b79818b140bf316f3be7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f22e9f57f41afed998a728f12b8b0d0c527584312ed04e1c9a618d1fc5fcfae18869eb99b7e2b667eb5b9958df0c6a478ba66197e8438565902038913f205a8eefc377a16de825205717c9ea3be03c20cd6151c8de38f4057a9d77447d791df0001c5bd7b0a19e7e79b30ee2b6d40ad2446dc654385af8b2470185d86e1edb81402b0f8632c62215489fdbcf0bc3bf98c38b774f0ef4c0c85ac6518a721f84fef2632a8963e22443d7893d3ad18af7faf246fa4936249ced76f3d632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080caaf2f823542de3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 233, 245, 127, 65, 175, 237, 153, 138, 114, 143, 18, 184, 176, 208, 197, 39, 88, 67, 18, 237, 4, 225, 201, 166, 24, 209, 252, 95, 207, 174, 24, 134, 158, 185, 155, 126, 43, 102, 126, 181, 185, 149, 141, 240, 198, 164, 120, 186, 102, 25, 126, 132, 56, 86, 89, 2, 3, 137, 19, 242, 5, 168, 238, 252, 55, 122, 22, 222, 130, 82, 5, 113, 124, 158, 163, 190, 3, 194, 12, 214, 21, 28, 141, 227, 143, 64, 87, 169, 215, 116, 71, 215, 145, 223, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c5bd7b0a19e7e79b30ee2b6d40ad2446, }, ), received_events: EventHandle { count: 8080737217380836828, key: EventKey( [ 93, 134, 225, 237, 184, 20, 2, 176, 248, 99, 44, 98, 33, 84, 137, 253, 188, 240, 188, 59, 249, 140, 56, 183, ], ), }, sent_events: EventHandle { count: 7326376981701849204, key: EventKey( [ 167, 33, 248, 79, 239, 38, 50, 168, 150, 62, 34, 68, 61, 120, 147, 211, 173, 24, 175, 127, 175, 36, 111, 164, ], ), }, sequence_number: 7150994756003783315, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1bc7fea3cad0db5dd340f9deb8162d5d71e04a62ae9b37a25541f5a807aee66a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125a1af3973d652581eb4fb59e0a5dba71b79c19d5ee75daba1a1a014b7ede82d3f3ca5505c9a000153b73738dc483b9f8a59f145a09f5723ed651d40f5d9fd41184d5082e8375109e51801922e3978845562d16a4a3817101d257713e95ddabd721817260c1a95aeea1cf587f64772d293e416b1d5531602c8c891196c8cd000e2ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089606855747c88a57 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 175, 57, 115, 214, 82, 88, 30, 180, 251, 89, 224, 165, 219, 167, 27, 121, 193, 157, 94, 231, 93, 171, 161, 161, 160, 20, 183, 237, 232, 45, 63, 60, 165, 80, 92, 154, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 53b73738dc483b9f8a59f145a09f5723, }, ), received_events: EventHandle { count: 4755196428938995181, key: EventKey( [ 77, 80, 130, 232, 55, 81, 9, 229, 24, 1, 146, 46, 57, 120, 132, 85, 98, 209, 106, 74, 56, 23, 16, 29, ], ), }, sent_events: EventHandle { count: 8268004587799279397, key: EventKey( [ 23, 38, 12, 26, 149, 174, 234, 28, 245, 135, 246, 71, 114, 210, 147, 228, 22, 177, 213, 83, 22, 2, 200, 200, ], ), }, sequence_number: 18438300720117324177, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1cb761ca66bf284defd6930ada5b016fa822530c37bda84ce285e08c3f67aa30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d09b9566e0f0d8b8b1361ab98646927fb9ba0407fb07aaadc4c4aebcd762815cd9607f6d6c2f3774cd6927d991a01829c9e399ce23abd2b03df8e4b3ef22e009b55cbe25eba07381840396e72ba51d2187fe9fec9bb21b32d8adefd1ce084c4e61168d9d4a23bb25a189544b7983ed2486f1d89710f35f471ac5ee1068d0465146bdb244b19e1c2ee6b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70849fa8893b48b968a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 185, 86, 110, 15, 13, 139, 139, 19, 97, 171, 152, 100, 105, 39, 251, 155, 160, 64, 127, 176, 122, 170, 220, 76, 74, 235, 205, 118, 40, 21, 205, 150, 7, 246, 214, 194, 243, 119, 76, 214, 146, 125, 153, 26, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 829c9e399ce23abd2b03df8e4b3ef22e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4037400507655607707, key: EventKey( [ 64, 57, 110, 114, 186, 81, 210, 24, 127, 233, 254, 201, 187, 33, 179, 45, 138, 222, 253, 28, 224, 132, 196, 230, ], ), }, sent_events: EventHandle { count: 6535351579809769489, key: EventKey( [ 149, 68, 183, 152, 62, 210, 72, 111, 29, 137, 113, 15, 53, 244, 113, 172, 94, 225, 6, 141, 4, 101, 20, 107, ], ), }, sequence_number: 7777367878563210459, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1d41584d5c8b922276c108aad703b7e9d39cd0a7884b00d764194a96ad3ec7f6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830136e6583237b078857f487f2601bfd8b2924303ae26b56fa0bca2d8f636be133d7af9b74384ad4275545495e3356eb4061f54fcc5a1936600002e0dc59cf576a151187334aaf4e031db6f4ff760029d670ad37b1e22330bfdd62e0071bc4a4b02a369180d35fb204aaa1f681d0d5e1f21faec299501836efd5f087d01454c972786bf2c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b5b9c9d86e948b45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 88, 50, 55, 176, 120, 133, 127, 72, 127, 38, 1, 191, 216, 178, 146, 67, 3, 174, 38, 181, 111, 160, 188, 162, 216, 246, 54, 190, 19, 61, 122, 249, 183, 67, 132, 173, 66, 117, 84, 84, 149, 227, 53, 110, 180, 6, 31, 84, 252, 197, 161, 147, 102, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5882113385591803182, key: EventKey( [ 115, 52, 170, 244, 224, 49, 219, 111, 79, 247, 96, 2, 157, 103, 10, 211, 123, 30, 34, 51, 11, 253, 214, 46, ], ), }, sent_events: EventHandle { count: 7611930317585936640, key: EventKey( [ 13, 53, 251, 32, 74, 170, 31, 104, 29, 13, 94, 31, 33, 250, 236, 41, 149, 1, 131, 110, 253, 95, 8, 125, ], ), }, sequence_number: 3224443362820769025, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1d57ecfb7e010ea86261f0c047828086f9b7cf4c9c9fbae9b23aa24bfbb0b3bb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930126913b8c78392a26cf9f538955706006c6d3864705837a13ba0ac398f90a44fbb67d8a70f6c6b301be737fcc5bf978d421042dac87fc701b01403e98f34bc0b2dc6a5bf794beb307ddb603fa948590ed64183075c610e01598e28b9c8e399fc8059b86aba4d03be334990779fbd25facc21918d51a56494103149388a0f158f783d8585cd981ddd0223d7bed66000517958f242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708003559f9bbff8974 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 145, 59, 140, 120, 57, 42, 38, 207, 159, 83, 137, 85, 112, 96, 6, 198, 211, 134, 71, 5, 131, 122, 19, 186, 10, 195, 152, 249, 10, 68, 251, 182, 125, 138, 112, 246, 198, 179, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: be737fcc5bf978d421042dac87fc701b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 403e98f34bc0b2dc6a5bf794beb307dd, }, ), received_events: EventHandle { count: 7272627876677682102, key: EventKey( [ 48, 117, 198, 16, 224, 21, 152, 226, 139, 156, 142, 57, 159, 200, 5, 155, 134, 171, 164, 208, 59, 227, 52, 153, ], ), }, sent_events: EventHandle { count: 1856235523991632135, key: EventKey( [ 213, 26, 86, 73, 65, 3, 20, 147, 136, 160, 241, 88, 247, 131, 216, 88, 92, 217, 129, 221, 208, 34, 61, 123, ], ), }, sequence_number: 2634488233135728365, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1e73405f7f5caaf731d6308eac46d7794ae3a1a0890c2289d3b5ef7905358b75): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f9fcc48f9df782394483a957aec8de3000197e3727886bb769f68475595c8f1f7b05fda630cce5f6e0a182e94f392024157926f435553fee0fefea2b95c2f0da40eb46fbcad84875e7077189f47e5ae964e028dacd2c779a8c2a8b1509faef7bec2713752f23e7fe6be437d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b310ce76f24b06e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 204, 72, 249, 223, 120, 35, 148, 72, 58, 149, 122, 236, 141, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 97e3727886bb769f68475595c8f1f7b0, }, ), received_events: EventHandle { count: 751643526393223775, key: EventKey( [ 46, 148, 243, 146, 2, 65, 87, 146, 111, 67, 85, 83, 254, 224, 254, 254, 162, 185, 92, 47, 13, 164, 14, 180, ], ), }, sent_events: EventHandle { count: 8606482824044592239, key: EventKey( [ 159, 71, 229, 174, 150, 78, 2, 141, 172, 210, 199, 121, 168, 194, 168, 177, 80, 159, 174, 247, 190, 194, 113, 55, ], ), }, sequence_number: 9026267975367193170, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20818cb702566881511d2e89b79644039602db6a8b276f1ec7fab96662e932a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e118d779e5d49683cc036876de21303a0363c01f54eb2280c4c2b6719d271db279da71f005bba71ce93ee48101884419dec32a2e38ab4681c9c0425481b41ce2b5efa40c0188be0e75e8623e41c18d1c15e127597ea708fe790d56629dd1c90ee915d4d80bcfbfe79b14f80c4a1152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70809593205a4255d4f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 119, 158, 93, 73, 104, 60, 192, 54, 135, 109, 226, 19, 3, 160, 54, 60, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f54eb2280c4c2b6719d271db279da71f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1173450021521177179, key: EventKey( [ 132, 65, 157, 236, 50, 162, 227, 138, 180, 104, 28, 156, 4, 37, 72, 27, 65, 206, 43, 94, 250, 64, 192, 24, ], ), }, sent_events: EventHandle { count: 2081827987776856203, key: EventKey( [ 209, 193, 94, 18, 117, 151, 234, 112, 143, 231, 144, 213, 102, 41, 221, 28, 144, 238, 145, 93, 77, 128, 188, 251, ], ), }, sequence_number: 1558743001418791422, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20e37f72109cf5329ab2171fa8d69d612561299d05c20ca011bcc233234ecf6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810114186f381b0a042d493821ba4e0253021ad2706e340125fbe333f38ea4a0a072e5740b4a390301dd532743f7a30bb46e90bb5c587d9e6a8beba50249315540183e5e07c793b5ac5f56b1fb39c580fb233a7978682f3c8dea476d4a5761cc1e1e18ed097d555a5814591074d048f406e26e9fedb8b4eaeb6446366afa83895eacde2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083714fa773a570a16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 24, 111, 56, 27, 10, 4, 45, 73, 56, 33, 186, 78, 2, 83, 2, 26, 210, 112, 110, 52, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 25fbe333f38ea4a0a072e5740b4a3903, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: dd532743f7a30bb46e90bb5c587d9e6a, }, ), received_events: EventHandle { count: 4635665581094595467, key: EventKey( [ 62, 94, 7, 199, 147, 181, 172, 95, 86, 177, 251, 57, 197, 128, 251, 35, 58, 121, 120, 104, 47, 60, 141, 234, ], ), }, sent_events: EventHandle { count: 2170396788887547207, key: EventKey( [ 237, 9, 125, 85, 90, 88, 20, 89, 16, 116, 208, 72, 244, 6, 226, 110, 159, 237, 184, 180, 234, 235, 100, 70, ], ), }, sequence_number: 16045303517131991606, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(22ee61bb113d45b0b433ce392749fc32f4e51a7a2bc0f113ce3e1220b26cf758): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40147c64501c6359c539eaab8fab019cff86fa47cb9c71868e78ebc87f307f911321d93caaad37788f6c29496cdadbab7af415dd4276d6c8479470a733d0cf319d26361bab3c6a60a170001373db2e5ae3a744b6c8605698c67f81f85e40e5b7f29053d18afd94c107dfebe27e12bbd25867fa255384769024131ec30e4cbabbef8ef3f6718f3478e7fe0802ca73c98ad078339734a8f55138db6f85df843ce45f518cf30952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be9d7aa1ddbebcaa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 69, 1, 198, 53, 156, 83, 158, 170, 184, 250, 176, 25, 207, 248, 111, 164, 124, 185, 199, 24, 104, 231, 142, 188, 135, 243, 7, 249, 17, 50, 29, 147, 202, 170, 211, 119, 136, 246, 194, 148, 150, 205, 173, 186, 183, 175, 65, 93, 212, 39, 109, 108, 132, 121, 71, 10, 115, 61, 12, 243, 25, 210, 99, 97, 186, 179, 198, 166, 10, 23, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 373db2e5ae3a744b6c8605698c67f81f, }, ), received_events: EventHandle { count: 4396966238162445445, key: EventKey( [ 175, 217, 76, 16, 125, 254, 190, 39, 225, 43, 189, 37, 134, 127, 162, 85, 56, 71, 105, 2, 65, 49, 236, 48, ], ), }, sent_events: EventHandle { count: 7439928961069206500, key: EventKey( [ 243, 71, 142, 127, 224, 128, 44, 167, 60, 152, 173, 7, 131, 57, 115, 74, 143, 85, 19, 141, 182, 248, 93, 248, ], ), }, sequence_number: 10750320016634531395, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2406973dc054d7d0786cecfb18525a5b55fbd3dbf7d38c3d33f62c3b72cd7055): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b601494586c3389a9cefdea1d74f9ec81a6239d5c64da4368da18f3b08c191d72b1787b53b8ee5cdb4ba9acbecc11069bd26c5ee3640a8a21f46b1c6fd7def49c475819062702caec1eb9e4c019b67fe16960cb67a8284fd053a59c4e401c259c9dd1bc9755fff20afd0f27f4961867471629a9e574d18c358a5b50f27c76cbcec0f0dd2405ea55a45f06842444c83250673f5b23c452218ccf71c6aceb9f3f9bd1270076b211408fa775a3954e0ea779cee44e605d0a8a32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085266736946c013c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 134, 195, 56, 154, 156, 239, 222, 161, 215, 79, 158, 200, 26, 98, 57, 213, 198, 77, 164, 54, 141, 161, 143, 59, 8, 193, 145, 215, 43, 23, 135, 181, 59, 142, 229, 205, 180, 186, 154, 203, 236, 193, 16, 105, 189, 38, 197, 238, 54, 64, 168, 162, 31, 70, 177, 198, 253, 125, 239, 73, 196, 117, 129, 144, 98, 112, 44, 174, 193, 235, 158, 76, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9b67fe16960cb67a8284fd053a59c4e4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c259c9dd1bc9755fff20afd0f27f4961, }, ), received_events: EventHandle { count: 5573097449808032902, key: EventKey( [ 195, 88, 165, 181, 15, 39, 199, 108, 188, 236, 15, 13, 210, 64, 94, 165, 90, 69, 240, 104, 66, 68, 76, 131, ], ), }, sent_events: EventHandle { count: 2469446710002386469, key: EventKey( [ 204, 247, 28, 106, 206, 185, 243, 249, 189, 18, 112, 7, 107, 33, 20, 8, 250, 119, 90, 57, 84, 224, 234, 119, ], ), }, sequence_number: 11792904348026334876, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2429a02a0e2251723d1bd76455eba60021fa50b5aa7d137b5cba808b899093a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810134224ef811c22e799a40c62e3cc12a5d2bef38d3122755c9e72c0f81af4f9f51b101307d097e9a4d4b127b7d52775bc49f73d4e1e30000240e7007661934051833191508832a2321b513c3850479506d9b5a5c120e334d562805c78adbe92e11185304ec06529ea014d7336535de33d23263475d20d4cdd81680322335179c30012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70874152c4a6b543997 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 248, 17, 194, 46, 121, 154, 64, 198, 46, 60, 193, 42, 93, 43, 239, 56, 211, 18, 39, 85, 201, 231, 44, 15, 129, 175, 79, 159, 81, 177, 1, 48, 125, 9, 126, 154, 77, 75, 18, 123, 125, 82, 119, 91, 196, 159, 115, 212, 225, 227, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 374952594980736548, key: EventKey( [ 51, 25, 21, 8, 131, 42, 35, 33, 181, 19, 195, 133, 4, 121, 80, 109, 155, 90, 92, 18, 14, 51, 77, 86, ], ), }, sent_events: EventHandle { count: 1238184076708873512, key: EventKey( [ 83, 4, 236, 6, 82, 158, 160, 20, 215, 51, 101, 53, 222, 51, 210, 50, 99, 71, 93, 32, 212, 205, 216, 22, ], ), }, sequence_number: 85740016409719424, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2489a20133c6c0da643111bea9e8ac165ffd8598a0e607d486535d124faaf181): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c9015c9f39ef16134bcd20f721e56a767509ad7d30ec795e84a0c4e368c6318c0b3395c18da9ccfc775bc64989a4de038e371b22ed2e4ea4b8c42fe54c7e51fe78a78728d8bb5e6ea371c42f15bce1e4cabe12a960bc04bdec513a175e68800105497a4fc71424021392d8528c0a0b1701b07e08f24934f829190c5bc1428fd4375ef75fc8ea0ad7661805372b2a163ff683d588ca97c961e66c2c8a6dee156caaebd14290edd5578b1818a6a4a88b9f9e45b6c367d0f59c7c467abeb848e2749705e8c348b0fad42e29862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c8b8dfa943a986df Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 57, 239, 22, 19, 75, 205, 32, 247, 33, 229, 106, 118, 117, 9, 173, 125, 48, 236, 121, 94, 132, 160, 196, 227, 104, 198, 49, 140, 11, 51, 149, 193, 141, 169, 204, 252, 119, 91, 198, 73, 137, 164, 222, 3, 142, 55, 27, 34, 237, 46, 78, 164, 184, 196, 47, 229, 76, 126, 81, 254, 120, 167, 135, 40, 216, 187, 94, 110, 163, 113, 196, 47, 21, 188, 225, 228, 202, 190, 18, 169, 96, 188, 4, 189, 236, 81, 58, 23, 94, 104, 128, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 05497a4fc71424021392d8528c0a0b17, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b07e08f24934f829190c5bc1428fd437, }, ), received_events: EventHandle { count: 7410403715361797982, key: EventKey( [ 5, 55, 43, 42, 22, 63, 246, 131, 213, 136, 202, 151, 201, 97, 230, 108, 44, 138, 109, 238, 21, 108, 170, 235, ], ), }, sent_events: EventHandle { count: 1768603854998356689, key: EventKey( [ 166, 164, 168, 139, 159, 158, 69, 182, 195, 103, 208, 245, 156, 124, 70, 122, 190, 184, 72, 226, 116, 151, 5, 232, ], ), }, sequence_number: 9667309567401281731, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(25835a6e3241baab397337c386bcad8eeadeab9f60f7759e989f2fa72f5519b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c9015c11730f50b7a7c1f5fb07d963ad9a982078dd5837171a65ea3ef3a3fa09aa2e29746b4724d88f4ac93a02300c3a0823214d2b8048bc7020c1a88d06dbcdba0b5c460a0d30b6cd60d5bebfec394107ed9cf038326e993d11c9cee8a37b0140f0ff365c4c8acb90b5fe17d824298f010f177dd725868522f89eabf62cd9091719d90a4149ee247918cf732f9713f3be173b63ced7a07cb21876ffb1fde14b37164930ed849537e50d185422fa5f372f8d8a1fabf20dbe1996616aa0e638c630850b7dbd75e5c038186f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a14bcf2daabe512e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 17, 115, 15, 80, 183, 167, 193, 245, 251, 7, 217, 99, 173, 154, 152, 32, 120, 221, 88, 55, 23, 26, 101, 234, 62, 243, 163, 250, 9, 170, 46, 41, 116, 107, 71, 36, 216, 143, 74, 201, 58, 2, 48, 12, 58, 8, 35, 33, 77, 43, 128, 72, 188, 112, 32, 193, 168, 141, 6, 219, 205, 186, 11, 92, 70, 10, 13, 48, 182, 205, 96, 213, 190, 191, 236, 57, 65, 7, 237, 156, 240, 56, 50, 110, 153, 61, 17, 201, 206, 232, 163, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 40f0ff365c4c8acb90b5fe17d824298f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0f177dd725868522f89eabf62cd90917, }, ), received_events: EventHandle { count: 8729363976142117145, key: EventKey( [ 207, 115, 47, 151, 19, 243, 190, 23, 59, 99, 206, 215, 160, 124, 178, 24, 118, 255, 177, 253, 225, 75, 55, 22, ], ), }, sent_events: EventHandle { count: 1001267607479595081, key: EventKey( [ 84, 34, 250, 95, 55, 47, 141, 138, 31, 171, 242, 13, 190, 25, 150, 97, 106, 160, 230, 56, 198, 48, 133, 11, ], ), }, sequence_number: 8005210738785631613, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(27366ca769766168eb1eb4bde64e9e3a8b876f93f0eb5d5ee0550bfb4d8ca17d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9950128750a00c34e1f68cf413d39f13f68b40257d83f46391f2e181586a0644275097a6bffd2658bd316ad013dddca3692b8cd7ce00762d9edf1bbfb0175eec9a65a41871f541e61ed8fb5843176143ce9f7f26d16181805d89313a6c943377500db45c533257c78f5e0c659f6a5f63d83e60f6e9e09184062b25055ec372abb00f3ea267fb6642432a64977d3a110fc0134548e79a5e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ccc52dc00e8ceabd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 117, 10, 0, 195, 78, 31, 104, 207, 65, 61, 57, 241, 63, 104, 180, 2, 87, 216, 63, 70, 57, 31, 46, 24, 21, 134, 160, 100, 66, 117, 9, 122, 107, 255, 210, 101, 139, 211, 22, 173, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3dddca3692b8cd7ce00762d9edf1bbfb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 75eec9a65a41871f541e61ed8fb58431, }, ), received_events: EventHandle { count: 1616214987879748726, key: EventKey( [ 24, 5, 216, 147, 19, 166, 201, 67, 55, 117, 0, 219, 69, 197, 51, 37, 124, 120, 245, 224, 198, 89, 246, 165, ], ), }, sent_events: EventHandle { count: 693112407232560630, key: EventKey( [ 64, 98, 178, 80, 85, 236, 55, 42, 187, 0, 243, 234, 38, 127, 182, 100, 36, 50, 166, 73, 119, 211, 161, 16, ], ), }, sequence_number: 16547766058047767036, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ab5f0609dcc4adab47a3f2062e235b48614f701baa9d6587b2c4b7dd50e0de2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b013e4115fc35ae94caad076f22504184428fa015051ec63b7d3add9131dce719df23366521f88c83fa7c5038df3bd0408789b1f60f4f031a1f9c24fe89a4e17c00008fbff4d8c3bb555918b180d91ad1768465a18889b208944386705236e52b1d305f7889d6d8efcad27c182ac80bf00360d9bbfc614652f4f037977189f74a325ca933c9707ab0d8b444482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70829b78456edffc2b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 21, 252, 53, 174, 148, 202, 173, 7, 111, 34, 80, 65, 132, 66, 143, 160, 21, 5, 30, 198, 59, 125, 58, 221, 145, 49, 220, 231, 25, 223, 35, 54, 101, 33, 248, 140, 131, 250, 124, 80, 56, 223, 59, 208, 64, 135, 137, 177, 246, 15, 79, 3, 26, 31, 156, 36, 254, 137, 164, 225, 124, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6437257692228927375, key: EventKey( [ 177, 128, 217, 26, 209, 118, 132, 101, 161, 136, 137, 178, 8, 148, 67, 134, 112, 82, 54, 229, 43, 29, 48, 95, ], ), }, sent_events: EventHandle { count: 8994474537296234872, key: EventKey( [ 42, 200, 11, 240, 3, 96, 217, 187, 252, 97, 70, 82, 244, 240, 55, 151, 113, 137, 247, 74, 50, 92, 169, 51, ], ), }, sequence_number: 5207485911913885897, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2bae4b3cfb1cb526bc12db1dc7fa12e7d843504abb9508a5ccb2a6aa057a7520): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e704a28d56ed03c903593e5660db2a1669648c58285717cbde34b793ccf4419b130e7c634328b9ae549e4d4c327a3bc600425e177098d1d7ebe5bd563490e17cc6ef9acc2293d51caad4868c7cde997d6fd2d0691a6888f4a7587532d1ad401c5702cda4989a76b5d5b9182c47d3505018c1b2a7b288030573994ed188cfe0401e140e4dda33cf419187d8bdc93e7956cd4587950c1fa2f1defd571607875ec672911571b65bb960c0d18fac6cee7d294d6bde1b643d936317ec39217b2e37ab010e04a1ffa2a7ed86a7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082b036b1a017b938c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 74, 40, 213, 110, 208, 60, 144, 53, 147, 229, 102, 13, 178, 161, 102, 150, 72, 197, 130, 133, 113, 124, 189, 227, 75, 121, 60, 207, 68, 25, 177, 48, 231, 198, 52, 50, 139, 154, 229, 73, 228, 212, 195, 39, 163, 188, 96, 4, 37, 225, 119, 9, 141, 29, 126, 190, 91, 213, 99, 73, 14, 23, 204, 110, 249, 172, 194, 41, 61, 81, 202, 173, 72, 104, 199, 205, 233, 151, 214, 253, 45, 6, 145, 166, 136, 143, 74, 117, 135, 83, 45, 26, 212, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c5702cda4989a76b5d5b9182c47d3505, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c1b2a7b288030573994ed188cfe0401, }, ), received_events: EventHandle { count: 1870186419765657825, key: EventKey( [ 125, 139, 220, 147, 231, 149, 108, 212, 88, 121, 80, 193, 250, 47, 29, 239, 213, 113, 96, 120, 117, 236, 103, 41, ], ), }, sent_events: EventHandle { count: 940292153812932369, key: EventKey( [ 250, 198, 206, 231, 210, 148, 214, 189, 225, 182, 67, 217, 54, 49, 126, 195, 146, 23, 178, 227, 122, 176, 16, 224, ], ), }, sequence_number: 8893158450594979658, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2bf33fb928a1f9fac8bd9d621d79e3523c6650ef21c2c45f54397a10600b9912): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9be01619b04cd598c76b0727a75551882f63fd7cf096bea262acf457c43430216bc85efcffdc28c5c24a72f886363f9cc2b76a47f22893efeb803194f10e6d4b0284e4bcc80adb0e6644c688d7b357d259eef4a6a3e3c01127ead1ba1a42c0b31e52858140124ac8e4287a9ac40e3e525ead741ec57003770b4311b5e374f187acc1de03d3490eeb75a01e696923a98001dae867fb5378a0ceeb740f29a75271879b330a8e335bc8471bf1e2eab51b7db290499ccc4ec295d9d04a14143e81b182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881c5d868f55f45bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 4, 205, 89, 140, 118, 176, 114, 122, 117, 85, 24, 130, 246, 63, 215, 207, 9, 107, 234, 38, 42, 207, 69, 124, 67, 67, 2, 22, 188, 133, 239, 207, 253, 194, 140, 92, 36, 167, 47, 136, 99, 99, 249, 204, 43, 118, 164, 127, 34, 137, 62, 254, 184, 3, 25, 79, 16, 230, 212, 176, 40, 78, 75, 204, 128, 173, 176, 230, 100, 76, 104, 141, 123, 53, 125, 37, 158, 239, 74, 106, 62, 60, 1, 18, 126, 173, 27, 161, 164, 44, 11, 49, 229, 40, 88, 20, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24ac8e4287a9ac40e3e525ead741ec57, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5708134523606429751, key: EventKey( [ 122, 204, 29, 224, 61, 52, 144, 238, 183, 90, 1, 230, 150, 146, 58, 152, 0, 29, 174, 134, 127, 181, 55, 138, ], ), }, sent_events: EventHandle { count: 2843349105012895244, key: EventKey( [ 121, 179, 48, 168, 227, 53, 188, 132, 113, 191, 30, 46, 171, 81, 183, 219, 41, 4, 153, 204, 196, 236, 41, 93, ], ), }, sequence_number: 1737237456842982557, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ee6de291185c35121fe79edae054625d7f664a25bd6f6076749dad4a39404ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9771a387fc1b4d1dabe1e3887d4e2ff40dba59fefe82191f030cca79b01984784f3e8b1bf4c28912007179e812e000c69084aca334a0218eb2fcd2898dd20099d8367de3369c0719790007cdfe830232b13869066fc3f73188d5d75184bcd1fd53707f3349a14564c9be30cd8d037e1774087f151a59ea9e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c44ff661e66bbb39 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 127, 193, 180, 209, 218, 190, 30, 56, 135, 212, 226, 255, 64, 219, 165, 159, 239, 232, 33, 145, 240, 48, 204, 167, 155, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 984784f3e8b1bf4c28912007179e812e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 165001280270919948, key: EventKey( [ 235, 47, 205, 40, 152, 221, 32, 9, 157, 131, 103, 222, 51, 105, 192, 113, 151, 144, 0, 124, 223, 232, 48, 35, ], ), }, sent_events: EventHandle { count: 8304633755336053547, key: EventKey( [ 141, 93, 117, 24, 75, 205, 31, 213, 55, 7, 243, 52, 154, 20, 86, 76, 155, 227, 12, 216, 208, 55, 225, 119, ], ), }, sequence_number: 16548932738631173952, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32646b235a0b0fedb699a8c2e924b24ed1e7f061ff2239386d24d8e0a8489fd9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a909ccb08234dcd50dbff36ec32ad38bfd473f0618aea1fe77b0ab7a4c1bbe971508e482c3c1dd123ffa26aee628ff90b6d96b880f11927340c82bc59aeba207dfd374dd6faa9a4cb300d00001465665690dba049189b7feba322526c4fdf5d4b5bafbaf76a3376d0867076abbd57c5f47baa9bcd5118f428befe41693885463617766954a5ec0efc9bf4c6af7357fae994749bf60c402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c69c8f7defb3a352 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 156, 203, 8, 35, 77, 205, 80, 219, 255, 54, 236, 50, 173, 56, 191, 212, 115, 240, 97, 138, 234, 31, 231, 123, 10, 183, 164, 193, 187, 233, 113, 80, 142, 72, 44, 60, 29, 209, 35, 255, 162, 106, 238, 98, 143, 249, 11, 109, 150, 184, 128, 241, 25, 39, 52, 12, 130, 188, 89, 174, 186, 32, 125, 253, 55, 77, 214, 250, 169, 164, 203, 48, 13, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5305481774013768980, key: EventKey( [ 155, 127, 235, 163, 34, 82, 108, 79, 223, 93, 75, 91, 175, 186, 247, 106, 51, 118, 208, 134, 112, 118, 171, 189, ], ), }, sent_events: EventHandle { count: 5894538643824231767, key: EventKey( [ 244, 40, 190, 254, 65, 105, 56, 133, 70, 54, 23, 118, 105, 84, 165, 236, 14, 252, 155, 244, 198, 175, 115, 87, ], ), }, sequence_number: 4615334865684195834, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32badfa22335697679516926de125e4ee2e7f164edb96da146efc31a4c63b9cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580b6f74909d27b36c107845f700006c388cea38c0e815182bdf35d922679464ec9bb22dc83a6af0fc1d051388fe902bbcec0098510b1f5e184f414a613e5b5e255156bc647a8b615d8e3bb383b10a9b2c76e8375c3f1f79a22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a50b3b65cd55e18 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 111, 116, 144, 157, 39, 179, 108, 16, 120, 69, 247, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1578723020079118444, key: EventKey( [ 43, 223, 53, 217, 34, 103, 148, 100, 236, 155, 178, 45, 200, 58, 106, 240, 252, 29, 5, 19, 136, 254, 144, 43, ], ), }, sent_events: EventHandle { count: 6782152008913710268, key: EventKey( [ 79, 65, 74, 97, 62, 91, 94, 37, 81, 86, 188, 100, 122, 139, 97, 93, 142, 59, 179, 131, 177, 10, 155, 44, ], ), }, sequence_number: 11707423063316883574, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33767180ff169c4ddd2e797365da532988bc4cb3976019d67eee3f4ccaa1d6b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95609242cc0c52dfbf7f45b00004835aed4ed06ab4f182e6dfee7b0f81e86e008712cd6d378c5c97294ae31df6266a1ccb93054a0196f18c69e00b8b564a689562af2f96e85558d2860aee91713786f296693d3b9b421332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70882e9ec3cc7bfd3fd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 44, 192, 197, 45, 251, 247, 244, 91, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5740689768559031624, key: EventKey( [ 46, 109, 254, 231, 176, 248, 30, 134, 224, 8, 113, 44, 214, 211, 120, 197, 201, 114, 148, 174, 49, 223, 98, 102, ], ), }, sent_events: EventHandle { count: 8005606096082947233, key: EventKey( [ 198, 158, 0, 184, 181, 100, 166, 137, 86, 42, 242, 249, 110, 133, 85, 141, 40, 96, 174, 233, 23, 19, 120, 111, ], ), }, sequence_number: 3684424680377378345, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(353aa6e3dcb0b97f334fff8d127f4ee9fb6888d8cdfab30c6fc9618b23b2e984): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619fc68f461f5131ed2fca8eb141ccf7e777a0b7e254c7988dd1900004128a18701ce9b6718a10f704856849e062733663a47034c9160c5eec60e3f6d614bd942f51d293b6118c5dd5f1e9ec167d03e99e6a5bf078c6710896b02c5bd449153d79568e84931502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea3c6888e826d3c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 104, 244, 97, 245, 19, 30, 210, 252, 168, 235, 20, 28, 207, 126, 119, 122, 11, 126, 37, 76, 121, 136, 221, 25, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7465787313262504001, key: EventKey( [ 161, 15, 112, 72, 86, 132, 158, 6, 39, 51, 102, 58, 71, 3, 76, 145, 96, 197, 238, 198, 14, 63, 109, 97, ], ), }, sent_events: EventHandle { count: 7006238853950527819, key: EventKey( [ 197, 221, 95, 30, 158, 193, 103, 208, 62, 153, 230, 165, 191, 7, 140, 103, 16, 137, 107, 2, 197, 189, 68, 145, ], ), }, sequence_number: 5778481059428947795, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(37765ca6084246430fde0b3d93b35bcf88ea90eb09494256ff46863defb0fece): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9691c76ecd54b45e43f5ae80fcd3aa2473fc9d5ba931fb7326324a2c2a1cc000000364295fc21034c187a5e158096966eb39d0246fd5d288717c6f9bc32b652565761e0cb0b20ba094318d507c0b54a557f2b5d29588f5be2fb9c7d13f621fb78616c28fd7444f602db192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3d2c800aac89514 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 236, 213, 75, 69, 228, 63, 90, 232, 15, 205, 58, 162, 71, 63, 201, 213, 186, 147, 31, 183, 50, 99, 36, 162, 194, 161, 204, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5477258940532274688, key: EventKey( [ 122, 94, 21, 128, 150, 150, 110, 179, 157, 2, 70, 253, 93, 40, 135, 23, 198, 249, 188, 50, 182, 82, 86, 87, ], ), }, sent_events: EventHandle { count: 4830596722131198049, key: EventKey( [ 213, 7, 192, 181, 74, 85, 127, 43, 93, 41, 88, 143, 91, 226, 251, 156, 125, 19, 246, 33, 251, 120, 97, 108, ], ), }, sequence_number: 1863086127581560104, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3799436d271edc65b67c1f6446eaf63d11209651b20f865f5b16cec4304453cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a768d21f2f16fc93b0a577cd10b88cbf0186844a1c963c560a8d7428ffbeae5d25c7517bda1fbea805f8fa7c5807c30ee8b769083a50133b235960001a7ba9c2494db60628d6b4edb49497c028b83a21f930c3f2b187ea82551ed4333d4505e93b09ed95a0a69e83e11bfac814baa8adcffe35be32c18f0e0ef2b2b3c64704fc2387d44fa3102f254c4877f983f586a1698ee49202f342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d56bef720ac64a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 141, 33, 242, 241, 111, 201, 59, 10, 87, 124, 209, 11, 136, 203, 240, 24, 104, 68, 161, 201, 99, 197, 96, 168, 215, 66, 143, 251, 234, 229, 210, 92, 117, 23, 189, 161, 251, 234, 128, 95, 143, 167, 197, 128, 124, 48, 238, 139, 118, 144, 131, 165, 1, 51, 178, 53, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a7ba9c2494db60628d6b4edb49497c02, }, ), received_events: EventHandle { count: 3116223293194142603, key: EventKey( [ 126, 168, 37, 81, 237, 67, 51, 212, 80, 94, 147, 176, 158, 217, 90, 10, 105, 232, 62, 17, 191, 172, 129, 75, ], ), }, sent_events: EventHandle { count: 3234529992190495402, key: EventKey( [ 240, 224, 239, 43, 43, 60, 100, 112, 79, 194, 56, 125, 68, 250, 49, 2, 242, 84, 196, 135, 127, 152, 63, 88, ], ), }, sequence_number: 3760259715785299562, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(383bf23c3f33a862bfa96ed7339fc81bb6543732a5556c701cb4bb6b37f21122): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c0015310f29adae1b9287655e4198bde304b5828f6538b343113d559b89ddd3cbe685fb740d0b8d5c106d881ece9a959be7722d16bc23cae4b22bac1f1503bb8a773ae4cf1b4599f82230f10267a57424a98e4456d96019349c02de8dd57fa2d979b8a4a580b480171bca3d28fd2b1939aad4e139043e7f97e49f3786d40d30b187e822943c0c53d1f02fd4bd1b3786a770fc3918ad82635eb6b19660a3b31aa101854d6b53c9cf05da021eb3955237ee82b99d32a430d2d5dfd72fe29886028f6d12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c61fafd7fed9baef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 16, 242, 154, 218, 225, 185, 40, 118, 85, 228, 25, 139, 222, 48, 75, 88, 40, 246, 83, 139, 52, 49, 19, 213, 89, 184, 157, 221, 60, 190, 104, 95, 183, 64, 208, 184, 213, 193, 6, 216, 129, 236, 233, 169, 89, 190, 119, 34, 209, 107, 194, 60, 174, 75, 34, 186, 193, 241, 80, 59, 184, 167, 115, 174, 76, 241, 180, 89, 159, 130, 35, 15, 16, 38, 122, 87, 66, 74, 152, 228, 69, 109, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9349c02de8dd57fa2d979b8a4a580b48, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71bca3d28fd2b1939aad4e139043e7f9, }, ), received_events: EventHandle { count: 852095593427978622, key: EventKey( [ 126, 130, 41, 67, 192, 197, 61, 31, 2, 253, 75, 209, 179, 120, 106, 119, 15, 195, 145, 138, 216, 38, 53, 235, ], ), }, sent_events: EventHandle { count: 1200826380294953323, key: EventKey( [ 84, 214, 181, 60, 156, 240, 93, 160, 33, 235, 57, 85, 35, 126, 232, 43, 153, 211, 42, 67, 13, 45, 93, 253, ], ), }, sequence_number: 15129324393264184946, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3a489d561fb29e96a28ff312ec2da68d9e48e63e31d2f0cbbb455f47f55d05d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9631655e4fd141bd3671fbfba760bfd3811cf7b2bbd7782e700009397e7b5838c891c186592b227cadee786a947fa7fa5d7121a245cc9dafef99a442716f70d11e5f65a186847562878e2d49a7a5fec90cba0d9961a39cf4190f832d6506946ce67a752ad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f08a8895fc74147 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 85, 228, 253, 20, 27, 211, 103, 31, 191, 186, 118, 11, 253, 56, 17, 207, 123, 43, 189, 119, 130, 231, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2056329202191800211, key: EventKey( [ 101, 146, 178, 39, 202, 222, 231, 134, 169, 71, 250, 127, 165, 215, 18, 26, 36, 92, 201, 218, 254, 249, 154, 68, ], ), }, sent_events: EventHandle { count: 6554678169095837223, key: EventKey( [ 104, 71, 86, 40, 120, 226, 212, 154, 122, 95, 236, 144, 203, 160, 217, 150, 26, 57, 207, 65, 144, 248, 50, 214, ], ), }, sequence_number: 12489228780935997776, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3a54771acd7f645b7e11cba9436a806326c882a080da4e6072f6912e887ec95b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c955080bfd527b4ddbf46500009b96f7332092797b189a6cd0cff00db268323e3dd23e26061e2218b8a4f29eb8941f502e7cf515735818706d3e48ff94fd184206a4482650f4fe425528a888320330e0d2175419fd6d0a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f9c599216d866b8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 253, 82, 123, 77, 219, 244, 101, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8897303205855598235, key: EventKey( [ 154, 108, 208, 207, 240, 13, 178, 104, 50, 62, 61, 210, 62, 38, 6, 30, 34, 24, 184, 164, 242, 158, 184, 148, ], ), }, sent_events: EventHandle { count: 6373462041753964575, key: EventKey( [ 112, 109, 62, 72, 255, 148, 253, 24, 66, 6, 164, 72, 38, 80, 244, 254, 66, 85, 40, 168, 136, 50, 3, 48, ], ), }, sequence_number: 751534998067598048, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c9a50c98124232f2c879eaf987f989377a74787c249d09ae87609fe35bc78c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f12c08aab5c2b875765fa036cab76e4c8ec316b01e7d6ca20388b3e68be2d98068201fd2300324ca1fff910bd5a18e19270e3d09db8d044e12f5fb401b1c81a93f08174f213f409f0900b2c61892018b84018c5d0f2503187455fc149de7af2e3954c52130fdda40ac4ff058cee2b502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080c00875cf9de4c36 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 138, 171, 92, 43, 135, 87, 101, 250, 3, 108, 171, 118, 228, 200, 236, 49, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7d6ca20388b3e68be2d98068201fd23, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6538400899933490226, key: EventKey( [ 225, 146, 112, 227, 208, 157, 184, 208, 68, 225, 47, 95, 180, 1, 177, 200, 26, 147, 240, 129, 116, 242, 19, 244, ], ), }, sent_events: EventHandle { count: 2344511922823557129, key: EventKey( [ 184, 64, 24, 197, 208, 242, 80, 49, 135, 69, 95, 193, 73, 222, 122, 242, 227, 149, 76, 82, 19, 15, 221, 164, ], ), }, sequence_number: 5776973232196273162, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3d1ff435e15a05c5d0b5fed877191e794386ee5cd56447e7666b1bf037cdd2df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001235f674f19ff43e9879439ab649e58e773cea690f69ec1947992a602b7b7fbc609ab1092015c4da2745fe3922a44f14e600b8f643a01c0612b5e7260547a5673956e01d734121023697bdb669e2c18fea84c69a71eb276a333d4b3e56d3dcaa59a82622833314fef667e2fcc81391318adf196aab6b368a623c60b194c2e3ade35da1fc5eb3d1730010cb069bbd3aad32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbeee9cfc4ffa581 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 103, 79, 25, 255, 67, 233, 135, 148, 57, 171, 100, 158, 88, 231, 115, 206, 166, 144, 246, 158, 193, 148, 121, 146, 166, 2, 183, 183, 251, 198, 9, 171, 16, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5c4da2745fe3922a44f14e600b8f643a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0612b5e7260547a5673956e01d73412, }, ), received_events: EventHandle { count: 3215120276843471632, key: EventKey( [ 254, 168, 76, 105, 167, 30, 178, 118, 163, 51, 212, 179, 229, 109, 61, 202, 165, 154, 130, 98, 40, 51, 49, 79, ], ), }, sent_events: EventHandle { count: 1385281074363262703, key: EventKey( [ 173, 241, 150, 170, 182, 179, 104, 166, 35, 198, 11, 25, 76, 46, 58, 222, 53, 218, 31, 197, 235, 61, 23, 48, ], ), }, sequence_number: 15252235889929096193, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3d5ce37814fd810aa1d3fdc6d8dc67968200c56d337484cb634790a073317c53): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e091cf615df61cfc62deb59d783440001b2a381b5daae9ce89167db1737c8977357c34127652c002e189806a97d8b1eea29f41659e1e311f38b6848850f3925ba12d0343c6d78f33f4b18e15b30eef94a51eaf67ed29c95d3e13bfe42723ecdaf3c974944cfa711a4f0312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084a5d6ca45effdfc1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 28, 246, 21, 223, 97, 207, 198, 45, 235, 89, 215, 131, 68, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2a381b5daae9ce89167db1737c89773, }, ), received_events: EventHandle { count: 3314698138706625367, key: EventKey( [ 152, 6, 169, 125, 139, 30, 234, 41, 244, 22, 89, 225, 227, 17, 243, 139, 104, 72, 133, 15, 57, 37, 186, 18, ], ), }, sent_events: EventHandle { count: 5422320174931653840, key: EventKey( [ 225, 91, 48, 238, 249, 74, 81, 234, 246, 126, 210, 156, 149, 211, 225, 59, 254, 66, 114, 62, 205, 175, 60, 151, ], ), }, sequence_number: 3598556498005804105, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42db1bc14d2d81f6d62e7d5389e7f020f8a406149cb31e5551cb76f623c76366): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015a37c7d2a82931721e61c096a89974ca907c06ec62d0abfdc6b6145e0556badccc05881ea51705222806958d2c70c7c4df29a31640bda59fe821e704b1bce5e7032b9f205ecb25fb2b43c4d136627aa8a72ea69f42680d69edb765000068399210023ffe011829b1364d6860c8aca73b37a20d3c0d518588d6dd2f4572049903ee5fd5cb4f111877d353f46a23c9b8e58b3fe8a5784ff629e7587bc081968a8fb947cb2ad538b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822f7cec73bc89fd1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 199, 210, 168, 41, 49, 114, 30, 97, 192, 150, 168, 153, 116, 202, 144, 124, 6, 236, 98, 208, 171, 253, 198, 182, 20, 94, 5, 86, 186, 220, 204, 5, 136, 30, 165, 23, 5, 34, 40, 6, 149, 141, 44, 112, 199, 196, 223, 41, 163, 22, 64, 189, 165, 159, 232, 33, 231, 4, 177, 188, 229, 231, 3, 43, 159, 32, 94, 203, 37, 251, 43, 67, 196, 209, 54, 98, 122, 168, 167, 46, 166, 159, 66, 104, 13, 105, 237, 183, 101, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 143621516222937448, key: EventKey( [ 41, 177, 54, 77, 104, 96, 200, 172, 167, 59, 55, 162, 13, 60, 13, 81, 133, 136, 214, 221, 47, 69, 114, 4, ], ), }, sent_events: EventHandle { count: 1247439739102823321, key: EventKey( [ 119, 211, 83, 244, 106, 35, 201, 184, 229, 139, 63, 232, 165, 120, 79, 246, 41, 231, 88, 123, 192, 129, 150, 138, ], ), }, sequence_number: 12914306311260715407, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43c12749b5778c6748aa585e8a0f9e4976c0bab68455997767386fb8acbc4ba1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8013bf8a9f5c0ebd0872edc90c936279b081f20a84a1823d02731dd6a741fa39cda4eb496b7e6c8011d8b70daf506e3ff79f9ff1b2aa1bbb8fa3aa1e2ae0120e20d3ce87f5e3954690e5c1b227a57016f627def6be6cd52068e1ea2853e81d9f03103e5fddca44518ec96f04ce9171ee1f6a3c6baaf96c970d7eba5e6f7316bc457ce1f51fa1c042e189b54d0def99a38b5a03f4c5bceec50336533f1d78b15cadb7d6739911337d78c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890573f03b75721bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 248, 169, 245, 192, 235, 208, 135, 46, 220, 144, 201, 54, 39, 155, 8, 31, 32, 168, 74, 24, 35, 208, 39, 49, 221, 106, 116, 31, 163, 156, 218, 78, 180, 150, 183, 230, 200, 1, 29, 139, 112, 218, 245, 6, 227, 255, 121, 249, 255, 27, 42, 161, 187, 184, 250, 58, 161, 226, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 20e20d3ce87f5e3954690e5c1b227a57, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f627def6be6cd52068e1ea2853e81d9, }, ), received_events: EventHandle { count: 5018378867824603632, key: EventKey( [ 236, 150, 240, 76, 233, 23, 30, 225, 246, 163, 198, 186, 175, 150, 201, 112, 215, 235, 165, 230, 247, 49, 107, 196, ], ), }, sent_events: EventHandle { count: 3315807087079968343, key: EventKey( [ 155, 84, 208, 222, 249, 154, 56, 181, 160, 63, 76, 91, 206, 236, 80, 51, 101, 51, 241, 215, 139, 21, 202, 219, ], ), }, sequence_number: 10148640842483066749, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43ce9a90b56e8fcc3bb9ab5e8e475de9291b1d352c0d043c504dbcb3802935a4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eaf6dd27796323047aafd753978dfe327828f776cadf4b353aa1486615d697d7a8b3997f3f022337ca567afe8293d000197d59d6f684d16e12be0c0cc74ff24ba81d9e433d3f3d33018b34fdf00b64e392ae81351eae9117c55362f0e54afc5281ba91a2af9fd5cd04f1852adb28df7178a9deb8a5eb707ac67dea3eb0d2e569a9e6d050d7b157b4b28b52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083fa215665f056781 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 109, 210, 119, 150, 50, 48, 71, 170, 253, 117, 57, 120, 223, 227, 39, 130, 143, 119, 108, 173, 244, 179, 83, 170, 20, 134, 97, 93, 105, 125, 122, 139, 57, 151, 243, 240, 34, 51, 124, 165, 103, 175, 232, 41, 61, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 97d59d6f684d16e12be0c0cc74ff24ba, }, ), received_events: EventHandle { count: 3518423822340774273, key: EventKey( [ 179, 79, 223, 0, 182, 78, 57, 42, 232, 19, 81, 234, 233, 17, 124, 85, 54, 47, 14, 84, 175, 197, 40, 27, ], ), }, sent_events: EventHandle { count: 5751198970028890793, key: EventKey( [ 82, 173, 178, 141, 247, 23, 138, 157, 235, 138, 94, 183, 7, 172, 103, 222, 163, 235, 13, 46, 86, 154, 158, 109, ], ), }, sequence_number: 13053766511946829061, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43dc71332037a56f45e82aa9aacb04513f7ff56e0ec461fac40b8c467282b3c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123e4c617c1431f34efe55461860eaa307524f69c8fb68666a99985fb2b5857a4170c4b2a0193110b4c99215daa03caabb3260ba5c60117ed559a4ceaa016eba107a6ce621823f4f0ade543548a0118341746ac0643a54a7507cbbd4258c5cb69b8b538b0fa21ad73f66bfefd03ce4b18c0b3cac74cbe8ac79ba758a663902c7821f80957e0fdc479e693097de36ccf552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086ceb8bd8e054ee64 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 228, 198, 23, 193, 67, 31, 52, 239, 229, 84, 97, 134, 14, 170, 48, 117, 36, 246, 156, 143, 182, 134, 102, 169, 153, 133, 251, 43, 88, 87, 164, 23, 12, 75, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 93110b4c99215daa03caabb3260ba5c6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 17ed559a4ceaa016eba107a6ce621823, }, ), received_events: EventHandle { count: 110993791416922356, key: EventKey( [ 52, 23, 70, 172, 6, 67, 165, 74, 117, 7, 203, 189, 66, 88, 197, 203, 105, 184, 181, 56, 176, 250, 33, 173, ], ), }, sent_events: EventHandle { count: 5462307787477087859, key: EventKey( [ 192, 179, 202, 199, 76, 190, 138, 199, 155, 167, 88, 166, 99, 144, 44, 120, 33, 248, 9, 87, 224, 253, 196, 121, ], ), }, sequence_number: 6183280537714136038, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(462aad65b08b12fd13dca8d92367418f16075f6f97f60f6ffb7e261ad59cf686): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ec1134f5da711718a522a11eced4a6b222388ccf3b934e0185ea95b742948b754d7ac71780219eaef8217d188c7c8e423fd9eff9aebc3a955ce709836840fa4c9752fe9bae9b6210791c884b4428514bc0a8d17b117852d403c764c04acfc00018fe543dcb0b1753e1a6582b4d9ff24adcdf7c6e95c6f7c2f18053cd5a9df2d83a86b630b396ce127840624b139e6eadb04d7310456e94b1566181bfa5ca22cf4a465b1da2db9084183d8e65aae4bbf062f16d261e6205f32e5312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d4874d63dc6cf5c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 193, 19, 79, 93, 167, 17, 113, 138, 82, 42, 17, 236, 237, 74, 107, 34, 35, 136, 204, 243, 185, 52, 224, 24, 94, 169, 91, 116, 41, 72, 183, 84, 215, 172, 113, 120, 2, 25, 234, 239, 130, 23, 209, 136, 199, 200, 228, 35, 253, 158, 255, 154, 235, 195, 169, 85, 206, 112, 152, 54, 132, 15, 164, 201, 117, 47, 233, 186, 233, 182, 33, 7, 145, 200, 132, 180, 66, 133, 20, 188, 10, 141, 23, 177, 23, 133, 45, 64, 60, 118, 76, 4, 172, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8fe543dcb0b1753e1a6582b4d9ff24ad, }, ), received_events: EventHandle { count: 3421732261744539597, key: EventKey( [ 5, 60, 213, 169, 223, 45, 131, 168, 107, 99, 11, 57, 108, 225, 39, 132, 6, 36, 177, 57, 230, 234, 219, 4, ], ), }, sent_events: EventHandle { count: 7355869031922151895, key: EventKey( [ 27, 250, 92, 162, 44, 244, 164, 101, 177, 218, 45, 185, 8, 65, 131, 216, 230, 90, 174, 75, 191, 6, 47, 22, ], ), }, sequence_number: 3595335261680460242, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(46ac01f9488532536ac093e2526e1c750ac6dc85ed3051af75351829357e9bc8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940147db6a32964bbcd77ba9c5c0936bb9ff009a1bad0753b910bba0f7dc4ad23370d4857940a59ec43f82c1ca63f60f49fb6dab277eda7ef49adf4f687bbb0e3ce3e4973240cf26f5070000d7c3f0652b38aa2618c9a55b5cfb39dc64ea083f0d484faaf64bf88a5d728dcc9f4601add058ca087318e57848f1d37197429bc8253a6d6a28aeb710c7c68429ebbf961dd29e963367152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084780ec1ee0b05e49 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 219, 106, 50, 150, 75, 188, 215, 123, 169, 197, 192, 147, 107, 185, 255, 0, 154, 27, 173, 7, 83, 185, 16, 187, 160, 247, 220, 74, 210, 51, 112, 212, 133, 121, 64, 165, 158, 196, 63, 130, 193, 202, 99, 246, 15, 73, 251, 109, 171, 39, 126, 218, 126, 244, 154, 223, 79, 104, 123, 187, 14, 60, 227, 228, 151, 50, 64, 207, 38, 245, 7, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2786101078527099863, key: EventKey( [ 201, 165, 91, 92, 251, 57, 220, 100, 234, 8, 63, 13, 72, 79, 170, 246, 75, 248, 138, 93, 114, 141, 204, 159, ], ), }, sent_events: EventHandle { count: 8289097596982329670, key: EventKey( [ 229, 120, 72, 241, 211, 113, 151, 66, 155, 200, 37, 58, 109, 106, 40, 174, 183, 16, 199, 198, 132, 41, 235, 191, ], ), }, sequence_number: 1542258119400365462, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(476645c4a67c8cb2a8f8989d11b39351cc2e7402938ebd2e41725eae5f7d0e7b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e012d0000cad449bab2e72310187b8d234d2066c66ecec9429c7c3e04f74dbdb093d6e6edf68d729fc4093b8d1a182134630c8f07172b5314353b03d617873daae7be9f166bcb696a5d97317385442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708038f01b8d3a0aa96 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1163027883607315658, key: EventKey( [ 123, 141, 35, 77, 32, 102, 198, 110, 206, 201, 66, 156, 124, 62, 4, 247, 77, 189, 176, 147, 214, 230, 237, 246, ], ), }, sent_events: EventHandle { count: 1913250329841857165, key: EventKey( [ 33, 52, 99, 12, 143, 7, 23, 43, 83, 20, 53, 59, 3, 214, 23, 135, 61, 170, 231, 190, 159, 22, 107, 203, ], ), }, sequence_number: 4937479223311690345, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(477537179b1d3f221b6bfcf86baab20a1d683dc7949583c8026b2df0c58580c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e017701647a78b7ddac602da25bd069ba8e1f650154ec4f6856ad723c5a2c957d8637c7c169725796de0fca44188b30e9ee41abe3dfc2af80d9bec32fe58994013eeb1f750267afc86e5cad5878182416c8c4e1ae0b934382bc4ab1447f471e913e6b8bd3b5c2d938d3067a2952d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d11d7cd16e60fa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 647a78b7ddac602da25bd069ba8e1f65, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 54ec4f6856ad723c5a2c957d8637c7c1, }, ), received_events: EventHandle { count: 4956791788554121833, key: EventKey( [ 139, 48, 233, 238, 65, 171, 227, 223, 194, 175, 128, 217, 190, 195, 47, 229, 137, 148, 1, 62, 235, 31, 117, 2, ], ), }, sent_events: EventHandle { count: 8671871695009132391, key: EventKey( [ 36, 22, 200, 196, 225, 174, 11, 147, 67, 130, 188, 74, 177, 68, 127, 71, 30, 145, 62, 107, 139, 211, 181, 194, ], ), }, sequence_number: 15299336488208251097, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(48df8157552b5185d280c5047580d9fd15656fff534921796ef875ae984c0d38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97518c0762680f25f5b0cb37a0512f32cb8c452fb198bc7f9be6000013f4d196e6924326365df2db3ef8f9f8964de74f683bcd82418ccaef97032cb12772e577c7e776ff64db129abc88f47b5a6b28c8dfcdff640141854ccf8ef0c9def841d2385f1ef2d3349649407ada2b837c9ce6de965903025d72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869915916b0d691b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 118, 38, 128, 242, 95, 91, 12, 179, 122, 5, 18, 243, 44, 184, 196, 82, 251, 25, 139, 199, 249, 190, 96, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3f4d196e6924326365df2db3ef8f9f89, }, ), received_events: EventHandle { count: 2655079255296499300, key: EventKey( [ 204, 174, 249, 112, 50, 203, 18, 119, 46, 87, 124, 126, 119, 111, 246, 77, 177, 41, 171, 200, 143, 71, 181, 166, ], ), }, sent_events: EventHandle { count: 1459437721143315634, key: EventKey( [ 84, 204, 248, 239, 12, 157, 239, 132, 29, 35, 133, 241, 239, 45, 51, 73, 100, 148, 7, 173, 162, 184, 55, 201, ], ), }, sequence_number: 15502850689036021198, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4a1dd4d39fd910161a7745b7dddf3da9738385852fe41fb61339c99c0c4f14da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b10154fc2924be111a8fe3801bc701043d3a12eb45a90c02b5e4d0f0efb49b2e7f5a99bfb13c2c55cf454591405b3f6f325c0da14198702596407a0c660d9c0a73424c53077cc37b19f58805733cd107640bedfd8a362c01c3c175410d53a00324fbfbabde93e47b00d6212c9b3f6a585c18f700f42692ed49648975ae17f5047ddef14f493cee19d9eb2c2dcc88aaaac21f189d4c10ce25f1fdc4b09cca55111f488a488766772e4ca009d2c04df4371015ea2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70874935a76c78660d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 41, 36, 190, 17, 26, 143, 227, 128, 27, 199, 1, 4, 61, 58, 18, 235, 69, 169, 12, 2, 181, 228, 208, 240, 239, 180, 155, 46, 127, 90, 153, 191, 177, 60, 44, 85, 207, 69, 69, 145, 64, 91, 63, 111, 50, 92, 13, 161, 65, 152, 112, 37, 150, 64, 122, 12, 102, 13, 156, 10, 115, 66, 76, 83, 7, 124, 195, 123, 25, 245, 136, 5, 115, 60, 209, 7, 100, 11, 237, 253, 138, 54, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c3c175410d53a00324fbfbabde93e47b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6654185270858752470, key: EventKey( [ 247, 0, 244, 38, 146, 237, 73, 100, 137, 117, 174, 23, 245, 4, 125, 222, 241, 79, 73, 60, 238, 25, 217, 235, ], ), }, sent_events: EventHandle { count: 2288579210073877804, key: EventKey( [ 157, 76, 16, 206, 37, 241, 253, 196, 176, 156, 202, 85, 17, 31, 72, 138, 72, 135, 102, 119, 46, 76, 160, 9, ], ), }, sequence_number: 16867405811894042834, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4c3b72babb935ab7c04b0f1f586b635ecf72ccee1a18e3e368a130697c3731f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c63e51d30149d64baadcef84a000124c6571177143f169881dc3d1c356184a5f01e88db9ead7518c625e0b7a30c5d6693166371edfa2d3b43b46ba1e34b1b866c68221b1b04733d18a7e42c01b15c9a340d7195c68edfec8a193546e06997e532bf4ac7be8dd188852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708202dc23a0c42de66 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 99, 229, 29, 48, 20, 157, 100, 186, 173, 206, 248, 74, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 24c6571177143f169881dc3d1c356184, }, ), received_events: EventHandle { count: 8479608339127267493, key: EventKey( [ 198, 37, 224, 183, 163, 12, 93, 102, 147, 22, 99, 113, 237, 250, 45, 59, 67, 180, 107, 161, 227, 75, 27, 134, ], ), }, sent_events: EventHandle { count: 4427887373101197420, key: EventKey( [ 167, 228, 44, 1, 177, 92, 154, 52, 13, 113, 149, 198, 142, 223, 236, 138, 25, 53, 70, 224, 105, 151, 229, 50, ], ), }, sequence_number: 9622171010598390463, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d10f8cfff935c5b4b770037b1a300ff7dabb2500f005b09e705404bd7a38d4b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130f3455ba960b5ea68f5fe64f1e29a0d45e33a6b236747e00f239cf3629cb4898c4425d289e026e98b5ef29a7ce47953c701abb82c638de35e9f13c527a6a4baeba400ef21ca96cce5d61218d4429607115f7bb939c7d95e102411810ad8e302e28f7a8ce1403ca7728cd066181ff49838dc50d5daae0e2a5d1151c8bd4256e4ad2df3e77b327c2827d46d56862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081f364e27d4e6b6b7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 69, 91, 169, 96, 181, 234, 104, 245, 254, 100, 241, 226, 154, 13, 69, 227, 58, 107, 35, 103, 71, 224, 15, 35, 156, 243, 98, 156, 180, 137, 140, 68, 37, 210, 137, 224, 38, 233, 139, 94, 242, 154, 124, 228, 121, 83, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: abb82c638de35e9f13c527a6a4baeba4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1357525004564701679, key: EventKey( [ 212, 66, 150, 7, 17, 95, 123, 185, 57, 199, 217, 94, 16, 36, 17, 129, 10, 216, 227, 2, 226, 143, 122, 140, ], ), }, sent_events: EventHandle { count: 7408575811084370145, key: EventKey( [ 31, 244, 152, 56, 220, 80, 213, 218, 174, 14, 42, 93, 17, 81, 200, 189, 66, 86, 228, 173, 45, 243, 231, 123, ], ), }, sequence_number: 9680045207036918834, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5188e27b132ac345e9985c41c3ba6d9f3703909a846985a8e2f681565cb3efd0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f01220c27b482ab554e0812c2ad6ddc30f2b3ff2f13b35a012a067cd512e5171f67503bb001f601c57c5ab3714f0f457ae4a396f49701f824b7a60ead42f3a6f8bcf6a012f8990005844be6dbc63118d558d5c6436268c3a3d3dc172e01b4e03a859e86b38772c506542d237dca0b2318659e0ac464ce1ae29081edcfc9494af88af70a244bd110ac6b7e86e7ea3d95fb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d99b1c977696cbe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 39, 180, 130, 171, 85, 78, 8, 18, 194, 173, 109, 220, 48, 242, 179, 255, 47, 19, 179, 90, 1, 42, 6, 124, 213, 18, 229, 23, 31, 103, 80, 59, 176, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f601c57c5ab3714f0f457ae4a396f497, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f824b7a60ead42f3a6f8bcf6a012f899, }, ), received_events: EventHandle { count: 3586795935403083008, key: EventKey( [ 213, 88, 213, 198, 67, 98, 104, 195, 163, 211, 220, 23, 46, 1, 180, 224, 58, 133, 158, 134, 179, 135, 114, 197, ], ), }, sent_events: EventHandle { count: 2525334654881190918, key: EventKey( [ 101, 158, 10, 196, 100, 206, 26, 226, 144, 129, 237, 207, 201, 73, 74, 248, 138, 247, 10, 36, 75, 209, 16, 172, ], ), }, sequence_number: 18128463954165792363, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53b4001e1b44d52ab40650143656f2a70aa63bdcb61ee290b580f53bd45e90e3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac014f4c09fd203119d90a9a04e9e7d38bd2483893ac1ce4576c5182369a29cdf14cc25d6782553bf1c75f21ad9dfbefe6d25cff4fb30711933c7b27825b3c8e75b0e28899b5f067c32516faf968e984fcd500016589ba0d4eae725bfa6e6167c2329dfa7f7e4c87a5ad466b18247d23751e011e466a1d3b628761379c6913679e3e1259f9cc68fda25030f9661851ed6f6ce1cf3d1191dcb5b1b89ca39566705f8cb8e76c0aeab89ba6285c816d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851c37f135300e4b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 76, 9, 253, 32, 49, 25, 217, 10, 154, 4, 233, 231, 211, 139, 210, 72, 56, 147, 172, 28, 228, 87, 108, 81, 130, 54, 154, 41, 205, 241, 76, 194, 93, 103, 130, 85, 59, 241, 199, 95, 33, 173, 157, 251, 239, 230, 210, 92, 255, 79, 179, 7, 17, 147, 60, 123, 39, 130, 91, 60, 142, 117, 176, 226, 136, 153, 181, 240, 103, 195, 37, 22, 250, 249, 104, 233, 132, 252, 213, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6589ba0d4eae725bfa6e6167c2329dfa, }, ), received_events: EventHandle { count: 7730056736879181439, key: EventKey( [ 36, 125, 35, 117, 30, 1, 30, 70, 106, 29, 59, 98, 135, 97, 55, 156, 105, 19, 103, 158, 62, 18, 89, 249, ], ), }, sent_events: EventHandle { count: 7420014983959636172, key: EventKey( [ 81, 237, 111, 108, 225, 207, 61, 17, 145, 220, 181, 177, 184, 156, 163, 149, 102, 112, 95, 140, 184, 231, 108, 10, ], ), }, sequence_number: 7890689351793490154, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(560e449ad9fd4b13ee0803026cf8bd00cea6bbb7e090042fcdefdd8a368815c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9950128baf52d69eecdc526923818e734156c6b1d2da81e1126c2dd12cf35be4f819c86c304b0662a0000d0019de2145590d6bec89307c9c7c0507c61018a11371cdc535f08e2351e5ef0f14ddbe718553171c50864186f360cdbf0a02464b8031edd8e9225f9c1eaa4b84022aa21f476e554bb65ef3e183bc9470c56388bc37cec3c67583d11d89f45ac7c19066d5bf26fcfbc4dabadff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708947ddf59eb3e35bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 245, 45, 105, 238, 205, 197, 38, 146, 56, 24, 231, 52, 21, 108, 107, 29, 45, 168, 30, 17, 38, 194, 221, 18, 207, 53, 190, 79, 129, 156, 134, 195, 4, 176, 102, 42, 0, 0, 208, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9de2145590d6bec89307c9c7c0507c61, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8a11371cdc535f08e2351e5ef0f14ddb, }, ), received_events: EventHandle { count: 7208228293556115687, key: EventKey( [ 111, 54, 12, 219, 240, 160, 36, 100, 184, 3, 30, 221, 142, 146, 37, 249, 193, 234, 164, 184, 64, 34, 170, 33, ], ), }, sent_events: EventHandle { count: 4534955205042992884, key: EventKey( [ 59, 201, 71, 12, 86, 56, 139, 195, 124, 236, 60, 103, 88, 61, 17, 216, 159, 69, 172, 124, 25, 6, 109, 91, ], ), }, sequence_number: 18423570001011109874, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(561568594d566140c73b4ed826dae40d1660a935d70ffae55a1af71ab0f4f179): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a7cdca3556620677a40c74bf90689a73d448a39754e6603f6117e27e4ef9a99fa50bac19ce4b1c5bd388f462a6932c8072635b287ff61442cdba0f745f0829bc199a08d8c4eae1365581f0000355f8e7dd251b03d18be954be103b0cc5886aedc74cbfd32aa2eb2f118521848a95aa9cf483eb9bf1e18024b5f042a97b15881b47faee5752773e91d5a87138e3eb1ace154387507d3c92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ecc2059d22f058bb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 220, 163, 85, 102, 32, 103, 122, 64, 199, 75, 249, 6, 137, 167, 61, 68, 138, 57, 117, 78, 102, 3, 246, 17, 126, 39, 228, 239, 154, 153, 250, 80, 186, 193, 156, 228, 177, 197, 189, 56, 143, 70, 42, 105, 50, 200, 7, 38, 53, 178, 135, 255, 97, 68, 44, 219, 160, 247, 69, 240, 130, 155, 193, 153, 160, 141, 140, 78, 174, 19, 101, 88, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4445142796706144053, key: EventKey( [ 190, 149, 75, 225, 3, 176, 204, 88, 134, 174, 220, 116, 203, 253, 50, 170, 46, 178, 241, 24, 82, 24, 72, 169, ], ), }, sent_events: EventHandle { count: 2215693218850253146, key: EventKey( [ 2, 75, 95, 4, 42, 151, 177, 88, 129, 180, 127, 174, 229, 117, 39, 115, 233, 29, 90, 135, 19, 142, 62, 177, ], ), }, sequence_number: 14542975821747118508, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(57d4e8aba6c914a87d83ff198d58c7c777b399a4165d861489a4fce6a6834344): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014b0c7b4750a9992455dd2492a210e19e07f98563708a0801ce046dff70a7889cfe41698531dba1266d66622a0fd1076c20bc5ac96c3da49623d363d4f68384e536ea099b7dfdb0a35a644ef00000a33a2a406965746618ffe2b98d96bbc77e7fe8f414e30d91985093b89e010b7a952c46dbc98995af001837421150cc1a6ad1d3fd785a1df6b459d640b22484908320687fdfa2e28e6e442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844e94d048901040f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 123, 71, 80, 169, 153, 36, 85, 221, 36, 146, 162, 16, 225, 158, 7, 249, 133, 99, 112, 138, 8, 1, 206, 4, 109, 255, 112, 167, 136, 156, 254, 65, 105, 133, 49, 219, 161, 38, 109, 102, 98, 42, 15, 209, 7, 108, 32, 188, 90, 201, 108, 61, 164, 150, 35, 211, 99, 212, 246, 131, 132, 229, 54, 234, 9, 155, 125, 253, 176, 163, 90, 100, 78, 240, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7382637191889566371, key: EventKey( [ 255, 226, 185, 141, 150, 187, 199, 126, 127, 232, 244, 20, 227, 13, 145, 152, 80, 147, 184, 158, 1, 11, 122, 149, ], ), }, sent_events: EventHandle { count: 49422539954013740, key: EventKey( [ 55, 66, 17, 80, 204, 26, 106, 209, 211, 253, 120, 90, 29, 246, 180, 89, 214, 64, 178, 36, 132, 144, 131, 32, ], ), }, sequence_number: 4931035746063581032, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(587d64ae85b27c855afc6a550de99fc037f878534598ebfd22bb63c3c3e834d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cc015fbf29bde9df7fb504b3593572118df45da305a75edf6e200077b22f6f999f0472df03fbc88e7d42aaa2ad8cdc81b4eeb444206168a8df1bbf13832be495b3f2e6ed6b1d13e54150a6032a12ebb4d83861558aa807fa51f5b1a3592f2440b99201683ab0bca4bafa7e2a1e631838498b2401e557fc1fb64a7a552524e5e8b1ed1753aae5cb51c7c9ca07181f2415aab4f9e6e81d5f9e8449731f0e6580ed3e8df3eb1dad2b275197a9ac2f181884ba72401703fbdbea8acae9f3c17904c188a199b4ee4d85dccae399ee4a2e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080611e4769d0e5287 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 41, 189, 233, 223, 127, 181, 4, 179, 89, 53, 114, 17, 141, 244, 93, 163, 5, 167, 94, 223, 110, 32, 0, 119, 178, 47, 111, 153, 159, 4, 114, 223, 3, 251, 200, 142, 125, 66, 170, 162, 173, 140, 220, 129, 180, 238, 180, 68, 32, 97, 104, 168, 223, 27, 191, 19, 131, 43, 228, 149, 179, 242, 230, 237, 107, 29, 19, 229, 65, 80, 166, 3, 42, 18, 235, 180, 216, 56, 97, 85, 138, 168, 7, 250, 81, 245, 177, 163, 89, 47, 36, 64, 185, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 683ab0bca4bafa7e2a1e631838498b24, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e557fc1fb64a7a552524e5e8b1ed1753, }, ), received_events: EventHandle { count: 561482961469040042, key: EventKey( [ 31, 36, 21, 170, 180, 249, 230, 232, 29, 95, 158, 132, 73, 115, 31, 14, 101, 128, 237, 62, 141, 243, 235, 29, ], ), }, sent_events: EventHandle { count: 3435307083143523245, key: EventKey( [ 24, 132, 186, 114, 64, 23, 3, 251, 219, 234, 138, 202, 233, 243, 193, 121, 4, 193, 136, 161, 153, 180, 238, 77, ], ), }, sequence_number: 3335740818740403333, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a39be578890dc85d38c87a1979513f0476fad3878a438e650ef718d516dabc1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015d959bbfbdcc15357fd6c80ff417384413e8cf2cec3ffa0c8a1a8625136fd604057fb3ff85e0a29ea242b8a9e0fa4b691f062d6595af01d82a1a6f70c388bf51eed016d4e314236554652edea5c7e6ff8768d3dc08b588708a8f9b3a7829019fb20fe18732442a4bd21fd715c9c0dd00296ddfe17f02135e187f807d6f13eeeb5bbefa450c194c666673c317b1477b4edfced618eefd8b2b2218189072bb59928a3f06e6a4370733c38f2c83ab826a5a6dd5ab77808249127e5d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ff5dcbcd0ce7271c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 149, 155, 191, 189, 204, 21, 53, 127, 214, 200, 15, 244, 23, 56, 68, 19, 232, 207, 44, 236, 63, 250, 12, 138, 26, 134, 37, 19, 111, 214, 4, 5, 127, 179, 255, 133, 224, 162, 158, 162, 66, 184, 169, 224, 250, 75, 105, 31, 6, 45, 101, 149, 175, 1, 216, 42, 26, 111, 112, 195, 136, 191, 81, 238, 208, 22, 212, 227, 20, 35, 101, 84, 101, 46, 222, 165, 199, 230, 255, 135, 104, 211, 220, 8, 181, 136, 112, 138, 143, 155, 58, 120, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9fb20fe18732442a4bd21fd715c9c0dd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6778764612396346665, key: EventKey( [ 127, 128, 125, 111, 19, 238, 235, 91, 190, 250, 69, 12, 25, 76, 102, 102, 115, 195, 23, 177, 71, 123, 78, 223, ], ), }, sent_events: EventHandle { count: 2462215544025700046, key: EventKey( [ 24, 144, 114, 187, 89, 146, 138, 63, 6, 230, 164, 55, 7, 51, 195, 143, 44, 131, 171, 130, 106, 90, 109, 213, ], ), }, sequence_number: 6736842199524210603, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a9121206f94a8f0e5686582ad65eb4417026fe3d2dffb0c6d9becfb81850c82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015d4bca925cec08c0d9f4f94be62c7775b8a9869fe9b4221abc1356db725ed7fe0f2cceb7ea4ad0be3b1ec8d88c522b87901ce6a59324a3d6454f77c4b5ccd4c75f818aa4ee7f7f0c0a89774c21a132264077c7f4aa5e41eaaae330c6d0ee0121736bb9f909d8c5d8e0b45d1aa1083101c16148cfc9cc54d3c74ceeb10b46e2466abdacdf581ed8471806d49b7d7b1fd50eba784546db6074289efb3b978aeec9eef6aa91dc309bcf39186495d479688409869a91dc1fe642830a14a6df02b0f8b4b6768a500dbb0522bf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083e874f4b8970ac80 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 202, 146, 92, 236, 8, 192, 217, 244, 249, 75, 230, 44, 119, 117, 184, 169, 134, 159, 233, 180, 34, 26, 188, 19, 86, 219, 114, 94, 215, 254, 15, 44, 206, 183, 234, 74, 208, 190, 59, 30, 200, 216, 140, 82, 43, 135, 144, 28, 230, 165, 147, 36, 163, 214, 69, 79, 119, 196, 181, 204, 212, 199, 95, 129, 138, 164, 238, 127, 127, 12, 10, 137, 119, 76, 33, 161, 50, 38, 64, 119, 199, 244, 170, 94, 65, 234, 170, 227, 48, 198, 208, 238, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 21736bb9f909d8c5d8e0b45d1aa10831, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c16148cfc9cc54d3c74ceeb10b46e246, }, ), received_events: EventHandle { count: 5176921138720980330, key: EventKey( [ 6, 212, 155, 125, 123, 31, 213, 14, 186, 120, 69, 70, 219, 96, 116, 40, 158, 251, 59, 151, 138, 238, 201, 238, ], ), }, sent_events: EventHandle { count: 4165718814502267638, key: EventKey( [ 100, 149, 212, 121, 104, 132, 9, 134, 154, 145, 220, 31, 230, 66, 131, 10, 20, 166, 223, 2, 176, 248, 180, 182, ], ), }, sequence_number: 13772576911392803446, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5b4abf613e78323b83f6b7854b025d8b5a675cc1cdba526811837d29cfab84c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e5b34e131222f09956180ca6ff0caaeb00d92f752ca3187fadbac377f4c019f70eea70a720216f3116877d3d9f0688837520413ff80a54ac98e0514725a44d0b0a25b53f9f964593f257a640c4215000129a713d9648a39ad116c917435d5ef67c15216798aac1441188bc30273c9be8156e13ff483b5f32f601ccbf2f9f0da08b15927d81ae9b1b82d18f9f0fda99c1683a39a41c44140f6404fdaffcb1b9d2870e96a7c9b7ee49177742101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084812830d2140ec11 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 52, 225, 49, 34, 47, 9, 149, 97, 128, 202, 111, 240, 202, 174, 176, 13, 146, 247, 82, 202, 49, 135, 250, 219, 172, 55, 127, 76, 1, 159, 112, 238, 167, 10, 114, 2, 22, 243, 17, 104, 119, 211, 217, 240, 104, 136, 55, 82, 4, 19, 255, 128, 165, 74, 201, 142, 5, 20, 114, 90, 68, 208, 176, 162, 91, 83, 249, 249, 100, 89, 63, 37, 122, 100, 12, 66, 21, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 29a713d9648a39ad116c917435d5ef67, }, ), received_events: EventHandle { count: 4689562822736499393, key: EventKey( [ 139, 195, 2, 115, 201, 190, 129, 86, 225, 63, 244, 131, 181, 243, 47, 96, 28, 203, 242, 249, 240, 218, 8, 177, ], ), }, sent_events: EventHandle { count: 3294578742157387609, key: EventKey( [ 249, 240, 253, 169, 156, 22, 131, 163, 154, 65, 196, 65, 64, 246, 64, 79, 218, 255, 203, 27, 157, 40, 112, 233, ], ), }, sequence_number: 8392336841190898794, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5eb1ac0145030c405b989b42c2389d4edfceda0889309a05489392e4ed6fc9c1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a013d08f5f9a76eb1e2b928b5277276f95add6bc1fcfab6dc2e8a9d10224eed1c1224f81eb4071b21af3a4119a0203509bdbcf353dbecffe0edbd6c2b7373dd00004d46cc45e0e03d2518faefa37828d3558fa9637a63fea1c06456fc59ebf5b033f5f9debaae3004d677185078377ecf869e3af4ca9b420658ac1f2a25218c162de4d110ac14f657d2f6d62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085649193429567075 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 8, 245, 249, 167, 110, 177, 226, 185, 40, 181, 39, 114, 118, 249, 90, 221, 107, 193, 252, 250, 182, 220, 46, 138, 157, 16, 34, 78, 237, 28, 18, 36, 248, 30, 180, 7, 27, 33, 175, 58, 65, 25, 160, 32, 53, 9, 189, 188, 243, 83, 219, 236, 255, 224, 237, 189, 108, 43, 115, 115, 221, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2683548206830995021, key: EventKey( [ 250, 239, 163, 120, 40, 211, 85, 143, 169, 99, 122, 99, 254, 161, 192, 100, 86, 252, 89, 235, 245, 176, 51, 245, ], ), }, sent_events: EventHandle { count: 8635093942665928441, key: EventKey( [ 80, 120, 55, 126, 207, 134, 158, 58, 244, 202, 155, 66, 6, 88, 172, 31, 42, 37, 33, 140, 22, 45, 228, 209, ], ), }, sequence_number: 15489799243619937296, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f03ce24c4cb4ef45e5405d674f8319b1dc1e2ed823709dd2cb0e378327b5fe2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f227f3baa7547f08e760486263fe7e7b84e5b8da3dcb7e97317ed931bb80119ea19ace30001393134d5286df0ab05514d1927b408877f40e4a430ad302f18a767178572d943dad3a74aedc8344ec9f572a5aab98aaf01c21e94486eebd00818493ba17f4787f533e9b734216e7740c34f33064c56c9aad83818fd8469fda83d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086b70d2495dbd61a8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 59, 170, 117, 71, 240, 142, 118, 4, 134, 38, 63, 231, 231, 184, 78, 91, 141, 163, 220, 183, 233, 115, 23, 237, 147, 27, 184, 1, 25, 234, 25, 172, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 393134d5286df0ab05514d1927b40887, }, ), received_events: EventHandle { count: 3400408143101182079, key: EventKey( [ 167, 103, 23, 133, 114, 217, 67, 218, 211, 167, 74, 237, 200, 52, 78, 201, 245, 114, 165, 170, 185, 138, 175, 1, ], ), }, sent_events: EventHandle { count: 635266406355836610, key: EventKey( [ 73, 59, 161, 127, 71, 135, 245, 51, 233, 183, 52, 33, 110, 119, 64, 195, 79, 51, 6, 76, 86, 201, 170, 216, ], ), }, sequence_number: 4443079662045567032, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f0f4fd0a517a65f37d49877a3f50b693c1555703618b48a0c6eba9cf5027af6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c2b3b91c15e786a927aba86c00487530c56fee18f011c57648c9577db515a30166b9dc5fbfc7428f29ee5163d8a4a1e149ee46ff72d111ab697aa2716019baac001a5cc6c982f0855de4c99620e018eb5d577642983895c21ac85f52973fc3c130688e0288c2b189b9485a334aa70ee41dba3b3a9ed8c7cdf59fb1e0d9f1b16f4bc1b0b669eeb6618301ced6cebea9b3adb061089b062eb8d5828992454a0f9de7e7f2e1b382703372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708305e297435dfbdbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 59, 145, 193, 94, 120, 106, 146, 122, 186, 134, 192, 4, 135, 83, 12, 86, 254, 225, 143, 1, 28, 87, 100, 140, 149, 119, 219, 81, 90, 48, 22, 107, 157, 197, 251, 252, 116, 40, 242, 158, 229, 22, 61, 138, 74, 30, 20, 158, 228, 111, 247, 45, 17, 26, 182, 151, 170, 39, 22, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9baac001a5cc6c982f0855de4c99620e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8eb5d577642983895c21ac85f52973fc, }, ), received_events: EventHandle { count: 3137927985190277948, key: EventKey( [ 155, 148, 133, 163, 52, 170, 112, 238, 65, 219, 163, 179, 169, 237, 140, 124, 223, 89, 251, 30, 13, 159, 27, 22, ], ), }, sent_events: EventHandle { count: 7416195372505873652, key: EventKey( [ 48, 28, 237, 108, 235, 234, 155, 58, 219, 6, 16, 137, 176, 98, 235, 141, 88, 40, 153, 36, 84, 160, 249, 222, ], ), }, sequence_number: 3964055218943852414, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6150e3dda735db18306a8807b5aa5209d69b7c704a0a98ac168070d4fd473098): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc014fabc0df5c24f3e29dcdc8bc7e1cce437429eae34eacd4ab34d195c27ff80da5e91d70bba23540af48bac03d937ba46e9cabdbcc1701f4cced1a9a4f6e71b487c900703f59f2edd8ac8d1f0cf6f70be70178407a359bf850e5faab939b21d517d001c733a2b17b87c3b7aedc1e8bec6c420aa58b7fe0ab2a8d541846f15c0aa0edaea7c9613c25c3e401fc9903afa6dde87630e53651cc6e7e535818199b871e7b0ffb25c7ad5c6ada958e7a435e5cc918f470209c78bc72f8677b712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082ac11b30ef5bf3d8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 192, 223, 92, 36, 243, 226, 157, 205, 200, 188, 126, 28, 206, 67, 116, 41, 234, 227, 78, 172, 212, 171, 52, 209, 149, 194, 127, 248, 13, 165, 233, 29, 112, 187, 162, 53, 64, 175, 72, 186, 192, 61, 147, 123, 164, 110, 156, 171, 219, 204, 23, 1, 244, 204, 237, 26, 154, 79, 110, 113, 180, 135, 201, 0, 112, 63, 89, 242, 237, 216, 172, 141, 31, 12, 246, 247, 11, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 78407a359bf850e5faab939b21d517d0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c733a2b17b87c3b7aedc1e8bec6c420a, }, ), received_events: EventHandle { count: 6092572788596378533, key: EventKey( [ 70, 241, 92, 10, 160, 237, 174, 167, 201, 97, 60, 37, 195, 228, 1, 252, 153, 3, 175, 166, 221, 232, 118, 48, ], ), }, sent_events: EventHandle { count: 6364569712744019685, key: EventKey( [ 25, 155, 135, 30, 123, 15, 251, 37, 199, 173, 92, 106, 218, 149, 142, 122, 67, 94, 92, 201, 24, 244, 112, 32, ], ), }, sequence_number: 8177243865195772060, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6365dbf44a8d9f37c2327e2636a87272a76b46426927959d5713259a1d943490): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101242b35f93e8b9dfba5df050d42ce524d72902e9d9d6196d163e1741cee8ef8651018ae65ca00014196bdecc0f66140d4db4b9deda0228ccf8973b44332b81d18d142c9a1d9694433616c3bb4250e9a44f34634f652bbd350dacb2081ef49a74d189fed645bcd26a82d2a7c4d49fb06fe19e6657f1e30f08e3e0666fe4139fc23732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087bc5b858422f6e56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 53, 249, 62, 139, 157, 251, 165, 223, 5, 13, 66, 206, 82, 77, 114, 144, 46, 157, 157, 97, 150, 209, 99, 225, 116, 28, 238, 142, 248, 101, 16, 24, 174, 101, 202, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4196bdecc0f66140d4db4b9deda0228c, }, ), received_events: EventHandle { count: 2141516889186339279, key: EventKey( [ 209, 66, 201, 161, 217, 105, 68, 51, 97, 108, 59, 180, 37, 14, 154, 68, 243, 70, 52, 246, 82, 187, 211, 80, ], ), }, sent_events: EventHandle { count: 5595522355043552218, key: EventKey( [ 159, 237, 100, 91, 205, 38, 168, 45, 42, 124, 77, 73, 251, 6, 254, 25, 230, 101, 127, 30, 48, 240, 142, 62, ], ), }, sequence_number: 8296752261397112326, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(673db5002f0a7b06849b63b974ae146d7c2e46428559b5d28a688b1653fdbc6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7014afc13ae622ffe434adfb3fb0fecd206623e904cc8e413f5920803b5b795efeccf1f410a0d38c89a85a231b1371de39c7350d10d032e7e9c580edca171ceca3c9700dd25059f89a1084102019d3e97ef670a3099744bb0cba35ead300080d07394b436fd2b18663991cb83ace4f48845cb223bd6f598f5b7542a582de7c1cfd55660552bf0101862e6ac40dc785deaab91e5b2170b75550cbfee9f8e1588d7cbca38ed42f16a672101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70885d32c45b9c8973d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 19, 174, 98, 47, 254, 67, 74, 223, 179, 251, 15, 236, 210, 6, 98, 62, 144, 76, 200, 228, 19, 245, 146, 8, 3, 181, 183, 149, 239, 236, 207, 31, 65, 10, 13, 56, 200, 154, 133, 162, 49, 177, 55, 29, 227, 156, 115, 80, 209, 13, 3, 46, 126, 156, 88, 14, 220, 161, 113, 206, 202, 60, 151, 0, 221, 37, 5, 159, 137, 161, 8, 65, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9d3e97ef670a3099744bb0cba35ead30, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3169749861951328384, key: EventKey( [ 102, 57, 145, 203, 131, 172, 228, 244, 136, 69, 203, 34, 59, 214, 245, 152, 245, 183, 84, 42, 88, 45, 231, 193, ], ), }, sent_events: EventHandle { count: 1220523144705922511, key: EventKey( [ 98, 230, 172, 64, 220, 120, 93, 234, 171, 145, 229, 178, 23, 11, 117, 85, 12, 191, 238, 159, 142, 21, 136, 215, ], ), }, sequence_number: 7452033803187964619, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(695799f36303f5e49c42291eb7703fc1836b77256d43ab677a9aeea9dc111956): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984012703a9664574ee3352d1bbc5997b852a3dd3ec8a9ec1f7fcb08c436c1c7cd1ef739ed18a0f7f4fba00013972f234064eb16e948d0c0c6a4d837f720f5814934b22191894394f2a772b2e35c28d82ec3d4ba923ca1122febe9509062952ab94ad0f3f5e187c172621d5781c94b47fe7d4a3d156ba26e6718ade1e17546209353c4936428e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708985cf36ca05986aa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 3, 169, 102, 69, 116, 238, 51, 82, 209, 187, 197, 153, 123, 133, 42, 61, 211, 236, 138, 158, 193, 247, 252, 176, 140, 67, 108, 28, 124, 209, 239, 115, 158, 209, 138, 15, 127, 79, 186, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3972f234064eb16e948d0c0c6a4d837f, }, ), received_events: EventHandle { count: 1811093095229951858, key: EventKey( [ 148, 57, 79, 42, 119, 43, 46, 53, 194, 141, 130, 236, 61, 75, 169, 35, 202, 17, 34, 254, 190, 149, 9, 6, ], ), }, sent_events: EventHandle { count: 6791164001296011817, key: EventKey( [ 124, 23, 38, 33, 213, 120, 28, 148, 180, 127, 231, 212, 163, 209, 86, 186, 38, 230, 113, 138, 222, 30, 23, 84, ], ), }, sequence_number: 10250815390019291490, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c5ee9566aff666375c400bd020021d432cbba97210f246af260d0cde4f85538): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148dabf73e3c48181be37a57d0ffa0ce4e086d1bafce3894a93fba23d0fea02377d1735ab9d58268452c67cb5c804c19fc99cb157bd7816a205263318e93ed06f4ce26d7ebcd1f77c2c01c7c2bb74df5a29c3d254060b45c6fe5400e2c435a842d7812c188d8ff744e33ad7b43724895771eac2e55db28dc97bef27cb7078311dd27b584e187085653ebfbbfe3e0410322b80b24579ac8c551934d821b49ba26a949c74ba552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fe557b0cf3a0392e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 191, 115, 227, 196, 129, 129, 190, 55, 165, 125, 15, 250, 12, 228, 224, 134, 209, 186, 252, 227, 137, 74, 147, 251, 162, 61, 15, 234, 2, 55, 125, 23, 53, 171, 157, 88, 38, 132, 82, 198, 124, 181, 200, 4, 193, 159, 201, 156, 177, 87, 189, 120, 22, 162, 5, 38, 51, 24, 233, 62, 208, 111, 76, 226, 109, 126, 188, 209, 247, 124, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c7c2bb74df5a29c3d254060b45c6fe54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3207081090954413282, key: EventKey( [ 141, 143, 247, 68, 227, 58, 215, 180, 55, 36, 137, 87, 113, 234, 194, 229, 93, 178, 141, 201, 123, 239, 39, 203, ], ), }, sent_events: EventHandle { count: 5645398275272046704, key: EventKey( [ 112, 133, 101, 62, 191, 187, 254, 62, 4, 16, 50, 43, 128, 178, 69, 121, 172, 140, 85, 25, 52, 216, 33, 180, ], ), }, sequence_number: 6177378054745793179, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ec04c75d1b9768b38a6d462b33684a70de1f8ed3a3d6bb4c1726143938f4dcf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965186b808c927cfd6c7d35523bf90fd8eba4aa2f8f1f39c0d4e800008ca9f69b169404291891bad9794a558302ab2249c8d0dc598dc012f0ca85b63067405870d8d452fc07182799a079c861eee700f95b3727329ccb288edc28327a9ffc12b361a0a28e4a3b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e837fe1b18b8cd4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 128, 140, 146, 124, 253, 108, 125, 53, 82, 59, 249, 15, 216, 235, 164, 170, 47, 143, 31, 57, 192, 212, 232, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2955650080288713100, key: EventKey( [ 145, 186, 217, 121, 74, 85, 131, 2, 171, 34, 73, 200, 208, 220, 89, 141, 192, 18, 240, 202, 133, 182, 48, 103, ], ), }, sent_events: EventHandle { count: 575425926514366528, key: EventKey( [ 39, 153, 160, 121, 200, 97, 238, 231, 0, 249, 91, 55, 39, 50, 156, 203, 40, 142, 220, 40, 50, 122, 159, 252, ], ), }, sequence_number: 4272384025640940306, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6f7122cbca2aa92e7a90372d602c806571da56d81631cc65ee0ce3ebcf15da27): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b73278069d6bd5d60e0327df9266ba2216e8cd2005f748bb181f0e1402a464833264ca6bd86eb7db577942adfa6bef3fec9ddb8cd2e5d613a62b2a8382c548638dc3e67745d120d2cb3d042dab65339c30d5726addb697a7d54aa2a00013574e32046154f7425058eb7e72d1942e141afa5ba50797a18a85ff277158316488a9dcc2dce728a371fec04938933e4c4cc8ae4f5ff92245418cc4712b59f4c7b10731b35a4412eb8cdb584dc0301ed77fd9b6a1e9e31cac5882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7d174edc660290c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 39, 128, 105, 214, 189, 93, 96, 224, 50, 125, 249, 38, 107, 162, 33, 110, 140, 210, 0, 95, 116, 139, 177, 129, 240, 225, 64, 42, 70, 72, 51, 38, 76, 166, 189, 134, 235, 125, 181, 119, 148, 42, 223, 166, 190, 243, 254, 201, 221, 184, 205, 46, 93, 97, 58, 98, 178, 168, 56, 44, 84, 134, 56, 220, 62, 103, 116, 93, 18, 13, 44, 179, 208, 66, 218, 182, 83, 57, 195, 13, 87, 38, 173, 219, 105, 122, 125, 84, 170, 42, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3574e32046154f7425058eb7e72d1942, }, ), received_events: EventHandle { count: 8825173707383063009, key: EventKey( [ 168, 95, 242, 119, 21, 131, 22, 72, 138, 157, 204, 45, 206, 114, 138, 55, 31, 236, 4, 147, 137, 51, 228, 196, ], ), }, sent_events: EventHandle { count: 6063132626387241676, key: EventKey( [ 204, 71, 18, 181, 159, 76, 123, 16, 115, 27, 53, 164, 65, 46, 184, 205, 181, 132, 220, 3, 1, 237, 119, 253, ], ), }, sequence_number: 9855505674025200283, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6f8b6bc02e8eb901535ff7b707d7e79ec7419440ecc669709e867c69ca99820f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50158defa6e5dccb8433c32a339011ee395f7cd4ed15a9b1abbe4b367f190dcb6293fb5ba35bd9a711b9e4754ba3e6add32fc280c742b9f2ca6743b5f1803bfba3b9eb72940e5914083fb4f7c8cb39be70dc9ab84b773d8239a5a000181cb4ac269bbe173b98d701243279ae7d7e7447272eca81e18cfe9557a468fb790118bede2cea2f86967d88a53db97405f9e109df4a97f912b18c8b36f33d393fd6ca42c1f7eeb06a3385cd5799dff1ce68ddb4137f6faf2dba82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed75e2f61e5adf23 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 222, 250, 110, 93, 204, 184, 67, 60, 50, 163, 57, 1, 30, 227, 149, 247, 205, 78, 209, 90, 155, 26, 187, 228, 179, 103, 241, 144, 220, 182, 41, 63, 181, 186, 53, 189, 154, 113, 27, 158, 71, 84, 186, 62, 106, 221, 50, 252, 40, 12, 116, 43, 159, 44, 166, 116, 59, 95, 24, 3, 191, 186, 59, 158, 183, 41, 64, 229, 145, 64, 131, 251, 79, 124, 140, 179, 155, 231, 13, 201, 171, 132, 183, 115, 216, 35, 154, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 81cb4ac269bbe173b98d701243279ae7, }, ), received_events: EventHandle { count: 2209275593512773591, key: EventKey( [ 207, 233, 85, 122, 70, 143, 183, 144, 17, 139, 237, 226, 206, 162, 248, 105, 103, 216, 138, 83, 219, 151, 64, 95, ], ), }, sent_events: EventHandle { count: 3139430783184081054, key: EventKey( [ 200, 179, 111, 51, 211, 147, 253, 108, 164, 44, 31, 126, 235, 6, 163, 56, 92, 213, 121, 157, 255, 28, 230, 141, ], ), }, sequence_number: 12167585977958089179, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(740c529117f776ab89163d34da8401de6f7858d50e7d1c4d8a5f6705e40d44d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0dbcba2d8bd4b58de07cadb7ec1001a43516a8427e751c95e7a334b6b9c7fa016a832a4fd43a4280c3102261e136421b324559d39f96cc67183cdb355b4e73cbd89e58813ff9233c54ab0fdbb97890246dac33a186d8df867a185ecf05e2eb46d51baf5b9ffabf9b86034112594329f22fd3a934f6322fa380a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a975102120e957fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 186, 45, 139, 212, 181, 141, 224, 124, 173, 183, 236, 16, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a43516a8427e751c95e7a334b6b9c7fa, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6a832a4fd43a4280c3102261e136421b, }, ), received_events: EventHandle { count: 7479518694345360690, key: EventKey( [ 60, 219, 53, 91, 78, 115, 203, 216, 158, 88, 129, 63, 249, 35, 60, 84, 171, 15, 219, 185, 120, 144, 36, 109, ], ), }, sent_events: EventHandle { count: 8828990240571077548, key: EventKey( [ 94, 207, 5, 226, 235, 70, 213, 27, 175, 91, 159, 250, 191, 155, 134, 3, 65, 18, 89, 67, 41, 242, 47, 211, ], ), }, sequence_number: 11853653642352932009, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7446d973db260bfb04814741e449200418018e57c9ed6537d37be4c0da555a35): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501284bd61553f414510c60a15c89866e18f7bc61e072d3723bad9c8b6a4442733daf64c1fb0ba9c100ef01c1beec142a18b641de60e54d9a35b34b00562b2038c3049b41189a52e564043dfe854c4fccd9a260949b910a78461ed1be5e6478be541a67985d1888fd638e89d6b28fb5aebce4d94d39a0d1120f32a6714d119927545569ce20e62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878f1749e023e4a8a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 214, 21, 83, 244, 20, 81, 12, 96, 161, 92, 137, 134, 110, 24, 247, 188, 97, 224, 114, 211, 114, 59, 173, 156, 139, 106, 68, 66, 115, 61, 175, 100, 193, 251, 11, 169, 193, 0, 239, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c1beec142a18b641de60e54d9a35b34b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4727377470362233686, key: EventKey( [ 154, 82, 229, 100, 4, 61, 254, 133, 76, 79, 204, 217, 162, 96, 148, 155, 145, 10, 120, 70, 30, 209, 190, 94, ], ), }, sent_events: EventHandle { count: 6744253804775897188, key: EventKey( [ 136, 253, 99, 142, 137, 214, 178, 143, 181, 174, 188, 228, 217, 77, 57, 160, 209, 18, 15, 50, 166, 113, 77, 17, ], ), }, sequence_number: 16582480779776632729, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(76f066569d98289f17c169bf2a7a2489bd51641f20052d408adc81e4a213ed1c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb0d4759eca092d771bcba3cf3c59880a7df62a77a23c38456f049e744807767ee090512389cdeb9a943f3ef2f1760001e873f59758ef359ffa3db83f634b89ba63b8aaa04ac8322f186c2bee68433f066fd27666cde661e1cc9ccb907ffc1ca5826d54dd13aec41c3618d29a63164cf31048aa764da358f5c36b0991a0c73ce5c8e6227e349ffd0765ca2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083068b21068611c90 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 176, 212, 117, 158, 202, 9, 45, 119, 27, 203, 163, 207, 60, 89, 136, 10, 125, 246, 42, 119, 162, 60, 56, 69, 111, 4, 158, 116, 72, 7, 118, 126, 224, 144, 81, 35, 137, 205, 235, 154, 148, 63, 62, 242, 241, 118, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e873f59758ef359ffa3db83f634b89ba, }, ), received_events: EventHandle { count: 3401000891466823779, key: EventKey( [ 108, 43, 238, 104, 67, 63, 6, 111, 210, 118, 102, 205, 230, 97, 225, 204, 156, 203, 144, 127, 252, 28, 165, 130, ], ), }, sent_events: EventHandle { count: 3899207629332632685, key: EventKey( [ 210, 154, 99, 22, 76, 243, 16, 72, 170, 118, 77, 163, 88, 245, 195, 107, 9, 145, 160, 199, 60, 229, 200, 230, ], ), }, sequence_number: 14584071754188357154, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(76f18aee162920c55e3cbafbf877eda8ce84213d00345639c04c82f820e423b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1da48045afd638d183862ebb6555646c9a9e06f918b83c351f4f6d7ab3fa00001dc63fdcb9cc070a18324d11bfe6a1a26583460a70f689da4b559d1a1dc8fb517cb1b9cd6a53d3ce1418eb87945366733944e4f85391143583bb77bb669630b845eadf2eef16a097877f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b7264253897658f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 128, 69, 175, 214, 56, 209, 131, 134, 46, 187, 101, 85, 100, 108, 154, 158, 6, 249, 24, 184, 60, 53, 31, 79, 109, 122, 179, 250, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 722771363852437021, key: EventKey( [ 50, 77, 17, 191, 230, 161, 162, 101, 131, 70, 10, 112, 246, 137, 218, 75, 85, 157, 26, 29, 200, 251, 81, 124, ], ), }, sent_events: EventHandle { count: 1499368081188567473, key: EventKey( [ 235, 135, 148, 83, 102, 115, 57, 68, 228, 248, 83, 145, 20, 53, 131, 187, 119, 187, 102, 150, 48, 184, 69, 234, ], ), }, sequence_number: 9189480278508121823, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(77d74fc4d1f23352bce07078ca8c2668fb1ea4404fadfbc3ef65b73c4921aa88): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152d8e74758f4d59f2dc89b458692a08cd45399126d44ac5b49a37ceda29a849ac8a8e3cbe01c9666b9b5eca61fc6a0b1185fd166ff001149a182ca1a7d3b3a244081c0dfe0fbbd9c578346e0cf03df618552c401753e18a7e38e9878994cedf62fc0893d0040d81d3f19390d7418b1abb2c81d4ba61dd5713e51c545a4d53d1cf0a6284b578178cb6306d5381f5118609eec1f59ab064614b35c7325546a1d3e8e4e4b4bc0bf164561cf92e03381042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e623a13b47cd12f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 231, 71, 88, 244, 213, 159, 45, 200, 155, 69, 134, 146, 160, 140, 212, 83, 153, 18, 109, 68, 172, 91, 73, 163, 124, 237, 162, 154, 132, 154, 200, 168, 227, 203, 224, 28, 150, 102, 185, 181, 236, 166, 31, 198, 160, 177, 24, 95, 209, 102, 255, 0, 17, 73, 161, 130, 202, 26, 125, 59, 58, 36, 64, 129, 192, 223, 224, 251, 189, 156, 87, 131, 70, 224, 207, 3, 223, 97, 133, 82, 196, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 753e18a7e38e9878994cedf62fc0893d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8362402863692765248, key: EventKey( [ 177, 171, 178, 200, 29, 75, 166, 29, 213, 113, 62, 81, 197, 69, 164, 213, 61, 28, 240, 166, 40, 75, 87, 129, ], ), }, sent_events: EventHandle { count: 5845453328936586104, key: EventKey( [ 96, 158, 236, 31, 89, 171, 6, 70, 20, 179, 92, 115, 37, 84, 106, 29, 62, 142, 78, 75, 75, 192, 191, 22, ], ), }, sequence_number: 324597687776141637, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(78ead423aa0c7005c9851a320738771e272fbc8ec5029d64ad1e06f20a5c005b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c990014382bfc797c4b1a813507905f348897ac5ee9c496a1c469a85a29294c3b45a6c1a3d33bbc55d0ffd29ac3310bea74f684e3128fcb996393628f33f8c8b1eb86bd7f11774000063bf919a9579614418a838796a95a7b963f7666e818512088106328c784b84c464e1db7c11839d530818fccf981e0c3a14ecb2d2e7b221ac738f963b2eee829f0264caf0411bd3a3f5b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708205991889d6676e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 191, 199, 151, 196, 177, 168, 19, 80, 121, 5, 243, 72, 137, 122, 197, 238, 156, 73, 106, 28, 70, 154, 133, 162, 146, 148, 195, 180, 90, 108, 26, 61, 51, 187, 197, 93, 15, 253, 41, 172, 51, 16, 190, 167, 79, 104, 78, 49, 40, 252, 185, 150, 57, 54, 40, 243, 63, 140, 139, 30, 184, 107, 215, 241, 23, 116, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4927353150770364259, key: EventKey( [ 168, 56, 121, 106, 149, 167, 185, 99, 247, 102, 110, 129, 133, 18, 8, 129, 6, 50, 140, 120, 75, 132, 196, 100, ], ), }, sent_events: EventHandle { count: 599996361630079969, key: EventKey( [ 252, 207, 152, 30, 12, 58, 20, 236, 178, 210, 231, 178, 33, 172, 115, 143, 150, 59, 46, 238, 130, 159, 2, 100, ], ), }, sequence_number: 13255681205325656266, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e2363d5c9904cd6ab56138226f5df15adf9455962188bda346bdf16afe49937): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001333d8f99533f495377edc563f2ec53ad22854798ed78ac1868f75bb929548b1dc2cbcfefbe906bd74159252a9528c468f196ac3f016b1901800cddc5034f6d451e5723d9460123c7ba98c10866e6c784ea5fbae7cc9280f7fe30c4e59855181b2f3a14cbd5f7caf6dcb956b49229cac39fa0f2c4600426733de9016daed80318bc73ff31793cf354eae9681a22d9c4ca7d82df6829df37cd25b5c4d6c3b710b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817986136a7309c29 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 143, 153, 83, 63, 73, 83, 119, 237, 197, 99, 242, 236, 83, 173, 34, 133, 71, 152, 237, 120, 172, 24, 104, 247, 91, 185, 41, 84, 139, 29, 194, 203, 207, 239, 190, 144, 107, 215, 65, 89, 37, 42, 149, 40, 196, 104, 241, 150, 172, 63, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6b1901800cddc5034f6d451e5723d946, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 23c7ba98c10866e6c784ea5fbae7cc92, }, ), received_events: EventHandle { count: 6167932320482260864, key: EventKey( [ 27, 47, 58, 20, 203, 213, 247, 202, 246, 220, 185, 86, 180, 146, 41, 202, 195, 159, 160, 242, 196, 96, 4, 38, ], ), }, sent_events: EventHandle { count: 277163160290016627, key: EventKey( [ 188, 115, 255, 49, 121, 60, 243, 84, 234, 233, 104, 26, 34, 217, 196, 202, 125, 130, 223, 104, 41, 223, 55, 205, ], ), }, sequence_number: 12758899796090336549, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f3ce5353a8adedb7f80c06e0f08dee1ca39a03dc9f4e04fa3acec51677698c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012badb7fccab15110b7e213e482b27d19b7e4b9d93aad6c270acb2ec822ff3a8cfb22cbc666afd5b09531163f015ad0fe90363a029b16b28508a3aef6a501430da987dff877865252b039deb3fb381eb29b479c40bf7d18775af35a5f32ab8673a2e0c8cea8696aa50de6d00e44991df399ce0847601e561884685f4a4fc5df422f3d7e6c805ff32252864c2c056f803d23ccc23215ed38562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bd6b7c59a39de1f8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 183, 252, 202, 177, 81, 16, 183, 226, 19, 228, 130, 178, 125, 25, 183, 228, 185, 217, 58, 173, 108, 39, 10, 203, 46, 200, 34, 255, 58, 140, 251, 34, 203, 198, 102, 175, 213, 176, 149, 49, 22, 63, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ad0fe90363a029b16b28508a3aef6a5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 430da987dff877865252b039deb3fb38, }, ), received_events: EventHandle { count: 9061032015253189150, key: EventKey( [ 119, 90, 243, 90, 95, 50, 171, 134, 115, 162, 224, 200, 206, 168, 105, 106, 165, 13, 230, 208, 14, 68, 153, 29, ], ), }, sent_events: EventHandle { count: 6205503194769824243, key: EventKey( [ 132, 104, 95, 74, 79, 197, 223, 66, 47, 61, 126, 108, 128, 95, 243, 34, 82, 134, 76, 44, 5, 111, 128, 61, ], ), }, sequence_number: 6212976361259322403, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80e9044ae7c5abee956384567060876f56958f9674c031b4c1d0896a3a2bcea1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011f9dfb10540d8fefba0dd8ba24b16c0708ba972df9d26e7f7279de1d830a1373012673d51f2bbafa5c55af94afd8915d2b01b2312dab9007620a5447dffa9b564f6fb132e3503cf8f21f18f0748df111e60099e955d97e2e47d472ea990481453edaa14fcb9aa9420619091886cb7383e61a3b7d6580605af9d01f07de40d8834e0ff96ad36e19ae0d2f21eb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70865a835b7b96f4fa4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 251, 16, 84, 13, 143, 239, 186, 13, 216, 186, 36, 177, 108, 7, 8, 186, 151, 45, 249, 210, 110, 127, 114, 121, 222, 29, 131, 10, 19, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2673d51f2bbafa5c55af94afd8915d2b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2312dab9007620a5447dffa9b564f6f, }, ), received_events: EventHandle { count: 2302175297478537905, key: EventKey( [ 240, 116, 141, 241, 17, 230, 0, 153, 233, 85, 217, 126, 46, 71, 212, 114, 234, 153, 4, 129, 69, 62, 218, 161, ], ), }, sent_events: EventHandle { count: 655562104142220111, key: EventKey( [ 134, 203, 115, 131, 230, 26, 59, 125, 101, 128, 96, 90, 249, 208, 31, 7, 222, 64, 216, 131, 78, 15, 249, 106, ], ), }, sequence_number: 16942875008946499283, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(817114f5e2e2b943a2ba4ad2948185a8134ec1eae16f4040852766475d349c9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0140ae5b6be40a322c38be0b00a8edc871d865b3f0bfdc7ba9ad812a4d14bb45f9924c343b7ab94e35e436a2b72f37dc365a3ba1e2a4cbf9656cf7d9e409f603787f00000bda3742540e4b3d188e83f65e8dacf03cd6b0e4d6f5901c2f45ad7d6384c6332ec0ffd47b223c077118b63946600fdb068ef2361defe91a30cd6af23dd05a5e7cd331f800c7c9e197862101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b55502dff8455b3d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 91, 107, 228, 10, 50, 44, 56, 190, 11, 0, 168, 237, 200, 113, 216, 101, 179, 240, 191, 220, 123, 169, 173, 129, 42, 77, 20, 187, 69, 249, 146, 76, 52, 59, 122, 185, 78, 53, 228, 54, 162, 183, 47, 55, 220, 54, 90, 59, 161, 226, 164, 203, 249, 101, 108, 247, 217, 228, 9, 246, 3, 120, 127, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4416639614617901579, key: EventKey( [ 142, 131, 246, 94, 141, 172, 240, 60, 214, 176, 228, 214, 245, 144, 28, 47, 69, 173, 125, 99, 132, 198, 51, 46, ], ), }, sent_events: EventHandle { count: 8144544569926942656, key: EventKey( [ 182, 57, 70, 96, 15, 219, 6, 142, 242, 54, 29, 239, 233, 26, 48, 205, 106, 242, 61, 208, 90, 94, 124, 211, ], ), }, sequence_number: 9698468579309058097, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(82df1c5ca1c763a0a1cbada9b9621f9f339d73a9c7546812224a8e4e4eb8b1eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa015dd11184d7a061bd415865cc5e990389aef6cd0b0f9375a65953aba5a9a9be04cbcbb422fd3b9bc85107a85ac0c96321f785c673688e03c9fcb5ec9019a1142df63e7fe5e67ecc92c672c5681c051510775878b5b66a4fd105003bd88bab0000797c8b8eca4a3e521862014f9f1cc065c21532034e293fe933ed6f490166574a5d5186bfc82865f14a184a4a9da892c5a19ef9c126bf1ba3ad53bcfea9fb4673e957bd7965fa49da90bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70811e74220fa2ff397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 209, 17, 132, 215, 160, 97, 189, 65, 88, 101, 204, 94, 153, 3, 137, 174, 246, 205, 11, 15, 147, 117, 166, 89, 83, 171, 165, 169, 169, 190, 4, 203, 203, 180, 34, 253, 59, 155, 200, 81, 7, 168, 90, 192, 201, 99, 33, 247, 133, 198, 115, 104, 142, 3, 201, 252, 181, 236, 144, 25, 161, 20, 45, 246, 62, 127, 229, 230, 126, 204, 146, 198, 114, 197, 104, 28, 5, 21, 16, 119, 88, 120, 181, 182, 106, 79, 209, 5, 0, 59, 216, 139, 171, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5926256393501506681, key: EventKey( [ 98, 1, 79, 159, 28, 192, 101, 194, 21, 50, 3, 78, 41, 63, 233, 51, 237, 111, 73, 1, 102, 87, 74, 93, ], ), }, sent_events: EventHandle { count: 5400208654035027537, key: EventKey( [ 74, 74, 157, 168, 146, 197, 161, 158, 249, 193, 38, 191, 27, 163, 173, 83, 188, 254, 169, 251, 70, 115, 233, 87, ], ), }, sequence_number: 13515542493007280573, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(833106f009c4de41e3f78023aa743de433046da71d6eded83a0aaa465cd7e022): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c989012c27c3ff8af9a1334779ead1a6060cb62a042a33777ae11b84659a5e50e3bdbfbe7d86d1e9617d8888099832e20105f89fc824309f9caf7345a9037fb7c10006a1b2f0beab594918ffa6a8a839ba556e4e77d2e7f0cc4a1ab274be0afa812f51e79caad5c5b4cc4118565f60deb5781374593e7cd35dca808195ea9822257c0f18250e37950cdebd472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70840aeae644d6655b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 195, 255, 138, 249, 161, 51, 71, 121, 234, 209, 166, 6, 12, 182, 42, 4, 42, 51, 119, 122, 225, 27, 132, 101, 154, 94, 80, 227, 189, 191, 190, 125, 134, 209, 233, 97, 125, 136, 136, 9, 152, 50, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 05f89fc824309f9caf7345a9037fb7c1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5285444474266362118, key: EventKey( [ 255, 166, 168, 168, 57, 186, 85, 110, 78, 119, 210, 231, 240, 204, 74, 26, 178, 116, 190, 10, 250, 129, 47, 81, ], ), }, sent_events: EventHandle { count: 4741363269500574951, key: EventKey( [ 86, 95, 96, 222, 181, 120, 19, 116, 89, 62, 124, 211, 93, 202, 128, 129, 149, 234, 152, 34, 37, 124, 15, 24, ], ), }, sequence_number: 5169532092915584549, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(837d0ef38bb93b7afa0f97276fd54b2c4766c6a87da32d1f6f31866c49c377ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015da5a6632159ed10e5435fbd85b1b39940ba49afd69d4997345417223b2d1092086fd5bc014a5b60cb4a7d1e58f3eabc4bffd86c4df94067615fa61c3ec19dd39b4ae02c830accace5d7a42adc20b2b31c7818f24b0a05b0fa6f5af6ca98012f6428384080b71010279714d798c88900ad6b56ad0ecc416a1841b5303f3ac02408c0820bcb7b23014ec83aea75eac59bf539451ef6a4060344180027171256c9b0c603008741e183d99d369f38d941b327cce83eee13695ca70b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080b8870c794d33219 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 166, 99, 33, 89, 237, 16, 229, 67, 95, 189, 133, 177, 179, 153, 64, 186, 73, 175, 214, 157, 73, 151, 52, 84, 23, 34, 59, 45, 16, 146, 8, 111, 213, 188, 1, 74, 91, 96, 203, 74, 125, 30, 88, 243, 234, 188, 75, 255, 216, 108, 77, 249, 64, 103, 97, 95, 166, 28, 62, 193, 157, 211, 155, 74, 224, 44, 131, 10, 204, 172, 229, 215, 164, 42, 220, 32, 178, 179, 28, 120, 24, 242, 75, 10, 5, 176, 250, 111, 90, 246, 202, 152, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2f6428384080b71010279714d798c889, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7656625204916284333, key: EventKey( [ 65, 181, 48, 63, 58, 192, 36, 8, 192, 130, 11, 203, 123, 35, 1, 78, 200, 58, 234, 117, 234, 197, 155, 245, ], ), }, sent_events: EventHandle { count: 4900768125082813753, key: EventKey( [ 0, 39, 23, 18, 86, 201, 176, 198, 3, 0, 135, 65, 225, 131, 217, 157, 54, 159, 56, 217, 65, 179, 39, 204, ], ), }, sequence_number: 839741461903589096, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(843bee7ce752ed017ce6b013f9ae0f68540800459dfe56aa3a0ed40365bd064e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b87d90dc9be3772469f1f8f33bedce686e536b6468770ef74a753fa00017b417304a434f58fdddf70a6b11c8a0c6c327510ac6c486418353f18834180af34b751af9977a39a7ec5ec0924c627d105ff10e544da2577181847781beda9ce927209915f4920d16392420ed20ee8037b5178979616624bf04b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8f3825f67dc6b25 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 217, 13, 201, 190, 55, 114, 70, 159, 31, 143, 51, 190, 220, 230, 134, 229, 54, 182, 70, 135, 112, 239, 116, 167, 83, 250, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b417304a434f58fdddf70a6b11c8a0c, }, ), received_events: EventHandle { count: 7226145088382251628, key: EventKey( [ 53, 63, 24, 131, 65, 128, 175, 52, 183, 81, 175, 153, 119, 163, 154, 126, 197, 236, 9, 36, 198, 39, 209, 5, ], ), }, sent_events: EventHandle { count: 1762919398527799551, key: EventKey( [ 71, 120, 27, 237, 169, 206, 146, 114, 9, 145, 95, 73, 32, 209, 99, 146, 66, 14, 210, 14, 232, 3, 123, 81, ], ), }, sequence_number: 5471956431912998776, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(866e00437f3c70391603cd3b3d85ea5dbc0d5f1b1cf9dc988cd401588b5ba2d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30146248d6bcba9c5881e150c6cb2355463db0a7b22552310b5d121a6ab7ae6f06157c266d07cd6099a87e027175b752536bc39441304645185c0fda868021cb194dc301e3626cde701539e77105a4c08ef868b0324fa2aba4a015cd70871d1ff3432fd0d55bf063d0f7d2ef4eb7664f3cc5a186cca92ee942de5d30bfbb853e65708128836fc9d4ca837109b58784e0cf36e581809ccff82b06de46f8cfa1144084c0a2b2a5781bf170a04b38f8238df077d1ca02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70871e4f3453808dd7b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 141, 107, 203, 169, 197, 136, 30, 21, 12, 108, 178, 53, 84, 99, 219, 10, 123, 34, 85, 35, 16, 181, 209, 33, 166, 171, 122, 230, 240, 97, 87, 194, 102, 208, 124, 214, 9, 154, 135, 224, 39, 23, 91, 117, 37, 54, 188, 57, 68, 19, 4, 100, 81, 133, 192, 253, 168, 104, 2, 28, 177, 148, 220, 48, 30, 54, 38, 205, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 539e77105a4c08ef868b0324fa2aba4a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5cd70871d1ff3432fd0d55bf063d0f7d, }, ), received_events: EventHandle { count: 6542871971479942190, key: EventKey( [ 108, 202, 146, 238, 148, 45, 229, 211, 11, 251, 184, 83, 230, 87, 8, 18, 136, 54, 252, 157, 76, 168, 55, 16, ], ), }, sent_events: EventHandle { count: 6372297756957497499, key: EventKey( [ 9, 204, 255, 130, 176, 109, 228, 111, 140, 250, 17, 68, 8, 76, 10, 43, 42, 87, 129, 191, 23, 10, 4, 179, ], ), }, sequence_number: 11537233818179633807, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(882f4a6f5609975010ea1cab54c31fe3b4723bff2c3925c17471c414b36dad21): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9be01511a372b0b486f67b5dddf8012a87b4cdba5927417ab9ee1cb2336cb3679e6389720fb8c0ca773eceeef35a15be7e57e4a3c5e3bcf5a6e68039079a5ab6750aca669ae677caf9793d90f6f9a88914366eee6014d1e7bdfff2377503343267d18f7ba7d0110846b33e6caffa5da8dcaaae13fe215e1126d95d064341c18ee585b81b90a06f04d1279b07372a4430af22bf085def57c971580877d59d46218838eb9a37eda568ed25d3d663063da4cebd81ef75495e93b4db9145e170186c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080345a3de34aee842 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 55, 43, 11, 72, 111, 103, 181, 221, 223, 128, 18, 168, 123, 76, 219, 165, 146, 116, 23, 171, 158, 225, 203, 35, 54, 203, 54, 121, 230, 56, 151, 32, 251, 140, 12, 167, 115, 236, 238, 239, 53, 161, 91, 231, 229, 126, 74, 60, 94, 59, 207, 90, 110, 104, 3, 144, 121, 165, 171, 103, 80, 172, 166, 105, 174, 103, 124, 175, 151, 147, 217, 15, 111, 154, 136, 145, 67, 102, 238, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4d1e7bdfff2377503343267d18f7ba7d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 10846b33e6caffa5da8dcaaae13fe215, }, ), received_events: EventHandle { count: 2032360178873864929, key: EventKey( [ 238, 88, 91, 129, 185, 10, 6, 240, 77, 18, 121, 176, 115, 114, 164, 67, 10, 242, 43, 240, 133, 222, 245, 124, ], ), }, sent_events: EventHandle { count: 7121415306458699159, key: EventKey( [ 131, 142, 185, 163, 126, 218, 86, 142, 210, 93, 61, 102, 48, 99, 218, 76, 235, 216, 30, 247, 84, 149, 233, 59, ], ), }, sequence_number: 14016892090111539533, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(887342051a54a37092d8e18a2d0eb924c9499fb22b429861cf2e6600c56346d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd015056859f06a148d05c2ca74c92217a139eed26568d76bef643de37b7bf0c85d96983cdedebfd7ba3629148415f43da146380e739d683dfff3820f24d634606724493929235a0007791265ccb581eda85bd01b4a1b884fd91ad9c2a8cc23c21c384fb014dda7abfec6d1385e18a8d7a6dbe729803c2a4e324c36a391862513197ba8ee9441fac7e62b97c1b7a1c9b37ece068af61b43bf9feedb1cf2a1893151c088501daea74adb1881d1b15436ad4392c2c43ceda19e9444e2b77a7492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708677e6afacb98dccc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 86, 133, 159, 6, 161, 72, 208, 92, 44, 167, 76, 146, 33, 122, 19, 158, 237, 38, 86, 141, 118, 190, 246, 67, 222, 55, 183, 191, 12, 133, 217, 105, 131, 205, 237, 235, 253, 123, 163, 98, 145, 72, 65, 95, 67, 218, 20, 99, 128, 231, 57, 214, 131, 223, 255, 56, 32, 242, 77, 99, 70, 6, 114, 68, 147, 146, 146, 53, 160, 0, 119, 145, 38, 92, 203, 88, 30, 218, 133, 189, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b4a1b884fd91ad9c2a8cc23c21c384fb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4dda7abfec6d1385e18a8d7a6dbe7298, }, ), received_events: EventHandle { count: 4137333770898686467, key: EventKey( [ 98, 81, 49, 151, 186, 142, 233, 68, 31, 172, 126, 98, 185, 124, 27, 122, 28, 155, 55, 236, 224, 104, 175, 97, ], ), }, sent_events: EventHandle { count: 3084879905515191220, key: EventKey( [ 147, 21, 28, 8, 133, 1, 218, 234, 116, 173, 177, 136, 29, 27, 21, 67, 106, 212, 57, 44, 44, 67, 206, 218, ], ), }, sequence_number: 5307341713759856921, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(894e32dfdc3d71f50d154fee88627b1b0d2302026922a93e4197763ecb82e590): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160232b2c1904f0d5c8e92a8b25bdb35bb39ecc4292474ff0b2b09df4a5fa59934b0a01d7443a713b7f76e3dbb4c87d5b5923aa3cb2ec34b6069d8f5d865dc7abba4d3f6d879a5b59f34ee5908e7d031c8a812b5acd8f03024ef5081e5df127f4fa01f23cabbff4c46df2191abd6d3bba008d0037e04a5259ad3254184d3d44dc566e78fd08b15a048418001bab05cb4877b5aae8359438d7cf86bf521886e71378e74473be4f789ac054db2da46ca7974899fbc336066eb094f7bc1a552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800d186344a8a38f3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 43, 44, 25, 4, 240, 213, 200, 233, 42, 139, 37, 189, 179, 91, 179, 158, 204, 66, 146, 71, 79, 240, 178, 176, 157, 244, 165, 250, 89, 147, 75, 10, 1, 215, 68, 58, 113, 59, 127, 118, 227, 219, 180, 200, 125, 91, 89, 35, 170, 60, 178, 236, 52, 182, 6, 157, 143, 93, 134, 93, 199, 171, 186, 77, 63, 109, 135, 154, 91, 89, 243, 78, 229, 144, 142, 125, 3, 28, 138, 129, 43, 90, 205, 143, 3, 2, 78, 245, 8, 30, 93, 241, 39, 244, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f23cabbff4c46df2191abd6d3bba008d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6067102247165812791, key: EventKey( [ 77, 61, 68, 220, 86, 110, 120, 253, 8, 177, 90, 4, 132, 24, 0, 27, 171, 5, 203, 72, 119, 181, 170, 232, ], ), }, sent_events: EventHandle { count: 5962632658888987701, key: EventKey( [ 134, 231, 19, 120, 231, 68, 115, 190, 79, 120, 154, 192, 84, 219, 45, 164, 108, 167, 151, 72, 153, 251, 195, 54, ], ), }, sequence_number: 6132421614155886086, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8953a81e90ae478e42251a32b8423b8112f46bc07c55f3acb6682db5f97d5736): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950034229e80000cf3f6b933cc05626186cc85e3f15cad1aca06dd4e214cb48dd1d44d03bff7f55c25d173f14882fad2e1899f78953224c283ec67c0065f78d723bddd72f010f8fc6f48f4f8da9763cde252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d66a6e2f436f10 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 41, 232, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2762606787842228175, key: EventKey( [ 108, 200, 94, 63, 21, 202, 209, 172, 160, 109, 212, 226, 20, 203, 72, 221, 29, 68, 208, 59, 255, 127, 85, 194, ], ), }, sent_events: EventHandle { count: 3363396758217365341, key: EventKey( [ 153, 247, 137, 83, 34, 76, 40, 62, 198, 124, 0, 101, 247, 141, 114, 59, 221, 215, 47, 1, 15, 143, 198, 244, ], ), }, sequence_number: 2728684904581517199, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b697b0aaf7c19ea6810875724debae315f4fd6d81e7514a3dbdc053ff1b46df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015c9bdd1707bc4d69fc343268a655139306d08d33547b7958fe6c5bd85ecac474096d8089b5b69671828c794525704b8bcf8d33848317d3ac198898fb26395db9b5f262ac6a493ae4028cc72223f3f31e4dcfcb531eed6692625d0a526b01707d62a7d7588c205376926fac7204f500820c2576d384a71118ba88c08f0f98e37e4bb4718c2132a4300e33a6ed6e8329cf9a0c546d6037407e181be82a444386ee3c10fecbcd14faa462a008ec1c498e5093ae292413b138d9412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708665f066897aa53fd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 221, 23, 7, 188, 77, 105, 252, 52, 50, 104, 166, 85, 19, 147, 6, 208, 141, 51, 84, 123, 121, 88, 254, 108, 91, 216, 94, 202, 196, 116, 9, 109, 128, 137, 181, 182, 150, 113, 130, 140, 121, 69, 37, 112, 75, 139, 207, 141, 51, 132, 131, 23, 211, 172, 25, 136, 152, 251, 38, 57, 93, 185, 181, 242, 98, 172, 106, 73, 58, 228, 2, 140, 199, 34, 35, 243, 243, 30, 77, 207, 203, 83, 30, 237, 102, 146, 98, 93, 10, 82, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 707d62a7d7588c205376926fac7204f5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1272131463510559874, key: EventKey( [ 186, 136, 192, 143, 15, 152, 227, 126, 75, 180, 113, 140, 33, 50, 164, 48, 14, 51, 166, 237, 110, 131, 41, 207, ], ), }, sent_events: EventHandle { count: 9097332134579014810, key: EventKey( [ 27, 232, 42, 68, 67, 134, 238, 60, 16, 254, 203, 205, 20, 250, 164, 98, 160, 8, 236, 28, 73, 142, 80, 147, ], ), }, sequence_number: 4744886015593032110, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8c94f834093bfb0668f98c86f56511ee84a3c2b2f725fb094d2355bca457d3b6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01204195650d5f6ec30cac8a8e313c3e17bea10c6c5f2eca4ad68def5d8fb7c55e22018cc7fcb7bdb4aaebff2abbf0d4c177a7013a8f2a14ac0425124d63f0e1f2ba126a60fb2db23dc8856218d8aa674b6bc3405b69f4838ef6d0516f3be6fdb2e287c6355ef907a17a214b6218ba9232f1f9eb98f7562168a4a2548747b614f55ca36a18c5d8080977ba822a7e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8dc47b35ab1408c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 149, 101, 13, 95, 110, 195, 12, 172, 138, 142, 49, 60, 62, 23, 190, 161, 12, 108, 95, 46, 202, 74, 214, 141, 239, 93, 143, 183, 197, 94, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8cc7fcb7bdb4aaebff2abbf0d4c177a7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3a8f2a14ac0425124d63f0e1f2ba126a, }, ), received_events: EventHandle { count: 7099300554927373152, key: EventKey( [ 216, 170, 103, 75, 107, 195, 64, 91, 105, 244, 131, 142, 246, 208, 81, 111, 59, 230, 253, 178, 226, 135, 198, 53, ], ), }, sent_events: EventHandle { count: 7082791649541618014, key: EventKey( [ 186, 146, 50, 241, 249, 235, 152, 247, 86, 33, 104, 164, 162, 84, 135, 71, 182, 20, 245, 92, 163, 106, 24, 197, ], ), }, sequence_number: 9091222535173376216, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d14fde7339b0667f1bf44249bb9734fd63a300f201ea475c3145ac66c9cf8fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b98dd8a3b5612586a6834920e287f2771fcdbbe949de56b2b808e45ea9cee3aadccc639433f18a8c6c9392b178e771d1fd8d7de64b0472817b7fea4ce197b54e317457738e0fc2c63a99dab0124e5c9ac0d8a5bcbe2293143bfeab6c801ba39fd7cb66156c0c7d70c5410026b1790f5f52324e1011918aeab1f6222fde3a943c0d094c73696d088c0e8fe7d45a8e1c8f70b88c66b763818dbf7a07a3625b615ba78cf81ba3fc8fbab198e62ba25eff9b5203b94aaeb1b112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708de500ab9efa3f36f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 221, 138, 59, 86, 18, 88, 106, 104, 52, 146, 14, 40, 127, 39, 113, 252, 219, 190, 148, 157, 229, 107, 43, 128, 142, 69, 234, 156, 238, 58, 173, 204, 198, 57, 67, 63, 24, 168, 198, 201, 57, 43, 23, 142, 119, 29, 31, 216, 215, 222, 100, 176, 71, 40, 23, 183, 254, 164, 206, 25, 123, 84, 227, 23, 69, 119, 56, 224, 252, 44, 99, 169, 157, 171, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24e5c9ac0d8a5bcbe2293143bfeab6c8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ba39fd7cb66156c0c7d70c5410026b17, }, ), received_events: EventHandle { count: 1801968871263303056, key: EventKey( [ 174, 171, 31, 98, 34, 253, 227, 169, 67, 192, 208, 148, 199, 54, 150, 208, 136, 192, 232, 254, 125, 69, 168, 225, ], ), }, sent_events: EventHandle { count: 4068557813806004168, key: EventKey( [ 219, 247, 160, 122, 54, 37, 182, 21, 186, 120, 207, 129, 186, 63, 200, 251, 171, 25, 142, 98, 186, 37, 239, 249, ], ), }, sequence_number: 1232838040879833269, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d708cf2d2b540c8a2417fa420691ce3f1ad8b60835e7b2e69bf49522ec7d022): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b014e4019b0d2f065be4c71a751e0cd435a16deac109b10aa540dbf5d72ff8dc2f0ab0b59a53329a7095896fa831db870ea4c5c25437e0503aa9dfbfbc4ed5718ee130b87581cbd0db2a5a3a34d658adc00006969bb33cdd98e6d182cc750bc348645081f1ab925750bfc2d0972654ade65dd4ab0502a1cadbed57b18c92d3e144ebe990831cda40c23f5042b1bfc0759f4664ad04cf11dda03e772092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708427309c01ad92bfb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 25, 176, 210, 240, 101, 190, 76, 113, 167, 81, 224, 205, 67, 90, 22, 222, 172, 16, 155, 16, 170, 84, 13, 191, 93, 114, 255, 141, 194, 240, 171, 11, 89, 165, 51, 41, 167, 9, 88, 150, 250, 131, 29, 184, 112, 234, 76, 92, 37, 67, 126, 5, 3, 170, 157, 251, 251, 196, 237, 87, 24, 238, 19, 11, 135, 88, 28, 189, 13, 178, 165, 163, 163, 77, 101, 138, 220, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7894486672186501481, key: EventKey( [ 44, 199, 80, 188, 52, 134, 69, 8, 31, 26, 185, 37, 117, 11, 252, 45, 9, 114, 101, 74, 222, 101, 221, 74, ], ), }, sent_events: EventHandle { count: 8923247887415660720, key: EventKey( [ 201, 45, 62, 20, 78, 190, 153, 8, 49, 205, 164, 12, 35, 245, 4, 43, 27, 252, 7, 89, 244, 102, 74, 208, ], ), }, sequence_number: 680860497416679756, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8e4d89a126181e12427c53ae1d416e1036d3a2c161224de4f80c61d955cc465c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20145054246d9bee459595ea8d0c18d02247f52ec3f5d9c6695109d96bf895ef58ce6e9660a8298e25ccc5f60e6a5a9211ddbfafd1d5c9cbe367865205cf475d0fb589dd590d77d01782a3ed3877302e8c25c007c7ee661b7003ead14d507b55a7d18b110f3b8337243eca353b07bc121ac272dd77a325e67adece2570aa7d5615a1a182fc205117279a856f16cfbe466162a4a63ae5093e455d9f9caa5e052e973209d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a335a60b5439b40 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 66, 70, 217, 190, 228, 89, 89, 94, 168, 208, 193, 141, 2, 36, 127, 82, 236, 63, 93, 156, 102, 149, 16, 157, 150, 191, 137, 94, 245, 140, 230, 233, 102, 10, 130, 152, 226, 92, 204, 95, 96, 230, 165, 169, 33, 29, 219, 250, 253, 29, 92, 156, 190, 54, 120, 101, 32, 92, 244, 117, 208, 251, 88, 157, 213, 144, 215, 125, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 782a3ed3877302e8c25c007c7ee661b7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9032731047889251646, key: EventKey( [ 177, 16, 243, 184, 51, 114, 67, 236, 163, 83, 176, 123, 193, 33, 172, 39, 45, 215, 122, 50, 94, 103, 173, 236, ], ), }, sent_events: EventHandle { count: 1898937763148486626, key: EventKey( [ 47, 194, 5, 17, 114, 121, 168, 86, 241, 108, 251, 228, 102, 22, 42, 74, 99, 174, 80, 147, 228, 85, 217, 249, ], ), }, sequence_number: 11322176909164455370, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8e7b4759ae200fb2ac621f7072a8b542b946cbc02a84b744e4ac20fcaf151591): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f02241f0000230c829b87661712183a68a046dd6619d45fb8e82ade47c026d9b15b0524d5d840f6221455422a154c18744438516982fd4bcbc6d89c2eb9daa0f357c34980272a9c744eec1dcb65721c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708180d5b99d95bdf3c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1303623349762657315, key: EventKey( [ 58, 104, 160, 70, 221, 102, 25, 212, 95, 184, 232, 42, 222, 71, 192, 38, 217, 177, 91, 5, 36, 213, 216, 64, ], ), }, sent_events: EventHandle { count: 5482334585777038070, key: EventKey( [ 116, 68, 56, 81, 105, 130, 253, 75, 203, 198, 216, 156, 46, 185, 218, 160, 243, 87, 195, 73, 128, 39, 42, 156, ], ), }, sequence_number: 2049812703461789300, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(901881d25fb29fcd6073f14d9dd17faa7efc50c48e562d6995f4b77582cc075d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0152193b18d507cca04dbfe77228ea0949cdaf36528fd3ff128cfb7186e4f1f9836f1b4a2e130769dd718c46002b5e01734a823c3a9307c199612adf919ed9228e9d544b438dce3fe95f3a3097caec3d8d8e0d5201d1967f7f344ea9c40891732031f9280101ae743057670daf7ef988031a9db966a43e339b2870ed203f18a5c84952359c42a283d368a9ffee8f88cfca23a48f17efc77063e7e61ab8da1d188c12f984038ef41f6032576cfc630eb0fc363301402968390bf0006cbdfc24de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708369da9083da204da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 25, 59, 24, 213, 7, 204, 160, 77, 191, 231, 114, 40, 234, 9, 73, 205, 175, 54, 82, 143, 211, 255, 18, 140, 251, 113, 134, 228, 241, 249, 131, 111, 27, 74, 46, 19, 7, 105, 221, 113, 140, 70, 0, 43, 94, 1, 115, 74, 130, 60, 58, 147, 7, 193, 153, 97, 42, 223, 145, 158, 217, 34, 142, 157, 84, 75, 67, 141, 206, 63, 233, 95, 58, 48, 151, 202, 236, 61, 141, 142, 13, 82, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d1967f7f344ea9c40891732031f92801, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae743057670daf7ef988031a9db966a4, }, ), received_events: EventHandle { count: 4548896689617580862, key: EventKey( [ 165, 200, 73, 82, 53, 156, 66, 162, 131, 211, 104, 169, 255, 238, 143, 136, 207, 202, 35, 164, 143, 23, 239, 199, ], ), }, sent_events: EventHandle { count: 2151234197705417584, key: EventKey( [ 140, 18, 249, 132, 3, 142, 244, 31, 96, 50, 87, 108, 252, 99, 14, 176, 252, 54, 51, 1, 64, 41, 104, 57, ], ), }, sequence_number: 16007196866072604683, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90f4f011ebc8a11119a77d971fd0db60e8d7e5a70daa8576951058e5e656bf81): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122a659cb7e5c6f08e1886a146f8d9a6e02650635b8b17b64df2bf6892616f76908cedb011d17c2344abfafc794ec8ddb2024480a01d3e2a77e88bc36c782e95203ffc64e682f90ed9f6b93b803180bcc39caa3ff59a532b4527c7a3487aec56aa6167e38740deef97f6e2c672d3518e306032b66dc86f4362ae7274b471dfac3c530b995e497550c57d3e3791315842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fba6d9546aa55b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 166, 89, 203, 126, 92, 111, 8, 225, 136, 106, 20, 111, 141, 154, 110, 2, 101, 6, 53, 184, 177, 123, 100, 223, 43, 246, 137, 38, 22, 247, 105, 8, 206, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d17c2344abfafc794ec8ddb2024480a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d3e2a77e88bc36c782e95203ffc64e68, }, ), received_events: EventHandle { count: 268126268282474543, key: EventKey( [ 11, 204, 57, 202, 163, 255, 89, 165, 50, 180, 82, 124, 122, 52, 135, 174, 197, 106, 166, 22, 126, 56, 116, 13, ], ), }, sent_events: EventHandle { count: 3831832298492262894, key: EventKey( [ 227, 6, 3, 43, 102, 220, 134, 244, 54, 42, 231, 39, 75, 71, 29, 250, 195, 197, 48, 185, 149, 228, 151, 85, ], ), }, sequence_number: 9517534801751660300, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(93f0784a7e9a3cdf9fa67e0051a17c20f05c1f34d218149aed721fb3725464b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014be313282015730e2cacf63b10fa301a865d63a94ff24391a3709045b30ee6c0ac85d0e6e698f8b5ed1bfbab6fb535e29fe83ff3b927841056172f62e8742773266a3bfeefc63b87c4d0d6ca0000bc1fc614d96fc8301897729ced176b8a3e83ac54737935de0196e66f10d8ccccb538809a65210d517718f57815dff37a918e0cbb53a9f7a2f5ed8516b2ce5fa537aee00f6d846f83d4842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708373bc6328bb5d0bd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 227, 19, 40, 32, 21, 115, 14, 44, 172, 246, 59, 16, 250, 48, 26, 134, 93, 99, 169, 79, 242, 67, 145, 163, 112, 144, 69, 179, 14, 230, 192, 172, 133, 208, 230, 230, 152, 248, 181, 237, 27, 251, 171, 111, 181, 53, 226, 159, 232, 63, 243, 185, 39, 132, 16, 86, 23, 47, 98, 232, 116, 39, 115, 38, 106, 59, 254, 239, 198, 59, 135, 196, 208, 214, 202, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3515182487309787068, key: EventKey( [ 151, 114, 156, 237, 23, 107, 138, 62, 131, 172, 84, 115, 121, 53, 222, 1, 150, 230, 111, 16, 216, 204, 204, 181, ], ), }, sent_events: EventHandle { count: 8597667600716693560, key: EventKey( [ 245, 120, 21, 223, 243, 122, 145, 142, 12, 187, 83, 169, 247, 162, 245, 237, 133, 22, 178, 206, 95, 165, 55, 174, ], ), }, sequence_number: 9571419623055495136, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94300c6d723edab354876d340080a4ed6c1a961486dfd19e8fa7c8f484f1eb6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bbed2f22d8a2de887dbbb6e0000554002482b0e7c451848c06c7bec2035b1c1993f1253c40133f0eb370713b519f4c470e05bbbf34b6a18373edd083bfa5e5d914bda1446e8d81947241289ebf44493a23170bd2ac642d12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708009ecd5861247290 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 190, 210, 242, 45, 138, 45, 232, 135, 219, 187, 110, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5006892464783638613, key: EventKey( [ 72, 192, 108, 123, 236, 32, 53, 177, 193, 153, 63, 18, 83, 196, 1, 51, 240, 235, 55, 7, 19, 181, 25, 244, ], ), }, sent_events: EventHandle { count: 7659483577299529924, key: EventKey( [ 55, 62, 221, 8, 59, 250, 94, 93, 145, 75, 218, 20, 70, 232, 216, 25, 71, 36, 18, 137, 235, 244, 68, 147, ], ), }, sequence_number: 15078832389259014562, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94465daa5d24e014085e8ee54a9aa801afaaed88d46dce2d14db294cc96e2c28): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a73433dff09c7d4b5ad050001772d571a10db5182f0df79cc4b9799d762090cd393575a1018f64cd6160a2b2f135ae831524bf7cee76d0e074462f2fd8e8049d4e0045ee5221850e98e467ae4e1846d2d5be9343e57b06fe2d156e9000d4332fd101817a31efb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70855121528af7cf67c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 67, 61, 255, 9, 199, 212, 181, 173, 5, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 772d571a10db5182f0df79cc4b9799d7, }, ), received_events: EventHandle { count: 1178350544923396450, key: EventKey( [ 246, 76, 214, 22, 10, 43, 47, 19, 90, 232, 49, 82, 75, 247, 206, 231, 109, 14, 7, 68, 98, 242, 253, 142, ], ), }, sent_events: EventHandle { count: 2514519342001179008, key: EventKey( [ 80, 233, 142, 70, 122, 228, 225, 132, 109, 45, 91, 233, 52, 62, 87, 176, 111, 226, 209, 86, 233, 0, 13, 67, ], ), }, sequence_number: 18095079672404573490, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94ae44677e933b4b19c2fdaa545e8bbd8793bdbce802914e3a719e7c911967d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a6015998090355e3b0bdb15573d44de7e889b381b912a22e6aaba1e0a7b9ed3e60e0155e3f85732a829610b8c42d4520a69f16ff7c9e19f5552bd00a8fd02b8bcd0be2367cc00fdb6895c6cc6b8b55519ffe991db92936209a714398000054639a123e06a253182b33a622489db87566ef924184f8f705ada7007ff46e2c936afb098fa07b094d1849d9884b2a343edb01212a600f284f13cba6e47cb71ba09b9e9c96e5c3b10e112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708581c85e6bb898a50 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 9, 3, 85, 227, 176, 189, 177, 85, 115, 212, 77, 231, 232, 137, 179, 129, 185, 18, 162, 46, 106, 171, 161, 224, 167, 185, 237, 62, 96, 224, 21, 94, 63, 133, 115, 42, 130, 150, 16, 184, 196, 45, 69, 32, 166, 159, 22, 255, 124, 158, 25, 245, 85, 43, 208, 10, 143, 208, 43, 139, 205, 11, 226, 54, 124, 192, 15, 219, 104, 149, 198, 204, 107, 139, 85, 81, 159, 254, 153, 29, 185, 41, 54, 32, 154, 113, 67, 152, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6026386115044991828, key: EventKey( [ 43, 51, 166, 34, 72, 157, 184, 117, 102, 239, 146, 65, 132, 248, 247, 5, 173, 167, 0, 127, 244, 110, 44, 147, ], ), }, sent_events: EventHandle { count: 5551103945235626858, key: EventKey( [ 73, 217, 136, 75, 42, 52, 62, 219, 1, 33, 42, 96, 15, 40, 79, 19, 203, 166, 228, 124, 183, 27, 160, 155, ], ), }, sequence_number: 1229115203247316126, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94b2341e54bb9746404d5ef708d454f3776f8526f82487f09cc7ea197beb168e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a2014553c1345a92952f9991f78152a6cec8fb688291fa419bbf0007efe5246a819177e08b7dadd8870489634fcf06d8fa09f8c75d060bd1b7eacac5947d5bbab25ec2581293ef6601849e1be9200dfb869871ddef9b52973d00abd7bb38218ed02318c96a2f5c13ff761f00e76260367489c84548212ce032e249a7a1d9a0a696b0691819c65299278749a37dc20986e6a9aee7f27c324c3ad50871152b02a9409c1aa32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081667e1b7d16177d4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 193, 52, 90, 146, 149, 47, 153, 145, 247, 129, 82, 166, 206, 200, 251, 104, 130, 145, 250, 65, 155, 191, 0, 7, 239, 229, 36, 106, 129, 145, 119, 224, 139, 125, 173, 216, 135, 4, 137, 99, 79, 207, 6, 216, 250, 9, 248, 199, 93, 6, 11, 209, 183, 234, 202, 197, 148, 125, 91, 186, 178, 94, 194, 88, 18, 147, 239, 102, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 849e1be9200dfb869871ddef9b52973d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2580718859820193707, key: EventKey( [ 201, 106, 47, 92, 19, 255, 118, 31, 0, 231, 98, 96, 54, 116, 137, 200, 69, 72, 33, 44, 224, 50, 226, 73, ], ), }, sent_events: EventHandle { count: 7615752612290863527, key: EventKey( [ 25, 198, 82, 153, 39, 135, 73, 163, 125, 194, 9, 134, 230, 169, 174, 231, 242, 124, 50, 76, 58, 213, 8, 113, ], ), }, sequence_number: 11752877979104062229, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(955c5251b1bb7f78c4bee7d353b31e5d4c6ac09313aa1af3442b5883eade6f2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d0001c41f0329f1e9c710caa96aab504ac42600537b829a65f7201c182c7486519b29725c645bd09337b74d0dd50e8fae75ce7d922096df0f12e8574418b44420eea9bc684bc77ed54667a4f6aa1a069c83351fc0fd23cc8c7768d3a0fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f9a432aad2e4e8e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c41f0329f1e9c710caa96aab504ac426, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2026891848072723283, key: EventKey( [ 44, 116, 134, 81, 155, 41, 114, 92, 100, 91, 208, 147, 55, 183, 77, 13, 213, 14, 143, 174, 117, 206, 125, 146, ], ), }, sent_events: EventHandle { count: 4924659881826293280, key: EventKey( [ 180, 68, 32, 238, 169, 188, 104, 75, 199, 126, 213, 70, 103, 164, 246, 170, 26, 6, 156, 131, 53, 31, 192, 253, ], ), }, sequence_number: 18059666951391464483, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96712576e88035b594ca4c8f5fa40c724c96fc944cf49daae80cfa70e41d67a8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d107c31872fdd626d506d88452dc940b26e00017c7101d89f4867cc21e2cbdef8964849f898f805db4c875b18c042e63e6c038ef6f79fde3364f2ca986acd4774c599a16097013d69ad1fa20918087bb48c9f31a684efc77be07ce979e106d09e35fa49cf0b385777e2d3158c482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708041ce80d4b168921 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 49, 135, 47, 221, 98, 109, 80, 109, 136, 69, 45, 201, 64, 178, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7c7101d89f4867cc21e2cbdef8964849, }, ), received_events: EventHandle { count: 6595324682889107704, key: EventKey( [ 192, 66, 230, 62, 108, 3, 142, 246, 247, 159, 222, 51, 100, 242, 202, 152, 106, 205, 71, 116, 197, 153, 161, 96, ], ), }, sent_events: EventHandle { count: 694152122223886743, key: EventKey( [ 8, 123, 180, 140, 159, 49, 166, 132, 239, 199, 123, 224, 124, 233, 121, 225, 6, 208, 158, 53, 250, 73, 207, 11, ], ), }, sequence_number: 5227577267252057912, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96c1184c88abbc97200c5164d7de8f1a1d01d3f6a683103c18e404876acc11a8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501588e98614801e785b82a705e479bc0e8bcfa899d46d3f1eafbf926b331264867e85e7d9458a445ae1f7f56d56e86d0842386b4ed83735041be9c048798137e4978ffad2f19efb1ec6d598b4e9a09b5d9eeebd0f388cd8847430001285eadfcabc11041e880d37a10e2ec21fd8aa89bf1aafa5c185305921ca90f73f953c6a07ba992209c7c663a01960f1ba2c37b8a82eda1082e18e3e70ace14ac5a5b26022220d29836aba0496b48c4799696ee08ad9440d26b8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e5658d5979acd9f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 152, 97, 72, 1, 231, 133, 184, 42, 112, 94, 71, 155, 192, 232, 188, 250, 137, 157, 70, 211, 241, 234, 251, 249, 38, 179, 49, 38, 72, 103, 232, 94, 125, 148, 88, 164, 69, 174, 31, 127, 86, 213, 110, 134, 208, 132, 35, 134, 180, 237, 131, 115, 80, 65, 190, 156, 4, 135, 152, 19, 126, 73, 120, 255, 173, 47, 25, 239, 177, 236, 109, 89, 139, 78, 154, 9, 181, 217, 238, 235, 208, 243, 136, 205, 136, 71, 67, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 285eadfcabc11041e880d37a10e2ec21, }, ), received_events: EventHandle { count: 6699855350342388477, key: EventKey( [ 83, 5, 146, 28, 169, 15, 115, 249, 83, 198, 160, 123, 169, 146, 32, 156, 124, 102, 58, 1, 150, 15, 27, 162, ], ), }, sent_events: EventHandle { count: 3317079167027805123, key: EventKey( [ 227, 231, 10, 206, 20, 172, 90, 91, 38, 2, 34, 32, 210, 152, 54, 171, 160, 73, 107, 72, 196, 121, 150, 150, ], ), }, sequence_number: 10118412162632059118, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(994372d44614de639b3884d77f6e828fd704adf881b90895cd9853e28c780e6c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141eda6f27d26e97c9512b3d49cdd7feb9e2f375f735b7a8fd0fdf3f1e42edacffb044b515ae793a5fd5adff770b84ea446ee704c8eefa242fa6cd77db746983c78c801b87e3cf1fd1fc9f27ed5e92fb6badf990084e39be1964a3f3718956d51e796e2168f77855acfa4bd4db30b0e819687754a7e1a4001e823b0a26a18efad21e6369053e18c289fdcead8a22154e232e83c601767b2ea0ea7d3a365112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f17b8b6ac11ec43a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 237, 166, 242, 125, 38, 233, 124, 149, 18, 179, 212, 156, 221, 127, 235, 158, 47, 55, 95, 115, 91, 122, 143, 208, 253, 243, 241, 228, 46, 218, 207, 251, 4, 75, 81, 90, 231, 147, 165, 253, 90, 223, 247, 112, 184, 78, 164, 70, 238, 112, 76, 142, 239, 162, 66, 250, 108, 215, 125, 183, 70, 152, 60, 120, 200, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b87e3cf1fd1fc9f27ed5e92fb6badf99, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3980982607509447556, key: EventKey( [ 149, 109, 81, 231, 150, 226, 22, 143, 119, 133, 90, 207, 164, 189, 77, 179, 11, 14, 129, 150, 135, 117, 74, 126, ], ), }, sent_events: EventHandle { count: 7683897582510227482, key: EventKey( [ 239, 173, 33, 230, 54, 144, 83, 225, 140, 40, 159, 220, 234, 216, 162, 33, 84, 226, 50, 232, 60, 96, 23, 103, ], ), }, sequence_number: 1253588200728750770, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(998bd0617b5644401c544db78c71385c74a31bfe94b4f278e776c04ffccc7cdc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014babee049eeb50f3d129ec237fd0e6fb113c6724355085df562cbbb1680414cf60970ce16d373ca952055038fc99742587cdfff734ffaf0607d8084d81060adf84da9d30e8fe1dcd260351a80000cae8fb461efd090d18456cda549e61860fc36e4d90486deae26b9d71539d9496c7b457aebc1c141e53180ca80bda0c653e6234265ba20e39f040a898b7cd4fd0caba4dcb5ac4419922d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a69868a574ecb65c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 238, 4, 158, 235, 80, 243, 209, 41, 236, 35, 127, 208, 230, 251, 17, 60, 103, 36, 53, 80, 133, 223, 86, 44, 187, 177, 104, 4, 20, 207, 96, 151, 12, 225, 109, 55, 60, 169, 82, 5, 80, 56, 252, 153, 116, 37, 135, 205, 255, 247, 52, 255, 175, 6, 7, 216, 8, 77, 129, 6, 10, 223, 132, 218, 157, 48, 232, 254, 29, 205, 38, 3, 81, 168, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 939560303765219530, key: EventKey( [ 69, 108, 218, 84, 158, 97, 134, 15, 195, 110, 77, 144, 72, 109, 234, 226, 107, 157, 113, 83, 157, 148, 150, 199, ], ), }, sent_events: EventHandle { count: 5989246668106520500, key: EventKey( [ 12, 168, 11, 218, 12, 101, 62, 98, 52, 38, 91, 162, 14, 57, 240, 64, 168, 152, 183, 205, 79, 208, 202, 186, ], ), }, sequence_number: 15574178969146805069, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(99ad3cbe8a4b167d6361135074f507446a113aba922bf9dfe2cb35ee0c7dbfa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0dab1f87d563a501367e9cb8df9401e1e20a5e22f760ce2d1a98a8d47952d401a90f4b07f56ef607a8a00dae745359d22ab77bb700de54001831a52e9763dd183a41373a55a8d007ce0d684c35281a09285107636a9f29145618d54c13c1afd41d9815c9d14b620a83f65c3f800e19ea2768eb95998592a3c9342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b1044de06994b3f9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 31, 135, 213, 99, 165, 1, 54, 126, 156, 184, 223, 148, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e1e20a5e22f760ce2d1a98a8d47952d4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a90f4b07f56ef607a8a00dae745359d2, }, ), received_events: EventHandle { count: 23887992703399722, key: EventKey( [ 49, 165, 46, 151, 99, 221, 24, 58, 65, 55, 58, 85, 168, 208, 7, 206, 13, 104, 76, 53, 40, 26, 9, 40, ], ), }, sent_events: EventHandle { count: 6202628351457429329, key: EventKey( [ 213, 76, 19, 193, 175, 212, 29, 152, 21, 201, 209, 75, 98, 10, 131, 246, 92, 63, 128, 14, 25, 234, 39, 104, ], ), }, sequence_number: 3803751209993082347, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aa2d23f4c11f68a9bcfde322210cd0546e390400dd10dbb10a8795a944f5228): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30146ddd7e7fdecfdc4275b1fb1c5c4de529c1f6a949b6f95bfe39156345500495a0ce199836d8cda738447760b0832f8882470165f8c60e464446c5cb91f9eca3e3d6b94e321cda001ecbc4eed108937f57ffad073274b24d8011902161d008e2a1261079062f0d330790abf422471f63f341878b0e26bb5ad076ff516f1b082fcbd85e88ed6e459cc0c99381950a4750e4b05188743630001a56bfce60324c397a36d661b45ef660c68b773a5a05eb56fde501f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ed7e5e138e1a61d5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 215, 231, 253, 236, 253, 196, 39, 91, 31, 177, 197, 196, 222, 82, 156, 31, 106, 148, 155, 111, 149, 191, 227, 145, 86, 52, 85, 0, 73, 90, 12, 225, 153, 131, 109, 140, 218, 115, 132, 71, 118, 11, 8, 50, 248, 136, 36, 112, 22, 95, 140, 96, 228, 100, 68, 108, 92, 185, 31, 158, 202, 62, 61, 107, 148, 227, 33, 205, 160, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ecbc4eed108937f57ffad073274b24d8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1902161d008e2a1261079062f0d33079, }, ), received_events: EventHandle { count: 3764998779305115402, key: EventKey( [ 120, 176, 226, 107, 181, 173, 7, 111, 245, 22, 241, 176, 130, 252, 189, 133, 232, 142, 214, 228, 89, 204, 12, 153, ], ), }, sent_events: EventHandle { count: 381414491873614136, key: EventKey( [ 135, 67, 99, 0, 1, 165, 107, 252, 230, 3, 36, 195, 151, 163, 109, 102, 27, 69, 239, 102, 12, 104, 183, 115, ], ), }, sequence_number: 2256547984678232229, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ad3b9db2fe8cb82a9e9864d374a8273bb557e0812a57fa8d4f1690ecd6ab59a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014d791c8d45a6216b5208873d4b54c44add29507927815a6803c63529c42f9ca79bc6edf0fdc0ea1dd3546c097cbdb3c3e8970f33ad75e46fe4240adb5a7c6eac8d7c718175c86ba09951f4d87c830160cd1b9ab127b3cb28c23789b1b28001010c11c168f3df4fd15d7bbe65fbd0e5266fe2461b42a0f60b18b7ac96c7bd653fc0fcc5ff55c4f625957629e9a3901d37ad59d1dbc4d34b66231834d60dd4b3eeb9f38722cbc2c427aa3538d03b08bbdc11ac23f035c8d3f871022101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f295bb16f2521a6e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 28, 141, 69, 166, 33, 107, 82, 8, 135, 61, 75, 84, 196, 74, 221, 41, 80, 121, 39, 129, 90, 104, 3, 198, 53, 41, 196, 47, 156, 167, 155, 198, 237, 240, 253, 192, 234, 29, 211, 84, 108, 9, 124, 189, 179, 195, 232, 151, 15, 51, 173, 117, 228, 111, 228, 36, 10, 219, 90, 124, 110, 172, 141, 124, 113, 129, 117, 200, 107, 160, 153, 81, 244, 216, 124, 131, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 60cd1b9ab127b3cb28c23789b1b28001, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c11c168f3df4fd15d7bbe65fbd0e526, }, ), received_events: EventHandle { count: 862052584473944687, key: EventKey( [ 183, 172, 150, 199, 189, 101, 63, 192, 252, 197, 255, 85, 196, 246, 37, 149, 118, 41, 233, 163, 144, 29, 55, 173, ], ), }, sent_events: EventHandle { count: 2550809611864887641, key: EventKey( [ 52, 214, 13, 212, 179, 238, 185, 243, 135, 34, 203, 194, 196, 39, 170, 53, 56, 208, 59, 8, 187, 220, 17, 172, ], ), }, sequence_number: 176195448924925987, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ba41a7dcc4692380c2f30ef8af897525434a48dcdd5ab95114244bcaf2bb874): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b40058e8c0e89c96efedacbcc76b5a7e3a55468b30c9360a4b1c85b65f38fcd7a0aed19ede80297c441b840a0baa0327f5b51166c21ebc37c16a3860001234220ff3304cf30d6f2021e2e1ed4e43440eca139912c2118f3f1f4d0293bfa62654c07d541804e0eab1b5f0a3a84bde633995e0d09f7203b188acb8a9cd4204b632e74a862a96d6bd52ef253438baa4cb8469a7c5b3888870e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088c54f81c36404407 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 5, 142, 140, 14, 137, 201, 110, 254, 218, 203, 204, 118, 181, 167, 227, 165, 84, 104, 179, 12, 147, 96, 164, 177, 200, 91, 101, 243, 143, 205, 122, 10, 237, 25, 237, 232, 2, 151, 196, 65, 184, 64, 160, 186, 160, 50, 127, 91, 81, 22, 108, 33, 235, 195, 124, 22, 163, 134, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 234220ff3304cf30d6f2021e2e1ed4e4, }, ), received_events: EventHandle { count: 2390445178942668852, key: EventKey( [ 243, 241, 244, 208, 41, 59, 250, 98, 101, 76, 7, 213, 65, 128, 78, 14, 171, 27, 95, 10, 58, 132, 189, 230, ], ), }, sent_events: EventHandle { count: 4260676865743558963, key: EventKey( [ 138, 203, 138, 156, 212, 32, 75, 99, 46, 116, 168, 98, 169, 109, 107, 213, 46, 242, 83, 67, 139, 170, 76, 184, ], ), }, sequence_number: 1046955214021368390, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9bf5d11cd3ea3253131b7006a52170eca5fe07189ef185c3024e6fd3a394a874): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01407bc3b85a4c22a0ae25dc016c334e21f05d2d986faa06c115083f987e5d01ba60d33cbd193bce01848271c8ffc1503860dbae1786b45e787f0a304161d640851700004b34e0ecdf4cb12d18b1212ab9ef08f9a8b957c2c3123f61746dc37a7a781be8ec5a11626f746a1c3718e149b5c342d09ce9bbd907b4477f9e548804835ccfe30723fb055b71e58edc872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087447cfec27e770f6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 195, 184, 90, 76, 34, 160, 174, 37, 220, 1, 108, 51, 78, 33, 240, 93, 45, 152, 111, 170, 6, 193, 21, 8, 63, 152, 126, 93, 1, 186, 96, 211, 60, 189, 25, 59, 206, 1, 132, 130, 113, 200, 255, 193, 80, 56, 96, 219, 174, 23, 134, 180, 94, 120, 127, 10, 48, 65, 97, 214, 64, 133, 23, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3292497327220077643, key: EventKey( [ 177, 33, 42, 185, 239, 8, 249, 168, 185, 87, 194, 195, 18, 63, 97, 116, 109, 195, 122, 122, 120, 27, 232, 236, ], ), }, sent_events: EventHandle { count: 3971166019751383386, key: EventKey( [ 225, 73, 181, 195, 66, 208, 156, 233, 187, 217, 7, 180, 71, 127, 158, 84, 136, 4, 131, 92, 207, 227, 7, 35, ], ), }, sequence_number: 9789856806097061371, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9c82be00b2a90b91553c01907df0120515592dd5bf1aac58f6168eeea572984e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619e0b1c00fafa026e210da777688bb19deffe79530bf4e4f9e5200013deaeced3cb893aa6fa90fdfd6333e535c03d5b28c20ab0718321993214a2b2a573c71c46c12be8d035ee9123d6a2bfef1e8729c44fb60e1721819adc44984d3e3b160ac2ca2157dbbca590a886af5352ac9bf7f2648edd8247c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70831a22d3fae073807 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 177, 192, 15, 175, 160, 38, 226, 16, 218, 119, 118, 136, 187, 25, 222, 255, 231, 149, 48, 191, 78, 79, 158, 82, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3deaeced3cb893aa6fa90fdfd6333e53, }, ), received_events: EventHandle { count: 552571167950832476, key: EventKey( [ 50, 25, 147, 33, 74, 43, 42, 87, 60, 113, 196, 108, 18, 190, 141, 3, 94, 233, 18, 61, 106, 43, 254, 241, ], ), }, sent_events: EventHandle { count: 8278004222387843816, key: EventKey( [ 25, 173, 196, 73, 132, 211, 227, 177, 96, 172, 44, 162, 21, 125, 187, 202, 89, 10, 136, 106, 245, 53, 42, 201, ], ), }, sequence_number: 8945513273493979071, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a1666ad5eec5e35a722969e6600f42f9651b28c82945f4d5db48e38b5627ae2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a98f5b05f5b1704b65e6f00012fac08c8fd29daccbb91905d9e96c70b3ee4cb15cd4c32071826bbb80dad58e79acd32b69668c9810145453f896714281b01fd571a78bc5a7e18f303425b823e3decdb2d4575871d02bb3a5711467d881f7994dab55035b8bcf32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d14d42fd5ef94bbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 245, 176, 95, 91, 23, 4, 182, 94, 111, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2fac08c8fd29daccbb91905d9e96c70b, }, ), received_events: EventHandle { count: 518561350818718782, key: EventKey( [ 38, 187, 184, 13, 173, 88, 231, 154, 205, 50, 182, 150, 104, 201, 129, 1, 69, 69, 63, 137, 103, 20, 40, 27, ], ), }, sent_events: EventHandle { count: 9104796820706950401, key: EventKey( [ 243, 3, 66, 91, 130, 62, 61, 236, 219, 45, 69, 117, 135, 29, 2, 187, 58, 87, 17, 70, 125, 136, 31, 121, ], ), }, sequence_number: 17563115185964964500, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a359842807de25c7d5a71a650a93e3f55225b569445cf35d5d6d365e222c1d03): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d840dfc399beca80e4d0e97d0a4a65775734afaecabb43d5fd25457a1daa7887fb7be56fa2cb0d43311ec7df9e00197aad8999cc55aba439193f8319914a2007ef5a1d4ceac005e1840aa2ca60f577583fbacfc74f707ddd8586e872ae081494a05b0e00998a4a31018109a789f9fcf7f93660509b2e06c22e0aa9f0b0b4eca1ece553c1195f5a127772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089a0de17fc95d0ff2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 132, 13, 252, 57, 155, 236, 168, 14, 77, 14, 151, 208, 164, 166, 87, 117, 115, 74, 250, 236, 171, 180, 61, 95, 210, 84, 87, 161, 218, 167, 136, 127, 183, 190, 86, 250, 44, 176, 212, 51, 17, 236, 125, 249, 224, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 97aad8999cc55aba439193f8319914a2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6773603843895850366, key: EventKey( [ 64, 170, 44, 166, 15, 87, 117, 131, 251, 172, 252, 116, 247, 7, 221, 216, 88, 110, 135, 42, 224, 129, 73, 74, ], ), }, sent_events: EventHandle { count: 1198982898718388229, key: EventKey( [ 16, 154, 120, 159, 159, 207, 127, 147, 102, 5, 9, 178, 224, 108, 34, 224, 170, 159, 11, 11, 78, 202, 30, 206, ], ), }, sequence_number: 8586009290745134165, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5928ffe109be1f8637076b996415aeabcac39d663af90f8b80893c82b77da5b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e21af1d499c6c64a99a0f40466a755bc0fe1933cc6ffd019465662c66a77814d7595400011eb6c55e5cac5367e52233816f28e7941d87094a8991583418d0098951b96415bed796810b0a90f70b66960dad3824037afa2bb5932edd6d361879842332ef0cdf735e3a6c1806853256d3e81fdabc9f67dbcf9510eb3f77d0ce2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aee0fb32ec728546 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 29, 73, 156, 108, 100, 169, 154, 15, 64, 70, 106, 117, 91, 192, 254, 25, 51, 204, 111, 253, 1, 148, 101, 102, 44, 102, 167, 120, 20, 215, 89, 84, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1eb6c55e5cac5367e52233816f28e794, }, ), received_events: EventHandle { count: 3771924706761475869, key: EventKey( [ 208, 9, 137, 81, 185, 100, 21, 190, 215, 150, 129, 11, 10, 144, 247, 11, 102, 150, 13, 173, 56, 36, 3, 122, ], ), }, sent_events: EventHandle { count: 3922034042625928186, key: EventKey( [ 121, 132, 35, 50, 239, 12, 223, 115, 94, 58, 108, 24, 6, 133, 50, 86, 211, 232, 31, 218, 188, 159, 103, 219, ], ), }, sequence_number: 14902542283379348943, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a66098ac93bbf6b70fe646b9242063b648a09b0933333f75d08547401fdbd963): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d10276e549f8b9f19989c04f07a351acead000195641b190f19628ffae03e3ad7a645e7eb5b47f9dc4f731c18c24a4d863fde1f8ec9867db4ff725239dc0df0d2fcf1b0244702039ccd5f0d3c1831551201c1d58d8466d8ab1e45f0236f1ac480beb2fa5088b913696f1d4920012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f825f4b482fcda47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 110, 84, 159, 139, 159, 25, 152, 156, 4, 240, 122, 53, 26, 206, 173, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 95641b190f19628ffae03e3ad7a645e7, }, ), received_events: EventHandle { count: 2050070065877310443, key: EventKey( [ 194, 74, 77, 134, 63, 222, 31, 142, 201, 134, 125, 180, 255, 114, 82, 57, 220, 13, 240, 210, 252, 241, 176, 36, ], ), }, sent_events: EventHandle { count: 4327220153663291975, key: EventKey( [ 49, 85, 18, 1, 193, 213, 141, 132, 102, 216, 171, 30, 69, 240, 35, 111, 26, 196, 128, 190, 178, 250, 80, 136, ], ), }, sequence_number: 81145184064705465, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a90e383bae5438d52eb3598992ccb87b493bb4d594b5169f41d66e4c837dfff8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133869c167642f2c800ac8c94411f84fcc73b0e65e2ccc3c61015ea3ebd9f1db97eec19015838f7e3908bbca76ff544f125fb23cd01d6f32ed3a9559fa461490c3f0304e3810002b9fac4e0a5234f18802fbd655c4dd503478044ecee18286d1e0e2126fed048782056d86334bdf12b1888d1154998b6c477f679b1fe053fe8d76c5a59a11b33457c1e0435abe4afa5552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d6c85822ad497959 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 156, 22, 118, 66, 242, 200, 0, 172, 140, 148, 65, 31, 132, 252, 199, 59, 14, 101, 226, 204, 195, 198, 16, 21, 234, 62, 189, 159, 29, 185, 126, 236, 25, 1, 88, 56, 247, 227, 144, 139, 188, 167, 111, 245, 68, 241, 37, 251, 35, 205, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d6f32ed3a9559fa461490c3f0304e381, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5702583937977202946, key: EventKey( [ 128, 47, 189, 101, 92, 77, 213, 3, 71, 128, 68, 236, 238, 24, 40, 109, 30, 14, 33, 38, 254, 208, 72, 120, ], ), }, sent_events: EventHandle { count: 3166520045729240608, key: EventKey( [ 136, 209, 21, 73, 152, 182, 196, 119, 246, 121, 177, 254, 5, 63, 232, 215, 108, 90, 89, 161, 27, 51, 69, 124, ], ), }, sequence_number: 6171532261040915486, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a967d1117c354064076cd321e2734dbe2e9f54bca383412c535f107ba346c747): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131ea010348374797244a6bd632ab3e0f228cc2176e482b4d735a8b92b7836ddd099a54b70e186c3c9149d491cbb7e6e8a85000014f508b1cc7678bc5b9163d158fdc6f6cb27240eb1e65626318d1f9f3b51b7e43cf7d74fd790dbe4fab74eff9524e4dc02277960615c7d5ee59185690e1cbc6c5f6c6219ea174a0ceb23236cd87e7d9c366b9ce8ca28b2ca54b442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bb2ee082986a1bae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 234, 1, 3, 72, 55, 71, 151, 36, 74, 107, 214, 50, 171, 62, 15, 34, 140, 194, 23, 110, 72, 43, 77, 115, 90, 139, 146, 183, 131, 109, 221, 9, 154, 84, 183, 14, 24, 108, 60, 145, 73, 212, 145, 203, 183, 230, 232, 168, 80, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4f508b1cc7678bc5b9163d158fdc6f6c, }, ), received_events: EventHandle { count: 7161397540942803634, key: EventKey( [ 209, 249, 243, 181, 27, 126, 67, 207, 125, 116, 253, 121, 13, 190, 79, 171, 116, 239, 249, 82, 78, 77, 192, 34, ], ), }, sent_events: EventHandle { count: 6480351964860683895, key: EventKey( [ 86, 144, 225, 203, 198, 197, 246, 198, 33, 158, 161, 116, 160, 206, 178, 50, 54, 205, 135, 231, 217, 195, 102, 185, ], ), }, sequence_number: 4921208628572228814, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aa30e52dbcf7bd2e09fd8d87acfe5b76155a789c80ffb0696cda5e7a85d2caa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd01604517f4e4b2c7e55d68fb78a058534722185da47525a3784a352ba513f54127ba8746114d37c3ad1b6ef1b5ba7428a584d3e64d971d19949b2577116f76268e5063e927ee13c4455a8aef132831dfaeaffcac9c979181dfe46643486baf5788280165410e9d81411de5e6b3e6eb5f513167010e625cf8fa4ac1f550329609072e503e83fa7d6753ead31f18c525b1e34fcda529deda5a15390a3e13ad827fb3e6b7ba3958b7a5e2c404b92c1860fefa6447f14dd31d1e1d14b855a0ff30a1ca145ca2da982b13192ca4bd042b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70810196f672e57c114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 23, 244, 228, 178, 199, 229, 93, 104, 251, 120, 160, 88, 83, 71, 34, 24, 93, 164, 117, 37, 163, 120, 74, 53, 43, 165, 19, 245, 65, 39, 186, 135, 70, 17, 77, 55, 195, 173, 27, 110, 241, 181, 186, 116, 40, 165, 132, 211, 230, 77, 151, 29, 25, 148, 155, 37, 119, 17, 111, 118, 38, 142, 80, 99, 233, 39, 238, 19, 196, 69, 90, 138, 239, 19, 40, 49, 223, 174, 175, 252, 172, 156, 151, 145, 129, 223, 228, 102, 67, 72, 107, 175, 87, 136, 40, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 65410e9d81411de5e6b3e6eb5f513167, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e625cf8fa4ac1f550329609072e503e, }, ), received_events: EventHandle { count: 2293434279201208963, key: EventKey( [ 197, 37, 177, 227, 79, 205, 165, 41, 222, 218, 90, 21, 57, 10, 62, 19, 173, 130, 127, 179, 230, 183, 186, 57, ], ), }, sent_events: EventHandle { count: 3222612252022912856, key: EventKey( [ 96, 254, 250, 100, 71, 241, 77, 211, 29, 30, 29, 20, 184, 85, 160, 255, 48, 161, 202, 20, 92, 162, 218, 152, ], ), }, sequence_number: 3099810956349870891, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab57d398a0ff8d871cf9160d829ac65cffb95b06cee7d5c50a4e0049b9dd954d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d5048a71c86922ea983cf564ea2a8d001abba28629ae1d7771a9f0ed26ab4e49bba692cbae0795ed1ad0b02fb2f08d04ed8cf215a47cabf581d8b5343dc00019f214efbed9d987fff53166f20d7448089d25a09796b8e5f18325a6295945149033d64af8f96fd0932cd8601d368fce66695d2403caca2105b18b2e21554ba29064ec6f3e5e7e36a2ca45e1021717962f6c8092b062cc8d5d9772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708578271c55b515c96 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 80, 72, 167, 28, 134, 146, 46, 169, 131, 207, 86, 78, 162, 168, 208, 1, 171, 186, 40, 98, 154, 225, 215, 119, 26, 159, 14, 210, 106, 180, 228, 155, 186, 105, 44, 186, 224, 121, 94, 209, 173, 11, 2, 251, 47, 8, 208, 78, 216, 207, 33, 90, 71, 202, 191, 88, 29, 139, 83, 67, 220, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9f214efbed9d987fff53166f20d74480, }, ), received_events: EventHandle { count: 6885559047888229001, key: EventKey( [ 50, 90, 98, 149, 148, 81, 73, 3, 61, 100, 175, 143, 150, 253, 9, 50, 205, 134, 1, 211, 104, 252, 230, 102, ], ), }, sent_events: EventHandle { count: 6561923517707768469, key: EventKey( [ 178, 226, 21, 84, 186, 41, 6, 78, 198, 243, 229, 231, 227, 106, 44, 164, 94, 16, 33, 113, 121, 98, 246, 200, ], ), }, sequence_number: 8636168816168413961, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aefdcd533240c00da3755a3e9a9fad9c5fff83b6673dac76b77b85cd8ea5e179): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930136ca7021f72c5dcba116f20cf8ae69301271273b6e1a84898c9439e7a753332fc4e0f7d59a4ad4497a11b6000f4a4a6989c617dec070ec000135ff096d892090f779511b8808061c04f5b2644f19e2ea20186913ac334a0c17eb31fceb4424707fc7219af458033726e69f529d6a9854d75218e8ef42f8c4180107b88f703b38d7bb74bb69fa71e3327494200991bfce30d2002101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880e0cc251c39a9a7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 112, 33, 247, 44, 93, 203, 161, 22, 242, 12, 248, 174, 105, 48, 18, 113, 39, 59, 110, 26, 132, 137, 140, 148, 57, 231, 167, 83, 51, 47, 196, 224, 247, 213, 154, 74, 212, 73, 122, 17, 182, 0, 15, 74, 74, 105, 137, 198, 23, 222, 192, 112, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 35ff096d892090f779511b8808061c04, }, ), received_events: EventHandle { count: 2371956752098046709, key: EventKey( [ 105, 19, 172, 51, 74, 12, 23, 235, 49, 252, 235, 68, 36, 112, 127, 199, 33, 154, 244, 88, 3, 55, 38, 230, ], ), }, sent_events: EventHandle { count: 5969332844703339167, key: EventKey( [ 232, 239, 66, 248, 196, 24, 1, 7, 184, 143, 112, 59, 56, 215, 187, 116, 187, 105, 250, 113, 227, 50, 116, 148, ], ), }, sequence_number: 59163409644587296, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b06a0c5c9c18e50ad0a6858d9693e57502b3db7ca232a07d5bca3e905d9758e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95407ee0eb46b172ac90000b9c8e0fa3ef3cb4d1828eb6842685fa7c061fadd732b6af85649bde59089b30b168b020f979d81d401183f83aaa132a6a36a4d4d1656aeb6f54de6942b20fe2a25612d37a2ef448570de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708032c84d0214d013c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 14, 180, 107, 23, 42, 201, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5605841613015271609, key: EventKey( [ 40, 235, 104, 66, 104, 95, 167, 192, 97, 250, 221, 115, 43, 106, 248, 86, 73, 189, 229, 144, 137, 179, 11, 22, ], ), }, sent_events: EventHandle { count: 131872802944778891, key: EventKey( [ 63, 131, 170, 161, 50, 166, 163, 106, 77, 77, 22, 86, 174, 182, 245, 77, 230, 148, 43, 32, 254, 42, 37, 97, ], ), }, sequence_number: 16028457604936251181, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b0c1c72cb882d34b984f492416d35f6cbcd0771489abc469d23a367135519a5e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0150cdf66bfae01c00bffd3ac0630721e5a4282bbf8cbe4b3b2aee7cc4cc60485b9f288faf616732463db7521e221660165471fc8ac6f9a7a372a357d23398d7afc6581dfe69577b06040d4c2868ee98d00301ed5ccfc6737893c84f34dca9b1527a6f019693e568cae281703d7a7149d148f60d475c4b27d4ddca671883411eb8d3dc6f5817b6f458f5e0daaf36e7153899e94ba865d2612ce6c22a331854808a7e1f07ed4397542a053a18920e924a2be8cae239ba2cb60465f2841c772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0c82c8b07b49c47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 246, 107, 250, 224, 28, 0, 191, 253, 58, 192, 99, 7, 33, 229, 164, 40, 43, 191, 140, 190, 75, 59, 42, 238, 124, 196, 204, 96, 72, 91, 159, 40, 143, 175, 97, 103, 50, 70, 61, 183, 82, 30, 34, 22, 96, 22, 84, 113, 252, 138, 198, 249, 167, 163, 114, 163, 87, 210, 51, 152, 215, 175, 198, 88, 29, 254, 105, 87, 123, 6, 4, 13, 76, 40, 104, 238, 152, 208, 3, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ed5ccfc6737893c84f34dca9b1527a6f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9693e568cae281703d7a7149d148f60d, }, ), received_events: EventHandle { count: 7479034034464185415, key: EventKey( [ 131, 65, 30, 184, 211, 220, 111, 88, 23, 182, 244, 88, 245, 224, 218, 175, 54, 231, 21, 56, 153, 233, 75, 168, ], ), }, sent_events: EventHandle { count: 3686973538799047269, key: EventKey( [ 84, 128, 138, 126, 31, 7, 237, 67, 151, 84, 42, 5, 58, 24, 146, 14, 146, 74, 43, 232, 202, 226, 57, 186, ], ), }, sequence_number: 8582881166473082412, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b109956ac5014a9872b69c13cdec08cfbcae1aed6b0acac9f6a3042e8945c0b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014e92e299778aaa7b8b20d6d8acbdf89ac380e048b3d7eb0393fc1beb5ba0e3788d8c9b52094c0075bc1dc9bfcb70bc353e4ee033c9ddbdb7e53588915a9588b41eb0e42776ddb6a4a7cfa98c9e6608017bb64343fba5b0607c9b0b2a9efdaff401022d1c41ec28476013280e5e0b8fcd2769d3904c783ffa2c18fa0bdfb099bfa0fe5cb6e3630daa127a830485fc8e70a46f97b9de18a604604318ee9d973412b31cb1a2481c69f75168537c2eb3622e376e5ac42f2059722e26472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e0d24d388ac5d46 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 226, 153, 119, 138, 170, 123, 139, 32, 214, 216, 172, 189, 248, 154, 195, 128, 224, 72, 179, 215, 235, 3, 147, 252, 27, 235, 91, 160, 227, 120, 141, 140, 155, 82, 9, 76, 0, 117, 188, 29, 201, 191, 203, 112, 188, 53, 62, 78, 224, 51, 201, 221, 189, 183, 229, 53, 136, 145, 90, 149, 136, 180, 30, 176, 228, 39, 118, 221, 182, 164, 167, 207, 169, 140, 158, 102, 8, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7bb64343fba5b0607c9b0b2a9efdaff4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 022d1c41ec28476013280e5e0b8fcd27, }, ), received_events: EventHandle { count: 3240972667759678313, key: EventKey( [ 250, 11, 223, 176, 153, 191, 160, 254, 92, 182, 227, 99, 13, 170, 18, 122, 131, 4, 133, 252, 142, 112, 164, 111, ], ), }, sent_events: EventHandle { count: 4854885509733726615, key: EventKey( [ 238, 157, 151, 52, 18, 179, 28, 177, 162, 72, 28, 105, 247, 81, 104, 83, 124, 46, 179, 98, 46, 55, 110, 90, ], ), }, sequence_number: 5126836294464319428, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b39971a9343071c1e2d3fa59133d83b5832555f3d06ed95ae871c95d19b5d564): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01616f891069d05b9dfd1bb96c7d3ce813e1b4b5a1396dddde7c49dca43a8eb58ec6eb4c4c714fa7ae01f37e0d01c393b4045cad885fddc3db786f43d4ea8c8d3dfa813ee044de5a24e85ca22a4c612bb5fe70b6b48ce137a69e5153a0c611c6a0444a00003605377dbf97de401818ba2403a25b36cceab59815d67c0e68cd51aef3183f6b90fd2c8dd66831f82c1889c51bdd0ec00fbb6de213f9d7d3f473d7e26da677eb58d660734168186de6262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087a876740e0d17d07 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 111, 137, 16, 105, 208, 91, 157, 253, 27, 185, 108, 125, 60, 232, 19, 225, 180, 181, 161, 57, 109, 221, 222, 124, 73, 220, 164, 58, 142, 181, 142, 198, 235, 76, 76, 113, 79, 167, 174, 1, 243, 126, 13, 1, 195, 147, 180, 4, 92, 173, 136, 95, 221, 195, 219, 120, 111, 67, 212, 234, 140, 141, 61, 250, 129, 62, 224, 68, 222, 90, 36, 232, 92, 162, 42, 76, 97, 43, 181, 254, 112, 182, 180, 140, 225, 55, 166, 158, 81, 83, 160, 198, 17, 198, 160, 68, 74, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4674340311952459062, key: EventKey( [ 24, 186, 36, 3, 162, 91, 54, 204, 234, 181, 152, 21, 214, 124, 14, 104, 205, 81, 174, 243, 24, 63, 107, 144, ], ), }, sent_events: EventHandle { count: 3240394258239007997, key: EventKey( [ 137, 197, 27, 221, 14, 192, 15, 187, 109, 226, 19, 249, 215, 211, 244, 115, 215, 226, 109, 166, 119, 235, 88, 214, ], ), }, sequence_number: 2803047769680474976, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b426f89709f695cc9a9834f75e98252818392b51ee84beac9cdd5e9f2c98819d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988011b06ba32467c7cb45d30a705794e5390b1ed5d58994862487951d7f701e315fd90dff2bf5f0af911b836210e7201b2bf86d1902fcd9d2fd9482d82b2f9919bf03389e6560c4e1876fa257a3e29c8774dfeefb445a3c5c404804ebe7bb221ee993d2280c6b5b85518ca10fbc32809e564238d17cb96381023c5055dfd33130f0328ce4f4480bfdadb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b703e91dcf3f0836 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 186, 50, 70, 124, 124, 180, 93, 48, 167, 5, 121, 78, 83, 144, 177, 237, 93, 88, 153, 72, 98, 72, 121, 81, 215, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e315fd90dff2bf5f0af911b836210e72, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b2bf86d1902fcd9d2fd9482d82b2f991, }, ), received_events: EventHandle { count: 5623965582823256219, key: EventKey( [ 118, 250, 37, 122, 62, 41, 200, 119, 77, 254, 239, 180, 69, 163, 197, 196, 4, 128, 78, 190, 123, 178, 33, 238, ], ), }, sent_events: EventHandle { count: 6176886753096514969, key: EventKey( [ 202, 16, 251, 195, 40, 9, 229, 100, 35, 141, 23, 203, 150, 56, 16, 35, 197, 5, 93, 253, 51, 19, 15, 3, ], ), }, sequence_number: 15842185196851940904, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b4b6c502f2f29a4d50595799035f5014da8d8adefe9c404509d2f82d133a8d18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c232a2d2708024cf0cf0a4c7050183b20be9699b965e71db2388a96c5ff203198a8318f48fc92bcd8bca8dafec3a0e9df7f21743a55dbda6774c176de0178f8a97d125adab692ea1b21f5f1e857003666cc61f3fd2b06186c2f2f44fd84ee6712c0d54180ce24c5f49a88363824e4691f1f6b55e368c3461868a51d7c02bd2b47f7d1bf87f0be7357ad86a24e08fa93d0bc8b4ed1136226b62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708001b972500cf8a10 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 42, 45, 39, 8, 2, 76, 240, 207, 10, 76, 112, 80, 24, 59, 32, 190, 150, 153, 185, 101, 231, 29, 178, 56, 138, 150, 197, 255, 32, 49, 152, 168, 49, 143, 72, 252, 146, 188, 216, 188, 168, 218, 254, 195, 160, 233, 223, 127, 33, 116, 58, 85, 219, 218, 103, 116, 193, 118, 222, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 78f8a97d125adab692ea1b21f5f1e857, }, ), key_rotation_capability: None, received_events: EventHandle { count: 444728209985791542, key: EventKey( [ 108, 47, 47, 68, 253, 132, 238, 103, 18, 192, 213, 65, 128, 206, 36, 197, 244, 154, 136, 54, 56, 36, 228, 105, ], ), }, sent_events: EventHandle { count: 5099034528713482015, key: EventKey( [ 104, 165, 29, 124, 2, 189, 43, 71, 247, 209, 191, 135, 240, 190, 115, 87, 173, 134, 162, 78, 8, 250, 147, 208, ], ), }, sequence_number: 13125286001273375676, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b50d8a4d921fc591619c2b72f32dcf3a9cbda349198ea8a1dde104f8d5257bfb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac013fe86d8833323bb128932afe8734f474d81061c68883a6e36f3c643d5b2c33b1945db3e8b6a634bdaeb46fcb479b78d05e43108f3932400628d84096c581c92e0199e63c824c88381a426095a630832107011ad5302d92a2b0013a48362704e12c6b53848b3c9c07227f1857ff6f8563073a97667282a2fa9b9fcdc3e0249b9f883b72a48b4a4f0f51651818e7242de710694b183ec20e3f1c7948e797e0e6f2edebfad939ebff86c0296d2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087da67b16251c9d8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 109, 136, 51, 50, 59, 177, 40, 147, 42, 254, 135, 52, 244, 116, 216, 16, 97, 198, 136, 131, 166, 227, 111, 60, 100, 61, 91, 44, 51, 177, 148, 93, 179, 232, 182, 166, 52, 189, 174, 180, 111, 203, 71, 155, 120, 208, 94, 67, 16, 143, 57, 50, 64, 6, 40, 216, 64, 150, 197, 129, 201, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 99e63c824c88381a426095a630832107, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1ad5302d92a2b0013a48362704e12c6b, }, ), received_events: EventHandle { count: 9160892959637079123, key: EventKey( [ 87, 255, 111, 133, 99, 7, 58, 151, 102, 114, 130, 162, 250, 155, 159, 205, 195, 224, 36, 155, 159, 136, 59, 114, ], ), }, sent_events: EventHandle { count: 1757900355754691492, key: EventKey( [ 231, 36, 45, 231, 16, 105, 75, 24, 62, 194, 14, 63, 28, 121, 72, 231, 151, 224, 230, 242, 237, 235, 250, 217, ], ), }, sequence_number: 3273318411043597113, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b5d566dfb174d3d30b87c2124468f47a1b55b04584fb6b66c9daae300288426f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94d000000a2bf9d5f5b717072182a60276eb568cea2a7e3d908f019712b8539b5abb0072ed9a4b71063a9e47e021871dfe623272eb84be670b7b7250f0feaf1d258439e454ed1534c1fc1a1f536942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70848915c87eda05a87 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8246215554975514530, key: EventKey( [ 42, 96, 39, 110, 181, 104, 206, 162, 167, 227, 217, 8, 240, 25, 113, 43, 133, 57, 181, 171, 176, 7, 46, 217, ], ), }, sent_events: EventHandle { count: 179832451304044452, key: EventKey( [ 113, 223, 230, 35, 39, 46, 184, 75, 230, 112, 183, 183, 37, 15, 15, 234, 241, 210, 88, 67, 158, 69, 78, 209, ], ), }, sequence_number: 10679993641434303571, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b6e11006efe8b2394f6c9a9304705c62efcdc670736b0c609993b428c34592e3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e21f30ec656cc225988da23e93de349381096affe382c7703ae8ba3786794ca7878cc0186affebbddf1bc72b1dec73ef8354d36007fffc5e591fd1d7518b3a1d70fe97b045d6ef0f09bdab9f1f907306a1655934ead564735fc24fb1c7f185f240cec626f7e66c64c8c9c3c0ab28a6b25fede791b1e638b1ba8793000f9022101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085326d6777a687939 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 14, 198, 86, 204, 34, 89, 136, 218, 35, 233, 61, 227, 73, 56, 16, 150, 175, 254, 56, 44, 119, 3, 174, 139, 163, 120, 103, 148, 202, 120, 120, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86affebbddf1bc72b1dec73ef8354d36, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8439180079829221247, key: EventKey( [ 179, 161, 215, 15, 233, 123, 4, 93, 110, 240, 240, 155, 218, 185, 241, 249, 7, 48, 106, 22, 85, 147, 78, 173, ], ), }, sent_events: EventHandle { count: 9159471878433490774, key: EventKey( [ 95, 36, 12, 236, 98, 111, 126, 102, 198, 76, 140, 156, 60, 10, 178, 138, 107, 37, 254, 222, 121, 27, 30, 99, ], ), }, sequence_number: 214202665476299659, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8cf2031632ef696b5c44d435f668eb0a2fe923fce9cf38835cc19f35a68b09f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0db1ad43f727ff544d4d8babe6320111d911fe2aa3ffc63b42465ed2a2f77200ef439910a9a03e0318a25e33e60ad439f7bdb974ed84940a349c1155fb41663eeb9c9f1957e48b0c6018e10ea41d5ac4652a40aa566ed7643735ade225822508801715f6f52e208d431c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846a2b0b41e59cc65 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 173, 67, 247, 39, 255, 84, 77, 77, 139, 171, 230, 50, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 11d911fe2aa3ffc63b42465ed2a2f772, }, ), key_rotation_capability: None, received_events: EventHandle { count: 233800878658241519, key: EventKey( [ 162, 94, 51, 230, 10, 212, 57, 247, 189, 185, 116, 237, 132, 148, 10, 52, 156, 17, 85, 251, 65, 102, 62, 235, ], ), }, sent_events: EventHandle { count: 6921060540191711132, key: EventKey( [ 225, 14, 164, 29, 90, 196, 101, 42, 64, 170, 86, 110, 215, 100, 55, 53, 173, 226, 37, 130, 37, 8, 128, 23, ], ), }, sequence_number: 2036626625867937301, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8e4cec6a78cb7620eaf2af2ff237bdd4f9feb95e56db44a3a2001b6a55e3f7d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c990014355e6b0e48d36e7b1a18f5609bc7c09f054ca1323d6a0c416da36977423f6ed293c25305e37a0ab3ec5679ce6e2c2d79f359b2ce88660a242b49b848d8910f7cb85dfee0000d09b503dcd51f32f186c4495330ec6edb895ca72cef53d5b97b1429f00d75581ef054752146c86af14180ea680a416bb78eb99dbb44c807aac0d07d752c3b2ca8f5507af999b01d0fe042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70841e8d258853dab84 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 85, 230, 176, 228, 141, 54, 231, 177, 161, 143, 86, 9, 188, 124, 9, 240, 84, 202, 19, 35, 214, 160, 196, 22, 218, 54, 151, 116, 35, 246, 237, 41, 60, 37, 48, 94, 55, 160, 171, 62, 197, 103, 156, 230, 226, 194, 215, 159, 53, 155, 44, 232, 134, 96, 162, 66, 180, 155, 132, 141, 137, 16, 247, 203, 133, 223, 238, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3455195281062140880, key: EventKey( [ 108, 68, 149, 51, 14, 198, 237, 184, 149, 202, 114, 206, 245, 61, 91, 151, 177, 66, 159, 0, 215, 85, 129, 239, ], ), }, sent_events: EventHandle { count: 1490557800438449925, key: EventKey( [ 14, 166, 128, 164, 22, 187, 120, 235, 153, 219, 180, 76, 128, 122, 172, 13, 7, 215, 82, 195, 178, 202, 143, 85, ], ), }, sequence_number: 359953725560303367, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb31c77b022f20c2fe792d4ba04a71f4713215644847f876ea5b26f3bb3863fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01503b183cbc0f1957a3ccae6d53609af928379faa6a9276b1b72de30d5011e02baf1372aadf0b949869b2fe6488f8efed3c3bfa6d61bc813fae1366a502d9c5f83e85a7ba2af9ff14804a30c43c20be994701b76103d6702f25ebbbc71dd384be9c6a01b9bbbca300ae7f927c17034fb150c3547dbdf127eee7300c187dcabcd5b6769ec08deb814a84e8a1da3442bedc8b4220bcb448f0b3b7b06b2d18384ae2928b479e372fc4f01b26ed3573f8b9fb8681b0a0e78023d02f8c2fa6af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827d94964c7df0b40 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 24, 60, 188, 15, 25, 87, 163, 204, 174, 109, 83, 96, 154, 249, 40, 55, 159, 170, 106, 146, 118, 177, 183, 45, 227, 13, 80, 17, 224, 43, 175, 19, 114, 170, 223, 11, 148, 152, 105, 178, 254, 100, 136, 248, 239, 237, 60, 59, 250, 109, 97, 188, 129, 63, 174, 19, 102, 165, 2, 217, 197, 248, 62, 133, 167, 186, 42, 249, 255, 20, 128, 74, 48, 196, 60, 32, 190, 153, 71, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b76103d6702f25ebbbc71dd384be9c6a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b9bbbca300ae7f927c17034fb150c354, }, ), received_events: EventHandle { count: 878456937395633533, key: EventKey( [ 125, 202, 188, 213, 182, 118, 158, 192, 141, 235, 129, 74, 132, 232, 161, 218, 52, 66, 190, 220, 139, 66, 32, 188, ], ), }, sent_events: EventHandle { count: 3272903857259169972, key: EventKey( [ 56, 74, 226, 146, 139, 71, 158, 55, 47, 196, 240, 27, 38, 237, 53, 115, 248, 185, 251, 134, 129, 176, 160, 231, ], ), }, sequence_number: 12656856081915454336, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc441dd51f412fa62e1818f840b2b06dad6e7f62c38fc91efe5dcce72d741918): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920125a7c33937e8c98ba8773a49d06a2a1e33844a0b1e3e78106e80d30c049df5bb774988b9700201dbe0e123ce64199af646399f1342100701b3c93acd5da803f1d1d7ca6503e0ebd600904637ab4d0c4018f0ad2df11c2f9c7eff6f718a53f03189cb705c53d9d71a1b0793717b57b63961186b235a5c6896e3288cdfcfdb672e0ff00316808bfee3a402b155725434c3247d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708134baa1ec1cffe92 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 167, 195, 57, 55, 232, 201, 139, 168, 119, 58, 73, 208, 106, 42, 30, 51, 132, 74, 11, 30, 62, 120, 16, 110, 128, 211, 12, 4, 157, 245, 187, 119, 73, 136, 185, 112, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dbe0e123ce64199af646399f13421007, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b3c93acd5da803f1d1d7ca6503e0ebd6, }, ), received_events: EventHandle { count: 4615149115910033408, key: EventKey( [ 240, 173, 45, 241, 28, 47, 156, 126, 255, 111, 113, 138, 83, 240, 49, 137, 203, 112, 92, 83, 217, 215, 26, 27, ], ), }, sent_events: EventHandle { count: 7005831182200967943, key: EventKey( [ 107, 35, 90, 92, 104, 150, 227, 40, 140, 223, 207, 219, 103, 46, 15, 240, 3, 22, 128, 139, 254, 227, 164, 2, ], ), }, sequence_number: 9017546983425070513, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc79a7e906dd2ed09d6d4e90aeca1135393304c3f34aa18f2cf787715f54a556): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a011da2e4176943effa04986f798c3c8e22e1ebd1e7c27df5495a12fa66440a01a6f579beb59b201560cd28b983860dc7012e6dd4d8e8a7442557307f9402f2f4f67df3bb9203adbb521803156008a04eff638add2aaf09630f7b076bf2e5f45717c12284e9e32d52973b18426c63487bfc70c2c42c9f977137895b19e9282909ce679b06bac48cb02e49592101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c871a841e2dd6f54 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 228, 23, 105, 67, 239, 250, 4, 152, 111, 121, 140, 60, 142, 34, 225, 235, 209, 231, 194, 125, 245, 73, 90, 18, 250, 102, 68, 10, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a6f579beb59b201560cd28b983860dc7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2e6dd4d8e8a7442557307f9402f2f4f6, }, ), received_events: EventHandle { count: 5961548762613281661, key: EventKey( [ 3, 21, 96, 8, 160, 78, 255, 99, 138, 221, 42, 175, 9, 99, 15, 123, 7, 107, 242, 229, 244, 87, 23, 193, ], ), }, sent_events: EventHandle { count: 4293991126771794978, key: EventKey( [ 66, 108, 99, 72, 123, 252, 112, 194, 196, 44, 159, 151, 113, 55, 137, 91, 25, 233, 40, 41, 9, 206, 103, 155, ], ), }, sequence_number: 6433724878486288902, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(be698b9849e5e213aafc998a5fe4bf7e0f1e07c86ef445464922cdd8653cd303): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965085357fad637e22b63015e25cf98f339bca72e364c91820eab1f00d1cfd4ce40b7306718340e8630d33de5b39b1ef6650dba301ba4dbaa6361955ea3e8101d18e9f16114182389b3fe2a92aef5e4b06d0f9ad3f954fe24341d48926d10b8007286b692bd722101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7baf4694db0306a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 87, 250, 214, 55, 226, 43, 99, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5e25cf98f339bca72e364c91820eab1f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7435644473764532177, key: EventKey( [ 52, 14, 134, 48, 211, 61, 229, 179, 155, 30, 246, 101, 13, 186, 48, 27, 164, 219, 170, 99, 97, 149, 94, 163, ], ), }, sent_events: EventHandle { count: 1468720936933724392, key: EventKey( [ 35, 137, 179, 254, 42, 146, 174, 245, 228, 176, 109, 15, 154, 211, 249, 84, 254, 36, 52, 29, 72, 146, 109, 16, ], ), }, sequence_number: 8267925803559420088, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf5ab39c50d0aa0cc86965c7f0af67dacef01ccbf4322bc689c0bd7120e2a46a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b4bbba40b945af1776ce093be3f68640df40def8c8296da344f7e4fbf644f59f92a3f3e6ad6fc8b5d0a2fed01c2a357926416b50c8d58534ade7535e6004cd8bee9c354113918b7de0d947fbdf423fc26fc971a1e7706e34d455f28a866e35ae162d7c3f0fd34189d7d5fe9cbd9f6c9a0e401571d781070a8866bdbdcb0fa29d9500ef507a9e09d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089392f9b64294a6a9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 187, 164, 11, 148, 90, 241, 119, 108, 224, 147, 190, 63, 104, 100, 13, 244, 13, 239, 140, 130, 150, 218, 52, 79, 126, 79, 191, 100, 79, 89, 249, 42, 63, 62, 106, 214, 252, 139, 93, 10, 47, 237, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c2a357926416b50c8d58534ade7535e6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4112161135182927948, key: EventKey( [ 183, 222, 13, 148, 127, 189, 244, 35, 252, 38, 252, 151, 26, 30, 119, 6, 227, 77, 69, 95, 40, 168, 102, 227, ], ), }, sent_events: EventHandle { count: 3818472783002919258, key: EventKey( [ 157, 125, 95, 233, 203, 217, 246, 201, 160, 228, 1, 87, 29, 120, 16, 112, 168, 134, 107, 219, 220, 176, 250, 41, ], ), }, sequence_number: 11376278510379094233, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c53fef7fc8e45943d94c7344f32b961c503e4a17e8fe3df36befd883a5dfc550): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e115ae6ba3a64201ee71b921f8ec2a90abacc01e4d932ec520c1c7937b62b5c43bfa532004261509edf7e154a18f8bef26ca07d15ca0c986cce3b9c91a522d71c4db0a6bd080a8898ee20446515188715e3883ad1e7f317c8499a933811aba0780b903a2c9f12cecb367afbc6199c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70816c85e8a801748e8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 230, 186, 58, 100, 32, 30, 231, 27, 146, 31, 142, 194, 169, 10, 186, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e4d932ec520c1c7937b62b5c43bfa532, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5338312432216465730, key: EventKey( [ 248, 190, 242, 108, 160, 125, 21, 202, 12, 152, 108, 206, 59, 156, 145, 165, 34, 215, 28, 77, 176, 166, 189, 8, ], ), }, sent_events: EventHandle { count: 1541713355676878858, key: EventKey( [ 135, 21, 227, 136, 58, 209, 231, 243, 23, 200, 73, 154, 147, 56, 17, 171, 160, 120, 11, 144, 58, 44, 159, 18, ], ), }, sequence_number: 11248240327724026830, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c70cfd8532046c67e134a56d7c7b144f26e8722114f810f6d85b409c927e869a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580b29cff3e6b9a91a7b246c6c00006dc5e14f25c4ff4718b5e49df641988c45968c8c584e01a532c0508032b167013007dc2810db0e7e091822905a0e8df7564673be2cd18a37d0ed39bbb870d0be90dcec30a127696ee4c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085900526180ee4b9e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 41, 207, 243, 230, 185, 169, 26, 123, 36, 108, 108, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5188080960287130989, key: EventKey( [ 181, 228, 157, 246, 65, 152, 140, 69, 150, 140, 140, 88, 78, 1, 165, 50, 192, 80, 128, 50, 177, 103, 1, 48, ], ), }, sent_events: EventHandle { count: 684000527438633991, key: EventKey( [ 34, 144, 90, 14, 141, 247, 86, 70, 115, 190, 44, 209, 138, 55, 208, 237, 57, 187, 184, 112, 208, 190, 144, 220, ], ), }, sequence_number: 13971413341925617900, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ca1a650fe932ea9150162134e8055ee19ac34d75f9e6229eb3cfc7a4f6e323e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130e2ca50826bf22f623d2ec416f88dd93aa2937af16845187b6330936cfeaffaca68796803c47e4ceb5480ba0d3db437ff0001b4fe6b63cbfc825a74a478b35d952856a6cc9d26cf5e130918ae638e1f1224509f26d2951d2b4940be74688ffae7856b6ac69ffa4763c89a0d18731c1de781ec3636417d02e861bf07a46e8487f6dd25815580af332ba4c27d8f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844906c3d427d1374 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 202, 80, 130, 107, 242, 47, 98, 61, 46, 196, 22, 248, 141, 217, 58, 162, 147, 122, 241, 104, 69, 24, 123, 99, 48, 147, 108, 254, 175, 250, 202, 104, 121, 104, 3, 196, 126, 76, 235, 84, 128, 186, 13, 61, 180, 55, 255, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b4fe6b63cbfc825a74a478b35d952856, }, ), received_events: EventHandle { count: 653970614697970854, key: EventKey( [ 174, 99, 142, 31, 18, 36, 80, 159, 38, 210, 149, 29, 43, 73, 64, 190, 116, 104, 143, 250, 231, 133, 107, 106, ], ), }, sent_events: EventHandle { count: 980316197641428934, key: EventKey( [ 115, 28, 29, 231, 129, 236, 54, 54, 65, 125, 2, 232, 97, 191, 7, 164, 110, 132, 135, 246, 221, 37, 129, 85, ], ), }, sequence_number: 10339634329867759488, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cadefc1a40fc8d5e49eb8805d86ce459f0e96500d31cdfa771f541fd591c1de3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b787651d80a356d6e5055240caf3c43b893f5badfb38560f64b5929679f22935a1ac5452357f8129fabda0501112c93b35537e2a07f2006450d5a9419009c2837f0f7e72870182e0b2712cdf83c89c5dd0a97eba6ecc286c40d00eb19eeb2a91b596687d7362418bd92bc5e47cbb4d1b3e11c1a62e324edc73f96bd56fc36309149987de29d41992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ebbc2fbd7a0eb995 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 120, 118, 81, 216, 10, 53, 109, 110, 80, 85, 36, 12, 175, 60, 67, 184, 147, 245, 186, 223, 179, 133, 96, 246, 75, 89, 41, 103, 159, 34, 147, 90, 26, 197, 69, 35, 87, 248, 18, 159, 171, 218, 5, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 112c93b35537e2a07f2006450d5a9419, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8081964583389440156, key: EventKey( [ 46, 11, 39, 18, 205, 248, 60, 137, 197, 221, 10, 151, 235, 166, 236, 194, 134, 196, 13, 0, 235, 25, 238, 178, ], ), }, sent_events: EventHandle { count: 2609510010645453737, key: EventKey( [ 189, 146, 188, 94, 71, 203, 180, 209, 179, 225, 28, 26, 98, 227, 36, 237, 199, 63, 150, 189, 86, 252, 54, 48, ], ), }, sequence_number: 11043281357384468881, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d61f0a7fa92af79e25f06c4eaf2145e52530bd1c1cc4f22d8796e020ac88238b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40157d754cae8e091ce02f30b1318e9b37a9ae331b974c8a1c62452519b1db2985ef86e6d5d781d5b7235622a14ea006917ec1996d2740d0b61ceaa9167982768db340d944c967e974ff33dbe7cdeaa6dedee46d520d4e145690000e02b6d53d040cf3118b650d090ea40b89efa7984952c187e8b5bfe5a29fcf4f93da3f2f16a40836f4318b64658237c44cbdf0b5e26961a5d88e0107ec26c0507ea939d65825caa058b8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce9b7db6a6b55079 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 84, 202, 232, 224, 145, 206, 2, 243, 11, 19, 24, 233, 179, 122, 154, 227, 49, 185, 116, 200, 161, 198, 36, 82, 81, 155, 29, 178, 152, 94, 248, 110, 109, 93, 120, 29, 91, 114, 53, 98, 42, 20, 234, 0, 105, 23, 236, 25, 150, 210, 116, 13, 11, 97, 206, 170, 145, 103, 152, 39, 104, 219, 52, 13, 148, 76, 150, 126, 151, 79, 243, 61, 190, 124, 222, 170, 109, 237, 238, 70, 213, 32, 212, 225, 69, 105, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3589158691534613472, key: EventKey( [ 182, 80, 208, 144, 234, 64, 184, 158, 250, 121, 132, 149, 44, 24, 126, 139, 91, 254, 90, 41, 252, 244, 249, 61, ], ), }, sent_events: EventHandle { count: 4859246835651441315, key: EventKey( [ 182, 70, 88, 35, 124, 68, 203, 223, 11, 94, 38, 150, 26, 93, 136, 224, 16, 126, 194, 108, 5, 7, 234, 147, ], ), }, sequence_number: 10127194416327320989, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d62a163fd1be618fd28d1811bdc0630f1378d2e912301d73329bf616cc79178b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c013f134765a6c3ed2bd49c8737e5a726d311fd6f0b0089a2a4b7faf1a8ee8cde9663c31ce8c741deed5371a3e13f77db0cb33b0f76200452efa5dc444947f3c6bf00000d6fd6fd7a49e57a18a3b90daa155c5f2d6378ee3bcaccba70ade48e80ea375ac6a3b67f9ed4b2534918b85ecbe38d30c07cf61ed366e65378836a2fcf38d96a40450506957bd41d04132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc9533e5d7032094 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 19, 71, 101, 166, 195, 237, 43, 212, 156, 135, 55, 229, 167, 38, 211, 17, 253, 111, 11, 0, 137, 162, 164, 183, 250, 241, 168, 238, 140, 222, 150, 99, 195, 28, 232, 199, 65, 222, 237, 83, 113, 163, 225, 63, 119, 219, 12, 179, 59, 15, 118, 32, 4, 82, 239, 165, 220, 68, 73, 71, 243, 198, 191, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8855565034887474957, key: EventKey( [ 163, 185, 13, 170, 21, 92, 95, 45, 99, 120, 238, 59, 202, 204, 186, 112, 173, 228, 142, 128, 234, 55, 90, 198, ], ), }, sent_events: EventHandle { count: 5283763414097704611, key: EventKey( [ 184, 94, 203, 227, 141, 48, 192, 124, 246, 30, 211, 102, 230, 83, 120, 131, 106, 47, 207, 56, 217, 106, 64, 69, ], ), }, sequence_number: 1370252985071109637, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8355b98eeb339bdd973128e5dca885b4d70b2df4ad9f5cb13d890c0c9badf18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f26c969cdab240029db9d5cf571d7f6013ab41e23b542740c1583fddff8a0ee7700617b1f7cf361962c18c67b07ffdac099bc921b45a6adb1d9f7aeb1fa6aa3f696ee526e12b37a04743a1882accddeacf601d67d2f4aeaaa308920d97018951d13e8b6dd6b71b287ebe5562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f4d557675b32724 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 201, 105, 205, 171, 36, 0, 41, 219, 157, 92, 245, 113, 215, 246, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3ab41e23b542740c1583fddff8a0ee77, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3212863082562812769, key: EventKey( [ 198, 123, 7, 255, 218, 192, 153, 188, 146, 27, 69, 166, 173, 177, 217, 247, 174, 177, 250, 106, 163, 246, 150, 238, ], ), }, sent_events: EventHandle { count: 4211996476535107154, key: EventKey( [ 130, 172, 205, 222, 172, 246, 1, 214, 125, 47, 74, 234, 170, 48, 137, 32, 217, 112, 24, 149, 29, 19, 232, 182, ], ), }, sequence_number: 6261669824975432669, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db43c714a19842c48854a7b3a588b137544380a0011191bfc213386de4151aa6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122b2715b7ad956ba9d8b7a134950c00e0db0a60d29f7ee8e2967691bd330e9214e4e370100b862b902ff888a8cb42fd673f7239c014244df2237436bec1a8a8312d9b209d6fb96ac415d3292681890b36b2256322faa11ee2b287ff441ce7d3e1767341bb052ed8c4d9758766e0f18f732b69c5dc8ffa663279abffd32e52bcc7fff8b57b2f4c7410a80ea9c89b7cb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac71d17d3aa06b15 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 178, 113, 91, 122, 217, 86, 186, 157, 139, 122, 19, 73, 80, 192, 14, 13, 176, 166, 13, 41, 247, 238, 142, 41, 103, 105, 27, 211, 48, 233, 33, 78, 78, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00b862b902ff888a8cb42fd673f7239c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4244df2237436bec1a8a8312d9b209d6, }, ), received_events: EventHandle { count: 7535140502659438331, key: EventKey( [ 144, 179, 107, 34, 86, 50, 47, 170, 17, 238, 43, 40, 127, 244, 65, 206, 125, 62, 23, 103, 52, 27, 176, 82, ], ), }, sent_events: EventHandle { count: 1111956280874732781, key: EventKey( [ 247, 50, 182, 156, 93, 200, 255, 166, 99, 39, 154, 191, 253, 50, 229, 43, 204, 127, 255, 139, 87, 178, 244, 199, ], ), }, sequence_number: 14679352817479584321, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db81c2eae3f845f7eb60093fa5a8f1f1a356cf1ea96e41d1a48204e1a4429fbe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d10b6be47cbd8ceda88d59e2ce2c2d5fd9a018dd0b3d516ffe4baef592ef83d3e5ae5008b3f8fd01f344f6a182d3f35fe382556f0214559c181d5ad0dc27542a702a5a98aa7174c2735c2075c18ad76fd359a2abce67c68dc8469680def841ea7662ecd7aab8aaa2fa765ed7e202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f5ced8c797d7842b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 190, 71, 203, 216, 206, 218, 136, 213, 158, 44, 226, 194, 213, 253, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8dd0b3d516ffe4baef592ef83d3e5ae5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7660398802428182411, key: EventKey( [ 45, 63, 53, 254, 56, 37, 86, 240, 33, 69, 89, 193, 129, 213, 173, 13, 194, 117, 66, 167, 2, 165, 169, 138, ], ), }, sent_events: EventHandle { count: 6631482509874698151, key: EventKey( [ 173, 118, 253, 53, 154, 42, 188, 230, 124, 104, 220, 132, 105, 104, 13, 239, 132, 30, 167, 102, 46, 205, 122, 171, ], ), }, sequence_number: 2341569877131635338, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd8d31a87348c196294c92c2e4a4e6c1aaefa4c7cc387ef6e49177b7855498c8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149a21a6ef19a90ec3a2aa68aa046a6b5a58a755e8a8af7b789cfb48e89c1420be045b269b19f0023691bc082f8aa9550bd2c0241bd91ad04955561344cf415fad40f347950dae9004da50001de119fe5b80f7694c8707e91cfa90d480df73244409c4f54182bedfde1792a1327a8c04b7649eef1729e344cdb108426f66b3acd36415b9425188436320f53cdaa275bceb5ba05edf9c5e6bff8e0d8567bd3685f5f85dcdbd4932101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3f28b44c2a71daa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 26, 110, 241, 154, 144, 236, 58, 42, 166, 138, 160, 70, 166, 181, 165, 138, 117, 94, 138, 138, 247, 183, 137, 207, 180, 142, 137, 193, 66, 11, 224, 69, 178, 105, 177, 159, 0, 35, 105, 27, 192, 130, 248, 170, 149, 80, 189, 44, 2, 65, 189, 145, 173, 4, 149, 85, 97, 52, 76, 244, 21, 250, 212, 15, 52, 121, 80, 218, 233, 0, 77, 165, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de119fe5b80f7694c8707e91cfa90d48, }, ), received_events: EventHandle { count: 6075246222182119181, key: EventKey( [ 43, 237, 253, 225, 121, 42, 19, 39, 168, 192, 75, 118, 73, 238, 241, 114, 158, 52, 76, 219, 16, 132, 38, 246, ], ), }, sent_events: EventHandle { count: 2707889611606932075, key: EventKey( [ 132, 54, 50, 15, 83, 205, 170, 39, 91, 206, 181, 186, 5, 237, 249, 197, 230, 191, 248, 224, 216, 86, 123, 211, ], ), }, sequence_number: 10652380758814973800, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df0dc4e366597685f0ba10a5fc6df847390d0f8e920dc43bc74b2f401b90b5a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401477649dd2d500ae108a435b3c4021072e4f67dc1f3c7f4c15130dc4b9bb5f8fc56791dc252bc176c6d167f67062fe213237807eb89232fb20cc2075ec04df6b210200c894b9a051f0000391ae5b24514045f188126f6095a15847f4a4dc064f808d7eb797dac1ff1564ca381673d414a99127b18649dd454cc9fb470571d3f0a2594b399fce8d127bafb5dadf9b5ef675f3f2b802101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70853ad3d33947d1254 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 73, 221, 45, 80, 10, 225, 8, 164, 53, 179, 196, 2, 16, 114, 228, 246, 125, 193, 243, 199, 244, 193, 81, 48, 220, 75, 155, 181, 248, 252, 86, 121, 29, 194, 82, 188, 23, 108, 109, 22, 127, 103, 6, 47, 226, 19, 35, 120, 7, 235, 137, 35, 47, 178, 12, 194, 7, 94, 192, 77, 246, 178, 16, 32, 12, 137, 75, 154, 5, 31, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6846619623096654393, key: EventKey( [ 129, 38, 246, 9, 90, 21, 132, 127, 74, 77, 192, 100, 248, 8, 215, 235, 121, 125, 172, 31, 241, 86, 76, 163, ], ), }, sent_events: EventHandle { count: 8868319160447100801, key: EventKey( [ 100, 157, 212, 84, 204, 159, 180, 112, 87, 29, 63, 10, 37, 148, 179, 153, 252, 232, 209, 39, 186, 251, 93, 173, ], ), }, sequence_number: 9235545139851539961, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0c5ce1e83f2a4ed01f44d5b99afcfc7c92932af1b5809faf63e781f1c2e61d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133d55fde1a59912c9feb943568a1b1b4865cb49f2ba7a7ba80b6bd270186db1b7e36d453f8f1bb1e5099f45de25ff020f44fac24010e36145710af596408d8a5cd52afd6f1000bc298574594cd2118b9fcd388a85d264395809ebd6eec0d2d9906de9848184026b0d1c2424b06260418df682d77a7f41eff302a643463688e5e80671f4adc0d97c5f22f8d8738091e5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d81126ad3b8d4f2e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 95, 222, 26, 89, 145, 44, 159, 235, 148, 53, 104, 161, 177, 180, 134, 92, 180, 159, 43, 167, 167, 186, 128, 182, 189, 39, 1, 134, 219, 27, 126, 54, 212, 83, 248, 241, 187, 30, 80, 153, 244, 93, 226, 95, 240, 32, 244, 79, 172, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0e36145710af596408d8a5cd52afd6f1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2435765999020589579, key: EventKey( [ 185, 252, 211, 136, 168, 93, 38, 67, 149, 128, 158, 189, 110, 236, 13, 45, 153, 6, 222, 152, 72, 24, 64, 38, ], ), }, sent_events: EventHandle { count: 298933345579094448, key: EventKey( [ 223, 104, 45, 119, 167, 244, 30, 255, 48, 42, 100, 52, 99, 104, 142, 94, 128, 103, 31, 74, 220, 13, 151, 197, ], ), }, sequence_number: 6565695445149757426, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e11964bc2643422ca7322696a0661ab980185a8462bd26c6e2525928b79c1ae5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e19c15720d2c2d9f1e87357d3c018ad5cafbb892bef18cc1e845f49d4f4b56aa5f57d239856e37e11fc72d60069e14057a89acff3c164d40f8772a660ead32b76e88aad5ed64bf5bed313d117dab0abcdd9b0a5ff39cfacab29e5b2fb9da70001843ecbf1cab982faa6af717edacd860c1ef5f11bc3b30d791885bc31a4fc3d094a34d83a1b7b85368d942d7d4430b6ada98eb6ed3c10088f4f18484660ea18b6ad0da49ee6b969c594701d95cdcd9accfe3a63a2cc47cd8edf482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc3725a1bdd90651 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 25, 193, 87, 32, 210, 194, 217, 241, 232, 115, 87, 211, 192, 24, 173, 92, 175, 187, 137, 43, 239, 24, 204, 30, 132, 95, 73, 212, 244, 181, 106, 165, 245, 125, 35, 152, 86, 227, 126, 17, 252, 114, 214, 0, 105, 225, 64, 87, 168, 154, 207, 243, 193, 100, 212, 15, 135, 114, 166, 96, 234, 211, 43, 118, 232, 138, 173, 94, 214, 75, 245, 190, 211, 19, 209, 23, 218, 176, 171, 205, 217, 176, 165, 255, 57, 207, 172, 171, 41, 229, 178, 251, 157, 167, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 843ecbf1cab982faa6af717edacd860c, }, ), received_events: EventHandle { count: 8722825703855355166, key: EventKey( [ 133, 188, 49, 164, 252, 61, 9, 74, 52, 216, 58, 27, 123, 133, 54, 141, 148, 45, 125, 68, 48, 182, 173, 169, ], ), }, sent_events: EventHandle { count: 5732809716500641422, key: EventKey( [ 72, 70, 96, 234, 24, 182, 173, 13, 164, 158, 230, 185, 105, 197, 148, 112, 29, 149, 205, 205, 154, 204, 254, 58, ], ), }, sequence_number: 5251072702861320803, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e25e4c49558e4e2ad8640d9326c9dd9cc1af78eb4c103980726f5f39996a7ac3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b30dbb45004e7442e85852601191e738c5055185011178422f1db578a0192a184dc0f66a836964c98930679b79d4ed536727ce6506018140fbf30f8acfd8fb7dcb149de1c11c32ad6e4f74c9750f152cc8df17ef8767c18f5fe70a577e37d49b9dd9859ff0be9c2408caba72d9a16cc305fc53c0e4a4f432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e014d74f70dac4d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 219, 180, 80, 4, 231, 68, 46, 133, 133, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 191e738c5055185011178422f1db578a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 92a184dc0f66a836964c98930679b79d, }, ), received_events: EventHandle { count: 6940300447944463694, key: EventKey( [ 20, 15, 191, 48, 248, 172, 253, 143, 183, 220, 177, 73, 222, 28, 17, 195, 42, 214, 228, 247, 76, 151, 80, 241, ], ), }, sent_events: EventHandle { count: 8968628932057091154, key: EventKey( [ 245, 254, 112, 165, 119, 227, 125, 73, 185, 221, 152, 89, 255, 11, 233, 194, 64, 140, 171, 167, 45, 154, 22, 204, ], ), }, sequence_number: 4850176748710879024, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e2f9c14947ed996e6f8e37e5f5ceb945302b1b38c272922ae6a07b0b0d1aec04): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c8015b33aace5cd9ab99c4dbb6c2396680d74772f3f09c3cb43cc2afefd7f66dc4d0f6482acaabf0a08eff91973af768ebb17cdc1587cc0cbf7af51393c7c983af35a11a1a228951c7f5943cb386f0a25a62c50173a039a78c68afeeb72801363ba3eb0b752aff7786e4371207594801ca429cfb7927c769b19509842d35e90144770644e400b205188a68d3b03b488e69b8eb00deb6b2b8ea166dd38b36854b96ac57d4333a454a4b189f4cc56fbcddf627efca2eae62be87bc9d93951d3b16f6be160380de5673271e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881d70fbac32a9936 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 51, 170, 206, 92, 217, 171, 153, 196, 219, 182, 194, 57, 102, 128, 215, 71, 114, 243, 240, 156, 60, 180, 60, 194, 175, 239, 215, 246, 109, 196, 208, 246, 72, 42, 202, 171, 240, 160, 142, 255, 145, 151, 58, 247, 104, 235, 177, 124, 220, 21, 135, 204, 12, 191, 122, 245, 19, 147, 199, 201, 131, 175, 53, 161, 26, 26, 34, 137, 81, 199, 245, 148, 60, 179, 134, 240, 162, 90, 98, 197, 1, 115, 160, 57, 167, 140, 104, 175, 238, 183, 40, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 363ba3eb0b752aff7786e43712075948, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ca429cfb7927c769b19509842d35e901, }, ), received_events: EventHandle { count: 410391496437954372, key: EventKey( [ 138, 104, 211, 176, 59, 72, 142, 105, 184, 235, 0, 222, 182, 178, 184, 234, 22, 109, 211, 139, 54, 133, 75, 150, ], ), }, sent_events: EventHandle { count: 5425224817401157548, key: EventKey( [ 159, 76, 197, 111, 188, 221, 246, 39, 239, 202, 46, 174, 98, 190, 135, 188, 157, 147, 149, 29, 59, 22, 246, 190, ], ), }, sequence_number: 2172832162166866710, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e354a4b1e3578eb8466c0392c1e67758a48f6abd3306b269b13292ae05ba2916): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139acc7e82f0a7cc186a47b4a2659dc816696b8a7e71a68f81f64385240deb4cea420ddbb70293db30de7ed8cb4b88f4d43b96c49e2971c15ceb401fee04887b34580e6d09d3a94759b9dfe00675d52417a4e120e189ea9cf122047fd480e66604c703b4a2f2c1490906f992e5b6ec5b7371ca5e8211898b6e5b54c0718f9a4da21d60a90f3c8107b073e398fb3f9699e335fa6801dfa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db4cbee8d4eb1b70 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 199, 232, 47, 10, 124, 193, 134, 164, 123, 74, 38, 89, 220, 129, 102, 150, 184, 167, 231, 26, 104, 248, 31, 100, 56, 82, 64, 222, 180, 206, 164, 32, 221, 187, 112, 41, 61, 179, 13, 231, 237, 140, 180, 184, 143, 77, 67, 185, 108, 73, 226, 151, 28, 21, 206, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fee04887b34580e6d09d3a94759b9dfe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1013959153100676455, key: EventKey( [ 158, 169, 207, 18, 32, 71, 253, 72, 14, 102, 96, 76, 112, 59, 74, 47, 44, 20, 144, 144, 111, 153, 46, 91, ], ), }, sent_events: EventHandle { count: 2443384338460951918, key: EventKey( [ 152, 182, 229, 181, 76, 7, 24, 249, 164, 218, 33, 214, 10, 144, 243, 200, 16, 123, 7, 62, 57, 143, 179, 249, ], ), }, sequence_number: 18022702735856737897, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e65d267873b8653ee157d6db04f68602b013733ea5f46330cf763519f19c7897): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ed622cd25d02745aee0a7ccd292672732bd0af6e96a162d9477097e1dc1f0857d1df8ffecce9f70882d77483548f37214bd982b0862915459d15a83095014d180bb924c893ec2005e0d3f77c9d03fba85103b6e444e30aedc086ef7c609e101f4c9bc7b6b24f544ce2bfebb414800d200077bd168c69753601804ef4e1275ebb89568a6fa6f7c259eee6ec6dff4c9386a832501b42b8b583a5c18d61f1e8b351093eab0d3ebdbc6d743dd4e14b0f44b6be4cc6332d860f5036cc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851fdf44f71153cea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 214, 34, 205, 37, 208, 39, 69, 174, 224, 167, 204, 210, 146, 103, 39, 50, 189, 10, 246, 233, 106, 22, 45, 148, 119, 9, 126, 29, 193, 240, 133, 125, 29, 248, 255, 236, 206, 159, 112, 136, 45, 119, 72, 53, 72, 243, 114, 20, 189, 152, 43, 8, 98, 145, 84, 89, 209, 90, 131, 9, 80, 20, 209, 128, 187, 146, 76, 137, 62, 194, 0, 94, 13, 63, 119, 201, 208, 63, 186, 133, 16, 59, 110, 68, 78, 48, 174, 220, 8, 110, 247, 198, 9, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f4c9bc7b6b24f544ce2bfebb414800d2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6941058329125944071, key: EventKey( [ 4, 239, 78, 18, 117, 235, 184, 149, 104, 166, 250, 111, 124, 37, 158, 238, 110, 198, 223, 244, 201, 56, 106, 131, ], ), }, sent_events: EventHandle { count: 6645721554895503653, key: EventKey( [ 214, 31, 30, 139, 53, 16, 147, 234, 176, 211, 235, 219, 198, 215, 67, 221, 78, 20, 176, 244, 75, 107, 228, 204, ], ), }, sequence_number: 13937519299231494755, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e67cfa1db1599b4ad27b04583bab32605d90ab35dbfa697720181de5c2cb56eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f020c710001b5d686a456cfd5b0130913e4099fc7a4a1b49d1c35aa730f1873219115ac5bbde96b7d5a541cb8d9ecbd159ca72ee889ed36dac32ab578c6651802442d2132521ff0ba5dfe134509ba5366b798f8f0281ff3ccafca1d3b7c62642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708558ee1d93b410881 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 113, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b5d686a456cfd5b0130913e4099fc7a4, }, ), received_events: EventHandle { count: 1113420677980730529, key: EventKey( [ 115, 33, 145, 21, 172, 91, 189, 233, 107, 125, 90, 84, 28, 184, 217, 236, 189, 21, 156, 167, 46, 232, 137, 237, ], ), }, sent_events: EventHandle { count: 7333681762721323574, key: EventKey( [ 2, 68, 45, 33, 50, 82, 31, 240, 186, 93, 254, 19, 69, 9, 186, 83, 102, 183, 152, 248, 240, 40, 31, 243, ], ), }, sequence_number: 7233480544855175116, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e7a27cd508e09b620e8c34af7caafb688d4f1e93cdc67e95b30349749f5af43d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101241a5aff7aab54bacb1499277b5367cea988a0ab8985834666f7db95a8391f04c7764d8bd50125b914152ffd95ae00692638bca126be00dd205cb382179a5218d5c15dcfebeecb50f22cdfbbc1e177fcf5fb58d35845adbcb4e32a73879e78751866974f5bc389f8d5b87b287410ba9e01ba7573c7e3220d2356f3282f3f4518952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d591c11ace2bf44 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 90, 255, 122, 171, 84, 186, 203, 20, 153, 39, 123, 83, 103, 206, 169, 136, 160, 171, 137, 133, 131, 70, 102, 247, 219, 149, 168, 57, 31, 4, 199, 118, 77, 139, 213, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 25b914152ffd95ae00692638bca126be, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5952095707645878493, key: EventKey( [ 213, 193, 93, 207, 235, 238, 203, 80, 242, 44, 223, 187, 193, 225, 119, 252, 245, 251, 88, 211, 88, 69, 173, 188, ], ), }, sent_events: EventHandle { count: 8464689804232811444, key: EventKey( [ 102, 151, 79, 91, 195, 137, 248, 213, 184, 123, 40, 116, 16, 186, 158, 1, 186, 117, 115, 199, 227, 34, 13, 35, ], ), }, sequence_number: 10743413048768787286, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e81a7988ad540113b4e9753e61fbd3d67df653507cef57ed5413b03f71709e91): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e011200017474dd667816ea01060f6d85cacb24dd91d65b8dcfb4724d18dffdb2d4cc41a3c44367932c0f32b9e212d35bbccd165aeb1cbe4bb2425ce510187de456bbec6745825c0872cfc57e4e40e1493e12757b7e6b7a783e0fdd88faa52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086ab7dc6ab6ae6d4e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7474dd667816ea01060f6d85cacb24dd, }, ), received_events: EventHandle { count: 5580721691788301969, key: EventKey( [ 223, 253, 178, 212, 204, 65, 163, 196, 67, 103, 147, 44, 15, 50, 185, 226, 18, 211, 91, 188, 205, 22, 90, 235, ], ), }, sent_events: EventHandle { count: 1217480715802492444, key: EventKey( [ 125, 228, 86, 187, 236, 103, 69, 130, 92, 8, 114, 207, 197, 126, 78, 64, 225, 73, 62, 18, 117, 123, 126, 107, ], ), }, sequence_number: 11960022243460675706, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ebe221adcfababd15b477d16960a5531618fd0664f445cf73cb4421170f6b458): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a3014643ab3e8d7e9aeab7bd5bdef8c341891c637a594a11541993405e22c669b04a9fde9a822db72fd014ed4accfaa7142b1aed254a4130ab7f6417d54a453f6e62c1ea11b25c7488011d03925a6fdf9576887fd3b3106293ff001afcc7d0bebd3d2a186f2bfbe146de38f9e5ece3ace44b76e81c7ef6aac8d63e93007dcbb3bdc7c408181b096dc20c9e8f54da0811f7096752323a04e3ed50dabc45c8e8cff67ae7c4ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708846f50a97048856b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 67, 171, 62, 141, 126, 154, 234, 183, 189, 91, 222, 248, 195, 65, 137, 28, 99, 122, 89, 74, 17, 84, 25, 147, 64, 94, 34, 198, 105, 176, 74, 159, 222, 154, 130, 45, 183, 47, 208, 20, 237, 74, 204, 250, 167, 20, 43, 26, 237, 37, 74, 65, 48, 171, 127, 100, 23, 213, 74, 69, 63, 110, 98, 193, 234, 17, 178, 92, 116, 136, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d03925a6fdf9576887fd3b3106293ff, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3043797550416526362, key: EventKey( [ 111, 43, 251, 225, 70, 222, 56, 249, 229, 236, 227, 172, 228, 75, 118, 232, 28, 126, 246, 170, 200, 214, 62, 147, ], ), }, sent_events: EventHandle { count: 631849465317915904, key: EventKey( [ 27, 9, 109, 194, 12, 158, 143, 84, 218, 8, 17, 247, 9, 103, 82, 50, 58, 4, 227, 237, 80, 218, 188, 69, ], ), }, sequence_number: 17205130991774984392, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec1454a9a050e4703fffae8ee29722eda5150f69e8d36ef6c02546e1944192c0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01411649baaf3504cb02784bd781d82e35ad919924282d765b8fd0c530d24a883c4e1a527e36077f57d506eb201942f31022a3ea4617302b0b7dc7755defef6540b9f701c4572afd13c71c377706d9a72dd9fd8e017880662de1d221c3351577a75d6dfb516c1cfc68fb632f7e1848955afbac7fc2804c1bb18757ef672bcf0f0a86155435758cd018dd4a2610321825338d52c5ed60f35e7881e61e836e5334ec23893d49abe0d1e9c19f0671f05c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858481e9f0fe0afb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 73, 186, 175, 53, 4, 203, 2, 120, 75, 215, 129, 216, 46, 53, 173, 145, 153, 36, 40, 45, 118, 91, 143, 208, 197, 48, 210, 74, 136, 60, 78, 26, 82, 126, 54, 7, 127, 87, 213, 6, 235, 32, 25, 66, 243, 16, 34, 163, 234, 70, 23, 48, 43, 11, 125, 199, 117, 93, 239, 239, 101, 64, 185, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4572afd13c71c377706d9a72dd9fd8e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7880662de1d221c3351577a75d6dfb51, }, ), received_events: EventHandle { count: 9092596104133614700, key: EventKey( [ 72, 149, 90, 251, 172, 127, 194, 128, 76, 27, 177, 135, 87, 239, 103, 43, 207, 15, 10, 134, 21, 84, 53, 117, ], ), }, sent_events: EventHandle { count: 3607425404502593676, key: EventKey( [ 37, 51, 141, 82, 197, 237, 96, 243, 94, 120, 129, 230, 30, 131, 110, 83, 52, 236, 35, 137, 61, 73, 171, 224, ], ), }, sequence_number: 6696976919163955665, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec1b91dee8da8737185ba10ba186b5f1a43f0f1895eb8e5a9a61ea4ec6087f1b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014ea425f7d17d5cf0a3dadd32e9397b8e92bdd7febcd7f2537a459f545e79d3a7cc97f0f254b286b90be13039d55dbedfb432f78277d119158d97349b85c3b6da9a10cb91d42156b3298774cb52c46b015550ab5205354f3999792439e3ac61b70048a539ee20721b5a1815a031500e3baf5f63f55a64ea8c9bf6205558fe6d147ff6657a52bede9feb67184e53a90abb5e1c0eecae394ba3e6510b9123ca9e2ff02fa3b2f03285e78b21352101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083aa3adcc15309766 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 37, 247, 209, 125, 92, 240, 163, 218, 221, 50, 233, 57, 123, 142, 146, 189, 215, 254, 188, 215, 242, 83, 122, 69, 159, 84, 94, 121, 211, 167, 204, 151, 240, 242, 84, 178, 134, 185, 11, 225, 48, 57, 213, 93, 190, 223, 180, 50, 247, 130, 119, 209, 25, 21, 141, 151, 52, 155, 133, 195, 182, 218, 154, 16, 203, 145, 212, 33, 86, 179, 41, 135, 116, 203, 82, 196, 107, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5550ab5205354f3999792439e3ac61b7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6492908773545977160, key: EventKey( [ 21, 160, 49, 80, 14, 59, 175, 95, 99, 245, 90, 100, 234, 140, 155, 246, 32, 85, 88, 254, 109, 20, 127, 246, ], ), }, sent_events: EventHandle { count: 7488254584458213989, key: EventKey( [ 78, 83, 169, 10, 187, 94, 28, 14, 236, 174, 57, 75, 163, 230, 81, 11, 145, 35, 202, 158, 47, 240, 47, 163, ], ), }, sequence_number: 3828494984730046642, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec99eea9c02c670c7574b7010f9034d8febc69669486bbe7b993248d4e1ff857): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c401577dad728c62cfe0538339f98e3ddec6ba87633610601b493f74c44f0003abcb8192a0397d4e86f207eefd40fd424977cfcccfbbc657552be2d50037503cf401664c2ea1a1c6a54c9bb618c36cc391c02dbe8b8fc5e8c80701ca1f55e1c9bd2f84a0243925026846c101ef8ee95d31bc0e300b5bdc742f2d4f0d18c6b0cd1efdf86b187d508bfdc8dae7e76f5c58da8cfa7bf3a2d37f8c15e81692a8e72b4e4d6ea358184841d55f2cc946b90293a2712210bcec4e0df00259f27575c794715e58e026ac2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a637baa478456829 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 173, 114, 140, 98, 207, 224, 83, 131, 57, 249, 142, 61, 222, 198, 186, 135, 99, 54, 16, 96, 27, 73, 63, 116, 196, 79, 0, 3, 171, 203, 129, 146, 160, 57, 125, 78, 134, 242, 7, 238, 253, 64, 253, 66, 73, 119, 207, 204, 207, 187, 198, 87, 85, 43, 226, 213, 0, 55, 80, 60, 244, 1, 102, 76, 46, 161, 161, 198, 165, 76, 155, 182, 24, 195, 108, 195, 145, 192, 45, 190, 139, 143, 197, 232, 200, 7, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ca1f55e1c9bd2f84a0243925026846c1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ef8ee95d31bc0e300b5bdc742f2d4f0d, }, ), received_events: EventHandle { count: 7780246665024292376, key: EventKey( [ 125, 80, 139, 253, 200, 218, 231, 231, 111, 92, 88, 218, 140, 250, 123, 243, 162, 211, 127, 140, 21, 232, 22, 146, ], ), }, sent_events: EventHandle { count: 6387069974844532648, key: EventKey( [ 72, 65, 213, 95, 44, 201, 70, 185, 2, 147, 162, 113, 34, 16, 188, 236, 78, 13, 240, 2, 89, 242, 117, 117, ], ), }, sequence_number: 12404848893784855751, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee30003e417367dba7700e8388231e92b05df0a112a3b364dd10c501a84938f9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c2be0efabc44c3ca025477d7e046eb59d6189947c6150314480c3af790001f0357bc9fb17f9d63e5f868be4c128ea4a999dbd06d94f5f18c51e40c2813655c02a4db1d181815a7b9515d6bd52616d60229610fa0a901057182c6112da8cf15f026faea3c59af98e191bf8a37653e35d91d5e234b1171ecdcd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081d9b47b0ddd415f9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 224, 239, 171, 196, 76, 60, 160, 37, 71, 125, 126, 4, 110, 181, 157, 97, 137, 148, 124, 97, 80, 49, 68, 128, 195, 175, 121, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f0357bc9fb17f9d63e5f868be4c128ea, }, ), received_events: EventHandle { count: 6867946579737549130, key: EventKey( [ 197, 30, 64, 194, 129, 54, 85, 192, 42, 77, 177, 209, 129, 129, 90, 123, 149, 21, 214, 189, 82, 97, 109, 96, ], ), }, sent_events: EventHandle { count: 6273672657746564642, key: EventKey( [ 44, 97, 18, 218, 140, 241, 95, 2, 111, 174, 163, 197, 154, 249, 142, 25, 27, 248, 163, 118, 83, 227, 93, 145, ], ), }, sequence_number: 14829542235107025621, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef6e6bfbac35cd4978df73a11ef64b3aecb38799b5f25ae8899de36a3b5323dc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab013ebffc787dcc2a1e1c876afac804ae4a133e34107c1a5253927ee754798964726cbcb4a0aa50e62227d946832e65def9c34ee682e3d7c4151ceeb68f970d5e012d68d82558afa74730f6fb6cc7356ce2016f14570c00a34bdb4fbaae2c61e08a7549f39a61fb6bf03a1856e054f71382cf2509a534c9a21396f932cac31096f07f62a4473340f1fc8a6c18b5b9102d75a40912eb2e9c162940b4ff2e8575c6490c778c2599e5b40b0522fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ead99262e0f3f3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 252, 120, 125, 204, 42, 30, 28, 135, 106, 250, 200, 4, 174, 74, 19, 62, 52, 16, 124, 26, 82, 83, 146, 126, 231, 84, 121, 137, 100, 114, 108, 188, 180, 160, 170, 80, 230, 34, 39, 217, 70, 131, 46, 101, 222, 249, 195, 78, 230, 130, 227, 215, 196, 21, 28, 238, 182, 143, 151, 13, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d68d82558afa74730f6fb6cc7356ce2, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f14570c00a34bdb4fbaae2c61e08a75, }, ), received_events: EventHandle { count: 4247013176028885833, key: EventKey( [ 86, 224, 84, 247, 19, 130, 207, 37, 9, 165, 52, 201, 162, 19, 150, 249, 50, 202, 195, 16, 150, 240, 127, 98, ], ), }, sent_events: EventHandle { count: 7821341815976708004, key: EventKey( [ 181, 185, 16, 45, 117, 164, 9, 18, 235, 46, 156, 22, 41, 64, 180, 255, 46, 133, 117, 198, 73, 12, 119, 140, ], ), }, sequence_number: 18023974206527871269, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f0e7436826cb4ba5a642fcac61dbc53c8b4ddcf829ec2b504b58183a23f6fb88): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e415fe53d68ae21dc4c1f4c0d9e3f81e888e002a1f75940b79dddd6e0a11e6f91f476ae05b941efb1623964c076cb042295275d2e726dce0a31a8c319ebe601952bd6acffaebe01abd4a3725bcb8c3500a4f8044a9ba1181818c28ae4491fe23eb6e0f7d6d0e7e5cb359adb6dd51dfd9c3cef0c4956c90f7b0918e6db84ebc247c7fff1fe548749ec7c073ee8598414d268cac139e8a6f9949f382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087976352def676854 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 95, 229, 61, 104, 174, 33, 220, 76, 31, 76, 13, 158, 63, 129, 232, 136, 224, 2, 161, 247, 89, 64, 183, 157, 221, 214, 224, 161, 30, 111, 145, 244, 118, 174, 5, 185, 65, 239, 177, 98, 57, 100, 192, 118, 203, 4, 34, 149, 39, 93, 46, 114, 109, 206, 10, 49, 168, 195, 25, 235, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 952bd6acffaebe01abd4a3725bcb8c35, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1736315344685168804, key: EventKey( [ 194, 138, 228, 73, 31, 226, 62, 182, 224, 247, 214, 208, 231, 229, 203, 53, 154, 219, 109, 213, 29, 253, 156, 60, ], ), }, sent_events: EventHandle { count: 683157125887233263, key: EventKey( [ 230, 219, 132, 235, 194, 71, 199, 255, 241, 254, 84, 135, 73, 236, 124, 7, 62, 232, 89, 132, 20, 210, 104, 202, ], ), }, sequence_number: 4080143587388963265, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f32761e61ff1e98c5c105372e1b58b71ee3953ca53162851b7b78d4522228ef7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9650888e319c6d3c49b2e019413284f1613ed71cf978f890b0baf7c00b08ade98715f9a48182fa75e312e1c619ca52a145f6d2c8889ec336a18a88ad6c22410b59ed8716765187c0c1c07ffb394cab8eaba4179f383bc0c07946bf0544bd6e299410ee0f2bd2f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088224c9a3d439c0a9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 227, 25, 198, 211, 196, 155, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9413284f1613ed71cf978f890b0baf7c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5231598858644916912, key: EventKey( [ 47, 167, 94, 49, 46, 28, 97, 156, 165, 42, 20, 95, 109, 44, 136, 137, 236, 51, 106, 24, 168, 138, 214, 194, ], ), }, sent_events: EventHandle { count: 7306934095621460004, key: EventKey( [ 124, 12, 28, 7, 255, 179, 148, 202, 184, 234, 186, 65, 121, 243, 131, 188, 12, 7, 148, 107, 240, 84, 75, 214, ], ), }, sequence_number: 3440172734506703330, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f44a1431eca8c9c5dd28a5c66b60772e162db34137ccc711ff91495901e1429f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f9bd4b9f3e4ecf8945d1bd44ebe5d9a3129f88d01dcc197c4548f845a9cd77301e8efff30339938854961b2dadca7bb1f004fbb108f6d740c001858ffceb5bc38fbd5af8d002ec5193018be9ff43606ea487b780eb9d79675a42c18b48cf8e6a48cce74da13087e5c4bc17c9b95769b28c8087c46b980057e3a12212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ccd1b449e74fc73 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 212, 185, 243, 228, 236, 248, 148, 93, 27, 212, 78, 190, 93, 154, 49, 41, 248, 141, 1, 220, 193, 151, 196, 84, 143, 132, 90, 156, 215, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e8efff30339938854961b2dadca7bb1f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3505713621023567, key: EventKey( [ 88, 255, 206, 181, 188, 56, 251, 213, 175, 141, 0, 46, 197, 25, 48, 24, 190, 159, 244, 54, 6, 234, 72, 123, ], ), }, sent_events: EventHandle { count: 3216825324574150264, key: EventKey( [ 180, 140, 248, 230, 164, 140, 206, 116, 218, 19, 8, 126, 92, 75, 193, 124, 155, 149, 118, 155, 40, 200, 8, 124, ], ), }, sequence_number: 2383031465765026118, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f5b7d8ba50bac27bca39b104551dabcd4b22155103c8e97152cb787477d86387): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f12bde8743d1ccb17e4a89d75f962dbd7e1f04301eafc2b825d20e0137b131f6ae829dec100f80f67316e423002184d2984dd5a677e82f8f5f462e2a5767ab85ab6c2e206be5baaa3c591eb65266818dda6f8569c15f681e526760dc2b6a3929305364225aae4c8ec5f749aa5556c7d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae75473db81d0684 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 232, 116, 61, 28, 203, 23, 228, 168, 157, 117, 249, 98, 219, 215, 225, 240, 67, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eafc2b825d20e0137b131f6ae829dec1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 157699028000641016, key: EventKey( [ 77, 41, 132, 221, 90, 103, 126, 130, 248, 245, 244, 98, 226, 165, 118, 122, 184, 90, 182, 194, 226, 6, 190, 91, ], ), }, sent_events: EventHandle { count: 7504797891496879018, key: EventKey( [ 221, 166, 248, 86, 156, 21, 246, 129, 229, 38, 118, 13, 194, 182, 163, 146, 147, 5, 54, 66, 37, 170, 228, 200, ], ), }, sequence_number: 9037692721975025644, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f8a4f328c62db8411e2dc10891fd52e2b28681dfb04adc55c54e50448422d012): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015dc6428adb8f7002cd6ec678375dbea16b1a1255994d102f3879cb1bb966e05999f0f6a4a42bc5896418934915268027227ac1ca18423c8424083646057f358a5820b197881d8adb622005f54f981da8e826e256d936657d0bb64dea5859012cd3670ffd8f4a901f2352fc28f951ab010bb275a1ad0206d91ddd7de67359256679d4f240b61cab3318df67bf5ad19d99e12c1dafaf79e3e3950322d84353b022143baa0c948bed916718be6cfd802d0f0b4121d4c655f5d182b0e617b50d5c421c070c695555db3742172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852faa6fbcf204e22 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 66, 138, 219, 143, 112, 2, 205, 110, 198, 120, 55, 93, 190, 161, 107, 26, 18, 85, 153, 77, 16, 47, 56, 121, 203, 27, 185, 102, 224, 89, 153, 240, 246, 164, 164, 43, 197, 137, 100, 24, 147, 73, 21, 38, 128, 39, 34, 122, 193, 202, 24, 66, 60, 132, 36, 8, 54, 70, 5, 127, 53, 138, 88, 32, 177, 151, 136, 29, 138, 219, 98, 32, 5, 245, 79, 152, 29, 168, 232, 38, 226, 86, 217, 54, 101, 125, 11, 182, 77, 234, 88, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2cd3670ffd8f4a901f2352fc28f951ab, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0bb275a1ad0206d91ddd7de673592566, }, ), received_events: EventHandle { count: 3723101086051128441, key: EventKey( [ 223, 103, 191, 90, 209, 157, 153, 225, 44, 29, 175, 175, 121, 227, 227, 149, 3, 34, 216, 67, 83, 176, 34, 20, ], ), }, sent_events: EventHandle { count: 7463007241269717563, key: EventKey( [ 190, 108, 253, 128, 45, 15, 11, 65, 33, 212, 198, 85, 245, 209, 130, 176, 230, 23, 181, 13, 92, 66, 28, 7, ], ), }, sequence_number: 1675963426504272140, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fadb5ef152d50113a03b5e70afc07955b56280b599593a4195fa91df182a0711): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f12acacbc5473162800a8de9b69cc679c117f40000099d7d0a697331e2618a3578399a48583e875bbeb63aa09ace67dd339ae80846d27a9e0c9b5aa623f7518b994b5763e5e6be61d4cad48196a1aa4ce6cc8ee5b562dca36b2dae303eeaa9c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f40716239e111d6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 172, 188, 84, 115, 22, 40, 0, 168, 222, 155, 105, 204, 103, 156, 17, 127, 64, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2746689549174364057, key: EventKey( [ 163, 87, 131, 153, 164, 133, 131, 232, 117, 187, 235, 99, 170, 9, 172, 230, 125, 211, 57, 174, 128, 132, 109, 39, ], ), }, sent_events: EventHandle { count: 8448579911304208553, key: EventKey( [ 185, 148, 181, 118, 62, 94, 107, 230, 29, 76, 173, 72, 25, 106, 26, 164, 206, 108, 200, 238, 91, 86, 45, 202, ], ), }, sequence_number: 11289097116432642614, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fb3bfefc3f6fe48f3c3116eb440b7459263a20ab94fa18f6cfba97c192909e4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99101340ec8f1f294d9f76d9ea5862ce4855192822d070fd7111a8bd9dab34aa4b19a10c43bb71cb2b3d043c5c20e32a7c1f64da4847e1600014a9ba5f54c9cf4d43ba0a11cfacda149eab5bb43cedbe2541863be2ef65b2a1ef497d705c6b54787a97dfc56f1148db3829372686becd9801518ce6432c956e05188d5f3699d85de8eff84018a921850ee1d11d826439a5267fa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f681573a3a824250 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 200, 241, 242, 148, 217, 247, 109, 158, 165, 134, 44, 228, 133, 81, 146, 130, 45, 7, 15, 215, 17, 26, 139, 217, 218, 179, 74, 164, 177, 154, 16, 196, 59, 183, 28, 178, 179, 208, 67, 197, 194, 14, 50, 167, 193, 246, 77, 164, 132, 126, 22, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4a9ba5f54c9cf4d43ba0a11cfacda149, }, ), received_events: EventHandle { count: 6116692922868676074, key: EventKey( [ 99, 190, 46, 246, 91, 42, 30, 244, 151, 215, 5, 198, 181, 71, 135, 169, 125, 252, 86, 241, 20, 141, 179, 130, ], ), }, sent_events: EventHandle { count: 1549477881252967059, key: EventKey( [ 206, 100, 50, 201, 86, 224, 81, 136, 213, 243, 105, 157, 133, 222, 142, 255, 132, 1, 138, 146, 24, 80, 238, 29, ], ), }, sequence_number: 18043481254588241937, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }}, btree2 = {HashValue(000b553bf5128417c8abe358c520f14ff651b628fcb903e94cbabb2f7c3e36b5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015c58924e75921048c30df9449613a5eaff6f0cbd8a70df794a0231ba61f3eaff022ecdccd87656492cc35e23c91d721437e09c3d5a0f758f5768089a037785d67add0dd9e8711c63dbc232e408e371bd12183d0fa0250cb36b22521e53000116b00cd7ead5785e5033929d6435cf8b081df92c5358a27618747a5677eec8a064110dde68af80373680c6bb1f73ff44030987efb95f28930d18b445f5359428ff33568e9277e2779ac304e5e597fb3cc9a0e6515e122d16c62c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828ea7715834a5a21 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 146, 78, 117, 146, 16, 72, 195, 13, 249, 68, 150, 19, 165, 234, 255, 111, 12, 189, 138, 112, 223, 121, 74, 2, 49, 186, 97, 243, 234, 255, 2, 46, 205, 204, 216, 118, 86, 73, 44, 195, 94, 35, 201, 29, 114, 20, 55, 224, 156, 61, 90, 15, 117, 143, 87, 104, 8, 154, 3, 119, 133, 214, 122, 221, 13, 217, 232, 113, 28, 99, 219, 194, 50, 228, 8, 227, 113, 189, 18, 24, 61, 15, 160, 37, 12, 179, 107, 34, 82, 30, 83, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 16b00cd7ead5785e5033929d6435cf8b, }, ), received_events: EventHandle { count: 8548492156962675976, key: EventKey( [ 116, 122, 86, 119, 238, 200, 160, 100, 17, 13, 222, 104, 175, 128, 55, 54, 128, 198, 187, 31, 115, 255, 68, 3, ], ), }, sent_events: EventHandle { count: 978169935676016393, key: EventKey( [ 180, 69, 245, 53, 148, 40, 255, 51, 86, 142, 146, 119, 226, 119, 154, 195, 4, 229, 229, 151, 251, 60, 201, 160, ], ), }, sequence_number: 3226290565895049702, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(003f796c8c142f169c8bda43db0bfed3d626fe27b3738a6c0691a2bb289aaaf3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984013739a805b552a1e66869c5e63ca2c9c8a4c58487ddcb9098dbc06508fdd4d485d49612804fc841ee3e502be86c2d23efb1b0bf5668e6cd5400004227fb574477ec2a18a5943db4d9300d7fadf69a4b54cf1f5ae8aaab1941934329ab833db1406d4f4b1835c04d10d912bb19332d2bd1016596eac2515261ebc67cc26ac523006e26983a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088168c6f12ef70236 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 168, 5, 181, 82, 161, 230, 104, 105, 197, 230, 60, 162, 201, 200, 164, 197, 132, 135, 221, 203, 144, 152, 219, 192, 101, 8, 253, 212, 212, 133, 212, 150, 18, 128, 79, 200, 65, 238, 62, 80, 43, 232, 108, 45, 35, 239, 177, 176, 191, 86, 104, 230, 205, 84, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3092978179514246978, key: EventKey( [ 165, 148, 61, 180, 217, 48, 13, 127, 173, 246, 154, 75, 84, 207, 31, 90, 232, 170, 171, 25, 65, 147, 67, 41, ], ), }, sent_events: EventHandle { count: 5426676200623670187, key: EventKey( [ 53, 192, 77, 16, 217, 18, 187, 25, 51, 45, 43, 209, 1, 101, 150, 234, 194, 81, 82, 97, 235, 198, 124, 194, ], ), }, sequence_number: 4222166904550442346, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(01d03c044cf5cfeda197dd71abb939a3effba0e21dd70d92e8deae01a62c7718): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160518a6da8714ee72f5fe339d09887e7f09702421b4b81248aca0947331407fcb8f7810dd04c37c9c18d7aa64d7fc45ad2458caecf8f40a1dbe4ddf59a0ea3fd39f9dc343a26b257628740a95527b9d672767487a63be98dd55d341246a72321be0127208b906b9883c52d223e98c8aa5f3d000976f7382d08a851180ad8b4a7a9e466f14a86f64f9e7a7c30579a1f76e946ff3728d8941768bf16451847bc468c58f89ceb34e13394d91c18c9ebd5fa4ef30136c675091967c286ae502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f58d1462130e94a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 138, 109, 168, 113, 78, 231, 47, 95, 227, 57, 208, 152, 135, 231, 240, 151, 2, 66, 27, 75, 129, 36, 138, 202, 9, 71, 51, 20, 7, 252, 184, 247, 129, 13, 208, 76, 55, 201, 193, 141, 122, 166, 77, 127, 196, 90, 210, 69, 140, 174, 207, 143, 64, 161, 219, 228, 221, 245, 154, 14, 163, 253, 57, 249, 220, 52, 58, 38, 178, 87, 98, 135, 64, 169, 85, 39, 185, 214, 114, 118, 116, 135, 166, 59, 233, 141, 213, 93, 52, 18, 70, 167, 35, 33, 190, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 27208b906b9883c52d223e98c8aa5f3d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5883961903481845257, key: EventKey( [ 10, 216, 180, 167, 169, 228, 102, 241, 74, 134, 246, 79, 158, 122, 124, 48, 87, 154, 31, 118, 233, 70, 255, 55, ], ), }, sent_events: EventHandle { count: 4978376891897796648, key: EventKey( [ 71, 188, 70, 140, 88, 248, 156, 235, 52, 225, 51, 148, 217, 28, 24, 201, 235, 213, 250, 78, 243, 1, 54, 198, ], ), }, sequence_number: 5813732338493360501, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(01d76df0e5334213708a91622f2bd6a41eb30d8e4180feb4aab361b5754993e2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501583035f89aefd0b8d9900102300b6e06714ea731ca6a05e097d17b1211facf5d65b0e35c6ee1f7cc80b1067d113bc8edd6fa374aa2966a20feebfa1ad10629c2458146e83064091eb5a88d46fc99cbff85f38c4d9c4102ae5901c09400e8785b4e47d02587dd28c4f6bf00cd6e4ba32e739d6718aa824976e76e874a911ef066564eb427596db102d8b8224775e11dfb01e82e471806937f8ab4b37203c6aa7ca1419456cb4df9d3e9fa0ef145c7914421da3ea0982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a396c573339f5d74 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 53, 248, 154, 239, 208, 184, 217, 144, 1, 2, 48, 11, 110, 6, 113, 78, 167, 49, 202, 106, 5, 224, 151, 209, 123, 18, 17, 250, 207, 93, 101, 176, 227, 92, 110, 225, 247, 204, 128, 177, 6, 125, 17, 59, 200, 237, 214, 250, 55, 74, 162, 150, 106, 32, 254, 235, 250, 26, 209, 6, 41, 194, 69, 129, 70, 232, 48, 100, 9, 30, 181, 168, 141, 70, 252, 153, 203, 255, 133, 243, 140, 77, 156, 65, 2, 174, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c09400e8785b4e47d02587dd28c4f6bf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7466250401395470029, key: EventKey( [ 170, 130, 73, 118, 231, 110, 135, 74, 145, 30, 240, 102, 86, 78, 180, 39, 89, 109, 177, 2, 216, 184, 34, 71, ], ), }, sent_events: EventHandle { count: 5129292120827224437, key: EventKey( [ 6, 147, 127, 138, 180, 179, 114, 3, 198, 170, 124, 161, 65, 148, 86, 203, 77, 249, 211, 233, 250, 14, 241, 69, ], ), }, sequence_number: 10997859396620685767, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0210598c26bfafc8c2823b35b1a55e05fec8d061466c8066955c84f00cef0926): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f1226b7e37e143df49bbdc3a0fbb846e0b0d93a012d8d21e9869ab09d6001852f7accc8b200f667226a06ba5b1e1811ffb004f52cb11e50e7051a58c36f23ed7741b4b90f37215cef442e59a1b70a182262d5e7f6e0fa6091d3a0785a7c89a769f7c5ef23b5e0f16df5a96f371dfbdd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708390509db58940f7f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 183, 227, 126, 20, 61, 244, 155, 189, 195, 160, 251, 184, 70, 224, 176, 217, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d8d21e9869ab09d6001852f7accc8b2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2187546580731717622, key: EventKey( [ 17, 255, 176, 4, 245, 44, 177, 30, 80, 231, 5, 26, 88, 195, 111, 35, 237, 119, 65, 180, 185, 15, 55, 33, ], ), }, sent_events: EventHandle { count: 772263265517760348, key: EventKey( [ 34, 98, 213, 231, 246, 224, 250, 96, 145, 211, 160, 120, 90, 124, 137, 167, 105, 247, 197, 239, 35, 181, 224, 241, ], ), }, sequence_number: 15995410625470264685, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0224be195c2a7d22db84e064fbe68fdc87818eb017e38e1acd15f562cc6c4553): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae016120ed703b6154833c08e52317cfaaba7ad719398c3f5e47421d8fdc630d9bfd0d94d4183a229c8743c998691bcfe81ae0dbe9edc6069f5ddf1b204f8aa308e2add4657c5ceb727eceea0ccb76e4e4dc0ca52e3b90f7b5d56cf5d5414174e6c0ee2e000041551e58fa6b6672187f40d64d95f53eed01fe58c1d5aac50efaf1534c66f8b4df9546194347bb1f6418bdbf29386ca4f5b04744664dbc0c430556a094f625a6a9d10a73433c6817e7e72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708766a4e5e1f5b2eaa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 32, 237, 112, 59, 97, 84, 131, 60, 8, 229, 35, 23, 207, 170, 186, 122, 215, 25, 57, 140, 63, 94, 71, 66, 29, 143, 220, 99, 13, 155, 253, 13, 148, 212, 24, 58, 34, 156, 135, 67, 201, 152, 105, 27, 207, 232, 26, 224, 219, 233, 237, 198, 6, 159, 93, 223, 27, 32, 79, 138, 163, 8, 226, 173, 212, 101, 124, 92, 235, 114, 126, 206, 234, 12, 203, 118, 228, 228, 220, 12, 165, 46, 59, 144, 247, 181, 213, 108, 245, 213, 65, 65, 116, 230, 192, 238, 46, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8243394890912650561, key: EventKey( [ 127, 64, 214, 77, 149, 245, 62, 237, 1, 254, 88, 193, 213, 170, 197, 14, 250, 241, 83, 76, 102, 248, 180, 223, ], ), }, sent_events: EventHandle { count: 7214691042813626005, key: EventKey( [ 189, 191, 41, 56, 108, 164, 245, 176, 71, 68, 102, 77, 188, 12, 67, 5, 86, 160, 148, 246, 37, 166, 169, 209, ], ), }, sequence_number: 16710350678836605706, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(033f11175d6dda714bab6c83bc9383217a82b8d496b817d82633f722747d00a1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b4ef97f64c022b4a213a98cc35e364bdc9290d57532834a87eec05ce4a4334636dca8ea31efd533de73a95a0001f3e841341901b0ef204d3a8ca5ea9da2e30ecbcb45f22c2a1848b582f36c5bb816ba971f8dce11360455d3bce141dbaebe46e871b8df88962518c2e8964126727cbe2dff0abc3a03650a3e335f3dab0af35a3e89417c86705ad82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d239b6462c90faae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 78, 249, 127, 100, 192, 34, 180, 162, 19, 169, 140, 195, 94, 54, 75, 220, 146, 144, 213, 117, 50, 131, 74, 135, 238, 192, 92, 228, 164, 51, 70, 54, 220, 168, 234, 49, 239, 213, 51, 222, 115, 169, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f3e841341901b0ef204d3a8ca5ea9da2, }, ), received_events: EventHandle { count: 3039070230153989859, key: EventKey( [ 72, 181, 130, 243, 108, 91, 184, 22, 186, 151, 31, 141, 206, 17, 54, 4, 85, 211, 188, 225, 65, 219, 174, 190, ], ), }, sent_events: EventHandle { count: 2708502720363489350, key: EventKey( [ 194, 232, 150, 65, 38, 114, 124, 190, 45, 255, 10, 188, 58, 3, 101, 10, 62, 51, 95, 61, 171, 10, 243, 90, ], ), }, sequence_number: 15589896783008991550, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0509cb37abd90c7e3051e8618a5cff3d5842d4eab2dd85eb3e7d82c8a679e076): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b40157a522c6837a304b977d94fa00703f90206338cb01abad8854a20ee9e2d9fb405ceb6ca45354be351c8515822fbfad123da227f2d9dbd1ae3ac66f278990615841dc1df5aba8f5a2739c8ed8b515955252e51d44604fa7680001eb692908ff90a16dcbe344fe0f437b096dd93e0e9fa1e958186e9a087d4756eb2e659d8dfe1cca8de948cc5cb9f5129830576110a05294e85f186a03ec4b849e943f85ac3d64c126ccf96354825c49831c6be2f7c7babb8858c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086853847cd35284ec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 34, 198, 131, 122, 48, 75, 151, 125, 148, 250, 0, 112, 63, 144, 32, 99, 56, 203, 1, 171, 173, 136, 84, 162, 14, 233, 226, 217, 251, 64, 92, 235, 108, 164, 83, 84, 190, 53, 28, 133, 21, 130, 47, 191, 173, 18, 61, 162, 39, 242, 217, 219, 209, 174, 58, 198, 111, 39, 137, 144, 97, 88, 65, 220, 29, 245, 171, 168, 245, 162, 115, 156, 142, 216, 181, 21, 149, 82, 82, 229, 29, 68, 96, 79, 167, 104, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eb692908ff90a16dcbe344fe0f437b09, }, ), received_events: EventHandle { count: 6406829649422113133, key: EventKey( [ 110, 154, 8, 125, 71, 86, 235, 46, 101, 157, 141, 254, 28, 202, 141, 233, 72, 204, 92, 185, 245, 18, 152, 48, ], ), }, sent_events: EventHandle { count: 6910936710793683287, key: EventKey( [ 106, 3, 236, 75, 132, 158, 148, 63, 133, 172, 61, 100, 193, 38, 204, 249, 99, 84, 130, 92, 73, 131, 28, 107, ], ), }, sequence_number: 14076150975220414434, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0560835cfc4373c8536aef91740fd71f37b3abddbddbbc54a9b254e925a29ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149826390d0949ccf34ca708563531d6b4d77b71d9c33dea344e3d123f0572b2f24ff205ffc486938413b3cbd527a044e1c8fda97e9f9d560be906855a3e35be2e2ca77ba15e24c3143c80001c59a63f8339aca394667f86951a05bace641ec647535246218f98f940d1cc6d1b58dbaf35f7f3fdcbe5c21550f71a5e678a278159bbc42627f18652a3a1954ea3d6ce7ba049521d8a5b8f6fbc49362fc451f1bac638aa0a9ddf72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708547699598dd83c36 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 99, 144, 208, 148, 156, 207, 52, 202, 112, 133, 99, 83, 29, 107, 77, 119, 183, 29, 156, 51, 222, 163, 68, 227, 209, 35, 240, 87, 43, 47, 36, 255, 32, 95, 252, 72, 105, 56, 65, 59, 60, 189, 82, 122, 4, 78, 28, 143, 218, 151, 233, 249, 213, 96, 190, 144, 104, 85, 163, 227, 91, 226, 226, 202, 119, 186, 21, 226, 76, 49, 67, 200, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c59a63f8339aca394667f86951a05bac, }, ), received_events: EventHandle { count: 7071836093199172070, key: EventKey( [ 249, 143, 148, 13, 28, 198, 209, 181, 141, 186, 243, 95, 127, 63, 220, 190, 92, 33, 85, 15, 113, 165, 230, 120, ], ), }, sent_events: EventHandle { count: 9178972368357652642, key: EventKey( [ 101, 42, 58, 25, 84, 234, 61, 108, 231, 186, 4, 149, 33, 216, 165, 184, 246, 251, 196, 147, 98, 252, 69, 31, ], ), }, sequence_number: 17860618204202904603, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(06119a6b9297f880647f30c86c4eb7138424f6644a9af40ecb357344fa446a96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601398f7828b012a122a51258fa61192af659262366765e93fa2d14c775be4f50876b570ce94e1bdbe914fc23300a1d39b74c6d11a7a62b408222200001405875a3a1712417ac65969e8e43b4aff2dfa0b110fd9806188dc7e15597770395d443638b303bac96bbdbb1c7c34c35044134c72486ae482518889e7813ad97d9eeb68bff4def17c4c457bb156983ae642067df9f550ae0a60a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087ea02d969948f59c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 120, 40, 176, 18, 161, 34, 165, 18, 88, 250, 97, 25, 42, 246, 89, 38, 35, 102, 118, 94, 147, 250, 45, 20, 199, 117, 190, 79, 80, 135, 107, 87, 12, 233, 78, 27, 219, 233, 20, 252, 35, 48, 10, 29, 57, 183, 76, 109, 17, 167, 166, 43, 64, 130, 34, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 405875a3a1712417ac65969e8e43b4af, }, ), received_events: EventHandle { count: 475408008829001714, key: EventKey( [ 141, 199, 225, 85, 151, 119, 3, 149, 212, 67, 99, 139, 48, 59, 172, 150, 187, 219, 177, 199, 195, 76, 53, 4, ], ), }, sent_events: EventHandle { count: 2686589068892386369, key: EventKey( [ 136, 158, 120, 19, 173, 151, 217, 238, 182, 139, 255, 77, 239, 23, 196, 196, 87, 187, 21, 105, 131, 174, 100, 32, ], ), }, sequence_number: 767547121504083815, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(063adaf418a03f617453dcaaa04d126e5f7f4da58c36ebf5ccb534d56b43c05c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518d33d18bc8bcbbe6214060387780926167454c50acc6128c800005bd8608ca49bb76418122fad0cb0f948e6381e651ea110ff8634d8880eab05406a4d9d9663c5ca816418a0daeed72e2d4a11b54247be196354afb526fe8e554335f9efb2872d778272302101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a6bd3f28ada9bda2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 61, 24, 188, 139, 203, 190, 98, 20, 6, 3, 135, 120, 9, 38, 22, 116, 84, 197, 10, 204, 97, 40, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7257440455562942555, key: EventKey( [ 18, 47, 173, 12, 176, 249, 72, 230, 56, 30, 101, 30, 161, 16, 255, 134, 52, 216, 136, 14, 171, 5, 64, 106, ], ), }, sent_events: EventHandle { count: 7242292624916651341, key: EventKey( [ 160, 218, 238, 215, 46, 45, 74, 17, 181, 66, 71, 190, 25, 99, 84, 175, 181, 38, 254, 142, 85, 67, 53, 249, ], ), }, sequence_number: 3490996109542142703, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(064f2bd51604f7931c1699edacd1d2623d19b2ad621d596b9d8c774e44ea79b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c980012342b73fa5d9284e70e7d23756ac65d0e513378914a73e4928a5249a6a96bc259c79ae4200019189f0f6b1330e879f26b789c457fe7f905921794ed4534618bf25960feacc975f8cc08961e31a9ca4c64f4302d45b19d0975f16282afd481e1844c08a54a9107faa23a90a558ae45c97e52a3d467c4a9d7da160d612a351e6192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085030c72d4486fde0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 183, 63, 165, 217, 40, 78, 112, 231, 210, 55, 86, 172, 101, 208, 229, 19, 55, 137, 20, 167, 62, 73, 40, 165, 36, 154, 106, 150, 188, 37, 156, 121, 174, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9189f0f6b1330e879f26b789c457fe7f, }, ), received_events: EventHandle { count: 5067627439226706320, key: EventKey( [ 191, 37, 150, 15, 234, 204, 151, 95, 140, 192, 137, 97, 227, 26, 156, 164, 198, 79, 67, 2, 212, 91, 25, 208, ], ), }, sent_events: EventHandle { count: 2182272376964013975, key: EventKey( [ 68, 192, 138, 84, 169, 16, 127, 170, 35, 169, 10, 85, 138, 228, 92, 151, 229, 42, 61, 70, 124, 74, 157, 125, ], ), }, sequence_number: 1866268856429207713, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0660333d8dfed9b40e468b2094fc0e8c65a905ef83c36ed3a8cc2c5d1c93bf2c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b014e6261e870948813743adfcbe7db706ef3135bbdb41c2d15aad08b79ab2acb79f6f5985295b51a659bf1fe30568684f0f231eec636351759ba01836aaae0e2de6eb0309caf84da08d19c0fef4c3079000095d9921727592a421832d32494550ca20237a9e4802cbe66d012c48b59176ebe503a0e7fcc9322312118965a55aa6185fdde961c1409f9ffd65ac448bec1f42f6d8ef70224727b0935e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080606ec368ff91212 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 97, 232, 112, 148, 136, 19, 116, 58, 223, 203, 231, 219, 112, 110, 243, 19, 91, 189, 180, 28, 45, 21, 170, 208, 139, 121, 171, 42, 203, 121, 246, 245, 152, 82, 149, 181, 26, 101, 155, 241, 254, 48, 86, 134, 132, 240, 242, 49, 238, 198, 54, 53, 23, 89, 186, 1, 131, 106, 170, 224, 226, 222, 110, 176, 48, 156, 175, 132, 218, 8, 209, 156, 15, 239, 76, 48, 121, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4767721179959187861, key: EventKey( [ 50, 211, 36, 148, 85, 12, 162, 2, 55, 169, 228, 128, 44, 190, 102, 208, 18, 196, 139, 89, 23, 110, 190, 80, ], ), }, sent_events: EventHandle { count: 2391730895296859706, key: EventKey( [ 150, 90, 85, 170, 97, 133, 253, 222, 150, 28, 20, 9, 249, 255, 214, 90, 196, 72, 190, 193, 244, 47, 109, 142, ], ), }, sequence_number: 16516117634251752183, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(07574c5cc33a84ec369e0052e7a84eacb2bc527a83fd5ed50ae420b0d2d2afa2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401473ce55735897b347200210ecae2bf0855d226abc2be786993c8254bb9e2d99e961dcf4efbd146eede6ba392350f9ac4a6d3f1a80010c0a03bf3899273706a46d33e1b71a24cb8fa0000834f5d944542ad1e1853f5d223d8fbaf5a840b64bcaddd469068586c67ae104fc5276230963846e30c18366228872a735a032bbf83606c3892ff9ac9395569aa0138a07ea07d1299b09d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c707aa0c379ff8bc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 60, 229, 87, 53, 137, 123, 52, 114, 0, 33, 14, 202, 226, 191, 8, 85, 210, 38, 171, 194, 190, 120, 105, 147, 200, 37, 75, 185, 226, 217, 158, 150, 29, 207, 78, 251, 209, 70, 238, 222, 107, 163, 146, 53, 15, 154, 196, 166, 211, 241, 168, 0, 16, 192, 160, 59, 243, 137, 146, 115, 112, 106, 70, 211, 62, 27, 113, 162, 76, 184, 250, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2210495858718101379, key: EventKey( [ 83, 245, 210, 35, 216, 251, 175, 90, 132, 11, 100, 188, 173, 221, 70, 144, 104, 88, 108, 103, 174, 16, 79, 197, ], ), }, sent_events: EventHandle { count: 928663157020320295, key: EventKey( [ 54, 98, 40, 135, 42, 115, 90, 3, 43, 191, 131, 96, 108, 56, 146, 255, 154, 201, 57, 85, 105, 170, 1, 56, ], ), }, sequence_number: 11362750164551892640, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(075eee35f5c4d92d130c5418fd679e18fa97270d809b05c643fe3fa78019e5f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690cc9fc0f8ebbfc38f4b1b47ee601a52f22c43f95816141e8843af66109d8003e7666e0f316311c18c7498f889cf9242a21287a60e96adda2adc924eecbbd0f2925027abada953e331828cbf827c77ef3b7006886a2b0a523f348e3f642239a80c6b939e0567e428ebf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089f30ec9beb084d48 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 252, 15, 142, 187, 252, 56, 244, 177, 180, 126, 230, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a52f22c43f95816141e8843af66109d8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2031430143618479678, key: EventKey( [ 199, 73, 143, 136, 156, 249, 36, 42, 33, 40, 122, 96, 233, 106, 221, 162, 173, 201, 36, 238, 203, 189, 15, 41, ], ), }, sent_events: EventHandle { count: 3692553511154352677, key: EventKey( [ 40, 203, 248, 39, 199, 126, 243, 183, 0, 104, 134, 162, 176, 165, 35, 243, 72, 227, 246, 66, 35, 154, 128, 198, ], ), }, sequence_number: 13803043018327996857, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(07f29bb1d0e87cec5df12134ad965df8bb1008f2c16915975464ed767d78caa6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98201254d22e58bd0a226b769c22785d0f522bb6ab8a55603e0e491df4d4131a7c7cc3199f323ca220165803d18119689aa1457de470781ba1b00dbb4d223e9f5297c18df11e2751faab0fc00fc48a87ba194f23eb69cdac0f6d3025fd223a03c77547c188d597958ef0a3a42301c505765990fab0aadfa8e038cd16aa801dfdf0abddb1b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c43a54df919a7330 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 77, 34, 229, 139, 208, 162, 38, 183, 105, 194, 39, 133, 208, 245, 34, 187, 106, 184, 165, 86, 3, 224, 228, 145, 223, 77, 65, 49, 167, 199, 204, 49, 153, 243, 35, 202, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 65803d18119689aa1457de470781ba1b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8946952516425397467, key: EventKey( [ 223, 17, 226, 117, 31, 170, 176, 252, 0, 252, 72, 168, 123, 161, 148, 242, 62, 182, 156, 218, 192, 246, 211, 2, ], ), }, sent_events: EventHandle { count: 8958916661015204447, key: EventKey( [ 141, 89, 121, 88, 239, 10, 58, 66, 48, 28, 80, 87, 101, 153, 15, 171, 10, 173, 250, 142, 3, 140, 209, 106, ], ), }, sequence_number: 2007405913326944680, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0856994841b64e92a710adf280d94c831b8beb593ad43b711502aaff505e67bd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101548c9a2502fe32c43ffebac8455459095921206cc3a970bed04e8063815dc6ac70b804ed8525799394942db4deb41e144940639af5be85beac08689643f7632ae1201a38b4801aea773bd807e58a56de02aabba41a0001eae68b89d663471173867e0c15b78192c00f67d2037bd02318856925410a216b72606c0aa84b35753147800e9db945a014dab082f7beb67c71185a12da4e0e5a02c8c61307a8ce8c42e69cbe201c6c914162ffd0c992a3a5370e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861211e1f3247a648 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 154, 37, 2, 254, 50, 196, 63, 254, 186, 200, 69, 84, 89, 9, 89, 33, 32, 108, 195, 169, 112, 190, 208, 78, 128, 99, 129, 93, 198, 172, 112, 184, 4, 237, 133, 37, 121, 147, 148, 148, 45, 180, 222, 180, 30, 20, 73, 64, 99, 154, 245, 190, 133, 190, 172, 8, 104, 150, 67, 247, 99, 42, 225, 32, 26, 56, 180, 128, 26, 234, 119, 59, 216, 7, 229, 138, 86, 222, 2, 170, 187, 164, 26, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eae68b89d663471173867e0c15b78192, }, ), received_events: EventHandle { count: 2580697842828382144, key: EventKey( [ 133, 105, 37, 65, 10, 33, 107, 114, 96, 108, 10, 168, 75, 53, 117, 49, 71, 128, 14, 157, 185, 69, 160, 20, ], ), }, sent_events: EventHandle { count: 8177611954710556890, key: EventKey( [ 90, 18, 218, 78, 14, 90, 2, 200, 198, 19, 7, 168, 206, 140, 66, 230, 156, 190, 32, 28, 108, 145, 65, 98, ], ), }, sequence_number: 1024469562211029247, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08702463bbd9ab44d115cb4b202f2bfd10c28f03ad47d7160d041988ccb94799): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973161a3c6f518ad87d73c4cc1c83ad357f5046a718e36d060001d648ae87680b825c6030f7d4df8ebaeb9a4d8b4ba806435018cca257d82f4cf21e2d7cae11b8cc12464e172e7d538004ec1df2b4e58dad9a4f1814a8b4b58099fb4b5b60386eff586a468f70c32841dd98b85b736e0fcc6478562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70815afa2068851adb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 60, 111, 81, 138, 216, 125, 115, 196, 204, 28, 131, 173, 53, 127, 80, 70, 167, 24, 227, 109, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d648ae87680b825c6030f7d4df8ebaeb, }, ), received_events: EventHandle { count: 5783473666365541786, key: EventKey( [ 204, 162, 87, 216, 47, 76, 242, 30, 45, 124, 174, 17, 184, 204, 18, 70, 78, 23, 46, 125, 83, 128, 4, 236, ], ), }, sent_events: EventHandle { count: 5736087900365582877, key: EventKey( [ 20, 168, 180, 181, 128, 153, 251, 75, 91, 96, 56, 110, 255, 88, 106, 70, 143, 112, 195, 40, 65, 221, 152, 184, ], ), }, sequence_number: 6230840912062083931, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0897b4968b52e1b82c50dd24204c9275635b676547b5d8d943146bbcf553e0eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014db5955eb03ff5c7c8db5be28287ae03d1c46c98e14c7250507547e4d1f1e9c58b8723f6db5855ec7570d6507053b139370cbfc21579868f9efc2b39ca13d69e8efc5982f3d3227712419ec9b66f017a86a64a06b851536a9a8124e018eabf013015fde6d335f810fa8b4d2557570ef3109b9d433f50075b186e9d008a6cd4bbc190bd01cb2db2548197a069d27e6bdef377ad90072e5213371817ec12267c23c7021eb38f92aa3bba250ac47e9c61695ba709331647c6f1be892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708852210b6c766ccf2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 181, 149, 94, 176, 63, 245, 199, 200, 219, 91, 226, 130, 135, 174, 3, 209, 196, 108, 152, 225, 76, 114, 80, 80, 117, 71, 228, 209, 241, 233, 197, 139, 135, 35, 246, 219, 88, 85, 236, 117, 112, 214, 80, 112, 83, 177, 57, 55, 12, 191, 194, 21, 121, 134, 143, 158, 252, 43, 57, 202, 19, 214, 158, 142, 252, 89, 130, 243, 211, 34, 119, 18, 65, 158, 201, 182, 111, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7a86a64a06b851536a9a8124e018eabf, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3015fde6d335f810fa8b4d2557570ef3, }, ), received_events: EventHandle { count: 6559299614935980816, key: EventKey( [ 110, 157, 0, 138, 108, 212, 187, 193, 144, 189, 1, 203, 45, 178, 84, 129, 151, 160, 105, 210, 126, 107, 222, 243, ], ), }, sent_events: EventHandle { count: 3968606054292434295, key: EventKey( [ 23, 236, 18, 38, 124, 35, 199, 2, 30, 179, 143, 146, 170, 59, 186, 37, 10, 196, 126, 156, 97, 105, 91, 167, ], ), }, sequence_number: 9925636462669607689, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(08d0f244af4bb91549fd9c766165759f9f2c2897fd37b02b1c2a8c10f04f9a66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999012cb75d38d1af306a5ff19eb3c1cef29d066371e0419686eeada86589b59ca9fd532510f8d43d7f699a586f198601de19b2e783f710a2904615ecf481da6401b83456c7edad999fdf6ae7a1be5ad7ee68d40b533d77e141189520cd5bfa6eb97c5fd7e6e33db296770bec0c477e9d950347c247394f17ed6c18694a9668a5407da99e7a676789ec5d6653b10484f2e373131aeb5cb627a760f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ba437b5b699a57c5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 93, 56, 209, 175, 48, 106, 95, 241, 158, 179, 193, 206, 242, 157, 6, 99, 113, 224, 65, 150, 134, 238, 173, 168, 101, 137, 181, 156, 169, 253, 83, 37, 16, 248, 212, 61, 127, 105, 154, 88, 111, 25, 134, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: de19b2e783f710a2904615ecf481da64, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b83456c7edad999fdf6ae7a1be5ad7ee, }, ), received_events: EventHandle { count: 4747206587495208040, key: EventKey( [ 149, 32, 205, 91, 250, 110, 185, 124, 95, 215, 230, 227, 61, 178, 150, 119, 11, 236, 12, 71, 126, 157, 149, 3, ], ), }, sent_events: EventHandle { count: 7848955354607501895, key: EventKey( [ 105, 74, 150, 104, 165, 64, 125, 169, 158, 122, 103, 103, 137, 236, 93, 102, 83, 177, 4, 132, 242, 227, 115, 19, ], ), }, sequence_number: 17609258332023745306, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(09531e4bd308e6f2925e26a767f3b79ec31fc9cfef5ef8f191901a4c03bd8b0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9680b361b6a9d6907dc0fdee9420001274b1ad80e69da0b28ebfce9c5101cd3b73402d3380205101869829dd503ae79b9bcb9c9ead66043f17bcdbbdde5386c4e84ce2b4163c0ce22183148831ab043b63d667e92e835ccff6be51e586fef891a3c7e073b73075aab9f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861dfa14d22219c3e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 27, 106, 157, 105, 7, 220, 15, 222, 233, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 274b1ad80e69da0b28ebfce9c5101cd3, }, ), received_events: EventHandle { count: 1154331322571961527, key: EventKey( [ 105, 130, 157, 213, 3, 174, 121, 185, 188, 185, 201, 234, 214, 96, 67, 241, 123, 205, 187, 221, 229, 56, 108, 78, ], ), }, sent_events: EventHandle { count: 2508153575019630212, key: EventKey( [ 49, 72, 131, 26, 176, 67, 182, 61, 102, 126, 146, 232, 53, 204, 255, 107, 229, 30, 88, 111, 239, 137, 26, 60, ], ), }, sequence_number: 11505388661092583294, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(098a0afe35e49bf1a935f9360ab4af52515d1ba943a1818a267e41e886ad4d0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144742a81d46f940255cd4ec82ab749228d8f635e2c3d6d0d176d3410be2cf999fbdee43412d7a78af82286e5996500dce1daada43a6e27241b41fb30863caca6fcb50a8cc8000002d29538cc2ee05518d9ba0acc1711b6a279a3b489ea73795bd81f315c7179833b6c54c92ae736522c185d49060404ae93c149e8073387578665bc242b3f1b20aca878bf2977c64e0db02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d12b4de096fcce0b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 42, 129, 212, 111, 148, 2, 85, 205, 78, 200, 42, 183, 73, 34, 141, 143, 99, 94, 44, 61, 109, 13, 23, 109, 52, 16, 190, 44, 249, 153, 251, 222, 228, 52, 18, 215, 167, 138, 248, 34, 134, 229, 153, 101, 0, 220, 225, 218, 173, 164, 58, 110, 39, 36, 27, 65, 251, 48, 134, 60, 172, 166, 252, 181, 10, 140, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6187997342664610306, key: EventKey( [ 217, 186, 10, 204, 23, 17, 182, 162, 121, 163, 180, 137, 234, 115, 121, 91, 216, 31, 49, 92, 113, 121, 131, 59, ], ), }, sent_events: EventHandle { count: 3193675452242285676, key: EventKey( [ 93, 73, 6, 4, 4, 174, 147, 193, 73, 232, 7, 51, 135, 87, 134, 101, 188, 36, 43, 63, 27, 32, 172, 168, ], ), }, sequence_number: 12685882339682271096, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(099e73c5061587d773347891440964443119ab2a2e1b2a19ca61d3e162c55fb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148041a140f18876ae8f1184f045fb46312919b3dc23058904d10256288b3596545b8f2b8fd15ab21651d58c5d18d255a4700515806f2c7b8986f64130b39857f73ee72dc3eaf68e537018b99f7076a52187b8c018bfdbc265dab01ac6465f109faee7d6c78aebdc53ccce1f6d1fdab28fa9436183cba9d8e8e471d9da8fd12923bd7bdbd1aa0334f1d5214a33a56d93e4bb27b6918788ab79b54e03df32ab4babf52e52ceeed425c7e4a395765c495014715d101f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3e93c34e1c6430c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 26, 20, 15, 24, 135, 106, 232, 241, 24, 79, 4, 95, 180, 99, 18, 145, 155, 61, 194, 48, 88, 144, 77, 16, 37, 98, 136, 179, 89, 101, 69, 184, 242, 184, 253, 21, 171, 33, 101, 29, 88, 197, 209, 141, 37, 90, 71, 0, 81, 88, 6, 242, 199, 184, 152, 111, 100, 19, 11, 57, 133, 127, 115, 238, 114, 220, 62, 175, 104, 229, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8b99f7076a52187b8c018bfdbc265dab, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ac6465f109faee7d6c78aebdc53ccce1, }, ), received_events: EventHandle { count: 3933043427192459766, key: EventKey( [ 60, 186, 157, 142, 142, 71, 29, 157, 168, 253, 18, 146, 59, 215, 189, 189, 26, 160, 51, 79, 29, 82, 20, 163, ], ), }, sent_events: EventHandle { count: 7600864832364566074, key: EventKey( [ 120, 138, 183, 155, 84, 224, 61, 243, 42, 180, 186, 191, 82, 229, 44, 238, 237, 66, 92, 126, 74, 57, 87, 101, ], ), }, sequence_number: 17582564309546931652, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b0244e45b758f52fe5a37a4752c378feb9c6df845f9fdb70c9043d40e42f8d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b1ed009c1185e845d722488a559c5b4d075d126975c27c61e58d78124efbf250001de109a2ace03a62217e87684aa341706fa1e8d41d956cf4f183dabd37851495ef617730b05117ad4d64d3cf07572dce3b5805151c3890a107a189697dfab325b994dfbce0663957220bd8ff8bef6f52ce43d7b677d16ea3d764d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d9462faefd28fe3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 208, 9, 193, 24, 94, 132, 93, 114, 36, 136, 165, 89, 197, 180, 208, 117, 209, 38, 151, 92, 39, 198, 30, 88, 215, 129, 36, 239, 191, 37, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de109a2ace03a62217e87684aa341706, }, ), received_events: EventHandle { count: 5750910740283072250, key: EventKey( [ 61, 171, 211, 120, 81, 73, 94, 246, 23, 115, 11, 5, 17, 122, 212, 214, 77, 60, 240, 117, 114, 220, 227, 181, ], ), }, sent_events: EventHandle { count: 8795541659058262400, key: EventKey( [ 150, 151, 223, 171, 50, 91, 153, 77, 251, 206, 6, 99, 149, 114, 32, 189, 143, 248, 190, 246, 245, 44, 228, 61, ], ), }, sequence_number: 5581716863781267323, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b1abac56772b40c797fd176917a26f52a8f97bb9c8aecc775e8821f369ce57c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9d00163872449742d88a5a0efd4cb4916b57f55149842fe6101a8cc378adc9fc6e9832dea5e2c1c5cfb2e3d1a89d11dc2fca6ef56c748a735cca184129d5289f33c2b0401a01fb750646365e26666331c95a17ae8bb2c4d91abfd6111be20d509ce98286f345e01a5e924a0de87b742864c76e1a1ddade8010e9ca881726f2f2e7bf3ef442eac3d30f1ab432a41fb3d1b188dc0ef2738b85106a71abe2aa28d581b33d5f56fdf031bc9c451625eb85fa5411883523a1bf5f7f8606b230e3ce82c2815b03bafac0eeb4c17f9d6b006c96e26562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708edf7ede5809b693c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 36, 73, 116, 45, 136, 165, 160, 239, 212, 203, 73, 22, 181, 127, 85, 20, 152, 66, 254, 97, 1, 168, 204, 55, 138, 220, 159, 198, 233, 131, 45, 234, 94, 44, 28, 92, 251, 46, 61, 26, 137, 209, 29, 194, 252, 166, 239, 86, 199, 72, 167, 53, 204, 161, 132, 18, 157, 82, 137, 243, 60, 43, 4, 1, 160, 31, 183, 80, 100, 99, 101, 226, 102, 102, 51, 28, 149, 161, 122, 232, 187, 44, 77, 145, 171, 253, 97, 17, 190, 32, 213, 9, 206, 152, 40, 111, 52, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a5e924a0de87b742864c76e1a1ddade8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e9ca881726f2f2e7bf3ef442eac3d30, }, ), received_events: EventHandle { count: 1963001269903928305, key: EventKey( [ 141, 192, 239, 39, 56, 184, 81, 6, 167, 26, 190, 42, 162, 141, 88, 27, 51, 213, 245, 111, 223, 3, 27, 201, ], ), }, sent_events: EventHandle { count: 4730292229084697028, key: EventKey( [ 131, 82, 58, 27, 245, 247, 248, 96, 107, 35, 14, 60, 232, 44, 40, 21, 176, 59, 175, 172, 14, 235, 76, 23, ], ), }, sequence_number: 6207770946056541945, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0b5dc7954b7d90c68691a8dc942ebef6740f25f362de6188bc832a93079d1287): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c578357f81fd3555eacbf909c5c539b46b8db4299f520e6c70ede5b1f4b39a8e15dfe528020eda24465597fb3bad2ac1596644c3b85a60d886199a4ea0184cb035362ae70014c1fed6ddc38c43c0152b7d911f0a644fa49284b3958243d04a464eee29910170d181d27040575c6dbf2c909d99572d0e885ada37628c2bf6293f7c9ba7b6fda4f07189e3d0540e832d414ac092468e49571b58b4e2f4c9ebd1069ad112b1bdf720d8e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce2aa930e9730c25 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 131, 87, 248, 31, 211, 85, 94, 172, 191, 144, 156, 92, 83, 155, 70, 184, 219, 66, 153, 245, 32, 230, 199, 14, 222, 91, 31, 75, 57, 168, 225, 93, 254, 82, 128, 32, 237, 162, 68, 101, 89, 127, 179, 186, 210, 172, 21, 150, 100, 76, 59, 133, 166, 13, 136, 97, 153, 164, 234, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 84cb035362ae70014c1fed6ddc38c43c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 52b7d911f0a644fa49284b3958243d04, }, ), received_events: EventHandle { count: 943240900080723108, key: EventKey( [ 29, 39, 4, 5, 117, 198, 219, 242, 201, 9, 217, 149, 114, 208, 232, 133, 173, 163, 118, 40, 194, 191, 98, 147, ], ), }, sent_events: EventHandle { count: 526879853777701367, key: EventKey( [ 158, 61, 5, 64, 232, 50, 212, 20, 172, 9, 36, 104, 228, 149, 113, 181, 139, 78, 47, 76, 158, 189, 16, 105, ], ), }, sequence_number: 10235963830642086317, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c0927e57690f7897012ec57d5ef3994b40d36606e1f816934312be19788ce02): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f6665ae270c90823beebeaf207ebe9b5dd8d567c93043b54b650c5a4dde937b83e338ff0455fb13c4edfa525d95882f92099c26907d33c89f0d6cc85b3e758d208f318aa4943ce7efbb9c3f279dbb2f006a0f819eca7681c501b4e20d6dad4b01fdf051c553876b9a4d7dcc0cb2884b9500cd6d3cd46799934d18daf2ebe8bbf49f1a5af18147a98007f8afb991980e28dacd6f65f76a058c371b18ef2e6c621b80b36062e68edabffb0717b1ca8292795c2a663ba180bd8226e86e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc1f9f250a9601a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 101, 174, 39, 12, 144, 130, 59, 238, 190, 175, 32, 126, 190, 155, 93, 216, 213, 103, 201, 48, 67, 181, 75, 101, 12, 90, 77, 222, 147, 123, 131, 227, 56, 255, 4, 85, 251, 19, 196, 237, 250, 82, 93, 149, 136, 47, 146, 9, 156, 38, 144, 125, 51, 200, 159, 13, 108, 200, 91, 62, 117, 141, 32, 143, 49, 138, 164, 148, 60, 231, 239, 187, 156, 63, 39, 157, 187, 47, 0, 106, 15, 129, 158, 202, 118, 129, 197, 1, 180, 226, 13, 109, 173, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fdf051c553876b9a4d7dcc0cb2884b95, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5589980233718328781, key: EventKey( [ 218, 242, 235, 232, 187, 244, 159, 26, 90, 241, 129, 71, 169, 128, 7, 248, 175, 185, 145, 152, 14, 40, 218, 205, ], ), }, sent_events: EventHandle { count: 1961190117640463727, key: EventKey( [ 239, 46, 108, 98, 27, 128, 179, 96, 98, 230, 142, 218, 191, 251, 7, 23, 177, 202, 130, 146, 121, 92, 42, 102, ], ), }, sequence_number: 7991679881735872827, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c70d12519e0f6d5806bf39a68888bdbf1e07bd8aa912ca0a819e0b316b9bc59): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999014c838a57aee2782f26f104dea718fc6da05f79ec544aadf1d5da51df0bbd53effd4f8ec24dd50da106a7f94c5b9a4a6cf6232545d8eaf675d345bef83beeb7c0d3a98afd16b6b42e382a28a624000016d07ab82eb2230e18815c2eeaff4e9c6856c60d75d0d2ecf00ce4aeb6dc3660217dcd62d2dae6fc4f18a101c7a347ca863c1f108f3cba66799d874a597ba085a1c4b98abe117a067bb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c45af0e84e67b1de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 138, 87, 174, 226, 120, 47, 38, 241, 4, 222, 167, 24, 252, 109, 160, 95, 121, 236, 84, 74, 173, 241, 213, 218, 81, 223, 11, 189, 83, 239, 253, 79, 142, 194, 77, 213, 13, 161, 6, 167, 249, 76, 91, 154, 74, 108, 246, 35, 37, 69, 216, 234, 246, 117, 211, 69, 190, 248, 59, 238, 183, 192, 211, 169, 138, 253, 22, 182, 180, 46, 56, 42, 40, 166, 36, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1018853854449160214, key: EventKey( [ 129, 92, 46, 234, 255, 78, 156, 104, 86, 198, 13, 117, 208, 210, 236, 240, 12, 228, 174, 182, 220, 54, 96, 33, ], ), }, sent_events: EventHandle { count: 5763735450634341757, key: EventKey( [ 161, 1, 199, 163, 71, 202, 134, 60, 31, 16, 143, 60, 186, 102, 121, 157, 135, 74, 89, 123, 160, 133, 161, 196, ], ), }, sequence_number: 13365283440505555641, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c7ceacc0b35a95a4c2a1ae1761d75b34aa13cbdf9863ba1b6d5a0abe6d88f4b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0151dc3f1f03516e3437c821c8f41a0a911ec56ea39580a6d37d1ca58bc1cee1df6ac20e6d5c7b2fdff75b9979da6ed95880f8d7774fa02382339a57ba6b3e33f79a416ce0f88e9a7e6a091ade49b2bb7384e701ada755218a660fb82eda421bfaddb84f00491526c170c1e0581806a85c775e14213b5060f269763df69526014b2de19c5bd796f2039f4051da4618ab901aa42d5ea82232bfe3e0e785b32c975b62bba2ee679e95a88ca72325c5422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087da0a8f8096ad80c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 63, 31, 3, 81, 110, 52, 55, 200, 33, 200, 244, 26, 10, 145, 30, 197, 110, 163, 149, 128, 166, 211, 125, 28, 165, 139, 193, 206, 225, 223, 106, 194, 14, 109, 92, 123, 47, 223, 247, 91, 153, 121, 218, 110, 217, 88, 128, 248, 215, 119, 79, 160, 35, 130, 51, 154, 87, 186, 107, 62, 51, 247, 154, 65, 108, 224, 248, 142, 154, 126, 106, 9, 26, 222, 73, 178, 187, 115, 132, 231, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ada755218a660fb82eda421bfaddb84f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6404331360141841737, key: EventKey( [ 6, 168, 92, 119, 94, 20, 33, 59, 80, 96, 242, 105, 118, 61, 246, 149, 38, 1, 75, 45, 225, 156, 91, 215, ], ), }, sent_events: EventHandle { count: 5105482465565471382, key: EventKey( [ 171, 144, 26, 164, 45, 94, 168, 34, 50, 191, 227, 224, 231, 133, 179, 44, 151, 91, 98, 187, 162, 238, 103, 158, ], ), }, sequence_number: 4811292611980339349, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0c81b818813bd9f388da65ee902ac090d26a3e298e3b687a01017c73d2015c48): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c983012613cc985d72f71b57884c495c9fda0460837249b0d1ab5b6b675d503c26dc43daf1730d98940f014a1f5b8d4ea4bc4a52a51db8ee85f8cd00aab6fb97994f8459180fca8cb19ec09b0cefb335aaf2a1b87438c5a5c49ad9196ccae988a80281c11a18f04c6c1eb015274d469e0744cd60509f07e928d8337595a5232cc2c42847957c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c3b2c2ba430a0302 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 19, 204, 152, 93, 114, 247, 27, 87, 136, 76, 73, 92, 159, 218, 4, 96, 131, 114, 73, 176, 209, 171, 91, 107, 103, 93, 80, 60, 38, 220, 67, 218, 241, 115, 13, 152, 148, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4a1f5b8d4ea4bc4a52a51db8ee85f8cd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6450368087399839402, key: EventKey( [ 15, 202, 140, 177, 158, 192, 155, 12, 239, 179, 53, 170, 242, 161, 184, 116, 56, 197, 165, 196, 154, 217, 25, 108, ], ), }, sent_events: EventHandle { count: 1927963963908745674, key: EventKey( [ 240, 76, 108, 30, 176, 21, 39, 77, 70, 158, 7, 68, 205, 96, 80, 159, 7, 233, 40, 216, 51, 117, 149, 165, ], ), }, sequence_number: 8977159672658275363, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0cded44e60bf2d50327c612337a1aa3cbaec95dd712bc6a85e4cf0025c4ff4e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01501133759dda8e84e4c370425529e47858732878f7bd84b7b946f9da5e87dc6cbacc9114ced7f4e89bd37903b1dd5ffa94006b9a1633878a01c3ca86658558082e5798760fc34b5b296eb210497040e51500013314516c624b755cbeeb435196ace8744777dbd4e9c0e27e182a44079803e030e1d3c22553a7d08292a99f914e285ba7d0fe7a2a19a5c12e3a188849c832d5a883fe39356859b5ba72666860a81594570b9ab9aedf04214d9c192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70816427d7afa3870a6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 17, 51, 117, 157, 218, 142, 132, 228, 195, 112, 66, 85, 41, 228, 120, 88, 115, 40, 120, 247, 189, 132, 183, 185, 70, 249, 218, 94, 135, 220, 108, 186, 204, 145, 20, 206, 215, 244, 232, 155, 211, 121, 3, 177, 221, 95, 250, 148, 0, 107, 154, 22, 51, 135, 138, 1, 195, 202, 134, 101, 133, 88, 8, 46, 87, 152, 118, 15, 195, 75, 91, 41, 110, 178, 16, 73, 112, 64, 229, 21, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3314516c624b755cbeeb435196ace874, }, ), received_events: EventHandle { count: 9143082304046593863, key: EventKey( [ 42, 68, 7, 152, 3, 224, 48, 225, 211, 194, 37, 83, 167, 208, 130, 146, 169, 159, 145, 78, 40, 91, 167, 208, ], ), }, sent_events: EventHandle { count: 4192501217964489470, key: EventKey( [ 136, 73, 200, 50, 213, 168, 131, 254, 57, 53, 104, 89, 181, 186, 114, 102, 104, 96, 168, 21, 148, 87, 11, 154, ], ), }, sequence_number: 1845434751526088377, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0ce226ddf902362336b89fecd20fffa8d0851178af4784ddf4ccb9d3fcde2cb3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964076a5b62de21b6d70001e0a5f0d84561915194f27a85d1e1666adbfd45cf8506fe6b1824b4aa214ed7822b7b27cde5940b71bf728221182682bb8ce31de4852824d24618ef600b6913b7e9025424a00688c6af8d28061f43f8acb2b2d478752ecf8748232101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b515baa4266880ca Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 91, 98, 222, 33, 182, 215, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e0a5f0d84561915194f27a85d1e1666a, }, ), received_events: EventHandle { count: 7781664377920683483, key: EventKey( [ 36, 180, 170, 33, 78, 215, 130, 43, 123, 39, 205, 229, 148, 11, 113, 191, 114, 130, 33, 24, 38, 130, 187, 140, ], ), }, sent_events: EventHandle { count: 5103181084227804643, key: EventKey( [ 239, 96, 11, 105, 19, 183, 233, 2, 84, 36, 160, 6, 136, 198, 175, 141, 40, 6, 31, 67, 248, 172, 178, 178, ], ), }, sequence_number: 2542431313558075604, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0cf487256a87226d381dc87b2545dfabbdfacada7b1370d9541a2a3d826f3fbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215fe0a299e2c5fdb027726e86b73ef64a69346dd7334011a198f990d1a978fb5131985e4a4bec900565476cbf10ca1351841bca7359440646ec41024e7cbec4d14e6a1655fccb8fedab0cff84d6b69670218b1a762971b3202d2a5dd6a5617e210083f9f92553ac21baec2d32446dcc8f0482101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085af5eb5f904b709a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 10, 41, 158, 44, 95, 219, 2, 119, 38, 232, 107, 115, 239, 100, 166, 147, 70, 221, 115, 52, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1a198f990d1a978fb5131985e4a4bec9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3864384187900777558, key: EventKey( [ 65, 188, 167, 53, 148, 64, 100, 110, 196, 16, 36, 231, 203, 236, 77, 20, 230, 161, 101, 95, 204, 184, 254, 218, ], ), }, sent_events: EventHandle { count: 173223020267622320, key: EventKey( [ 177, 167, 98, 151, 27, 50, 2, 210, 165, 221, 106, 86, 23, 226, 16, 8, 63, 159, 146, 85, 58, 194, 27, 174, ], ), }, sequence_number: 5255921613536547778, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d31832600d5a12a605b3cedf7abd5a7d64904d7ab6995c7f461cbe4baa79848): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa015d90fa898a85675e7d2c21741dcfdc143726b91725abbd546cafe9c90590ba4a40fc9fabecea043cef9d6ed4ce5227d0eebb8e448d503b796cfc640842c85d47088bed6b145bab7551207a279af4b12d41fc4622d12b92af770b2655e36100008bd1ca3474a1b84a1880ee5338f02b76f37c506cd07d1cbf879e0056aadab5f6d62c9b17ad8f4f861a18edbf70a6352383a47b9806d1d7b589776bcce28ab79c6598f9a48312c18302cc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085261c9f3f7cb550d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 250, 137, 138, 133, 103, 94, 125, 44, 33, 116, 29, 207, 220, 20, 55, 38, 185, 23, 37, 171, 189, 84, 108, 175, 233, 201, 5, 144, 186, 74, 64, 252, 159, 171, 236, 234, 4, 60, 239, 157, 110, 212, 206, 82, 39, 208, 238, 187, 142, 68, 141, 80, 59, 121, 108, 252, 100, 8, 66, 200, 93, 71, 8, 139, 237, 107, 20, 91, 171, 117, 81, 32, 122, 39, 154, 244, 177, 45, 65, 252, 70, 34, 209, 43, 146, 175, 119, 11, 38, 85, 227, 97, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5384230874995413387, key: EventKey( [ 128, 238, 83, 56, 240, 43, 118, 243, 124, 80, 108, 208, 125, 28, 191, 135, 158, 0, 86, 170, 218, 181, 246, 214, ], ), }, sent_events: EventHandle { count: 1911302570368277292, key: EventKey( [ 237, 191, 112, 166, 53, 35, 131, 164, 123, 152, 6, 209, 215, 181, 137, 119, 107, 204, 226, 138, 183, 156, 101, 152, ], ), }, sequence_number: 14700456998953264377, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d69bed3870023b555805f9cf810cbf2b2fe812c03651ed630ee1666b6f5f36d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015ac53e05fd63d8ec157372f4be42ef5557b027f16a501078c05f36e321b8171a0bbd567c815801c45effc6c37fd6042d86e91472d27c96290274c9114c6bdfe5589cd87bb42c7e9efafa11829edd019f04ad680558d3945819da470173c518d43d355141ad7848fab4294a0400caa89a34637a4f6818f415f76b48d303eb3b9a5e7134e749103a65b3e71143347ec433f6a7c072cd7818dbe8f091e5a18151770d954aab8f31338ed59dc8c51d88137450e444004d19902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e563572f7f6e2ffa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 197, 62, 5, 253, 99, 216, 236, 21, 115, 114, 244, 190, 66, 239, 85, 87, 176, 39, 241, 106, 80, 16, 120, 192, 95, 54, 227, 33, 184, 23, 26, 11, 189, 86, 124, 129, 88, 1, 196, 94, 255, 198, 195, 127, 214, 4, 45, 134, 233, 20, 114, 210, 124, 150, 41, 2, 116, 201, 17, 76, 107, 223, 229, 88, 156, 216, 123, 180, 44, 126, 158, 250, 250, 17, 130, 158, 221, 1, 159, 4, 173, 104, 5, 88, 211, 148, 88, 25, 218, 71, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 73c518d43d355141ad7848fab4294a04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7516360869607549130, key: EventKey( [ 244, 21, 247, 107, 72, 211, 3, 235, 59, 154, 94, 113, 52, 231, 73, 16, 58, 101, 179, 231, 17, 67, 52, 126, ], ), }, sent_events: EventHandle { count: 8704739826554254276, key: EventKey( [ 219, 232, 240, 145, 229, 161, 129, 81, 119, 13, 149, 74, 171, 143, 49, 51, 142, 213, 157, 200, 197, 29, 136, 19, ], ), }, sequence_number: 10383415079430541428, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0d71705189147f08ad9f298c5979236d9f80e4621d98b921602893cd74e9e08b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b401477f4b8d9f73cb7899705dbaec824619ee207409a086525c923486872452c6c826ebffabcf0bbf634b548d4d589712b82b6f12b512c80477e9267e5b7ada1013a4adb8ca97cc986701816b5199624604f6c4387b1d9bdfcec10190695073bfe7cba529e5e3d07f256e9b1f6fdacbc10f2f01180887150ab7095d8623ae3372e005e29fecbcb2b131a25e7f6632c13632670b2e187009b8faf65893e0d7fc4eb5b0c8c82b8ecb95ea3df06afa7a2bb5da5639225f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890c6e65fa38d7e93 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 75, 141, 159, 115, 203, 120, 153, 112, 93, 186, 236, 130, 70, 25, 238, 32, 116, 9, 160, 134, 82, 92, 146, 52, 134, 135, 36, 82, 198, 200, 38, 235, 255, 171, 207, 11, 191, 99, 75, 84, 141, 77, 88, 151, 18, 184, 43, 111, 18, 181, 18, 200, 4, 119, 233, 38, 126, 91, 122, 218, 16, 19, 164, 173, 184, 202, 151, 204, 152, 103, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 816b5199624604f6c4387b1d9bdfcec1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 90695073bfe7cba529e5e3d07f256e9b, }, ), received_events: EventHandle { count: 85304242966523679, key: EventKey( [ 8, 135, 21, 10, 183, 9, 93, 134, 35, 174, 51, 114, 224, 5, 226, 159, 236, 188, 178, 177, 49, 162, 94, 127, ], ), }, sent_events: EventHandle { count: 3317859015853159014, key: EventKey( [ 112, 9, 184, 250, 246, 88, 147, 224, 215, 252, 78, 181, 176, 200, 200, 43, 142, 203, 149, 234, 61, 240, 106, 250, ], ), }, sequence_number: 6855104628010593146, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0db663be31e561bdfd5121ef8b081fdc8887d3fcfa08b149a27c8cd0bbd6c602): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306bac75a49a50401659c5d969929fc58d6a6388b6518fe440039d81713f075ab1e18d7ff223f66d08f6bc3beef3c1082fbff30909e8479c68e6c952c22a4ea2d5b1418f00b1e7e151e3a2f400897c05877d39371b73472d0015456d2917a712903b0992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708060f981ecb3c18ae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 199, 90, 73, 165, 4, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 659c5d969929fc58d6a6388b6518fe44, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2209989716128290873, key: EventKey( [ 215, 255, 34, 63, 102, 208, 143, 107, 195, 190, 239, 60, 16, 130, 251, 255, 48, 144, 158, 132, 121, 198, 142, 108, ], ), }, sent_events: EventHandle { count: 1466816589438528661, key: EventKey( [ 240, 11, 30, 126, 21, 30, 58, 47, 64, 8, 151, 192, 88, 119, 211, 147, 113, 183, 52, 114, 208, 1, 84, 86, ], ), }, sequence_number: 11074354960236450258, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0ddeb6a337e3c22571efb6ffed885201687840914e40d696f996f5634faf1935): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015997df7f9118ca13e2df7d28d5df1a4c62e46feeb27150399799b0762b58063bc1dda813ad2e4b600b70d6578db1bcfc4b9d8302c74e639cc31419dcbb5ab022cef5cf2ce9fbae9cb4aea21f8392e18cf41244cf625ac69a6f0f0141ffc5aaa25419f0635116f8eb67352d00201346d9e66b3f071889ed37b2556cb4b3f18add8476b3da76fad9858150c78cbacaac7b197f5f806a188921a938d6dcc4405dd71c589aaae7c1775e593327323a2d8c8ca25785dda7382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70856f2083071df5e68 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 223, 127, 145, 24, 202, 19, 226, 223, 125, 40, 213, 223, 26, 76, 98, 228, 111, 238, 178, 113, 80, 57, 151, 153, 176, 118, 43, 88, 6, 59, 193, 221, 168, 19, 173, 46, 75, 96, 11, 112, 214, 87, 141, 177, 188, 252, 75, 157, 131, 2, 199, 78, 99, 156, 195, 20, 25, 220, 187, 90, 176, 34, 206, 245, 207, 44, 233, 251, 174, 156, 180, 174, 162, 31, 131, 146, 225, 140, 244, 18, 68, 207, 98, 90, 198, 154, 111, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 41ffc5aaa25419f0635116f8eb67352d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 522254721030165280, key: EventKey( [ 137, 237, 55, 178, 85, 108, 180, 179, 241, 138, 221, 132, 118, 179, 218, 118, 250, 217, 133, 129, 80, 199, 140, 186, ], ), }, sent_events: EventHandle { count: 7674238764532346058, key: EventKey( [ 137, 33, 169, 56, 214, 220, 196, 64, 93, 215, 28, 88, 154, 170, 231, 193, 119, 94, 89, 51, 39, 50, 58, 45, ], ), }, sequence_number: 4082475152005303436, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0dfb908864f62d41c2b21a9a2ec19d908b90dae4888bed4c9d8736b238e1cbcc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501582ebfca078f2c2c16f39c96b0b5a5d2faf4df036951d303675c9de03b3640ee124153f09445b1efaf88ebdd49484c911077ca28344c6fc00e8fdb5d5e3993275ee2857b8e67cf97518ab3d7f7349ccf37bbaec1a46f923c4a0001960bb1ecdcb3bfd9c6a5856b3b27190f9fa4679fc81b7d19183d1cd30e2217e70f36c81f9681ae7031cbbebbe7c5d56e80c2cb0ae66d6c7c5618dfb8181ad40297b9a7e6271f768b3ca8de1c564a46c1944259a0ef5eb7f2af452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec04e6c12d104af9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 191, 202, 7, 143, 44, 44, 22, 243, 156, 150, 176, 181, 165, 210, 250, 244, 223, 3, 105, 81, 211, 3, 103, 92, 157, 224, 59, 54, 64, 238, 18, 65, 83, 240, 148, 69, 177, 239, 175, 136, 235, 221, 73, 72, 76, 145, 16, 119, 202, 40, 52, 76, 111, 192, 14, 143, 219, 93, 94, 57, 147, 39, 94, 226, 133, 123, 142, 103, 207, 151, 81, 138, 179, 215, 247, 52, 156, 207, 55, 187, 174, 193, 164, 111, 146, 60, 74, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 960bb1ecdcb3bfd9c6a5856b3b27190f, }, ), received_events: EventHandle { count: 1836654771518809247, key: EventKey( [ 61, 28, 211, 14, 34, 23, 231, 15, 54, 200, 31, 150, 129, 174, 112, 49, 203, 190, 187, 231, 197, 213, 110, 128, ], ), }, sent_events: EventHandle { count: 6231975203640626114, key: EventKey( [ 223, 184, 24, 26, 212, 2, 151, 185, 167, 230, 39, 31, 118, 139, 60, 168, 222, 28, 86, 74, 70, 193, 148, 66, ], ), }, sequence_number: 5021498978927091801, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0f3db236de5962acdb51cc6599750f144de0485d9f137ede8e3e93147c69dfa7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014ec3d18845237ab7a9ed8b1a7073a40082f3d6fb05bcb32fbe567786dfef2189e1b4c678b681ff6424e3705b922c555baab6ee566abff6b19e13885647eb92936384e3c746b850e3082a3db43ee891014ae25e95f0d8686a53f779911223b2cc018289a8500819b1b9473ec3e0e44155d922470f371a606c5c1859ef20a3b85caa4b73985dc76a38424ae2b714ec0cbf54fcb4990afd4057083518152da7f4b0e59f8f13c6017013e45c427d1496ef6e22970705cd0ab2ddd663d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080eb0a3f42c46e1f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 195, 209, 136, 69, 35, 122, 183, 169, 237, 139, 26, 112, 115, 164, 0, 130, 243, 214, 251, 5, 188, 179, 47, 190, 86, 119, 134, 223, 239, 33, 137, 225, 180, 198, 120, 182, 129, 255, 100, 36, 227, 112, 91, 146, 44, 85, 91, 170, 182, 238, 86, 106, 191, 246, 177, 158, 19, 136, 86, 71, 235, 146, 147, 99, 132, 227, 199, 70, 184, 80, 227, 8, 42, 61, 180, 62, 232, 145, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4ae25e95f0d8686a53f779911223b2cc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8289a8500819b1b9473ec3e0e44155d9, }, ), received_events: EventHandle { count: 6659803614683285282, key: EventKey( [ 89, 239, 32, 163, 184, 92, 170, 75, 115, 152, 93, 199, 106, 56, 66, 74, 226, 183, 20, 236, 12, 191, 84, 252, ], ), }, sent_events: EventHandle { count: 3821400220458719668, key: EventKey( [ 21, 45, 167, 244, 176, 229, 159, 143, 19, 198, 1, 112, 19, 228, 92, 66, 125, 20, 150, 239, 110, 34, 151, 7, ], ), }, sequence_number: 15664600176587885829, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0f88b3dab137fbf89ae5a9c471b1466c54ea4ec96a1485bcd88680bc9a11cbeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f02aad300007158311d60842d561834e4458f7765536f80ef4f2f17a88c1b56f50def53a469058e0d59e094150b0c187536ddff5edce171cef9576ea318990b871848a3b1fc35304ad4d4da67a6deae2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086466ef5fc7d8bc8a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 211, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6209765009555282033, key: EventKey( [ 52, 228, 69, 143, 119, 101, 83, 111, 128, 239, 79, 47, 23, 168, 140, 27, 86, 245, 13, 239, 83, 164, 105, 5, ], ), }, sent_events: EventHandle { count: 867811082362228110, key: EventKey( [ 117, 54, 221, 255, 94, 220, 225, 113, 206, 249, 87, 110, 163, 24, 153, 11, 135, 24, 72, 163, 177, 252, 53, 48, ], ), }, sequence_number: 12600691772412449866, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(0fa7e021b2086854db48f4ca59dc39b780c3b4e29b1deeda1e072f92343a468f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01611e906634e5ba281198e4100119dab40d73e5b6c49abd27126bf8b9be5a93a19c23b89c4821eae2c86f181d1358aaf7d84b76cdaa9859db534af920713c03636d735df3a7de0ef0674e67bc6b1fe7e92d17d5fd92d53bdb988bab04b981f0dc17c3010d9e49a38182e680cf3f230e6fa6efdd01e37e90ac2bb611593a5a78c86f4ca00687b77b11f38fc445186146b7c0a5efd09fb5e29bac5339291f17319b18f2cef4a6adbfb48f42b4f13f186e3a54b40db46de4b4a286abe652d3f58ae694845ee7e96f8bdb63bf5746f8322101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d86e169a8b51e4c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 144, 102, 52, 229, 186, 40, 17, 152, 228, 16, 1, 25, 218, 180, 13, 115, 229, 182, 196, 154, 189, 39, 18, 107, 248, 185, 190, 90, 147, 161, 156, 35, 184, 156, 72, 33, 234, 226, 200, 111, 24, 29, 19, 88, 170, 247, 216, 75, 118, 205, 170, 152, 89, 219, 83, 74, 249, 32, 113, 60, 3, 99, 109, 115, 93, 243, 167, 222, 14, 240, 103, 78, 103, 188, 107, 31, 231, 233, 45, 23, 213, 253, 146, 213, 59, 219, 152, 139, 171, 4, 185, 129, 240, 220, 23, 195, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0d9e49a38182e680cf3f230e6fa6efdd, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e37e90ac2bb611593a5a78c86f4ca006, }, ), received_events: EventHandle { count: 5027301358185461639, key: EventKey( [ 97, 70, 183, 192, 165, 239, 208, 159, 181, 226, 155, 172, 83, 57, 41, 31, 23, 49, 155, 24, 242, 206, 244, 166, ], ), }, sent_events: EventHandle { count: 4607662091748556717, key: EventKey( [ 110, 58, 84, 180, 13, 180, 109, 228, 180, 162, 134, 171, 230, 82, 211, 245, 138, 230, 148, 132, 94, 231, 233, 111, ], ), }, sequence_number: 3672762838807731083, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(103a29b832883a6564edc1dfbd8af4535486ca929a83e8102ad97838dae92fab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa013d263951c1c27db98e17d1a1fce6d5717030a28cb09275b9fd1ba85d2831b9e22e8ef752b03c86e95f7e0ff456265c77bc069184135eeee4552acede8c7901ca0fe111ef2bd8ad9a62fbeb3e35a58601a50692ab9e7c92afe16f2a61f90853d80112ebba11b2f42018f992aca77d44ed06dfbf74b3fa2de2af236918b2442894836a1167ae3f004426181273bd56be7a9b7a441e63f3a2a03dbc50459c374892d68dd25d998ef4fc02c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081be12878a25a34b5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 57, 81, 193, 194, 125, 185, 142, 23, 209, 161, 252, 230, 213, 113, 112, 48, 162, 140, 176, 146, 117, 185, 253, 27, 168, 93, 40, 49, 185, 226, 46, 142, 247, 82, 176, 60, 134, 233, 95, 126, 15, 244, 86, 38, 92, 119, 188, 6, 145, 132, 19, 94, 238, 228, 85, 42, 206, 222, 140, 121, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ca0fe111ef2bd8ad9a62fbeb3e35a586, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a50692ab9e7c92afe16f2a61f90853d8, }, ), received_events: EventHandle { count: 2374718692751249921, key: EventKey( [ 249, 146, 172, 167, 125, 68, 237, 6, 223, 191, 116, 179, 250, 45, 226, 175, 35, 105, 24, 178, 68, 40, 148, 131, ], ), }, sent_events: EventHandle { count: 2757329145366516074, key: EventKey( [ 18, 115, 189, 86, 190, 122, 155, 122, 68, 30, 99, 243, 162, 160, 61, 188, 80, 69, 156, 55, 72, 146, 214, 141, ], ), }, sequence_number: 14052071914644004306, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(11092c4aa9f5567b15eb9f5fb2cf594027b1a3514dfc41a2a6471df1cb130f6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40157ce68ed87027dbfa0148f5dd8aa8cb9ae745131955a5a89e2cccfc0a03186619547fed4df1d733dfaedb39f45291cde1eaaedb1277841353142cdbad4d1ec058319fd4f0b14bc53469d6779be7c39f0291ae8082bf3d19c000088cddbe50e292e531835d81fccfbacb2cd578f3305a23bf6edae4994f4428bbaadceafdf700713ca26181dcaa558a73b367281fbf26ecf25c61c5946cf9e0e287f853a032a80f01b02052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081df42d16c36d271d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 104, 237, 135, 2, 125, 191, 160, 20, 143, 93, 216, 170, 140, 185, 174, 116, 81, 49, 149, 90, 90, 137, 226, 204, 207, 192, 160, 49, 134, 97, 149, 71, 254, 212, 223, 29, 115, 61, 250, 237, 179, 159, 69, 41, 28, 222, 30, 170, 237, 177, 39, 120, 65, 53, 49, 66, 205, 186, 212, 209, 236, 5, 131, 25, 253, 79, 11, 20, 188, 83, 70, 157, 103, 121, 190, 124, 57, 240, 41, 26, 232, 8, 43, 243, 209, 156, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5993773298039377288, key: EventKey( [ 53, 216, 31, 204, 251, 172, 178, 205, 87, 143, 51, 5, 162, 59, 246, 237, 174, 73, 148, 244, 66, 139, 186, 173, ], ), }, sent_events: EventHandle { count: 2795067441416220622, key: EventKey( [ 29, 202, 165, 88, 167, 59, 54, 114, 129, 251, 242, 110, 207, 37, 198, 28, 89, 70, 207, 158, 14, 40, 127, 133, ], ), }, sequence_number: 360881639899398970, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(115d6cf89fbafc09043f727db6954eeaf67bf015056ce4f742654ee0e690b210): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20135e00e57b01967df489c1fa61bb99b9acca02062cdee7a43905434161328aed6de43d28b84bb60a264df6630b27d6b77dfe35b83a10b018503800c2fef324dbcd430e0ec9195bb0123edf7cfe04628f6b9966c4a3013e786c01d6094093e104518d112f9e1e5f4ce5e8c10b812770daad6d7d8d427842330dadd63cf2a1a932628185b86f2f39567dd05325d6522e28e557f3759bcf116bc3dc26ba2380dce6f23062101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b8a8e9352de7211 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 14, 87, 176, 25, 103, 223, 72, 156, 31, 166, 27, 185, 155, 154, 204, 160, 32, 98, 205, 238, 122, 67, 144, 84, 52, 22, 19, 40, 174, 214, 222, 67, 210, 139, 132, 187, 96, 162, 100, 223, 102, 48, 178, 125, 107, 119, 223, 227, 91, 131, 161, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8503800c2fef324dbcd430e0ec9195bb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 23edf7cfe04628f6b9966c4a3013e786, }, ), received_events: EventHandle { count: 4976545799109352896, key: EventKey( [ 209, 18, 249, 225, 229, 244, 206, 94, 140, 16, 184, 18, 119, 13, 170, 214, 215, 216, 212, 39, 132, 35, 48, 218, ], ), }, sent_events: EventHandle { count: 2893161551228789725, key: EventKey( [ 91, 134, 242, 243, 149, 103, 221, 5, 50, 93, 101, 34, 226, 142, 85, 127, 55, 89, 188, 241, 22, 188, 61, 194, ], ), }, sequence_number: 442320119188202091, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(11a8c4ed9c89e4e253094741919596b416ff7634c51387220f044ee999ec2de6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98401271d1510d2793199f51e60253684babddfd33b96df5ac392f7668d00251506dd9ce8f00432282df10001a819b74d5c0da1eeec77932e483acb0428e9120268522f0a18bb724d22137e0cce2aedd5dee387eb395cdd1b5ad3cd05d03d221a8cef7efa0918cbfe90c352c53b22570d9cbff754c8505ae7dbac5da242d4dcb25f34fe13a0452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ecbdee1ca77f1b75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 21, 16, 210, 121, 49, 153, 245, 30, 96, 37, 54, 132, 186, 189, 223, 211, 59, 150, 223, 90, 195, 146, 247, 102, 141, 0, 37, 21, 6, 221, 156, 232, 240, 4, 50, 40, 45, 241, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a819b74d5c0da1eeec77932e483acb04, }, ), received_events: EventHandle { count: 733895870949550376, key: EventKey( [ 187, 114, 77, 34, 19, 126, 12, 206, 42, 237, 213, 222, 227, 135, 235, 57, 92, 221, 27, 90, 211, 205, 5, 208, ], ), }, sent_events: EventHandle { count: 719026657831821885, key: EventKey( [ 203, 254, 144, 195, 82, 197, 59, 34, 87, 13, 156, 191, 247, 84, 200, 80, 90, 231, 219, 172, 93, 162, 66, 212, ], ), }, sequence_number: 5017031967412040412, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1203cf6802a197f1eb283a31bbb26605dc87fdaa9c87130893d99a062208e4b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a6014939fa7730060187e0b9206e2d39d76a0f0ed8e0b8f221cf01b08c842d47aa93f6081079507a5dc8c5c19b178918c050505ffbf80ec08f8a49f5cb0ae85e2d2d56e3c00e75bb110d3a8601f9933c0d377923fb46abe9ce9e378d3f00be521ca55838890018e2bccf1c6803c0278301675092bf5d3807508cee7687cb16a22635fcf6e1fd61183bde2eec4d3696cd09a5284ea69b15ba39b8b554a9d3099a5c7ff999f82923492101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080cd8bb4345773a8c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 250, 119, 48, 6, 1, 135, 224, 185, 32, 110, 45, 57, 215, 106, 15, 14, 216, 224, 184, 242, 33, 207, 1, 176, 140, 132, 45, 71, 170, 147, 246, 8, 16, 121, 80, 122, 93, 200, 197, 193, 155, 23, 137, 24, 192, 80, 80, 95, 251, 248, 14, 192, 143, 138, 73, 245, 203, 10, 232, 94, 45, 45, 86, 227, 192, 14, 117, 187, 17, 13, 58, 134, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f9933c0d377923fb46abe9ce9e378d3f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 38624025187734206, key: EventKey( [ 226, 188, 207, 28, 104, 3, 192, 39, 131, 1, 103, 80, 146, 191, 93, 56, 7, 80, 140, 238, 118, 135, 203, 22, ], ), }, sent_events: EventHandle { count: 7061048241696351906, key: EventKey( [ 59, 222, 46, 236, 77, 54, 150, 205, 9, 165, 40, 78, 166, 155, 21, 186, 57, 184, 181, 84, 169, 211, 9, 154, ], ), }, sequence_number: 5270102136665505628, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(12a203d32f402de74326beb76b13664f4dc70db36194fa72007652f78bc8a69d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01c40001fbf25bc1883fa94ac93ecd68a35c58a2f4a4481d950c5c001887dd8c00ced066a6ca62d915e89bcc2dc48168e7c968edfee06c095884556c7218d62bab0f5ebfcebbb211af4b53bda1d1fd578a7dcf44ffeb1764e82e182365622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708784de7f988ec448a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fbf25bc1883fa94ac93ecd68a35c58a2, }, ), received_events: EventHandle { count: 25909532438340852, key: EventKey( [ 135, 221, 140, 0, 206, 208, 102, 166, 202, 98, 217, 21, 232, 155, 204, 45, 196, 129, 104, 231, 201, 104, 237, 254, ], ), }, sent_events: EventHandle { count: 8245059044709592288, key: EventKey( [ 214, 43, 171, 15, 94, 191, 206, 187, 178, 17, 175, 75, 83, 189, 161, 209, 253, 87, 138, 125, 207, 68, 255, 235, ], ), }, sequence_number: 7090111775137883159, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(12a2614d897271e3b72bb9c0a479c42114fca6a66fdbcda980de4b2256c5c0d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e00a67ad5d71f42db05a426128a42384220bd98b1e04801437c11e54af6665814dd6dd7cf2a6a2b3aa56eee849f9219e048d552baacb367be80e05901ec960001b387bec0b56c81bbe508879e87bf60f8636a8ce460edf027181198c530556a3743e98892074ee575a4f694c16f6ff4cf4190d8a94a3f00a152184daec8648b091d829a5233724f3b1fc7cc2df6d2bd5c8942925ffd483b4538222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1e474424232755a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 0, 166, 122, 213, 215, 31, 66, 219, 5, 164, 38, 18, 138, 66, 56, 66, 32, 189, 152, 177, 224, 72, 1, 67, 124, 17, 229, 74, 246, 102, 88, 20, 221, 109, 215, 207, 42, 106, 43, 58, 165, 110, 238, 132, 159, 146, 25, 224, 72, 213, 82, 186, 172, 179, 103, 190, 128, 224, 89, 1, 236, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b387bec0b56c81bbe508879e87bf60f8, }, ), received_events: EventHandle { count: 2878061162296797795, key: EventKey( [ 17, 152, 197, 48, 85, 106, 55, 67, 233, 136, 146, 7, 78, 229, 117, 164, 246, 148, 193, 111, 111, 244, 207, 65, ], ), }, sent_events: EventHandle { count: 5954040454196091024, key: EventKey( [ 77, 174, 200, 100, 139, 9, 29, 130, 154, 82, 51, 114, 79, 59, 31, 199, 204, 45, 246, 210, 189, 92, 137, 66, ], ), }, sequence_number: 2465796916915298194, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(131dacdb1a55a17d0f58c590fa54ae99aa74babc6dff9a27731ce52c8ed37374): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e4fee2c8ededb1c95395d192b5c454cd22667c7132c610d15a020ba2fab7901d228e519754d6631da3f2f9c6abaa84ac899a32ad957183cff778c787a0db64f111478052c721b355a6f6241d2d80d01bd37fb6e07e20fd456799312ba80457600a00e191f8b57a4551860e72d1b1f970fc61516f8c3adc22fd57a2c368d12f60618a8cf6d1186c3592118a780764535d20c55b51596e440866119746752022379b36ca1b0267c4bcb1afc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e815f09d85e92987 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 238, 44, 142, 222, 219, 28, 149, 57, 93, 25, 43, 92, 69, 76, 210, 38, 103, 199, 19, 44, 97, 13, 21, 160, 32, 186, 47, 171, 121, 1, 210, 40, 229, 25, 117, 77, 102, 49, 218, 63, 47, 156, 106, 186, 168, 74, 200, 153, 163, 42, 217, 87, 24, 60, 255, 119, 140, 120, 122, 13, 182, 79, 17, 20, 120, 5, 44, 114, 27, 53, 90, 111, 98, 65, 210, 216, 13, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bd37fb6e07e20fd456799312ba804576, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6171153644438228640, key: EventKey( [ 96, 231, 45, 27, 31, 151, 15, 198, 21, 22, 248, 195, 173, 194, 47, 213, 122, 44, 54, 141, 18, 246, 6, 24, ], ), }, sent_events: EventHandle { count: 2403166856764313512, key: EventKey( [ 167, 128, 118, 69, 53, 210, 12, 85, 181, 21, 150, 228, 64, 134, 97, 25, 116, 103, 82, 2, 35, 121, 179, 108, ], ), }, sequence_number: 18166055572018213025, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(13892fc8acf0d4ba11a315c9ec5036e975382ed48d6c3a708482c98be319c2ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013afc58ab4286f3e527f4123b9fe55a4a7458bf35346cf3b2b2dfd3314bda9883e210ffbeb9f2609b76c1fc6285b5a2b1c89445c62f702869fb68ec000171f322899592ece804440c7db960995bf7efd41645a1cb4e185478e41f31620725bd00af83e102b4870fa1db8964c4129456766de5d3c6fe2318a36bb55f7013e6e4e6c1313d9b1dec93d7b07ac1da487b28ad003222e56bfed12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085192ec8e1245e1b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 88, 171, 66, 134, 243, 229, 39, 244, 18, 59, 159, 229, 90, 74, 116, 88, 191, 53, 52, 108, 243, 178, 178, 223, 211, 49, 75, 218, 152, 131, 226, 16, 255, 190, 185, 242, 96, 155, 118, 193, 252, 98, 133, 181, 162, 177, 200, 148, 69, 198, 47, 112, 40, 105, 251, 104, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71f322899592ece804440c7db960995b, }, ), received_events: EventHandle { count: 5677809073338511351, key: EventKey( [ 84, 120, 228, 31, 49, 98, 7, 37, 189, 0, 175, 131, 225, 2, 180, 135, 15, 161, 219, 137, 100, 196, 18, 148, ], ), }, sent_events: EventHandle { count: 2593729048801539670, key: EventKey( [ 163, 107, 181, 95, 112, 19, 230, 228, 230, 193, 49, 61, 155, 29, 236, 147, 215, 176, 122, 193, 218, 72, 123, 40, ], ), }, sequence_number: 15131650429876830381, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(13e6cae1337c9f646300124e2f3da0b2372e6703dbcde25e43addc795d58a06a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e1199b3b485079014e3a2bb36c84e6da7067d000001db3f0b7158dc5818f3e1992c7aeaecc0d91a633fbc274ba1729b123d13924b0e2a00d86c2e5c6e791862956a38f841512f76be0a987ecdddec796ccf34bb9ce9454cd650247b9285f02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f14e0f6f4049bd8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 153, 179, 180, 133, 7, 144, 20, 227, 162, 187, 54, 200, 78, 109, 167, 6, 125, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6403090012757285633, key: EventKey( [ 243, 225, 153, 44, 122, 234, 236, 192, 217, 26, 99, 63, 188, 39, 75, 161, 114, 155, 18, 61, 19, 146, 75, 14, ], ), }, sent_events: EventHandle { count: 8750032480491798570, key: EventKey( [ 98, 149, 106, 56, 248, 65, 81, 47, 118, 190, 10, 152, 126, 205, 221, 236, 121, 108, 207, 52, 187, 156, 233, 69, ], ), }, sequence_number: 17331419798593132108, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(14847064c0c116410edac7b01937cdc737122e98320c5b9772f252efbdd69c15): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013e381216688c12da9bab9279432b32eacfd58e8ef3552fca8fffad3345a151b133e414f34e824e1d416c20d83d6678aad56be4709e3ca8977e41b62479817201c9bc554f6df911a9ff23f7557cff382c0098fa36f5ff037e6818ce2e89a8f6bc1cd390fde15b8c1792413e5c643a438b963bd6c3f035c50780761835bbd9e603facd48265cf2d068446185a919f4d41971851409904c1cc92c6dd82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70837652111fb8f4a08 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 18, 22, 104, 140, 18, 218, 155, 171, 146, 121, 67, 43, 50, 234, 207, 213, 142, 142, 243, 85, 47, 202, 143, 255, 173, 51, 69, 161, 81, 177, 51, 228, 20, 243, 78, 130, 78, 29, 65, 108, 32, 216, 61, 102, 120, 170, 213, 107, 228, 112, 158, 60, 168, 151, 126, 65, 182, 36, 121, 129, 114, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c9bc554f6df911a9ff23f7557cff382c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7529460024875612824, key: EventKey( [ 206, 46, 137, 168, 246, 188, 28, 211, 144, 253, 225, 91, 140, 23, 146, 65, 62, 92, 100, 58, 67, 139, 150, 59, ], ), }, sent_events: EventHandle { count: 8538833437089383382, key: EventKey( [ 53, 187, 217, 230, 3, 250, 205, 72, 38, 92, 242, 208, 104, 68, 97, 133, 169, 25, 244, 212, 25, 113, 133, 20, ], ), }, sequence_number: 15595170326928723977, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(14b0cebd0234682505cead34d3029adca1cbfca1e0719d04fd0ee74f0ac90d1a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113a077198bf093e8f13d455d5b665cbe469ea8e4016b90c24a96b1a5938a308a79addc3533013f4bbad90d046b731cda24874b76207d188b9119aa41910a18bac57ac04313f89e809e0f06b162f547254b4d37fa60eb7e00988bbeb4979178187adb8edf2a60d6b41214721cb69c25c63beac22774a375fe52154b37229244d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859e8d91f75fea453 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 119, 25, 139, 240, 147, 232, 241, 61, 69, 93, 91, 102, 92, 190, 70, 158, 168, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6b90c24a96b1a5938a308a79addc3533, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3f4bbad90d046b731cda24874b76207d, }, ), received_events: EventHandle { count: 761462010831538968, key: EventKey( [ 186, 197, 122, 192, 67, 19, 248, 158, 128, 158, 15, 6, 177, 98, 245, 71, 37, 75, 77, 55, 250, 96, 235, 126, ], ), }, sent_events: EventHandle { count: 8687891958721124352, key: EventKey( [ 122, 219, 142, 223, 42, 96, 214, 180, 18, 20, 114, 28, 182, 156, 37, 198, 59, 234, 194, 39, 116, 163, 117, 254, ], ), }, sequence_number: 15295510910111257938, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(150df5ada617aa767fe746ee241eba15d59a3858649a1e09f296a6903cbaf344): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973162e4385f5449b8fd8d9de4fe2ea026ae788f21ab3db1a0001c55314c5d6374bc23b8246b2ec10847886fc8cff49788b6018d32d0c590701a9db13b3fdd96827f64488cdbf724158654080ba2907d5e7931518d152d9bb6ee048c58e921148aca641a37e8ce78e1614d92e0d6450d2f04ce6902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdad2701ae696207 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 67, 133, 245, 68, 155, 143, 216, 217, 222, 79, 226, 234, 2, 106, 231, 136, 242, 26, 179, 219, 26, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c55314c5d6374bc23b8246b2ec108478, }, ), received_events: EventHandle { count: 6956786308619238534, key: EventKey( [ 211, 45, 12, 89, 7, 1, 169, 219, 19, 179, 253, 217, 104, 39, 246, 68, 136, 205, 191, 114, 65, 88, 101, 64, ], ), }, sent_events: EventHandle { count: 1554841198507178624, key: EventKey( [ 209, 82, 217, 187, 110, 224, 72, 197, 142, 146, 17, 72, 172, 166, 65, 163, 126, 140, 231, 142, 22, 20, 217, 46, ], ), }, sequence_number: 10441117383309419533, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(153d834b7e8847ce12ff6e9b883210fbcc29de0490c8e9958d8e0752b344ca1e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9590cf586f14cd243546fe36d621b0000f9313bddc664900e18fcc6309e4a3f2b3f953f28ee6bb8bde3b8abeeb17b0e89ec22b35e1d12d60c0118a3eaa2ffa87d7e5edfe01e97b3b074d23e01ec4d6c0e725bf8d58b33a0cc74f82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708715e9822cbae8dca Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 134, 241, 76, 210, 67, 84, 111, 227, 109, 98, 27, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1049449518455271929, key: EventKey( [ 252, 198, 48, 158, 74, 63, 43, 63, 149, 63, 40, 238, 107, 184, 189, 227, 184, 171, 238, 177, 123, 14, 137, 236, ], ), }, sent_events: EventHandle { count: 75670667048956706, key: EventKey( [ 163, 234, 162, 255, 168, 125, 126, 94, 223, 224, 30, 151, 179, 176, 116, 210, 62, 1, 236, 77, 108, 14, 114, 91, ], ), }, sequence_number: 17903159407136200184, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1597a2784df7aa99badadec9d2e8dc657469736683aeb1d19eee58505bf1aa70): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bf334477b3a3e6d9cebefd2519c6274d88c90e22df056c60a97ca045ca5861f855c9570d9d1eaa125c28eec333a7788c4899fe7633b13911ec773495b3ebc5377e5e8f5a89f648d36f332c006cefe901937dbc44f7a1639dd6b9c96018c88467e1a78cbba89ebc018d37ce8ae009fe01e8f31eebf7d18f2dc0f07d4cc30d72c49e46aa2be2a853e1a71d107d913e50d72cefb451f2011188be95044b2b17ed7cdfcf96af020f7a17d655c0f245a52b3d2ec758696f2df222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708193726659b81d6d9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 52, 71, 123, 58, 62, 109, 156, 235, 239, 210, 81, 156, 98, 116, 216, 140, 144, 226, 45, 240, 86, 198, 10, 151, 202, 4, 92, 165, 134, 31, 133, 92, 149, 112, 217, 209, 234, 161, 37, 194, 142, 236, 51, 58, 119, 136, 196, 137, 159, 231, 99, 59, 19, 145, 30, 199, 115, 73, 91, 62, 188, 83, 119, 229, 232, 245, 168, 159, 100, 141, 54, 243, 50, 192, 6, 206, 254, 144, 25, 55, 219, 196, 79, 122, 22, 57, 221, 107, 156, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c88467e1a78cbba89ebc018d37ce8ae, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9061222871914700959, key: EventKey( [ 242, 220, 15, 7, 212, 204, 48, 215, 44, 73, 228, 106, 162, 190, 42, 133, 62, 26, 113, 209, 7, 217, 19, 229, ], ), }, sent_events: EventHandle { count: 1234020683337331213, key: EventKey( [ 139, 233, 80, 68, 178, 177, 126, 215, 205, 252, 249, 106, 240, 32, 247, 161, 125, 101, 92, 15, 36, 90, 82, 179, ], ), }, sequence_number: 2512993845410917586, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(159ba69c06ced5b3496c598f366851b0d3ef89e9c82b60c140e71daed2129caa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014c245d99c2dbffd179d1e5f78ddcfce7e62a7eecda7162fb0213d785d03abd04813ff6225ea6e855be54c1476edc704e64bfbaca64381ec25674cc7ca215560c400766178dcd75d4226f87331901c4abe41f0109661d3c4ec2bfc2fcf53000c6902555d238d91318478b27f8f1c6bcd142acd61d1da033fb16a94fe30a49fc6b15881dee694e7715186c06859401d8e48f65e35ebac75102d46c90a6395be12a48195cc762059f05982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708227d3f3138c94bdf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 93, 153, 194, 219, 255, 209, 121, 209, 229, 247, 141, 220, 252, 231, 230, 42, 126, 236, 218, 113, 98, 251, 2, 19, 215, 133, 208, 58, 189, 4, 129, 63, 246, 34, 94, 166, 232, 85, 190, 84, 193, 71, 110, 220, 112, 78, 100, 191, 186, 202, 100, 56, 30, 194, 86, 116, 204, 124, 162, 21, 86, 12, 64, 7, 102, 23, 141, 205, 117, 212, 34, 111, 135, 51, 25, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4abe41f0109661d3c4ec2bfc2fcf530, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1430236832689656006, key: EventKey( [ 71, 139, 39, 248, 241, 198, 188, 209, 66, 172, 214, 29, 29, 160, 51, 251, 22, 169, 79, 227, 10, 73, 252, 107, ], ), }, sent_events: EventHandle { count: 1546791213898500117, key: EventKey( [ 108, 6, 133, 148, 1, 216, 228, 143, 101, 227, 94, 186, 199, 81, 2, 212, 108, 144, 166, 57, 91, 225, 42, 72, ], ), }, sequence_number: 10954336514129484825, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(15c67a03e1dd1302fbe3a0c49169ac59e0da4b06373c1c01f3ad914e144e1cf6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144142a1de02387ae0f8d73a9621998f299754908c7bee40c576524268b94ea4f7d93f7e43bf61b4dc1866bd4a258e1bb484f1c84f9c45ae04a4f96912222aee31d5c362784000093083c668ef8655218c92b0de5d86f389a5b332dcb95a74017e38e9b16b8e891a3074f656636877d2f182df386a0378d7237c74d5a7a163a199ee14edc04aef2eb47ad41d2d03caf5cb82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0d9beba21764f98 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 42, 29, 224, 35, 135, 174, 15, 141, 115, 169, 98, 25, 152, 242, 153, 117, 73, 8, 199, 190, 228, 12, 87, 101, 36, 38, 139, 148, 234, 79, 125, 147, 247, 228, 59, 246, 27, 77, 193, 134, 107, 212, 162, 88, 225, 187, 72, 79, 28, 132, 249, 196, 90, 224, 74, 79, 150, 145, 34, 34, 174, 227, 29, 92, 54, 39, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5937424974242121875, key: EventKey( [ 201, 43, 13, 229, 216, 111, 56, 154, 91, 51, 45, 203, 149, 167, 64, 23, 227, 142, 155, 22, 184, 232, 145, 163, ], ), }, sent_events: EventHandle { count: 3422039959587344135, key: EventKey( [ 45, 243, 134, 160, 55, 141, 114, 55, 199, 77, 90, 122, 22, 58, 25, 158, 225, 78, 220, 4, 174, 242, 235, 71, ], ), }, sequence_number: 13284685676572459437, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(15d36501515360545d7d9cbb4092361d04851f9f4e28272f6df0b04d625c6415): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a4014760791f963e64a15a43cf8ee3d72129cf1f4fb620aa97bb3733ef94ee382d78d0fde431295540af164b167167c5566c076f33de80b661c3898d12d41dbd7153b24302c5ca7ac64801cba1c91564d67959e9f856769ca92f11006bcfdf4728445a2f1823b52aec66aaffa19f5cac14d1bd5ef8758e0d29973ce26e4be12d88f712f75418daf0420ad484fc5ec8c0047f1fd354ee420a303977a3ac516da91d259827e46c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c9aaf68502115ab9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 121, 31, 150, 62, 100, 161, 90, 67, 207, 142, 227, 215, 33, 41, 207, 31, 79, 182, 32, 170, 151, 187, 55, 51, 239, 148, 238, 56, 45, 120, 208, 253, 228, 49, 41, 85, 64, 175, 22, 75, 22, 113, 103, 197, 86, 108, 7, 111, 51, 222, 128, 182, 97, 195, 137, 141, 18, 212, 29, 189, 113, 83, 178, 67, 2, 197, 202, 122, 198, 72, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cba1c91564d67959e9f856769ca92f11, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3412114607481802603, key: EventKey( [ 35, 181, 42, 236, 102, 170, 255, 161, 159, 92, 172, 20, 209, 189, 94, 248, 117, 142, 13, 41, 151, 60, 226, 110, ], ), }, sent_events: EventHandle { count: 6122383072784408907, key: EventKey( [ 218, 240, 66, 10, 212, 132, 252, 94, 200, 192, 4, 127, 31, 211, 84, 238, 66, 10, 48, 57, 119, 163, 172, 81, ], ), }, sequence_number: 7846439985197459821, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1644d4c6fdd96765f547e4ea1dd791cdf5430bc5bd2bad8eaf9a23b5ba9bbf82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e11ca01796672b88db46b94b23b17c8a4648801294790ac089976e24765938b82b6a600011ae67bbd714a3db74ceaa74252508792bd5b90562c29350a189a09fdf388691fba79de32e1b0e848a2df5d71c7b68bc50905b54d38737814731841ef7bbee08d5a2dc3eda232aa4ccac49578884bd1075006bd175f1a2618111c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889cf1fa169bc021c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 1, 121, 102, 114, 184, 141, 180, 107, 148, 178, 59, 23, 200, 164, 100, 136, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 294790ac089976e24765938b82b6a600, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1ae67bbd714a3db74ceaa74252508792, }, ), received_events: EventHandle { count: 735539384552545213, key: EventKey( [ 154, 9, 253, 243, 136, 105, 31, 186, 121, 222, 50, 225, 176, 232, 72, 162, 223, 93, 113, 199, 182, 139, 197, 9, ], ), }, sent_events: EventHandle { count: 8292385250157114629, key: EventKey( [ 65, 239, 123, 190, 224, 141, 90, 45, 195, 237, 162, 50, 170, 76, 202, 196, 149, 120, 136, 75, 209, 7, 80, 6, ], ), }, sequence_number: 2022424259596326845, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(16d375a81eef8cf8ce43d99034fd2cf860245c4d440996f04a9c43e6d05f005d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96609a93d6c3b7b0c82c3f400015d78e71aee542608716e71da750f45102c3b60946c6340141892ed145a4b2b7eb7c971a238a7262bd8b235be1b562bd842ce8531617aa35c571837b5730a9e5664eb72b61c12c959c9cfa66e982a653f5b9d0cb1ee00594254de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cb7261435fd424da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 61, 108, 59, 123, 12, 130, 195, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5d78e71aee542608716e71da750f4510, }, ), received_events: EventHandle { count: 1459275597264993068, key: EventKey( [ 146, 237, 20, 90, 75, 43, 126, 183, 201, 113, 162, 56, 167, 38, 43, 216, 178, 53, 190, 27, 86, 43, 216, 66, ], ), }, sent_events: EventHandle { count: 6295086125169083854, key: EventKey( [ 55, 181, 115, 10, 158, 86, 100, 235, 114, 182, 28, 18, 201, 89, 201, 207, 166, 110, 152, 42, 101, 63, 91, 157, ], ), }, sequence_number: 16020502724498862348, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(173170f1e7ce659c059cf2cb9f85ce885155be5d2b50bab622d915389371af3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95306cb51195b06600000a0847c48a289d95718c8be48fdb9334b2740bc80fee06bd95d3d522d0da71f279ce4b2c764531155771876b82b99a68b3709493bf81b06a6797b4f32bf71ec5b7651a127ef559d4776202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fa8026a108d4cac0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 81, 25, 91, 6, 96, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6330242081339770016, key: EventKey( [ 200, 190, 72, 253, 185, 51, 75, 39, 64, 188, 128, 254, 224, 107, 217, 93, 61, 82, 45, 13, 167, 31, 39, 156, ], ), }, sent_events: EventHandle { count: 8598798113404596964, key: EventKey( [ 118, 184, 43, 153, 166, 139, 55, 9, 73, 59, 248, 27, 6, 166, 121, 123, 79, 50, 191, 113, 236, 91, 118, 81, ], ), }, sequence_number: 2339135797542725537, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(178ce676021126056dcd5e8bcc8f9f4d63d67064f5077b089252ee5f017322f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f02248001e47da0a900ed2fdaa488f592b3f1b48601219e73d9e9da91fc10b667724fdc570746f0593c0a65fa0d189f5cdbab5cad88723825371b246c23353968232168b29590304cb56ff866f46f186726fccc597735a292326dc963736e9d8a5f93e9c322967bd80388e7c42a8a1b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e16f6b618842cfdf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 128, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e47da0a900ed2fdaa488f592b3f1b486, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 219e73d9e9da91fc10b667724fdc5707, }, ), received_events: EventHandle { count: 1007228561307332678, key: EventKey( [ 159, 92, 219, 171, 92, 173, 136, 114, 56, 37, 55, 27, 36, 108, 35, 53, 57, 104, 35, 33, 104, 178, 149, 144, ], ), }, sent_events: EventHandle { count: 8067186049739476016, key: EventKey( [ 103, 38, 252, 204, 89, 119, 53, 162, 146, 50, 109, 201, 99, 115, 110, 157, 138, 95, 147, 233, 195, 34, 150, 123, ], ), }, sequence_number: 1984445610996532184, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(17e65c4f737f617af25d017f9f51be8181ac816b2dd378214f0287ba22d57227): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99601392655f0c2118ec81e0254a42086b2acc53ceba1b7137d7637d87c29d85520fde6d5a223019805772715d4ac248a0e018448d71f89175271c93500012387aa6c9707be909b280c2e731d143a80fb49f0d4304f51182a9076d9a0d3ba2ab1ca4c8dfe594e9bc93c33c11aa81824016840c873dc397b18f39149cfff5a3d01aeefb9e1067e3208205b9f0dda3c335588331716361c126e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083f285aeeedbc5252 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 85, 240, 194, 17, 142, 200, 30, 2, 84, 164, 32, 134, 178, 172, 197, 60, 235, 161, 183, 19, 125, 118, 55, 216, 124, 41, 216, 85, 32, 253, 230, 213, 162, 35, 1, 152, 5, 119, 39, 21, 212, 172, 36, 138, 14, 1, 132, 72, 215, 31, 137, 23, 82, 113, 201, 53, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2387aa6c9707be909b280c2e731d143a, }, ), received_events: EventHandle { count: 5858955331354884992, key: EventKey( [ 42, 144, 118, 217, 160, 211, 186, 42, 177, 202, 76, 141, 254, 89, 78, 155, 201, 60, 51, 193, 26, 168, 24, 36, ], ), }, sent_events: EventHandle { count: 8879370530176657409, key: EventKey( [ 243, 145, 73, 207, 255, 90, 61, 1, 174, 239, 185, 225, 6, 126, 50, 8, 32, 91, 159, 13, 218, 60, 51, 85, ], ), }, sequence_number: 7931432912377295752, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(18b11d34c2bfb2c49bb390e7bce50b12356e954122991e7b9eb1014dc5f23616): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96104f3f4a8c701d5f19af8c2c61116b8e1b49f57c695d6000c265f908da33f701846a92700928f5cd7a14d9a3dcc9ab4806f1121a4dc551633524981ff0328103618b657373084af83b8e19aaa9f4cd444d3541f11092d05fb3e9259e92f9cfff0c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e4d98e9ed8686599 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 244, 168, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5f19af8c2c61116b8e1b49f57c695d6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8088363284188571148, key: EventKey( [ 70, 169, 39, 0, 146, 143, 92, 215, 161, 77, 154, 61, 204, 154, 180, 128, 111, 17, 33, 164, 220, 85, 22, 51, ], ), }, sent_events: EventHandle { count: 3895657675312154962, key: EventKey( [ 182, 87, 55, 48, 132, 175, 131, 184, 225, 154, 170, 159, 76, 212, 68, 211, 84, 31, 17, 9, 45, 5, 251, 62, ], ), }, sequence_number: 14047008284052380050, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(18b928db2f8d383501c22c421cfefd706449bc1128ef0a61f92b19c720fe22bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b40a4af3e4d85ff9be6673df3b7cf0eabb3054bf9ec4e1e3f11d3d949ef9ef1540c474b75fccd1ca9c01e4a360a5cf4b77103fb9a5dfe521db4a34f000142a3f8966a9325e7b2f9d5556df72b978cd17e4f732ca07c18b37b3e38515d05649a3223f276e289141bcccded16dbe62f6ede639236255f55188c20f226a13ff73431c1598dd3b3126ea59fad111ae1ec76e79acba9b47850cb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c52783458a3f3e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 164, 175, 62, 77, 133, 255, 155, 230, 103, 61, 243, 183, 207, 14, 171, 179, 5, 75, 249, 236, 78, 30, 63, 17, 211, 217, 73, 239, 158, 241, 84, 12, 71, 75, 117, 252, 205, 28, 169, 192, 30, 74, 54, 10, 92, 244, 183, 113, 3, 251, 154, 93, 254, 82, 29, 180, 163, 79, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42a3f8966a9325e7b2f9d5556df72b97, }, ), received_events: EventHandle { count: 8980226530743341452, key: EventKey( [ 179, 123, 62, 56, 81, 93, 5, 100, 154, 50, 35, 242, 118, 226, 137, 20, 27, 204, 205, 237, 22, 219, 230, 47, ], ), }, sent_events: EventHandle { count: 6151676532325867118, key: EventKey( [ 140, 32, 242, 38, 161, 63, 247, 52, 49, 193, 89, 141, 211, 179, 18, 110, 165, 159, 173, 17, 26, 225, 236, 118, ], ), }, sequence_number: 14650342305174362855, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(194cb0eae7716c58d70a4a51bacbb74c3c369974607754aad205a3c7debe7ddd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9590c7142684ab3761881c4260a320000c5c5bf4bf2dec2681897ba141c4a24db58ab598fa6db374e915d08f93e70bb8e12548d5fe4c9a1181918f28e57ca3cc410d96f854cbac1e39e56f561511ac1d878520cbc7cb915ebc41d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805e65a58ab16f7bc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 113, 66, 104, 74, 179, 118, 24, 129, 196, 38, 10, 50, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7548841057660683717, key: EventKey( [ 151, 186, 20, 28, 74, 36, 219, 88, 171, 89, 143, 166, 219, 55, 78, 145, 93, 8, 249, 62, 112, 187, 142, 18, ], ), }, sent_events: EventHandle { count: 1808373138881219924, key: EventKey( [ 242, 142, 87, 202, 60, 196, 16, 217, 111, 133, 76, 186, 193, 227, 158, 86, 245, 97, 81, 26, 193, 216, 120, 82, ], ), }, sequence_number: 2145097801073998860, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(19e28edd78a55cb11feac5d1fed3b55bc37264f2554f7a3242d7813d09cb9935): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97013e810b9c51430fd61089abc4dba29856734625d011bc8dfa28a1ea1f06894342b2e54d3fa00fdc767fbdb29114918dc78bb1a0633715af5a439807f32c1987946ed221acaab58615042891313477318c5fa76ed36a42554b139c9a96d2e2f8fe169d633cb182e1754304885b58e3f252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70893450e9139660a7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 16, 185, 197, 20, 48, 253, 97, 8, 154, 188, 77, 186, 41, 133, 103, 52, 98, 93, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1bc8dfa28a1ea1f06894342b2e54d3fa, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5265035464165279741, key: EventKey( [ 220, 120, 187, 26, 6, 51, 113, 90, 245, 164, 57, 128, 127, 50, 193, 152, 121, 70, 237, 34, 26, 202, 171, 88, ], ), }, sent_events: EventHandle { count: 8306629012336300129, key: EventKey( [ 197, 250, 118, 237, 54, 164, 37, 84, 177, 57, 201, 169, 109, 46, 47, 143, 225, 105, 214, 51, 203, 24, 46, 23, ], ), }, sequence_number: 2684020813212430420, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1a91523eee19325c2829eac2538fb7ad0e23677ef2fc7413091ecf247858cc2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b2fcdf7c35828a8f6f7f170a46e8fc3950895d45c87b1ac9e7e3ccf13a9357c08e1d64f3a9e581a549b1f575430ec0b46bf2f32c2310276754f2e05617d28f558f1090012cf92c30513bb9f01033f0ec7b5e1221f02db6ffa97608ff5013655e4e669a9a1901afd839e303a97a04bf4c637da276773188d3dfb913a85cb012a4d05560bc8abf88a4a30400f2db134081a86a26974ae59188376c86690d328482abad904ac9659096bc4e88e6fe9d8e7397f4f5aa4732fb12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087c4bf28f4dd68088 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 205, 247, 195, 88, 40, 168, 246, 247, 241, 112, 164, 110, 143, 195, 149, 8, 149, 212, 92, 135, 177, 172, 158, 126, 60, 207, 19, 169, 53, 124, 8, 225, 214, 79, 58, 158, 88, 26, 84, 155, 31, 87, 84, 48, 236, 11, 70, 191, 47, 50, 194, 49, 2, 118, 117, 79, 46, 5, 97, 125, 40, 245, 88, 241, 9, 0, 18, 207, 146, 195, 5, 19, 187, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 033f0ec7b5e1221f02db6ffa97608ff5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3655e4e669a9a1901afd839e303a97a0, }, ), received_events: EventHandle { count: 8315659055155049547, key: EventKey( [ 141, 61, 251, 145, 58, 133, 203, 1, 42, 77, 5, 86, 11, 200, 171, 248, 138, 74, 48, 64, 15, 45, 177, 52, ], ), }, sent_events: EventHandle { count: 6462230512370326024, key: EventKey( [ 131, 118, 200, 102, 144, 211, 40, 72, 42, 186, 217, 4, 172, 150, 89, 9, 107, 196, 232, 142, 111, 233, 216, 231, ], ), }, sequence_number: 12767550618345635641, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1aadea7fb8e571177c6ec66a82f9ad8eba929692293bc8a8985d2587834a37b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013ac7d4f147da967ba39982750b8b036874732ce195620fc1ba303b2cc944e49753f2c2c3dfe41ab3d613c7159d7bf5b65d34dac41d28c14bf6e4a10000b1427be4f8e1a762182c980abaadeb7e5a3fe04b8f91e9954690645c2265d788c3c86958da969b1d3c18b5324a7c1ca43613a9e33309f226bf04f6380debf6e79a92c3184016e784e55a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b2580a754df8fe4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 212, 241, 71, 218, 150, 123, 163, 153, 130, 117, 11, 139, 3, 104, 116, 115, 44, 225, 149, 98, 15, 193, 186, 48, 59, 44, 201, 68, 228, 151, 83, 242, 194, 195, 223, 228, 26, 179, 214, 19, 199, 21, 157, 123, 245, 182, 93, 52, 218, 196, 29, 40, 193, 75, 246, 228, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7108898995929039537, key: EventKey( [ 44, 152, 10, 186, 173, 235, 126, 90, 63, 224, 75, 143, 145, 233, 149, 70, 144, 100, 92, 34, 101, 215, 136, 195, ], ), }, sent_events: EventHandle { count: 4331789488810912200, key: EventKey( [ 181, 50, 74, 124, 28, 164, 54, 19, 169, 227, 51, 9, 242, 38, 191, 4, 246, 56, 13, 235, 246, 231, 154, 146, ], ), }, sequence_number: 6549787361125865667, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1b02e45ac70261e8454b698bf4dcbbfa1650298b9d30dcf675ee5411a9171349): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501582b569b09eb6d6f451b6bfa66e44a5caafe0dd1f0e47a4e04380b307fd392743b3fdd46ceb69e1e05f3a06eb4730bc53ec767b387efb68df8fd00690d77701d39b4abab986423396c9cae7b825fe5418fb60dd5a28725bf5d000070c7768fb1958e0c180616e7bc808c1ded1a82188e49f21e75642dd74bf880d1c7d727023380ecd44018b9b612787d7d14fd6f6ec2a64517742f1758e38cd7b4ccf2ba6712514c4e187d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089195d9b7197f9683 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 86, 155, 9, 235, 109, 111, 69, 27, 107, 250, 102, 228, 74, 92, 170, 254, 13, 209, 240, 228, 122, 78, 4, 56, 11, 48, 127, 211, 146, 116, 59, 63, 221, 70, 206, 182, 158, 30, 5, 243, 160, 110, 180, 115, 11, 197, 62, 199, 103, 179, 135, 239, 182, 141, 248, 253, 0, 105, 13, 119, 112, 29, 57, 180, 171, 171, 152, 100, 35, 57, 108, 156, 174, 123, 130, 95, 229, 65, 143, 182, 13, 213, 162, 135, 37, 191, 93, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 904825164996724592, key: EventKey( [ 6, 22, 231, 188, 128, 140, 29, 237, 26, 130, 24, 142, 73, 242, 30, 117, 100, 45, 215, 75, 248, 128, 209, 199, ], ), }, sent_events: EventHandle { count: 4671618748845795287, key: EventKey( [ 185, 182, 18, 120, 125, 125, 20, 253, 111, 110, 194, 166, 69, 23, 116, 47, 23, 88, 227, 140, 215, 180, 204, 242, ], ), }, sequence_number: 9014040743866689466, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1dd5d3e0e1219a71c744c6c2da41cefcbd193659e6ce38babb144b50be5abaf5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96417fcef1b28eeb2eab8d4565d16a816c3d85a0a7a342cb1850000672d71f08358460218661e13ed5e914eb19ed60d691ff7387fbf5bac2bcd2339b516690210071e374318534efeff4a0136bf3199570a4872a19353db3f6d0c5c87cf641fb34dd5fd819d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087d67e8fe7b1abf14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 239, 27, 40, 238, 178, 234, 184, 212, 86, 93, 22, 168, 22, 195, 216, 90, 10, 122, 52, 44, 177, 133, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 163915760143510887, key: EventKey( [ 102, 30, 19, 237, 94, 145, 78, 177, 158, 214, 13, 105, 31, 247, 56, 127, 191, 91, 172, 43, 205, 35, 57, 181, ], ), }, sent_events: EventHandle { count: 4843372939942455574, key: EventKey( [ 83, 78, 254, 255, 74, 1, 54, 191, 49, 153, 87, 10, 72, 114, 161, 147, 83, 219, 63, 109, 12, 92, 135, 207, ], ), }, sequence_number: 11349631628523806564, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1dd741e9c1e8ca445e798b550964816309c4de0ad38d1f2f49d4202e4341ce30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20135c917d65412ca87a9230eeb0a5f4e98b17b2e7ca519c420c38d8f43277793d69573a1a7f732312e704ed24e045643638a4fe45d9985010966de67a8ea8484e066564ca19488e001a8a09f567775b1ded6f90b3cdf4f06626740fa3a48b6eb76184b12a04b09f030c3268b2c2ec51bb37927151ba61ade54c7b5c7d4991dc34b3c18c3697382eb5c037c8cb87d487c1eca869dd5af4002daac7783e0d8a5fce59e6f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d07e0eb3b8a1e97 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 23, 214, 84, 18, 202, 135, 169, 35, 14, 235, 10, 95, 78, 152, 177, 123, 46, 124, 165, 25, 196, 32, 195, 141, 143, 67, 39, 119, 147, 214, 149, 115, 161, 167, 247, 50, 49, 46, 112, 78, 210, 78, 4, 86, 67, 99, 138, 79, 228, 93, 153, 133, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0966de67a8ea8484e066564ca19488e0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a8a09f567775b1ded6f90b3cdf4f0662, }, ), received_events: EventHandle { count: 8569143137345880167, key: EventKey( [ 75, 18, 160, 75, 9, 240, 48, 195, 38, 139, 44, 46, 197, 27, 179, 121, 39, 21, 27, 166, 26, 222, 84, 199, ], ), }, sent_events: EventHandle { count: 4344780797431302069, key: EventKey( [ 195, 105, 115, 130, 235, 92, 3, 124, 140, 184, 125, 72, 124, 30, 202, 134, 157, 213, 175, 64, 2, 218, 172, 119, ], ), }, sequence_number: 8043118857807257731, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1de3d25c1504ba9b9afe1606abde514f5636263741dd62b784537758943a29ba): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96407ebdbea3eac2a23012fab4a8522fa4d652c4d27115ea1831b004b9ef7888808b50a18b82bfdeaf9b3566b430b749019112ec3693d00fcb2b686acab6d48a0e0f52b6518174902a9accaddba90239eeed8c19a47c42143ea628c846744c0340f44f1ae672101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dfe5d03cd3ed552a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 219, 234, 62, 172, 42, 35, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2fab4a8522fa4d652c4d27115ea1831b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 771532293670411851, key: EventKey( [ 184, 43, 253, 234, 249, 179, 86, 107, 67, 11, 116, 144, 25, 17, 46, 195, 105, 61, 0, 252, 178, 182, 134, 172, ], ), }, sent_events: EventHandle { count: 7290190766939860395, key: EventKey( [ 23, 73, 2, 169, 172, 202, 221, 186, 144, 35, 158, 238, 216, 193, 154, 71, 196, 33, 67, 234, 98, 140, 132, 103, ], ), }, sequence_number: 7471174106469417028, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1e430baa52a2bfeb818f0f416351a1885890283b299c83f318fe5499777eb5d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011fe9c46681588ddb963bc52215e5a5af9f2e76d372de2aed3e1d7992afbabf3701162378f6cb12c42f7ec5b751645c7f5101ae1f680dae2ba75747a934214446a84827a6030c7ddad73d18783017cbcede81e9c70f259a0d44bd4f5d4884fc5fd0a6180991295bda6a7f6b18e03a2f667b1ff13bd659ffb212c89b2617f7981f71d0124fdcc126e26260d3fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be07b8ae2b5987ac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 196, 102, 129, 88, 141, 219, 150, 59, 197, 34, 21, 229, 165, 175, 159, 46, 118, 211, 114, 222, 42, 237, 62, 29, 121, 146, 175, 186, 191, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 162378f6cb12c42f7ec5b751645c7f51, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae1f680dae2ba75747a934214446a848, }, ), received_events: EventHandle { count: 4456270586913728039, key: EventKey( [ 120, 48, 23, 203, 206, 222, 129, 233, 199, 15, 37, 154, 13, 68, 189, 79, 93, 72, 132, 252, 95, 208, 166, 24, ], ), }, sent_events: EventHandle { count: 7746027370165408009, key: EventKey( [ 224, 58, 47, 102, 123, 31, 241, 59, 214, 89, 255, 178, 18, 200, 155, 38, 23, 247, 152, 31, 113, 208, 18, 79, ], ), }, sequence_number: 18290068489498968540, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1ebbd66526b33cf5ad74d0e4f9cd75b1c61ab9687327fa85b20e4044db7383c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b6a581f295a632c1829ad26547e895f3e5c06c3897b8d83900629562d6d2c23a6401e41ef8e6be6dbd924aa18bedf39ab12db48a1a9a2c068fe5436000117fa70adaf35e52c7a286335243a7f125b447a6c2dc0522818125d5af64ead3946761442b28dd8a545e3e757b75ca47993ea12455b6d903b351868dd982a909b3548f2f8ae177fc5af8a47c7d43e50586c89b358bf7355f5284e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085799894f73c24637 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 88, 31, 41, 90, 99, 44, 24, 41, 173, 38, 84, 126, 137, 95, 62, 92, 6, 195, 137, 123, 141, 131, 144, 6, 41, 86, 45, 109, 44, 35, 166, 64, 30, 65, 239, 142, 107, 230, 219, 217, 36, 170, 24, 190, 223, 57, 171, 18, 219, 72, 161, 169, 162, 192, 104, 254, 84, 54, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 17fa70adaf35e52c7a286335243a7f12, }, ), received_events: EventHandle { count: 2905596010933404763, key: EventKey( [ 18, 93, 90, 246, 78, 173, 57, 70, 118, 20, 66, 178, 141, 216, 165, 69, 227, 231, 87, 183, 92, 164, 121, 147, ], ), }, sent_events: EventHandle { count: 3835818306993197802, key: EventKey( [ 104, 221, 152, 42, 144, 155, 53, 72, 242, 248, 174, 23, 127, 197, 175, 138, 71, 199, 212, 62, 80, 88, 108, 137, ], ), }, sequence_number: 5632021081389750451, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1f7d5fc2fa2d996593e723bbe83783506fa64a9d2e0330483d023e475cfdb414): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e1101e3e05043e9e5facca4662e85dc1a62db01f050bc2b7edefcb450070343e273d07d01e3a35ab772f797891013af3e822ee4199a67a4129be46177182ade5836a51f73b9aa6724c28327997dd00bd1a37cab0726decc7b6b961d994418c6606790daf36ee8bf4ed6d0c0b5eb64431992a1daaa709e326251dad60afbaa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c19b4a7a78c41c74 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 227, 224, 80, 67, 233, 229, 250, 204, 164, 102, 46, 133, 220, 26, 98, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f050bc2b7edefcb450070343e273d07d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e3a35ab772f797891013af3e822ee419, }, ), received_events: EventHandle { count: 8602408117938186138, key: EventKey( [ 42, 222, 88, 54, 165, 31, 115, 185, 170, 103, 36, 194, 131, 39, 153, 125, 208, 11, 209, 163, 124, 171, 7, 38, ], ), }, sent_events: EventHandle { count: 4943014597901405406, key: EventKey( [ 198, 96, 103, 144, 218, 243, 110, 232, 191, 78, 214, 208, 192, 181, 235, 100, 67, 25, 146, 161, 218, 170, 112, 158, ], ), }, sequence_number: 12320453123504169522, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(1fd95a135469f2e271853aeed0b80d30c4a94c270a4afeff8c7070f66df658dd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9570aa74d98fd23e82475781000003caea0b41f58582d18c5ba8833876714de9032fced312c673c7bef9abfc6db67d1401132dca127ab5f1880f848a506e8ba6aaf017b5c7577b1b04434c474b3b36fcb82b3f143752e0b7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db5f692671d3d4bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 167, 77, 152, 253, 35, 232, 36, 117, 120, 16, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3267458422854954556, key: EventKey( [ 197, 186, 136, 51, 135, 103, 20, 222, 144, 50, 252, 237, 49, 44, 103, 60, 123, 239, 154, 191, 198, 219, 103, 209, ], ), }, sent_events: EventHandle { count: 6893647230758162752, key: EventKey( [ 128, 248, 72, 165, 6, 232, 186, 106, 175, 1, 123, 92, 117, 119, 177, 176, 68, 52, 196, 116, 179, 179, 111, 203, ], ), }, sequence_number: 8866231372594918274, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2035c7d5280de8ef7c925ba31da19206d0f9a06c1b62a858c66550c7089c7f48): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01318e9c6785e2185a08407409918f0e9047fdcb69c32ac283fe51d950faa3802c2b7d4520ba5669c4778a46b99e3cea46d90600016da510e12f76943ac5195b7b21de739d382affeacc5aa84c18bb83d67c5884096a6e40f4c721c7dc13b7e4497b7935e7aa66f525e18414b27018775c95d907271a3b4ca17f04fddabff420ed23ba56faea0f5c6d5b237fcc10e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b07076b4046043c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 156, 103, 133, 226, 24, 90, 8, 64, 116, 9, 145, 143, 14, 144, 71, 253, 203, 105, 195, 42, 194, 131, 254, 81, 217, 80, 250, 163, 128, 44, 43, 125, 69, 32, 186, 86, 105, 196, 119, 138, 70, 185, 158, 60, 234, 70, 217, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6da510e12f76943ac5195b7b21de739d, }, ), received_events: EventHandle { count: 5523764779132332600, key: EventKey( [ 187, 131, 214, 124, 88, 132, 9, 106, 110, 64, 244, 199, 33, 199, 220, 19, 183, 228, 73, 123, 121, 53, 231, 170, ], ), }, sent_events: EventHandle { count: 8120575639048025446, key: EventKey( [ 119, 92, 149, 217, 7, 39, 26, 59, 76, 161, 127, 4, 253, 218, 191, 244, 32, 237, 35, 186, 86, 250, 234, 15, ], ), }, sequence_number: 16361802292663119196, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(204cdcb92c57a6cde346c46264c9662fc1b3a77f8cbdd2fc0cf83a1a2eb43b2c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99501380827a1df6e2c3ac48fd6f6c447e07cf382aef42a6047459102e2dd323c6f2cd54a74c00f867f1fecee2e91d952cc5e8fb566fa2fc9cb30e400010c76c9e356feb96d8b5d0804c7f59de5a4e81634271b0a591874edc00d37703f68de19becbba1a5eb21ec054e18283cea84620474f6245870a186af83977049c0f5355d21b9203289e369690b5f80f5a1b6d9625ae8b56f982702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085d30616bb6458771 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 8, 39, 161, 223, 110, 44, 58, 196, 143, 214, 246, 196, 71, 224, 124, 243, 130, 174, 244, 42, 96, 71, 69, 145, 2, 226, 221, 50, 60, 111, 44, 213, 74, 116, 192, 15, 134, 127, 31, 236, 238, 46, 145, 217, 82, 204, 94, 143, 181, 102, 250, 47, 201, 203, 48, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c76c9e356feb96d8b5d0804c7f59de5, }, ), received_events: EventHandle { count: 6415970474334283940, key: EventKey( [ 116, 237, 192, 13, 55, 112, 63, 104, 222, 25, 190, 203, 186, 26, 94, 178, 30, 192, 84, 225, 130, 131, 206, 168, ], ), }, sent_events: EventHandle { count: 758651350774390854, key: EventKey( [ 106, 248, 57, 119, 4, 156, 15, 83, 85, 210, 27, 146, 3, 40, 158, 54, 150, 144, 181, 248, 15, 90, 27, 109, ], ), }, sequence_number: 8107316429326263702, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(204fb15d06cf67733c9c7d7760af4b644d41d917824eb39f5dffd81bc57d22e4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670aeee499acf2a2c93958ee00010c373ec14c75a5419701e550b0ff073997cf17abbcb3d43718aec8d2697321c3efa6302fba5c75db4251d71a1328e769f3f9a28baf5868cc22184cfabc1eeb71c955286761585ceda0e52996bd2c99c693f281246705fb74c8182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9c728fbf062ffa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 228, 153, 172, 242, 162, 201, 57, 88, 238, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0c373ec14c75a5419701e550b0ff0739, }, ), received_events: EventHandle { count: 4023037990054383511, key: EventKey( [ 174, 200, 210, 105, 115, 33, 195, 239, 166, 48, 47, 186, 92, 117, 219, 66, 81, 215, 26, 19, 40, 231, 105, 243, ], ), }, sent_events: EventHandle { count: 2507493822650098425, key: EventKey( [ 76, 250, 188, 30, 235, 113, 201, 85, 40, 103, 97, 88, 92, 237, 160, 229, 41, 150, 189, 44, 153, 198, 147, 242, ], ), }, sequence_number: 1785805873728660609, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(20894d217002e2d6c8996af277248e2cec7a371c592abb085613c43d79f7bafc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141e4e3b8258d3649d451abaa8a64e8e4a72c0c24d37c658a07338d250028d4beab41a67216429b73f7175325bc3689029acb6965780ca56660380af52fd5d35be94b01d2a6929dde75320af56386982d8ed6cc017ff02911bf34b27fe6ac0e6622febc3021d13d93008ee05a18ca1a5e13dc21d2a88bc2a4cfdcdc247b7cc4b9fe162e2885f1cca7f77cb4397018fd5eca8b7d6b4b0083bc2287b8b8e957efa83dcbc78e4da855a0e95623c630262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d54dd67ced05ecdb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 228, 227, 184, 37, 141, 54, 73, 212, 81, 171, 170, 138, 100, 232, 228, 167, 44, 12, 36, 211, 124, 101, 138, 7, 51, 141, 37, 0, 40, 212, 190, 171, 65, 166, 114, 22, 66, 155, 115, 247, 23, 83, 37, 188, 54, 137, 2, 154, 203, 105, 101, 120, 12, 165, 102, 96, 56, 10, 245, 47, 213, 211, 91, 233, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d2a6929dde75320af56386982d8ed6cc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7ff02911bf34b27fe6ac0e6622febc30, }, ), received_events: EventHandle { count: 6548389991318147361, key: EventKey( [ 202, 26, 94, 19, 220, 33, 210, 168, 139, 194, 164, 207, 220, 220, 36, 123, 124, 196, 185, 254, 22, 46, 40, 133, ], ), }, sent_events: EventHandle { count: 8086693054744349937, key: EventKey( [ 253, 94, 202, 139, 125, 107, 75, 0, 131, 188, 34, 135, 184, 184, 233, 87, 239, 168, 61, 203, 199, 142, 77, 168, ], ), }, sequence_number: 2751917227407679573, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21008694f76dfc144b29ccb15285464524edbcc3d03b2f5597076326b9c52b8c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141a5e4ace25536b87b1d6da666da4b5f7134beae37ed010a37a27861849a9f1bfc8ed8e52d9935912b8a195fb8e4b4a78c8fca62458a03e26756edabcf56a570ac0901ab2383cdeab8e6bbe8a9b959368d4de501429c15f648492d046c96cb3a546b41650a97a74f80f0b77f18b32b2ded4dc98a687717b4e8a9543411e4907139022f97d76c3254a714cf31001888f773babe3def5abae7fef53d6bfa672d6a1ba689fd59747e292264218827c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70890d3af0a2ef113b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 228, 172, 226, 85, 54, 184, 123, 29, 109, 166, 102, 218, 75, 95, 113, 52, 190, 174, 55, 237, 1, 10, 55, 162, 120, 97, 132, 154, 159, 27, 252, 142, 216, 229, 45, 153, 53, 145, 43, 138, 25, 95, 184, 228, 180, 167, 140, 143, 202, 98, 69, 138, 3, 226, 103, 86, 237, 171, 207, 86, 165, 112, 172, 9, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ab2383cdeab8e6bbe8a9b959368d4de5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 429c15f648492d046c96cb3a546b4165, }, ), received_events: EventHandle { count: 9203088797437761290, key: EventKey( [ 179, 43, 45, 237, 77, 201, 138, 104, 119, 23, 180, 232, 169, 84, 52, 17, 228, 144, 113, 57, 2, 47, 151, 215, ], ), }, sent_events: EventHandle { count: 14019961472430700, key: EventKey( [ 136, 247, 115, 186, 190, 61, 239, 90, 186, 231, 254, 245, 61, 107, 250, 103, 45, 106, 27, 166, 137, 253, 89, 116, ], ), }, sequence_number: 13918242850407065982, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(214041b7761dcc225d2218af3bc25ce2c02d3ca3fbe256e9d226aea98427ea9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f1b4cf2674de031eea9dfe42ff5f2f38f0fb3c192177b25ce8a19beb31e36548abb47ec2fbaeef0d8f4b84aec3b1cfe512dcc065fed925809baa84ee0d2418301377ee934b9970b7c58b45516f96a64fe009007b9e0526ee5401879a32062fe0320d9cafa4616878ad26f38f909c9d578f2884f6c6e47caebf24618d1ee1ecb7d27214e6b0d9e9a892bcd2c1a6310fc53728c199e91bf94f638a6432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086225e83ec6cc4b1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 27, 76, 242, 103, 77, 224, 49, 238, 169, 223, 228, 47, 245, 242, 243, 143, 15, 179, 193, 146, 23, 123, 37, 206, 138, 25, 190, 179, 30, 54, 84, 138, 187, 71, 236, 47, 186, 238, 240, 216, 244, 184, 74, 236, 59, 28, 254, 81, 45, 204, 6, 95, 237, 146, 88, 9, 186, 168, 78, 224, 210, 65, 131, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 377ee934b9970b7c58b45516f96a64fe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4676265090330724240, key: EventKey( [ 121, 163, 32, 98, 254, 3, 32, 217, 202, 250, 70, 22, 135, 138, 210, 111, 56, 249, 9, 201, 213, 120, 242, 136, ], ), }, sent_events: EventHandle { count: 5112407781033274447, key: EventKey( [ 209, 238, 30, 203, 125, 39, 33, 78, 107, 13, 158, 154, 137, 43, 205, 44, 26, 99, 16, 252, 83, 114, 140, 25, ], ), }, sequence_number: 4874646278383833502, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21568f1b4663cfbf440b86a0f9c9d3243dc4559d9e1712176e2ee2595e2b6910): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0d3939e04c9ab65d5d1a642ba501018191e8b8e803ab579c331e7fe9b1a6d601cff94bfd16c9c1df29058599f5fab52440c7747fd05b734118979ee862e20331a2e33ea8f8409e46ea0f4fe1091ac7c7f0003ba7ffdb896b0f18e900e5d961af7eae0778a17448a981e836ab4a9debf63704a9e14baa60e8ff692101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cadbe19e55a7c7fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 57, 57, 224, 76, 154, 182, 93, 93, 26, 100, 43, 165, 1, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8191e8b8e803ab579c331e7fe9b1a6d6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cff94bfd16c9c1df29058599f5fab524, }, ), received_events: EventHandle { count: 4716214185836726080, key: EventKey( [ 151, 158, 232, 98, 226, 3, 49, 162, 227, 62, 168, 248, 64, 158, 70, 234, 15, 79, 225, 9, 26, 199, 199, 240, ], ), }, sent_events: EventHandle { count: 1111133311056952064, key: EventKey( [ 233, 0, 229, 217, 97, 175, 126, 174, 7, 120, 161, 116, 72, 169, 129, 232, 54, 171, 74, 157, 235, 246, 55, 4, ], ), }, sequence_number: 7638078994915254697, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(21f4fa8f129bf0d430a944b3286f10d7011cf7e0a1f099c732e46213e26b9e5e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144e8796cb2293f6ac19afe9e42c677efa0f0f28653aac6a1bc0cd68912803bd021155d758b9fa4300646ce5c120626fe81fd0723f3c902cb9814665c9608c9fc7e3d3b49e401df1b2af58da2021fe9f3763528df42ce00e9b48fc61862cb7e18e65f0e441ca00ff99f2e5c8c76acd206ec7f7e306ee67de0549790f06df3584d18420c42a4b4b39239aa2aba16a6c7172d2de75bda38529c478cedc56ec0b88f322101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708337feae41da603a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 121, 108, 178, 41, 63, 106, 193, 154, 254, 158, 66, 198, 119, 239, 160, 240, 242, 134, 83, 170, 198, 161, 188, 12, 214, 137, 18, 128, 59, 208, 33, 21, 93, 117, 139, 159, 164, 48, 6, 70, 206, 92, 18, 6, 38, 254, 129, 253, 7, 35, 243, 201, 2, 203, 152, 20, 102, 92, 150, 8, 201, 252, 126, 61, 59, 73, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: df1b2af58da2021fe9f3763528df42ce, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9136504127601226985, key: EventKey( [ 230, 95, 14, 68, 28, 160, 15, 249, 159, 46, 92, 140, 118, 172, 210, 6, 236, 127, 126, 48, 110, 230, 125, 224, ], ), }, sent_events: EventHandle { count: 5573472192383981396, key: EventKey( [ 66, 12, 66, 164, 180, 179, 146, 57, 170, 42, 186, 22, 166, 199, 23, 45, 45, 231, 91, 218, 56, 82, 156, 71, ], ), }, sequence_number: 3643333760197717388, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2201579eba36716955e5e273d07e1dfdafc36a59b9c56c907687ff0565bfea97): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf01629f6d0a24c6234cbb1676cbeb341b9f2ea922b1280748fef67000def4f217736e327fd9a7b6786e3514208e8e8ffb23f5cf6dc22bd502dac6ea7b102b9dc4c29e94e9a1c3a4a79aecd37545beb2996b620c4537cab7ab301809a2bfec9a3db2d48e38017e3e4b6fb2a931951a61bbbc3f6fa3be00d2dc8edfa601a92518ca67d708aa0a113a6e98488817a2ceebd6cf6805a9914e7b4a7d38f0b57f1751187f4762bb032e055e411cf3ed4b2bef8f2a2cebf29f29632c2264904b3bd0bf522101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dd88defc87c4562b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 109, 10, 36, 198, 35, 76, 187, 22, 118, 203, 235, 52, 27, 159, 46, 169, 34, 177, 40, 7, 72, 254, 246, 112, 0, 222, 244, 242, 23, 115, 110, 50, 127, 217, 167, 182, 120, 110, 53, 20, 32, 142, 142, 143, 251, 35, 245, 207, 109, 194, 43, 213, 2, 218, 198, 234, 123, 16, 43, 157, 196, 194, 158, 148, 233, 161, 195, 164, 167, 154, 236, 211, 117, 69, 190, 178, 153, 107, 98, 12, 69, 55, 202, 183, 171, 48, 24, 9, 162, 191, 236, 154, 61, 178, 212, 142, 56, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7e3e4b6fb2a931951a61bbbc3f6fa3be, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2713702066694315218, key: EventKey( [ 202, 103, 215, 8, 170, 10, 17, 58, 110, 152, 72, 136, 23, 162, 206, 235, 214, 207, 104, 5, 169, 145, 78, 123, ], ), }, sent_events: EventHandle { count: 5843279460932549962, key: EventKey( [ 127, 71, 98, 187, 3, 46, 5, 94, 65, 28, 243, 237, 75, 43, 239, 143, 42, 44, 235, 242, 159, 41, 99, 44, ], ), }, sequence_number: 5962713384751227938, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2211ff93f5f8e950135e0647e562c70e266b400a7b0a3cbca42e00cb554a3539): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960149b86b54f382e2dfdad9ac926acde34a6cd72e88d7cc2d06a34af2f44e3c6e3eb59a45aa11734f4a96a2dbd6ac146d56e79ff0cd8828508b2df1ffd0445cdf30db60b8a019b86eb4b5b60000ea59567613a57b1418145c6f99f472a0d2f1a43eaaadb7f2410733dec64affd3dbb4dd7d520316892018f30981318cdbef4b5c7b1cd0d9bb1f51c21919d7af5d06f12dbc3752d171546e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085618a02de65de738 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 107, 84, 243, 130, 226, 223, 218, 217, 172, 146, 106, 205, 227, 74, 108, 215, 46, 136, 215, 204, 45, 6, 163, 74, 242, 244, 78, 60, 110, 62, 181, 154, 69, 170, 17, 115, 79, 74, 150, 162, 219, 214, 172, 20, 109, 86, 231, 159, 240, 205, 136, 40, 80, 139, 45, 241, 255, 208, 68, 92, 223, 48, 219, 96, 184, 160, 25, 184, 110, 180, 181, 182, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1475954805902301674, key: EventKey( [ 20, 92, 111, 153, 244, 114, 160, 210, 241, 164, 62, 170, 173, 183, 242, 65, 7, 51, 222, 198, 74, 255, 211, 219, ], ), }, sent_events: EventHandle { count: 2344429284547747252, key: EventKey( [ 243, 9, 129, 49, 140, 219, 239, 75, 92, 123, 28, 208, 217, 187, 31, 81, 194, 25, 25, 215, 175, 93, 6, 241, ], ), }, sequence_number: 7950104386057255981, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(229dc676da88512cb90e7ef41c11c2ffef0d83e253058fc44e963bbf0bfd2e55): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101345f1345a731d823833aee463b03ac39eabf3a3b6f0bdad58c3ad485c562a7ae710e00645362b8c2e192f62a8bdcfb3c563c75a16200000e7a0c9f7ec9fb71184eed7a1ff4c0d6844267b11ffbcf1774e4f8cb3203fb30a1e5830c250860873518030a0a85e3cc45b489f39550b1753394aa01b5010d3864a148ade30190bfefee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bd054102b5b8f8db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 19, 69, 167, 49, 216, 35, 131, 58, 238, 70, 59, 3, 172, 57, 234, 191, 58, 59, 111, 11, 218, 213, 140, 58, 212, 133, 197, 98, 167, 174, 113, 14, 0, 100, 83, 98, 184, 194, 225, 146, 246, 42, 139, 220, 251, 60, 86, 60, 117, 161, 98, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8213379891111688718, key: EventKey( [ 78, 237, 122, 31, 244, 192, 214, 132, 66, 103, 177, 31, 251, 207, 23, 116, 228, 248, 203, 50, 3, 251, 48, 161, ], ), }, sent_events: EventHandle { count: 3857157193963701221, key: EventKey( [ 3, 10, 10, 133, 227, 204, 69, 180, 137, 243, 149, 80, 177, 117, 51, 148, 170, 1, 181, 1, 13, 56, 100, 161, ], ), }, sequence_number: 17217190525688589640, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(268a2b48f46f91f369090ef77cad31af94b36182ad5abe6b9574d7e53e0d18b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c013f96147c80ae1903ec21fba2ded1ccd55f21c565316ad0f6216fe3713837c2f3352a484cab29e63b144c6aa4f3047a9c098b0b9c574542c631e5cec3e49ab9330000568093cfe7d5237e18bb9b164bafe201f40439955fc2c912512934beaf968101be07f267e7d482a03c18691a506b5a6447532ce93ae2e436d4ce5be08f849060c8cfeea12468c2b0a1dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70845611733e6ab8fe8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 150, 20, 124, 128, 174, 25, 3, 236, 33, 251, 162, 222, 209, 204, 213, 95, 33, 197, 101, 49, 106, 208, 246, 33, 111, 227, 113, 56, 55, 194, 243, 53, 42, 72, 76, 171, 41, 230, 59, 20, 76, 106, 164, 243, 4, 122, 156, 9, 139, 11, 156, 87, 69, 66, 198, 49, 229, 206, 195, 228, 154, 185, 51, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9089343664560504918, key: EventKey( [ 187, 155, 22, 75, 175, 226, 1, 244, 4, 57, 149, 95, 194, 201, 18, 81, 41, 52, 190, 175, 150, 129, 1, 190, ], ), }, sent_events: EventHandle { count: 4368635489476407815, key: EventKey( [ 105, 26, 80, 107, 90, 100, 71, 83, 44, 233, 58, 226, 228, 54, 212, 206, 91, 224, 143, 132, 144, 96, 200, 207, ], ), }, sequence_number: 15898182508611936750, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(26968b28e53d7ce0b01c164dbb5e6eb8cc68d4bc46d3eb5d0617f07094dd5f93): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e261f541fe93062ba8d72a5b7e30900019872a388f3c3536c304639b1d96a8b23b5ec9e7a6c103e0218db9917e0036e0f0a21931eb7d03ddea824d580b7ff3671f949cf66c8f9edf736189addf379088645bb0b360279deee016a611d82229e83e7b479dd53902de437b42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080aaa92c68a2fb0b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 38, 31, 84, 31, 233, 48, 98, 186, 141, 114, 165, 183, 227, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9872a388f3c3536c304639b1d96a8b23, }, ), received_events: EventHandle { count: 161584694731664565, key: EventKey( [ 219, 153, 23, 224, 3, 110, 15, 10, 33, 147, 30, 183, 208, 61, 222, 168, 36, 213, 128, 183, 255, 54, 113, 249, ], ), }, sent_events: EventHandle { count: 3960896054360461129, key: EventKey( [ 154, 221, 243, 121, 8, 134, 69, 187, 11, 54, 2, 121, 222, 238, 1, 106, 97, 29, 130, 34, 158, 131, 231, 180, ], ), }, sequence_number: 12986098934892191097, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(271bf7cd8ec72a3ac98f8ddd85d822c34674756ca9d7962e67270a4268a3c07c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130215f62da5d00e72ef16772027baed724e19aba7e188eaf06ecf6dd74a6bf32e2407f2157137c67dfba0e0bff8fb9bbd901bea1fb070c9290b31dac1ab06018b03700da2af7c0a33bdb01184d080bb34a5cebd45b3da97fb3eae4ab3d98782852ce665b5632b51760657839185f62d06b473d75f7891f9425e485b3db6e24f000f450a98d05a444d5a94c13442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70863e891198090baf0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 95, 98, 218, 93, 0, 231, 46, 241, 103, 114, 2, 123, 174, 215, 36, 225, 154, 186, 126, 24, 142, 175, 6, 236, 246, 221, 116, 166, 191, 50, 226, 64, 127, 33, 87, 19, 124, 103, 223, 186, 14, 11, 255, 143, 185, 187, 217, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bea1fb070c9290b31dac1ab06018b037, }, ), key_rotation_capability: None, received_events: EventHandle { count: 133766188440693466, key: EventKey( [ 77, 8, 11, 179, 74, 92, 235, 212, 91, 61, 169, 127, 179, 234, 228, 171, 61, 152, 120, 40, 82, 206, 102, 91, ], ), }, sent_events: EventHandle { count: 4141171320756187734, key: EventKey( [ 95, 98, 208, 107, 71, 61, 117, 247, 137, 31, 148, 37, 228, 133, 179, 219, 110, 36, 240, 0, 244, 80, 169, 141, ], ), }, sequence_number: 4905348711447831557, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(279f7fba266906abdba91dfc82287910a4764e396b0a6026aa159fbf1e4a70d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb12ac9da2f7ca04c741f0a024a51a1bc9ba42e38e4dd64709eed2a77f7c677f365d65a603afc0876f09e26541bdb00011e772cd86ac9627d415d86b68bd80961b9e2410247f6f66518d43cbf270163c374084bf8329113eee91113fb23f1490cd4426cd77a38a68b1618d0e0a108ee54fd3d670d9297f254beef596665a42f1b80696ec43efe1239f7b72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087955cd2ac151f62a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 42, 201, 218, 47, 124, 160, 76, 116, 31, 10, 2, 74, 81, 161, 188, 155, 164, 46, 56, 228, 221, 100, 112, 158, 237, 42, 119, 247, 198, 119, 243, 101, 214, 90, 96, 58, 252, 8, 118, 240, 158, 38, 84, 27, 219, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e772cd86ac9627d415d86b68bd80961, }, ), received_events: EventHandle { count: 7347330626942526137, key: EventKey( [ 212, 60, 191, 39, 1, 99, 195, 116, 8, 75, 248, 50, 145, 19, 238, 233, 17, 19, 251, 35, 241, 73, 12, 212, ], ), }, sent_events: EventHandle { count: 1624574852106513474, key: EventKey( [ 208, 224, 161, 8, 238, 84, 253, 61, 103, 13, 146, 151, 242, 84, 190, 239, 89, 102, 101, 164, 47, 27, 128, 105, ], ), }, sequence_number: 13256126781926065262, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(27bb764ab67ed9c9111e64058079261ce15c4150378b1643dd693b4a1d742ae8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e247558f36c71c08a38ebca54d14d8cd840ac60898d294252d16d4cf68017c794f2ba70b02c39ca3f9dd5602190b9f47bb665f02837c643d2309efa1554eb36e15707048c332cce1ddf3410392ffb00018120426c4738efbd26d9d7264441013d9b8302891607e104183e27b4bc7ec2eaf337d6ef6347631c5dc97bedaa5346c7b45f25e2e3f52d643618f174fc726dcfabf7f1659465508915901ee442439c75022b63402a695eb92b342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c91f1deb5ac577a4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 117, 88, 243, 108, 113, 192, 138, 56, 235, 202, 84, 209, 77, 140, 216, 64, 172, 96, 137, 141, 41, 66, 82, 209, 109, 76, 246, 128, 23, 199, 148, 242, 186, 112, 176, 44, 57, 202, 63, 157, 213, 96, 33, 144, 185, 244, 123, 182, 101, 240, 40, 55, 198, 67, 210, 48, 158, 250, 21, 84, 235, 54, 225, 87, 7, 4, 140, 51, 44, 206, 29, 223, 52, 16, 57, 47, 251, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8120426c4738efbd26d9d7264441013d, }, ), received_events: EventHandle { count: 351570039280927643, key: EventKey( [ 62, 39, 180, 188, 126, 194, 234, 243, 55, 214, 239, 99, 71, 99, 28, 93, 201, 123, 237, 170, 83, 70, 199, 180, ], ), }, sent_events: EventHandle { count: 3919308109832660319, key: EventKey( [ 241, 116, 252, 114, 109, 207, 171, 247, 241, 101, 148, 101, 80, 137, 21, 144, 30, 228, 66, 67, 156, 117, 2, 43, ], ), }, sequence_number: 3759302129113251939, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(289d0c447cc7b2693e1ddc7185bad886dac996084378c042c0eae2a74024ecbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97609b3f2714d304f31a4db01d7fabf98d9edca2a8b1156a5abe0a5ad018e38d7049a71ab326e1c20dee92993c4e95972643e09e95118a4cf283d08c5b98434e0b37606dae73e10737a32e90d09528919a8a6de7d0540185394479c6d59f82f44bebf99ce385926835b9bbb62cac34ec6d1c23ed276a6d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708528aaeb3e029d221 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 179, 242, 113, 77, 48, 79, 49, 164, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d7fabf98d9edca2a8b1156a5abe0a5ad, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8e38d7049a71ab326e1c20dee92993c4, }, ), received_events: EventHandle { count: 5902258950223583721, key: EventKey( [ 164, 207, 40, 61, 8, 197, 185, 132, 52, 224, 179, 118, 6, 218, 231, 62, 16, 115, 122, 50, 233, 13, 9, 82, ], ), }, sent_events: EventHandle { count: 4613231788543187337, key: EventKey( [ 83, 148, 71, 156, 109, 89, 248, 47, 68, 190, 191, 153, 206, 56, 89, 38, 131, 91, 155, 187, 98, 202, 195, 78, ], ), }, sequence_number: 15395123021580784070, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(28a84fffa4b224cbe5a04eb2b9cdc34e1ac1bd20451dcc451ce3c40fb2d3e52a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014a1b9f85201db6bef297927afd562bf036cdea6653ff4d5966fc22ba41fcdd33217cbbce51d4c8cc83bab1fdf18c080bdf3d604efdb1299c8ece7522be0eca00ef79ed8cea1d7dc5e13c9e0000e46d757a305bf61818c251d2225d5da9c8abfc17d67930502c84ccf107399a877209ab713313ab4f6218af20309341ad28671b4b1ef154a102ceccfcfcaeda7056bbad9044ca7c51b3d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087547bf6f81cff4ac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 27, 159, 133, 32, 29, 182, 190, 242, 151, 146, 122, 253, 86, 43, 240, 54, 205, 234, 102, 83, 255, 77, 89, 102, 252, 34, 186, 65, 252, 221, 51, 33, 124, 187, 206, 81, 212, 200, 204, 131, 186, 177, 253, 241, 140, 8, 11, 223, 61, 96, 78, 253, 177, 41, 156, 142, 206, 117, 34, 190, 14, 202, 0, 239, 121, 237, 140, 234, 29, 125, 197, 225, 60, 158, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1798725364952165860, key: EventKey( [ 194, 81, 210, 34, 93, 93, 169, 200, 171, 252, 23, 214, 121, 48, 80, 44, 132, 204, 241, 7, 57, 154, 135, 114, ], ), }, sent_events: EventHandle { count: 7084068837832895241, key: EventKey( [ 175, 32, 48, 147, 65, 173, 40, 103, 27, 75, 30, 241, 84, 161, 2, 206, 204, 252, 252, 174, 218, 112, 86, 187, ], ), }, sequence_number: 15326683553283215533, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2a14b13c2f96c72fa498e94fc9d0d5112df1d0b47439724322c7f586534ac4db): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215c6e46f26058a24ea4805a7f04d154cab8d1bf786990001a7ff6b79451976b23ce4396ed27971e86ae02c2720946637184b1e91d3c4ea21ad1531133805a3446a25c246cc22f11eec217e10f73d36e76d1813bab0d1d1ef6e454c82f632b510c980e093ebbc16e82d97b176cb14161635a02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70857dd02140e5d3d7a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 228, 111, 38, 5, 138, 36, 234, 72, 5, 167, 240, 77, 21, 76, 171, 141, 27, 247, 134, 153, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a7ff6b79451976b23ce4396ed27971e8, }, ), received_events: EventHandle { count: 3992040985527640170, key: EventKey( [ 75, 30, 145, 211, 196, 234, 33, 173, 21, 49, 19, 56, 5, 163, 68, 106, 37, 194, 70, 204, 34, 241, 30, 236, ], ), }, sent_events: EventHandle { count: 7919358109520264737, key: EventKey( [ 19, 186, 176, 209, 209, 239, 110, 69, 76, 130, 246, 50, 181, 16, 201, 128, 224, 147, 235, 188, 22, 232, 45, 151, ], ), }, sequence_number: 11544157503928104625, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2a355fc848a17494001f5eb3b9e3eb1a99f12e9b0903a730dfed0d12250a723d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c7015a66bb110a024935c74c083ed7c175c89400f9a533f7d632fb39f50009a4acc3b696823fff09e352141f8507e81879d3cb30748c35b2921301bba65369f692527956c13f1322db377ccabade38722fc3822377be388702dfffcd7601d5e078ed716ec8a09f49e658ac52c13401c0cc4eca39a7474bde750152a4cbf76c4c322c063925d730186b801238dccfd0ed7b07f291d6dde29568b7e0d86655854b00bbdff6e697c128186085b61984955f4971947da4bbad20967c3b6e54ea0cec8579db5fbde9d6ea172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c90d19934951d6ce Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 187, 17, 10, 2, 73, 53, 199, 76, 8, 62, 215, 193, 117, 200, 148, 0, 249, 165, 51, 247, 214, 50, 251, 57, 245, 0, 9, 164, 172, 195, 182, 150, 130, 63, 255, 9, 227, 82, 20, 31, 133, 7, 232, 24, 121, 211, 203, 48, 116, 140, 53, 178, 146, 19, 1, 187, 166, 83, 105, 246, 146, 82, 121, 86, 193, 63, 19, 34, 219, 55, 124, 202, 186, 222, 56, 114, 47, 195, 130, 35, 119, 190, 56, 135, 2, 223, 255, 205, 118, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5e078ed716ec8a09f49e658ac52c134, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0cc4eca39a7474bde750152a4cbf76c, }, ), received_events: EventHandle { count: 3519322560660255308, key: EventKey( [ 107, 128, 18, 56, 220, 207, 208, 237, 123, 7, 242, 145, 214, 221, 226, 149, 104, 183, 224, 216, 102, 85, 133, 75, ], ), }, sent_events: EventHandle { count: 2936795450262403840, key: EventKey( [ 96, 133, 182, 25, 132, 149, 95, 73, 113, 148, 125, 164, 187, 173, 32, 150, 124, 59, 110, 84, 234, 12, 236, 133, ], ), }, sequence_number: 1723426106815535993, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2be9410dc4f2aafe12bc2acc39c740284d739972eb67a94476be49179b5d1a41): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b1e7006a6d25ec450665f892c34f3d44090136d0849aed46c8cf2f47c2ef5bb00008d858b8e7b90b27d180653605fceef16c3e01e37250dd44c80e51c923bff1a0c9e314cb8021ddfb10218a463ea794df52365a79352418ec9de5ebb2a23a408629df4b0f547e72d1d76a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d4127508abd26114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 6, 166, 210, 94, 196, 80, 102, 95, 137, 44, 52, 243, 212, 64, 144, 19, 109, 8, 73, 174, 212, 108, 140, 242, 244, 124, 46, 245, 187, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9057460660942374285, key: EventKey( [ 6, 83, 96, 95, 206, 239, 22, 195, 224, 30, 55, 37, 13, 212, 76, 128, 229, 28, 146, 59, 255, 26, 12, 158, ], ), }, sent_events: EventHandle { count: 194181574646320177, key: EventKey( [ 164, 99, 234, 121, 77, 245, 35, 101, 167, 147, 82, 65, 142, 201, 222, 94, 187, 42, 35, 164, 8, 98, 157, 244, ], ), }, sequence_number: 11634518770349241776, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2c5fa893f71d551e24f087650dc54b108343d89fbf57cd887d34b7ebe7547870): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96316dc5508bc4171bb727582a5f520b54a40a1661290d68400004f8dfbaba9093303181c19b17ae7aaac7bc380ac84fc3f792ffb7e0b3e2b40b61c635b547062abcc54185f046c6c58d3ebf87b26587fe66f13237d82939478b9efb00dde1942b914bfed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e61f0d2a8938e1d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 85, 8, 188, 65, 113, 187, 114, 117, 130, 165, 245, 32, 181, 74, 64, 161, 102, 18, 144, 214, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 230538630265539919, key: EventKey( [ 28, 25, 177, 122, 231, 170, 172, 123, 195, 128, 172, 132, 252, 63, 121, 47, 251, 126, 11, 62, 43, 64, 182, 28, ], ), }, sent_events: EventHandle { count: 6110447233714641763, key: EventKey( [ 95, 4, 108, 108, 88, 211, 235, 248, 123, 38, 88, 127, 230, 111, 19, 35, 125, 130, 147, 148, 120, 185, 239, 176, ], ), }, sequence_number: 17131434293451152909, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d2475c5068a0f69ee998b2d1eeff1f9747a7e765938bdca9a5c149c19a21318): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015db462c83df067849dfa0148d490d4a8c4d16b61d23377de7d793e4428b5cdecbbe9b9b7c5569ffd6e925bddf7639de705959cca81adb18d3722a96c513841d4eeb8fcdf9b4e8735e4ca44e2edb55891e64867dff32c21724aff64c95c9201e41c36e34fdc32fea8ce211756b51a6901c0a08b7c32806917bfaa339000431fc5afb663e5ef9a0a391801e01c5960a561839947de94b139d7fee2fa054d114ff3c2d0c815840727ae33183cc2b036fbbd7eab565d8706a7080bebbe4514ff3724c82bab29ab5215a563042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708505ac9d4ef449690 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 180, 98, 200, 61, 240, 103, 132, 157, 250, 1, 72, 212, 144, 212, 168, 196, 209, 107, 97, 210, 51, 119, 222, 125, 121, 62, 68, 40, 181, 205, 236, 187, 233, 185, 183, 197, 86, 159, 253, 110, 146, 91, 221, 247, 99, 157, 231, 5, 149, 156, 202, 129, 173, 177, 141, 55, 34, 169, 108, 81, 56, 65, 212, 238, 184, 252, 223, 155, 78, 135, 53, 228, 202, 68, 226, 237, 181, 88, 145, 230, 72, 103, 223, 243, 44, 33, 114, 74, 255, 100, 201, 92, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e41c36e34fdc32fea8ce211756b51a69, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c0a08b7c32806917bfaa339000431fc5, }, ), received_events: EventHandle { count: 4110267965065377455, key: EventKey( [ 1, 224, 28, 89, 96, 165, 97, 131, 153, 71, 222, 148, 177, 57, 215, 254, 226, 250, 5, 77, 17, 79, 243, 194, ], ), }, sent_events: EventHandle { count: 3723956855116253392, key: EventKey( [ 60, 194, 176, 54, 251, 189, 126, 171, 86, 93, 135, 6, 167, 8, 11, 235, 190, 69, 20, 255, 55, 36, 200, 43, ], ), }, sequence_number: 316277909845911979, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d2d54c193804ac6988e7a944f6ab6caff2b701b49da6740527f557feed7113b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0122ba7a7f6774683c32f0301ce6a537c1e7cc746be94d31d933bfdbc059cf9fd3fa1a7701baa37319aabdd093ca8e9af286ebf4410110731089ba7cdfa3d857c61b7f3920ae9544a5a609788d2018a0f16548bdf22035c1759f826d41d925c5d8a8336af6927013a924ee6eb55434181e47dd585de665312385588f198bd00bca8af8aa7a4608eb9d047ba4f3b841472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708730b2c2602db7463 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 122, 127, 103, 116, 104, 60, 50, 240, 48, 28, 230, 165, 55, 193, 231, 204, 116, 107, 233, 77, 49, 217, 51, 191, 219, 192, 89, 207, 159, 211, 250, 26, 119, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: baa37319aabdd093ca8e9af286ebf441, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 10731089ba7cdfa3d857c61b7f3920ae, }, ), received_events: EventHandle { count: 2345662963775784085, key: EventKey( [ 160, 241, 101, 72, 189, 242, 32, 53, 193, 117, 159, 130, 109, 65, 217, 37, 197, 216, 168, 51, 106, 246, 146, 112, ], ), }, sent_events: EventHandle { count: 3770838276062357779, key: EventKey( [ 30, 71, 221, 88, 93, 230, 101, 49, 35, 133, 88, 143, 25, 139, 208, 11, 202, 138, 248, 170, 122, 70, 8, 235, ], ), }, sequence_number: 5134588406755165341, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2d667446043dafa0df447a532ed15ff23483b9180e2537d0c329ab8b056e76d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c6a20058c918c42730c9da0d180e8768df8460ab05655a56879048c210001d1feb1a0d96b6950c59888785e4866326d035e33ccca842d1877a0a51d3a841b0e21b2639956a6abf2441ef84d268ea35863ca530aabc2684d184ba9e8243620392c32451a4000c83b6bb724c5d125f1445d392eca4cfb1b83d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fcd6889cb54f031f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 32, 5, 140, 145, 140, 66, 115, 12, 157, 160, 209, 128, 232, 118, 141, 248, 70, 10, 176, 86, 85, 165, 104, 121, 4, 140, 33, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1feb1a0d96b6950c59888785e486632, }, ), received_events: EventHandle { count: 3279969407016502125, key: EventKey( [ 119, 160, 165, 29, 58, 132, 27, 14, 33, 178, 99, 153, 86, 166, 171, 242, 68, 30, 248, 77, 38, 142, 163, 88, ], ), }, sent_events: EventHandle { count: 5577922178366818915, key: EventKey( [ 75, 169, 232, 36, 54, 32, 57, 44, 50, 69, 26, 64, 0, 200, 59, 107, 183, 36, 197, 209, 37, 241, 68, 93, ], ), }, sequence_number: 15385171518166806073, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2da756cd26c43c3b80acd89bdc3131b9e6cf1bf8270556ad24f6c4e641accd91): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a6055b25923198d26923b0773cdc70c2ba21fbc1e4a0ed262acd21e10ce8a6991570e9272e4c302a686a7ebdd8061c2b92107762288ff85275b6d0001cbe88fdea5bfb9c74e46eb416bf6dfdc2e79efe734e37d40186c7699972520d39524586b8ccfdca2d70b9e099e92ebd332a34d7efa76b9db6e18870a8dd7df5e6304b90acd1c7496d83611c94656f9e7f47932f0ddf148211da22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ffd7cbad1ae523d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 85, 178, 89, 35, 25, 141, 38, 146, 59, 7, 115, 205, 199, 12, 43, 162, 31, 188, 30, 74, 14, 210, 98, 172, 210, 30, 16, 206, 138, 105, 145, 87, 14, 146, 114, 228, 195, 2, 166, 134, 167, 235, 221, 128, 97, 194, 185, 33, 7, 118, 34, 136, 255, 133, 39, 91, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cbe88fdea5bfb9c74e46eb416bf6dfdc, }, ), received_events: EventHandle { count: 4647120206885255470, key: EventKey( [ 108, 118, 153, 151, 37, 32, 211, 149, 36, 88, 107, 140, 207, 220, 162, 215, 11, 158, 9, 158, 146, 235, 211, 50, ], ), }, sent_events: EventHandle { count: 7988182284731567523, key: EventKey( [ 135, 10, 141, 215, 223, 94, 99, 4, 185, 10, 205, 28, 116, 150, 216, 54, 17, 201, 70, 86, 249, 231, 244, 121, ], ), }, sequence_number: 11681529605648150578, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2e210be96b3eb5812e6d04e111db904a6cc403c9b0fd199ef7da84a7d317a1b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d04d267b4343a8f1655785a04b61db72292b0b75a1f337ba7c4791c4e48d2ceb0bfe1b20ce0f3510041ab1b0a7276663885e52f7a4080e2d179a9bc1a120001de7f5292f2830816cd3371ddcd14d7da3ca127417541d17b18f3ae2ca63be3d66611b424e2c51fafb64d7bb8cff84dae2a6fc006112d4faf7a18480ab06d2d42dd4613e3d1ab5915a2bdeea14d819e3fccdba6e59193960222082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876f8882e53637093 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 210, 103, 180, 52, 58, 143, 22, 85, 120, 90, 4, 182, 29, 183, 34, 146, 176, 183, 90, 31, 51, 123, 167, 196, 121, 28, 78, 72, 210, 206, 176, 191, 225, 178, 12, 224, 243, 81, 0, 65, 171, 27, 10, 114, 118, 102, 56, 133, 229, 47, 122, 64, 128, 226, 209, 121, 169, 188, 26, 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: de7f5292f2830816cd3371ddcd14d7da, }, ), received_events: EventHandle { count: 8921984308657758524, key: EventKey( [ 243, 174, 44, 166, 59, 227, 214, 102, 17, 180, 36, 226, 197, 31, 175, 182, 77, 123, 184, 207, 248, 77, 174, 42, ], ), }, sent_events: EventHandle { count: 8840371648529350767, key: EventKey( [ 72, 10, 176, 109, 45, 66, 221, 70, 19, 227, 209, 171, 89, 21, 162, 189, 238, 161, 77, 129, 158, 63, 204, 219, ], ), }, sequence_number: 586033747255748006, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2f6b7bd088a256f55d7004080eb65cbb83e5e0761be74b742eaa151b6365b85a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518ad977107c6129ee5ec661ecf5bbf4c85e3eddc7cb40fcca90000ff7f04c948edc41c18fceb47e8a2da1c5073240fc6db1b595bd6797c02e8382288a8ddc90d6532486218d94ebdecee7b2b303fe61580b031a411144d24b8e7f5624ce80daf78af9c88e12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f0cd7a53c525f028 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 151, 113, 7, 198, 18, 158, 229, 236, 102, 30, 207, 91, 191, 76, 133, 227, 237, 220, 124, 180, 15, 204, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2073042625363214335, key: EventKey( [ 252, 235, 71, 232, 162, 218, 28, 80, 115, 36, 15, 198, 219, 27, 89, 91, 214, 121, 124, 2, 232, 56, 34, 136, ], ), }, sent_events: EventHandle { count: 7081965823644523944, key: EventKey( [ 217, 78, 189, 236, 238, 123, 43, 48, 63, 230, 21, 128, 176, 49, 164, 17, 20, 77, 36, 184, 231, 245, 98, 76, ], ), }, sequence_number: 16251411532824382952, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2fda42c8dcaec3cc48f73f7215b4823f55b6ece18efa04467b9fc232104f8549): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97407ebc896feacabde010ac4c7340782c79b67c0b0beb1e154630149137dbfe97fffbc587088d15a1f36c6f2be3dbeb2ea0f73180ec318fefc4e063c985acad04e59cfdccfcf044bd9a8238344733fef09ba103618d96ca9a86a3cd72b100c9c4168463f2a1abf040a49ea8e29dcbbeea39ac6f18d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc27b5d20615047c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 200, 150, 254, 172, 171, 222, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0ac4c7340782c79b67c0b0beb1e15463, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 49137dbfe97fffbc587088d15a1f36c6, }, ), received_events: EventHandle { count: 8291103492429168370, key: EventKey( [ 14, 195, 24, 254, 252, 78, 6, 60, 152, 90, 202, 208, 78, 89, 207, 220, 207, 207, 4, 75, 217, 168, 35, 131, ], ), }, sent_events: EventHandle { count: 3895818229506863940, key: EventKey( [ 217, 108, 169, 168, 106, 60, 215, 43, 16, 12, 156, 65, 104, 70, 63, 42, 26, 191, 4, 10, 73, 234, 142, 41, ], ), }, sequence_number: 10228174596212702172, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(2ffe9c0fbbcebacb76e9393d8b1226add865aa73abed427a4ed552192d1f16b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770a38e70bb51320b0ef9055017a7f2fddfde894ffb1ce72c5a3ea069c01a21571e0518acf7b3bf62afab7ab10b1e0a543a7fe75bb6e18626aaabdd4e86c3cdd17599136f7e7861a15bdc3747a24a84ebe7f93b323877b18719fa80f5f00d681d02eb7b379c8d6a31f6dfc3857d9e37ae2f7ccbd06ac02462101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9c6155f97667ba1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 231, 11, 181, 19, 32, 176, 239, 144, 85, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7a7f2fddfde894ffb1ce72c5a3ea069c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a21571e0518acf7b3bf62afab7ab10b1, }, ), received_events: EventHandle { count: 7979100901405337056, key: EventKey( [ 98, 106, 170, 189, 212, 232, 108, 60, 221, 23, 89, 145, 54, 247, 231, 134, 26, 21, 189, 195, 116, 122, 36, 168, ], ), }, sent_events: EventHandle { count: 8901122442701815374, key: EventKey( [ 113, 159, 168, 15, 95, 0, 214, 129, 208, 46, 183, 179, 121, 200, 214, 163, 31, 109, 252, 56, 87, 217, 227, 122, ], ), }, sequence_number: 5044783677562484706, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(300be4e99026a84d61238e477f9d7cda7a1e30ad4618e65515c5c026eb659147): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c6015994eb696eea17d1d24697137ed32f8ab391e62afbf4787760b8d9f1f4fe15e90c2b40ce815c18f3a3e24bdb0695695e1a1ecb05258fa50a7afe3e556f6c987ad75af297782abe5ebb0d25c8d65806c7a3e75d43b2f24a3cb7a201e38a822d8cdb35dec84c7fc688fff87701ff1e51b2265455778603b774f0ffbf79ef56f028dee1654918f0cc890e14cfc7e86f36eeaee3f3ba4431d2373bac8f441d1078dce9ba1b3c7b1867b505ee642ddb998b250d65eb7af702addddc0564ae7325e446db63e91970792101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f566f38267b3148f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 235, 105, 110, 234, 23, 209, 210, 70, 151, 19, 126, 211, 47, 138, 179, 145, 230, 42, 251, 244, 120, 119, 96, 184, 217, 241, 244, 254, 21, 233, 12, 43, 64, 206, 129, 92, 24, 243, 163, 226, 75, 219, 6, 149, 105, 94, 26, 30, 203, 5, 37, 143, 165, 10, 122, 254, 62, 85, 111, 108, 152, 122, 215, 90, 242, 151, 120, 42, 190, 94, 187, 13, 37, 200, 214, 88, 6, 199, 163, 231, 93, 67, 178, 242, 74, 60, 183, 162, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e38a822d8cdb35dec84c7fc688fff877, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ff1e51b2265455778603b774f0ffbf79, }, ), received_events: EventHandle { count: 5288881681702344431, key: EventKey( [ 240, 204, 137, 14, 20, 207, 199, 232, 111, 54, 238, 174, 227, 243, 186, 68, 49, 210, 55, 59, 172, 143, 68, 29, ], ), }, sent_events: EventHandle { count: 8880003054869182480, key: EventKey( [ 103, 181, 5, 238, 100, 45, 219, 153, 139, 37, 13, 101, 235, 122, 247, 2, 173, 221, 220, 5, 100, 174, 115, 37, ], ), }, sequence_number: 8750522566174263012, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(306a753dd4744a81b74c9095d05f0eb0b37f8eb48b8b6d3f65b1b03bd9e79f84): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161ab75392329e156c70e0346536ded383bff8baf7967aaab1a64cf3d57c1f9fde84e347975e2ad2da98bfc63846fb19406f238663829055c687514dd6c9ee64e261fcefb8720ab64fee1f57f6b8c9718e68d2a164d72983984dc48f03e8c0468475f0000e66608955e479f4d18a9b4a85163a8a18c43dd44f82abc22e7fd5ad7abb954ba0063cf2de8e83ece1a18582c68032c7fbcddd76d8a2f9cd468ccd31f4000938bcd756f89a0c53e45579d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cce5848335c69e58 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 117, 57, 35, 41, 225, 86, 199, 14, 3, 70, 83, 109, 237, 56, 59, 255, 139, 175, 121, 103, 170, 171, 26, 100, 207, 61, 87, 193, 249, 253, 232, 78, 52, 121, 117, 226, 173, 45, 169, 139, 252, 99, 132, 111, 177, 148, 6, 242, 56, 102, 56, 41, 5, 92, 104, 117, 20, 221, 108, 158, 230, 78, 38, 31, 206, 251, 135, 32, 171, 100, 254, 225, 245, 127, 107, 140, 151, 24, 230, 141, 42, 22, 77, 114, 152, 57, 132, 220, 72, 240, 62, 140, 4, 104, 71, 95, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5593267733770299110, key: EventKey( [ 169, 180, 168, 81, 99, 168, 161, 140, 67, 221, 68, 248, 42, 188, 34, 231, 253, 90, 215, 171, 185, 84, 186, 0, ], ), }, sent_events: EventHandle { count: 1931550460237172579, key: EventKey( [ 88, 44, 104, 3, 44, 127, 188, 221, 215, 109, 138, 47, 156, 212, 104, 204, 211, 31, 64, 0, 147, 139, 205, 117, ], ), }, sequence_number: 11337606722834434415, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(30c536879d1cd8f80e62bbf677393f4e69632b4ad87d970bef6ce796f205c9ad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0152a1699192b7c1cee6d6e25a2911738940a98ddadc5ffa1f5ef4606793eda8768ae62771a20111fd91542e342a724f59343d0412b8271d4f8e80beef9c35b2e4362a96082fdd6e36710a3465126545560ec5150134da94df93c9559687c5777c3b3931a1014c6d44e22a27add03f2f1b1db6e970ad1ca066c0067ba84718d52caa9c4fc15d83e8c794991c4ba629dc1cff5e125855084fb14b5a3b414f741817427369e4d994437530eb50dd7c6bc198f1129589c43b6c23356847536c58162101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70810d082747f329d90 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 105, 145, 146, 183, 193, 206, 230, 214, 226, 90, 41, 17, 115, 137, 64, 169, 141, 218, 220, 95, 250, 31, 94, 244, 96, 103, 147, 237, 168, 118, 138, 230, 39, 113, 162, 1, 17, 253, 145, 84, 46, 52, 42, 114, 79, 89, 52, 61, 4, 18, 184, 39, 29, 79, 142, 128, 190, 239, 156, 53, 178, 228, 54, 42, 150, 8, 47, 221, 110, 54, 113, 10, 52, 101, 18, 101, 69, 86, 14, 197, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 34da94df93c9559687c5777c3b3931a1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4c6d44e22a27add03f2f1b1db6e970ad, }, ), received_events: EventHandle { count: 5163512241708245020, key: EventKey( [ 213, 44, 170, 156, 79, 193, 93, 131, 232, 199, 148, 153, 28, 75, 166, 41, 220, 28, 255, 94, 18, 88, 85, 8, ], ), }, sent_events: EventHandle { count: 8380989154733568335, key: EventKey( [ 23, 66, 115, 105, 228, 217, 148, 67, 117, 48, 235, 80, 221, 124, 107, 193, 152, 241, 18, 149, 137, 196, 59, 108, ], ), }, sequence_number: 1610155971721049379, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(30dbe4347f6788bc4c0e3ae95f835226a75844b6a48427f93b9a5681417fd957): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f023bb20196e19eeb87de128df11a6ed633fff77a01f747c65f27c933690cbd94492ffa0137a547be4770b23515181eb2b3d42e90655beb1837ff24b62647a4d690c6725846f33cbe4e7b39573d5118b3044f73f8b861ca3d2d83655436f2e320826c7705787fb4456af17d0c78c54e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708238ff1c1f3d4a01c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 178, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 96e19eeb87de128df11a6ed633fff77a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f747c65f27c933690cbd94492ffa0137, }, ), received_events: EventHandle { count: 1528323843871885221, key: EventKey( [ 30, 178, 179, 212, 46, 144, 101, 91, 235, 24, 55, 255, 36, 182, 38, 71, 164, 214, 144, 198, 114, 88, 70, 243, ], ), }, sent_events: EventHandle { count: 5853930995045023292, key: EventKey( [ 179, 4, 79, 115, 248, 184, 97, 202, 61, 45, 131, 101, 84, 54, 242, 227, 32, 130, 108, 119, 5, 120, 127, 180, ], ), }, sequence_number: 5676074900418292293, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(31e7241da03995d274c8e566fc0018a1258772ebb5384c197aa4fe3fca0f4861): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e016d0116aa2d73739d624ec73749ae9f2e8f0f00b5914bd240c8f135186d9f8cd521bfb7ae7e9ebee06b245216df1147db089d4c771f7595fd56f8956818972687701663fede812421ffb47308a5b69ce8ef5bff6cce4da9b1f7b39729772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70875b624cb93295e63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 16aa2d73739d624ec73749ae9f2e8f0f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3887108134129078709, key: EventKey( [ 109, 159, 140, 213, 33, 191, 183, 174, 126, 158, 190, 224, 107, 36, 82, 22, 223, 17, 71, 219, 8, 157, 76, 119, ], ), }, sent_events: EventHandle { count: 7536202603979699487, key: EventKey( [ 151, 38, 135, 112, 22, 99, 254, 222, 129, 36, 33, 255, 180, 115, 8, 165, 182, 156, 232, 239, 91, 255, 108, 206, ], ), }, sequence_number: 8586560963769117005, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(322523d042faaa74496c3ad9054aabf11115878a1054288226955f8f7867b3e7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9721576dd6f828bc84c33a2c9b533be7b092cb7471560470001c1c2e763e2e4ad8dfa3ed7f20390ba20507f31a11dd33a3a18ce2ae4156262d7fe8ae41fc1e6c81a4537685c35e8f54ad65cee2af95dd4c05b18ad5b5f0ef6c64ecb65de7f550fa0cd099da077a8e4421585272d1e4da5b2bfc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a5481ba2009b7be6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 221, 111, 130, 139, 200, 76, 51, 162, 201, 181, 51, 190, 123, 9, 44, 183, 71, 21, 96, 71, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c1c2e763e2e4ad8dfa3ed7f20390ba20, }, ), received_events: EventHandle { count: 4195898127060926288, key: EventKey( [ 206, 42, 228, 21, 98, 98, 215, 254, 138, 228, 31, 193, 230, 200, 26, 69, 55, 104, 92, 53, 232, 245, 74, 214, ], ), }, sent_events: EventHandle { count: 6611517753057275484, key: EventKey( [ 173, 91, 95, 14, 246, 198, 78, 203, 101, 222, 127, 85, 15, 160, 205, 9, 157, 160, 119, 168, 228, 66, 21, 133, ], ), }, sequence_number: 14393419357132565799, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(32d1a1fbcadffa9c77b8433fad37442fa0265251681c31549d3d4f8a226fc2c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671a147d3e7d0b4fe9c29a8f8a34cfb0ad751c80fc82ee0b2649f856000085f00797b056943518726b7c505c59e762dfa2493576544714d4cba81c6eb3a86ce96faff2653b7a30180eca3e850a23c86876db7a5dae99a9fe74bf72152bb00f78cabed9d0b39ee67c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f2144bd285ef0a8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 125, 62, 125, 11, 79, 233, 194, 154, 143, 138, 52, 207, 176, 173, 117, 28, 128, 252, 130, 238, 11, 38, 73, 248, 86, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3860806097011470469, key: EventKey( [ 114, 107, 124, 80, 92, 89, 231, 98, 223, 162, 73, 53, 118, 84, 71, 20, 212, 203, 168, 28, 110, 179, 168, 108, ], ), }, sent_events: EventHandle { count: 3493169770028560361, key: EventKey( [ 14, 202, 62, 133, 10, 35, 200, 104, 118, 219, 122, 93, 174, 153, 169, 254, 116, 191, 114, 21, 43, 176, 15, 120, ], ), }, sequence_number: 9000055400486780618, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33c2dcee45439f070294ae1ca9baa5a5debc80533074ce35a2a2bca29e7b7c9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155cabf0fd0acd3e1119f735087af704ef20e0c6b644c8d59e2a194fdeef29f9c4360fe4940f04bb068375a6ab12bec9079e68db3f0b19063ac1558067e3678190242dea009453e9a407c1e9f7e2b5dfecbe8ad7ed02e01d1b21bf5a314d3ce1039386478f1a4d700a27a42da36f8031618bf432621a5d4bb6abd76b6755031dc72099a1692403a92c3913fde67d478ae2b184d45c4453c671c0367f5a6d016dffbd7a687f64e3c67dc22979dbcca82b65b7d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889f9d893de02ba30 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 191, 15, 208, 172, 211, 225, 17, 159, 115, 80, 135, 175, 112, 78, 242, 14, 12, 107, 100, 76, 141, 89, 226, 161, 148, 253, 238, 242, 159, 156, 67, 96, 254, 73, 64, 240, 75, 176, 104, 55, 90, 106, 177, 43, 236, 144, 121, 230, 141, 179, 240, 177, 144, 99, 172, 21, 88, 6, 126, 54, 120, 25, 2, 66, 222, 160, 9, 69, 62, 154, 64, 124, 30, 159, 126, 43, 93, 254, 203, 232, 173, 126, 208, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d1b21bf5a314d3ce1039386478f1a4d7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1586384408238258850, key: EventKey( [ 191, 67, 38, 33, 165, 212, 187, 106, 189, 118, 182, 117, 80, 49, 220, 114, 9, 154, 22, 146, 64, 58, 146, 195, ], ), }, sent_events: EventHandle { count: 3147586043249573777, key: EventKey( [ 77, 69, 196, 69, 60, 103, 28, 3, 103, 245, 166, 208, 22, 223, 251, 215, 166, 135, 246, 78, 60, 103, 220, 34, ], ), }, sequence_number: 9033014150485024151, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(33c758ea22ce8a14bd17c6a4c3fc84c4799b7cabcf293ecd69fb95ccf538dc38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b467d3a2a248ec89ec534eb5a2b8de5ee9f858cb12253ad76640cab7c2a45fccdc5f8663d46651c40d3ed5eb6eafabdb0a3a1d74d18674f71ebf3860b9a7ca43de3f3f2d9441d014f5c0164ef6279056ed3593d7a1cd4e07710173f000142a8f7fcd014d94cc3477b2bda9fe393af001fdd0dc32d3d18005682ae934fcbddb933ffb3ba223b3ac6b59b75dd052fdaf26792a16c1f5f1918cff842e2bfcd7c54f423c514dbdeafcb26a76bb056ca9d96ee54ce1cc6604f512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ac0791af2cc0c240 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 125, 58, 42, 36, 142, 200, 158, 197, 52, 235, 90, 43, 141, 229, 238, 159, 133, 140, 177, 34, 83, 173, 118, 100, 12, 171, 124, 42, 69, 252, 205, 197, 248, 102, 61, 70, 101, 28, 64, 211, 237, 94, 182, 234, 250, 189, 176, 163, 161, 215, 77, 24, 103, 79, 113, 235, 243, 134, 11, 154, 124, 164, 61, 227, 243, 242, 217, 68, 29, 1, 79, 92, 1, 100, 239, 98, 121, 5, 110, 211, 89, 61, 122, 28, 212, 224, 119, 16, 23, 63, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42a8f7fcd014d94cc3477b2bda9fe393, }, ), received_events: EventHandle { count: 4408394074577371311, key: EventKey( [ 0, 86, 130, 174, 147, 79, 203, 221, 185, 51, 255, 179, 186, 34, 59, 58, 198, 181, 155, 117, 221, 5, 47, 218, ], ), }, sent_events: EventHandle { count: 1828214525163366386, key: EventKey( [ 207, 248, 66, 226, 191, 205, 124, 84, 244, 35, 197, 20, 219, 222, 175, 203, 38, 167, 107, 176, 86, 202, 157, 150, ], ), }, sequence_number: 5859008044235379950, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(347444d73df72cb58285ce57eed9cd25e8c03fe8838fbbdd3a3db28dccc9027d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a401474baa1521375a65e897ba48219a8f87a970f11376097bcfbdd1697b514bb0acae935bccf5b05947769e8c97668f682f63fdbe10e12a85e8a5216d900c28da4d21a150723b47a5980001d537826aeffd82b4c8e5b18ba58ba8acc521a008c13dff0c18f15476468f02a78e6014aafe3620480b377670ed31acc3600a63075bbb632a1f1888b7066c49f7cf0f0c4373226d7e4e4e5110bacdb1392805a7b94f1e8fdb82832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70808859977f71cbc63 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 170, 21, 33, 55, 90, 101, 232, 151, 186, 72, 33, 154, 143, 135, 169, 112, 241, 19, 118, 9, 123, 207, 189, 209, 105, 123, 81, 75, 176, 172, 174, 147, 91, 204, 245, 176, 89, 71, 118, 158, 140, 151, 102, 143, 104, 47, 99, 253, 190, 16, 225, 42, 133, 232, 165, 33, 109, 144, 12, 40, 218, 77, 33, 161, 80, 114, 59, 71, 165, 152, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d537826aeffd82b4c8e5b18ba58ba8ac, }, ), received_events: EventHandle { count: 936535146799047109, key: EventKey( [ 241, 84, 118, 70, 143, 2, 167, 142, 96, 20, 170, 254, 54, 32, 72, 11, 55, 118, 112, 237, 49, 172, 195, 96, ], ), }, sent_events: EventHandle { count: 2245717020534858506, key: EventKey( [ 136, 183, 6, 108, 73, 247, 207, 15, 12, 67, 115, 34, 109, 126, 78, 78, 81, 16, 186, 205, 177, 57, 40, 5, ], ), }, sequence_number: 9476377973676292519, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(34844e0140b027524ecb7f62b987a57a048ab16556e94370d99aca1a968b6624): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0162ba2d745c948b3705217497bcd274357fd2bbdb5c4015a0ffae3993460b1de492dc5bc2108220c8c452c89bb9c0a356d611373e182ab066139611e3d7f607e92a93fdaff90f80e522b29ea81168c7d9a0e657c6678f6431a7fe8041052c83631b908400011d8057b5f47c860996f8cc4a4d6995d3fa0d6b74d9bdd368189df7b7342ce4c6731e48256f7457e33374d02077e92ac37ba133b28633361b5a18f3d1a490b6bd0bad8bfaae498459c64a220e597d7f162ecdac27d0b5917aebc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708478a15b085dd969b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 45, 116, 92, 148, 139, 55, 5, 33, 116, 151, 188, 210, 116, 53, 127, 210, 187, 219, 92, 64, 21, 160, 255, 174, 57, 147, 70, 11, 29, 228, 146, 220, 91, 194, 16, 130, 32, 200, 196, 82, 200, 155, 185, 192, 163, 86, 214, 17, 55, 62, 24, 42, 176, 102, 19, 150, 17, 227, 215, 246, 7, 233, 42, 147, 253, 175, 249, 15, 128, 229, 34, 178, 158, 168, 17, 104, 199, 217, 160, 230, 87, 198, 103, 143, 100, 49, 167, 254, 128, 65, 5, 44, 131, 99, 27, 144, 132, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1d8057b5f47c860996f8cc4a4d6995d3, }, ), received_events: EventHandle { count: 7553589741689179642, key: EventKey( [ 157, 247, 183, 52, 44, 228, 198, 115, 30, 72, 37, 111, 116, 87, 227, 51, 116, 208, 32, 119, 233, 42, 195, 123, ], ), }, sent_events: EventHandle { count: 6492842882715759521, key: EventKey( [ 243, 209, 164, 144, 182, 189, 11, 173, 139, 250, 174, 73, 132, 89, 198, 74, 34, 14, 89, 125, 127, 22, 46, 205, ], ), }, sequence_number: 13973397035086260140, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3504dfb7d1d4f45539597cff480ad622706084d18f48aaf6077ddffdd34dbbfe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001432b5a22f5d02ef9d33dfdfd024d97864b09ed4c191042814efddb6b199fe8032d66462499e287cef42409fae3ffb0dc3038de5a40a7243bf3d67772e28ae5b8d628a020014051638dcb6df1ce6a6c7479064bdeb30092d9d89ff508ed4718aff601fb2de75c896a3783616b36892c7bae4c1647dfcb8653f8a15dbc0c7f10186e3c74a07b11a5f349068c4172fedf0357258d58ccccf50a7f33e338e29c379b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a6bf8176ec78e24 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 90, 34, 245, 208, 46, 249, 211, 61, 253, 253, 2, 77, 151, 134, 75, 9, 237, 76, 25, 16, 66, 129, 78, 253, 219, 107, 25, 159, 232, 3, 45, 102, 70, 36, 153, 226, 135, 206, 244, 36, 9, 250, 227, 255, 176, 220, 48, 56, 222, 90, 64, 167, 36, 59, 243, 214, 119, 114, 226, 138, 229, 184, 214, 40, 160, 32, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4051638dcb6df1ce6a6c7479064bdeb3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5182808597215107474, key: EventKey( [ 175, 246, 1, 251, 45, 231, 92, 137, 106, 55, 131, 97, 107, 54, 137, 44, 123, 174, 76, 22, 71, 223, 203, 134, ], ), }, sent_events: EventHandle { count: 1188682829813381203, key: EventKey( [ 110, 60, 116, 160, 123, 17, 165, 243, 73, 6, 140, 65, 114, 254, 223, 3, 87, 37, 141, 88, 204, 204, 245, 10, ], ), }, sequence_number: 11184580695028872063, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(35371b481baec549ada25ffdbfbd9efc92b32e83a7542ce925a108fb3f008f9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97013a5d9c54d5db7cda187a33db45c77c1fbfa4a9d0001c68eb4089c3710a925de8ffd6e44db3ce9b3109f1fd3145518f2acbd50b4fde4ddb7b4ed6d6f23d7c62c81f58fb5bcfef3f8a3fc2f67776c4a189a99ec72dfed7aa7a8c47445e888005678168b5238bded0683d15055031274992101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70853464a8467a2852a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 217, 197, 77, 93, 183, 205, 161, 135, 163, 61, 180, 92, 119, 193, 251, 250, 74, 157, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c68eb4089c3710a925de8ffd6e44db3c, }, ), received_events: EventHandle { count: 6130757125524206569, key: EventKey( [ 242, 172, 189, 80, 180, 253, 228, 221, 183, 180, 237, 109, 111, 35, 215, 198, 44, 129, 245, 143, 181, 188, 254, 243, ], ), }, sent_events: EventHandle { count: 5362792541361841144, key: EventKey( [ 154, 153, 236, 114, 223, 237, 122, 167, 168, 196, 116, 69, 232, 136, 0, 86, 120, 22, 139, 82, 56, 189, 237, 6, ], ), }, sequence_number: 11057482790626972035, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(364d4f80d268ea21f4b179d07bf209b8671b825a9b5e8c0febe414e04545dd2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101542b561766ce4e892cecd99fa905689d93244ac4ff6c358feaefebc79eba1e131b606e0342f3ac993ebc4556bb0706fcf1193952049475384f6d6f9d4b24101ac4dedbb601ce21bdc7f89b2f16885c024ed4028d6700015dcb6b0ee821cb3d86c8b9433e3051b337b7bb8d84c30a0d18e88e002c5d1acbf7eb94c41fe3d3ec9dcd361792c7b86c0545e9e148aefabb1c18ba664cbbc77b981b9b7fc850efa449a108b75bf9e352611c947911e014ae5c1f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70855c137f92581e129 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, 86, 23, 102, 206, 78, 137, 44, 236, 217, 159, 169, 5, 104, 157, 147, 36, 74, 196, 255, 108, 53, 143, 234, 239, 235, 199, 158, 186, 30, 19, 27, 96, 110, 3, 66, 243, 172, 153, 62, 188, 69, 86, 187, 7, 6, 252, 241, 25, 57, 82, 4, 148, 117, 56, 79, 109, 111, 157, 75, 36, 16, 26, 196, 222, 219, 182, 1, 206, 33, 189, 199, 248, 155, 47, 22, 136, 92, 2, 78, 212, 2, 141, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5dcb6b0ee821cb3d86c8b9433e3051b3, }, ), received_events: EventHandle { count: 939778446341158711, key: EventKey( [ 232, 142, 0, 44, 93, 26, 203, 247, 235, 148, 196, 31, 227, 211, 236, 157, 205, 54, 23, 146, 199, 184, 108, 5, ], ), }, sent_events: EventHandle { count: 2070524080160893253, key: EventKey( [ 186, 102, 76, 187, 199, 123, 152, 27, 155, 127, 200, 80, 239, 164, 73, 161, 8, 183, 91, 249, 227, 82, 97, 28, ], ), }, sequence_number: 2259872517714966932, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(36b2688efa4891eb548723992e0a4248b122c43fde856dcb4951534307140e84): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970133d05b0578710cde36b7c3a76b30fb3e4a4a76700018c20fb3dd3e39606cb6c7c5a10659c51afed85a9e1fd8d0e1855d0506f27e7d240e251c12bd69b10266f412502fb6c4d3bd61ce4e9683f042418aff82f112142d5d13e1d55778d77e3c1bdc2519a9cfb971d474d703501c5ebec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bf6eadaa43428d04 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 5, 176, 87, 135, 16, 205, 227, 107, 124, 58, 118, 179, 15, 179, 228, 164, 167, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8c20fb3dd3e39606cb6c7c5a10659c51, }, ), received_events: EventHandle { count: 1048773433900789167, key: EventKey( [ 85, 208, 80, 111, 39, 231, 210, 64, 226, 81, 193, 43, 214, 155, 16, 38, 111, 65, 37, 2, 251, 108, 77, 59, ], ), }, sent_events: EventHandle { count: 2595269005105437910, key: EventKey( [ 175, 248, 47, 17, 33, 66, 213, 209, 62, 29, 85, 119, 141, 119, 227, 193, 189, 194, 81, 154, 156, 251, 151, 29, ], ), }, sequence_number: 17071955421460188487, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(383c45ab0b219cb7718504232ccfd1e7bc8ff05fd84fa75af9dca5c08b81d997): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f7b3f6f491cddd8b3556cece08f87387cf93be0b3efdbb27463f1a4576d41e05490bbf697fed51aeaacfc63737eb8720000e43184ffcc056f1d1839108139a8a7b107b44587edc9f2f5008f89dfe2302c480bc64a816ea4ea8c6b18ecc7d8601d301fc1d11aebc69b7a59aab094ff9d230584566128b1b14834f11b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858f893410b18bbc2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 123, 63, 111, 73, 28, 221, 216, 179, 85, 108, 236, 224, 143, 135, 56, 124, 249, 59, 224, 179, 239, 219, 178, 116, 99, 241, 164, 87, 109, 65, 224, 84, 144, 187, 246, 151, 254, 213, 26, 234, 172, 252, 99, 115, 126, 184, 114, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2120920327533113828, key: EventKey( [ 57, 16, 129, 57, 168, 167, 177, 7, 180, 69, 135, 237, 201, 242, 245, 0, 143, 137, 223, 226, 48, 44, 72, 11, ], ), }, sent_events: EventHandle { count: 7749827050747284166, key: EventKey( [ 236, 199, 216, 96, 29, 48, 31, 193, 209, 26, 235, 198, 155, 122, 89, 170, 176, 148, 255, 157, 35, 5, 132, 86, ], ), }, sequence_number: 2013447995234789473, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(388bc517eb2b5cabd4d0c99b888ffdb9fa4301fa2525de33e9c1e909b2a8bcfd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131f191d374119d17f21424c88ba1c4414b9a8372ee629b6e7816713f379ca6218b9e5e96485fbeb61ede631540242a95d88c0001b534bbf0be7f7b271073408f91ce269eb94b60e881e62b65188ca7bff1f379b6a98c994da7fd160cbb3baddd8421f07d061fee521cf605be4318c1b049e536418b1d6f4017b08a8bdbc3b18d442274782780fe8ab73c77cda00d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c92a0f02433bbec8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 145, 211, 116, 17, 157, 23, 242, 20, 36, 200, 139, 161, 196, 65, 75, 154, 131, 114, 238, 98, 155, 110, 120, 22, 113, 63, 55, 156, 166, 33, 139, 158, 94, 150, 72, 95, 190, 182, 30, 222, 99, 21, 64, 36, 42, 149, 216, 140, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b534bbf0be7f7b271073408f91ce269e, }, ), received_events: EventHandle { count: 7290173867453074361, key: EventKey( [ 140, 167, 191, 241, 243, 121, 182, 169, 140, 153, 77, 167, 253, 22, 12, 187, 59, 173, 221, 132, 33, 240, 125, 6, ], ), }, sent_events: EventHandle { count: 4881345600711487007, key: EventKey( [ 193, 176, 73, 229, 54, 65, 139, 29, 111, 64, 23, 176, 138, 139, 219, 195, 177, 141, 68, 34, 116, 120, 39, 128, ], ), }, sequence_number: 982010630770232062, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(389a9f28b1d288a501367699416c15d401f11077ccc684a5cf5eeb19f6b8aad1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a013d2c2020a98cd09e47ddf2f53b7e1a3d0c37ff08fea6cf63ff679c3b6186d0a1b2092d3952230f64189e66b54e8d16d71eedbee49f71646f50048356bd4600005c16faec57a2914418c595b0347f2c4b653109d4691f79fd63859c8f79f8c4007850dfe5dca9cdb04f186dfa31aa2d6925ee34acafddf9d658caeb54ad1e045d69c815b3dec3aebf1d512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b2530df2f473041b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 44, 32, 32, 169, 140, 208, 158, 71, 221, 242, 245, 59, 126, 26, 61, 12, 55, 255, 8, 254, 166, 207, 99, 255, 103, 156, 59, 97, 134, 208, 161, 178, 9, 45, 57, 82, 35, 15, 100, 24, 158, 102, 181, 78, 141, 22, 215, 30, 237, 190, 228, 159, 113, 100, 111, 80, 4, 131, 86, 189, 70, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4940908764723811932, key: EventKey( [ 197, 149, 176, 52, 127, 44, 75, 101, 49, 9, 212, 105, 31, 121, 253, 99, 133, 156, 143, 121, 248, 196, 0, 120, ], ), }, sent_events: EventHandle { count: 5742315654336601936, key: EventKey( [ 109, 250, 49, 170, 45, 105, 37, 238, 52, 172, 175, 221, 249, 214, 88, 202, 235, 84, 173, 30, 4, 93, 105, 200, ], ), }, sequence_number: 5845038648728138517, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(38d18f241897c23eec2c9b305575401f333f51a075a57835ecf065bdbd566ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30156e527c982379b6c65cd61d555f91a03898f8b9d92d04fa813b985c46840b811ed31e5e9dfa40ec63fbd3a3a7a957a0c01bbbebf71385862b1bd99b7fbce960a3ceaaf4a6ae04a2f46b17b036cea7bf82361ed730211f9010437181d8e77d27772ff7371588a73d100d8fc51f48fb49a471889f5253a3acaa232fd7766ae46103271bb9c5c04522c986d13ef71b52e1d17151899b169acf00cc9d17af18d7ef9fe0c902ce7d6e217ab9d8c62dbde00ae20e3d32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d9ab649a98b1ed2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 229, 39, 201, 130, 55, 155, 108, 101, 205, 97, 213, 85, 249, 26, 3, 137, 143, 139, 157, 146, 208, 79, 168, 19, 185, 133, 196, 104, 64, 184, 17, 237, 49, 229, 233, 223, 164, 14, 198, 63, 189, 58, 58, 122, 149, 122, 12, 1, 187, 190, 191, 113, 56, 88, 98, 177, 189, 153, 183, 251, 206, 150, 10, 60, 234, 175, 74, 106, 224, 74, 47, 70, 177, 123, 3, 108, 234, 123, 248, 35, 97, 237, 115, 2, 17, 249, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0437181d8e77d27772ff7371588a73d1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5159634853478661336, key: EventKey( [ 137, 245, 37, 58, 58, 202, 162, 50, 253, 119, 102, 174, 70, 16, 50, 113, 187, 156, 92, 4, 82, 44, 152, 109, ], ), }, sent_events: EventHandle { count: 1519715485710675731, key: EventKey( [ 153, 177, 105, 172, 240, 12, 201, 209, 122, 241, 141, 126, 249, 254, 12, 144, 44, 231, 214, 226, 23, 171, 157, 140, ], ), }, sequence_number: 15268083093427116898, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(38e13cbd93e0868dd97e25e264210b3c56ee7378446853448f4901b220d8d4fd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417e04cd89a7aafaebf3aefc315a0ce99375ea91865d4fb96014cd571632d2d81ccccbab1d69518c9b2003c8458866b6fd81a18d17acb8df01ffe2e71ad08469c2594e2238a5eff771d57cb63970b4d5e861c761834c033cecfef328c021c2f4d99043db34a243906544c946a7257abbd1325506c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c9445edb16c4d14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 76, 216, 154, 122, 175, 174, 191, 58, 239, 195, 21, 160, 206, 153, 55, 94, 169, 24, 101, 212, 251, 150, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4cd571632d2d81ccccbab1d69518c9b2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1934418547561759804, key: EventKey( [ 209, 122, 203, 141, 240, 31, 254, 46, 113, 173, 8, 70, 156, 37, 148, 226, 35, 138, 94, 255, 119, 29, 87, 203, ], ), }, sent_events: EventHandle { count: 8510825135401047907, key: EventKey( [ 52, 192, 51, 206, 207, 239, 50, 140, 2, 28, 47, 77, 153, 4, 61, 179, 74, 36, 57, 6, 84, 76, 148, 106, ], ), }, sequence_number: 7804778920949798770, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(39273324e7de5118cc8977ae6b3ffe7445dd5a5d38c8c5ff43f8194964fd9d42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab013e168baaa5f0c074c3ed7af8c1fd6d4eb5e8bcb4e1b49305ab58a87b275ffb5369766d3292952d2810db5e07c51721c578ab7ab174c26284f0cd516e8f39fb01d67c3dbc985a2f4d724d8b474b8a7e6f016f84f921c2eb53183fbf56d37b13ad126a04247124b6633a18a108ac7db99f1331229121918064e0016e5cc1d650f82a5645b81245cbe7c077184ce23583049fc3edc3128d266fbce3e78801d0a928b1febfc1f2d5c5137d605c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859d21e449dcc03b7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 139, 170, 165, 240, 192, 116, 195, 237, 122, 248, 193, 253, 109, 78, 181, 232, 188, 180, 225, 180, 147, 5, 171, 88, 168, 123, 39, 95, 251, 83, 105, 118, 109, 50, 146, 149, 45, 40, 16, 219, 94, 7, 197, 23, 33, 197, 120, 171, 122, 177, 116, 194, 98, 132, 240, 205, 81, 110, 143, 57, 251, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d67c3dbc985a2f4d724d8b474b8a7e6f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6f84f921c2eb53183fbf56d37b13ad12, }, ), received_events: EventHandle { count: 4207406744527438954, key: EventKey( [ 161, 8, 172, 125, 185, 159, 19, 49, 34, 145, 33, 145, 128, 100, 224, 1, 110, 92, 193, 214, 80, 248, 42, 86, ], ), }, sent_events: EventHandle { count: 8629151746265102405, key: EventKey( [ 76, 226, 53, 131, 4, 159, 195, 237, 195, 18, 141, 38, 111, 188, 227, 231, 136, 1, 208, 169, 40, 177, 254, 191, ], ), }, sequence_number: 6656457773130576577, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(39779d047f834a3a64f287b63a3cb16ffb0b4c05be15048d8108b241212ce714): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f01321f6e454e3319a5b157d4688e30934bbe4e3f16a168122beb1e97cc0c750f03749870acd0f76434c9ce0cbdcb8feedead3bb272109b16668fdb55664565013e5142e56ef632607ea6ae2bb27b801800798b06bf911abc53182afb0e90b4aa3b04168b571f413fc0cb455eb9b8748e2e4e61fba6548d8ee56e18e2b8ec39ee8b6be19dbc413c4b99431b62dadbbdc9cdb6eb8e405a384e158a9c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e70f16e8a8176a60 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 50, 31, 110, 69, 78, 51, 25, 165, 177, 87, 212, 104, 142, 48, 147, 75, 190, 78, 63, 22, 161, 104, 18, 43, 235, 30, 151, 204, 12, 117, 15, 3, 116, 152, 112, 172, 208, 247, 100, 52, 201, 206, 12, 189, 203, 143, 238, 222, 173, 59, 178, 114, 16, 155, 22, 102, 143, 219, 85, 102, 69, 101, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3e5142e56ef632607ea6ae2bb27b8018, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6033726814047079289, key: EventKey( [ 42, 251, 14, 144, 180, 170, 59, 4, 22, 139, 87, 31, 65, 63, 192, 203, 69, 94, 185, 184, 116, 142, 46, 78, ], ), }, sent_events: EventHandle { count: 7990949851500575585, key: EventKey( [ 226, 184, 236, 57, 238, 139, 107, 225, 157, 188, 65, 60, 75, 153, 67, 27, 98, 218, 219, 189, 201, 205, 182, 235, ], ), }, sequence_number: 11279851642399899790, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3bd36a9ca13034db9f63d16b6778a7610ea6e245cdfed388f49d451b9223a42f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840137d46ca7672b638dc380745fcd4d140d7372c7e747f55223aa9e905239ada43f03d519b70768f5f85378a14cbab310e091bfa2365a2e96c800004b3655f31c6542401899aff47a7e1734d757f7ee666676113b19dadb0db931531e8f015a960a917b4e1840fbd81fc22cade751cdf4780df02ed02ee75997820734bbe1f6592a0623bcc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70886af91447e4eb4c3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 108, 167, 103, 43, 99, 141, 195, 128, 116, 95, 205, 77, 20, 13, 115, 114, 199, 231, 71, 245, 82, 35, 170, 158, 144, 82, 57, 173, 164, 63, 3, 213, 25, 183, 7, 104, 245, 248, 83, 120, 161, 76, 186, 179, 16, 224, 145, 191, 162, 54, 90, 46, 150, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4630374541906228811, key: EventKey( [ 153, 175, 244, 122, 126, 23, 52, 215, 87, 247, 238, 102, 102, 118, 17, 59, 25, 218, 219, 13, 185, 49, 83, 30, ], ), }, sent_events: EventHandle { count: 5655273231751971215, key: EventKey( [ 64, 251, 216, 31, 194, 44, 173, 231, 81, 205, 244, 120, 13, 240, 46, 208, 46, 231, 89, 151, 130, 7, 52, 187, ], ), }, sequence_number: 14392417018556577505, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c0fb48ff43b48f255fdaee46c2d0b285284f78377477f00476bc07a2cc05c43): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20155ea015e379f176430de580f6b3bcaa7e4a3fb6293491dd829496a87286e209871117117297dc1b3ecae78c50eb25400283a9063750a1f4eb97a620f4b70c4018689155ecee76e396e23e1f233586b87363b67fb5202000060f51822d1dab068189b24100c3e11825c94555495313750dcedf9cdff58a95177267849f0a51f3a1518e124c32db0f5a8af4cf1ed573d66ab1e009f392468a8ba28c10901bf2a9d8a012101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847d9d725bcb61eb3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 234, 1, 94, 55, 159, 23, 100, 48, 222, 88, 15, 107, 59, 202, 167, 228, 163, 251, 98, 147, 73, 29, 216, 41, 73, 106, 135, 40, 110, 32, 152, 113, 17, 113, 23, 41, 125, 193, 179, 236, 174, 120, 197, 14, 178, 84, 0, 40, 58, 144, 99, 117, 10, 31, 78, 185, 122, 98, 15, 75, 112, 196, 1, 134, 137, 21, 94, 206, 231, 110, 57, 110, 35, 225, 242, 51, 88, 107, 135, 54, 59, 103, 251, 82, 2, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7543769967600661856, key: EventKey( [ 155, 36, 16, 12, 62, 17, 130, 92, 148, 85, 84, 149, 49, 55, 80, 220, 237, 249, 205, 255, 88, 169, 81, 119, ], ), }, sent_events: EventHandle { count: 1529569821007116326, key: EventKey( [ 225, 36, 195, 45, 176, 245, 168, 175, 76, 241, 237, 87, 61, 102, 171, 30, 0, 159, 57, 36, 104, 168, 186, 40, ], ), }, sequence_number: 111073947742702017, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3c4ca9ed62106df5b82f8ff9323cf31cec2ea845e8920bc23fe7c5a1e756ae1a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99301469df5c205e2082de49d5baa5220973e5b509802045606e63065e9b2d3471d4f8ad623478673a1ef73d336bdb1cfcc781a94e4d90b6f34f689017323505857b9ab5fcc331f243d000073b7f8f933f9f054189699521e1761f2b86ce7eebe2ec5d540c9b17a8ec1038c4482013bedf1d6cd1a188d6ebfa45df6283493443e85edcae80dae133a192d9e33c7411aded5b759c13a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ab2648b41b4bffc5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 245, 194, 5, 226, 8, 45, 228, 157, 91, 170, 82, 32, 151, 62, 91, 80, 152, 2, 4, 86, 6, 230, 48, 101, 233, 178, 211, 71, 29, 79, 138, 214, 35, 71, 134, 115, 161, 239, 115, 211, 54, 189, 177, 207, 204, 120, 26, 148, 228, 217, 11, 111, 52, 246, 137, 1, 115, 35, 80, 88, 87, 185, 171, 95, 204, 51, 31, 36, 61, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6120665895228979059, key: EventKey( [ 150, 153, 82, 30, 23, 97, 242, 184, 108, 231, 238, 190, 46, 197, 213, 64, 201, 177, 122, 142, 193, 3, 140, 68, ], ), }, sent_events: EventHandle { count: 1931436149767340418, key: EventKey( [ 141, 110, 191, 164, 93, 246, 40, 52, 147, 68, 62, 133, 237, 202, 232, 13, 174, 19, 58, 25, 45, 158, 51, 199, ], ), }, sequence_number: 4233763770806966849, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ca2945874c5d7f2b33e6ed5b4e6a138faabac61580b8a3134b33febd97405be): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0fb1b61fb7cd1f741acee1d2afa02ad3000140fa7ae772eeb0d61acc62cbbabed899efc9fc6e5a84d14718e4ab0661d2d5f1b8f98aea054f72a2cd3d59c1c4569e77fbf84899973a605f5d18da7d31f743b34c1f18344476e30a7c314be17acf4e5824c9190b05674385f2be2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084e4f4c83a13fb709 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 182, 31, 183, 205, 31, 116, 26, 206, 225, 210, 175, 160, 42, 211, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 40fa7ae772eeb0d61acc62cbbabed899, }, ), received_events: EventHandle { count: 5175062970769394159, key: EventKey( [ 228, 171, 6, 97, 210, 213, 241, 184, 249, 138, 234, 5, 79, 114, 162, 205, 61, 89, 193, 196, 86, 158, 119, 251, ], ), }, sent_events: EventHandle { count: 6728202173082585336, key: EventKey( [ 218, 125, 49, 247, 67, 179, 76, 31, 24, 52, 68, 118, 227, 10, 124, 49, 75, 225, 122, 207, 78, 88, 36, 201, ], ), }, sequence_number: 13759206336107973401, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3cdd9f1bc66a12cecd1a058f364c15c9324a59f3e4cd9e5d9d6e4d81dc2efa69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d309dee408e4b960993a31d85877bbc1834e23097ff7696c8dcb8891361ec238f6365fe0460ce1bcbee5ffac1aaec5c3b5a0000e7b97af6a344187918da9fc61fb63445db3e6df9767fa8348e12c8b11872c12025521918115fcafc2018a52e02497d3a356cd67ea5b85ede43aa32b8c84391b1742438d3d8942cb99b242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1f0a7436915c4f7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 238, 64, 142, 75, 150, 9, 147, 163, 29, 133, 135, 123, 188, 24, 52, 226, 48, 151, 255, 118, 150, 200, 220, 184, 137, 19, 97, 236, 35, 143, 99, 101, 254, 4, 96, 206, 27, 203, 238, 95, 250, 193, 170, 236, 92, 59, 90, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8725799749035932135, key: EventKey( [ 218, 159, 198, 31, 182, 52, 69, 219, 62, 109, 249, 118, 127, 168, 52, 142, 18, 200, 177, 24, 114, 193, 32, 37, ], ), }, sent_events: EventHandle { count: 2376997213002275154, key: EventKey( [ 165, 46, 2, 73, 125, 58, 53, 108, 214, 126, 165, 184, 94, 222, 67, 170, 50, 184, 200, 67, 145, 177, 116, 36, ], ), }, sequence_number: 2637905607882494776, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ceb5d8a1979bc8d6e3dbdb856de099c04f7008ab8b90c65966761c717952dd1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950031adc9f0000283576f5b1422a06189acae81c328b5593e720a013fd83fafb4c8f6b9f7c13c555842c68c2232baf0418f8d2e1d9322bbae2d1ea734c58d10d1c7235a646adc6a323bb83e993755b7e9e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708397db5549c6023ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 220, 159, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 444240845344224552, key: EventKey( [ 154, 202, 232, 28, 50, 139, 85, 147, 231, 32, 160, 19, 253, 131, 250, 251, 76, 143, 107, 159, 124, 19, 197, 85, ], ), }, sent_events: EventHandle { count: 337535929661533316, key: EventKey( [ 248, 210, 225, 217, 50, 43, 186, 226, 209, 234, 115, 76, 88, 209, 13, 28, 114, 53, 166, 70, 173, 198, 163, 35, ], ), }, sequence_number: 11420666265609012155, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3ef34e3511b2a165ac3923c95ecfddeb5e25b2ed52fa5112f4a726df00906396): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9630665a9c042b8cb010ea74e1fd75e35bdff56194c6045ee140048b619f3b09775401897489e1625fc36df984292490e2819e3d411bd09372c401f779f6e323ed2333718859af119234164827715a18e7148af1795ec99f14257b8b9cd8105ed2cdaea882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812982c3d16ecdbea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 169, 192, 66, 184, 203, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0ea74e1fd75e35bdff56194c6045ee14, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4644785376951121480, key: EventKey( [ 151, 72, 158, 22, 37, 252, 54, 223, 152, 66, 146, 73, 14, 40, 25, 227, 212, 17, 189, 9, 55, 44, 64, 31, ], ), }, sent_events: EventHandle { count: 3977754060474195831, key: EventKey( [ 133, 154, 241, 25, 35, 65, 100, 130, 119, 21, 161, 142, 113, 72, 175, 23, 149, 236, 153, 241, 66, 87, 184, 185, ], ), }, sequence_number: 9865937820198470093, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(3fa1acd2f17fc8afe3838cf02ff751d14c63ab55d41836effc199b3505efe4e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101246c2a7f6531e7c9fe08c8f716b3e3776f2681a453c011f153f670c93736ed251a90b48d240001e3af68c9cfb83e436d77bfd0afbc16ed30859c6bcd989847183e08a10a7d2c0c7dca5957606ffc9d666a035e5af768710ba9bf9df5a2924f151891f7dde759f00006f28263167ee40d7d02899510333b69c54dcbc1bda67fa7552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822ac820d1642508e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 42, 127, 101, 49, 231, 201, 254, 8, 200, 247, 22, 179, 227, 119, 111, 38, 129, 164, 83, 192, 17, 241, 83, 246, 112, 201, 55, 54, 237, 37, 26, 144, 180, 141, 36, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e3af68c9cfb83e436d77bfd0afbc16ed, }, ), received_events: EventHandle { count: 5159041381194040624, key: EventKey( [ 62, 8, 161, 10, 125, 44, 12, 125, 202, 89, 87, 96, 111, 252, 157, 102, 106, 3, 94, 90, 247, 104, 113, 11, ], ), }, sent_events: EventHandle { count: 1535607226559741865, key: EventKey( [ 145, 247, 221, 231, 89, 240, 0, 6, 242, 130, 99, 22, 126, 228, 13, 125, 2, 137, 149, 16, 51, 59, 105, 197, ], ), }, sequence_number: 6172042168459447117, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(416b35e257bf6f0c8fa52aa74cfc8c20ef790e81749a75b8de4997f1bcb2fcca): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d200d1e41e9e3b3fe1997beab79544e7a2ecfa9ba453e81979aba0438c7e1160bb700016a165c95d17975666fb60d0c372df5f26b478efb734ff45f1897522c856a1328613648021298f7016639a820d940b6be26d09ac24e14890b3a189d1452930d170e653d665665336242fae5bab802aec14a7db6b644e13490426f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d5f11ab3f812e346 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 30, 65, 233, 227, 179, 254, 25, 151, 190, 171, 121, 84, 78, 122, 46, 207, 169, 186, 69, 62, 129, 151, 154, 186, 4, 56, 199, 225, 22, 11, 183, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6a165c95d17975666fb60d0c372df5f2, }, ), received_events: EventHandle { count: 6914238687480792939, key: EventKey( [ 151, 82, 44, 133, 106, 19, 40, 97, 54, 72, 2, 18, 152, 247, 1, 102, 57, 168, 32, 217, 64, 182, 190, 38, ], ), }, sent_events: EventHandle { count: 4182587399257365200, key: EventKey( [ 157, 20, 82, 147, 13, 23, 14, 101, 61, 102, 86, 101, 51, 98, 66, 250, 229, 186, 184, 2, 174, 193, 74, 125, ], ), }, sequence_number: 8017128843464980150, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(41b9979f7069eb621ce310e1f3d9e5042706271836e306156f7b90c3af37aa92): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01601f60682e23d4c29cdf384f11ba2df692243dcab3bdd915b98fad63d13166d6a7de66990a158428d46c8ef2b55b7b47121382f8cb894ba04e2d341ba7cdf25be56463285d9d71191a0729977a7aa9b2f1e5783041c194824a8f8d43032dbafd260000d8e6c7172b117b4d18df7a11a33e974694d63292024dc293fae27421864cef00433f44d07a1fdcf1231852c4994cc6d928519005238ea37a81e40b07e54d4805c366e06b9c69af17c3d02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708724ff9237abbafa3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 96, 104, 46, 35, 212, 194, 156, 223, 56, 79, 17, 186, 45, 246, 146, 36, 61, 202, 179, 189, 217, 21, 185, 143, 173, 99, 209, 49, 102, 214, 167, 222, 102, 153, 10, 21, 132, 40, 212, 108, 142, 242, 181, 91, 123, 71, 18, 19, 130, 248, 203, 137, 75, 160, 78, 45, 52, 27, 167, 205, 242, 91, 229, 100, 99, 40, 93, 157, 113, 25, 26, 7, 41, 151, 122, 122, 169, 178, 241, 229, 120, 48, 65, 193, 148, 130, 74, 143, 141, 67, 3, 45, 186, 253, 38, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5583075039836104408, key: EventKey( [ 223, 122, 17, 163, 62, 151, 70, 148, 214, 50, 146, 2, 77, 194, 147, 250, 226, 116, 33, 134, 76, 239, 0, 67, ], ), }, sent_events: EventHandle { count: 2590093288477312063, key: EventKey( [ 82, 196, 153, 76, 198, 217, 40, 81, 144, 5, 35, 142, 163, 122, 129, 228, 11, 7, 229, 77, 72, 5, 195, 102, ], ), }, sequence_number: 15042893222506163168, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4212499fb8c454aeba77baecbf950e89fa2b076da8c5285587606f00b052b2d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c50158c8e311837153d5f46cf5c520aa0739b311c189fdc98b4e7d5beb6ddcd6842a7c85e7d80416b79b12e47305ec6a975f793eaa6b8107aee14d73da0c3e3ecd7e4d140624b1e869a7b84208ff8bffb357374c95600a7b52af0c01489ff1a9b87d989585886f5b8b0a761c016c64b6f35dd8be0e553b85ccee8c4c341a61711d4bc1307a181527c5fe5d7dab7b2fe82c119721a4a2479218fe7b4fa5c8823492271ec83b02187f64fb2d90162d2a260f410b32a02ef9961c38bc0f082022fbac3c6c2ab2573a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70872c4e87cb2e50d45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 200, 227, 17, 131, 113, 83, 213, 244, 108, 245, 197, 32, 170, 7, 57, 179, 17, 193, 137, 253, 201, 139, 78, 125, 91, 235, 109, 220, 214, 132, 42, 124, 133, 231, 216, 4, 22, 183, 155, 18, 228, 115, 5, 236, 106, 151, 95, 121, 62, 170, 107, 129, 7, 174, 225, 77, 115, 218, 12, 62, 62, 205, 126, 77, 20, 6, 36, 177, 232, 105, 167, 184, 66, 8, 255, 139, 255, 179, 87, 55, 76, 149, 96, 10, 123, 82, 175, 12, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 489ff1a9b87d989585886f5b8b0a761c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6c64b6f35dd8be0e553b85ccee8c4c34, }, ), received_events: EventHandle { count: 8804749799869997338, key: EventKey( [ 21, 39, 197, 254, 93, 125, 171, 123, 47, 232, 44, 17, 151, 33, 164, 162, 71, 146, 24, 254, 123, 79, 165, 200, ], ), }, sent_events: EventHandle { count: 160942243540251778, key: EventKey( [ 127, 100, 251, 45, 144, 22, 45, 42, 38, 15, 65, 11, 50, 160, 46, 249, 150, 28, 56, 188, 15, 8, 32, 34, ], ), }, sequence_number: 4204024672447933691, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(425839c5dfcc6b89ad7d150b74a6714de7c34e30d1da61fc4389bb823ef18c99): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f1256cf1d3bad5df4379040702b999b9f86090cd70d6994851720dac4857ec04f8d7e16f20d3b79cbc73893121745d00000673ed3b734e6be0718e257f89a37bb607501f139c20266c2f3e0bb22ce860e70430ceed6da3e894a4f186af0ecac020ded5062f27dc4178588ec5391d734b3cb1674f17a50c3db6974922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f36b5ac3b8abca1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 18, 86, 207, 29, 59, 173, 93, 244, 55, 144, 64, 112, 43, 153, 155, 159, 134, 9, 12, 215, 13, 105, 148, 133, 23, 32, 218, 196, 133, 126, 192, 79, 141, 126, 22, 242, 13, 59, 121, 203, 199, 56, 147, 18, 23, 69, 208, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 558136517937282663, key: EventKey( [ 226, 87, 248, 154, 55, 187, 96, 117, 1, 241, 57, 194, 2, 102, 194, 243, 224, 187, 34, 206, 134, 14, 112, 67, ], ), }, sent_events: EventHandle { count: 5713529980325391884, key: EventKey( [ 106, 240, 236, 172, 2, 13, 237, 80, 98, 242, 125, 196, 23, 133, 136, 236, 83, 145, 215, 52, 179, 203, 22, 116, ], ), }, sequence_number: 10553176219431500529, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42dfa857b84432610ac1b6e9abaec09219f185caa9f568ea19d0caf390c20e0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c952052f74da63a90000bc6ba0cb18c5e32518a3889dded719e4295743f7f752f71d8dcb709c6478fd08eb43131fa4d0e30f4718755e19fbe228be994e149617c11def1882854524dcd320c0f5b4f31e08708a5d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d494b3e16514797 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 116, 218, 99, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2730242509402827708, key: EventKey( [ 163, 136, 157, 222, 215, 25, 228, 41, 87, 67, 247, 247, 82, 247, 29, 141, 203, 112, 156, 100, 120, 253, 8, 235, ], ), }, sent_events: EventHandle { count: 5120561786589745987, key: EventKey( [ 117, 94, 25, 251, 226, 40, 190, 153, 78, 20, 150, 23, 193, 29, 239, 24, 130, 133, 69, 36, 220, 211, 32, 192, ], ), }, sequence_number: 6740322972494705909, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(42fed243612262732eaa929a210108f33403f85d93ec531318f3abc130ee72b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01328e913c6df04e2687b4663c1fceb84271c51527b77ccc32caf78431223f6b48be1056370a5d1aac38988aadfa55106dc248ce01220ca3ced6b0fb4756c88522891d12270129b4f2b68e875eb009f7038e7ac26d531aa39969ef9caa2f18bbca2c720f0913270d6be325872cf59f7ac90207afd642c4f7d8fbeebf76215218c9cd9d7906132fb1cb3db9167f56c82867d39e065d22bc31a773985192ad88872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081bfc7bf50b142258 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 145, 60, 109, 240, 78, 38, 135, 180, 102, 60, 31, 206, 184, 66, 113, 197, 21, 39, 183, 124, 204, 50, 202, 247, 132, 49, 34, 63, 107, 72, 190, 16, 86, 55, 10, 93, 26, 172, 56, 152, 138, 173, 250, 85, 16, 109, 194, 72, 206, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 220ca3ced6b0fb4756c88522891d1227, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 29b4f2b68e875eb009f7038e7ac26d53, }, ), received_events: EventHandle { count: 3434730217906217754, key: EventKey( [ 187, 202, 44, 114, 15, 9, 19, 39, 13, 107, 227, 37, 135, 44, 245, 159, 122, 201, 2, 7, 175, 214, 66, 196, ], ), }, sent_events: EventHandle { count: 5918141952061855991, key: EventKey( [ 201, 205, 157, 121, 6, 19, 47, 177, 203, 61, 185, 22, 127, 86, 200, 40, 103, 211, 158, 6, 93, 34, 188, 49, ], ), }, sequence_number: 9766246635898696615, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(434dab447dde9399667adc22a2c9598b81f2c98cafb8d6102fe383c65048172c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd016094bc16d85e61e358a9c10526df4075c8190f669d2d10c22b3638da8c9409b4e09ea7741f137f049f930e91ba0a72f7175a0a52571778831b3478119aa49b8fe0b328ecfc674cc17dccc4efd44ddabe346d2bcb275caf2ba34d5664c8dbe8e029012f8d6101f6cbb3434c4ea6da7983e0a001f206135435bcd4bf918b82dbf7748f3ca3a3c73680ff532f187be45a49950c6b617e03983a07fec2a160504f7179994453d78b68823b3ee21e18e081e5b7d9ed12026f10db5c57b642ac958cc7dcfacb7006b1224fe2730abb832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bf4f28b5a6e4f139 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 188, 22, 216, 94, 97, 227, 88, 169, 193, 5, 38, 223, 64, 117, 200, 25, 15, 102, 157, 45, 16, 194, 43, 54, 56, 218, 140, 148, 9, 180, 224, 158, 167, 116, 31, 19, 127, 4, 159, 147, 14, 145, 186, 10, 114, 247, 23, 90, 10, 82, 87, 23, 120, 131, 27, 52, 120, 17, 154, 164, 155, 143, 224, 179, 40, 236, 252, 103, 76, 193, 125, 204, 196, 239, 212, 77, 218, 190, 52, 109, 43, 203, 39, 92, 175, 43, 163, 77, 86, 100, 200, 219, 232, 224, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2f8d6101f6cbb3434c4ea6da7983e0a0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f206135435bcd4bf918b82dbf7748f3c, }, ), received_events: EventHandle { count: 3410350268989547427, key: EventKey( [ 123, 228, 90, 73, 149, 12, 107, 97, 126, 3, 152, 58, 7, 254, 194, 161, 96, 80, 79, 113, 121, 153, 68, 83, ], ), }, sent_events: EventHandle { count: 2225409591186328535, key: EventKey( [ 224, 129, 229, 183, 217, 237, 18, 2, 111, 16, 219, 92, 87, 182, 66, 172, 149, 140, 199, 220, 250, 203, 112, 6, ], ), }, sequence_number: 9492192132447806129, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43a20882020ec53b23fe3e460c98c8a8c44a9f87ad9df8cac3ff1684927d3ec0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0eb8b4ed77d176a7f448bfa673370f010269334797c5230ffdd39ce14ec2d25c003457672d860081711826f89207f13423f21f6182a0ba45a2d1d3c8cd3c73ce2ca55bdc40616ade43491889a71263e78ad04bfdc237aac3e7ce92a4e6b45fa3e7ca70121b3e8276ca1f742101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708448c4c5117798d12 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 180, 237, 119, 209, 118, 167, 244, 72, 191, 166, 115, 55, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0269334797c5230ffdd39ce14ec2d25c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8178818974568896308, key: EventKey( [ 38, 248, 146, 7, 241, 52, 35, 242, 31, 97, 130, 160, 186, 69, 162, 209, 211, 200, 205, 60, 115, 206, 44, 165, ], ), }, sent_events: EventHandle { count: 5279307736687893595, key: EventKey( [ 137, 167, 18, 99, 231, 138, 208, 75, 253, 194, 55, 170, 195, 231, 206, 146, 164, 230, 180, 95, 163, 231, 202, 112, ], ), }, sequence_number: 8367629243017730834, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43c3138fca822f266aa246ab55d9d3a1e1f73681fc1fa26226a8bb6b5d4e3ee6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94f020636000064d1f5eab55fbb1918ba039c177862e3551c4f30e854f735a3b23e298a9295cc1d87745178ef15ea75186dabcacec64e69b364840722814159dafb074b39445b9f7f56192ba453f2747e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089293b92629c17c2c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 54, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1854180906528788836, key: EventKey( [ 186, 3, 156, 23, 120, 98, 227, 85, 28, 79, 48, 232, 84, 247, 53, 163, 178, 62, 41, 138, 146, 149, 204, 29, ], ), }, sent_events: EventHandle { count: 8496627765247833223, key: EventKey( [ 109, 171, 202, 206, 198, 78, 105, 179, 100, 132, 7, 34, 129, 65, 89, 218, 251, 7, 75, 57, 68, 91, 159, 127, ], ), }, sequence_number: 9112174387127851350, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(43f751c839261175ce4e2158d471b8302dee0ae798f1e91a8fe1cc2e80206e68): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306fc98fbabe0e300011e6885ea0b06eeaffc2b21e6622c34fd0cd321d831705a4c18a482d3e6dc1e5fa88839529be0cdff6d894733460d9f3c979c1540eda4878e4718632dd93e131eaa3f0d0142f3a2925706bcf75aca45facc8d1ea21a09cc18fb472101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c00175895d82f3b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 252, 152, 251, 171, 224, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e6885ea0b06eeaffc2b21e6622c34fd, }, ), received_events: EventHandle { count: 5501833254168285964, key: EventKey( [ 164, 130, 211, 230, 220, 30, 95, 168, 136, 57, 82, 155, 224, 205, 255, 109, 137, 71, 51, 70, 13, 159, 60, 151, ], ), }, sent_events: EventHandle { count: 5156207765810582940, key: EventKey( [ 99, 45, 217, 62, 19, 30, 170, 63, 13, 1, 66, 243, 162, 146, 87, 6, 188, 247, 90, 202, 69, 250, 204, 141, ], ), }, sequence_number: 5186766660452393502, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(44215750ddb7ab107ea87e5991fe5470c898f2c1e49dc3c4f94b5dafda5ce14e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b10154fd1ad264329a0f307f331d86d978a9f1aa588d76144aa72107372a0a22380d13e7b3945e21c2a498ae0ebe5df89c58a45084284e122921c7c9604b43da3d03832a7f413cd22e235bc245b65671bb9414c61c167000019d25e7029057b9aa2eea30a3296e111d4eaaefb38b21ec05180e454dfd7e219ceb99c3dbc3d04ba0e995153395b2a3c855b6479b6d33deb77a18588e8216fe2107a92c5a2e0f6f85d1eda9264d67a33025933f66d7422941edf42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e91d9444e74b2d05 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 26, 210, 100, 50, 154, 15, 48, 127, 51, 29, 134, 217, 120, 169, 241, 170, 88, 141, 118, 20, 74, 167, 33, 7, 55, 42, 10, 34, 56, 13, 19, 231, 179, 148, 94, 33, 194, 164, 152, 174, 14, 190, 93, 248, 156, 88, 164, 80, 132, 40, 78, 18, 41, 33, 199, 201, 96, 75, 67, 218, 61, 3, 131, 42, 127, 65, 60, 210, 46, 35, 91, 194, 69, 182, 86, 113, 187, 148, 20, 198, 28, 22, 112, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9d25e7029057b9aa2eea30a3296e111d, }, ), received_events: EventHandle { count: 426752948596353614, key: EventKey( [ 14, 69, 77, 253, 126, 33, 156, 235, 153, 195, 219, 195, 208, 75, 160, 233, 149, 21, 51, 149, 178, 163, 200, 85, ], ), }, sent_events: EventHandle { count: 8842780705828849590, key: EventKey( [ 88, 142, 130, 22, 254, 33, 7, 169, 44, 90, 46, 15, 111, 133, 209, 237, 169, 38, 77, 103, 163, 48, 37, 147, ], ), }, sequence_number: 17648834160205719103, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4532a3f66c0970bea2224133babb2c7eab547b464c2e4f4078174490cc1ff102): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f2272e0893ae4c7c93996396ad1e8bc55d76f28c27f0ece15f6fe1509640c51078d580b01ee61355050b02ae47afbda046334f02400ce58b84e15f04a4018f63845af2e8bef8ce509be9296279a675ae53135b21bd11c24086eedaae08843181c4a93d987db03f054ae01bf6910ffb0ccbdd48df5bf5814df6164060e89786f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70837609ce4a6ceff9c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 224, 137, 58, 228, 199, 201, 57, 150, 57, 106, 209, 232, 188, 85, 215, 111, 40, 194, 127, 14, 206, 21, 246, 254, 21, 9, 100, 12, 81, 7, 141, 88, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ee61355050b02ae47afbda046334f024, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4632779141009660110, key: EventKey( [ 246, 56, 69, 175, 46, 139, 239, 140, 229, 9, 190, 146, 150, 39, 154, 103, 90, 229, 49, 53, 178, 27, 209, 28, ], ), }, sent_events: EventHandle { count: 4866386422106294308, key: EventKey( [ 28, 74, 147, 217, 135, 219, 3, 240, 84, 174, 1, 191, 105, 16, 255, 176, 204, 189, 212, 141, 245, 191, 88, 20, ], ), }, sequence_number: 8032320628745069023, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4625f8ba1ce56eafcf562f58e9a54dade488c5d892a2efe0df499ea0c9407e38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015a5c2fc4c8c1fe05eebbda65b46a6480f0107eb624b22f32134fa13027062106eae0131f91afbc9aef7aa8946eda5bf258fad06ef4c6b5e16e466c56deaca8234a000d8ab22ceab2b3b80f15cd82564fe2a02622496172b683ffd400000d7c1ebd16cf6b71183948b5f90f3aefe4c75ce783839b9811d7c297111496fa011cf467cc6961765018cf0c01eaa823b05f736fa4b783f593a4949bc1e4ec71249707656328ad3632ec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708698b1f9d7031b131 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 92, 47, 196, 200, 193, 254, 5, 238, 187, 218, 101, 180, 106, 100, 128, 240, 16, 126, 182, 36, 178, 47, 50, 19, 79, 161, 48, 39, 6, 33, 6, 234, 224, 19, 31, 145, 175, 188, 154, 239, 122, 168, 148, 110, 218, 91, 242, 88, 250, 208, 110, 244, 198, 181, 225, 110, 70, 108, 86, 222, 172, 168, 35, 74, 0, 13, 138, 178, 44, 234, 178, 179, 184, 15, 21, 205, 130, 86, 79, 226, 160, 38, 34, 73, 97, 114, 182, 131, 255, 212, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8172853645363018765, key: EventKey( [ 57, 72, 181, 249, 15, 58, 239, 228, 199, 92, 231, 131, 131, 155, 152, 17, 215, 194, 151, 17, 20, 150, 250, 1, ], ), }, sent_events: EventHandle { count: 5797928677314917404, key: EventKey( [ 207, 12, 1, 234, 168, 35, 176, 95, 115, 111, 164, 183, 131, 245, 147, 164, 148, 155, 193, 228, 236, 113, 36, 151, ], ), }, sequence_number: 17019726059121370375, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(46ef402d1769d5d8af9cb01c91e787fb0a3c10a979f3cf38544b65a86aff90f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015901cd41229bb68118314ec03a0725ecdd959499d00571b2f0992f901da5f91bacce518c71258aed951274af7c1f90e61bafd565df992efbb5b90e45b50c311f51c99f02cafa2c737be296e6eb1239f78706dcde0b94de094eb801aedde56cca29b2c3b8e49fe82c8c26eb007b0c0b0b3bfd097a18c331b6a43ccb254b374c546924e38e8dc2bda958dc95677cd411706d15ce794d18492656218a33c934d86e83bb64feb53e952896e44722f5958661820ac60d9ebd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70895c01fbfe664e1b0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 205, 65, 34, 155, 182, 129, 24, 49, 78, 192, 58, 7, 37, 236, 221, 149, 148, 153, 208, 5, 113, 178, 240, 153, 47, 144, 29, 165, 249, 27, 172, 206, 81, 140, 113, 37, 138, 237, 149, 18, 116, 175, 124, 31, 144, 230, 27, 175, 213, 101, 223, 153, 46, 251, 181, 185, 14, 69, 181, 12, 49, 31, 81, 201, 159, 2, 202, 250, 44, 115, 123, 226, 150, 230, 235, 18, 57, 247, 135, 6, 220, 222, 11, 148, 222, 9, 78, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: aedde56cca29b2c3b8e49fe82c8c26eb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8793838177447775355, key: EventKey( [ 195, 49, 182, 164, 60, 203, 37, 75, 55, 76, 84, 105, 36, 227, 142, 141, 194, 189, 169, 88, 220, 149, 103, 124, ], ), }, sent_events: EventHandle { count: 5582719804528136660, key: EventKey( [ 73, 38, 86, 33, 138, 51, 201, 52, 216, 110, 131, 187, 100, 254, 181, 62, 149, 40, 150, 228, 71, 34, 245, 149, ], ), }, sequence_number: 13663373463719666054, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4861d3af2dc8d6b8fae3dcc9e8ef2823540a325610596ab17e3e3ede74740c52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988012b031f453f60bfa1e685e8f5dbfbd71bd768e8b23edaaac9709bc7721dfa089de663769e961130322c16915000014d11a09a591c33318f80416f6ae57404a9c786ec2de50f42183140ac9d935bb2983f600ec5c714ea812e065a6e55a98c489af7e0465bb8950118c4b87b5cd340f26584682907ba1f8022f6d016bda3820de68799fcc63f1088f72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea3df973a5590381 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 3, 31, 69, 63, 96, 191, 161, 230, 133, 232, 245, 219, 251, 215, 27, 215, 104, 232, 178, 62, 218, 170, 201, 112, 155, 199, 114, 29, 250, 8, 157, 230, 99, 118, 158, 150, 17, 48, 50, 44, 22, 145, 80, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4d11a09a591c33318f80416f6ae57404, }, ), received_events: EventHandle { count: 4760275316558448553, key: EventKey( [ 49, 64, 172, 157, 147, 91, 178, 152, 63, 96, 14, 197, 199, 20, 234, 129, 46, 6, 90, 110, 85, 169, 140, 72, ], ), }, sent_events: EventHandle { count: 114200067738498970, key: EventKey( [ 196, 184, 123, 92, 211, 64, 242, 101, 132, 104, 41, 7, 186, 31, 128, 34, 246, 208, 22, 189, 163, 130, 13, 230, ], ), }, sequence_number: 17836524190308276615, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4878bf74ac42b83c10089b6db00fbd759d53545c0e9e18db6a0f402f51611c67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae016142101b2a75502111d1749accd1adaf62d31ed174b5703b8d6af32db54f935125d9aa989110be169a4fd12a8ddb262e55806d457bb555042b71543effa77a7c4620b0b9e9336d262b3de3f29ad6d82a7a2c077df4604caec5adaaf66779ef86c4fd0000dea34198a939c601182e72961dc677b2b9a187bed896983761ebc58bc22a60a02f7de0edef2bf34770185d254f4db40b1435be641741e0d448eebfaa443ed3863ab6a7070b9d7cf660182101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843c02975c6a78a9f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 16, 27, 42, 117, 80, 33, 17, 209, 116, 154, 204, 209, 173, 175, 98, 211, 30, 209, 116, 181, 112, 59, 141, 106, 243, 45, 181, 79, 147, 81, 37, 217, 170, 152, 145, 16, 190, 22, 154, 79, 209, 42, 141, 219, 38, 46, 85, 128, 109, 69, 123, 181, 85, 4, 43, 113, 84, 62, 255, 167, 122, 124, 70, 32, 176, 185, 233, 51, 109, 38, 43, 61, 227, 242, 154, 214, 216, 42, 122, 44, 7, 125, 244, 96, 76, 174, 197, 173, 170, 246, 103, 121, 239, 134, 196, 253, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 127853039993332702, key: EventKey( [ 46, 114, 150, 29, 198, 119, 178, 185, 161, 135, 190, 216, 150, 152, 55, 97, 235, 197, 139, 194, 42, 96, 160, 47, ], ), }, sent_events: EventHandle { count: 8090702625628872829, key: EventKey( [ 93, 37, 79, 77, 180, 11, 20, 53, 190, 100, 23, 65, 224, 212, 72, 238, 191, 170, 68, 62, 211, 134, 58, 182, ], ), }, sequence_number: 1756674869745616807, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(48ae0780da473380112ff19bec86e55bce27cabb90c6b67890f7132b6edd25d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce0161593100725b84a7a906a45049dc4baf6520dce0dc9a386e4df4138861dfc21f4f7e5e99912baa22117283d97940031bd51ffce517adc556cb4973b24c9ca9651274c27fab826f552f8dbff3e25f58813ae6dd4a0eb24a2c4a2ef081529eccf2cf4f0124f68f88ba3a207da58e4f6a230ec55d01f4156f47935bdfad41c4fe8b1852c2c59434d56943d2c33518ed92a572ef51a057bf448c5980f704df5e2a29422a5ffd6b885f5df0241f9139187337683cbb2651dfc06ae2c17261bd09a38c0c27c04b790a9998bde323d41cbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ffee2612d0736963 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 89, 49, 0, 114, 91, 132, 167, 169, 6, 164, 80, 73, 220, 75, 175, 101, 32, 220, 224, 220, 154, 56, 110, 77, 244, 19, 136, 97, 223, 194, 31, 79, 126, 94, 153, 145, 43, 170, 34, 17, 114, 131, 217, 121, 64, 3, 27, 213, 31, 252, 229, 23, 173, 197, 86, 203, 73, 115, 178, 76, 156, 169, 101, 18, 116, 194, 127, 171, 130, 111, 85, 47, 141, 191, 243, 226, 95, 88, 129, 58, 230, 221, 74, 14, 178, 74, 44, 74, 46, 240, 129, 82, 158, 204, 242, 207, 79, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24f68f88ba3a207da58e4f6a230ec55d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f4156f47935bdfad41c4fe8b1852c2c5, }, ), received_events: EventHandle { count: 3874171291448980628, key: EventKey( [ 237, 146, 165, 114, 239, 81, 160, 87, 191, 68, 140, 89, 128, 247, 4, 223, 94, 42, 41, 66, 42, 95, 253, 107, ], ), }, sent_events: EventHandle { count: 4148130975296872328, key: EventKey( [ 115, 55, 104, 60, 187, 38, 81, 223, 192, 106, 226, 193, 114, 97, 189, 9, 163, 140, 12, 39, 192, 75, 121, 10, ], ), }, sequence_number: 13626999823126075545, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(494b882849876126e3f4790c1fcd54eccb6d24a1b0057c67122b5179259a4833): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690ce073ed836c853c09233fed0c00012d26194e984a0f262277b7a0ae360d096f7adca3c0186033184c80b4da28791285603d366517808850603295327b33bae46d4e7e4abee8cb721837b0d800dacb271fd9ceab772241540c4a06b1565417bf408520b8d5b55e0a092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f46eee9e524f4167 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 115, 237, 131, 108, 133, 60, 9, 35, 63, 237, 12, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2d26194e984a0f262277b7a0ae360d09, }, ), received_events: EventHandle { count: 3701986109360470639, key: EventKey( [ 76, 128, 180, 218, 40, 121, 18, 133, 96, 61, 54, 101, 23, 128, 136, 80, 96, 50, 149, 50, 123, 51, 186, 228, ], ), }, sent_events: EventHandle { count: 8271961044587269741, key: EventKey( [ 55, 176, 216, 0, 218, 203, 39, 31, 217, 206, 171, 119, 34, 65, 84, 12, 74, 6, 177, 86, 84, 23, 191, 64, ], ), }, sequence_number: 651437231176163461, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4952a238e51141464bb95d7da9bbbab72e785d4703fd2a820ee749d9c55fb040): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137028431caf15b3d790c2f3ea2df42c2733a9d81700264f9cea63b1157cab1be739c1cde68de6e7a6a45088526829927d8c154ec8938290d013903e0b5f0516b17a6a1af0ee49a4cfb01fb071b8b43dad213a5070268bfc58e94bd3d01930323ca291828e6faae8deb9465adf7ceac2947c306727bef26a23fea362ec416f4b4b97136180ad9644797a4fc3dab4563da8dd3a2f66b4d77b74096805994d45710c0e488b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0cede8863baab44 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 2, 132, 49, 202, 241, 91, 61, 121, 12, 47, 62, 162, 223, 66, 194, 115, 58, 157, 129, 112, 2, 100, 249, 206, 166, 59, 17, 87, 202, 177, 190, 115, 156, 28, 222, 104, 222, 110, 122, 106, 69, 8, 133, 38, 130, 153, 39, 216, 193, 84, 236, 137, 56, 41, 13, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3903e0b5f0516b17a6a1af0ee49a4cfb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fb071b8b43dad213a5070268bfc58e94, }, ), received_events: EventHandle { count: 3011257799108804029, key: EventKey( [ 40, 230, 250, 174, 141, 235, 148, 101, 173, 247, 206, 172, 41, 71, 195, 6, 114, 123, 239, 38, 162, 63, 234, 54, ], ), }, sent_events: EventHandle { count: 3923120937256797230, key: EventKey( [ 10, 217, 100, 71, 151, 164, 252, 61, 171, 69, 99, 218, 141, 211, 162, 246, 107, 77, 119, 183, 64, 150, 128, 89, ], ), }, sequence_number: 12792726255104939156, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(498fcdd6b0ee71faf484bb9e19c431e54eb4499af4ccf595ceac83ca5c155776): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c960034bd8d30001227716984d704d501404dca263c8b678297b9029a4f52f5f18e28c12dfdb319fb97f6aa6b6619596f995f2f868753ff391bac8370062d73c1b1892715bc5fba5b1ce98e2e0f3c7606075814c79bd87d12ed52d3bfd577357d2a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708453307d3d4e7e15e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 216, 211, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 227716984d704d501404dca263c8b678, }, ), received_events: EventHandle { count: 6858970842929330985, key: EventKey( [ 226, 140, 18, 223, 219, 49, 159, 185, 127, 106, 166, 182, 97, 149, 150, 249, 149, 242, 248, 104, 117, 63, 243, 145, ], ), }, sent_events: EventHandle { count: 1962680353537116346, key: EventKey( [ 146, 113, 91, 197, 251, 165, 177, 206, 152, 226, 224, 243, 199, 96, 96, 117, 129, 76, 121, 189, 135, 209, 46, 213, ], ), }, sequence_number: 11660478538124704557, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(49b6c782744ef3f05aa901d1db930dcfe5442d2bc41bdf378e96f40a295bee07): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c012f2fb50d33e539790c562af9e34e4396353913c5f8ec549e04b269e27e5aacb403d560731f28e9602736f4419feb2f9600011580fe0bbc46e24f2d68c111d1d0b51753fdea85012058281889d952cc3ff98c283bfc4823e6bb8e138c3efe213e5f2ce18896ff5e93bceb1c18d0791c5188ae5e13a3ea606f0805d2ff62940606e98723f6fe309ad9f76fa0e82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826a152c8aaeb498d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 181, 13, 51, 229, 57, 121, 12, 86, 42, 249, 227, 78, 67, 150, 53, 57, 19, 197, 248, 236, 84, 158, 4, 178, 105, 226, 126, 90, 172, 180, 3, 213, 96, 115, 31, 40, 233, 96, 39, 54, 244, 65, 159, 235, 47, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1580fe0bbc46e24f2d68c111d1d0b517, }, ), received_events: EventHandle { count: 2907108750381481299, key: EventKey( [ 137, 217, 82, 204, 63, 249, 140, 40, 59, 252, 72, 35, 230, 187, 142, 19, 140, 62, 254, 33, 62, 95, 44, 225, ], ), }, sent_events: EventHandle { count: 2083966593729009288, key: EventKey( [ 208, 121, 28, 81, 136, 174, 94, 19, 163, 234, 96, 111, 8, 5, 210, 255, 98, 148, 6, 6, 233, 135, 35, 246, ], ), }, sequence_number: 16762520923371352318, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4abe5929961902c579ea9872e39c4bb45fe0368148851c7dabfe7510980d4d01): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af01429399468505f40d5e15945d4a03c32d516ad61bfa95a530bca272f73bec0496c9215ceacf628c9db3812b3a019cceb73002ca34aef0f3ff42a1a4f56460d674213b2e01b35c98cc4680a3d0234a290acea1a63e016db3743b01705136fe07c9cfe57b814404786de5f4f0e47f18ff8ae58994462696157ca624cd5ff0380f52baa2d3b4b8a1919bb6aa566e995d18eadd3b38e05fe04b6a06c0c46d1e10572fd22602b9807e85d4b278dc31de9ee32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b63518c86470315d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 153, 70, 133, 5, 244, 13, 94, 21, 148, 93, 74, 3, 195, 45, 81, 106, 214, 27, 250, 149, 165, 48, 188, 162, 114, 247, 59, 236, 4, 150, 201, 33, 92, 234, 207, 98, 140, 157, 179, 129, 43, 58, 1, 156, 206, 183, 48, 2, 202, 52, 174, 240, 243, 255, 66, 161, 164, 245, 100, 96, 214, 116, 33, 59, 46, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b35c98cc4680a3d0234a290acea1a63e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6db3743b01705136fe07c9cfe57b8144, }, ), received_events: EventHandle { count: 9215755672118720516, key: EventKey( [ 255, 138, 229, 137, 148, 70, 38, 150, 21, 124, 166, 36, 205, 95, 240, 56, 15, 82, 186, 162, 211, 180, 184, 161, ], ), }, sent_events: EventHandle { count: 6744543235474365329, key: EventKey( [ 234, 221, 59, 56, 224, 95, 224, 75, 106, 6, 192, 196, 109, 30, 16, 87, 47, 210, 38, 2, 185, 128, 126, 133, ], ), }, sequence_number: 16401791198663586516, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4af897dee590221442555d5951fc00c1a95c9a502002a37d696054ebbf89d0f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148a40aab90f990c3a5b1f039747c632ed88e30a01f834a945708c90b0bb5fd8e470d3372fadf6e5420203bbb4bf6289a6251e5d99ccb665ed835193a6aa7173884bb7539b54133566d018c8602825cb03959c03453ce2f4ee07401154f39136f4eea6f811fb38dcc8f89f2ac97b5e7e8aa785318e2e603dd9cf0522d97c8f8c1e827e7d5f678ffdd7b1ff0fa0b622c7eb2eadf4718187c0f34a48b3e0d96269122871aa5881d3d4e591c148e949254d1b9902f4a2a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089bdff63cf154d182 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 10, 171, 144, 249, 144, 195, 165, 177, 240, 57, 116, 124, 99, 46, 216, 142, 48, 160, 31, 131, 74, 148, 87, 8, 201, 11, 11, 181, 253, 142, 71, 13, 51, 114, 250, 223, 110, 84, 32, 32, 59, 187, 75, 246, 40, 154, 98, 81, 229, 217, 156, 203, 102, 94, 216, 53, 25, 58, 106, 167, 23, 56, 132, 187, 117, 57, 181, 65, 51, 86, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c8602825cb03959c03453ce2f4ee074, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 154f39136f4eea6f811fb38dcc8f89f2, }, ), received_events: EventHandle { count: 6014745219649869740, key: EventKey( [ 226, 230, 3, 221, 156, 240, 82, 45, 151, 200, 248, 193, 232, 39, 231, 213, 246, 120, 255, 221, 123, 31, 240, 250, ], ), }, sent_events: EventHandle { count: 5179116148841275915, key: EventKey( [ 24, 124, 15, 52, 164, 139, 62, 13, 150, 38, 145, 34, 135, 26, 165, 136, 29, 61, 78, 89, 28, 20, 142, 148, ], ), }, sequence_number: 3047300396508861586, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4bc9427bc3f55184b11dc8552ed3ee3bdc7df150594e023c7fc9a88f64668f7a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c993013694fbc06cb6da8c92ca319f3cf08c016d42ec874d7aee6baab787b14bb3c5938b46b678375d9994267137c5424172ca3f9b273d4e542a01f7ad1506fe0b4fae06bf764471c53cd800f499c72831f2a80c1835124d1531f4baad9eb250f746dc7b5167712b8db30afb79088869a3da1c1f6e185b2e9d256cc4d2c0e882adb54ef599934d3e3df5d540fd4c8956df3aaeb181d32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080b6ee3d76d01771d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 251, 192, 108, 182, 218, 140, 146, 202, 49, 159, 60, 240, 140, 1, 109, 66, 236, 135, 77, 122, 238, 107, 170, 183, 135, 177, 75, 179, 197, 147, 139, 70, 182, 120, 55, 93, 153, 148, 38, 113, 55, 197, 66, 65, 114, 202, 63, 155, 39, 61, 78, 84, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f7ad1506fe0b4fae06bf764471c53cd8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 912245217494014452, key: EventKey( [ 53, 18, 77, 21, 49, 244, 186, 173, 158, 178, 80, 247, 70, 220, 123, 81, 103, 113, 43, 141, 179, 10, 251, 121, ], ), }, sent_events: EventHandle { count: 7935092793820153864, key: EventKey( [ 91, 46, 157, 37, 108, 196, 210, 192, 232, 130, 173, 181, 78, 245, 153, 147, 77, 62, 61, 245, 213, 64, 253, 76, ], ), }, sequence_number: 15240657975868610185, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4cb98ccf13ce925a3c5834908b9f41d505849da0b2ca233c6b9fcf816953af4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a201453b79530f68bce9fcf5a17f5a8a73e92c9bdd90ed5a7cdf78d22d065ffb03e5dbe1c1033d97745be3fc5c5c1f61a796bae2fe6638f5e7c2a5f888943f2b9e2777ef7999e3720001d1aee0cbc7b89845024d1ec72cd1c607e565600d6619d47b18b66003bfad5e75b3a10cf436bf070a7e9814ded717b849a638cc7b5586b90c6c18678f7db146467b4ccb72606d46c5bcbe89e402b36abdae491b4fb3e826df2fb12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089930717088ca88da Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 121, 83, 15, 104, 188, 233, 252, 245, 161, 127, 90, 138, 115, 233, 44, 155, 221, 144, 237, 90, 124, 223, 120, 210, 45, 6, 95, 251, 3, 229, 219, 225, 193, 3, 61, 151, 116, 91, 227, 252, 92, 92, 31, 97, 167, 150, 186, 226, 254, 102, 56, 245, 231, 194, 165, 248, 136, 148, 63, 43, 158, 39, 119, 239, 121, 153, 227, 114, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1aee0cbc7b89845024d1ec72cd1c607, }, ), received_events: EventHandle { count: 8922784687829575141, key: EventKey( [ 182, 96, 3, 191, 173, 94, 117, 179, 161, 12, 244, 54, 191, 7, 10, 126, 152, 20, 222, 215, 23, 184, 73, 166, ], ), }, sent_events: EventHandle { count: 7785801842427677752, key: EventKey( [ 103, 143, 125, 177, 70, 70, 123, 76, 203, 114, 96, 109, 70, 197, 188, 190, 137, 228, 2, 179, 106, 189, 174, 73, ], ), }, sequence_number: 12767668826824462107, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d0b4b7a8a28892f93b0b87a81aa12692e7960e0014cbe35abb2a0685aec168c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a0deff9f72ca098017feacc14646c0189ea931cb0506d4508433a9ada49301401ba8d166ffd6cb4f93d984f616cf6ed9d76de132f3e138c5a18b5c917da8e65ffb930b27bf5a960fc99d17a6dd87899f3f153b5f38ede69c92a18547c22d80d412968e3bb9778cee2a2168fbac106cad39121a027f6b5b65a11212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708afb7bf20332978db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 239, 249, 247, 44, 160, 152, 1, 127, 234, 204, 20, 100, 108, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 89ea931cb0506d4508433a9ada493014, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ba8d166ffd6cb4f93d984f616cf6ed9d, }, ), received_events: EventHandle { count: 6524611117951737462, key: EventKey( [ 181, 201, 23, 218, 142, 101, 255, 185, 48, 178, 123, 245, 169, 96, 252, 153, 209, 122, 109, 216, 120, 153, 243, 241, ], ), }, sent_events: EventHandle { count: 3083111824513807699, key: EventKey( [ 84, 124, 34, 216, 13, 65, 41, 104, 227, 187, 151, 120, 206, 226, 162, 22, 143, 186, 193, 6, 202, 211, 145, 33, ], ), }, sequence_number: 2382785418639058848, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d20fe0175ca518172045f1d92f674943d604c0efef552e7b91ec350f02e1943): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d014052ab8023815c1bc7789e36602d6d177230a6d9539bc0fcde197aa62aabe73276004653efc48549f66d796db1945c8a68ad0980a52a4e68fc45d6c722f46a90d601a1e0f0d60955ad161fd78730971c5e6300e169f24c677bf1261818e0f777153092a937fbae06b8f9183a3b5620cd9af78724795db6e3894d2c0a18169de4e79c95ae3fbfa9fc7144dc83d75d6deb138f27e9912cfb3e84350e93c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089863e098aa2ce83e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 171, 128, 35, 129, 92, 27, 199, 120, 158, 54, 96, 45, 109, 23, 114, 48, 166, 217, 83, 155, 192, 252, 222, 25, 122, 166, 42, 171, 231, 50, 118, 0, 70, 83, 239, 196, 133, 73, 246, 109, 121, 109, 177, 148, 92, 138, 104, 173, 9, 128, 165, 42, 78, 104, 252, 69, 214, 199, 34, 244, 106, 144, 214, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a1e0f0d60955ad161fd78730971c5e63, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2806159726431332833, key: EventKey( [ 24, 224, 247, 119, 21, 48, 146, 169, 55, 251, 174, 6, 184, 249, 24, 58, 59, 86, 32, 205, 154, 247, 135, 36, ], ), }, sent_events: EventHandle { count: 733046093980786041, key: EventKey( [ 22, 157, 228, 231, 156, 149, 174, 63, 191, 169, 252, 113, 68, 220, 131, 215, 93, 109, 235, 19, 143, 39, 233, 145, ], ), }, sequence_number: 13876450499873405740, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d3a9301a97a90f7cf49eea66e6b14f5261993786aaadda38f2cba7e2766447f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d0150355ee26db913264d498862cc592208386127fa0b533800b2b439bb7532b43c1cb8c5bbafa3444c965c6540cae89f325a3de35ac1241fbd3abd2f7399261494beaf6664937a7d0e9c62f583cc022da62300002e21b2fe485b322e18370b78329f012408d55627b02f8c4a9a17163cbe62e14ae1d501b146d2667c3118e4fc9934e12a051f4c96832d5014ef09e102096229c1636bb4ec7ae7467eb3422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d01f5ff8e8b2d4cb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 94, 226, 109, 185, 19, 38, 77, 73, 136, 98, 204, 89, 34, 8, 56, 97, 39, 250, 11, 83, 56, 0, 178, 180, 57, 187, 117, 50, 180, 60, 28, 184, 197, 187, 175, 163, 68, 76, 150, 92, 101, 64, 202, 232, 159, 50, 90, 61, 227, 90, 193, 36, 31, 189, 58, 189, 47, 115, 153, 38, 20, 148, 190, 175, 102, 100, 147, 122, 125, 14, 156, 98, 245, 131, 204, 2, 45, 166, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3328823443649077550, key: EventKey( [ 55, 11, 120, 50, 159, 1, 36, 8, 213, 86, 39, 176, 47, 140, 74, 154, 23, 22, 60, 190, 98, 225, 74, 225, ], ), }, sent_events: EventHandle { count: 3565838058285760981, key: EventKey( [ 228, 252, 153, 52, 225, 42, 5, 31, 76, 150, 131, 45, 80, 20, 239, 9, 225, 2, 9, 98, 41, 193, 99, 107, ], ), }, sequence_number: 4806324070330854580, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d4bb171eafcbab6044b602d75080263cf5ff7e56f4216e73a1e01c02d23464e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b2e224ea7e7c5060f567f205e71a3135e9425bdb8853d83f872be529a14517b245d5cd95f76413fe44b1d8ae7dca43c0000a4b7602e5099e470181fdfb4656dadb55f9417ed341b5d34b98cf6c97a3e1a13a6ff2cff57aa6c4575185025bb1f8fb37181d8f0101843c0f5a82b59eec2be99d28d9b3c68fbec0328082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085e2e3c505e70e408 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 167, 231, 197, 6, 15, 86, 127, 32, 94, 113, 163, 19, 94, 148, 37, 189, 184, 133, 61, 131, 248, 114, 190, 82, 154, 20, 81, 123, 36, 93, 92, 217, 95, 118, 65, 63, 228, 75, 29, 138, 231, 220, 164, 60, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8134795396592482212, key: EventKey( [ 31, 223, 180, 101, 109, 173, 181, 95, 148, 23, 237, 52, 27, 93, 52, 185, 140, 246, 201, 122, 62, 26, 19, 166, ], ), }, sent_events: EventHandle { count: 8450279754707184895, key: EventKey( [ 80, 37, 187, 31, 143, 179, 113, 129, 216, 240, 16, 24, 67, 192, 245, 168, 43, 89, 238, 194, 190, 153, 210, 141, ], ), }, sequence_number: 587724067736927387, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d716a4c336df3ed42b24db2d476bb7d81a067154e428e91b7eb11e8ba19c050): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e458f34c8001611a285e8e366d9e30001becf0c57bc795179b94ffac9f19e9554f848d8f5b8193d13188bdc6861614dde0e8922c2830943482c54b1c9ef918768aebfdd45a0607c9064189b74aa89f12028de7e0ee4eeee9fd7879d00d5334b2412edfe4fe76c834d36b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f90be900f1038ce2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 143, 52, 200, 0, 22, 17, 162, 133, 232, 227, 102, 217, 227, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: becf0c57bc795179b94ffac9f19e9554, }, ), received_events: EventHandle { count: 1386292542489250040, key: EventKey( [ 139, 220, 104, 97, 97, 77, 222, 14, 137, 34, 194, 131, 9, 67, 72, 44, 84, 177, 201, 239, 145, 135, 104, 174, ], ), }, sent_events: EventHandle { count: 7246428554886766015, key: EventKey( [ 155, 116, 170, 137, 241, 32, 40, 222, 126, 14, 228, 238, 238, 159, 215, 135, 157, 0, 213, 51, 75, 36, 18, 237, ], ), }, sequence_number: 12769479020318773246, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4d7bd7a4b91da65131a2dc2011ff9a0393dece536b89eb0a1f49b65ec981209d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cd0160bb57b83cb3d08a7d2e04141ef62cb1a5fe17b33d6d3190d3d6c42c5aca8a9996c1fe0ed8556e302e1324670487286a417a7cf734f55ad31c5010f6d3001c7b6859243cd76dfb7961e25f0bc5ff2b50d785b41e0a2261a9cbbbf967340ec94659018f4e8613541f4d43de206c0a5210627701b9da72e996bdc7d3c694d6494df37419561e66fc0f47c92c18edb0d9e03b4d8dcb2145da8c49a8edd62fc4fa8a3bb6354e8e81fe1c679fdb531876a9840be99df5db67ebc308b409717428ab827778be226e45858d3dcc5524b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70809554e522ac27154 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 187, 87, 184, 60, 179, 208, 138, 125, 46, 4, 20, 30, 246, 44, 177, 165, 254, 23, 179, 61, 109, 49, 144, 211, 214, 196, 44, 90, 202, 138, 153, 150, 193, 254, 14, 216, 85, 110, 48, 46, 19, 36, 103, 4, 135, 40, 106, 65, 122, 124, 247, 52, 245, 90, 211, 28, 80, 16, 246, 211, 0, 28, 123, 104, 89, 36, 60, 215, 109, 251, 121, 97, 226, 95, 11, 197, 255, 43, 80, 215, 133, 180, 30, 10, 34, 97, 169, 203, 187, 249, 103, 52, 14, 201, 70, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8f4e8613541f4d43de206c0a52106277, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b9da72e996bdc7d3c694d6494df37419, }, ), received_events: EventHandle { count: 3227188741972303446, key: EventKey( [ 237, 176, 217, 224, 59, 77, 141, 203, 33, 69, 218, 140, 73, 168, 237, 214, 47, 196, 250, 138, 59, 182, 53, 78, ], ), }, sent_events: EventHandle { count: 6042598590264541582, key: EventKey( [ 118, 169, 132, 11, 233, 157, 245, 219, 103, 235, 195, 8, 180, 9, 113, 116, 40, 171, 130, 119, 120, 190, 34, 110, ], ), }, sequence_number: 12908536767645058373, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e455ac02acec621ef01bafd01f10bb673e311345beb5480956c3a8a5e0eedc0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015dc9eefbb069c54f5367864891b301ccfdee48d4a7e1a021102741ca5e3c7590a0b617679408a1811c647978d1660c490a4e1053929fab621e2c4d945090bf3b999cdcf0d082e46bd8a19d042d84686e7d2ebaf3cf0bec036a98be30361f01c2dbd0c8df904e98db07a1ee5eaf59b401b188f20b30cc767edf1ebe8e8f6ef5a4eb3a17c9fed5e342182b4c20afe907add6b8addb63298a251262451a7d2939682b71a4b6459acfd132188bfee115533bf375a31971205fb02407fae6aba99141f2fe245b180de08854ed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8ee588a6952c0fa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 238, 251, 176, 105, 197, 79, 83, 103, 134, 72, 145, 179, 1, 204, 253, 238, 72, 212, 167, 225, 160, 33, 16, 39, 65, 202, 94, 60, 117, 144, 160, 182, 23, 103, 148, 8, 161, 129, 28, 100, 121, 120, 209, 102, 12, 73, 10, 78, 16, 83, 146, 159, 171, 98, 30, 44, 77, 148, 80, 144, 191, 59, 153, 156, 220, 240, 208, 130, 228, 107, 216, 161, 157, 4, 45, 132, 104, 110, 125, 46, 186, 243, 207, 11, 236, 3, 106, 152, 190, 48, 54, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c2dbd0c8df904e98db07a1ee5eaf59b4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b188f20b30cc767edf1ebe8e8f6ef5a4, }, ), received_events: EventHandle { count: 4819931316488714987, key: EventKey( [ 43, 76, 32, 175, 233, 7, 173, 214, 184, 173, 219, 99, 41, 138, 37, 18, 98, 69, 26, 125, 41, 57, 104, 43, ], ), }, sent_events: EventHandle { count: 3661936233530434673, key: EventKey( [ 139, 254, 225, 21, 83, 59, 243, 117, 163, 25, 113, 32, 95, 176, 36, 7, 250, 230, 171, 169, 145, 65, 242, 254, ], ), }, sequence_number: 17101444180906367780, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e5fb057bc3340b09706e8c4966a20d663bc1ef5f43809a0da7dca5867e9fcb3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f127e051f9bc8b08cf4e15a5ef4eef1ebd72dd0019588c0ca2b1ebb17eb3f47d7242fff540049a1a610adc2a71e18098d7189a80a60897e9efceb72fd8ffddd9afa11be230d0a6bf0b80db6970a3c18ce8177d18a40619a780936230a6162808a9dab04945ef29033d9e901d70bff222101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8e84b9169d97841 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 126, 5, 31, 155, 200, 176, 140, 244, 225, 90, 94, 244, 238, 241, 235, 215, 45, 208, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9588c0ca2b1ebb17eb3f47d7242fff54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2208948190813004105, key: EventKey( [ 9, 141, 113, 137, 168, 10, 96, 137, 126, 158, 252, 235, 114, 253, 143, 253, 221, 154, 250, 17, 190, 35, 13, 10, ], ), }, sent_events: EventHandle { count: 4326437200212848747, key: EventKey( [ 206, 129, 119, 209, 138, 64, 97, 154, 120, 9, 54, 35, 10, 97, 98, 128, 138, 157, 171, 4, 148, 94, 242, 144, ], ), }, sequence_number: 2521747334428743987, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(4e73548357e671b61b8c5de63f868a3d354f86b3a54e1be4e770732a444c3835): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113711e167a146dc7fc6262c50b8ebba887612114016e17817502dcbf9630983376313b221701ae9e8bba50d9a1a37974a04394552bfd49773ec62cb57a50185ab1c6260c9013dbabc1759c46cce4c2a1800ad8abcb9b6572c10fcbc69e977f18383d76542a161c410e62994ed6fa2629ccb95159f15a59a0dd8b8dab2abcdbb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708468d78565b17cd1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 113, 30, 22, 122, 20, 109, 199, 252, 98, 98, 197, 11, 142, 187, 168, 135, 97, 33, 20, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6e17817502dcbf9630983376313b2217, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae9e8bba50d9a1a37974a04394552bfd, }, ), received_events: EventHandle { count: 5799146674102105929, key: EventKey( [ 90, 177, 198, 38, 12, 144, 19, 219, 171, 193, 117, 156, 70, 204, 228, 194, 161, 128, 10, 216, 171, 203, 155, 101, ], ), }, sent_events: EventHandle { count: 9193991740947677554, key: EventKey( [ 56, 61, 118, 84, 42, 22, 28, 65, 14, 98, 153, 78, 214, 250, 38, 41, 204, 185, 81, 89, 241, 90, 89, 160, ], ), }, sequence_number: 13392504808369130461, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(50012e55186d8d93e26a26d70791b661a8682e2e8241c0aa465d0a123e77dcbc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1df2db9e914e2128cd664faa8b66ed04ae242e49674e521d079be402ff4400005f69010445a5f05518162b68e1c1b88ecb78e11e750a4b3cec1a8aeb6810ed99f7701c7832447bb76c18d77bb2d295833803ec2409e5aa1d68313ecf8a938e318e7047b6e81e18a0113e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b8a964a00163b074 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 219, 158, 145, 78, 33, 40, 205, 102, 79, 170, 139, 102, 237, 4, 174, 36, 46, 73, 103, 78, 82, 29, 7, 155, 228, 2, 255, 68, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6192631203472959839, key: EventKey( [ 22, 43, 104, 225, 193, 184, 142, 203, 120, 225, 30, 117, 10, 75, 60, 236, 26, 138, 235, 104, 16, 237, 153, 247, ], ), }, sent_events: EventHandle { count: 7833865609668992112, key: EventKey( [ 215, 123, 178, 210, 149, 131, 56, 3, 236, 36, 9, 229, 170, 29, 104, 49, 62, 207, 138, 147, 142, 49, 142, 112, ], ), }, sequence_number: 4472531930413839943, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(503d7cf0cf04d4f2b21fdf91a894904a20246af66f2f9345f6efe3145d45b0b6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316f1ef80cbf929e57e6be4787dc98fc673ed01a03ef05e018c336c5c63c9fae45c1ed4e3a08ff6fe005edcf3c74e9e560d182d64502f45893481c43f3c9f447bb5e9fbc33c5adef3c874242d7a90d5b9221d189c8b7bd3eecf5d9ba4d805592019565d1a674224df28c3546214d9364fac04262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081464cde69c128f75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 239, 128, 203, 249, 41, 229, 126, 107, 228, 120, 125, 201, 143, 198, 115, 237, 1, 160, 62, 240, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8c336c5c63c9fae45c1ed4e3a08ff6fe, }, ), key_rotation_capability: None, received_events: EventHandle { count: 961129631689464926, key: EventKey( [ 45, 100, 80, 47, 69, 137, 52, 129, 196, 63, 60, 159, 68, 123, 181, 233, 251, 195, 60, 90, 222, 243, 200, 116, ], ), }, sent_events: EventHandle { count: 2099444703211171108, key: EventKey( [ 156, 139, 123, 211, 238, 207, 93, 155, 164, 216, 5, 89, 32, 25, 86, 93, 26, 103, 66, 36, 223, 40, 195, 84, ], ), }, sequence_number: 2739503929570694242, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51089eaa0157794b8803448a61f39e512918c8aae11fa310f2868f9389bc30f8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c1fbfe6689f2f2f79c63664f38865909a5bde7231e8fc5ba034b5d4b2ad99d8020000ef272e54690c232918a505dbc2c63424c13fa453c08987519fefe35be883b10dc6c81ee26754d0a53b18775a91563348e1bb1765a8e355e04bc6d0bd87b197a0c6501df732c189e27d7a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708efe72380239932c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 230, 104, 159, 47, 47, 121, 198, 54, 100, 243, 136, 101, 144, 154, 91, 222, 114, 49, 232, 252, 91, 160, 52, 181, 212, 178, 173, 153, 216, 2, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2964226626263328751, key: EventKey( [ 165, 5, 219, 194, 198, 52, 36, 193, 63, 164, 83, 192, 137, 135, 81, 159, 239, 227, 91, 232, 131, 177, 13, 198, ], ), }, sent_events: EventHandle { count: 4298070480333709000, key: EventKey( [ 119, 90, 145, 86, 51, 72, 225, 187, 23, 101, 168, 227, 85, 224, 75, 198, 208, 189, 135, 177, 151, 160, 198, 80, ], ), }, sequence_number: 8826459925995779869, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5133266cb9022ab301ad81118f929d1275b373d9ca976b83b098ec5f7a67cd96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163e7220b0bcd7e1d5b67e11fad03972e0b9015cf70cdb977bedd3956c0cfea10a0d7b12ccdf6022f415ba6cc7d77590dcf854a2775e2679738a82206b1a33c877d875361f47e407a77171b4840f80fdb79fc45342392e650647ee741fa9036054790883400018485d3cca9cbdf3f1ce00a8e4bc1b5120a28cde5d5072a1918e2350f8d8f079bb581954cc6bd64b2e3910175418920afc293f28e2c400dfa1a1822cd19fb7ae7d9c819add0bd48bdc0661449cc0c20e01bcb4b8a30e8881cc8d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826e01ed31ff846dc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 231, 34, 11, 11, 205, 126, 29, 91, 103, 225, 31, 173, 3, 151, 46, 11, 144, 21, 207, 112, 205, 185, 119, 190, 221, 57, 86, 192, 207, 234, 16, 160, 215, 177, 44, 205, 246, 2, 47, 65, 91, 166, 204, 125, 119, 89, 13, 207, 133, 74, 39, 117, 226, 103, 151, 56, 168, 34, 6, 177, 163, 60, 135, 125, 135, 83, 97, 244, 126, 64, 122, 119, 23, 27, 72, 64, 248, 15, 219, 121, 252, 69, 52, 35, 146, 230, 80, 100, 126, 231, 65, 250, 144, 54, 5, 71, 144, 136, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8485d3cca9cbdf3f1ce00a8e4bc1b512, }, ), received_events: EventHandle { count: 1813270415234902026, key: EventKey( [ 226, 53, 15, 141, 143, 7, 155, 181, 129, 149, 76, 198, 189, 100, 178, 227, 145, 1, 117, 65, 137, 32, 175, 194, ], ), }, sent_events: EventHandle { count: 1943880758440424083, key: EventKey( [ 34, 205, 25, 251, 122, 231, 217, 200, 25, 173, 208, 189, 72, 189, 192, 102, 20, 73, 204, 12, 32, 224, 27, 203, ], ), }, sequence_number: 15332536305719478859, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(517a3c8da9d66facbf8c2a1c224afd6d16497b7c5264c03bcee2691f2ee0d8df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01616a48f3b8608f9e3331b53d766304f0db425de3b50ef82d64827cb6f1568695fe7a0264a64b80af0a8d81e27b280d4b470eae0c3be591d56cf7ae92f047933ba2b05cd02cbe4dd816de6ea392f1d945a7889f979aa9f98e7939bf9cb0cc2a7ce3b201ae01102c948ee3085b8ddc6aee16d0390136de687278e8115eeaf55d6c200666d9df6b38048b59021c18951710efb7b3e902dcdc70bf3db143c11077798261ac089029523d326c76527d1825b10c245d18d6c98e5d25cb4d1facd9a24c638404b094602caf8c96bd9d0e282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708afa2c4cc83707a2d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 72, 243, 184, 96, 143, 158, 51, 49, 181, 61, 118, 99, 4, 240, 219, 66, 93, 227, 181, 14, 248, 45, 100, 130, 124, 182, 241, 86, 134, 149, 254, 122, 2, 100, 166, 75, 128, 175, 10, 141, 129, 226, 123, 40, 13, 75, 71, 14, 174, 12, 59, 229, 145, 213, 108, 247, 174, 146, 240, 71, 147, 59, 162, 176, 92, 208, 44, 190, 77, 216, 22, 222, 110, 163, 146, 241, 217, 69, 167, 136, 159, 151, 154, 169, 249, 142, 121, 57, 191, 156, 176, 204, 42, 124, 227, 178, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ae01102c948ee3085b8ddc6aee16d039, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 36de687278e8115eeaf55d6c200666d9, }, ), received_events: EventHandle { count: 2018274036621536223, key: EventKey( [ 149, 23, 16, 239, 183, 179, 233, 2, 220, 220, 112, 191, 61, 177, 67, 193, 16, 119, 121, 130, 97, 172, 8, 144, ], ), }, sent_events: EventHandle { count: 9030410409902690857, key: EventKey( [ 37, 177, 12, 36, 93, 24, 214, 201, 142, 93, 37, 203, 77, 31, 172, 217, 162, 76, 99, 132, 4, 176, 148, 96, ], ), }, sequence_number: 2886417848791248684, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51a6e4f642f88dd32ad9571019655c36c6292dd9cd38d4d1cf9e610e1422b474): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015fca3011863ebb6509a9dcc8e782bc91b4e3f0cd23a074a0104a777f3f40b4f7e5a84e74e8c617e56b2b6f47cdf174fdb04e23d7dc51fc8d37d56bf00cd9c0f94dd8fa09109778f41f72d76405b89f41ca4bfddd2e2e2dd3363ddc4998961e7801af4d0e272e2986a4f986a5bdd22a6efa00ed09d00097c97772188098307b39ff5295f57e154bfbf077990b1bcaa43251c7cfb2778a1830fd520618ca78877457869d0ba1120cce953c858d9b1f690c653ed7e59c1b86d2481be5242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089f60552511a81202 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 48, 17, 134, 62, 187, 101, 9, 169, 220, 200, 231, 130, 188, 145, 180, 227, 240, 205, 35, 160, 116, 160, 16, 74, 119, 127, 63, 64, 180, 247, 229, 168, 78, 116, 232, 198, 23, 229, 107, 43, 111, 71, 205, 241, 116, 253, 176, 78, 35, 215, 220, 81, 252, 141, 55, 213, 107, 240, 12, 217, 192, 249, 77, 216, 250, 9, 16, 151, 120, 244, 31, 114, 215, 100, 5, 184, 159, 65, 202, 75, 253, 221, 46, 46, 45, 211, 54, 61, 220, 73, 152, 150, 30, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: af4d0e272e2986a4f986a5bdd22a6efa, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8248282892943231469, key: EventKey( [ 128, 152, 48, 123, 57, 255, 82, 149, 245, 126, 21, 75, 251, 240, 119, 153, 11, 27, 202, 164, 50, 81, 199, 207, ], ), }, sent_events: EventHandle { count: 455704895329826738, key: EventKey( [ 202, 120, 135, 116, 87, 134, 157, 11, 161, 18, 12, 206, 149, 60, 133, 141, 155, 31, 105, 12, 101, 62, 215, 229, ], ), }, sequence_number: 2658561154615745436, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(51d3898dfcdd3bd91155b9db1803736ca589ec8586b1555878d166fadfbc4ba6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b013ef79267172cd5959dd0e0949ce477d9ef85eb5004bd901f2b5b981c75e1f3de67203b2e38e345e324aa13252555b15e1c763ba47edcf7e4292052a1ed93bc000008c6480b1f17e9531813f0ed8d8f8261652ba838d880f5a308fdf3290a0417e1fa9971033b601c6b5518d043792234040365c95b947524f22955706372918dcc420e4e70865cb82b54d22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080583fb1a47ae9640 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 146, 103, 23, 44, 213, 149, 157, 208, 224, 148, 156, 228, 119, 217, 239, 133, 235, 80, 4, 189, 144, 31, 43, 91, 152, 28, 117, 225, 243, 222, 103, 32, 59, 46, 56, 227, 69, 227, 36, 170, 19, 37, 37, 85, 177, 94, 28, 118, 59, 164, 126, 220, 247, 228, 41, 32, 82, 161, 237, 147, 188, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6046389396822345224, key: EventKey( [ 19, 240, 237, 141, 143, 130, 97, 101, 43, 168, 56, 216, 128, 245, 163, 8, 253, 243, 41, 10, 4, 23, 225, 250, ], ), }, sent_events: EventHandle { count: 6155044515364434329, key: EventKey( [ 208, 67, 121, 34, 52, 4, 3, 101, 201, 91, 148, 117, 36, 242, 41, 85, 112, 99, 114, 145, 141, 204, 66, 14, ], ), }, sequence_number: 15155786716834852942, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5220657c3bb4b5616431a78997f80b1bcab0a4447ce303f7f2739a459b676627): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f22e545ecb91eab45ea47b8fe5fa62eb18b591d9e93e934ddae724359b0aed4dc1aa8d80001d71676f62723b2890cbb02a8ee80508e9c0eaf8db6e4821318343fe5bd1c9e39cfd08e552f95648fd20642a3863e887e446dcd2f5d61ef564e18e215ad009f1e8e8562178990540fc53f4bdbe11c2763f33b26dc2c149732a05d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708146102a036a23be2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 229, 69, 236, 185, 30, 171, 69, 234, 71, 184, 254, 95, 166, 46, 177, 139, 89, 29, 158, 147, 233, 52, 221, 174, 114, 67, 89, 176, 174, 212, 220, 26, 168, 216, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d71676f62723b2890cbb02a8ee80508e, }, ), received_events: EventHandle { count: 1405937506405256860, key: EventKey( [ 52, 63, 229, 189, 28, 158, 57, 207, 208, 142, 85, 47, 149, 100, 143, 210, 6, 66, 163, 134, 62, 136, 126, 68, ], ), }, sent_events: EventHandle { count: 5644962384409775469, key: EventKey( [ 226, 21, 173, 0, 159, 30, 142, 133, 98, 23, 137, 144, 84, 15, 197, 63, 75, 219, 225, 28, 39, 99, 243, 59, ], ), }, sequence_number: 6746447866260937766, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(52dee4700d2f3906696199d89a2720d0eac7624242da1387f5bed716f4338477): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a5015851a94b6210580c88d8f1f9ccdfcd7deaac11398ab0420781037434a1f43546cc35e227e93f5765dbfbc1b949da03358a51a14d3df18b58cc894afe74bba75872042cb85fe7db3f23233546995291b4cceb315865121508c40000d36de942b3a7d86f18075fe5e83c7c12c0a174b7834eb624403b9b34ef67d1e724a5ca5542ee6a093c18f562cef889da18fbe6b02d9a01ef67e7e3059349fdcb7c996dace56d2d13b4282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c47b2ffea82dba6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 169, 75, 98, 16, 88, 12, 136, 216, 241, 249, 204, 223, 205, 125, 234, 172, 17, 57, 138, 176, 66, 7, 129, 3, 116, 52, 161, 244, 53, 70, 204, 53, 226, 39, 233, 63, 87, 101, 219, 251, 193, 185, 73, 218, 3, 53, 138, 81, 161, 77, 61, 241, 139, 88, 204, 137, 74, 254, 116, 187, 167, 88, 114, 4, 44, 184, 95, 231, 219, 63, 35, 35, 53, 70, 153, 82, 145, 180, 204, 235, 49, 88, 101, 18, 21, 8, 196, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8059375921543081427, key: EventKey( [ 7, 95, 229, 232, 60, 124, 18, 192, 161, 116, 183, 131, 78, 182, 36, 64, 59, 155, 52, 239, 103, 209, 231, 36, ], ), }, sent_events: EventHandle { count: 4326106488613751461, key: EventKey( [ 245, 98, 206, 248, 137, 218, 24, 251, 230, 176, 45, 154, 1, 239, 103, 231, 227, 5, 147, 73, 253, 203, 124, 153, ], ), }, sequence_number: 2932990343163260013, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53991811ba39b54d466c3aa1cb73613f72c4821a757f864dfde2ad9491a54c07): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671af5afd849ef7210a0ddeace7f1b936eb0492db317f8a9ed23b0f60000bc6a1126a823940118ddb77b6a00fe3a233db60b9f746213ecdf37619ccad497945f77bebd9e13f16818c612ac963ee50e686147fe0fc00258af481b7cf96aa8d381369bfd8f491aa77f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca1c30c39b37f976 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 175, 216, 73, 239, 114, 16, 160, 221, 234, 206, 127, 27, 147, 110, 176, 73, 45, 179, 23, 248, 169, 237, 35, 176, 246, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 113755095691258556, key: EventKey( [ 221, 183, 123, 106, 0, 254, 58, 35, 61, 182, 11, 159, 116, 98, 19, 236, 223, 55, 97, 156, 202, 212, 151, 148, ], ), }, sent_events: EventHandle { count: 7561846821840910175, key: EventKey( [ 198, 18, 172, 150, 62, 229, 14, 104, 97, 71, 254, 15, 192, 2, 88, 175, 72, 27, 124, 249, 106, 168, 211, 129, ], ), }, sequence_number: 9198349667178224438, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(53ca50a1d4f5587ec4a2ccb83a3ab847b57fb564905839fbbf190b817ba3f07c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9772a6e31fceee81f16eae10c6f5ffb39435a860ef77735b35586be654cbe1e9a7a5244c96783b53e1622c41a0000d44b89d07f20c353183fb699bcad4a0e96e336c4a23b965e5ab8ed34fec632785fabdb48faa7ce913f18ed34beee4e769c9cad83098f0dd691af80bc9cb9836ea926e9e101328954c4a62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708803c5917e33b0737 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 110, 49, 252, 238, 232, 31, 22, 234, 225, 12, 111, 95, 251, 57, 67, 90, 134, 14, 247, 119, 53, 179, 85, 134, 190, 101, 76, 190, 30, 154, 122, 82, 68, 201, 103, 131, 181, 62, 22, 34, 196, 26, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6035703658938190804, key: EventKey( [ 63, 182, 153, 188, 173, 74, 14, 150, 227, 54, 196, 162, 59, 150, 94, 90, 184, 237, 52, 254, 198, 50, 120, 95, ], ), }, sent_events: EventHandle { count: 4580669516866444203, key: EventKey( [ 237, 52, 190, 238, 78, 118, 156, 156, 173, 131, 9, 143, 13, 214, 145, 175, 128, 188, 156, 185, 131, 110, 169, 38, ], ), }, sequence_number: 12016822653957562857, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(54189ec9ace66b4fbfd14bf947a62998b07d89705e3ecd71516d718302f0a014): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dfb751f214cf4f0f57ea014f2381df12a38189184bf921f21794cd4ae4ff122ac292a74cf829a7f705cff1d4d1cf9dbfc929c4f1bf92a5f8b26e5ad2a3a01cab79baace508735ae67914a7fcf5850007f7e86dd57d9166418053f70afbeec1c23e173d61663edc95ac5d9c2dfb74e24e615de81ac22262c6718c4f541a2605396a4a239fc3c5f879a2c1aebbfeccbd615ab1f9aca3dd1be60092101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aae6a9d971854585 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 117, 31, 33, 76, 244, 240, 245, 126, 160, 20, 242, 56, 29, 241, 42, 56, 24, 145, 132, 191, 146, 31, 33, 121, 76, 212, 174, 79, 241, 34, 172, 41, 42, 116, 207, 130, 154, 127, 112, 92, 255, 29, 77, 28, 249, 219, 252, 146, 156, 79, 27, 249, 42, 95, 139, 38, 229, 173, 42, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cab79baace508735ae67914a7fcf5850, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7212190824682389119, key: EventKey( [ 5, 63, 112, 175, 190, 236, 28, 35, 225, 115, 214, 22, 99, 237, 201, 90, 197, 217, 194, 223, 183, 78, 36, 230, ], ), }, sent_events: EventHandle { count: 7434359015246781973, key: EventKey( [ 196, 245, 65, 162, 96, 83, 150, 164, 162, 57, 252, 60, 95, 135, 154, 44, 26, 235, 191, 236, 203, 214, 21, 171, ], ), }, sequence_number: 675749749999704607, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5418e0605f29a26c1f99acf45d43e30df64f3b1c55b520cf8262e39e920bc467): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791c61a823f234b55d6843b068ddc5fea252030ccb88b2a9f2d9383b2a5a0001a33a317413897d2eaee73d803f35bd8eb12d4b2dfda0d02418ee051bb4154a89ca93e2d60c852c16eb395159a61d694b8c55a90a430c222014182bf44c8e70ac2f9bd3fbe99121066e8b556d7f749db239e13608bfce786dbbbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086578f4631d2af443 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 168, 35, 242, 52, 181, 93, 104, 67, 176, 104, 221, 197, 254, 162, 82, 3, 12, 203, 136, 178, 169, 242, 217, 56, 59, 42, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a33a317413897d2eaee73d803f35bd8e, }, ), received_events: EventHandle { count: 2652797189768293809, key: EventKey( [ 238, 5, 27, 180, 21, 74, 137, 202, 147, 226, 214, 12, 133, 44, 22, 235, 57, 81, 89, 166, 29, 105, 75, 140, ], ), }, sent_events: EventHandle { count: 1450196516073023829, key: EventKey( [ 43, 244, 76, 142, 112, 172, 47, 155, 211, 251, 233, 145, 33, 6, 110, 139, 85, 109, 127, 116, 157, 178, 57, 225, ], ), }, sequence_number: 13671641459445401654, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5493123b79bdc32da77b3c33a953c39b55a8c0a88f63d2f8a575f43121e89f9a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b301463734140b6cda1504b9ba723e0353bd98ccbddd09fecea8fc0abeec4f5394506ec6de0b3c0be686f41a6282a86bd0088ee524640f29414261b633f3e946572998f54876504d7c010b06f9ed552c0be9ca9ef760143ca17101b082e2d5e289167b43c0af86114224933dc37f894bb383371864fc9e7adbf4d7f164c98f23c4259135d20df9d9176f42c66df9380f3e07590518da37abb4acc455d453e4a6f6bcb69d40d585ea8b2b3aad9c03fa50782186e3d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083fc6e025ce8caafb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 52, 20, 11, 108, 218, 21, 4, 185, 186, 114, 62, 3, 83, 189, 152, 204, 189, 221, 9, 254, 206, 168, 252, 10, 190, 236, 79, 83, 148, 80, 110, 198, 222, 11, 60, 11, 230, 134, 244, 26, 98, 130, 168, 107, 208, 8, 142, 229, 36, 100, 15, 41, 65, 66, 97, 182, 51, 243, 233, 70, 87, 41, 152, 245, 72, 118, 80, 77, 124, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0b06f9ed552c0be9ca9ef760143ca171, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b082e2d5e289167b43c0af8611422493, }, ), received_events: EventHandle { count: 4000238031045903165, key: EventKey( [ 100, 252, 158, 122, 219, 244, 215, 241, 100, 201, 143, 35, 196, 37, 145, 53, 210, 13, 249, 217, 23, 111, 66, 198, ], ), }, sent_events: EventHandle { count: 385347206241646957, key: EventKey( [ 218, 55, 171, 180, 172, 196, 85, 212, 83, 228, 166, 246, 188, 182, 157, 64, 213, 133, 234, 139, 43, 58, 173, 156, ], ), }, sequence_number: 15340252234064656899, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(54c7c49fd45ca0ee96a4c015528dd3797dc10516b751e3b74af601a5531ed438): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f8e8d0bf0d2b59b04c82991b593dda4d3cb8ccaa24fdbd7fac74957fd7ee322e601b602acfd8862f728abcb616f73e10000ae97fc43b25be0441816559b535efe564cc767593bae84ba8b621c4a39a3a632d6a60d2645837d894318abb7e843677437044cb77f645bc779f1e5541f1410a1dcf435c140f9526a16d62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828c73b2ac6f278f3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 141, 11, 240, 210, 181, 155, 4, 200, 41, 145, 181, 147, 221, 164, 211, 203, 140, 202, 162, 79, 219, 215, 250, 199, 73, 87, 253, 126, 227, 34, 230, 1, 182, 2, 172, 253, 136, 98, 247, 40, 171, 203, 97, 111, 115, 225, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4963067610565220270, key: EventKey( [ 22, 85, 155, 83, 94, 254, 86, 76, 199, 103, 89, 59, 174, 132, 186, 139, 98, 28, 74, 57, 163, 166, 50, 214, ], ), }, sent_events: EventHandle { count: 4866558875104841126, key: EventKey( [ 171, 183, 232, 67, 103, 116, 55, 4, 76, 183, 127, 100, 91, 199, 121, 241, 229, 84, 31, 20, 16, 161, 220, 244, ], ), }, sequence_number: 15426634478205845813, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(56b3fcbf8c36b189465188f323757b3d08bf0f5ada0586cc2a3353cd8eafd696): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830126f13606bba6ac671d6351aad31db8f297496b223524c55a88941f78dec93ea891c6d58f942b1f016959eefd4777a4683e706f29bcb60e4600304ec50c13b04f5118c147e7f4a2d2414ddedec64d2f09f24cec3cd893bb79d27576e5272d9163bd011851d49a4eae9c882eba5b1342e0a3b33efd4431c1d66509fefd40469d5b6335632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e2fdf70ea254d1b2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 54, 6, 187, 166, 172, 103, 29, 99, 81, 170, 211, 29, 184, 242, 151, 73, 107, 34, 53, 36, 197, 90, 136, 148, 31, 120, 222, 201, 62, 168, 145, 198, 213, 143, 148, 43, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6959eefd4777a4683e706f29bcb60e46, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5859095236097429040, key: EventKey( [ 193, 71, 231, 244, 162, 210, 65, 77, 222, 222, 198, 77, 47, 9, 242, 76, 236, 60, 216, 147, 187, 121, 210, 117, ], ), }, sent_events: EventHandle { count: 125365839815239030, key: EventKey( [ 81, 212, 154, 78, 174, 156, 136, 46, 186, 91, 19, 66, 224, 163, 179, 62, 253, 68, 49, 193, 214, 101, 9, 254, ], ), }, sequence_number: 7148729228652331261, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(570c812ad442771b104e0842f06174aa2231dc6daea6f657b921207e301f27b8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60159143356af677bdad5e499d0a571868316d91d8ec699e4d46d206dabf6d9e5a152f9c564aa905225a8349543abce9f8a46f0dc2baeac117bc24c1fadd6ba1d3336888adf23d797d45a1b64b068e82be780d9783dd81ec724f80e00008071827c40032a1f18e5b18109d6f9c0c8f81849b7c280260734e866037663c77a210e81b5668a000e18dcf83a2be733208ddfc474da8c6f5090028c0d4f7811063cbbd5492a684c600a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b50ca91c290fef9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 20, 51, 86, 175, 103, 123, 218, 213, 228, 153, 208, 165, 113, 134, 131, 22, 217, 29, 142, 198, 153, 228, 212, 109, 32, 109, 171, 246, 217, 229, 161, 82, 249, 197, 100, 170, 144, 82, 37, 168, 52, 149, 67, 171, 206, 159, 138, 70, 240, 220, 43, 174, 172, 17, 123, 194, 76, 31, 173, 214, 186, 29, 51, 54, 136, 138, 223, 35, 215, 151, 212, 90, 27, 100, 176, 104, 232, 43, 231, 128, 217, 120, 61, 216, 30, 199, 36, 248, 14, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2245610939699327360, key: EventKey( [ 229, 177, 129, 9, 214, 249, 192, 200, 248, 24, 73, 183, 194, 128, 38, 7, 52, 232, 102, 3, 118, 99, 199, 122, ], ), }, sent_events: EventHandle { count: 1008958490267422241, key: EventKey( [ 220, 248, 58, 43, 231, 51, 32, 141, 223, 196, 116, 218, 140, 111, 80, 144, 2, 140, 13, 79, 120, 17, 6, 60, ], ), }, sequence_number: 747681548413294011, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(573585db5fd30adf747a864b24a4516c8725d6c7a78425936fd1a2375c4ebaaf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bf0162bdc7660082b193fc9b24dbf3a19b524564ac5aa63c10d404a3f14a8a5877e4acb4dc782e1facc83dc2cac99f64a320f10c9909a64f50563a24de65bd35dd04ba8ac7c98a457c4cd37a5fd15e0f4a6413f778c41f383a5f3cc0f4ba8db03c68ec50210001a59ef998dd5809b1fe7fbf0e8f7615fab8e6e5593ee8844318489fe8affeed4396cdf43790a774a9b7d7872430fa067d518edf86021fb4202418ca4569f574f9e63373ac5bdeab977e8cf6f80b51e870f4a2f07027c2f1e4ab5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086c10b317606f5465 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 199, 102, 0, 130, 177, 147, 252, 155, 36, 219, 243, 161, 155, 82, 69, 100, 172, 90, 166, 60, 16, 212, 4, 163, 241, 74, 138, 88, 119, 228, 172, 180, 220, 120, 46, 31, 172, 200, 61, 194, 202, 201, 159, 100, 163, 32, 241, 12, 153, 9, 166, 79, 80, 86, 58, 36, 222, 101, 189, 53, 221, 4, 186, 138, 199, 201, 138, 69, 124, 76, 211, 122, 95, 209, 94, 15, 74, 100, 19, 247, 120, 196, 31, 56, 58, 95, 60, 192, 244, 186, 141, 176, 60, 104, 236, 80, 33, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a59ef998dd5809b1fe7fbf0e8f7615fa, }, ), received_events: EventHandle { count: 4865268851960833720, key: EventKey( [ 72, 159, 232, 175, 254, 237, 67, 150, 205, 244, 55, 144, 167, 116, 169, 183, 215, 135, 36, 48, 250, 6, 125, 81, ], ), }, sent_events: EventHandle { count: 2603278629899526030, key: EventKey( [ 202, 69, 105, 245, 116, 249, 230, 51, 115, 172, 91, 222, 171, 151, 126, 140, 246, 248, 11, 81, 232, 112, 244, 162, ], ), }, sequence_number: 6605625005464580336, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(57f13350ad960490010f4db5445d585cf4c1088d9a36f68dc543c2dfe370e319): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af015238e57669162dcff4674236b164678e2aa0b9a402a40ec84802f95740ff29794d9fd61ad853c194ecbfb80e0cf43a14eac3333225a576789915820193e5d9e5734485ed5d7379149371482efa040e96b142c90001f65e77dbfe6d238032856ea8f9fad0458bd0fb39c6aa111718a0bae8bfa97e6d372cfbea8e29447f5b3b8e4fab7e13488351eb3b809929aa7a189e39f96406751e3e828c63de4016b1412ef69001ada7776126c16a718533cdc52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fffa3584d9c39232 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 229, 118, 105, 22, 45, 207, 244, 103, 66, 54, 177, 100, 103, 142, 42, 160, 185, 164, 2, 164, 14, 200, 72, 2, 249, 87, 64, 255, 41, 121, 77, 159, 214, 26, 216, 83, 193, 148, 236, 191, 184, 14, 12, 244, 58, 20, 234, 195, 51, 50, 37, 165, 118, 120, 153, 21, 130, 1, 147, 229, 217, 229, 115, 68, 133, 237, 93, 115, 121, 20, 147, 113, 72, 46, 250, 4, 14, 150, 177, 66, 201, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f65e77dbfe6d238032856ea8f9fad045, }, ), received_events: EventHandle { count: 1662297505829474443, key: EventKey( [ 160, 186, 232, 191, 169, 126, 109, 55, 44, 251, 234, 142, 41, 68, 127, 91, 59, 142, 79, 171, 126, 19, 72, 131, ], ), }, sent_events: EventHandle { count: 8838922957926165329, key: EventKey( [ 158, 57, 249, 100, 6, 117, 30, 62, 130, 140, 99, 222, 64, 22, 177, 65, 46, 246, 144, 1, 173, 167, 119, 97, ], ), }, sequence_number: 14253105043923976486, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(580bf8730d38e0631ecc258f770f0a01ebed7a4f6848de2fdf8593206a82d792): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00133b9dd141cfdb6cd5d01dc3d729d0a260b4b0b82b7c318fa825efab288afac45a6cfa7233c2c4e491b5f713d1b710c57bbd68f0201ba72f359a8200b927ae2e20b4aaad261017b8cda291625be174193f4b562616cd15f18d9c53e03af5418ebdbdd980a8c2c507b8c834044108e63e8272bab1c1078f0f1ce77010943ba5e18cd2cffcb13fa4945be97b68a7bed8156775e5f33e60cd1000b9d2e4368ef7f052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812d74c5e451351fb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 185, 221, 20, 28, 253, 182, 205, 93, 1, 220, 61, 114, 157, 10, 38, 11, 75, 11, 130, 183, 195, 24, 250, 130, 94, 250, 178, 136, 175, 172, 69, 166, 207, 167, 35, 60, 44, 78, 73, 27, 95, 113, 61, 27, 113, 12, 87, 187, 214, 143, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ba72f359a8200b927ae2e20b4aaad261, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b8cda291625be174193f4b562616cd1, }, ), received_events: EventHandle { count: 6102099588252506207, key: EventKey( [ 235, 219, 221, 152, 10, 140, 44, 80, 123, 140, 131, 64, 68, 16, 142, 99, 232, 39, 43, 171, 28, 16, 120, 240, ], ), }, sent_events: EventHandle { count: 6825841891191803633, key: EventKey( [ 205, 44, 255, 203, 19, 250, 73, 69, 190, 151, 182, 138, 123, 237, 129, 86, 119, 94, 95, 51, 230, 12, 209, 0, ], ), }, sequence_number: 396298523314658571, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58677ba3a9fafffd3094a5b2625db79ce36ee6a8c98110a9fca24e61148f1271): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920125bdaaa74b1eb9149f38a99621a143d2cfa3017c83148e24859c5d2b31e2c3c638d6e841702201eaae387d269665d547f38d87ac9b8377014ca1e638de5791685133b0f2c8ade4373fcc025536042e1218cc592886b8f7a3fe291d513d30edb44dd0ed9647162ef50aed88a8b9c1ed23481842442f9969221bb9ae00b52c2b0008945117a1e5a8f2e2c41cea3fd42f091a752101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b6eef475aac9aa3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 170, 167, 75, 30, 185, 20, 159, 56, 169, 150, 33, 161, 67, 210, 207, 163, 1, 124, 131, 20, 142, 36, 133, 156, 93, 43, 49, 226, 195, 198, 56, 214, 232, 65, 112, 34, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eaae387d269665d547f38d87ac9b8377, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4ca1e638de5791685133b0f2c8ade437, }, ), received_events: EventHandle { count: 1309989173012384831, key: EventKey( [ 204, 89, 40, 134, 184, 247, 163, 254, 41, 29, 81, 61, 48, 237, 180, 77, 208, 237, 150, 71, 22, 46, 245, 10, ], ), }, sent_events: EventHandle { count: 5198259811214985453, key: EventKey( [ 66, 68, 47, 153, 105, 34, 27, 185, 174, 0, 181, 44, 43, 0, 8, 148, 81, 23, 161, 229, 168, 242, 226, 196, ], ), }, sequence_number: 8438066952861116956, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58c6a8f55af91e51e838bbd1148e9367aec27887e8a08ca8e1f95a2dd4d8b9ac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781be31fadac543003c01ad39165ff6d00261d680134316434419b59e20001885a3f7e48797c41445591c8cd0312ada9981cc6660dd41118f946f3ace5952ac6e8072f1f7b365c5533f19488b632d9942d005e1f2e86a8511817d418bdc573609b8986dceecefb7327be6127e5710259cb1c7792581497cf8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0e9435406e6aeeb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 227, 31, 173, 172, 84, 48, 3, 192, 26, 211, 145, 101, 255, 109, 0, 38, 29, 104, 1, 52, 49, 100, 52, 65, 155, 89, 226, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 885a3f7e48797c41445591c8cd0312ad, }, ), received_events: EventHandle { count: 1284666528769022121, key: EventKey( [ 249, 70, 243, 172, 229, 149, 42, 198, 232, 7, 47, 31, 123, 54, 92, 85, 51, 241, 148, 136, 182, 50, 217, 148, ], ), }, sent_events: EventHandle { count: 5884100445812424749, key: EventKey( [ 23, 212, 24, 189, 197, 115, 96, 155, 137, 134, 220, 238, 206, 251, 115, 39, 190, 97, 39, 229, 113, 2, 89, 203, ], ), }, sequence_number: 10146494599130150684, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58dc2baf06255c2ddecf16b8e77cfea6339294a965046c6ae2dfc987f088f42c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a1dec4b910cb6ea03b46420e6322d87daa6fbf10828116338bf6f2fc0fb480001348b39e01aeab20610f323410a4e4040afe2a5ee04584d49189e5c525163adc795b54c004559fe8e585fa52c69a48e07da4e774c04cd770e181841ac05819ddf4b24ac854fbe49e1bda20fe2a8e87f1ef5729222c1e7d6b74a0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a5ee95b1bd6be6e7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 75, 145, 12, 182, 234, 3, 180, 100, 32, 230, 50, 45, 135, 218, 166, 251, 241, 8, 40, 17, 99, 56, 191, 111, 47, 192, 251, 72, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 348b39e01aeab20610f323410a4e4040, }, ), received_events: EventHandle { count: 5281974716182422191, key: EventKey( [ 158, 92, 82, 81, 99, 173, 199, 149, 181, 76, 0, 69, 89, 254, 142, 88, 95, 165, 44, 105, 164, 142, 7, 218, ], ), }, sent_events: EventHandle { count: 1733454629008340814, key: EventKey( [ 65, 172, 5, 129, 157, 223, 75, 36, 172, 133, 79, 190, 73, 225, 189, 162, 15, 226, 168, 232, 127, 30, 245, 114, ], ), }, sequence_number: 813664816332874386, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(58e3ecb921b90df552397cba4ba351490f7d9c979bb84f43994e595f449ab87b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155a9ff8854b94629f1fc562408157103b268d580bb618da051c5685e3ec32724023b91602f5d000c603dcf918a4c62f8d1a434e790deea4f528d0a4c51e88b985cf24e80d10492fafbb44ecbc8f9d5da5b6c7f27bd2e0001a642afb2a8dc0ea737f05f0eccbd915281f6733c93bc757018dad6ac82a962d9222b4167466791e177335838b7608b170ff55d48d9af9d880618e802823a109dd27c36340fc323d25df081e494eeb973dbc0ade475b9ed996ae42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708973c7b55c552cdf2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 255, 136, 84, 185, 70, 41, 241, 252, 86, 36, 8, 21, 113, 3, 178, 104, 213, 128, 187, 97, 141, 160, 81, 197, 104, 94, 62, 195, 39, 36, 2, 59, 145, 96, 47, 93, 0, 12, 96, 61, 207, 145, 138, 76, 98, 248, 209, 164, 52, 231, 144, 222, 234, 79, 82, 141, 10, 76, 81, 232, 139, 152, 92, 242, 78, 128, 209, 4, 146, 250, 251, 180, 78, 203, 200, 249, 213, 218, 91, 108, 127, 39, 189, 46, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a642afb2a8dc0ea737f05f0eccbd9152, }, ), received_events: EventHandle { count: 8103590445083522689, key: EventKey( [ 218, 214, 172, 130, 169, 98, 217, 34, 43, 65, 103, 70, 103, 145, 225, 119, 51, 88, 56, 183, 96, 139, 23, 15, ], ), }, sent_events: EventHandle { count: 470799539650452981, key: EventKey( [ 232, 2, 130, 58, 16, 157, 210, 124, 54, 52, 15, 195, 35, 210, 93, 240, 129, 228, 148, 238, 185, 115, 219, 192, ], ), }, sequence_number: 16459137034476709037, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a1d03e8c9e9e7529638ed5a15f29115cb571b9d7a3a3947eb5ea65e965330af): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c0016383b7c150ffeea9f08a94245e9461f85b880622e4321572fdda7a80f5683f5dd92d2f9ab0351112c4bbe0cb8c99eb788b67e70dd7ef6a94ebbe0ac153de60602f96978aa309e9a54eb42279164fd3414c01498b2cbbeed12574091b6fa84069e43b9fc601ddffb79575e0fefa01510ee17991036600108a0bff799c152418e1b4e879669ad3a9c1b0aa139df0a0db671335f2df6457b388f28625d43b20531811017ec280c84bd1017d1a03c42dbbae8f938ce160a3036af609cbf45ad10cc72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088dbe797b14ac439e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 183, 193, 80, 255, 238, 169, 240, 138, 148, 36, 94, 148, 97, 248, 91, 136, 6, 34, 228, 50, 21, 114, 253, 218, 122, 128, 245, 104, 63, 93, 217, 45, 47, 154, 176, 53, 17, 18, 196, 187, 224, 203, 140, 153, 235, 120, 139, 103, 231, 13, 215, 239, 106, 148, 235, 190, 10, 193, 83, 222, 96, 96, 47, 150, 151, 138, 163, 9, 233, 165, 78, 180, 34, 121, 22, 79, 211, 65, 76, 1, 73, 139, 44, 187, 238, 209, 37, 116, 9, 27, 111, 168, 64, 105, 228, 59, 159, 198, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ddffb79575e0fefa01510ee179910366, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2600156407660251664, key: EventKey( [ 225, 180, 232, 121, 102, 154, 211, 169, 193, 176, 170, 19, 157, 240, 160, 219, 103, 19, 53, 242, 223, 100, 87, 179, ], ), }, sent_events: EventHandle { count: 5989853286751466120, key: EventKey( [ 17, 1, 126, 194, 128, 200, 75, 209, 1, 125, 26, 3, 196, 45, 187, 174, 143, 147, 140, 225, 96, 163, 3, 106, ], ), }, sequence_number: 14343069101852396022, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a8764af24142b3211b80d734048e08f6e9f5dfda36071ee9cde1a81a4c108da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98c011fc00ee02680bd376ed6a879072033c163fc72dff6c540e9fbbdacea2cfbf99a019ce7eeed6dd384c5efbc24f9e5fa1e6901aac693f9ac2ef9566d719532521a872db2d8f389eef6be7418fc9b09880d6e85b94cc60bc62b0c974421611724cac55c4b49407aa96d61155d1807b0ae8cb7004b355e29dc3191d08f13f11390f26450861e0e42f33f29b02fe92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082724d6347cf5c01a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 14, 224, 38, 128, 189, 55, 110, 214, 168, 121, 7, 32, 51, 193, 99, 252, 114, 223, 246, 197, 64, 233, 251, 189, 172, 234, 44, 251, 249, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9ce7eeed6dd384c5efbc24f9e5fa1e69, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: aac693f9ac2ef9566d719532521a872d, }, ), received_events: EventHandle { count: 8412432658351773874, key: EventKey( [ 252, 155, 9, 136, 13, 110, 133, 185, 76, 198, 11, 198, 43, 12, 151, 68, 33, 97, 23, 36, 202, 197, 92, 75, ], ), }, sent_events: EventHandle { count: 6707374343660912713, key: EventKey( [ 7, 176, 174, 140, 183, 0, 75, 53, 94, 41, 220, 49, 145, 208, 143, 19, 241, 19, 144, 242, 100, 80, 134, 30, ], ), }, sequence_number: 16802842425955664398, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5a9da43b498d97c35f7c83e4694d79b185e0b604d643d81f823ac9ee6e969247): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60139fe042be6b2bc3c74c393a32433a3b15b93966264f12ba44982dd592e1c7da5b049d3f400f4785aadf234a2b48da0c27c63d553efaf7162cd5301fb60fd43f1db2884926f2f39ff4955d101d74af3883d1ef829337fd9be93fc2f79d2902b3bfb97b61d18be7097d8e777287c0d26aae99c10e635144ef9ccbbe656b105e118ad65f8c029185b30ef3f09ed0a21c1f984d0b32a008aa3a89f68a4a1d8805f32c4b0cf607b9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e928bb42981f6713 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 4, 43, 230, 178, 188, 60, 116, 195, 147, 163, 36, 51, 163, 177, 91, 147, 150, 98, 100, 241, 43, 164, 73, 130, 221, 89, 46, 28, 125, 165, 176, 73, 211, 244, 0, 244, 120, 90, 173, 242, 52, 162, 180, 141, 160, 194, 124, 99, 213, 83, 239, 175, 113, 98, 205, 83, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fb60fd43f1db2884926f2f39ff4955d1, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d74af3883d1ef829337fd9be93fc2f79, }, ), received_events: EventHandle { count: 2141065778146545874, key: EventKey( [ 190, 112, 151, 216, 231, 119, 40, 124, 13, 38, 170, 233, 156, 16, 230, 53, 20, 78, 249, 204, 187, 230, 86, 177, ], ), }, sent_events: EventHandle { count: 3008677666662965509, key: EventKey( [ 91, 48, 239, 63, 9, 237, 10, 33, 193, 249, 132, 208, 179, 42, 0, 138, 163, 168, 159, 104, 164, 161, 216, 128, ], ), }, sequence_number: 11347770131230241375, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5aabac9268be5896077e87b402c2ed8f53ebf0980391afbf713c781cd1c7da81): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c44c03e84c5addb2c3676ce6d00010e1f9f585a29ac2e06e1d661d254201a0888ac81761a7c7418bc554b56cc492937414d2824940c40824d88f3b49a2eccc178ed3573a5c60e0718ed23cc032c1f9e564e4c0ccfa02402d9bc1675f6ad40d0985e8c85233a4f89042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70897cdd5625e2d4a5c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, 192, 62, 132, 197, 173, 219, 44, 54, 118, 206, 109, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0e1f9f585a29ac2e06e1d661d254201a, }, ), received_events: EventHandle { count: 8393612901795792904, key: EventKey( [ 188, 85, 75, 86, 204, 73, 41, 55, 65, 77, 40, 36, 148, 12, 64, 130, 77, 136, 243, 180, 154, 46, 204, 193, ], ), }, sent_events: EventHandle { count: 508562221844262264, key: EventKey( [ 237, 35, 204, 3, 44, 31, 158, 86, 78, 76, 12, 207, 160, 36, 2, 217, 188, 22, 117, 246, 173, 64, 208, 152, ], ), }, sequence_number: 326879559083723870, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5b2ceb169bfb78b05db89a453ebe5dad46089d513c93a1f376c191f657cf0bb8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b0ea8d2ce71e4a00aac5662938bfbc80172429317711e889a72a36c1744e1835801ae0f70c4ab47a8aa5e7271341ef15938dc501ee46573f30218076d787321196f1d30c7bbc9187aa8dab2f8889110e2c788fdbeac2e5bf182331832bcdc486a1d2fe07e33490a00ecae6bcdd643a110a31180d4434627eb1b87712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70844080b1993ba6baa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 210, 206, 113, 228, 160, 10, 172, 86, 98, 147, 139, 251, 200, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 72429317711e889a72a36c1744e18358, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae0f70c4ab47a8aa5e7271341ef15938, }, ), received_events: EventHandle { count: 212640488872628444, key: EventKey( [ 7, 109, 120, 115, 33, 25, 111, 29, 48, 199, 187, 201, 24, 122, 168, 218, 178, 248, 136, 145, 16, 226, 199, 136, ], ), }, sent_events: EventHandle { count: 3711794416834100989, key: EventKey( [ 50, 188, 220, 72, 106, 29, 47, 224, 126, 51, 73, 10, 0, 236, 174, 107, 205, 214, 67, 161, 16, 163, 17, 128, ], ), }, sequence_number: 8180537944931976148, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bc04a070ff8e41a3c693708d2de2a1a20687b4f827084f4b84d138a15c9c890): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e5eb3141cd704f72c5f95595bc1f801d7eaff095c7c486f50cd481805e9862600358bf8a05fe40c1318487273bd23ea83a23153bb30c97c63b021066f277c13878798232c3cd1f57b04183a08e821691f614879f5b34adcf9dccb66bc5225e08fb67764ab680ef10f71c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086231a61177b88680 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 94, 179, 20, 28, 215, 4, 247, 44, 95, 149, 89, 91, 193, 248, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d7eaff095c7c486f50cd481805e98626, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1372723085814827829, key: EventKey( [ 72, 114, 115, 189, 35, 234, 131, 162, 49, 83, 187, 48, 201, 124, 99, 176, 33, 6, 111, 39, 124, 19, 135, 135, ], ), }, sent_events: EventHandle { count: 323122077293618072, key: EventKey( [ 58, 8, 232, 33, 105, 31, 97, 72, 121, 245, 179, 74, 220, 249, 220, 203, 102, 188, 82, 37, 224, 143, 182, 119, ], ), }, sequence_number: 13866882255653743460, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bcb5e4751690fd0c1941978ef70d797e5b2ee5e10374ab301e84268f0faf7fb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800123f5ee519273b1049924696ce23a2172568dbd32e7931c48da9ac7c78ef05da5262c731100018a7667c03ec08b65480887bec9c26d7ae0ab0b47252eb21a18e1668f8cad82336085c375e16e702dece046df9c4a226f80218c194f443edb7018040ed90bc55cbb218b8b2f0b470b10104db95335ed3ab67bfd199b8aed337bce2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086d7d5e345fa3dd8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 245, 238, 81, 146, 115, 177, 4, 153, 36, 105, 108, 226, 58, 33, 114, 86, 141, 189, 50, 231, 147, 28, 72, 218, 154, 199, 199, 142, 240, 93, 165, 38, 44, 115, 17, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8a7667c03ec08b65480887bec9c26d7a, }, ), received_events: EventHandle { count: 1923650728481237984, key: EventKey( [ 225, 102, 143, 140, 173, 130, 51, 96, 133, 195, 117, 225, 110, 112, 45, 236, 224, 70, 223, 156, 74, 34, 111, 128, ], ), }, sent_events: EventHandle { count: 8132162015253335073, key: EventKey( [ 4, 14, 217, 11, 197, 92, 187, 33, 139, 139, 47, 11, 71, 11, 16, 16, 77, 185, 83, 53, 237, 58, 182, 123, ], ), }, sequence_number: 14878542889274251773, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5bfa2e9b3e4967596c592da96aa44a7c0da0aa684d1bc05ae576c55d7190f0a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9550888fbd1d9a53c8318000059135d7911e1357a18dde7433afdae2407465ee7a6c28091226ded1d0b67e5fd9436ed108d1583eb7f18b68740348a6fbb58f81659a9995340e4995993d9901712ac66bb81c25327d07f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708872b074726e2f550 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 251, 209, 217, 165, 60, 131, 24, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8806192111559709529, key: EventKey( [ 221, 231, 67, 58, 253, 174, 36, 7, 70, 94, 231, 166, 194, 128, 145, 34, 109, 237, 29, 11, 103, 229, 253, 148, ], ), }, sent_events: EventHandle { count: 9217605190928100662, key: EventKey( [ 182, 135, 64, 52, 138, 111, 187, 88, 248, 22, 89, 169, 153, 83, 64, 228, 153, 89, 147, 217, 144, 23, 18, 172, ], ), }, sequence_number: 9209904478671715174, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5cf229c3b1c1f4ded0b7329f46155b69582b9d04e88b9c998dd6395b37462cc0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01518f6a7034a466d9d138c4297b366dcc5cabc363fa52a69f25b9120dd8582f071bb341c5c48d897f2399b56ef3f55131155f817455200e34d023ddb175550958612eaf0133218054498c4bb4448d9dcf13a500007c1be0b09c1e3e68188c546ef6fa3f62cab52e63aeda49d6906f1389ebf59204d62ba6e106942d023418d1326aa6db0e482a6639bd05cee17713d59148679e2c540ee10059ee5a843b252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089ce7f203781932c2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 106, 112, 52, 164, 102, 217, 209, 56, 196, 41, 123, 54, 109, 204, 92, 171, 195, 99, 250, 82, 166, 159, 37, 185, 18, 13, 216, 88, 47, 7, 27, 179, 65, 197, 196, 141, 137, 127, 35, 153, 181, 110, 243, 245, 81, 49, 21, 95, 129, 116, 85, 32, 14, 52, 208, 35, 221, 177, 117, 85, 9, 88, 97, 46, 175, 1, 51, 33, 128, 84, 73, 140, 75, 180, 68, 141, 157, 207, 19, 165, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7511474886831774588, key: EventKey( [ 140, 84, 110, 246, 250, 63, 98, 202, 181, 46, 99, 174, 218, 73, 214, 144, 111, 19, 137, 235, 245, 146, 4, 214, ], ), }, sent_events: EventHandle { count: 3747607953719535147, key: EventKey( [ 209, 50, 106, 166, 219, 14, 72, 42, 102, 57, 189, 5, 206, 225, 119, 19, 213, 145, 72, 103, 158, 44, 84, 14, ], ), }, sequence_number: 2682883529109995745, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5d15c015aea0f7fb0875787947bccfc4b67a045d404a90865e57240e0c0f0542): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601590dca499ec762c4b656f510fe1f451fd9309a08565f0250e275e405057515e5438020e3588b40b1fdcffce14d9df6ec9135141991c2367db60a5d1c9d572f75c3d7c530fb79eee2c60ac562bd761d2f59521b4ba871ccae39ae0135eb4cdccaa02c1ac6c1ce10dc092a2e0120a36a5d3ce2f90d29ad5de3662ecd9d2c18a409a983b0651848102b0b5828389cf2385c1a59500dcfd14aba356521803de7b2deaefcef7b3618cda34e37225f2b9a319445acdde25051a1b9e026c569f199f216458956e59cff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086b3854c8d8ffc395 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 202, 73, 158, 199, 98, 196, 182, 86, 245, 16, 254, 31, 69, 31, 217, 48, 154, 8, 86, 95, 2, 80, 226, 117, 228, 5, 5, 117, 21, 229, 67, 128, 32, 227, 88, 139, 64, 177, 253, 207, 252, 225, 77, 157, 246, 236, 145, 53, 20, 25, 145, 194, 54, 125, 182, 10, 93, 28, 157, 87, 47, 117, 195, 215, 197, 48, 251, 121, 238, 226, 198, 10, 197, 98, 189, 118, 29, 47, 89, 82, 27, 75, 168, 113, 204, 174, 57, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 35eb4cdccaa02c1ac6c1ce10dc092a2e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 20a36a5d3ce2f90d29ad5de3662ecd9d, }, ), received_events: EventHandle { count: 7327501355766257708, key: EventKey( [ 72, 16, 43, 11, 88, 40, 56, 156, 242, 56, 92, 26, 89, 80, 13, 207, 209, 74, 186, 53, 101, 33, 128, 61, ], ), }, sent_events: EventHandle { count: 3925995368728146663, key: EventKey( [ 205, 163, 78, 55, 34, 95, 43, 154, 49, 148, 69, 172, 221, 226, 80, 81, 161, 185, 224, 38, 197, 105, 241, 153, ], ), }, sequence_number: 18418848735871440626, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5d3df65646f291c1b6f8717c298998f513b1cb531a09bc30afaa4ea861adc3f5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9920135c76a8fde7163ef5dc8d7ecf4857350aa76737e6c88373279a133a229d6ee7f7e88688b043219927b3ef945da5b63e6e3990457d20e0001fdfc8ecba22fe9ab84c036c160d73133d9eaa3255113a61418aba99f8f4c2ab686b67802e521f58412b696c364291cdcf3122e217c616caa1418214d0ec39ced4360c2fff4fbaa0fd2db8fcf5946a9456f636ed7e0c20974e09c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4027b9da5d6843c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 106, 143, 222, 113, 99, 239, 93, 200, 215, 236, 244, 133, 115, 80, 170, 118, 115, 126, 108, 136, 55, 50, 121, 161, 51, 162, 41, 214, 238, 127, 126, 136, 104, 139, 4, 50, 25, 146, 123, 62, 249, 69, 218, 91, 99, 230, 227, 153, 4, 87, 210, 14, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fdfc8ecba22fe9ab84c036c160d73133, }, ), received_events: EventHandle { count: 1487897966137305817, key: EventKey( [ 171, 169, 159, 143, 76, 42, 182, 134, 182, 120, 2, 229, 33, 245, 132, 18, 182, 150, 195, 100, 41, 28, 220, 243, ], ), }, sent_events: EventHandle { count: 1489121792749547026, key: EventKey( [ 33, 77, 14, 195, 156, 237, 67, 96, 194, 255, 244, 251, 170, 15, 210, 219, 143, 207, 89, 70, 169, 69, 111, 99, ], ), }, sequence_number: 11304162649972987758, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5db424a4fff79e6645c04175c6c4d8d48c11e6ab5e117381a15ee45275e90b92): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97023549238e9ec39b7e9e14758ba2690c91ea46bcea7ab300a09b62dd756d4543aecee71760000c42cedff1486c077184cef05dbfd9268043362cc0e5bdda5f747f6e56399edf2a3c1e3b5bace22cc051832822efa657561e9d043ba3199ce90bbfae17cb326b0befbd785e6ca05fd28442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c7daa79e0d03cab0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 146, 56, 233, 236, 57, 183, 233, 225, 71, 88, 186, 38, 144, 201, 30, 164, 107, 206, 167, 171, 48, 10, 9, 182, 45, 215, 86, 212, 84, 58, 236, 238, 113, 118, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8629044310793071812, key: EventKey( [ 76, 239, 5, 219, 253, 146, 104, 4, 51, 98, 204, 14, 91, 221, 165, 247, 71, 246, 229, 99, 153, 237, 242, 163, ], ), }, sent_events: EventHandle { count: 417747136729703361, key: EventKey( [ 50, 130, 46, 250, 101, 117, 97, 233, 208, 67, 186, 49, 153, 206, 144, 187, 250, 225, 124, 179, 38, 176, 190, 251, ], ), }, sequence_number: 4911453594968294871, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5e123344bd4467c1fecf86505b8c6f6f25f3ddee9659479073bebbd2cb397bb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d102f57033c6c5ebaf740460aacefc594be0000ed5fa62cb1bbf33f18360589a19db491e6ab0b0bcc15ef103575d89393420459734f05c91b66f9e565183c2df8256530c8fdec1b6e4e4e101fcd5fd1ea5e1548cca8e76c93c71378dca62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ad55411a78cae545 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 47, 87, 3, 60, 108, 94, 186, 247, 64, 70, 10, 172, 239, 197, 148, 190, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4608233213362855917, key: EventKey( [ 54, 5, 137, 161, 157, 180, 145, 230, 171, 11, 11, 204, 21, 239, 16, 53, 117, 216, 147, 147, 66, 4, 89, 115, ], ), }, sent_events: EventHandle { count: 7342548984445601103, key: EventKey( [ 60, 45, 248, 37, 101, 48, 200, 253, 236, 27, 110, 78, 78, 16, 31, 205, 95, 209, 234, 94, 21, 72, 204, 168, ], ), }, sequence_number: 12023617131520421095, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5e7fab44b6eee35b631ce349284362321ae5fa6c640f38fb40df5e243c856008): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141df4b9021d8426dee81245d30f9f7b3eb8a97fcc7bc8a36b944818be7d5e9472d79ba343d08a262888447068f68879597dad6593d51f14f88cff657f6135780c0330191e3730a887c6a229ef91d7af6af8d2a01e1e0573dff33088f7816a5f4860d19c15a4ccd4525224c5418f9f3a2408a8baaf01e570e68c22053b132b63729d46b8d2ba40b969784c29f30186e5d8f72a14383b91938e9528c3beadfc7d905a40414a85768645835c1fc75362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708307607220a1dcebc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 75, 144, 33, 216, 66, 109, 238, 129, 36, 93, 48, 249, 247, 179, 235, 138, 151, 252, 199, 188, 138, 54, 185, 68, 129, 139, 231, 213, 233, 71, 45, 121, 186, 52, 61, 8, 162, 98, 136, 132, 71, 6, 143, 104, 135, 149, 151, 218, 214, 89, 61, 81, 241, 79, 136, 207, 246, 87, 246, 19, 87, 128, 192, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 91e3730a887c6a229ef91d7af6af8d2a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e1e0573dff33088f7816a5f4860d19c1, }, ), received_events: EventHandle { count: 6074267540896173146, key: EventKey( [ 249, 243, 162, 64, 138, 139, 170, 240, 30, 87, 14, 104, 194, 32, 83, 177, 50, 182, 55, 41, 212, 107, 141, 43, ], ), }, sent_events: EventHandle { count: 3503732909852199844, key: EventKey( [ 110, 93, 143, 114, 161, 67, 131, 185, 25, 56, 233, 82, 140, 59, 234, 223, 199, 217, 5, 164, 4, 20, 168, 87, ], ), }, sequence_number: 3924320557077128296, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5ea21c13df7edd0d2787709946beab1ef4b7654254d6c4ac08bea02b3fcd7328): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96518b008ccd2eaf72169b731ce2541176a4ac274caeccbc92909000008c47db659e8a1601806dd4efe09258f5e43f89e9205bcb2ff156afd5bea3bcb47085faf62afa2fe1a186182d2424f156811d8145671fbf5269311ffd847cee762991f85eb74f01773aa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e15c64528a871182 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 176, 8, 204, 210, 234, 247, 33, 105, 183, 49, 206, 37, 65, 23, 106, 74, 194, 116, 202, 236, 203, 201, 41, 9, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6963101970902926344, key: EventKey( [ 6, 221, 78, 254, 9, 37, 143, 94, 67, 248, 158, 146, 5, 188, 178, 255, 21, 106, 253, 91, 234, 59, 203, 71, ], ), }, sent_events: EventHandle { count: 1945170963229269768, key: EventKey( [ 97, 130, 210, 66, 79, 21, 104, 17, 216, 20, 86, 113, 251, 245, 38, 147, 17, 255, 216, 71, 206, 231, 98, 153, ], ), }, sequence_number: 12282186930290656543, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f50781398031bcc1b5a029d760fb7ab5dbe510cf9e8530645978fafda77309b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f0152794680ded2e8fa615c94de88ccb2ba4c440a412dec93b8f6f98bce7a49f87a8b7a7fd04ca0db37385920cd346cc300eec8e0ea9791042a37fa883d0e24f8f18f1573ae5337a5f428f87334e3a558e9766f230000bb70172e0030176018fec7fc2fb3d823ed7f5fbf9627c88c3d39e887a1781d5cc0a2de4c1ea535617c18ed9643de4dc813f21b5de6535755b0377b178f327d5dfbb498105dfd3129352c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b7bb74bac66ec51 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 70, 128, 222, 210, 232, 250, 97, 92, 148, 222, 136, 204, 178, 186, 76, 68, 10, 65, 45, 236, 147, 184, 246, 249, 139, 206, 122, 73, 248, 122, 139, 122, 127, 208, 76, 160, 219, 55, 56, 89, 32, 205, 52, 108, 195, 0, 238, 200, 224, 234, 151, 145, 4, 42, 55, 250, 136, 61, 14, 36, 248, 241, 143, 21, 115, 174, 83, 55, 165, 244, 40, 248, 115, 52, 227, 165, 88, 233, 118, 111, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6924055729436848315, key: EventKey( [ 254, 199, 252, 47, 179, 216, 35, 237, 127, 95, 191, 150, 39, 200, 140, 61, 57, 232, 135, 161, 120, 29, 92, 192, ], ), }, sent_events: EventHandle { count: 8962503716738227874, key: EventKey( [ 237, 150, 67, 222, 77, 200, 19, 242, 27, 93, 230, 83, 87, 85, 176, 55, 123, 23, 143, 50, 125, 93, 251, 180, ], ), }, sequence_number: 3185497606115365016, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f6151b951f85c8ec2a7db141947c4203472a14d914aff1cd4f16bdf41a25374): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e92d819c0be21d90871773b86b669e17d7e719f2eb237624d07f15d40d0f067480fb1a21d05770462bb35c332c2d56f2bf69ca46a6fe091118c0a42804000d9d772839af0bc59c7b244db2edfd90caa1b70d5f0f04a720f4249262b16b5f4000156fd26e9632e9f802930fc24939db08261b5f68a7fb4943c1849e4f4991ab43b6342678419da9ca3e6a73ab5d69b9e190a4a94d0d485ebda4518876262d25290f28c834ec8363f463362920bfb20e3f97ea907a0848eae9171392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708183880c77e9112bf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 216, 25, 192, 190, 33, 217, 8, 113, 119, 59, 134, 182, 105, 225, 125, 126, 113, 159, 46, 178, 55, 98, 77, 7, 241, 93, 64, 208, 240, 103, 72, 15, 177, 162, 29, 5, 119, 4, 98, 187, 53, 195, 50, 194, 213, 111, 43, 246, 156, 164, 106, 111, 224, 145, 17, 140, 10, 66, 128, 64, 0, 217, 215, 114, 131, 154, 240, 188, 89, 199, 178, 68, 219, 46, 223, 217, 12, 170, 27, 112, 213, 240, 240, 74, 114, 15, 66, 73, 38, 43, 22, 181, 244, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 56fd26e9632e9f802930fc24939db082, }, ), received_events: EventHandle { count: 4365312398714123617, key: EventKey( [ 73, 228, 244, 153, 26, 180, 59, 99, 66, 103, 132, 25, 218, 156, 163, 230, 167, 58, 181, 214, 155, 158, 25, 10, ], ), }, sent_events: EventHandle { count: 5033594493573567562, key: EventKey( [ 135, 98, 98, 210, 82, 144, 242, 140, 131, 78, 200, 54, 63, 70, 51, 98, 146, 11, 251, 32, 227, 249, 126, 169, ], ), }, sequence_number: 4139249711431589895, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f662adc48a199d8c973762c7ca15394448210bcc0e3deab549393be5beb8b46): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32772ae9060df6ff7d7435f96ea38e2bd1c3c5b28140b3aa77338f1ddbf57579f301e7050748c04d9e7a47129f19ba2738838600001f62e4d43b814c15183f27e517d1b2c888a02b8766492853149e8a31e6f53d8985e32fab017da7324b18e7e8a8cda141f3e75ea3fc5643c5930eaa48bc9ba4f8bc1789aed3f22fd7179d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087443f29a79fd8efa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, 42, 233, 6, 13, 246, 255, 125, 116, 53, 249, 110, 163, 142, 43, 209, 195, 197, 178, 129, 64, 179, 170, 119, 51, 143, 29, 219, 245, 117, 121, 243, 1, 231, 5, 7, 72, 192, 77, 158, 122, 71, 18, 159, 25, 186, 39, 56, 131, 134, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1534743667001287199, key: EventKey( [ 63, 39, 229, 23, 209, 178, 200, 136, 160, 43, 135, 102, 73, 40, 83, 20, 158, 138, 49, 230, 245, 61, 137, 133, ], ), }, sent_events: EventHandle { count: 5418577457020874723, key: EventKey( [ 231, 232, 168, 205, 161, 65, 243, 231, 94, 163, 252, 86, 67, 197, 147, 14, 170, 72, 188, 155, 164, 248, 188, 23, ], ), }, sequence_number: 11319752789356424841, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(5f6840a6db088a2b0ca7a169b72931dd3105b2cf6b05ae0cc9881fbd82eef79f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130cd4050be577097f0a8a16bb3d0e9d0b8a77ecf99d484a56a8e50eff2ea1d986f1cc688047ffe0aea75f9ecc87613497700010aefc42e677bd24f0c7ef554f49f98b6348cc19f3d8ad00f1831eab3f4c23a2e182fd0e744fb09071a7ba9e7988603bea73d116d474de2957e187fd62e5dae4033ff612342faf3a502b7ca633a9d508cbf902f5d48821144809f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70886e6586bd454a7a2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 64, 80, 190, 87, 112, 151, 240, 168, 161, 107, 179, 208, 233, 208, 184, 167, 126, 207, 153, 212, 132, 165, 106, 142, 80, 239, 242, 234, 29, 152, 111, 28, 198, 136, 4, 127, 254, 10, 234, 117, 249, 236, 200, 118, 19, 73, 119, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0aefc42e677bd24f0c7ef554f49f98b6, }, ), received_events: EventHandle { count: 1139562703002635316, key: EventKey( [ 49, 234, 179, 244, 194, 58, 46, 24, 47, 208, 231, 68, 251, 9, 7, 26, 123, 169, 231, 152, 134, 3, 190, 167, ], ), }, sent_events: EventHandle { count: 9121445441847497021, key: EventKey( [ 127, 214, 46, 93, 174, 64, 51, 255, 97, 35, 66, 250, 243, 165, 2, 183, 202, 99, 58, 157, 80, 140, 191, 144, ], ), }, sequence_number: 11493261091040419119, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6077686e77523c227bb56ff2d242b3ebc12e6da1fa1ebdcaa0b11b8aab5db167): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a1f9c0f6a71ef20b9ce92b3689520b73072720d52a070c02692a29baa9c7d2e32e418a300abab282ed5b99ca303ad22cf145b57f51b51669713e5bfd8c1020bc958c9da61e3477b59fca244699823916335a91b5e75142cc4ba2000015627b9e1d96464a5c0bd8a19e572fe13f87f432c9726fa5c18c737812b19ac5f6bfc0d37f0dbe28ef14f7c21ed7ce755ed571b11fc538963161805b40015afb0dd123e71eeedb3a2db88ae621ce96cf89a6362c919302a7b266f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083eeecf35d38e3f45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 156, 15, 106, 113, 239, 32, 185, 206, 146, 179, 104, 149, 32, 183, 48, 114, 114, 13, 82, 160, 112, 192, 38, 146, 162, 155, 170, 156, 125, 46, 50, 228, 24, 163, 0, 171, 171, 40, 46, 213, 185, 156, 163, 3, 173, 34, 207, 20, 91, 87, 245, 27, 81, 102, 151, 19, 229, 191, 216, 193, 2, 11, 201, 88, 201, 218, 97, 227, 71, 123, 89, 252, 162, 68, 105, 152, 35, 145, 99, 53, 169, 27, 94, 117, 20, 44, 196, 186, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5627b9e1d96464a5c0bd8a19e572fe13, }, ), received_events: EventHandle { count: 6699709826391572472, key: EventKey( [ 199, 55, 129, 43, 25, 172, 95, 107, 252, 13, 55, 240, 219, 226, 142, 241, 79, 124, 33, 237, 124, 231, 85, 237, ], ), }, sent_events: EventHandle { count: 1613284085333039959, key: EventKey( [ 5, 180, 0, 21, 175, 176, 221, 18, 62, 113, 238, 237, 179, 162, 219, 136, 174, 98, 28, 233, 108, 248, 154, 99, ], ), }, sequence_number: 8009224408450845026, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(61eb73ea5e891cdd0f7421374328828d1aefe885f3f6df48fb7ee553ff82fcb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01209284e7bc1007034a6e619573a5afb6141e0d231fec14466dabe090a3081993f401adb4aa1ba2c61a15d974e8cc01f0878d01bd4403a1d2985f93d309dc232dbf39c9f2f913963ab2cb6e18f065eee3da17325f2f06ca8bcd48118f0ff335823b16d4e7cb449c748d38db3e182b685cecfab3653c302018dd785fe9aa7d827d587312b2f72fabaa0d551a908d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084107ea2b33e17bbd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 146, 132, 231, 188, 16, 7, 3, 74, 110, 97, 149, 115, 165, 175, 182, 20, 30, 13, 35, 31, 236, 20, 70, 109, 171, 224, 144, 163, 8, 25, 147, 244, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: adb4aa1ba2c61a15d974e8cc01f0878d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd4403a1d2985f93d309dc232dbf39c9, }, ), received_events: EventHandle { count: 7983670729140074994, key: EventKey( [ 240, 101, 238, 227, 218, 23, 50, 95, 47, 6, 202, 139, 205, 72, 17, 143, 15, 243, 53, 130, 59, 22, 212, 231, ], ), }, sent_events: EventHandle { count: 4529276030449108171, key: EventKey( [ 43, 104, 92, 236, 250, 179, 101, 60, 48, 32, 24, 221, 120, 95, 233, 170, 125, 130, 125, 88, 115, 18, 178, 247, ], ), }, sequence_number: 10200682108598004527, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6236eaefb86c58c4b8de42bd4a25063667090ac2f2526e5622a62771ccb5c0fc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9721572d3efe1c98bec704390065f8d004eee5d906159c100013fceac6c8ebe23cdfc8cffa79e0eb235fccafb5b4974da07187d907a1a59ddaeddbe8d114d1e6341a97a5dde354ca74e8e94558836c7c9392c18a8ca3308ec0082eb021f8ccbd89cb9e6a7325e41fd2b9746824c19168a71d3872101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708af6e909d798a5aef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 211, 239, 225, 201, 139, 236, 112, 67, 144, 6, 95, 141, 0, 78, 238, 93, 144, 97, 89, 193, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3fceac6c8ebe23cdfc8cffa79e0eb235, }, ), received_events: EventHandle { count: 565892561613081340, key: EventKey( [ 125, 144, 122, 26, 89, 221, 174, 221, 190, 141, 17, 77, 30, 99, 65, 169, 122, 93, 222, 53, 76, 167, 78, 142, ], ), }, sent_events: EventHandle { count: 3186800068791915924, key: EventKey( [ 168, 202, 51, 8, 236, 0, 130, 235, 2, 31, 140, 203, 216, 156, 185, 230, 167, 50, 94, 65, 253, 43, 151, 70, ], ), }, sequence_number: 9787291253096402050, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(63094ed5135207959f5d5999505e7c6628c5529299a91fad0e5c873d4f892d30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770a9dd17689e4af507d73820143da962b3cc13dfd271c9bd4560ae45701e8752a89ff4ce4f88b5b24b847f4f853af9051f04366417a181649348d4a2b54a156db56efa656024f01649dfd743134a2f42bb3fd5843bd2d187fabeb994bb646b3b086750d247650543df764e9a5ad1aa7134fcebf327892542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cea40b83862964eb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 209, 118, 137, 228, 175, 80, 125, 115, 130, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 43da962b3cc13dfd271c9bd4560ae457, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e8752a89ff4ce4f88b5b24b847f4f853, }, ), received_events: EventHandle { count: 8809434788094120111, key: EventKey( [ 22, 73, 52, 141, 74, 43, 84, 161, 86, 219, 86, 239, 166, 86, 2, 79, 1, 100, 157, 253, 116, 49, 52, 162, ], ), }, sent_events: EventHandle { count: 3295864551797631988, key: EventKey( [ 127, 171, 235, 153, 75, 182, 70, 179, 176, 134, 117, 13, 36, 118, 80, 84, 61, 247, 100, 233, 165, 173, 26, 167, ], ), }, sequence_number: 6094065405147369235, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6393434fc42b6146a7e6b02e3a92dc0663780dcfac5ec07bad46bfd3b10beaa9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b501586bc56247777cd7e9db499d8b2adb291f3b64a2eb33bb259c241b04c45f374043770a61066b3a7cf18475091865a8c900d9fa5acd5401362a955254c0ebbb2c31b0e2f18663184e09f3f26e02ec58132df7438a87c7a22ec50122d36da03ba4a243a477cb9a6f2b2e7e00e060f3f12cd22d3018ef8f4b9adb135824974b5b68c865f7af03c86c924bef148dce8dfa6bbeacd246182afbc2a00a2eeb3c98c9d5a52fe64dffb06fb38babdd23a57ab28b11bc9a7d072101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852907342222e0c23 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 197, 98, 71, 119, 124, 215, 233, 219, 73, 157, 139, 42, 219, 41, 31, 59, 100, 162, 235, 51, 187, 37, 156, 36, 27, 4, 196, 95, 55, 64, 67, 119, 10, 97, 6, 107, 58, 124, 241, 132, 117, 9, 24, 101, 168, 201, 0, 217, 250, 90, 205, 84, 1, 54, 42, 149, 82, 84, 192, 235, 187, 44, 49, 176, 226, 241, 134, 99, 24, 78, 9, 243, 242, 110, 2, 236, 88, 19, 45, 247, 67, 138, 135, 199, 162, 46, 197, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 22d36da03ba4a243a477cb9a6f2b2e7e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3471661978252173536, key: EventKey( [ 239, 143, 75, 154, 219, 19, 88, 36, 151, 75, 91, 104, 200, 101, 247, 175, 3, 200, 108, 146, 75, 239, 20, 141, ], ), }, sent_events: EventHandle { count: 5103331261619539406, key: EventKey( [ 42, 251, 194, 160, 10, 46, 235, 60, 152, 201, 213, 165, 47, 230, 77, 255, 176, 111, 179, 139, 171, 221, 35, 165, ], ), }, sequence_number: 539757662893224570, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6553e74df8b18b93fc562d7eca71f1ac068132a82644b2171de7163dce144b30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d47538dabcc1c0c3eb267dcd06f5b1176cd2b9e3ab198c9579a66c23a36497f29bc36e6a3cfcbd4e96a482ef4780001323c85cc7d605fa149a2e2f352ecbc38ad17c4d62baca27f1848cea4bc504ba47a00760b1bcf3e286c8b8b721eac95a721dfacbffe80572c7b180e4810003b7088479f436876a57629d9dfe6955bc208d4464f51a4ed9360da762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089127addaa57c28af Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 71, 83, 141, 171, 204, 28, 12, 62, 178, 103, 220, 208, 111, 91, 17, 118, 205, 43, 158, 58, 177, 152, 201, 87, 154, 102, 194, 58, 54, 73, 127, 41, 188, 54, 230, 163, 207, 203, 212, 233, 106, 72, 46, 244, 120, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 323c85cc7d605fa149a2e2f352ecbc38, }, ), received_events: EventHandle { count: 9197102693330720685, key: EventKey( [ 72, 206, 164, 188, 80, 75, 164, 122, 0, 118, 11, 27, 207, 62, 40, 108, 139, 139, 114, 30, 172, 149, 167, 33, ], ), }, sent_events: EventHandle { count: 8875565177181809887, key: EventKey( [ 14, 72, 16, 0, 59, 112, 136, 71, 159, 67, 104, 118, 165, 118, 41, 217, 223, 230, 149, 91, 194, 8, 212, 70, ], ), }, sequence_number: 8564263829861847375, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6582f755c6ca534de0c662ad5e54e6ae1f50d18c47d21a4eab14d19440b6ab70): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013ad1a38ad6860670887868cc5455da549a5057a27ddd047f97be98e86dddbf954b338c9863e655d3286bd8c1b7b04a2f5ddd24910b408d7f384c380000e92f783d11e87d1c18f129c626d990a81d84de1dce5581fb8fb68f20f8b535b7e5f6027d1a001d8d6e18cf1c380f1e69c6fdf378946a4ec5878bf21a6c48c5c99ad9cf8bb38fc32ede442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708970487eb7c592afa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 209, 163, 138, 214, 134, 6, 112, 136, 120, 104, 204, 84, 85, 218, 84, 154, 80, 87, 162, 125, 221, 4, 127, 151, 190, 152, 232, 109, 221, 191, 149, 75, 51, 140, 152, 99, 230, 85, 211, 40, 107, 216, 193, 183, 176, 74, 47, 93, 221, 36, 145, 11, 64, 141, 127, 56, 76, 56, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2053052165894189033, key: EventKey( [ 241, 41, 198, 38, 217, 144, 168, 29, 132, 222, 29, 206, 85, 129, 251, 143, 182, 143, 32, 248, 181, 53, 183, 229, ], ), }, sent_events: EventHandle { count: 7966055202169881334, key: EventKey( [ 207, 28, 56, 15, 30, 105, 198, 253, 243, 120, 148, 106, 78, 197, 135, 139, 242, 26, 108, 72, 197, 201, 154, 217, ], ), }, sequence_number: 4962455256873274319, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(65ae8acd7f521c65d21fbd76365de90751783a26b62e05e5f919e92811fc46cc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9d001631f1ae8c6a59552d407f4bb6c53a1688dea7c0273fe3e561b291893bb5c18f34ad12a580dc58092ecdb6b2c55cf0952821255d4285e8db4c62f2e906ea84ceebcf5090fe3fa4265e2adef9fe00e030185fe7a40152dafe7c4f848845605d53c3cd38c7d0192fa6f17bd32ef5d44a7db89ea3c5e0a013253e276d57103f1137495c332bcacc805594579b298166f182995086fae8974b5658923694455594a49f799d7d1d6ae1a71e3d09e07653f4f18840fcfd1099c9dcbf332ac3f3cece1925d60fe656b3e3e46db19857971d3177e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708af6bc336273fa58b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 26, 232, 198, 165, 149, 82, 212, 7, 244, 187, 108, 83, 161, 104, 141, 234, 124, 2, 115, 254, 62, 86, 27, 41, 24, 147, 187, 92, 24, 243, 74, 209, 42, 88, 13, 197, 128, 146, 236, 219, 107, 44, 85, 207, 9, 82, 130, 18, 85, 212, 40, 94, 141, 180, 198, 47, 46, 144, 110, 168, 76, 238, 188, 245, 9, 15, 227, 250, 66, 101, 226, 173, 239, 159, 224, 14, 3, 1, 133, 254, 122, 64, 21, 45, 175, 231, 196, 248, 72, 132, 86, 5, 213, 60, 60, 211, 140, 125, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 92fa6f17bd32ef5d44a7db89ea3c5e0a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3253e276d57103f1137495c332bcacc8, }, ), received_events: EventHandle { count: 8004753280003823877, key: EventKey( [ 41, 149, 8, 111, 174, 137, 116, 181, 101, 137, 35, 105, 68, 85, 89, 74, 73, 247, 153, 215, 209, 214, 174, 26, ], ), }, sent_events: EventHandle { count: 5710393935932744561, key: EventKey( [ 132, 15, 207, 209, 9, 156, 157, 203, 243, 50, 172, 63, 60, 236, 225, 146, 93, 96, 254, 101, 107, 62, 62, 70, ], ), }, sequence_number: 9085963257566796251, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(65f6bdaab30c282f0e240aaebf909d61845e0294a02626a0c048488b176da4db): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012eb158fc0c87e9db7f5601521335f5b864370e4833532605cca8982fecf92d71090b0c41cbb3856d9d254c379cfa6e01dafe6a0734d0c50daa627fea7c284445008831c42b3b59024418bfc94ad7029cd2b239ea4cd086729ce62b25079c769908f080b09e352def0b5018f3c5a9e8886aa6cbcedfcaa21b1d198a05cbf99d3cdd605b982d42f7695b319c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708136cd85bda003053 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 88, 252, 12, 135, 233, 219, 127, 86, 1, 82, 19, 53, 245, 184, 100, 55, 14, 72, 51, 83, 38, 5, 204, 168, 152, 47, 236, 249, 45, 113, 9, 11, 12, 65, 203, 179, 133, 109, 157, 37, 76, 55, 156, 250, 110, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dafe6a0734d0c50daa627fea7c284445, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4900577455204741512, key: EventKey( [ 191, 201, 74, 215, 2, 156, 210, 178, 57, 234, 76, 208, 134, 114, 156, 230, 43, 37, 7, 156, 118, 153, 8, 240, ], ), }, sent_events: EventHandle { count: 5767966725230211200, key: EventKey( [ 243, 197, 169, 232, 136, 106, 166, 203, 206, 223, 202, 162, 27, 29, 25, 138, 5, 203, 249, 157, 60, 221, 96, 91, ], ), }, sequence_number: 11254877454453583256, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(66305aa40564d763f1ff485f3c1387415e2990a35073c44f5d91b87b8ff46fa2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619ec66323a743d977194c16bf9b947971b115280748e3e8bfb5a00013e074eeaf3c5130fe8e3f364e9712d409dac01156452733418d6c7b347303eab7878b69108f982f8e44917e15b96a4c68cc33f9947c2944834185a250f84426459795f215567afd877708514cdcae10e3888510025dd6b6315392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f082bf4e0cf6fa80 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 102, 50, 58, 116, 61, 151, 113, 148, 193, 107, 249, 185, 71, 151, 27, 17, 82, 128, 116, 142, 62, 139, 251, 90, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3e074eeaf3c5130fe8e3f364e9712d40, }, ), received_events: EventHandle { count: 3779455102096616605, key: EventKey( [ 214, 199, 179, 71, 48, 62, 171, 120, 120, 182, 145, 8, 249, 130, 248, 228, 73, 23, 225, 91, 150, 164, 198, 140, ], ), }, sent_events: EventHandle { count: 3767424650441211843, key: EventKey( [ 90, 37, 15, 132, 66, 100, 89, 121, 95, 33, 85, 103, 175, 216, 119, 112, 133, 20, 205, 202, 225, 14, 56, 136, ], ), }, sequence_number: 4113303149595656273, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(66741c26313757266564a88bf8a87cd5b527a20a968b1ed872fbfde2bfc2f4e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c961146541d3969cbf24bd6dee6dcfa911edeaedda11f100002d4e4020c0218f0a188efd1095248ed7ceea3f307206dd0005d81a7af4610b57cb753f9ccb17103a1318b54d607ac62611a906217eab211745ee910d146696675f12c59e97a8021c41e02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c55ae72f8c87732 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 65, 211, 150, 156, 191, 36, 189, 109, 238, 109, 207, 169, 17, 237, 234, 237, 218, 17, 241, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 760863971107425837, key: EventKey( [ 142, 253, 16, 149, 36, 142, 215, 206, 234, 63, 48, 114, 6, 221, 0, 5, 216, 26, 122, 244, 97, 11, 87, 203, ], ), }, sent_events: EventHandle { count: 1385437529756155765, key: EventKey( [ 181, 77, 96, 122, 198, 38, 17, 169, 6, 33, 126, 171, 33, 23, 69, 238, 145, 13, 20, 102, 150, 103, 95, 18, ], ), }, sequence_number: 16159227735726071493, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(672fa1a1236d07987b68705e2f9563b4e88332b07a348d58e4853f83404b9585): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7013adce6ab11a2edd9a18501a2d67bf87e01deb221a9025ab730bb65a5783795066466021788a31952ff5f4b2277592dce5ce3e9dd4268b2234df1e4016d2e6dbc74bb60751e74152e4fbc031e01465385e83a03930e9210f3d82d4284c6ed9168e2aeb3236e18b750cd1bb1269a07f321271e39c9cddbb3d5df61da0fa722ea22f4158ff5076718cc420052d638c34360a35c62732c30334987c05d379180ae6ff3211f9f7ff8ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ee119d7de3a59b06 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 220, 230, 171, 17, 162, 237, 217, 161, 133, 1, 162, 214, 123, 248, 126, 1, 222, 178, 33, 169, 2, 90, 183, 48, 187, 101, 165, 120, 55, 149, 6, 100, 102, 2, 23, 136, 163, 25, 82, 255, 95, 75, 34, 119, 89, 45, 206, 92, 227, 233, 221, 66, 104, 178, 35, 77, 241, 228, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d2e6dbc74bb60751e74152e4fbc031e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 465385e83a03930e9210f3d82d4284c6, }, ), received_events: EventHandle { count: 7936384532061131245, key: EventKey( [ 183, 80, 205, 27, 177, 38, 154, 7, 243, 33, 39, 30, 57, 201, 205, 219, 179, 213, 223, 97, 218, 15, 167, 34, ], ), }, sent_events: EventHandle { count: 7424172505641001706, key: EventKey( [ 204, 66, 0, 82, 214, 56, 195, 67, 96, 163, 92, 98, 115, 44, 48, 51, 73, 135, 192, 93, 55, 145, 128, 174, ], ), }, sequence_number: 18444632595294712687, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(67323a73037895b10cefda42013b83c85b1638c009770d8fa8d1f458846f7d2d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e01ba0138aa06f6684c0bbcefe0573af51bb61d01080fbfcb856de4cecd1b205de530a4c000369f0716b61061182704f68ab7a7ae949a22be56fb216d5192c11ac3fdbe531578ae4dcbfaf8d14318420f1a2acf0d3975c70422fb5448c8ac486825814e81e2d7860ba854f91ab5752101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708547c1997b8b144d6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 38aa06f6684c0bbcefe0573af51bb61d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 080fbfcb856de4cecd1b205de530a4c0, }, ), received_events: EventHandle { count: 6994290427039790592, key: EventKey( [ 39, 4, 246, 138, 183, 167, 174, 148, 154, 34, 190, 86, 251, 33, 109, 81, 146, 193, 26, 195, 253, 190, 83, 21, ], ), }, sent_events: EventHandle { count: 4886960826710077048, key: EventKey( [ 66, 15, 26, 42, 207, 13, 57, 117, 199, 4, 34, 251, 84, 72, 200, 172, 72, 104, 37, 129, 78, 129, 226, 215, ], ), }, sequence_number: 8481715131391675270, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(686a427c930a0ae8e574c99e20911201e779c0b22bbb18e9d9d73258f50183b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c991014410037b6ce2f036c586ff63ba4e6a280272eee4860b3f8077a36f2b8b0d4655601bdd0950c91034a8b78bc2061209f6ebfe9124a5cf5f9a39063eefa3b4569a133d50826e0000d305c684b759171a1863d07b511161fd76a876f781801de099cb22b5f2dd5826e603a2822e2b8cad7b18e5a7139bada8c7ae960be7c0f0c537980f215e6fd1520b16f49dc06dbcc0320a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083281e3857654ec30 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 16, 3, 123, 108, 226, 240, 54, 197, 134, 255, 99, 186, 78, 106, 40, 2, 114, 238, 228, 134, 11, 63, 128, 119, 163, 111, 43, 139, 13, 70, 85, 96, 27, 221, 9, 80, 201, 16, 52, 168, 183, 139, 194, 6, 18, 9, 246, 235, 254, 145, 36, 165, 207, 95, 154, 57, 6, 62, 239, 163, 180, 86, 154, 19, 61, 80, 130, 110, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1880070014191928787, key: EventKey( [ 99, 208, 123, 81, 17, 97, 253, 118, 168, 118, 247, 129, 128, 29, 224, 153, 203, 34, 181, 242, 221, 88, 38, 230, ], ), }, sent_events: EventHandle { count: 8911933354727875075, key: EventKey( [ 229, 167, 19, 155, 173, 168, 199, 174, 150, 11, 231, 192, 240, 197, 55, 152, 15, 33, 94, 111, 209, 82, 11, 22, ], ), }, sequence_number: 734861604742536692, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(68c44fe7e0ac9de26ff129111ef13a3c2b5e890a98c95deef8f72c1df3b4b89f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830126aeffa582f82750ffc29b28a950f4f5ea6e12fd9ca579b39ca48c02cea74650dd7b4fd763ff110001f887eed79087119a42f91afb4f325d5633983125d0656d6118d235a6662cd1399ca34be33ca440a066b916c1a7b6411c0131b0247e0ab2945b18e5cf96b1f638dab57dac93311e63d0ac3ed698c2403e75012c3801a72de2088f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1e42465061e1260 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 255, 165, 130, 248, 39, 80, 255, 194, 155, 40, 169, 80, 244, 245, 234, 110, 18, 253, 156, 165, 121, 179, 156, 164, 140, 2, 206, 167, 70, 80, 221, 123, 79, 215, 99, 255, 17, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f887eed79087119a42f91afb4f325d56, }, ), received_events: EventHandle { count: 7020379338792081459, key: EventKey( [ 210, 53, 166, 102, 44, 209, 57, 156, 163, 75, 227, 60, 164, 64, 160, 102, 185, 22, 193, 167, 182, 65, 28, 1, ], ), }, sent_events: EventHandle { count: 6599095112140369969, key: EventKey( [ 229, 207, 150, 177, 246, 56, 218, 181, 125, 172, 147, 49, 30, 99, 208, 172, 62, 214, 152, 194, 64, 62, 117, 1, ], ), }, sequence_number: 10306736432940660780, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(68d9596c29c3e9f5bc82ce06ce1e53df9f551833e3cc57441a5916b29a8ae983): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d00012a984a8fdada9a8f5b2f0892188a46fe017912a9796cbdfa2a594c17a564cfeaddd92bb9d489680c1518285f0c5662e25faa20aef826f4ff3ff527ce809b5d7b3a5b70ea0a4da9eea24918de8f00210f18d4c553aa2d1d61b266c45ad75c2a58afea551d91c0ed2983f5b92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088011e6517602eb24 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2a984a8fdada9a8f5b2f0892188a46fe, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7912a9796cbdfa2a594c17a564cfeadd, }, ), received_events: EventHandle { count: 1516702115705727961, key: EventKey( [ 40, 95, 12, 86, 98, 226, 95, 170, 32, 174, 248, 38, 244, 255, 63, 245, 39, 206, 128, 155, 93, 123, 58, 91, ], ), }, sent_events: EventHandle { count: 5306065721905310320, key: EventKey( [ 222, 143, 0, 33, 15, 24, 212, 197, 83, 170, 45, 29, 97, 178, 102, 196, 90, 215, 92, 42, 88, 175, 234, 85, ], ), }, sequence_number: 13399760482416496925, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6981aff08264bfd2b198804aa1e373661b9867579c5e20ef21c615fcee967f47): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014bbd597ba2dd199340c74fcff3de6d345718e0c1691d0d106a70cab973b1fa61e2bd9bf022c0a33c4cdc6d34b0a6fc6caa20841bebd5f1a0e2c56d93229ebc759a3097396c977fc5732785160000d25f10f50d65af591832d42a76f62e36abb9519b2eacefe317f51e0b46037e78d5c859dc49e5f7b16e182525d8d951e51ddd4964e2f98efe4007f5cb35a13b491ad6052a6d93431a3a982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b1fe1f84de03237 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 89, 123, 162, 221, 25, 147, 64, 199, 79, 207, 243, 222, 109, 52, 87, 24, 224, 193, 105, 29, 13, 16, 106, 112, 202, 185, 115, 177, 250, 97, 226, 189, 155, 240, 34, 192, 163, 60, 76, 220, 109, 52, 176, 166, 252, 108, 170, 32, 132, 27, 235, 213, 241, 160, 226, 197, 109, 147, 34, 158, 188, 117, 154, 48, 151, 57, 108, 151, 127, 197, 115, 39, 133, 22, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6462495100920422354, key: EventKey( [ 50, 212, 42, 118, 246, 46, 54, 171, 185, 81, 155, 46, 172, 239, 227, 23, 245, 30, 11, 70, 3, 126, 120, 213, ], ), }, sent_events: EventHandle { count: 7976428979208608200, key: EventKey( [ 37, 37, 216, 217, 81, 229, 29, 221, 73, 100, 226, 249, 142, 254, 64, 7, 245, 203, 53, 161, 59, 73, 26, 214, ], ), }, sequence_number: 10969108719952800261, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(698877d6e3dd4a38eeec3e91ab000341e55fe9faab802a5970cf03cb582570f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141d49b68f896c0da68c5a7023dfed9f2fdc312c9af967ff5460a4fefb8025de58e7c94fda5bc5106c6911f5c5350f03ceef6797dbebf93dff9c23301384e10ae2a5600017c7f9936951808538c2867d04fd0c49a37efaa01d8b06f4b18a1826c02fd0fd2496bb8f955c230cadb08d44cd291b5031be2337ad7c490bc65187c850d80093aadfa6c2c278067d6d6622e380c1b11fd88392404d52cd5b833032101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70859797001a13cd0f2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 155, 104, 248, 150, 192, 218, 104, 197, 167, 2, 61, 254, 217, 242, 253, 195, 18, 201, 175, 150, 127, 245, 70, 10, 79, 239, 184, 2, 93, 229, 142, 124, 148, 253, 165, 188, 81, 6, 198, 145, 31, 92, 83, 80, 240, 60, 238, 246, 121, 125, 190, 191, 147, 223, 249, 194, 51, 1, 56, 78, 16, 174, 42, 86, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7c7f9936951808538c2867d04fd0c49a, }, ), received_events: EventHandle { count: 5435757717046882103, key: EventKey( [ 161, 130, 108, 2, 253, 15, 210, 73, 107, 184, 249, 85, 194, 48, 202, 219, 8, 212, 76, 210, 145, 181, 3, 27, ], ), }, sent_events: EventHandle { count: 7330893468555424738, key: EventKey( [ 124, 133, 13, 128, 9, 58, 173, 250, 108, 44, 39, 128, 103, 214, 214, 98, 46, 56, 12, 27, 17, 253, 136, 57, ], ), }, sequence_number: 230731231645729828, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(69b05369c2f7cba7451ad062efcb3196477587b7d9dd2f2590a3f57201ad261b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840117794f7900b8dc76d1100c3c677fdd42fef5363e46a342a2014750d8e6f1a5b94c1273e2ba7fc3aa9401f07877960567844e5a384dd30007bbc41c4795be8475591018f1f62e2909e185cf4970d87c8ec37bd676df4667c88de3f65edbee3e6446517918990824ab624ed4804341b0fddd75ed204beb1fc13a935516d41967c0986a9f262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc76306ef52a999d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 79, 121, 0, 184, 220, 118, 209, 16, 12, 60, 103, 127, 221, 66, 254, 245, 54, 62, 70, 163, 66, 162, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4750d8e6f1a5b94c1273e2ba7fc3aa94, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f07877960567844e5a384dd30007bbc4, }, ), received_events: EventHandle { count: 1178101990527682332, key: EventKey( [ 241, 246, 46, 41, 9, 225, 133, 207, 73, 112, 216, 124, 142, 195, 123, 214, 118, 223, 70, 103, 200, 141, 227, 246, ], ), }, sent_events: EventHandle { count: 8741845748069358430, key: EventKey( [ 153, 8, 36, 171, 98, 78, 212, 128, 67, 65, 176, 253, 221, 117, 237, 32, 75, 235, 31, 193, 58, 147, 85, 22, ], ), }, sequence_number: 2783060299033811412, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6a83627a094ae23a7ef1b7e95064cb14581cc46689db171ce72cf5eebd74cbbb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9930126f3e44f2a32bf392cf535a1a4cac109b240dc6336dfeeca243b50c00b3351493d0b6b37386fc201eae0707a0c0634c04b26e3c0c5a8690a01d3e9bb2d29b219d1441ec3d7a22652841c7fbb358851867d18e70b11b70f030e275226e9b4e65961ccc8df7f53de4769538c32b506f6e0c50618d099163a72f60fa352c90f0169b4d690adaa8b66242908288bf18027de6f7db32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c07c68ac8aac642f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 243, 228, 79, 42, 50, 191, 57, 44, 245, 53, 161, 164, 202, 193, 9, 178, 64, 220, 99, 54, 223, 238, 202, 36, 59, 80, 192, 11, 51, 81, 73, 61, 11, 107, 55, 56, 111, 194, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eae0707a0c0634c04b26e3c0c5a8690a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d3e9bb2d29b219d1441ec3d7a2265284, }, ), received_events: EventHandle { count: 9045006547079102236, key: EventKey( [ 231, 11, 17, 183, 15, 3, 14, 39, 82, 38, 233, 180, 230, 89, 97, 204, 200, 223, 127, 83, 222, 71, 105, 83, ], ), }, sent_events: EventHandle { count: 488043481918681740, key: EventKey( [ 208, 153, 22, 58, 114, 246, 15, 163, 82, 201, 15, 1, 105, 180, 214, 144, 173, 170, 139, 102, 36, 41, 8, 40, ], ), }, sequence_number: 12933616704814117259, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6a84159a3a942c0b6ba6be4912b4b1a38c0ead0b19cfb4af21e262f5b2b7cbad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba014d271e702c4415a7323fafe94a5d4691c2925af300fe37adaf24594aeec9f3e977d6fbaaa36c25ffbb09fcbe31b2a57ae40c9f60b4f21fce8a6150c203788c1e9bf7a26b0d9b54c81e5d2f449a5d016fca5f9ce664b70c7079a8b88ecb234101538cf8cdcc8b117fc49e7adbb6e77451a430f2d11c80153a1801519850c8a21f01f1c5fbb757294305c009732efbbad4e49eae8357f4d3b14c18c009cce3172fef45e1e9950385bc2facba1ca02d8873920d826ffdeafaf0c68e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8926742bb21eb8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 30, 112, 44, 68, 21, 167, 50, 63, 175, 233, 74, 93, 70, 145, 194, 146, 90, 243, 0, 254, 55, 173, 175, 36, 89, 74, 238, 201, 243, 233, 119, 214, 251, 170, 163, 108, 37, 255, 187, 9, 252, 190, 49, 178, 165, 122, 228, 12, 159, 96, 180, 242, 31, 206, 138, 97, 80, 194, 3, 120, 140, 30, 155, 247, 162, 107, 13, 155, 84, 200, 30, 93, 47, 68, 154, 93, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6fca5f9ce664b70c7079a8b88ecb2341, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 538cf8cdcc8b117fc49e7adbb6e77451, }, ), received_events: EventHandle { count: 4185392289980493988, key: EventKey( [ 1, 81, 152, 80, 200, 162, 31, 1, 241, 197, 251, 183, 87, 41, 67, 5, 192, 9, 115, 46, 251, 186, 212, 228, ], ), }, sent_events: EventHandle { count: 5526431264154037918, key: EventKey( [ 192, 9, 204, 227, 23, 47, 239, 69, 225, 233, 149, 3, 133, 188, 47, 172, 186, 28, 160, 45, 136, 115, 146, 13, ], ), }, sequence_number: 10288175359249444738, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6b43359ca3db1aa1d34925ddd8380e8d397a3f6be0bf18348a880d8711486642): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a50148e1247da01dacf2e9f541280be6f8c6cc40c03890ad9c48e4629f85cb9b9ab8a2ed42374b5a4e0d764ebca1876b68cf9f54ffa928ff1d307386a3077a48b8b1f711886b3260ea54eb000105a7472c27a4f1af18ea701ceb23330025b7c7650fd9ca41183348f5bb7bb96a6d01e739fbc74a5289af61984208767b6c4185c348d3397b5a1828d60757e051a5c1bc729c7bdc53a9b8c71cb1e4f75357f5edd1495f2815cc6d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880f042bafbcdf726 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 36, 125, 160, 29, 172, 242, 233, 245, 65, 40, 11, 230, 248, 198, 204, 64, 192, 56, 144, 173, 156, 72, 228, 98, 159, 133, 203, 155, 154, 184, 162, 237, 66, 55, 75, 90, 78, 13, 118, 78, 188, 161, 135, 107, 104, 207, 159, 84, 255, 169, 40, 255, 29, 48, 115, 134, 163, 7, 122, 72, 184, 177, 247, 17, 136, 107, 50, 96, 234, 84, 235, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 05a7472c27a4f1af18ea701ceb233300, }, ), received_events: EventHandle { count: 4740840217916192549, key: EventKey( [ 51, 72, 245, 187, 123, 185, 106, 109, 1, 231, 57, 251, 199, 74, 82, 137, 175, 97, 152, 66, 8, 118, 123, 108, ], ), }, sent_events: EventHandle { count: 6519868465170580801, key: EventKey( [ 40, 214, 7, 87, 224, 81, 165, 193, 188, 114, 156, 123, 220, 83, 169, 184, 199, 28, 177, 228, 247, 83, 87, 245, ], ), }, sequence_number: 7911721908524667373, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6b69b7a6e56d6043d4c7855bb46f51d6c8db77f752c66da3e5585707ceea83ac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b012e973fe5a871e3d50f8416c6e72c6f132cf6ef65b62fd3a2e04619f0158a9a74eee31fa6b8833b4763414c5b98c31a011affd5c128184ac132a27ae5305e8d7d01bf267ec72480ac0aeb42aeb3c41b98c4f2af670dab77b21a18f409e32a35275e8e8e10057b081eb4fbba484b9cf0ca1aa8ed00a8d5ab82e30c1898c0f08e02b68523a5ea6c3de4e7864b4318d8c1d060657b3273b1a025b015e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb0ec1f4849c6378 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 63, 229, 168, 113, 227, 213, 15, 132, 22, 198, 231, 44, 111, 19, 44, 246, 239, 101, 182, 47, 211, 162, 224, 70, 25, 240, 21, 138, 154, 116, 238, 227, 31, 166, 184, 131, 59, 71, 99, 65, 76, 91, 152, 195, 26, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1affd5c128184ac132a27ae5305e8d7d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bf267ec72480ac0aeb42aeb3c41b98c4, }, ), received_events: EventHandle { count: 1923731567388635122, key: EventKey( [ 244, 9, 227, 42, 53, 39, 94, 142, 142, 16, 5, 123, 8, 30, 180, 251, 186, 72, 75, 156, 240, 202, 26, 168, ], ), }, sent_events: EventHandle { count: 928729622704029933, key: EventKey( [ 152, 192, 240, 142, 2, 182, 133, 35, 165, 234, 108, 61, 228, 231, 134, 75, 67, 24, 216, 193, 208, 96, 101, 123, ], ), }, sequence_number: 16363178496776827698, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ba39d87498336fbdbc186f519fc9ee31383c64fde69a194be6f5f7e8e61349e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac014f187cf1c67315b5acbec6a404c7d3b0f970fd5a34d4455109e06fe7d96befc3cce4c2cf0378edfc8588c304498e02b978b372a0d61bf0d22591b5fcda3f5c6a31cd626762983db9d867f8cbd80aa9b801d871d78182e6fde7d431406665173b3c0059c0bc154c52775818512a4284231de15bc9ba4dcbca2bc94f6e831d9aab65e5e7bec132e8973c2b0518c7d3e9b8780b04fbcb7b1fbd94f8fdccc2fca3a735a52a390d8944287ee3c5252101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70864e70f1d7572226a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 24, 124, 241, 198, 115, 21, 181, 172, 190, 198, 164, 4, 199, 211, 176, 249, 112, 253, 90, 52, 212, 69, 81, 9, 224, 111, 231, 217, 107, 239, 195, 204, 228, 194, 207, 3, 120, 237, 252, 133, 136, 195, 4, 73, 142, 2, 185, 120, 179, 114, 160, 214, 27, 240, 210, 37, 145, 181, 252, 218, 63, 92, 106, 49, 205, 98, 103, 98, 152, 61, 185, 216, 103, 248, 203, 216, 10, 169, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d871d78182e6fde7d431406665173b3c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6374654284301910105, key: EventKey( [ 81, 42, 66, 132, 35, 29, 225, 91, 201, 186, 77, 203, 202, 43, 201, 79, 110, 131, 29, 154, 171, 101, 229, 231, ], ), }, sent_events: EventHandle { count: 372458017321566654, key: EventKey( [ 199, 211, 233, 184, 120, 11, 4, 251, 203, 123, 31, 189, 148, 248, 253, 204, 194, 252, 163, 167, 53, 165, 42, 57, ], ), }, sequence_number: 2721831680796297485, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6bf4cdbcf38ae003b5c8327e8aa62aa60d844eb276b90c45bcfd5b8069ef689b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce0161dfeb0f461176daec732ec3bd0933aabf1cea2f06eab6de401ec74974e599193c272f329c141452627aed7d34a5ed4980da8bca3ae5a1a9f354a07137ff2f75c68695249bb0f8d6fa9b087d39db8040fc080fae25c4c070cf7444427f91a75ebde501ba9a98070e2b21c5867cbf6e685410b501adb10b3a82b44f3c68e93e943a0fbf97e8ea3c50f3af9702189c0166fc96a5cc42df31252000d922b8c63c2b8e4f7d98de89a08208c4777733183c4067dc9e430f981e76f2945c10e6d1041471bdce48b1c5eda95c7aea58fbdc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e0f2635f7a1390d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 235, 15, 70, 17, 118, 218, 236, 115, 46, 195, 189, 9, 51, 170, 191, 28, 234, 47, 6, 234, 182, 222, 64, 30, 199, 73, 116, 229, 153, 25, 60, 39, 47, 50, 156, 20, 20, 82, 98, 122, 237, 125, 52, 165, 237, 73, 128, 218, 139, 202, 58, 229, 161, 169, 243, 84, 160, 113, 55, 255, 47, 117, 198, 134, 149, 36, 155, 176, 248, 214, 250, 155, 8, 125, 57, 219, 128, 64, 252, 8, 15, 174, 37, 196, 192, 112, 207, 116, 68, 66, 127, 145, 167, 94, 189, 229, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ba9a98070e2b21c5867cbf6e685410b5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: adb10b3a82b44f3c68e93e943a0fbf97, }, ), received_events: EventHandle { count: 186811369117248232, key: EventKey( [ 156, 1, 102, 252, 150, 165, 204, 66, 223, 49, 37, 32, 0, 217, 34, 184, 198, 60, 43, 142, 79, 125, 152, 222, ], ), }, sent_events: EventHandle { count: 3708564502002966665, key: EventKey( [ 60, 64, 103, 220, 158, 67, 15, 152, 30, 118, 242, 148, 92, 16, 230, 209, 4, 20, 113, 189, 206, 72, 177, 197, ], ), }, sequence_number: 15923418671597005293, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c1386945cb2595988f157a382495be329d9cb016785f8df5acc9315d15688e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123d83b573f9d3d815c33f2a90fe7a5abd216045543a4871b7e3bb921ec715030ebf0e6fa0100776677df18829d4afc164b7323e8ef01ddc73556d49d30f8f5463869d59b4a20897d58981ad1345f18a2ac10e0aac36bf7a30771224faa0713fc76c223b25d22f480a3e3e792818532185379c4b59988a983a15882ef52139beb32af2123ea0fdc9c67c9d38bf8a4d4772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fbbd2bc33613fb35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 59, 87, 63, 157, 61, 129, 92, 51, 242, 169, 15, 231, 165, 171, 210, 22, 4, 85, 67, 164, 135, 27, 126, 59, 185, 33, 236, 113, 80, 48, 235, 240, 230, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00776677df18829d4afc164b7323e8ef, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ddc73556d49d30f8f5463869d59b4a20, }, ), received_events: EventHandle { count: 6860338044547399049, key: EventKey( [ 162, 172, 16, 224, 170, 195, 107, 247, 163, 7, 113, 34, 79, 170, 7, 19, 252, 118, 194, 35, 178, 93, 34, 244, ], ), }, sent_events: EventHandle { count: 3640458341754577792, key: EventKey( [ 83, 121, 196, 181, 153, 136, 169, 131, 161, 88, 130, 239, 82, 19, 155, 235, 50, 175, 33, 35, 234, 15, 220, 156, ], ), }, sequence_number: 8634707772980840807, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6c3273d074d20e9ebe1390c67510810971c52ce0f4a9775a0b6ddbcdf2b00a0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97104d54749f40187a22ead16653857692b11a00dc16473010f7b34d7c13008db8576f7ce05f5fabdf745f8dd244e701c18c1c417ad4d1b91decdda232e3b4ba1b1b19df880e6256c2eb2d73d3c8c81e94b180385bc573ffa1e883eef303460e445b56b318769a289df296ee3dc8958bf40292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088979bdd685c9387f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 71, 73, 244, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 87a22ead16653857692b11a00dc16473, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0f7b34d7c13008db8576f7ce05f5fabd, }, ), received_events: EventHandle { count: 2049223750703400439, key: EventKey( [ 193, 196, 23, 173, 77, 27, 145, 222, 205, 218, 35, 46, 59, 75, 161, 177, 177, 157, 248, 128, 230, 37, 108, 46, ], ), }, sent_events: EventHandle { count: 5470045661724268466, key: EventKey( [ 3, 133, 188, 87, 63, 250, 30, 136, 62, 239, 48, 52, 96, 228, 69, 181, 107, 49, 135, 105, 162, 137, 223, 41, ], ), }, sequence_number: 2972586141055509358, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6e4fe5e0ebe11f2bdba54200d4789acb3d7b796782885a6081acd50faf837b9f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01523be092132ce88f24db3e8dc44ca5b5aa3b6bc7ef47fa873d66d744b0aa709837bf40b46199008be5ca0af67d9d410c3af5ec2f530bb370db47ab2a809b410691b7dab849a041fba98290d4ad21cdbf0aee7200002671ad1416b46d7d180d9fb3656ea4b19633efd134b49a3b7828d076d3b1be5813eb5b6ec503f79c60186669909b09a5ff9599b32989e0156a6fcf8850ff535a6d2af4b7ce9a14994a382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4e120f3f605e1ec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 224, 146, 19, 44, 232, 143, 36, 219, 62, 141, 196, 76, 165, 181, 170, 59, 107, 199, 239, 71, 250, 135, 61, 102, 215, 68, 176, 170, 112, 152, 55, 191, 64, 180, 97, 153, 0, 139, 229, 202, 10, 246, 125, 157, 65, 12, 58, 245, 236, 47, 83, 11, 179, 112, 219, 71, 171, 42, 128, 155, 65, 6, 145, 183, 218, 184, 73, 160, 65, 251, 169, 130, 144, 212, 173, 33, 205, 191, 10, 238, 114, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9038078034131644710, key: EventKey( [ 13, 159, 179, 101, 110, 164, 177, 150, 51, 239, 209, 52, 180, 154, 59, 120, 40, 208, 118, 211, 177, 190, 88, 19, ], ), }, sent_events: EventHandle { count: 6961710719577250795, key: EventKey( [ 102, 105, 144, 155, 9, 165, 255, 149, 153, 179, 41, 137, 224, 21, 106, 111, 207, 136, 80, 255, 83, 90, 109, 42, ], ), }, sequence_number: 4056222728176187380, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(6ef7cf19b9747aab557326e2c965e0a1d53e3353d82e7d3d0247f3551b8fe54e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e01440000dc8574cbdc65847d183099b6c2b51f68793c3dcfd4c2569d740342c80b1200928df14b266217790e6418c50beeb098d4bfbc66e8e5b7b44f2c52dcb25811c10ca61aa240c66d6fd3f3412101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089278c6584f0baf32 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 68, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9044465950647420380, key: EventKey( [ 48, 153, 182, 194, 181, 31, 104, 121, 60, 61, 207, 212, 194, 86, 157, 116, 3, 66, 200, 11, 18, 0, 146, 141, ], ), }, sent_events: EventHandle { count: 7209833194804628465, key: EventKey( [ 197, 11, 238, 176, 152, 212, 191, 188, 102, 232, 229, 183, 180, 79, 44, 82, 220, 178, 88, 17, 193, 12, 166, 26, ], ), }, sequence_number: 4752374507342545058, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(703ec89d85405c9c90144094bcb76f472b00b31cac77da762dec0b0a6128fb65): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad0140872fde7b35359f560723bdcb539c477dfc722ea9bcabe3df53f9aa1a7f37cabbddb9af553bacbff0de5a902f704809d3f9bf8177ff0ea8b0c54875b88775f1a901a1b37c69ac9f947fd6c63cc97107dd6801ab241b4686f7748134fb5ca996622a349a1b15c90ed1a15b18f0fecc748ccc04b717027f792e33a38f33167592e34ab48f8dd39fd768afac6f181781b7f1bf5df81bf0eb5a36fd8f0960021105c221e520fb13048b2601bdbc8f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d57348e937dc1c5a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 47, 222, 123, 53, 53, 159, 86, 7, 35, 189, 203, 83, 156, 71, 125, 252, 114, 46, 169, 188, 171, 227, 223, 83, 249, 170, 26, 127, 55, 202, 187, 221, 185, 175, 85, 59, 172, 191, 240, 222, 90, 144, 47, 112, 72, 9, 211, 249, 191, 129, 119, 255, 14, 168, 176, 197, 72, 117, 184, 135, 117, 241, 169, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a1b37c69ac9f947fd6c63cc97107dd68, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ab241b4686f7748134fb5ca996622a34, }, ), received_events: EventHandle { count: 6602788390135208858, key: EventKey( [ 240, 254, 204, 116, 140, 204, 4, 183, 23, 2, 127, 121, 46, 51, 163, 143, 51, 22, 117, 146, 227, 74, 180, 143, ], ), }, sent_events: EventHandle { count: 8046999499033269133, key: EventKey( [ 23, 129, 183, 241, 191, 93, 248, 27, 240, 235, 90, 54, 253, 143, 9, 96, 2, 17, 5, 194, 33, 229, 32, 251, ], ), }, sequence_number: 10357361055684559891, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(705d6457c72f34e5eb8e8fad6865f73e2d67f3353a14b2da57ea85d72ca64f78): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975189b3fc8d9b0713be1525655208b37e10b99dd589822b6c27b0001e7b7689b94dbe32dfe8d5260229ee3ca43bdef2a32dd824418ef84bc77cb5f20869488be62b9bc5302dda14505871f07286db70cf57b1c9c0e185871fe8c57ed4894ac49ecedb837864d861187271f5eb4ef93006172230b09ab2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708221fbf5c6abd8b2a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 155, 63, 200, 217, 176, 113, 59, 225, 82, 86, 85, 32, 139, 55, 225, 11, 153, 221, 88, 152, 34, 182, 194, 123, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e7b7689b94dbe32dfe8d5260229ee3ca, }, ), received_events: EventHandle { count: 4936751349089942851, key: EventKey( [ 239, 132, 188, 119, 203, 95, 32, 134, 148, 136, 190, 98, 185, 188, 83, 2, 221, 161, 69, 5, 135, 31, 7, 40, ], ), }, sent_events: EventHandle { count: 1052747731615659885, key: EventKey( [ 88, 113, 254, 140, 87, 237, 72, 148, 172, 73, 236, 237, 184, 55, 134, 77, 134, 17, 135, 39, 31, 94, 180, 239, ], ), }, sequence_number: 12324394102146793619, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(725e8e3bff793ae3800cadc7a48ee920e8e497dbf7abc80cb181b845a36faf4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95a0dc958ed5556737b20d8a963ba8b00007f29f3fae05c3e43183a6dd1026835e51b4ad99dde5f77ecf459e63b4deb945c9bdd223f444117762e18908029cbfbbde361906f08e31300ec79b48de23af794d6b73f8fa70d0a7b62622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d9ae1136481a7338 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 88, 237, 85, 86, 115, 123, 32, 216, 169, 99, 186, 139, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4845412370449901951, key: EventKey( [ 58, 109, 209, 2, 104, 53, 229, 27, 74, 217, 157, 222, 95, 119, 236, 244, 89, 230, 59, 77, 235, 148, 92, 155, ], ), }, sent_events: EventHandle { count: 3347888942081843933, key: EventKey( [ 144, 128, 41, 203, 251, 189, 227, 97, 144, 111, 8, 227, 19, 0, 236, 121, 180, 141, 226, 58, 247, 148, 214, 183, ], ), }, sequence_number: 7089364046543556415, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(72a31110f97be344331b0834f0a077998c92e8cadd90c8f5bc02f3be4925acee): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974273c29ab535d6894746a843935b3c46dc6e6f136743e520f993ab4d882f953d92e1f3f023ce6dac8000029fc819579f6d03a18608a2d4057a213d1c60d0015d4c4927467733af3bfae9a2df6a107fd18ebf4521850efb857bd184262d13b6e2ed41e9b2dac5a49038a1dbcb376cebaaaab34a7242101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086d3170ea049c7024 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 60, 41, 171, 83, 93, 104, 148, 116, 106, 132, 57, 53, 179, 196, 109, 198, 230, 241, 54, 116, 62, 82, 15, 153, 58, 180, 216, 130, 249, 83, 217, 46, 31, 63, 2, 60, 230, 218, 200, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4238158251415436329, key: EventKey( [ 96, 138, 45, 64, 87, 162, 19, 209, 198, 13, 0, 21, 212, 196, 146, 116, 103, 115, 58, 243, 191, 174, 154, 45, ], ), }, sent_events: EventHandle { count: 5977661097984369142, key: EventKey( [ 80, 239, 184, 87, 189, 24, 66, 98, 209, 59, 110, 46, 212, 30, 155, 45, 172, 90, 73, 3, 138, 29, 188, 179, ], ), }, sequence_number: 2641137618384506486, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(734576773ba7edc64306fd18a2b56f257607a071c44cd709aa8f049a7e586651): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963069a3e4ca9aac500014fa33bd9aa4c77da77855a3404c4090317a83df25640fe3f185c71c6fb968059a98e5aa0b9c3cc61af51aad759f501fde47da74e41d63294201859e28132a7636604d504cb3f6335603be6ab173acea9ebff31c24a9ff50b4dc22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70827420121d27a2f5b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 154, 62, 76, 169, 170, 197, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4fa33bd9aa4c77da77855a3404c40903, }, ), received_events: EventHandle { count: 4611193810649458711, key: EventKey( [ 92, 113, 198, 251, 150, 128, 89, 169, 142, 90, 160, 185, 195, 204, 97, 175, 81, 170, 215, 89, 245, 1, 253, 228, ], ), }, sent_events: EventHandle { count: 2347557201566934909, key: EventKey( [ 89, 226, 129, 50, 167, 99, 102, 4, 213, 4, 203, 63, 99, 53, 96, 59, 230, 171, 23, 58, 206, 169, 235, 255, ], ), }, sequence_number: 14000859966132109873, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(737e0606082fb75a00a0fbfb52e753cd0eebeaaf6b771058added9c53f1d1f80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316cb3caaaa6192e4032639e4a74999fc3e2bb2e01f3ae0011e7e126f88ca6e783219c70f3291753a00d20643bd39390b3f1822d5b3efa6f0abefb4ef67878e5467539d4703a0bb4569a0ea6b170b056f661c180deec44216990573751a2ab9472295e16cf2ccea41a32baf7eff9cf5c68396e62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c358f8908412978d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 60, 170, 170, 97, 146, 228, 3, 38, 57, 228, 167, 73, 153, 252, 62, 43, 178, 224, 31, 58, 224, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1e7e126f88ca6e783219c70f3291753a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4542787569284482770, key: EventKey( [ 34, 213, 179, 239, 166, 240, 171, 239, 180, 239, 103, 135, 142, 84, 103, 83, 157, 71, 3, 160, 187, 69, 105, 160, ], ), }, sent_events: EventHandle { count: 2046445148138073066, key: EventKey( [ 13, 238, 196, 66, 22, 153, 5, 115, 117, 26, 42, 185, 71, 34, 149, 225, 108, 242, 204, 234, 65, 163, 43, 175, ], ), }, sequence_number: 16615612765777493886, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7388577f4cd70ea748bba260145f7c87f2f96e66d734076ef5382929fa066591): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d015027cd1e77fd7bc1a52db6d63657d73aff18bb5df0cfb3338630f014b6fe69b9ecac4f8cec8a1cf135e88916e578f62e7f69282a5ec5537720788a56d43ecc925b598b1a7ed27cd0fe7c95de9ae33dfa4e00007ea1fce11a8f88361855d2b3e1be8f59275a0cc540de884712627b67fb42ae868cbcd52e8aa3814f4e18df0ad4ba87395339a16cc8c2bdf365917c963da7a0c1effd1e1cfdd9c58669c52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aa6f08df9af61615 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 205, 30, 119, 253, 123, 193, 165, 45, 182, 214, 54, 87, 215, 58, 255, 24, 187, 93, 240, 207, 179, 51, 134, 48, 240, 20, 182, 254, 105, 185, 236, 172, 79, 140, 236, 138, 28, 241, 53, 232, 137, 22, 229, 120, 246, 46, 127, 105, 40, 42, 94, 197, 83, 119, 32, 120, 138, 86, 212, 62, 204, 146, 91, 89, 139, 26, 126, 210, 124, 208, 254, 124, 149, 222, 154, 227, 61, 250, 78, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3929548020504109438, key: EventKey( [ 85, 210, 179, 225, 190, 143, 89, 39, 90, 12, 197, 64, 222, 136, 71, 18, 98, 123, 103, 251, 66, 174, 134, 140, ], ), }, sent_events: EventHandle { count: 5642871397516498364, key: EventKey( [ 223, 10, 212, 186, 135, 57, 83, 57, 161, 108, 200, 194, 189, 243, 101, 145, 124, 150, 61, 167, 160, 193, 239, 253, ], ), }, sequence_number: 14225049082350345246, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(73e772a43d105587ea8624ce9b04ca7d053aaf438d871a6867b841ecdcaf0edf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bf4700d24fbdf5cfb161d9a0000860d51cb9672b1301841533865741c5343eb5d7f5482614255b238580291c9d392c0c8d8c5f84e727f18f1ef4745e362831c3823196f7276ea32c9888e232b303029c0402d5cab1ad5732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083026d5be472a1e3c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 112, 13, 36, 251, 223, 92, 251, 22, 29, 154, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3508711576680074630, key: EventKey( [ 65, 83, 56, 101, 116, 28, 83, 67, 235, 93, 127, 84, 130, 97, 66, 85, 178, 56, 88, 2, 145, 201, 211, 146, ], ), }, sent_events: EventHandle { count: 9183489420540037312, key: EventKey( [ 241, 239, 71, 69, 227, 98, 131, 28, 56, 35, 25, 111, 114, 118, 234, 50, 201, 136, 142, 35, 43, 48, 48, 41, ], ), }, sequence_number: 8346606807689281728, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(74162f18ea15e85e3b084f60a0c6a244370a6b58bc1ab16a11edda881373989c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810124537003629d474ec47093a637eabc06c88ca4a46c037c4ece01f989e338b13db0268db2690001c361524bdb2c311cd29f8b309ccd00dfd3803b1f60dc49461821e2951b398890ab817805ac0b389160047c2db32b4f08ab2102ac30a0df410118a97da449fb50dac0db355a1af6a154c0b6c8fea7da5533ecc1aef84e0528f4552101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef8accc83a57bdc2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 112, 3, 98, 157, 71, 78, 196, 112, 147, 166, 55, 234, 188, 6, 200, 140, 164, 164, 108, 3, 124, 78, 206, 1, 249, 137, 227, 56, 177, 61, 176, 38, 141, 178, 105, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c361524bdb2c311cd29f8b309ccd00df, }, ), received_events: EventHandle { count: 5064821561353797843, key: EventKey( [ 33, 226, 149, 27, 57, 136, 144, 171, 129, 120, 5, 172, 11, 56, 145, 96, 4, 124, 45, 179, 43, 79, 8, 171, ], ), }, sent_events: EventHandle { count: 90599346628461089, key: EventKey( [ 169, 125, 164, 73, 251, 80, 218, 192, 219, 53, 90, 26, 246, 161, 84, 192, 182, 200, 254, 167, 218, 85, 51, 236, ], ), }, sequence_number: 6193619390806142657, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(756347f926852c79dfdabb76f957690c8ec56196519538e0786b80d0caa97b85): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f013249cf50232d4f0ae3210edfa33c3c8e1ceb936adac3017947585967a62692c764ca3c13c3d6ef852e33994d8379847c302b70013f400e57dbd17982b0cd8bf4edf6b3ec01ccbb5fbd863eeab5977a181adc1154d114f5c6c2a431297d183a78f10bede8f4e60b2bbe415a4e34b565158a4691db1adeb202e424be50df781811dbe08da36c25ed319e6bde495ffeb125888343bcf7317f82e55d6039de80162101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ce63831f8365e9b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 73, 207, 80, 35, 45, 79, 10, 227, 33, 14, 223, 163, 60, 60, 142, 28, 235, 147, 106, 218, 195, 1, 121, 71, 88, 89, 103, 166, 38, 146, 199, 100, 202, 60, 19, 195, 214, 239, 133, 46, 51, 153, 77, 131, 121, 132, 124, 48, 43, 112, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3f400e57dbd17982b0cd8bf4edf6b3ec, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ccbb5fbd863eeab5977a181adc1154d1, }, ), received_events: EventHandle { count: 9018794312498345236, key: EventKey( [ 58, 120, 241, 11, 237, 232, 244, 230, 11, 43, 190, 65, 90, 78, 52, 181, 101, 21, 138, 70, 145, 219, 26, 222, ], ), }, sent_events: EventHandle { count: 8709768981950759602, key: EventKey( [ 17, 219, 224, 141, 163, 108, 37, 237, 49, 158, 107, 222, 73, 95, 254, 177, 37, 136, 131, 67, 188, 247, 49, 127, ], ), }, sequence_number: 1621540203864647042, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(75bb550ea5f61645d076bd427e574af9aefd57b55ff2cef7861dbdb2bed9dcc1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152c7d3ccf32bcc453a49414baaf4a498f239ffd887b84be4e588e2febdb8ec1894d76168c4e21383a6ba1fd3724be64d2ab4e60fbc34c5f0c18a0a9d95f67c26dd0fd4c796e440b76f2e6e7a29b6f03ffff2de000131fc8e0b0f7bc8f5dd02328e87f733188c9bea6258463e30183381ff10db634f1fe548320337d8e0c623775681cea7fb0a7b79d7ac10b35d6718afd376d043a970cb4647607b5880d62d55f82a2e1d41c9e0ce57a828036581ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f9a5574092ae5e19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 199, 211, 204, 243, 43, 204, 69, 58, 73, 65, 75, 170, 244, 164, 152, 242, 57, 255, 216, 135, 184, 75, 228, 229, 136, 226, 254, 189, 184, 236, 24, 148, 215, 97, 104, 196, 226, 19, 131, 166, 186, 31, 211, 114, 75, 230, 77, 42, 180, 230, 15, 188, 52, 197, 240, 193, 138, 10, 157, 149, 246, 124, 38, 221, 15, 212, 199, 150, 228, 64, 183, 111, 46, 110, 122, 41, 182, 240, 63, 255, 242, 222, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 31fc8e0b0f7bc8f5dd02328e87f73318, }, ), received_events: EventHandle { count: 3476293307807210380, key: EventKey( [ 51, 129, 255, 16, 219, 99, 79, 31, 229, 72, 50, 3, 55, 216, 224, 198, 35, 119, 86, 129, 206, 167, 251, 10, ], ), }, sent_events: EventHandle { count: 7448306242941319547, key: EventKey( [ 175, 211, 118, 208, 67, 169, 112, 203, 70, 71, 96, 123, 88, 128, 214, 45, 85, 248, 42, 46, 29, 65, 201, 224, ], ), }, sequence_number: 18411107815908726734, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(767f8e65bc411fcd657a575803d7d225a005e32733b20de3a6e6adfca522d99b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012d5bbaa5d3692301c502e7d363d3f22333da3454348def6ecea9e41c478a2ae86b4f803837b180b4d8bbcc13c46d0186e9fa0467b97cfdb91ca7fadef36f490028ccbd80f931a446189906aff4cdd8adff8d570df93a15328d07ee764f711704f2c4d4fa6c9f24330518a747d781f307399608068b814fd402a91c4d4e39b43d568dceba2eb2a5755f292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7ae09e4f7421994 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 186, 165, 211, 105, 35, 1, 197, 2, 231, 211, 99, 211, 242, 35, 51, 218, 52, 84, 52, 141, 239, 110, 206, 169, 228, 28, 71, 138, 42, 232, 107, 79, 128, 56, 55, 177, 128, 180, 216, 187, 204, 19, 196, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86e9fa0467b97cfdb91ca7fadef36f49, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5090248426512043048, key: EventKey( [ 153, 6, 175, 244, 205, 216, 173, 255, 141, 87, 13, 249, 58, 21, 50, 141, 7, 238, 118, 79, 113, 23, 4, 242, ], ), }, sent_events: EventHandle { count: 374683461148660932, key: EventKey( [ 167, 71, 215, 129, 243, 7, 57, 150, 8, 6, 139, 129, 79, 212, 2, 169, 28, 77, 78, 57, 180, 61, 86, 141, ], ), }, sequence_number: 2981230832862018254, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7803d9aa570eb118a3b63b6e28c83d11150cd2279825e4143863348694f11da4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155b772295433d7378c7c9dc05d2ae4fff451122b0d39831f97616790b3b9cec9bbd8c23e2f69d39baa5f1a9c8b218834be0e029274936adbecf2397fe900b263fe0659936f214ce568a7f4914c8fab50a9bdbb68be860001192e63cdd0e077ac9b441eb7253b09572437a7d61d497d28184ed9ac41dc30a39467a360cafae096566db825b2dc61cf3ed45b9456785db1661885422f641544231a9aa4213d5f98673a2ba1b043b5e0625b7650be838c565edb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a4db98fbc6baef99 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 114, 41, 84, 51, 215, 55, 140, 124, 157, 192, 93, 42, 228, 255, 244, 81, 18, 43, 13, 57, 131, 31, 151, 97, 103, 144, 179, 185, 206, 201, 187, 216, 194, 62, 47, 105, 211, 155, 170, 95, 26, 156, 139, 33, 136, 52, 190, 14, 2, 146, 116, 147, 106, 219, 236, 242, 57, 127, 233, 0, 178, 99, 254, 6, 89, 147, 111, 33, 76, 229, 104, 167, 244, 145, 76, 143, 171, 80, 169, 189, 187, 104, 190, 134, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 192e63cdd0e077ac9b441eb7253b0957, }, ), received_events: EventHandle { count: 2917568526110111524, key: EventKey( [ 78, 217, 172, 65, 220, 48, 163, 148, 103, 163, 96, 202, 250, 224, 150, 86, 109, 184, 37, 178, 220, 97, 207, 62, ], ), }, sent_events: EventHandle { count: 7399798434176457684, key: EventKey( [ 133, 66, 47, 100, 21, 68, 35, 26, 154, 164, 33, 61, 95, 152, 103, 58, 43, 161, 176, 67, 181, 224, 98, 91, ], ), }, sequence_number: 15807166903622717558, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(787210776cfc3e5f694d21b7eff19a1d4fdd25e0973e8a1ddb33d29b306986b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00143c0039cb42b345e5f0f62a0e8cee36e38f3f3386703ba14e4875f3f0c280743ce3fa101b98e7928dcac64f9a4d720492d8102af1ba9092c1f82c3741fb0835ab759bd20000186baecc1d1d3af428bf62aed944cef59650f5be5d376a67a18cd917ae181ee4624aa0b24fb6982aa22db38c9c873a16508cfe4b5e382bfa11918a07c210f3cb6095c1a8458a56ac108f6d8d4cc48d75ced92d477e0cdb03c8a7f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088451deeda47395ee Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 3, 156, 180, 43, 52, 94, 95, 15, 98, 160, 232, 206, 227, 110, 56, 243, 243, 56, 103, 3, 186, 20, 228, 135, 95, 63, 12, 40, 7, 67, 206, 63, 161, 1, 185, 142, 121, 40, 220, 172, 100, 249, 164, 215, 32, 73, 45, 129, 2, 175, 27, 169, 9, 44, 31, 130, 195, 116, 31, 176, 131, 90, 183, 89, 189, 32, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 86baecc1d1d3af428bf62aed944cef59, }, ), received_events: EventHandle { count: 8837881971219304293, key: EventKey( [ 205, 145, 122, 225, 129, 238, 70, 36, 170, 11, 36, 251, 105, 130, 170, 34, 219, 56, 201, 200, 115, 161, 101, 8, ], ), }, sent_events: EventHandle { count: 1846967891085616335, key: EventKey( [ 160, 124, 33, 15, 60, 182, 9, 92, 26, 132, 88, 165, 106, 193, 8, 246, 216, 212, 204, 72, 215, 92, 237, 146, ], ), }, sequence_number: 9190224719668869076, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(788af305bdcf0599cf400e6b25296f02f7264db422fe4a10a2a8595c5544f958): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012ee26f90d4c07f93b7f241d868922353c260de675db7c61ca94fb8c36fb135de8dae3b5d4bd1fde582254b4bf143a7011da98639b89623ce4a6e16f697dcbbbc00ea418cfef235ae27186dd2e650ee5fb307ec3951e12c4622fce384f1af230e7424c655540def63b62d181e08e902abe48e3774598b2a70d84954b7577f021284f358ea2435304ba516542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bedede97ddc97fb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 111, 144, 212, 192, 127, 147, 183, 242, 65, 216, 104, 146, 35, 83, 194, 96, 222, 103, 93, 183, 198, 28, 169, 79, 184, 195, 111, 177, 53, 222, 141, 174, 59, 93, 75, 209, 253, 229, 130, 37, 75, 75, 241, 67, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1da98639b89623ce4a6e16f697dcbbbc, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2859282131195806186, key: EventKey( [ 109, 210, 230, 80, 238, 95, 179, 7, 236, 57, 81, 225, 44, 70, 34, 252, 227, 132, 241, 175, 35, 14, 116, 36, ], ), }, sent_events: EventHandle { count: 3293930055840060870, key: EventKey( [ 30, 8, 233, 2, 171, 228, 142, 55, 116, 89, 139, 42, 112, 216, 73, 84, 183, 87, 127, 2, 18, 132, 243, 88, ], ), }, sequence_number: 6059212091023500522, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(79b4d6de120ce904ab4c1b15d658cd80787ee1ada55854951ef2e8e422476e30): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b90b65835b5c1a9ab74c76ec1e27706074d4561502c1191f3c9e866fc6fa7b44641d5045cb13f903b7875fa495a8b47bf7454af445b422bd80e9e61b8747e3e7981b0663364898f82fdaaa701c4e2d15183c972dadec7c50f655fe75501602aaa955996b79c60e981859df00e5a4cdfd2fe82101b0e1847bdf5f455cb834d39a285eb36e8d065f9a8ce971b69e1ff0edc104abdb28d7c183ddc161c23db3e155df22dc8c79aeec24cf2470c8fc5539ce1f54bd4015eaae32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cd2a9335226d72ea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 182, 88, 53, 181, 193, 169, 171, 116, 199, 110, 193, 226, 119, 6, 7, 77, 69, 97, 80, 44, 17, 145, 243, 201, 232, 102, 252, 111, 167, 180, 70, 65, 213, 4, 92, 177, 63, 144, 59, 120, 117, 250, 73, 90, 139, 71, 191, 116, 84, 175, 68, 91, 66, 43, 216, 14, 158, 97, 184, 116, 126, 62, 121, 129, 176, 102, 51, 100, 137, 143, 130, 253, 170, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4e2d15183c972dadec7c50f655fe755, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 602aaa955996b79c60e981859df00e5a, }, ), received_events: EventHandle { count: 1016424295709204300, key: EventKey( [ 71, 189, 245, 244, 85, 203, 131, 77, 57, 162, 133, 235, 54, 232, 208, 101, 249, 168, 206, 151, 27, 105, 225, 255, ], ), }, sent_events: EventHandle { count: 8975026158480448526, key: EventKey( [ 61, 220, 22, 28, 35, 219, 62, 21, 93, 242, 45, 200, 199, 154, 238, 194, 76, 242, 71, 12, 143, 197, 83, 156, ], ), }, sequence_number: 16405027954600179169, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7a99b03b51e8931b907538bb53732bc615170c80eda86b484f89f0c75b32e3c1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9761937a8d511747ff9c8bba344af0520bade591cc8e2f438fa3ea3014c0cc6efd8a7dda32587b2ab91325fac005ae98a27b8d6e16918f00e7768105de12ea1f40825e584420cb1c3952a272275d4b2140d6d8b71617c18e7f3133b077abbe0e125c1be98e5a2b51f0bf8bbb97bbc7e6ca661831d44dda12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70841dbc7d61fdccd70 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 168, 213, 17, 116, 127, 249, 200, 187, 163, 68, 175, 5, 32, 186, 222, 89, 28, 200, 226, 244, 56, 250, 62, 163, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4c0cc6efd8a7dda32587b2ab91325fac, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7629615330168072538, key: EventKey( [ 240, 14, 119, 104, 16, 93, 225, 46, 161, 244, 8, 37, 229, 132, 66, 12, 177, 195, 149, 42, 39, 34, 117, 212, ], ), }, sent_events: EventHandle { count: 8962569577087964338, key: EventKey( [ 231, 243, 19, 59, 7, 122, 187, 224, 225, 37, 193, 190, 152, 229, 162, 181, 31, 11, 248, 187, 185, 123, 188, 126, ], ), }, sequence_number: 11663553503508407916, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7a9b1a46234c692efdeea8a2039485a26018f918b2e24ec7e64c230c6e98a88e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01415e4218f1896e438cb4f432a1ff3e7cc45b266eb797770d0554b4baf2d6495569fc10e1e17182a2232ee5b2149c96d9e0d3806df5927598e95c80ae60932353f4b1000019fbd950f2c1fd4118530938cfca0063a50d3b43ef2fa203c3384eec895ef72618caec6b5daf3426091879d43b2b7a7c6a803bc59298674b5cc79891a4dce9c22c1e9186f1678655ab852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080fa2df3ddf4ab8f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 94, 66, 24, 241, 137, 110, 67, 140, 180, 244, 50, 161, 255, 62, 124, 196, 91, 38, 110, 183, 151, 119, 13, 5, 84, 180, 186, 242, 214, 73, 85, 105, 252, 16, 225, 225, 113, 130, 162, 35, 46, 229, 178, 20, 156, 150, 217, 224, 211, 128, 109, 245, 146, 117, 152, 233, 92, 128, 174, 96, 147, 35, 83, 244, 177, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4755170028055821081, key: EventKey( [ 83, 9, 56, 207, 202, 0, 99, 165, 13, 59, 67, 239, 47, 162, 3, 195, 56, 78, 236, 137, 94, 247, 38, 24, ], ), }, sent_events: EventHandle { count: 659272323247631562, key: EventKey( [ 121, 212, 59, 43, 122, 124, 106, 128, 59, 197, 146, 152, 103, 75, 92, 199, 152, 145, 164, 220, 233, 194, 44, 30, ], ), }, sequence_number: 9631886263819798161, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7abfc02ef0645e9e68ff9279b6bb572912db6c231ca182754e41c7c0bfa50b37): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9771a05fa666c5660d93a83a4af6435b44719e229447f0ca83d95cde400010050142db393cb16982d60f168330111c84740ab71aa3a1a18aed122e451d5c2beb18f4ce3a5cfa5713814eb7ea23ace152b2c3b0ccc44d2421842f0dc7e9646bee98bc8ae708b3043ec38f0a3769aea08e16cc4520fa95c50a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d347594caca71d0b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 250, 102, 108, 86, 96, 217, 58, 131, 164, 175, 100, 53, 180, 71, 25, 226, 41, 68, 127, 12, 168, 61, 149, 205, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0050142db393cb16982d60f168330111, }, ), received_events: EventHandle { count: 1890010398816487368, key: EventKey( [ 174, 209, 34, 228, 81, 213, 194, 190, 177, 143, 76, 227, 165, 207, 165, 113, 56, 20, 235, 126, 162, 58, 206, 21, ], ), }, sent_events: EventHandle { count: 4814986594781703211, key: EventKey( [ 66, 240, 220, 126, 150, 70, 190, 233, 139, 200, 174, 112, 139, 48, 67, 236, 56, 240, 163, 118, 154, 234, 8, 225, ], ), }, sequence_number: 11840065301533344876, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7ac869b9e1e6330e3312c96f7c039500f0d2ba0d2cce5ab47cc698b753177214): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c996012932ea1521f45a14f4720d33da4e11c6784e64f9dfdf9cd0a5700b50fa584d89bece016c0adb6a1e19cb01701374404879988d0a5bed9ee0b24f5a01869500e066a80ad321172c8004fe0c8012de3aa58b5d624b180934f10ea5fe0c3e3b0cba4958251b0a6b55e415b72fac3b1da36a38a6145c701896c4087b5e02e4ff5be711aaf2638308f79f8c76f6c11fa81976e82ec9c05d132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ad3b6c7e9187ef20 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 234, 21, 33, 244, 90, 20, 244, 114, 13, 51, 218, 78, 17, 198, 120, 78, 100, 249, 223, 223, 156, 208, 165, 112, 11, 80, 250, 88, 77, 137, 190, 206, 1, 108, 10, 219, 106, 30, 25, 203, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 701374404879988d0a5bed9ee0b24f5a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 869500e066a80ad321172c8004fe0c80, }, ), received_events: EventHandle { count: 5432006954916175378, key: EventKey( [ 9, 52, 241, 14, 165, 254, 12, 62, 59, 12, 186, 73, 88, 37, 27, 10, 107, 85, 228, 21, 183, 47, 172, 59, ], ), }, sent_events: EventHandle { count: 8096368934248948509, key: EventKey( [ 150, 196, 8, 123, 94, 2, 228, 255, 91, 231, 17, 170, 242, 99, 131, 8, 247, 159, 140, 118, 246, 193, 31, 168, ], ), }, sequence_number: 1395483429862667801, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b125e7d3c8bc7cf14549626d61b70b3acf16061ad6705872488ce53f5cc3b37): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96417df8a626e6725f2b90a93ab5d76ff0cb1a56f5d830d19390000899bac79380050351825f5144b1c275927411e61ed3dc9849ea45dce87c90f3ce9d852a6ea325b9877188ace3e96848e61736fa8a9a2154e7ba769ea5d0cf7fa239687853df6114b86de2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087c40792fe6015c4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 138, 98, 110, 103, 37, 242, 185, 10, 147, 171, 93, 118, 255, 12, 177, 165, 111, 93, 131, 13, 25, 57, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3841570724706556809, key: EventKey( [ 37, 245, 20, 75, 28, 39, 89, 39, 65, 30, 97, 237, 61, 201, 132, 158, 164, 93, 206, 135, 201, 15, 60, 233, ], ), }, sent_events: EventHandle { count: 8617738161216705240, key: EventKey( [ 138, 206, 62, 150, 132, 142, 97, 115, 111, 168, 169, 162, 21, 78, 123, 167, 105, 234, 93, 12, 247, 250, 35, 150, ], ), }, sequence_number: 16034586063816983943, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b25eb01c18d78b98c21cb975156fa0c879991da8a395da2e10db538688f4f1f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f129e01a3b4fec5d357107fa99421a2f7b480ef01e9a7b4a0e472ac94c7e7f268dcbad944017bcfe55c17ec77ff11cc6219affe1f10136d6d7dad9d06591879c81952724e8783ee81f022c8c54235b7c7c799c166d180082caee5f58a5e781815e72273a8b14603fecb11432ea9120992b4baa6df8cfb728e2a1b5bf2d9231b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085744d3401b623ca3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 158, 1, 163, 180, 254, 197, 211, 87, 16, 127, 169, 148, 33, 162, 247, 180, 128, 239, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e9a7b4a0e472ac94c7e7f268dcbad944, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7bcfe55c17ec77ff11cc6219affe1f10, }, ), received_events: EventHandle { count: 6414988087695076627, key: EventKey( [ 121, 200, 25, 82, 114, 78, 135, 131, 238, 129, 240, 34, 200, 197, 66, 53, 183, 199, 199, 153, 193, 102, 209, 128, ], ), }, sent_events: EventHandle { count: 8673522721087171592, key: EventKey( [ 21, 231, 34, 115, 168, 177, 70, 3, 254, 203, 17, 67, 46, 169, 18, 9, 146, 180, 186, 166, 223, 140, 251, 114, ], ), }, sequence_number: 1955646298142747278, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7b6ccf26af8603822c953b1d4188fd442c2c02072c15b46c6708ed828c0b7bf1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d000001b54f155077d904e863740cd46ae1bac329a16b998c9c472518b67bc2ed7d8c810d9ebdc80d83e207aca52d47bebbe2319512a5c44fdfcc1c0f18118102f4f5d6398ed5c246124e9033b30c6a090b7140d353b78bc6463942baa52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fb433888989d8de2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b54f155077d904e863740cd46ae1bac3, }, ), received_events: EventHandle { count: 2686287830433112361, key: EventKey( [ 182, 123, 194, 237, 125, 140, 129, 13, 158, 189, 200, 13, 131, 226, 7, 172, 165, 45, 71, 190, 187, 226, 49, 149, ], ), }, sent_events: EventHandle { count: 1088970469404878098, key: EventKey( [ 17, 129, 2, 244, 245, 214, 57, 142, 213, 194, 70, 18, 78, 144, 51, 179, 12, 106, 9, 11, 113, 64, 211, 83, ], ), }, sequence_number: 11941930175694277559, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c030a4b520f689838fa8365b2df39a95870e5221b4b4c54e7ac707d686af353): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b2d84db6435ac6a3d660be314fe416271237c8c98284f49efffeca103116e8025dfbe7d2671459e7702281dd8c198db236ec9dee95bb54abb23941aeccf58bb021c8b9728b739465a9deb81efad9de04a935eb83afb46d41df8a72d0001523254eb643f96476a3ed944617fa4c8b840cfa030d00f76181d1100c9c098a61fb2774383e99252258c646d3c29e4005b5ce3dab155b5a62118a501834328fb08fee538dbbd9ce72498a8c007832106446d873cd7ee90f98b0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708133547a9d1d67b2b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 132, 219, 100, 53, 172, 106, 61, 102, 11, 227, 20, 254, 65, 98, 113, 35, 124, 140, 152, 40, 79, 73, 239, 255, 236, 161, 3, 17, 110, 128, 37, 223, 190, 125, 38, 113, 69, 158, 119, 2, 40, 29, 216, 193, 152, 219, 35, 110, 201, 222, 233, 91, 181, 74, 187, 35, 148, 26, 236, 207, 88, 187, 2, 28, 139, 151, 40, 183, 57, 70, 90, 157, 235, 129, 239, 173, 157, 224, 74, 147, 94, 184, 58, 251, 70, 212, 29, 248, 167, 45, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 523254eb643f96476a3ed944617fa4c8, }, ), received_events: EventHandle { count: 8507247128401100984, key: EventKey( [ 29, 17, 0, 201, 192, 152, 166, 31, 178, 119, 67, 131, 233, 146, 82, 37, 140, 100, 109, 60, 41, 228, 0, 91, ], ), }, sent_events: EventHandle { count: 2424824829046350684, key: EventKey( [ 165, 1, 131, 67, 40, 251, 8, 254, 229, 56, 219, 189, 156, 231, 36, 152, 168, 192, 7, 131, 33, 6, 68, 109, ], ), }, sequence_number: 832032957057678471, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c0c81fddd2dcaed64ae3b728f4344bf51d654f3de52b4cb60065f9096dbb05f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cc015fc90fa1bdd1eb6d58a4d4d0346d48c272845d3ab4cf5fcbb717235aa17b96fb563144b370875630e43ec8ae8945407e3ccc89d8b972eb3ffed1828552fc5894e44a11aaec34b795bcc75117eefbab69f7ddc538b8a4a4f98ceffb2c343db75a011b4d557a7adb8ca1d42f8f06f1c4a6bc01a666b360e48d9505ce1bfe64fa75acfa0c2746c67528784b189d9cbf4c68ecf4c13a4ebc359cfa3ccdbf2d423cd90d2e1bacdb407fe8325129187efda9b9a5c3bd8c6b0dc19b918b2d0ec92423cbdf82ffd795c4a9912170fb9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a2a4eb20ed8ff65e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 201, 15, 161, 189, 209, 235, 109, 88, 164, 212, 208, 52, 109, 72, 194, 114, 132, 93, 58, 180, 207, 95, 203, 183, 23, 35, 90, 161, 123, 150, 251, 86, 49, 68, 179, 112, 135, 86, 48, 228, 62, 200, 174, 137, 69, 64, 126, 60, 204, 137, 216, 185, 114, 235, 63, 254, 209, 130, 133, 82, 252, 88, 148, 228, 74, 17, 170, 236, 52, 183, 149, 188, 199, 81, 23, 238, 251, 171, 105, 247, 221, 197, 56, 184, 164, 164, 249, 140, 239, 251, 44, 52, 61, 183, 90, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1b4d557a7adb8ca1d42f8f06f1c4a6bc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a666b360e48d9505ce1bfe64fa75acfa, }, ), received_events: EventHandle { count: 5438141036352644876, key: EventKey( [ 157, 156, 191, 76, 104, 236, 244, 193, 58, 78, 188, 53, 156, 250, 60, 205, 191, 45, 66, 60, 217, 13, 46, 27, ], ), }, sent_events: EventHandle { count: 2977216802817366956, key: EventKey( [ 126, 253, 169, 185, 165, 195, 189, 140, 107, 13, 193, 155, 145, 139, 45, 14, 201, 36, 35, 203, 223, 130, 255, 215, ], ), }, sequence_number: 11167642990475330709, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7c6d037c1d7465f68254de9ed3389405a32a5ff2c31e11e5899da3e95c209acd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01306b13b7df3fb17794b802efc93c526ff273e137e677096f35e70c42c0f65cb2c939f2a2fb22a2dc1ffc8d0ffc513601fa00019e084a39853d0538a9442b248aee19dddb07a208c515fb7a180279dd7eca2c717cda2870945c1e42bd95b2e6791bcaf2c9cdffacf85623694818359b9505c05b369037533b2cd825347b8dbc23e11f6376303b2d62c67dfd36f72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec8fd8164cd15e93 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 107, 19, 183, 223, 63, 177, 119, 148, 184, 2, 239, 201, 60, 82, 111, 242, 115, 225, 55, 230, 119, 9, 111, 53, 231, 12, 66, 192, 246, 92, 178, 201, 57, 242, 162, 251, 34, 162, 220, 31, 252, 141, 15, 252, 81, 54, 1, 250, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9e084a39853d0538a9442b248aee19dd, }, ), received_events: EventHandle { count: 8861700627779160027, key: EventKey( [ 2, 121, 221, 126, 202, 44, 113, 124, 218, 40, 112, 148, 92, 30, 66, 189, 149, 178, 230, 121, 27, 202, 242, 201, ], ), }, sent_events: EventHandle { count: 5217740499731677133, key: EventKey( [ 53, 155, 149, 5, 192, 91, 54, 144, 55, 83, 59, 44, 216, 37, 52, 123, 141, 188, 35, 225, 31, 99, 118, 48, ], ), }, sequence_number: 17813704092751637819, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7ce0624d4b22617f76e9397aa4262b875c57218869a9e61371f7c7befc78d7d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c991013461fe5c4c545a0bf8a2e075dedc18e1a46548aec229b714a9bfd00e51a2f1d69f26779ee4d61ebdac4c6cdb6e8539175a32d8e5450001d6d3ec0114a6cd25d53de38c1492bb82a843136c24fb9451185c84c1fe3debf9ca55e3f86be95ffe035c5ba3cd26712baa431ce7612604490b18a817d60e80d04bd7224b62276472fffe9e05219b23d298ea791a81de8b4f2bd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e250744c01667bea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 254, 92, 76, 84, 90, 11, 248, 162, 224, 117, 222, 220, 24, 225, 164, 101, 72, 174, 194, 41, 183, 20, 169, 191, 208, 14, 81, 162, 241, 214, 159, 38, 119, 158, 228, 214, 30, 189, 172, 76, 108, 219, 110, 133, 57, 23, 90, 50, 216, 229, 69, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d6d3ec0114a6cd25d53de38c1492bb82, }, ), received_events: EventHandle { count: 5878599547475936168, key: EventKey( [ 92, 132, 193, 254, 61, 235, 249, 202, 85, 227, 248, 107, 233, 95, 254, 3, 92, 91, 163, 205, 38, 113, 43, 170, ], ), }, sent_events: EventHandle { count: 813185770614889539, key: EventKey( [ 168, 23, 214, 14, 128, 208, 75, 215, 34, 75, 98, 39, 100, 114, 255, 254, 158, 5, 33, 155, 35, 210, 152, 234, ], ), }, sequence_number: 15432516010267187833, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7d864f49e4a7d39579ef06daa264b5453a081073f12d8c490619a3293280ae80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22520d5331387e0d928840f78582945354b3839fca6355613c85afc55df84551a58f2400008df3b8923fbcad60189c9a0af428f7fe458ac838612c9e55ac3f8ae504974aabb7df53e8bafe72513218ab58b8affa641b65b3f933b17eabb8d7d3dc7b62263e653f770516e4b64b63002101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70884d8ed87b8813f3d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 13, 83, 49, 56, 126, 13, 146, 136, 64, 247, 133, 130, 148, 83, 84, 179, 131, 159, 202, 99, 85, 97, 60, 133, 175, 197, 93, 248, 69, 81, 165, 143, 36, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6966431179842581389, key: EventKey( [ 156, 154, 10, 244, 40, 247, 254, 69, 138, 200, 56, 97, 44, 158, 85, 172, 63, 138, 229, 4, 151, 74, 171, 183, ], ), }, sent_events: EventHandle { count: 3625805613393007583, key: EventKey( [ 171, 88, 184, 175, 250, 100, 27, 101, 179, 249, 51, 177, 126, 171, 184, 215, 211, 220, 123, 98, 38, 62, 101, 63, ], ), }, sequence_number: 27949271577134455, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7d89e34b322e50178f7b4ebd699802e6925f3ec71eacb51600de0440d864be85): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e35576f5271384c6218139005d7b3cf2133e83abc754e14faa5806e375c4c1e365437f646176a1531208839515d0de622fc3ec15324a0be529776c3a6b76b8c7f19c62b8f5c9adf3b3e554d5503090001ad88332f00c56028009ae9bfbfaf7882dd8549d3afd089391829f847e505b020cf14c90152ad183d733e86a8c66e594a13c53dd5e9f0544c3218cb1a9ae8e434877cc7972c82a69af71430243310e0d15a1535463a4a470e5a9f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70856a06e909b1151ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 87, 111, 82, 113, 56, 76, 98, 24, 19, 144, 5, 215, 179, 207, 33, 51, 232, 58, 188, 117, 78, 20, 250, 165, 128, 110, 55, 92, 76, 30, 54, 84, 55, 246, 70, 23, 106, 21, 49, 32, 136, 57, 81, 93, 13, 230, 34, 252, 62, 193, 83, 36, 160, 190, 82, 151, 118, 195, 166, 183, 107, 140, 127, 25, 198, 43, 143, 92, 154, 223, 59, 62, 85, 77, 85, 3, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ad88332f00c56028009ae9bfbfaf7882, }, ), received_events: EventHandle { count: 4146074385553917405, key: EventKey( [ 41, 248, 71, 229, 5, 176, 32, 207, 20, 201, 1, 82, 173, 24, 61, 115, 62, 134, 168, 198, 110, 89, 74, 19, ], ), }, sent_events: EventHandle { count: 3624365193818357189, key: EventKey( [ 203, 26, 154, 232, 228, 52, 135, 124, 199, 151, 44, 130, 166, 154, 247, 20, 48, 36, 51, 16, 224, 209, 90, 21, ], ), }, sequence_number: 11482505899285300789, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e68da57c517e5e35922d9d7601afb22a1250eb062c0931c648c243f40883e34): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22e26972b79fba944c778085a2d7397a88f20fd77438dfe42d32707cc8321a0f07620000000a60be19a8b8727218345669b05fffa03e4faec31cafbffaae74a2f608bc29966bdc9a47aec88c630e1889cd57c59b22d5353a6db5a9113d5235021f16a4e73fef86717e8f20ff1cb4982101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087de53302c882e224 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 105, 114, 183, 159, 186, 148, 76, 119, 128, 133, 162, 215, 57, 122, 136, 242, 15, 215, 116, 56, 223, 228, 45, 50, 112, 124, 200, 50, 26, 15, 7, 98, 0, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8246856899794722826, key: EventKey( [ 52, 86, 105, 176, 95, 255, 160, 62, 79, 174, 195, 28, 175, 191, 250, 174, 116, 162, 246, 8, 188, 41, 150, 107, ], ), }, sent_events: EventHandle { count: 1036827132770622172, key: EventKey( [ 137, 205, 87, 197, 155, 34, 213, 53, 58, 109, 181, 169, 17, 61, 82, 53, 2, 31, 22, 164, 231, 63, 239, 134, ], ), }, sequence_number: 11003451671661477489, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e70305de1692f58ebc7a2a1565979c95b9de409a26e162689a549abc3774104): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a73cf99c9a2ecf458ad5243b60e5bdcbd3a4f2e2174626ad3f5793fd2735d599f2e1c479f75dcfae97c5e04944e47216b60c2f55a5af774a6459fb332e987f7acfc10d2db233740c01e0de1dd40b56a5f2a43ef8bfc1e4c9ebf37018dbb9972d69be36f2734a6a055fd6f72006a36b1e1cbd071561873dccb39c1354e361bcc0dd2e780880d02983d928f80b125240c21e2d1804961187e7559a630542d49000ce6ca0afb6c5c881e643e1c9aed00fe0b4e1ec8ff9d1f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70833cb4e3590623876 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 207, 153, 201, 162, 236, 244, 88, 173, 82, 67, 182, 14, 91, 220, 189, 58, 79, 46, 33, 116, 98, 106, 211, 245, 121, 63, 210, 115, 93, 89, 159, 46, 28, 71, 159, 117, 220, 250, 233, 124, 94, 4, 148, 78, 71, 33, 107, 96, 194, 245, 90, 90, 247, 116, 166, 69, 159, 179, 50, 233, 135, 247, 172, 252, 16, 210, 219, 35, 55, 64, 192, 30, 13, 225, 221, 64, 181, 106, 95, 42, 67, 239, 139, 252, 30, 76, 158, 191, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8dbb9972d69be36f2734a6a055fd6f72, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6228989333713532522, key: EventKey( [ 115, 220, 203, 57, 193, 53, 78, 54, 27, 204, 13, 210, 231, 128, 136, 13, 2, 152, 61, 146, 143, 128, 177, 37, ], ), }, sent_events: EventHandle { count: 7010275933909224484, key: EventKey( [ 126, 117, 89, 166, 48, 84, 45, 73, 0, 12, 230, 202, 10, 251, 108, 92, 136, 30, 100, 62, 28, 154, 237, 0, ], ), }, sequence_number: 2278258221486312446, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7e78e786c88ad637c404a8ed32173a4eee35f479e6c7e8459ffb13ded606c763): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d015006557a0f1d895df58d97bde8a99f8c69fd20c9a69217484ba8cb6c0cbe3bc65f5f4e0b4f5ee5ec85c3d37c8e6edfdd90727a248f8d5272eb330a81c3e3ed27fe7ddbe7f196f2bdb49befb0a420f202b60000468a62df35f6e01e185f996b319e8df79d94afa6bddb2836bd83a1b74acd2df668943de1859d48ae1318db7db0b253920877aff6d2666a8f10be619ec2b55f942a8de8a1c2cebaccc8b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a55c6d63bd38f1c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 85, 122, 15, 29, 137, 93, 245, 141, 151, 189, 232, 169, 159, 140, 105, 253, 32, 201, 166, 146, 23, 72, 75, 168, 203, 108, 12, 190, 59, 198, 95, 95, 78, 11, 79, 94, 229, 236, 133, 195, 211, 124, 142, 110, 223, 221, 144, 114, 122, 36, 143, 141, 82, 114, 235, 51, 10, 129, 195, 227, 237, 39, 254, 125, 219, 231, 241, 150, 242, 189, 180, 155, 239, 176, 164, 32, 242, 2, 182, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2225048927162501702, key: EventKey( [ 95, 153, 107, 49, 158, 141, 247, 157, 148, 175, 166, 189, 219, 40, 54, 189, 131, 161, 183, 74, 205, 45, 246, 104, ], ), }, sent_events: EventHandle { count: 1418150774061481364, key: EventKey( [ 219, 125, 176, 178, 83, 146, 8, 119, 175, 246, 210, 102, 106, 143, 16, 190, 97, 158, 194, 181, 95, 148, 42, 141, ], ), }, sequence_number: 12810714242760221160, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7edec657828450da458063ace9162e64890ca0631a0d4f5bc34709ae6baf00da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a601494b1b4ef718bfa148f66e0855d23c6aba1a7b2b06478750b874feb7a8e55135c7bc9d457a0e339a200a78d691513295c20b44c9d438cd831e719e18504a749158ee5b7cc3985bfabbd00001ae058c46d318d905964729533088698a6b79f8d8243fe64b183a5de6f4710e7927fb820759fd1e51a2aa60eeab48923c7c832b9cfbf1daf72a187ac7d745faff113b65ddac98e5e171750d7943985ce7db6ba79fc921d29683f52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080ac97bd699f4d652 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 27, 78, 247, 24, 191, 161, 72, 246, 110, 8, 85, 210, 60, 106, 186, 26, 123, 43, 6, 71, 135, 80, 184, 116, 254, 183, 168, 229, 81, 53, 199, 188, 157, 69, 122, 14, 51, 154, 32, 10, 120, 214, 145, 81, 50, 149, 194, 11, 68, 201, 212, 56, 205, 131, 30, 113, 158, 24, 80, 74, 116, 145, 88, 238, 91, 124, 195, 152, 91, 250, 187, 208, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ae058c46d318d905964729533088698a, }, ), received_events: EventHandle { count: 5469128224979581291, key: EventKey( [ 58, 93, 230, 244, 113, 14, 121, 39, 251, 130, 7, 89, 253, 30, 81, 162, 170, 96, 238, 171, 72, 146, 60, 124, ], ), }, sent_events: EventHandle { count: 3096184001683794819, key: EventKey( [ 122, 199, 215, 69, 250, 255, 17, 59, 101, 221, 172, 152, 229, 225, 113, 117, 13, 121, 67, 152, 92, 231, 219, 107, ], ), }, sequence_number: 17691149590495600551, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f20860f9736c26f38486951c3c2375234c5382ecd668d65cb4c37a5ba3a7bbf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7014a35ecea951c7dd368775555fd3a3a27d8425e0c7aaf146e39d913fd2c020695a527a7817a49d3d47d7d61d18bab2d757dc12b8dbb899ab5bef34a17ed3fcf31e9f7e6253e8601b6c571ec01ace57bc6320fcb370c7cf42958afc2ef0187403b080c090f64a76f436e7eee736333212212ec44883518e1a41655d30277acfda33248a6e856ae77ca3d0740c612fe289479a89c88f01918f3a91a6854952408edd5cf2a84ee453b58b807c63513684a4a526fe96250242b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843247e877229e065 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 53, 236, 234, 149, 28, 125, 211, 104, 119, 85, 85, 253, 58, 58, 39, 216, 66, 94, 12, 122, 175, 20, 110, 57, 217, 19, 253, 44, 2, 6, 149, 165, 39, 167, 129, 122, 73, 211, 212, 125, 125, 97, 209, 139, 171, 45, 117, 125, 193, 43, 141, 187, 137, 154, 181, 190, 243, 74, 23, 237, 63, 207, 49, 233, 247, 230, 37, 62, 134, 1, 182, 197, 113, 236, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ace57bc6320fcb370c7cf42958afc2ef, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 87403b080c090f64a76f436e7eee7363, }, ), received_events: EventHandle { count: 3857408861550027059, key: EventKey( [ 225, 164, 22, 85, 211, 2, 119, 172, 253, 163, 50, 72, 166, 232, 86, 174, 119, 202, 61, 7, 64, 198, 18, 254, ], ), }, sent_events: EventHandle { count: 1869144051781571624, key: EventKey( [ 243, 169, 26, 104, 84, 149, 36, 8, 237, 213, 207, 42, 132, 238, 69, 59, 88, 184, 7, 198, 53, 19, 104, 74, ], ), }, sequence_number: 3108698028545888842, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(7f3b5e9f72dac0e3da78059ed9b7982503bd419a3c601e6f56917400d096fb67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999014cfe76eb6c9ab920ed14684c509c46b5c36db3a083952855c4d2361b5b4a38c8e6f4431d954cdaecdd03a9d95e9b092c11da0bbd86ae79db5398193f884a9251f082266065277463fd518a24a10000d16fdd4336aabe4f18b0d3250e3b7772c2ce073c04c67d08635f58e2f59c4d9218e4f383307adf7318186530c8101eb7d95b5633ff164e26becd7ed2e777ef0cd65852cfd33662e421842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fb437c70f3383e9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 254, 118, 235, 108, 154, 185, 32, 237, 20, 104, 76, 80, 156, 70, 181, 195, 109, 179, 160, 131, 149, 40, 85, 196, 210, 54, 27, 91, 74, 56, 200, 230, 244, 67, 29, 149, 76, 218, 236, 221, 3, 169, 217, 94, 155, 9, 44, 17, 218, 11, 189, 134, 174, 121, 219, 83, 152, 25, 63, 136, 74, 146, 81, 240, 130, 38, 96, 101, 39, 116, 99, 253, 81, 138, 36, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5746217324614873041, key: EventKey( [ 176, 211, 37, 14, 59, 119, 114, 194, 206, 7, 60, 4, 198, 125, 8, 99, 95, 88, 226, 245, 156, 77, 146, 24, ], ), }, sent_events: EventHandle { count: 1761997595124954084, key: EventKey( [ 101, 48, 200, 16, 30, 183, 217, 91, 86, 51, 255, 22, 78, 38, 190, 205, 126, 210, 231, 119, 239, 12, 214, 88, ], ), }, sequence_number: 9521142197715717970, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8028259f9f834ee921e8451c2da1380c73498e4b34fc10e4f8a528a290f689a1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671a9f2c2d09350738d0a4e9562b46188ac993dfa748e738341ac9510000407905971763494f18e958328fad26c346e71a6f7194c90adaf2c6ec56030278551bbd27823a433e5818a0ad36bc92cc5c0fda29262c8e0babd567daddb3313875a1281fb7b04cc933362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082857d98d7b102861 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 44, 45, 9, 53, 7, 56, 208, 164, 233, 86, 43, 70, 24, 138, 201, 147, 223, 167, 72, 231, 56, 52, 26, 201, 81, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5713206555265300800, key: EventKey( [ 233, 88, 50, 143, 173, 38, 195, 70, 231, 26, 111, 113, 148, 201, 10, 218, 242, 198, 236, 86, 3, 2, 120, 85, ], ), }, sent_events: EventHandle { count: 6358593642464525595, key: EventKey( [ 160, 173, 54, 188, 146, 204, 92, 15, 218, 41, 38, 44, 142, 11, 171, 213, 103, 218, 221, 179, 49, 56, 117, 161, ], ), }, sequence_number: 3905686633079840552, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80ab7e2ef72996d6d37942ce98fe2a3601de1c9a67dc25a69d8e23844ae43961): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0141a0f98535f0b6ae9fe7d82ce6fad5a9d0ca7898db7dbc35f0d006ace01d99a93daca86414c18c22270237b8bcbac2691cacc000e13e614d52efdb119925e684733701e6279c77b501581da16ded7be25940f401f0b56004f52265fc049014692c04bbeccbedb5121060bf2118911f93b4fbd503a4e2a1e5e3a8d06f3a5514caa0686bc2572615425ad5ac614118af58c46b267d6d4a330fc03462f2b7d209a37e954df59fdb925febb9dc4026112101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088119f1a0bb6c7c6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 249, 133, 53, 240, 182, 174, 159, 231, 216, 44, 230, 250, 213, 169, 208, 202, 120, 152, 219, 125, 188, 53, 240, 208, 6, 172, 224, 29, 153, 169, 61, 172, 168, 100, 20, 193, 140, 34, 39, 2, 55, 184, 188, 186, 194, 105, 28, 172, 192, 0, 225, 62, 97, 77, 82, 239, 219, 17, 153, 37, 230, 132, 115, 55, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e6279c77b501581da16ded7be25940f4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f0b56004f52265fc049014692c04bbec, }, ), received_events: EventHandle { count: 2431767945953013195, key: EventKey( [ 145, 31, 147, 180, 251, 213, 3, 164, 226, 161, 229, 227, 168, 208, 111, 58, 85, 20, 202, 160, 104, 107, 194, 87, ], ), }, sent_events: EventHandle { count: 4711236717548541222, key: EventKey( [ 175, 88, 196, 107, 38, 125, 109, 74, 51, 15, 192, 52, 98, 242, 183, 210, 9, 163, 126, 149, 77, 245, 159, 219, ], ), }, sequence_number: 1235746464515973010, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80bcaa4a3aaa0024571e27a1075261a39eecdfb16c3bba9b882322a24a0b9f25): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a2d0d28573d27e92773b9eade6448715a9a99272cfb7bbc5f28f7dba303ba6b380fa2066b5964ada5657988701a1b00008c235f5498094b4b18a535031f851f6f08993ef567f9ede729318cee26051f5effab01087ea905767418bd2e6c992ded902cab319fc06c4899df4e7e4a1328567f033cdb47b415d96fe82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081862a526f157eccf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 40, 87, 61, 39, 233, 39, 115, 185, 234, 222, 100, 72, 113, 90, 154, 153, 39, 44, 251, 123, 188, 95, 40, 247, 219, 163, 3, 186, 107, 56, 15, 162, 6, 107, 89, 100, 173, 165, 101, 121, 136, 112, 26, 27, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5425440725953094540, key: EventKey( [ 165, 53, 3, 31, 133, 31, 111, 8, 153, 62, 245, 103, 249, 237, 231, 41, 49, 140, 238, 38, 5, 31, 94, 255, ], ), }, sent_events: EventHandle { count: 8391901181173563819, key: EventKey( [ 189, 46, 108, 153, 45, 237, 144, 44, 171, 49, 159, 192, 108, 72, 153, 223, 78, 126, 74, 19, 40, 86, 127, 3, ], ), }, sequence_number: 16748844226456312636, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(80fa401e60694bd7623f206209d7273f57ce72d24baec76480ac3c6660d7e6b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137452034f72bf4ee0e1d867e0b8623f8c456b540a30ccfe2efda55c5fc23750df7fecc6c9cbed152f63ac32d05825862b4a6348c2db127a6018ee5fc512aef5e7f7b21654a52b726d901adbca233563c2a7c95a30a0580e7d310bc9c7ac9a59c2c6518feb69822438193b876d95207754da8078dcf338c73b8941b2d0edd457a24b02218aced76c094b922e4870181dcbfb5d2f08e1f36a24f02566f1b3fe08e9dc68c8c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a9ca27c89e5bc768 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 32, 52, 247, 43, 244, 238, 14, 29, 134, 126, 11, 134, 35, 248, 196, 86, 181, 64, 163, 12, 207, 226, 239, 218, 85, 197, 252, 35, 117, 13, 247, 254, 204, 108, 156, 190, 209, 82, 246, 58, 195, 45, 5, 130, 88, 98, 180, 166, 52, 140, 45, 177, 39, 166, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8ee5fc512aef5e7f7b21654a52b726d9, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: adbca233563c2a7c95a30a0580e7d310, }, ), received_events: EventHandle { count: 7290374132669783228, key: EventKey( [ 254, 182, 152, 34, 67, 129, 147, 184, 118, 217, 82, 7, 117, 77, 168, 7, 141, 207, 51, 140, 115, 184, 148, 27, ], ), }, sent_events: EventHandle { count: 2499537900767350317, key: EventKey( [ 172, 237, 118, 192, 148, 185, 34, 228, 135, 1, 129, 220, 191, 181, 210, 240, 142, 31, 54, 162, 79, 2, 86, 111, ], ), }, sequence_number: 10127688042058628891, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8110dbb3a0bb9b8782143e7651601c1ef6ca8545e93cfa62bab7ce1ea6953f52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975281f08a426a2937213da93066867a0ae53cd232fb6f255cea7a60f44552b36572cb3484e1c6f214dc1000060484ee401faf32e187d92760bfa5738583e5ebe6cb2beaa0f246dad239505cb81bd244965c9bbde0e185ef86720790f7bc92902e00566d98885b0208cd730b0f0a8081535ee6752a9a82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087bf61e420894d756 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 8, 164, 38, 162, 147, 114, 19, 218, 147, 6, 104, 103, 160, 174, 83, 205, 35, 47, 182, 242, 85, 206, 167, 166, 15, 68, 85, 43, 54, 87, 44, 179, 72, 78, 28, 111, 33, 77, 193, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3383322631117621344, key: EventKey( [ 125, 146, 118, 11, 250, 87, 56, 88, 62, 94, 190, 108, 178, 190, 170, 15, 36, 109, 173, 35, 149, 5, 203, 129, ], ), }, sent_events: EventHandle { count: 1071500235022869693, key: EventKey( [ 94, 248, 103, 32, 121, 15, 123, 201, 41, 2, 224, 5, 102, 217, 136, 133, 176, 32, 140, 215, 48, 176, 240, 168, ], ), }, sequence_number: 12153335675767559432, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8146dfe55a975d40021d39c625feb48e65d9a085a11a6baccd3ebf305a810e36): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970138c8c1391fdd4c746f13533cb24825c21ccdd7b011149be0b71b08d9e4d18f4e5f0940037002884de2664e1415f185bc0f50d621da3e5d9e75dfa5b2e2a6b50d06d9aba870e1888747e1012a4ac1b1858b7ad04f529c9ff848d09268cbcd8976704892317bd504bf66f2864f3e85e942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084b0f41db7020e0b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 140, 19, 145, 253, 212, 199, 70, 241, 53, 51, 203, 36, 130, 92, 33, 204, 221, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1149be0b71b08d9e4d18f4e5f0940037, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6864015127354442792, key: EventKey( [ 91, 192, 245, 13, 98, 29, 163, 229, 217, 231, 93, 250, 91, 46, 42, 107, 80, 208, 109, 154, 186, 135, 14, 24, ], ), }, sent_events: EventHandle { count: 1994149132511376520, key: EventKey( [ 88, 183, 173, 4, 245, 41, 201, 255, 132, 141, 9, 38, 140, 188, 216, 151, 103, 4, 137, 35, 23, 189, 80, 75, ], ), }, sequence_number: 10691238697479204854, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(814e47b1ff12267cede46b0fb457da454f081592337a89bc77924038ad6bdcd0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f8ac63040daeaf40a963f2c3a9e2bc0570e23e9ddd1215b8014cb2111064497f79f90493dfa56c3e0615bce2d3533ce59f34b833a639eb59055640c9bfd0d7a00014c1e209c68ebe6dd3e27f600cda78e1f93e59627feb1f974183d7dadc099d61856c99cc9a3768ad7f96314cfc6234faa1a5f8bd99e73bc140618b4deb9b57830897b16127717ff639e71abe2031393d6b975b71adfda034034ed2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088616480a19f13cee Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 198, 48, 64, 218, 234, 244, 10, 150, 63, 44, 58, 158, 43, 192, 87, 14, 35, 233, 221, 209, 33, 91, 128, 20, 203, 33, 17, 6, 68, 151, 247, 159, 144, 73, 61, 250, 86, 195, 224, 97, 91, 206, 45, 53, 51, 206, 89, 243, 75, 131, 58, 99, 158, 181, 144, 85, 100, 12, 155, 253, 13, 122, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4c1e209c68ebe6dd3e27f600cda78e1f, }, ), received_events: EventHandle { count: 8428963882744604051, key: EventKey( [ 61, 125, 173, 192, 153, 214, 24, 86, 201, 156, 201, 163, 118, 138, 215, 249, 99, 20, 207, 198, 35, 79, 170, 26, ], ), }, sent_events: EventHandle { count: 438182268534098783, key: EventKey( [ 180, 222, 185, 181, 120, 48, 137, 123, 22, 18, 119, 23, 255, 99, 158, 113, 171, 226, 3, 19, 147, 214, 185, 117, ], ), }, sequence_number: 17092356871079008951, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(814f3e02efd78b98ac85010c8aeabc0a607400785029bd9a43ccfb19eb64c198): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316060212c6c8318efc7caead17903345ea898984ac52ab000188110ac2fddf34cadb3c5949876e765f7dece711fbf09f1418414c1caaedf476a7ad843a36201f2fcc0c5c5031922f2bdf409aaec3ce2f977318c644d3caa7985aaaca94c5665f45cd87382233f7f418084f41b49c3567697bf32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084f3a9154417b20f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 2, 18, 198, 200, 49, 142, 252, 124, 174, 173, 23, 144, 51, 69, 234, 137, 137, 132, 172, 82, 171, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 88110ac2fddf34cadb3c5949876e765f, }, ), received_events: EventHandle { count: 1486171363183422589, key: EventKey( [ 65, 76, 28, 170, 237, 244, 118, 167, 173, 132, 58, 54, 32, 31, 47, 204, 12, 92, 80, 49, 146, 47, 43, 223, ], ), }, sent_events: EventHandle { count: 8329178600937790016, key: EventKey( [ 198, 68, 211, 202, 167, 152, 90, 170, 202, 148, 197, 102, 95, 69, 205, 135, 56, 34, 51, 247, 244, 24, 8, 79, ], ), }, sequence_number: 17544732665353909313, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8182be0043af2b9810ec9e683fefda1d982e856d6fa8a893079285ebfa2f064a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b6015924da123c90850fca2597c2eb5127f22623bb368ca89dbbeede65b459ba6e7046016cfddf413191344e1982ffbd482754c7ab6f5c95c1adadbeb5bd3a9e70b555e84771a17e0df5dd1eb685b880a67382bbc3b7dee0afc2738501a14b590a73abedc6efb042a533507fd500a0a5791d1416f66a1812a2125f99850f2e486f25f3aff771d00e4752eaf0a7a206d0e12a16708d454b18fa9fe560bd747723af543ad8412d56634eafa32398c1d0ccaeed27320e401ba42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085f137b2a0fda3c19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 218, 18, 60, 144, 133, 15, 202, 37, 151, 194, 235, 81, 39, 242, 38, 35, 187, 54, 140, 168, 157, 187, 238, 222, 101, 180, 89, 186, 110, 112, 70, 1, 108, 253, 223, 65, 49, 145, 52, 78, 25, 130, 255, 189, 72, 39, 84, 199, 171, 111, 92, 149, 193, 173, 173, 190, 181, 189, 58, 158, 112, 181, 85, 232, 71, 113, 161, 126, 13, 245, 221, 30, 182, 133, 184, 128, 166, 115, 130, 187, 195, 183, 222, 224, 175, 194, 115, 133, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a14b590a73abedc6efb042a533507fd5, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7707372087940851104, key: EventKey( [ 18, 162, 18, 95, 153, 133, 15, 46, 72, 111, 37, 243, 175, 247, 113, 208, 14, 71, 82, 234, 240, 167, 162, 6, ], ), }, sent_events: EventHandle { count: 5423896838785393104, key: EventKey( [ 250, 159, 229, 96, 189, 116, 119, 35, 175, 84, 58, 216, 65, 45, 86, 99, 78, 175, 163, 35, 152, 193, 208, 204, ], ), }, sequence_number: 11825115676306566574, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(818d9d2620223c2ee95516a512d591c28818749732e0faa9d1e9e6620cfd8971): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014abb69f1044ab1aad16120903138e6a23ff2a206318e28d37c947c820724ea551959061d240b459aef7870c694b80f21689050da4883a97218a5b995f488aeb32ee5b7c38043e9c33958f10000f0b032a529ea1d371822789ea9323f4eb68e55e7f45208aa317ab2bf0dc355569d428de17629fa570318a87cb827852179530a6b26381cc8157702843fae0a70db605f7bf7e0cdcde7922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708192543dd8c016cc1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 187, 105, 241, 4, 74, 177, 170, 209, 97, 32, 144, 49, 56, 230, 162, 63, 242, 162, 6, 49, 142, 40, 211, 124, 148, 124, 130, 7, 36, 234, 85, 25, 89, 6, 29, 36, 11, 69, 154, 239, 120, 112, 198, 148, 184, 15, 33, 104, 144, 80, 218, 72, 131, 169, 114, 24, 165, 185, 149, 244, 136, 174, 179, 46, 229, 183, 195, 128, 67, 233, 195, 57, 88, 241, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3971587910996766960, key: EventKey( [ 34, 120, 158, 169, 50, 63, 78, 182, 142, 85, 231, 244, 82, 8, 170, 49, 122, 178, 191, 13, 195, 85, 86, 157, ], ), }, sent_events: EventHandle { count: 240936161082707266, key: EventKey( [ 168, 124, 184, 39, 133, 33, 121, 83, 10, 107, 38, 56, 28, 200, 21, 119, 2, 132, 63, 174, 10, 112, 219, 96, ], ), }, sequence_number: 10585655733283945311, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(81ab7fcdee4be3955c165dedc596ec3c6ed50a669febab9e7d76c1ac1697f651): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32f994ca307cfcbe4aaf0969a42dc47895c87c51e9c39b85955350a0d6f8f4cda91c6fe3723ced7078073712f1340611f38fa200009fc68bc2c20cd51a18429cf389a28ae48e6fcb9b4554a0c6d6147bcd7978c02ed8273951799e13d6161824b18f56fc845d9fdcd074e6fb794ac355e85d865e519ba6ae496964884ac26f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70858bac3755d0a17c6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 249, 148, 202, 48, 124, 252, 190, 74, 175, 9, 105, 164, 45, 196, 120, 149, 200, 124, 81, 233, 195, 155, 133, 149, 83, 80, 160, 214, 248, 244, 205, 169, 28, 111, 227, 114, 60, 237, 112, 120, 7, 55, 18, 241, 52, 6, 17, 243, 143, 162, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1933465645652625055, key: EventKey( [ 66, 156, 243, 137, 162, 138, 228, 142, 111, 203, 155, 69, 84, 160, 198, 214, 20, 123, 205, 121, 120, 192, 46, 216, ], ), }, sent_events: EventHandle { count: 1645524285211621671, key: EventKey( [ 36, 177, 143, 86, 252, 132, 93, 159, 220, 208, 116, 230, 251, 121, 74, 195, 85, 232, 93, 134, 94, 81, 155, 166, ], ), }, sequence_number: 8053081033352497582, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(827fde79759e52479acc679ccc11be766be913ee11a25934f3eba6970278eedf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501288f6a06549a93365e0c6fe87dae224462ddb307c2ee7e9734c1a36056ca341dad72e9cfdde61c1fdb01cd421bee928e505e033edadcfbb37b5400c2c6ac9446934c57183de16f50c6e82e48d954e7ca80c714333f40786096142eca6d3c275627a6215518267cd68274313f2c05eeed704bb34da511bfcd8b7bff98d24ae07dead72f54282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089e03aed33588b746 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 106, 6, 84, 154, 147, 54, 94, 12, 111, 232, 125, 174, 34, 68, 98, 221, 179, 7, 194, 238, 126, 151, 52, 193, 163, 96, 86, 202, 52, 29, 173, 114, 233, 207, 221, 230, 28, 31, 219, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cd421bee928e505e033edadcfbb37b54, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6290564710881085122, key: EventKey( [ 61, 225, 111, 80, 198, 232, 46, 72, 217, 84, 231, 202, 128, 199, 20, 51, 63, 64, 120, 96, 150, 20, 46, 202, ], ), }, sent_events: EventHandle { count: 6134366855334673517, key: EventKey( [ 38, 124, 214, 130, 116, 49, 63, 44, 5, 238, 237, 112, 75, 179, 77, 165, 17, 191, 205, 139, 123, 255, 152, 210, ], ), }, sequence_number: 2906000263959404618, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(82a14daf6d2f2df9a4e1cd318bbcfbd62c8da8b83a32759f3ce97a826531e4d4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014e4f8928e0d60945873b5d352dc7842d8b5dc234e2b87f6188fd51def65825aefcd925d7a7c2692a9ca0f0a715f69ec028013efea299334ce28f99e39261f39cb7a9300c3412e03518e649c8e81abd01f3f0aab0d76754f119f6fa4af637259101e042de9526310b1f8eb7f4a79cc13571cfbc60fd45b1865218c5ffcc501c037114a4ec54df0b4f2d9ae5b3d41e9824295a420e2966712af6001821560a8451e635fb6651112ab29797dafc805b07bf4af5d0d239d32e0ea715792101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087fa61ed4eeb5f9a8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 137, 40, 224, 214, 9, 69, 135, 59, 93, 53, 45, 199, 132, 45, 139, 93, 194, 52, 226, 184, 127, 97, 136, 253, 81, 222, 246, 88, 37, 174, 252, 217, 37, 215, 167, 194, 105, 42, 156, 160, 240, 167, 21, 246, 158, 192, 40, 1, 62, 254, 162, 153, 51, 76, 226, 143, 153, 227, 146, 97, 243, 156, 183, 169, 48, 12, 52, 18, 224, 53, 24, 230, 73, 200, 232, 26, 189, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3f0aab0d76754f119f6fa4af6372591, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e042de9526310b1f8eb7f4a79cc13571, }, ), received_events: EventHandle { count: 5946635272151153871, key: EventKey( [ 197, 255, 204, 80, 28, 3, 113, 20, 164, 236, 84, 223, 11, 79, 45, 154, 229, 179, 212, 30, 152, 36, 41, 90, ], ), }, sent_events: EventHandle { count: 69289510804459074, key: EventKey( [ 33, 86, 10, 132, 81, 230, 53, 251, 102, 81, 17, 42, 178, 151, 151, 218, 252, 128, 91, 7, 191, 74, 245, 208, ], ), }, sequence_number: 8725063532457179602, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(838b34320cc9c084676cea8406d9968929501b0895c0cb9d959e6a9cafaf97b7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98501286ca81986575872892eae044e18304ef7b43304e2b428235c9c86928e197613b7bf9da98e74dc212a0106e254c0e4b825a44b25f1315dce4be200685b532a7f383b0a184fb2f03872f4a3338906f16b283d6324c892a4020b75539f5b6fa290077ab47f184455b86bce8832f6fdb9d262c92c054e604f4cfe9e39ca0c1b21bee7393e2dd52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085ea3d2b0a647934f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 168, 25, 134, 87, 88, 114, 137, 46, 174, 4, 78, 24, 48, 78, 247, 180, 51, 4, 226, 180, 40, 35, 92, 156, 134, 146, 142, 25, 118, 19, 183, 191, 157, 169, 142, 116, 220, 33, 42, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 06e254c0e4b825a44b25f1315dce4be2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 737245082827316072, key: EventKey( [ 79, 178, 240, 56, 114, 244, 163, 51, 137, 6, 241, 107, 40, 61, 99, 36, 200, 146, 164, 2, 11, 117, 83, 159, ], ), }, sent_events: EventHandle { count: 9202114111534690139, key: EventKey( [ 68, 85, 184, 107, 206, 136, 50, 246, 253, 185, 210, 98, 201, 44, 5, 78, 96, 79, 76, 254, 158, 57, 202, 12, ], ), }, sequence_number: 15361002322452685083, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(83939a72b3e2a4b610cd51c90e3523cdda67cb225e33948303540086c7d14c05): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014c8c340a30660c1942ee96bff1ca6648373161cdb60de7b89ad2ef588045bf93c34b75787595d5c32eb595501e61e3056f61009225b319b6d17f2f2c63962e5d6f14efd448ec50b723053c79670001327dd92a12a6807278487ecc7be5497c974ae91f9f100a661882eac789ec78426001441f344ebfac96a1e9f22ad17ead4d3aeff37ce119df1218ae4c3b92652e8e87bcd7a1255cad7ff1b9e277bbd9fc8c8a79a9371ff9f2c9fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089786c0e05b1f0a65 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 52, 10, 48, 102, 12, 25, 66, 238, 150, 191, 241, 202, 102, 72, 55, 49, 97, 205, 182, 13, 231, 184, 154, 210, 239, 88, 128, 69, 191, 147, 195, 75, 117, 120, 117, 149, 213, 195, 46, 181, 149, 80, 30, 97, 227, 5, 111, 97, 0, 146, 37, 179, 25, 182, 209, 127, 47, 44, 99, 150, 46, 93, 111, 20, 239, 212, 72, 236, 80, 183, 35, 5, 60, 121, 103, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 327dd92a12a6807278487ecc7be5497c, }, ), received_events: EventHandle { count: 7352707617256983191, key: EventKey( [ 130, 234, 199, 137, 236, 120, 66, 96, 1, 68, 31, 52, 78, 191, 172, 150, 161, 233, 242, 42, 209, 126, 173, 77, ], ), }, sent_events: EventHandle { count: 1359834068743876410, key: EventKey( [ 174, 76, 59, 146, 101, 46, 142, 135, 188, 215, 161, 37, 92, 173, 127, 241, 185, 226, 119, 187, 217, 252, 140, 138, ], ), }, sequence_number: 18287414913699129721, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84130aadc8ee3a65765f6cf17b990d0b2812c44696eeda709ee37df0e157ab7c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0140838e1f3fba5b81ff54c7349f3424d7dacc21fd241c66e6c5165fbb62529b2dd2fbf4ac9c68025166ece3e80fe41ecfbe36c1d43dc0b75235da1e4783e4c49afb0000a2175fc06ab5476618bb579df2451608f9562f9c4cdd7f8a9a5604220ee60e1ff4123265b390a62d0818d3ad3089164d320bb52bf45c9900d1572e33b09dcfee065082056aaa956c847a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e1ef19a6c98f3525 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 131, 142, 31, 63, 186, 91, 129, 255, 84, 199, 52, 159, 52, 36, 215, 218, 204, 33, 253, 36, 28, 102, 230, 197, 22, 95, 187, 98, 82, 155, 45, 210, 251, 244, 172, 156, 104, 2, 81, 102, 236, 227, 232, 15, 228, 30, 207, 190, 54, 193, 212, 61, 192, 183, 82, 53, 218, 30, 71, 131, 228, 196, 154, 251, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7370058785313724322, key: EventKey( [ 187, 87, 157, 242, 69, 22, 8, 249, 86, 47, 156, 76, 221, 127, 138, 154, 86, 4, 34, 14, 230, 14, 31, 244, ], ), }, sent_events: EventHandle { count: 589310266670658066, key: EventKey( [ 211, 173, 48, 137, 22, 77, 50, 11, 181, 43, 244, 92, 153, 0, 209, 87, 46, 51, 176, 157, 207, 238, 6, 80, ], ), }, sequence_number: 8828300559618016642, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84ae4c5ef1cb7641d62f07d117520caf0cc6a76518a9dc9ecb68d05c65b934be): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a20145389b2f88757683a59660f6f6b45231b93d6dae3a3a148f5a65cff3ce269e9903b0cebffcf8bb93ae7dda44b76eba9c2fad09f8a17f16b7d228158c717b375326cc4551d905000128c49f7495c2849207fa3e50b94d0ad7bf36f51f14b6490518ecf57367d3af8ab1a422d54809e307eb97acfd49a47721cdc2c33e1e647794651824d4d7503bcd1f0bbad9db2488703887107d9a858da10280885ddd88d3a496262101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc547c4591fa7341 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 56, 155, 47, 136, 117, 118, 131, 165, 150, 96, 246, 246, 180, 82, 49, 185, 61, 109, 174, 58, 58, 20, 143, 90, 101, 207, 243, 206, 38, 158, 153, 3, 176, 206, 191, 252, 248, 187, 147, 174, 125, 218, 68, 183, 110, 186, 156, 47, 173, 9, 248, 161, 127, 22, 183, 210, 40, 21, 140, 113, 123, 55, 83, 38, 204, 69, 81, 217, 5, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 28c49f7495c2849207fa3e50b94d0ad7, }, ), received_events: EventHandle { count: 381035841041282751, key: EventKey( [ 236, 245, 115, 103, 211, 175, 138, 177, 164, 34, 213, 72, 9, 227, 7, 235, 151, 172, 253, 73, 164, 119, 33, 205, ], ), }, sent_events: EventHandle { count: 7319606566271763394, key: EventKey( [ 36, 212, 215, 80, 59, 205, 31, 11, 186, 217, 219, 36, 136, 112, 56, 135, 16, 125, 154, 133, 141, 161, 2, 128, ], ), }, sequence_number: 2780591048389123464, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(84edfea2de4d09c0f60c0b0cb18ce595069da935224d8932a2160e73cbda60b4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c101543e0d0d2380ebadcbbcc8ee7a301bbf4b571e467601b55207b3a9eb1b6e41b39808882b5c4d83ef1389c95c80b865759728bbdf192574e14d29afe5f22dbbc1fe0bef583895a20ad95b71beeb76b452691b4ac0e1015cf93939ff200cfcb947271417b416040135696c0a407a6d0abcaab1cb3b3e0237068c23b289a8260418cb158ebf1119a6f00c98768bf6dd3eac73493732711bbdf6c6d54b7f36ad1e011857f27427f2bc62938ea3ccac05b832bf8dfe576ef974148629813184f8f5e3bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a31084d4da52e36b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 62, 13, 13, 35, 128, 235, 173, 203, 188, 200, 238, 122, 48, 27, 191, 75, 87, 30, 70, 118, 1, 181, 82, 7, 179, 169, 235, 27, 110, 65, 179, 152, 8, 136, 43, 92, 77, 131, 239, 19, 137, 201, 92, 128, 184, 101, 117, 151, 40, 187, 223, 25, 37, 116, 225, 77, 41, 175, 229, 242, 45, 187, 193, 254, 11, 239, 88, 56, 149, 162, 10, 217, 91, 113, 190, 235, 118, 180, 82, 105, 27, 74, 192, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5cf93939ff200cfcb947271417b41604, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 35696c0a407a6d0abcaab1cb3b3e0237, }, ), received_events: EventHandle { count: 299111734619376646, key: EventKey( [ 203, 21, 142, 191, 17, 25, 166, 240, 12, 152, 118, 139, 246, 221, 62, 172, 115, 73, 55, 50, 113, 27, 189, 246, ], ), }, sent_events: EventHandle { count: 80692292914763206, key: EventKey( [ 87, 242, 116, 39, 242, 188, 98, 147, 142, 163, 204, 172, 5, 184, 50, 191, 141, 254, 87, 110, 249, 116, 20, 134, ], ), }, sequence_number: 13683050540600230185, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(86067a877e8b1cc7ac452b5774cb8465f79482882514cd101a6fc61b47b92d34): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9722523eecbdd1c805d6b7ce08883f2d6c3a159c7b55bcfbfecfdf3d35a93ae1347944e9a103da60000b714f12956d1795e188cd393d759a23baffdd80027a6babd3a604c2735fe06c01ed349312333527b4118199eeb685186e32726faefb43c33acc89e75cfaf1abe3e5dad015a3ada7a37bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70888394bb454423348 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 238, 203, 221, 28, 128, 93, 107, 124, 224, 136, 131, 242, 214, 195, 161, 89, 199, 181, 91, 207, 191, 236, 253, 243, 211, 90, 147, 174, 19, 71, 148, 78, 154, 16, 61, 166, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6807702479748273335, key: EventKey( [ 140, 211, 147, 215, 89, 162, 59, 175, 253, 216, 0, 39, 166, 186, 189, 58, 96, 76, 39, 53, 254, 6, 192, 30, ], ), }, sent_events: EventHandle { count: 4718455414187968979, key: EventKey( [ 25, 158, 235, 104, 81, 134, 227, 39, 38, 250, 239, 180, 60, 51, 172, 200, 158, 117, 207, 175, 26, 190, 62, 93, ], ), }, sequence_number: 13634501474587902381, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(86f96ac0b4b9fd6c893a4adf1f36608017ac86316125faf996c05121a7831f33): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c94e018f0000a716fa2ae3151a471897642fe6f930626698db3fb78036bb4134958389eafc47b148dfcff98234925a18a8e1a8051e147c9b108e43f146ca188103b68cbfc560c54ed8f3484dc1e07bbf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1568176a96dd188 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5123431591510152871, key: EventKey( [ 151, 100, 47, 230, 249, 48, 98, 102, 152, 219, 63, 183, 128, 54, 187, 65, 52, 149, 131, 137, 234, 252, 71, 177, ], ), }, sent_events: EventHandle { count: 6526336547154812744, key: EventKey( [ 168, 225, 168, 5, 30, 20, 124, 155, 16, 142, 67, 241, 70, 202, 24, 129, 3, 182, 140, 191, 197, 96, 197, 78, ], ), }, sequence_number: 13797869004209583064, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8700c05823cc2382540eced8838e8b20914412247cd49b17450419aa8d701c72): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163cdb5449db64153b54d4de868e17964e24bf903ae467f9e34431a907a59217d1d1765773ea6f857e7e37efe6c01cc7770ac81f0c546a62decdf90609271fb4c8b33fd2fc49a5cfffbca29e5adb3268685db327333f3d83db4922c93c583d55f5ec7ed5e01a91ca996a8d9dad9fbc98ef694e9dd2c0071e84da1aba5251e18d86ea4b2d9ff2c40a541d3f4e2e0287316cce8743766fbe7a245793290a9d660189b6d7230f1f3669cf1979efb1393cd9f4d7deaa8ac5deb2e6a03c3deb15b7d572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca5f5da946249c35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 205, 181, 68, 157, 182, 65, 83, 181, 77, 77, 232, 104, 225, 121, 100, 226, 75, 249, 3, 174, 70, 127, 158, 52, 67, 26, 144, 122, 89, 33, 125, 29, 23, 101, 119, 62, 166, 248, 87, 231, 227, 126, 254, 108, 1, 204, 119, 112, 172, 129, 240, 197, 70, 166, 45, 236, 223, 144, 96, 146, 113, 251, 76, 139, 51, 253, 47, 196, 154, 92, 255, 251, 202, 41, 229, 173, 179, 38, 134, 133, 219, 50, 115, 51, 243, 216, 61, 180, 146, 44, 147, 197, 131, 213, 95, 94, 199, 237, 94, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a91ca996a8d9dad9fbc98ef694e9dd2c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2172324551840360561, key: EventKey( [ 216, 110, 164, 178, 217, 255, 44, 64, 165, 65, 211, 244, 226, 224, 40, 115, 22, 204, 232, 116, 55, 102, 251, 231, ], ), }, sent_events: EventHandle { count: 6977951109444355490, key: EventKey( [ 155, 109, 114, 48, 241, 243, 102, 156, 241, 151, 158, 251, 19, 147, 205, 159, 77, 125, 234, 168, 172, 93, 235, 46, ], ), }, sequence_number: 6304295872893223786, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8738bf1bdb961816e6d387b6bc6fb44a6d3695a47a12bcafc82cd14b6a9959f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820115ab645f19c42d2a954c1fc046c89c1d4b67206d4e64016262eb9aedfb6b3af3cbcb7919a423410170485f7fb08298cd808dca8a11fc16263eef426820d42335180bdbd6b98a3382eecdaaf733055047a1410dd6d74c35002c5e8ba2d3ac5e422018391589faad5e7e4abe05e4fd7bd2095df6c326f13b9455ac0a3c3364bd29127d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70802a7bf2963853f48 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 100, 95, 25, 196, 45, 42, 149, 76, 31, 192, 70, 200, 156, 29, 75, 103, 32, 109, 78, 100, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6262eb9aedfb6b3af3cbcb7919a42341, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 70485f7fb08298cd808dca8a11fc1626, }, ), received_events: EventHandle { count: 3829137343848312638, key: EventKey( [ 11, 219, 214, 185, 138, 51, 130, 238, 205, 170, 247, 51, 5, 80, 71, 161, 65, 13, 214, 215, 76, 53, 0, 44, ], ), }, sent_events: EventHandle { count: 2324524454054628190, key: EventKey( [ 57, 21, 137, 250, 173, 94, 126, 74, 190, 5, 228, 253, 123, 210, 9, 93, 246, 195, 38, 241, 59, 148, 85, 172, ], ), }, sequence_number: 9012311697728420874, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8825ff3aa7d7f3d29fb1ccf62b27fb25b5bb17cf7963789c79ea6d387abd3dfc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0f06d90373a11d2751883212ea20b7d5000028450e0b1bba583d18db386d365fd3060a44db65a58a6fd252ccfd63496003f022c70cfe53aa2dc50218931619f05cffa4b90f817f1aa1185ca8c9b6793c13620c3dd75ef32f0d98baad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708591509d36d40ce42 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 6, 217, 3, 115, 161, 29, 39, 81, 136, 50, 18, 234, 32, 183, 213, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4420487659576509736, key: EventKey( [ 219, 56, 109, 54, 95, 211, 6, 10, 68, 219, 101, 165, 138, 111, 210, 82, 204, 253, 99, 73, 96, 3, 240, 34, ], ), }, sent_events: EventHandle { count: 199615968064703687, key: EventKey( [ 147, 22, 25, 240, 92, 255, 164, 185, 15, 129, 127, 26, 161, 24, 92, 168, 201, 182, 121, 60, 19, 98, 12, 61, ], ), }, sequence_number: 12518485296636190423, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8864b7299fc56eb8d863ee961feeabdfe94b048b617d9a3b8164c895d9ccbf66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99501383f16808f2ce6177e5846c1061660183371ccdb1ba989c1a5f1069e3bfaf5b24de230f23eed8df594d2ae985ba3bff294ac687a13d129fd0600017581c4ea201379b22139f6d600938ecc78806427be17c749184592765591c514f3d0a6264f2cca4638a5944a1f335a5f3cd5e909ba7d690d271890072f184c4bb176afd9ca42d0d89497dddad96926e39ee7987517763afd6a782101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f19e25d7373115c3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 22, 128, 143, 44, 230, 23, 126, 88, 70, 193, 6, 22, 96, 24, 51, 113, 204, 219, 27, 169, 137, 193, 165, 241, 6, 158, 59, 250, 245, 178, 77, 226, 48, 242, 62, 237, 141, 245, 148, 210, 174, 152, 91, 163, 191, 242, 148, 172, 104, 122, 19, 209, 41, 253, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7581c4ea201379b22139f6d600938ecc, }, ), received_events: EventHandle { count: 5316243990606282872, key: EventKey( [ 69, 146, 118, 85, 145, 197, 20, 243, 208, 166, 38, 79, 44, 202, 70, 56, 165, 148, 74, 31, 51, 90, 95, 60, ], ), }, sent_events: EventHandle { count: 2814021330889468373, key: EventKey( [ 144, 7, 47, 24, 76, 75, 177, 118, 175, 217, 202, 66, 208, 216, 148, 151, 221, 218, 217, 105, 38, 227, 158, 231, ], ), }, sequence_number: 8677026059613861272, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(88a541964d909141ad2179f7fe03040ded20ad0230d7e104aa7f17709451e267): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152cfa52f94daa3edb714e55c1ce3fe97c37e8b1ddbd85d35a01908992a2465a789b32e1a14591f650da2fe906a5292927586ed99c74d17e66ed41325b1b730c98c2ea770f4c123ebf1d4b6e79a1ed86ea803c400014677d8af8de5962494eefda835ed9c4d47570664c097522d18fc0d4a26e9d059bf47705e4cbec607b422f93a943451a02d404f250a221cc83918001f7b38fb6716a501f08aed3f6b6df762a7ae4a925df98b4a68531f15f03a7b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846083229a95ffa3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 165, 47, 148, 218, 163, 237, 183, 20, 229, 92, 28, 227, 254, 151, 195, 126, 139, 29, 219, 216, 93, 53, 160, 25, 8, 153, 42, 36, 101, 167, 137, 179, 46, 26, 20, 89, 31, 101, 13, 162, 254, 144, 106, 82, 146, 146, 117, 134, 237, 153, 199, 77, 23, 230, 110, 212, 19, 37, 177, 183, 48, 201, 140, 46, 167, 112, 244, 193, 35, 235, 241, 212, 182, 231, 154, 30, 216, 110, 168, 3, 196, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4677d8af8de5962494eefda835ed9c4d, }, ), received_events: EventHandle { count: 3265839532364683079, key: EventKey( [ 252, 13, 74, 38, 233, 208, 89, 191, 71, 112, 94, 76, 190, 198, 7, 180, 34, 249, 58, 148, 52, 81, 160, 45, ], ), }, sent_events: EventHandle { count: 4163608788028706624, key: EventKey( [ 0, 31, 123, 56, 251, 103, 22, 165, 1, 240, 138, 237, 63, 107, 109, 247, 98, 167, 174, 74, 146, 93, 249, 139, ], ), }, sequence_number: 8879673588824893514, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89281cf0c22b072201b7c8b129ff00bf22347b2d6092c729c4ae3b773bee863c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131934a0445e47d13a420586d604b3cb2c7a35997511295cb162ffae25d416962f7dee494219a212658d29a67df5d34d2940e01e7a72a38ee666cf2f6f2c929a15e6cc3003ef8baf2837eaf2218a6aed239149a65f9e707cea468f71e9afe109ff436124d7aabfc615a979caa1b18677a07253542813fbaa4bb87f7ed98b64be439b84af4d68e759ec334a30e54ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708927bb2d88d245999 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 74, 4, 69, 228, 125, 19, 164, 32, 88, 109, 96, 75, 60, 178, 199, 163, 89, 151, 81, 18, 149, 203, 22, 47, 250, 226, 93, 65, 105, 98, 247, 222, 228, 148, 33, 154, 33, 38, 88, 210, 154, 103, 223, 93, 52, 210, 148, 14, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7a72a38ee666cf2f6f2c929a15e6cc3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2499355423392069694, key: EventKey( [ 166, 174, 210, 57, 20, 154, 101, 249, 231, 7, 206, 164, 104, 247, 30, 154, 254, 16, 159, 244, 54, 18, 77, 122, ], ), }, sent_events: EventHandle { count: 1993577958935231659, key: EventKey( [ 103, 122, 7, 37, 53, 66, 129, 63, 186, 164, 187, 135, 247, 237, 152, 182, 75, 228, 57, 184, 74, 244, 214, 142, ], ), }, sequence_number: 17173367373198237301, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(892ff05eafd6ef4786c8efb5dc6c7b7be6e9b57d4e1e9f82f0309844cead24ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96205233dd8d80f01f3e71d0ec895790b7739be637b9896f60052c9042617b88e491891b9cc632df1d103805671efd63fe76cca2698a3204b6303a1889daac79a606d18878565dcafc289dabc4cdae2242c682cc740af3deba8cfa91d37c676959d19e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e969426018cc7091 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 61, 216, 216, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3e71d0ec895790b7739be637b9896f6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5300376221023258962, key: EventKey( [ 145, 185, 204, 99, 45, 241, 209, 3, 128, 86, 113, 239, 214, 63, 231, 108, 202, 38, 152, 163, 32, 75, 99, 3, ], ), }, sent_events: EventHandle { count: 7881469530249988257, key: EventKey( [ 135, 133, 101, 220, 175, 194, 137, 218, 188, 76, 218, 226, 36, 44, 104, 44, 199, 64, 175, 61, 235, 168, 207, 169, ], ), }, sequence_number: 16508399174371653405, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89624496de0495000cb0ae9da2d5dc6abd0639a18ee171e04636bedd714eddab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d00016def410f49f1c5dc35a71ce169f67556000ddf1ff8ad60ba741894a2aa3aa8eeb51b719ec756c434528b18481119153efd8a144087d4911cd34d185c39c783010aaafc0155f1a72585b03a4340b1a7b89729d5049f404276b773c32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cb31026b686fe850 Decoded: { AccountResource { Some( AccountResource { authentication_key: [], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6def410f49f1c5dc35a71ce169f67556, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8411141554376269581, key: EventKey( [ 148, 162, 170, 58, 168, 238, 181, 27, 113, 158, 199, 86, 196, 52, 82, 139, 24, 72, 17, 25, 21, 62, 253, 138, ], ), }, sent_events: EventHandle { count: 5607857373667868692, key: EventKey( [ 92, 57, 199, 131, 1, 10, 170, 252, 1, 85, 241, 167, 37, 133, 176, 58, 67, 64, 177, 167, 184, 151, 41, 213, ], ), }, sequence_number: 14083802178263228164, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89652bc09dc9dd6b4dfacb621bf59778f2aea9daad64f3d54147705a216ad24f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c20155bf8bf09c3c09d7d6d91a421156cac68d86baa4c9e17a364c8d07ddb5558f01ab151e639a033531d882015777f6c8ec65078be852bde8ad03564b855abd2870135dcbdc1b15ed798c2ebfc49d87d3c3249033b2205701c800e5852bf13378217556f207aba8d301047683ce1bddbc35b3c6fd7e13d2f2e15473a398b5d967271816e6afba4bb0f9a7487e1bcc4a7b420f8cb344758b4787578735000f1ff8ac261813ad7d880a9d4013e38b162bcd3736d7a41f39fe88bc3135f33a68fe466cf2e82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708973d11b2807ffb31 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 139, 240, 156, 60, 9, 215, 214, 217, 26, 66, 17, 86, 202, 198, 141, 134, 186, 164, 201, 225, 122, 54, 76, 141, 7, 221, 181, 85, 143, 1, 171, 21, 30, 99, 154, 3, 53, 49, 216, 130, 1, 87, 119, 246, 200, 236, 101, 7, 139, 232, 82, 189, 232, 173, 3, 86, 75, 133, 90, 189, 40, 112, 19, 93, 203, 220, 27, 21, 237, 121, 140, 46, 191, 196, 157, 135, 211, 195, 36, 144, 51, 178, 32, 87, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c800e5852bf13378217556f207aba8d3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 047683ce1bddbc35b3c6fd7e13d2f2e1, }, ), received_events: EventHandle { count: 2839477464053543764, key: EventKey( [ 22, 230, 175, 186, 75, 176, 249, 167, 72, 126, 27, 204, 74, 123, 66, 15, 140, 179, 68, 117, 139, 71, 135, 87, ], ), }, sent_events: EventHandle { count: 2786875081714840967, key: EventKey( [ 19, 173, 125, 136, 10, 157, 64, 19, 227, 139, 22, 43, 205, 55, 54, 215, 164, 31, 57, 254, 136, 188, 49, 53, ], ), }, sequence_number: 16785597813335014131, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(898efd33b752976402cd90cfbd1d5bfd8719b3e3f0bc7d084916a1410863f044): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c993013667daf47ba591d4f076457d9c218966a9dadb1994fa129040406dc1acb1c73a672f0571520b17c773aa3d88924fbf746e3db89f092bee0112de7ccbae0a0f00f21006a5a5f3aa0400fcfc48e2709353391800c0bafa42721ddb93917eb24618e8e91e1e85f80572af37065aa4f755a30a4218aa8bc9da328b0a1161a72eb04818504ee8e5472f235b782c74de7b396a2310702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70860f0f573547d3afd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 103, 218, 244, 123, 165, 145, 212, 240, 118, 69, 125, 156, 33, 137, 102, 169, 218, 219, 25, 148, 250, 18, 144, 64, 64, 109, 193, 172, 177, 199, 58, 103, 47, 5, 113, 82, 11, 23, 199, 115, 170, 61, 136, 146, 79, 191, 116, 110, 61, 184, 159, 9, 43, 238, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 12de7ccbae0a0f00f21006a5a5f3aa04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4130807396270931196, key: EventKey( [ 0, 192, 186, 250, 66, 114, 29, 219, 147, 145, 126, 178, 70, 24, 232, 233, 30, 30, 133, 248, 5, 114, 175, 55, ], ), }, sent_events: EventHandle { count: 4758795545892641286, key: EventKey( [ 170, 139, 201, 218, 50, 139, 10, 17, 97, 167, 46, 176, 72, 24, 80, 78, 232, 229, 71, 47, 35, 91, 120, 44, ], ), }, sequence_number: 8074993071013224052, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(89ac53c5c12ce65c0fdcc9aab4e0f9bd8dd6e969c22e01e4103e09325d0cdc6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9550830ad493090ae7e3000002c94da4bf3332376189e7ce93d10a97532a8ac92663d6dbf0f21c9d2faf2e2d0bca68b24437157f64d18faf693522f2b81e6a05b877e32128f1e1cba600875b7d8023eee8588ec63dae92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080d59c1c61dbebd4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 48, 173, 73, 48, 144, 174, 126, 48, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8512704840703054892, key: EventKey( [ 158, 124, 233, 61, 16, 169, 117, 50, 168, 172, 146, 102, 61, 109, 191, 15, 33, 201, 210, 250, 242, 226, 208, 188, ], ), }, sent_events: EventHandle { count: 5617773729160661926, key: EventKey( [ 250, 246, 147, 82, 47, 43, 129, 230, 160, 91, 135, 126, 50, 18, 143, 30, 28, 186, 96, 8, 117, 183, 216, 2, ], ), }, sequence_number: 16850890823314042430, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a25653a70cedc91bd2c5e842b7fe42df87cd21ecd5e1311a3fbb5fbc9a91bd6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940137c44ae98251af0bd8c5d89a9ee8d1d71afc55c3fd59221fc9ae5d22ce0e4c0815c098830f97c4ba540babcc1276cbff8bc659ca27b1b8b60001ad719564dac074bf375cb0344caaee13146dc1cb53622c451817739d8bf4003fe233baee5476ceef69f2e7739931be92b1cebf959bc04cad1818129ba221328358ec65010d2aa0c7cebb2deda47d3bafc479eaba07b5389bdc2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3971b1f33293ed0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 74, 233, 130, 81, 175, 11, 216, 197, 216, 154, 158, 232, 209, 215, 26, 252, 85, 195, 253, 89, 34, 31, 201, 174, 93, 34, 206, 14, 76, 8, 21, 192, 152, 131, 15, 151, 196, 186, 84, 11, 171, 204, 18, 118, 203, 255, 139, 198, 89, 202, 39, 177, 184, 182, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ad719564dac074bf375cb0344caaee13, }, ), received_events: EventHandle { count: 4984466999632555284, key: EventKey( [ 23, 115, 157, 139, 244, 0, 63, 226, 51, 186, 238, 84, 118, 206, 239, 105, 242, 231, 115, 153, 49, 190, 146, 177, ], ), }, sent_events: EventHandle { count: 1778161818008928206, key: EventKey( [ 18, 155, 162, 33, 50, 131, 88, 236, 101, 1, 13, 42, 160, 199, 206, 187, 45, 237, 164, 125, 59, 175, 196, 121, ], ), }, sequence_number: 3304686894440757994, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a5f8322c9aa9403b1c9c99c9862bbbf51cab0a848ea5f054d99f9b2e7e42a5a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014de144a5dba29a6378ec6be66156d5208122e9be8ec4e79020c6d77ef2ece5e6f50e76ae0d49abf089ce8c3a4d604cc1bbe144ee77cf0f8f689d263cfb10cff2365c751c8cf8d7bc0358596e0a900001979e482aff8fa52f5342c686d8be9fd939f65ef8e1aeb63d180df61b70ee839eca6c226cf0d7e764e85da92e50c1c3639d06a87da04dd95e0518c18aeea935257ba869fb86dbf69ec930da1688c6d5aad2c195444fa9c4ab8a832101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d4f7e591ca04523 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 68, 165, 219, 162, 154, 99, 120, 236, 107, 230, 97, 86, 213, 32, 129, 34, 233, 190, 142, 196, 231, 144, 32, 198, 215, 126, 242, 236, 229, 230, 245, 14, 118, 174, 13, 73, 171, 240, 137, 206, 140, 58, 77, 96, 76, 193, 187, 225, 68, 238, 119, 207, 15, 143, 104, 157, 38, 60, 251, 16, 207, 242, 54, 92, 117, 28, 140, 248, 215, 188, 3, 88, 89, 110, 10, 144, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 979e482aff8fa52f5342c686d8be9fd9, }, ), received_events: EventHandle { count: 4446933967632791097, key: EventKey( [ 13, 246, 27, 112, 238, 131, 158, 202, 108, 34, 108, 240, 215, 231, 100, 232, 93, 169, 46, 80, 193, 195, 99, 157, ], ), }, sent_events: EventHandle { count: 386985545428740102, key: EventKey( [ 193, 138, 238, 169, 53, 37, 123, 168, 105, 251, 134, 219, 246, 158, 201, 48, 218, 22, 136, 198, 213, 170, 210, 193, ], ), }, sequence_number: 9478577226897114261, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8a6055950369c32e7118113b946f8318cc902d0ecb5f7fabcde198f51069e847): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974278cad12d75772d888724cf0deecc38294c5230dfc673598e73dfde6be73f4e7c7c1ea703aa1e65a00005eca54ee6ea25b6318493c5d7c1320367464cd6daadbd470b21dbf78a69b337c04873d91ed56b425261805c8dccf0c085900e35b5953f009c8dbdec0855733a623d39f44624d2a8fa7172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70838f1aa20653a8562 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 173, 18, 215, 87, 114, 216, 136, 114, 76, 240, 222, 236, 195, 130, 148, 197, 35, 13, 252, 103, 53, 152, 231, 61, 253, 230, 190, 115, 244, 231, 199, 193, 234, 112, 58, 161, 230, 90, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7159494629964171870, key: EventKey( [ 73, 60, 93, 124, 19, 32, 54, 116, 100, 205, 109, 170, 219, 212, 112, 178, 29, 191, 120, 166, 155, 51, 124, 4, ], ), }, sent_events: EventHandle { count: 2748801433025461639, key: EventKey( [ 5, 200, 220, 207, 12, 8, 89, 0, 227, 91, 89, 83, 240, 9, 200, 219, 222, 192, 133, 87, 51, 166, 35, 211, ], ), }, sequence_number: 1704488395832706207, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b01d00716d5cdeba4e8ac8cdc4ab1feb41a353bad45904854d17243c6330aff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161df891026f5174f83afbe9a819f9b0e87a833332700cc943a40b552dabac3dcaa232e9ab7c2d1ac737fd96a1f9f24fa333fb6e8497fb1a1c154141e1117e639d753800b699a2a7c4258eae44e85e67f02eaefab6fc20bc45a5658cf10da086d1fba0000e2b981928e9c2c6718114302e36e1257e2f19f25b947745a95e7042699a0ce7cb208af7a511fded51d183eadd2bc83a2023b6b24ad0a7b65a0a9e1b4c4eb23aec213e24d0ddc85e05e892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aff3ad5ce34dafb2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 223, 137, 16, 38, 245, 23, 79, 131, 175, 190, 154, 129, 159, 155, 14, 135, 168, 51, 51, 39, 0, 204, 148, 58, 64, 181, 82, 218, 186, 195, 220, 170, 35, 46, 154, 183, 194, 209, 172, 115, 127, 217, 106, 31, 159, 36, 250, 51, 63, 182, 232, 73, 127, 177, 161, 193, 84, 20, 30, 17, 23, 230, 57, 215, 83, 128, 11, 105, 154, 42, 124, 66, 88, 234, 228, 78, 133, 230, 127, 2, 234, 239, 171, 111, 194, 11, 196, 90, 86, 88, 207, 16, 218, 8, 109, 31, 186, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7434489221039110626, key: EventKey( [ 17, 67, 2, 227, 110, 18, 87, 226, 241, 159, 37, 185, 71, 116, 90, 149, 231, 4, 38, 153, 160, 206, 124, 178, ], ), }, sent_events: EventHandle { count: 2149868623231627016, key: EventKey( [ 62, 173, 210, 188, 131, 162, 2, 59, 107, 36, 173, 10, 123, 101, 160, 169, 225, 180, 196, 235, 35, 174, 194, 19, ], ), }, sequence_number: 9898595896534060514, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b371d434f3b462a0ca9eae6b6b6be9a026563c6ed2a050779c82d812b6d8b3e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012b98a70e0e17aeb57c226b7e90c070039bb9a00b817dd43f28426b0b7d54d141d1f52349832c13eac4fe014501fb43f4324b299ef39a460d16255e8d93017f5232310481ea9539c01896e5324b2f3f1770811b6e9f4718f9bc1db16ddcb8858a941981d35c11a86b71836a3c7988e39dd515b163434c3b186ae9f731f1bbf2b1c893ef3590f05bb4bdb9081156f5480f948f45c7aa0cfa972101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70845132caf8224a3b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 167, 14, 14, 23, 174, 181, 124, 34, 107, 126, 144, 192, 112, 3, 155, 185, 160, 11, 129, 125, 212, 63, 40, 66, 107, 11, 125, 84, 209, 65, 209, 245, 35, 73, 131, 44, 19, 234, 196, 254, 1, 69, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fb43f4324b299ef39a460d16255e8d93, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7f5232310481ea9539c01896e5324b2f, }, ), received_events: EventHandle { count: 5160964762404656959, key: EventKey( [ 249, 188, 29, 177, 109, 220, 184, 133, 138, 148, 25, 129, 211, 92, 17, 168, 107, 113, 131, 106, 60, 121, 136, 227, ], ), }, sent_events: EventHandle { count: 4272864241919579549, key: EventKey( [ 106, 233, 247, 49, 241, 187, 242, 177, 200, 147, 239, 53, 144, 240, 91, 180, 189, 185, 8, 17, 86, 245, 72, 15, ], ), }, sequence_number: 10951079371531980692, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b58c113a49dcf7468d5d002619b8f32e72f2517203030ac69ace0ee3a9da1bb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0ed8507e906a482e7d3c3fd6da4de301ec1eb2f79a027c336ac44fad5403607f00ef3f7cf1be8bf746181a09fb9eef2e403fd4275ed14aedf7edee9a92ffaced209cf425601279590955187f3486015a5e6ac92f5f1cba664e8f7d7bcc327e7461922ec9e73ce63641fd1d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085bffa9503299ea1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 80, 126, 144, 106, 72, 46, 125, 60, 63, 214, 218, 77, 227, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ec1eb2f79a027c336ac44fad5403607f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5113709554113986543, key: EventKey( [ 26, 9, 251, 158, 239, 46, 64, 63, 212, 39, 94, 209, 74, 237, 247, 237, 238, 154, 146, 255, 172, 237, 32, 156, ], ), }, sent_events: EventHandle { count: 6127527144548476404, key: EventKey( [ 127, 52, 134, 1, 90, 94, 106, 201, 47, 95, 28, 186, 102, 78, 143, 125, 123, 204, 50, 126, 116, 97, 146, 46, ], ), }, sequence_number: 2160955100254496713, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8b985e5837bb099048c07157e2d91d066b96b2fcc7785252e5c391dbb937ce1f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015d9e4302716ee70ad0b085c4d26bf62937999c575c53549e9fe736719a81e55d8559aecb13800682e0a106bbf3dc14738f80fb253f33d4ddc1693fdacaca72c8364700903a1636f51d3867df8ab3be006ff679920f5044d90599edac9b29017cadda70aafed6d887646bbbbbdc610b00c4526066b284f74218a65947a5a4dfda9c812845a5de9d27e1720aa558d39fd7898ea3de558d153b51182a730abf3b9a2577638099a1342d03e48e3d997218dad395cf4e319aaf443fa62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828f496f3e242cfc0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 158, 67, 2, 113, 110, 231, 10, 208, 176, 133, 196, 210, 107, 246, 41, 55, 153, 156, 87, 92, 83, 84, 158, 159, 231, 54, 113, 154, 129, 229, 93, 133, 89, 174, 203, 19, 128, 6, 130, 224, 161, 6, 187, 243, 220, 20, 115, 143, 128, 251, 37, 63, 51, 212, 221, 193, 105, 63, 218, 202, 202, 114, 200, 54, 71, 0, 144, 58, 22, 54, 245, 29, 56, 103, 223, 138, 179, 190, 0, 111, 246, 121, 146, 15, 80, 68, 217, 5, 153, 237, 172, 155, 41, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7cadda70aafed6d887646bbbbbdc610b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4825471427507409604, key: EventKey( [ 166, 89, 71, 165, 164, 223, 218, 156, 129, 40, 69, 165, 222, 157, 39, 225, 114, 10, 165, 88, 211, 159, 215, 137, ], ), }, sent_events: EventHandle { count: 5853295837473317774, key: EventKey( [ 42, 115, 10, 191, 59, 154, 37, 119, 99, 128, 153, 161, 52, 45, 3, 228, 142, 61, 153, 114, 24, 218, 211, 149, ], ), }, sequence_number: 11979369054825696975, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8baa46dee6611cd4a690731428994108f7306ca8078e8f94da741f09c21d96f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c992013537d1f2b7a08795430fcc65514300f118e6d96ef31c0c08a25d5d42ff1d70c6e7bddadd04bd7d3ec04f4ab2445d2617c715cde7c7fc0001615720edf0dd268ed9ac297546ca7691e1b6984163ebea4a1812d2d76a27dac47a3e5b651a19ce163df17b0d48fd7f952c0e2bdfb467a1c90a18e6af47c20821ac8b11334171f968e0dc35a2e9c1aa1b061b32026b7f02e981f62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f0e99339c028adec Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 55, 209, 242, 183, 160, 135, 149, 67, 15, 204, 101, 81, 67, 0, 241, 24, 230, 217, 110, 243, 28, 12, 8, 162, 93, 93, 66, 255, 29, 112, 198, 231, 189, 218, 221, 4, 189, 125, 62, 192, 79, 74, 178, 68, 93, 38, 23, 199, 21, 205, 231, 199, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 615720edf0dd268ed9ac297546ca7691, }, ), received_events: EventHandle { count: 5398385914891777761, key: EventKey( [ 18, 210, 215, 106, 39, 218, 196, 122, 62, 91, 101, 26, 25, 206, 22, 61, 241, 123, 13, 72, 253, 127, 149, 44, ], ), }, sent_events: EventHandle { count: 777329877486349070, key: EventKey( [ 230, 175, 71, 194, 8, 33, 172, 139, 17, 51, 65, 113, 249, 104, 224, 220, 53, 162, 233, 193, 170, 27, 6, 27, ], ), }, sequence_number: 17762734602262872626, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8cc20fb9ed97fc075ee117917eafc176b8f25acb07405750b844fe0e8bd49000): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9014cd5191c9a3ea9bb6471125945320689cd9083191837f9c45a711ba8c3ffc170612b7f75262d3ff3b086cd0fd9f59b88db0255532a867c6b6dbf125e30c9363176344860b34eab495601c9e149014c894c50382547ebbcad2c031f6e5de501ceb77a81053444b52cd74e54072b976eae4fd88cf5e5780d1885c78bbc64312337ab5a1d8b74dc250759f76089bd141e9127d89ddad330f74b18a5d74524e2fe0a9e4689be46d23f2f07efe4f035d60e0af10cd667463b692b632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fda3de397822ffe3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 25, 28, 154, 62, 169, 187, 100, 113, 18, 89, 69, 50, 6, 137, 205, 144, 131, 25, 24, 55, 249, 196, 90, 113, 27, 168, 195, 255, 193, 112, 97, 43, 127, 117, 38, 45, 63, 243, 176, 134, 205, 15, 217, 245, 155, 136, 219, 2, 85, 83, 42, 134, 124, 107, 109, 191, 18, 94, 48, 201, 54, 49, 118, 52, 72, 96, 179, 78, 171, 73, 86, 1, 201, 225, 73, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4c894c50382547ebbcad2c031f6e5de5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ceb77a81053444b52cd74e54072b976e, }, ), received_events: EventHandle { count: 970778562491076526, key: EventKey( [ 133, 199, 139, 188, 100, 49, 35, 55, 171, 90, 29, 139, 116, 220, 37, 7, 89, 247, 96, 137, 189, 20, 30, 145, ], ), }, sent_events: EventHandle { count: 5473897558556137511, key: EventKey( [ 165, 215, 69, 36, 226, 254, 10, 158, 70, 137, 190, 70, 210, 63, 47, 7, 239, 228, 240, 53, 214, 14, 10, 241, ], ), }, sequence_number: 7145920937058620940, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8d59c5689aa6075fcd6e4b07142e422429ce14fd2661e07cdde381ed4fd1ce4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01304f2d51a9cafcd4d5f32a6c026d057e01fd8df6b359bf787dfc5265132413d00a7099bbf7dec0adbf5e2c51f38f8c78390001351752fe6bce1f642eea8e0a784c0ed07b3529ac0e09392b18a7e367875f006b6cecbc24b15beb5e54c7044ca7b55f1357a001dd417c5ef83f18eb7b82eb542540c7c3d04511a115973da4a1ec289146525cd0c05c7faf623a632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b63b1aac3f30a980 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 79, 45, 81, 169, 202, 252, 212, 213, 243, 42, 108, 2, 109, 5, 126, 1, 253, 141, 246, 179, 89, 191, 120, 125, 252, 82, 101, 19, 36, 19, 208, 10, 112, 153, 187, 247, 222, 192, 173, 191, 94, 44, 81, 243, 143, 140, 120, 57, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 351752fe6bce1f642eea8e0a784c0ed0, }, ), received_events: EventHandle { count: 3114530575925982587, key: EventKey( [ 167, 227, 103, 135, 95, 0, 107, 108, 236, 188, 36, 177, 91, 235, 94, 84, 199, 4, 76, 167, 181, 95, 19, 87, ], ), }, sent_events: EventHandle { count: 4609538106387661216, key: EventKey( [ 235, 123, 130, 235, 84, 37, 64, 199, 195, 208, 69, 17, 161, 21, 151, 61, 164, 161, 236, 40, 145, 70, 82, 92, ], ), }, sequence_number: 7150135864299667664, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8db76f919887c1cd287e87f4f8b15527d6dc293ecfeb4ec11373ebc96f937ce9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95a0d2d996e0e53d3310516e9e2e6f80000959e4a21d873ef4f18e85caae998b696d1ced0b40b0bced3de34def4114a2d7e23fd9907289999a77518a8366de9222f93f1bfe1055b48a685162d4c05b81de1da8083fb4c68e7accabd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bb4f3498480e27c7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 153, 110, 14, 83, 211, 49, 5, 22, 233, 226, 230, 248, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5759949820538822293, key: EventKey( [ 232, 92, 170, 233, 152, 182, 150, 209, 206, 208, 180, 11, 11, 206, 211, 222, 52, 222, 244, 17, 74, 45, 126, 35, ], ), }, sent_events: EventHandle { count: 8477913706628880893, key: EventKey( [ 168, 54, 109, 233, 34, 47, 147, 241, 191, 225, 5, 91, 72, 166, 133, 22, 45, 76, 5, 184, 29, 225, 218, 128, ], ), }, sequence_number: 13675933328351230851, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(8facf6852394d9955604dba4fdb16a9378c278f56dbc33b9b6dbe1cbfae1119f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b012e1efc6f6a34f9d4f014f92ee6ba3c05b87f6cf88a246589fe4bb49e0fe5fec130bb971fa6ece0695b5a451e69239200019753de47ab7c9c1a71cfedb309c0cdfc13db90f4ffbeef4918a3edf4c21a1f22e117e1152672828edc78f939dab60461b296db3dea25bd9635184aa136bdff6a21ed630420dd234759b80399ad8dcb11e3ed8477fd4acecf227a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708803749b5fa7afc09 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 252, 111, 106, 52, 249, 212, 240, 20, 249, 46, 230, 186, 60, 5, 184, 127, 108, 248, 138, 36, 101, 137, 254, 75, 180, 158, 15, 229, 254, 193, 48, 187, 151, 31, 166, 236, 224, 105, 91, 90, 69, 30, 105, 35, 146, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9753de47ab7c9c1a71cfedb309c0cdfc, }, ), received_events: EventHandle { count: 5327686890731658003, key: EventKey( [ 163, 237, 244, 194, 26, 31, 34, 225, 23, 225, 21, 38, 114, 130, 142, 220, 120, 249, 57, 218, 182, 4, 97, 178, ], ), }, sent_events: EventHandle { count: 3861481701058141078, key: EventKey( [ 74, 161, 54, 189, 255, 106, 33, 237, 99, 4, 32, 221, 35, 71, 89, 184, 3, 153, 173, 141, 203, 17, 227, 237, ], ), }, sequence_number: 8800825106763708292, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9006bb3694685127b6df08c2cce383674638a4f0f5bda39a69f1c6d39e96baad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013cfb3373a7295c6f7fd117e61ea062334778170df5e23f1c3b08cfd2e7c2e7ca7676637363665406fa74c9f41824cb6abe35b6d29bbf5e747b58355b0201e28d2c1796e58823ae86c5569776f9c3015958c8a2594100f35371a3a51fb8118e3d5aa65c4e74e74f187a55271de548b605fdeb3455f9cd28cf40fc6176735095b85d24c795ce4413581826d58d80ab956b7237560c6c3fbad5d780567c56b633317e38cd9d14b7b4e9c42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70881661e4c5c7e99e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 51, 115, 167, 41, 92, 111, 127, 209, 23, 230, 30, 160, 98, 51, 71, 120, 23, 13, 245, 226, 63, 28, 59, 8, 207, 210, 231, 194, 231, 202, 118, 118, 99, 115, 99, 102, 84, 6, 250, 116, 201, 244, 24, 36, 203, 106, 190, 53, 182, 210, 155, 191, 94, 116, 123, 88, 53, 91, 2, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e28d2c1796e58823ae86c5569776f9c3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5958c8a2594100f35371a3a51fb8118e, }, ), received_events: EventHandle { count: 5757698528527145533, key: EventKey( [ 122, 85, 39, 29, 229, 72, 182, 5, 253, 235, 52, 85, 249, 205, 40, 207, 64, 252, 97, 118, 115, 80, 149, 184, ], ), }, sent_events: EventHandle { count: 6346491953961968733, key: EventKey( [ 38, 213, 141, 128, 171, 149, 107, 114, 55, 86, 12, 108, 63, 186, 213, 215, 128, 86, 124, 86, 182, 51, 49, 126, ], ), }, sequence_number: 14189070799425359160, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90a652446d1874062446a07efcf3713467ed3eec63780c360dac7ac62282372b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f01522163622ca38e5c1c8cfc114d3607e3d96f8efd2fe53f184e5a8a78f72f470448e5e818fa8e860848e88c39d5991f41bf301e9357fc87eac068ddf01160d63d273b81e64fcb0f8ef7a6143e3703db75ec6afc0000d07cc14fb904a16518bdf27902d2f7fb8f4e51c794c06e2bee703314cda4521cf23fc3fdd1025c2d4d18f1be1fa70e6b47678c76772f15f523e4204c0e02f4ee35166993340fd046c25c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f22c28b83436d0ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 99, 98, 44, 163, 142, 92, 28, 140, 252, 17, 77, 54, 7, 227, 217, 111, 142, 253, 47, 229, 63, 24, 78, 90, 138, 120, 247, 47, 71, 4, 72, 229, 232, 24, 250, 142, 134, 8, 72, 232, 140, 57, 213, 153, 31, 65, 191, 48, 30, 147, 87, 252, 135, 234, 192, 104, 221, 240, 17, 96, 214, 61, 39, 59, 129, 230, 79, 203, 15, 142, 247, 166, 20, 62, 55, 3, 219, 117, 236, 106, 252, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7323139663034678480, key: EventKey( [ 189, 242, 121, 2, 210, 247, 251, 143, 78, 81, 199, 148, 192, 110, 43, 238, 112, 51, 20, 205, 164, 82, 28, 242, ], ), }, sent_events: EventHandle { count: 5561202282055189311, key: EventKey( [ 241, 190, 31, 167, 14, 107, 71, 103, 140, 118, 119, 47, 21, 245, 35, 228, 32, 76, 14, 2, 244, 238, 53, 22, ], ), }, sequence_number: 6683982656393483113, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90c54355e773dbc5e9831b1d922f6ef6e5c71993bfa3e438df552af8c3365e14): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c30156b8ce67edcdf5a4217ae9038e6102394de23f829d5bf577351885772558d99959af297a3f1625decb063f5b7160f7f4c5054e000c97ccc7c40f7c2c780339cd3ba0ddc18432df3ece030c96584f2be1233cfb4e4bec4b01a884f0f9a915bb0eb4998cef69939fc40116e34e65be0c86c0b0aacaa2b905627c42c294185933434f18dbc7de0f042c40270fd3827a8f86e2202b204d0b430786d77e13daa255528f5618a8396e3297c03bf60db361c592f88fa41eb0efe9f77786fb0d850f686aa2d2e42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708836f8957f9c1b263 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 184, 206, 103, 237, 205, 245, 164, 33, 122, 233, 3, 142, 97, 2, 57, 77, 226, 63, 130, 157, 91, 245, 119, 53, 24, 133, 119, 37, 88, 217, 153, 89, 175, 41, 122, 63, 22, 37, 222, 203, 6, 63, 91, 113, 96, 247, 244, 197, 5, 78, 0, 12, 151, 204, 199, 196, 15, 124, 44, 120, 3, 57, 205, 59, 160, 221, 193, 132, 50, 223, 62, 206, 3, 12, 150, 88, 79, 43, 225, 35, 60, 251, 78, 75, 236, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a884f0f9a915bb0eb4998cef69939fc4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 16e34e65be0c86c0b0aacaa2b905627c, }, ), received_events: EventHandle { count: 5711465210193429058, key: EventKey( [ 219, 199, 222, 15, 4, 44, 64, 39, 15, 211, 130, 122, 143, 134, 226, 32, 43, 32, 77, 11, 67, 7, 134, 215, ], ), }, sent_events: EventHandle { count: 6237294536689324926, key: EventKey( [ 168, 57, 110, 50, 151, 192, 59, 246, 13, 179, 97, 197, 146, 248, 143, 164, 30, 176, 239, 233, 247, 119, 134, 251, ], ), }, sequence_number: 16488419763652887821, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(90dee1588d339126a855162a67fe34736c1cd7dd7b912e662f7a8ef62ddf29b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900123eeee40767c351c259bbfb0efa5a1ddc7bfebc9367a99cc72874f700e58f5c913ac2d3301f6d28b8db1074face5ae06698939d25001cb1d7f88d029239dc73c462eebf9fe287f1fb454a70f466a185f133c808543fb8295b822875050bf0419f086b0aa1b6f9bebec2207acb3f70b18712dc3ea2723c05cc3768f34c8ef4558189270c6301ae2fa593243e6131c378a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708edb7c9ddd502ee04 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 238, 64, 118, 124, 53, 28, 37, 155, 191, 176, 239, 165, 161, 221, 199, 191, 235, 201, 54, 122, 153, 204, 114, 135, 79, 112, 14, 88, 245, 201, 19, 172, 45, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f6d28b8db1074face5ae06698939d250, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cb1d7f88d029239dc73c462eebf9fe28, }, ), received_events: EventHandle { count: 7657825427745152895, key: EventKey( [ 95, 19, 60, 128, 133, 67, 251, 130, 149, 184, 34, 135, 80, 80, 191, 4, 25, 240, 134, 176, 170, 27, 111, 155, ], ), }, sent_events: EventHandle { count: 862355405100215531, key: EventKey( [ 113, 45, 195, 234, 39, 35, 192, 92, 195, 118, 143, 52, 200, 239, 69, 88, 24, 146, 112, 198, 48, 26, 226, 250, ], ), }, sequence_number: 9959459972746261081, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9115d73086bb347cef53f11eedf278ea79623d308550141785800c1114a60770): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800133f1be90d02fd8d8da594b401d95585c4c8a77ae3d6e8282b7bafd5b372d3ef4472d01e16f98924103847e4c3267db2dd70a07790000decf46c95f790d5c18a2f397cbb7d504da1ebf81fda197d5b65c288e903d7043e29547a2bb2af4393918d7b96621838b3f515c46aa5d3a71e6cad3a586607dd8b1e2653b3877dd96edba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a44660d952cea2e4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 190, 144, 208, 47, 216, 216, 218, 89, 75, 64, 29, 149, 88, 92, 76, 138, 119, 174, 61, 110, 130, 130, 183, 186, 253, 91, 55, 45, 62, 244, 71, 45, 1, 225, 111, 152, 146, 65, 3, 132, 126, 76, 50, 103, 219, 45, 215, 10, 7, 121, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6633091278492323806, key: EventKey( [ 162, 243, 151, 203, 183, 213, 4, 218, 30, 191, 129, 253, 161, 151, 213, 182, 92, 40, 142, 144, 61, 112, 67, 226, ], ), }, sent_events: EventHandle { count: 4123595398208178069, key: EventKey( [ 215, 185, 102, 33, 131, 139, 63, 81, 92, 70, 170, 93, 58, 113, 230, 202, 211, 165, 134, 96, 125, 216, 177, 226, ], ), }, sequence_number: 13469587938467134309, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(91af878c9bdb648316bd8a8540db67cf91a11fca77d0a17eb9f9e1cc1696c4eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0132e824ea099d32bbf93ad63abf81358d144271b340b4b28fa0c9c16499808e55966bee6b5868008e61ce4508677f2486e0facc013204f565be6123006fce8c5bbac96cb2003df4f7e72a1cc9121847348ac1e0848f977fcbabebbe7f09100076cfd101cb8cad5a6b92ba0de61c7c18bab641c04b63347696b25bb2a1d9b1507667ae3a64c61d103d0b15c275b543332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ec1ac2a505d0addf Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 36, 234, 9, 157, 50, 187, 249, 58, 214, 58, 191, 129, 53, 141, 20, 66, 113, 179, 64, 180, 178, 143, 160, 201, 193, 100, 153, 128, 142, 85, 150, 107, 238, 107, 88, 104, 0, 142, 97, 206, 69, 8, 103, 127, 36, 134, 224, 250, 204, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3204f565be6123006fce8c5bbac96cb2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1353644133607535677, key: EventKey( [ 71, 52, 138, 193, 224, 132, 143, 151, 127, 203, 171, 235, 190, 127, 9, 16, 0, 118, 207, 209, 1, 203, 140, 173, ], ), }, sent_events: EventHandle { count: 8943275906690083674, key: EventKey( [ 186, 182, 65, 192, 75, 99, 52, 118, 150, 178, 91, 178, 161, 217, 177, 80, 118, 103, 174, 58, 100, 198, 29, 16, ], ), }, sequence_number: 3693995636745898813, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(920c85e21948ea35ca1f2ef6033488c8da13ed3eeab6d7735a4a2db5030fbc0a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97a1d224e0f40e05a50c102e292e6d08788e3d7f2023129e5723e6f8abc77b7000156b078ff27d1d90de705221bfbe4696d80a00cf902342d41188919c9e9a58e53222e81e1cfb7a771eefa5b4922e5254c1138b4b8383ed57d7f1862bfba288e76bf91d060785200216c1af50878e43a506287c6a43dbef51cf1172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084faa429c2ef30f7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 34, 78, 15, 64, 224, 90, 80, 193, 2, 226, 146, 230, 208, 135, 136, 227, 215, 242, 2, 49, 41, 229, 114, 62, 111, 138, 188, 119, 183, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 56b078ff27d1d90de705221bfbe4696d, }, ), received_events: EventHandle { count: 4696467173790228608, key: EventKey( [ 137, 25, 201, 233, 165, 142, 83, 34, 46, 129, 225, 207, 183, 167, 113, 238, 250, 91, 73, 34, 229, 37, 76, 17, ], ), }, sent_events: EventHandle { count: 9186733278121997368, key: EventKey( [ 98, 191, 186, 40, 142, 118, 191, 145, 208, 96, 120, 82, 0, 33, 108, 26, 245, 8, 120, 228, 58, 80, 98, 135, ], ), }, sequence_number: 1725191974043886790, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9252d6aa31b9cafe92e9480135dc5ebd8edc06f63e95f393fe29c5474304a7d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b50148bcdbb5f5b538d9260dc456337b6b00e1ac1ef115e0ed516ea73a9508d3c2416906d798a63841b5404b4787c4147382d9f7481f73bcd672809eac85f68f3114a0f3cffe15c9110cb4011a7923648a3890fd8286f736a495a74801098fc36ea830ea69bbb47094e35cfe2b89c35cf891d65048186b56f14a62670a4574daa46ec1e7c216f3189c5bc26d4fe17a08cb760376ba1518e8828b007218494a5f32ff80b31d8bb51fb26b86b6ece216689a38df335e7c9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70843739953fb6464b6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 219, 181, 245, 181, 56, 217, 38, 13, 196, 86, 51, 123, 107, 0, 225, 172, 30, 241, 21, 224, 237, 81, 110, 167, 58, 149, 8, 211, 194, 65, 105, 6, 215, 152, 166, 56, 65, 181, 64, 75, 71, 135, 196, 20, 115, 130, 217, 247, 72, 31, 115, 188, 214, 114, 128, 158, 172, 133, 246, 143, 49, 20, 160, 243, 207, 254, 21, 201, 17, 12, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1a7923648a3890fd8286f736a495a748, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 098fc36ea830ea69bbb47094e35cfe2b, }, ), received_events: EventHandle { count: 5210900691293094793, key: EventKey( [ 107, 86, 241, 74, 98, 103, 10, 69, 116, 218, 164, 110, 193, 231, 194, 22, 243, 24, 156, 91, 194, 109, 79, 225, ], ), }, sent_events: EventHandle { count: 1565693577714665594, key: EventKey( [ 232, 130, 139, 0, 114, 24, 73, 74, 95, 50, 255, 128, 179, 29, 139, 181, 31, 178, 107, 134, 182, 236, 226, 22, ], ), }, sequence_number: 11131875955834395240, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(92c0954d3c0bdb01cc3471854ca493f1ec1799445d36c67978ca2b2901809d65): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820135af47eacf18362930f2a423fc9cd167770c85c36bedf2395907398de0f8aabeae796733d6b2c473b1d961d1021e5b2c7bbddb4b1aef00000efce15700c134091866249a59ab74dc034bc44c6d93982869e5272b3e9e93fec37bc2b796bb1dd667180bb09488e78ff239b5832c65b242adb3ec958a769414101e193eb02faa75939f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084767277bc2bd3244 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 175, 71, 234, 207, 24, 54, 41, 48, 242, 164, 35, 252, 156, 209, 103, 119, 12, 133, 195, 107, 237, 242, 57, 89, 7, 57, 141, 224, 248, 170, 190, 174, 121, 103, 51, 214, 178, 196, 115, 177, 217, 97, 209, 2, 30, 91, 44, 123, 189, 219, 75, 26, 239, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 663367252348894222, key: EventKey( [ 102, 36, 154, 89, 171, 116, 220, 3, 75, 196, 76, 109, 147, 152, 40, 105, 229, 39, 43, 62, 158, 147, 254, 195, ], ), }, sent_events: EventHandle { count: 7482200522447372923, key: EventKey( [ 11, 176, 148, 136, 231, 143, 242, 57, 181, 131, 44, 101, 178, 66, 173, 179, 236, 149, 138, 118, 148, 20, 16, 30, ], ), }, sequence_number: 11498663647411977753, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9368e9ef6803cb39b8f040e86c0f28a2f1c1d9b1be9f26299406df56849514e5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bbecd214126517a0abf7adf2296b2a5106b9f73aa2dcb503263465f58a1b4a1c99586dc6863d39fdd0e6c37a8ab3561a25a8eead7b545a1c3a25ae8a9b0e0fed5161212dd0c54b7b896141f3abec26c317992c6cd81f5b568e784b601682d26071ab101c09da68203cb94f98600498c51c32a5ef25118ca312647cbdbbb83f19fbf07edd3065888eca47530b2398d0c7754c672438c4a1800a5135c3cddb6192455c153b2c128ca905c8db11bee92b9e589c45e1060c84e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708921d5b8a9cf8cbef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 190, 205, 33, 65, 38, 81, 122, 10, 191, 122, 223, 34, 150, 178, 165, 16, 107, 159, 115, 170, 45, 203, 80, 50, 99, 70, 95, 88, 161, 180, 161, 201, 149, 134, 220, 104, 99, 211, 159, 221, 14, 108, 55, 168, 171, 53, 97, 162, 90, 142, 234, 215, 181, 69, 161, 195, 162, 90, 232, 169, 176, 224, 254, 213, 22, 18, 18, 221, 12, 84, 183, 184, 150, 20, 31, 58, 190, 194, 108, 49, 121, 146, 198, 205, 129, 245, 181, 104, 231, 132, 182, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 682d26071ab101c09da68203cb94f986, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5904885599194680393, key: EventKey( [ 202, 49, 38, 71, 203, 219, 187, 131, 241, 159, 191, 7, 237, 211, 6, 88, 136, 236, 164, 117, 48, 178, 57, 141, ], ), }, sent_events: EventHandle { count: 5371742615778916108, key: EventKey( [ 0, 165, 19, 92, 60, 221, 182, 25, 36, 85, 193, 83, 178, 193, 40, 202, 144, 92, 141, 177, 27, 238, 146, 185, ], ), }, sequence_number: 5676892953726192101, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(942bbc57489c6478619453405a5033712d7cbf4393d524478e80511fb5ad4c42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001434690fa610d895ae9904a57b2ded1dbce3b3c402fc6bf6722a7529c9d16b59e127624c75b721a55bc66081702a1a2126ba112569ca8fb3bcbd1043daf9245428ffdccb80000e5f8bc76be28b11218f5ce8ba3936a2f90b097f4dad8f61b8d616f5e1aef84c4a891449d7539de961a185ef2e4d475141dd3c59bdc894fdb38710c2f239cc329e4154bd7b51e4655ace22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708661b37b41661a505 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 144, 250, 97, 13, 137, 90, 233, 144, 74, 87, 178, 222, 209, 219, 206, 59, 60, 64, 47, 198, 191, 103, 34, 167, 82, 156, 157, 22, 181, 158, 18, 118, 36, 199, 91, 114, 26, 85, 188, 102, 8, 23, 2, 161, 162, 18, 107, 161, 18, 86, 156, 168, 251, 59, 203, 209, 4, 61, 175, 146, 69, 66, 143, 253, 204, 184, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1346902562061482213, key: EventKey( [ 245, 206, 139, 163, 147, 106, 47, 144, 176, 151, 244, 218, 216, 246, 27, 141, 97, 111, 94, 26, 239, 132, 196, 168, ], ), }, sent_events: EventHandle { count: 1915963029860467857, key: EventKey( [ 94, 242, 228, 212, 117, 20, 29, 211, 197, 155, 220, 137, 79, 219, 56, 113, 12, 47, 35, 156, 195, 41, 228, 21, ], ), }, sequence_number: 16333523708217251659, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(94aaeb1ceb9e4df2dd2d2899827e5112915d199495e8c737e726066f3a544b40): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96d105ffcabbeb6dba45384ae55e00014870001240f5e9c8dfe36661c8cf688b152c1f30070df91f1c88b47521840947b32d3fd3c6270a4059ed1cd770afcb94218907feb388226650d71e802091872fc6b0f667cff0ff84cd6954308ac87d6268bc920a28e229f138d6abb4faa952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70877a729a3ceaef444 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 95, 252, 171, 190, 182, 219, 164, 83, 132, 174, 85, 224, 0, 20, 135, 0, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 240f5e9c8dfe36661c8cf688b152c1f3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5928861129619136368, key: EventKey( [ 64, 148, 123, 50, 211, 253, 60, 98, 112, 164, 5, 158, 209, 205, 119, 10, 252, 185, 66, 24, 144, 127, 235, 56, ], ), }, sent_events: EventHandle { count: 649336868548454018, key: EventKey( [ 114, 252, 107, 15, 102, 124, 255, 15, 248, 76, 214, 149, 67, 8, 172, 135, 214, 38, 139, 201, 32, 162, 142, 34, ], ), }, sequence_number: 10784519924057183135, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9641e729d6065887f4ad3701871d6e3a80fc15596cb67eb4bf6dc7a5e0e26713): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c966098891534011f624b77b01e9467dfa780cb5467a7bc87ba343ef9400181a00cd860a16451835a85dcd6a15de975217a5832eb97f840a05dc0a03eb383eb583155b5b92ca711804f8a239fae677a44a679c632f4eea2066b379a615d31b98fa3049277bba45882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086e70b881bb875397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 136, 145, 83, 64, 17, 246, 36, 183, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e9467dfa780cb5467a7bc87ba343ef94, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4978178012185893400, key: EventKey( [ 53, 168, 93, 205, 106, 21, 222, 151, 82, 23, 165, 131, 46, 185, 127, 132, 10, 5, 220, 10, 3, 235, 56, 62, ], ), }, sent_events: EventHandle { count: 8199526992649225141, key: EventKey( [ 4, 248, 162, 57, 250, 230, 119, 164, 74, 103, 156, 99, 47, 78, 234, 32, 102, 179, 121, 166, 21, 211, 27, 152, ], ), }, sequence_number: 9819459600654086394, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9686f790a78c15e639eec68b1ea9bc5f8aae72c742749c2741970eead4d8cd25): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001438b470c14b66e73e832c70fc2c6a5de05f823e9f3dc6af66c6689b22f02c739bf959672e881be1124f4318078af11e21cbb53e90b0cf9e5e0e464ef62b81f69afe358fa01b4580d7e8990c21782b41c259ac070c200ca9f229a4650051b184352bcb74ef7dee83ecc3ef966ac9dc68a5a1dfe4eef88d57e1b96800732f0761849fc24b66062fbb8e6ec3502e88b5740ddf75c3820535b72dfdfad6315346f772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70862f837b08a6e5fb4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 139, 71, 12, 20, 182, 110, 115, 232, 50, 199, 15, 194, 198, 165, 222, 5, 248, 35, 233, 243, 220, 106, 246, 108, 102, 137, 178, 47, 2, 199, 57, 191, 149, 150, 114, 232, 129, 190, 17, 36, 244, 49, 128, 120, 175, 17, 226, 28, 187, 83, 233, 11, 12, 249, 229, 224, 228, 100, 239, 98, 184, 31, 105, 175, 227, 88, 250, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b4580d7e8990c21782b41c259ac070c2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1947050678071500746, key: EventKey( [ 67, 82, 188, 183, 78, 247, 222, 232, 62, 204, 62, 249, 102, 172, 157, 198, 138, 90, 29, 254, 78, 239, 136, 213, ], ), }, sent_events: EventHandle { count: 8570405098689534846, key: EventKey( [ 73, 252, 36, 182, 96, 98, 251, 184, 230, 236, 53, 2, 232, 139, 87, 64, 221, 247, 92, 56, 32, 83, 91, 114, ], ), }, sequence_number: 8606154679399604191, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96acf0e7f370e4f0a55152b1c3e87782bdffa7087f9f16a435cf7448e350b449): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99201351a6814edbb706b2fee63d7adca38a3d04c5d0781b2e85b32725f54a67a0508e97b6a559dff04d961b11300632ae23a0f46531b207f0171633cd8f326da5ae71738aba9cc1f36001e34ad70e827840e18a91aa57e3410e77598b47f922bf306a493ecef3811d334e8763392b278bfc525186565a44376e0fcd15dda654aef64dd723296010f2268d5be5600853c4c0614e32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc6317ffb99f9ba5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 104, 20, 237, 187, 112, 107, 47, 238, 99, 215, 173, 202, 56, 163, 208, 76, 93, 7, 129, 178, 232, 91, 50, 114, 95, 84, 166, 122, 5, 8, 233, 123, 106, 85, 157, 255, 4, 217, 97, 177, 19, 0, 99, 42, 226, 58, 15, 70, 83, 27, 32, 127, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 71633cd8f326da5ae71738aba9cc1f36, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1046004892733092894, key: EventKey( [ 169, 26, 165, 126, 52, 16, 231, 117, 152, 180, 127, 146, 43, 243, 6, 164, 147, 236, 239, 56, 17, 211, 52, 232, ], ), }, sent_events: EventHandle { count: 2721792074928239478, key: EventKey( [ 101, 101, 164, 67, 118, 224, 252, 209, 93, 218, 101, 74, 239, 100, 221, 114, 50, 150, 1, 15, 34, 104, 213, 190, ], ), }, sequence_number: 16362710270646485078, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96d5c40d740c1f3fac88d968960023ef388b3fa9b8861836a6050942ab7ef14f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01415b3730d589c202c4a6409f6775a52e9ce3be514a2b19ef6053e3adccfff8ea8a4f68d1f2e2771dca563355fb52ec2d267cc681bc6ecea3e269310a94e9b861df9f010c92fdfe65061153772612c833d847750022ae7510bff19d741884fc8a0a4e930664fbbcfb52ddf742875a357fe98a126db2f11ba76b8c6bd671183c86d62577c52242e397d7ac45c835bab2ec52452e6c26a03d2b8376500da46c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70879965b1af183ab8f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 55, 48, 213, 137, 194, 2, 196, 166, 64, 159, 103, 117, 165, 46, 156, 227, 190, 81, 74, 43, 25, 239, 96, 83, 227, 173, 204, 255, 248, 234, 138, 79, 104, 209, 242, 226, 119, 29, 202, 86, 51, 85, 251, 82, 236, 45, 38, 124, 198, 129, 188, 110, 206, 163, 226, 105, 49, 10, 148, 233, 184, 97, 223, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0c92fdfe65061153772612c833d84775, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8403138282660408866, key: EventKey( [ 132, 252, 138, 10, 78, 147, 6, 100, 251, 188, 251, 82, 221, 247, 66, 135, 90, 53, 127, 233, 138, 18, 109, 178, ], ), }, sent_events: EventHandle { count: 8202862022147644401, key: EventKey( [ 60, 134, 214, 37, 119, 197, 34, 66, 227, 151, 215, 172, 69, 200, 53, 186, 178, 236, 82, 69, 46, 108, 38, 160, ], ), }, sequence_number: 7828396691513617213, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(96e5cb2f9e47b259a014a13c319d55d969213195bef260dae04ea3d92c04f997): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b2ee1b534870205960f2df4275ae6d7dba61b2084e0757a2926dc9b5dab8ea30e5daef973731a2f6bf73fe2769bbe2b000039ac2bf0705c147618d321b3a1fbe74402398f95af41f6227e51f93336c28c8951ada4afe213e750671872c7261ac7e1e564a1721188b15e6b3178a53e52856876334cc67525018b98eb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4fc455c77cffbe4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, 181, 52, 135, 2, 5, 150, 15, 45, 244, 39, 90, 230, 215, 219, 166, 27, 32, 132, 224, 117, 122, 41, 38, 220, 155, 93, 171, 142, 163, 14, 93, 174, 249, 115, 115, 26, 47, 107, 247, 63, 226, 118, 155, 190, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8508527236145196089, key: EventKey( [ 211, 33, 179, 161, 251, 231, 68, 2, 57, 143, 149, 175, 65, 246, 34, 126, 81, 249, 51, 54, 194, 140, 137, 81, ], ), }, sent_events: EventHandle { count: 7444704256636986541, key: EventKey( [ 114, 199, 38, 26, 199, 225, 229, 100, 161, 114, 17, 136, 177, 94, 107, 49, 120, 165, 62, 82, 133, 104, 118, 51, ], ), }, sequence_number: 16976471632412788300, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(98bc2c7396a621d660486657cdab8e2d2819a740a1b622b38323e820156cfc17): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c4c61b74bff9371803d7673a6f1222332961c7165d4778adf28ac152f3a289b60c9f585c56931ed7d3c2c39582e0d09bdbf5f5967250aa6f7a7b99ab8000112d3ee9bb809d0059614b1ab15bde9e61f9c93ce298abb321816a36919e226a2f2ff7b86af1a2e837275dcbefe19c3fa160c4363e47d19e2701821e5ad3991a671da6c8aabba211fff8751387131079fa10052873fd854a0a3b02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e16c182f28aae5f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 76, 97, 183, 75, 255, 147, 113, 128, 61, 118, 115, 166, 241, 34, 35, 50, 150, 28, 113, 101, 212, 119, 138, 223, 40, 172, 21, 47, 58, 40, 155, 96, 201, 245, 133, 197, 105, 49, 237, 125, 60, 44, 57, 88, 46, 13, 9, 189, 191, 95, 89, 103, 37, 10, 166, 247, 167, 185, 154, 184, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 12d3ee9bb809d0059614b1ab15bde9e6, }, ), received_events: EventHandle { count: 3655667434705361951, key: EventKey( [ 22, 163, 105, 25, 226, 38, 162, 242, 255, 123, 134, 175, 26, 46, 131, 114, 117, 220, 190, 254, 25, 195, 250, 22, ], ), }, sent_events: EventHandle { count: 8134091905477853964, key: EventKey( [ 33, 229, 173, 57, 145, 166, 113, 218, 108, 138, 171, 186, 33, 31, 255, 135, 81, 56, 113, 49, 7, 159, 161, 0, ], ), }, sequence_number: 12728193258144892754, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(995382fa113e5eb48c194854ba18e57453b66d41b1be19c321e4c76e3e12aef8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601598a0e49d807f47c7beb057c5b833f04f62505e352996f7cf5420f7099c3813db98f4a907cd489efdfcdbbf993c32727f469b9df2f4689c3758816647ab6ca623c1ac6809ccd3e5738c39aab7d81ac7c1daacce9675c262e47eb01f79dff8f5fa905f35f2d1b19f384eabb01001690dfcc5035a9acb4d17b47d898a3a0cf5f620872665918508994760b24dd50a0c9226085eac661ea1ed616bf99e138d90d153f306901281845f4bae305ff43f6fa697593da9f44749b9d791fde2370424b09863dd34dbd9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708774fa2b44b1b2ca7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 14, 73, 216, 7, 244, 124, 123, 235, 5, 124, 91, 131, 63, 4, 246, 37, 5, 227, 82, 153, 111, 124, 245, 66, 15, 112, 153, 195, 129, 61, 185, 143, 74, 144, 124, 212, 137, 239, 223, 205, 187, 249, 147, 195, 39, 39, 244, 105, 185, 223, 47, 70, 137, 195, 117, 136, 22, 100, 122, 182, 202, 98, 60, 26, 198, 128, 156, 205, 62, 87, 56, 195, 154, 171, 125, 129, 172, 124, 29, 170, 204, 233, 103, 92, 38, 46, 71, 235, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f79dff8f5fa905f35f2d1b19f384eabb, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 001690dfcc5035a9acb4d17b47d898a3, }, ), received_events: EventHandle { count: 6441961697335824288, key: EventKey( [ 80, 137, 148, 118, 11, 36, 221, 80, 160, 201, 34, 96, 133, 234, 198, 97, 234, 30, 214, 22, 191, 153, 225, 56, ], ), }, sent_events: EventHandle { count: 2882700892431519193, key: EventKey( [ 69, 244, 186, 227, 5, 255, 67, 246, 250, 105, 117, 147, 218, 159, 68, 116, 155, 157, 121, 31, 222, 35, 112, 66, ], ), }, sequence_number: 11366326604218632523, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(997ebcf7729a513b1b763bbc30cd6f0ddc4ee8c488a5f2674264f290a9807d79): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97407075c898677630e0177624afdad66d5b9f3bb0917ce6afc3f0171f3e5fb9f2896b02c6bbd2d8472e8e596e95414797e5317180fb29907f5281a68c622153e929d93bb84d899a91d8717edcf5043783e8a976318a3356e0b793eb26fd0647d2c311c260b0e0ea31089c5c65a89223d52bd73d2d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aeee4469209adf46 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 7, 92, 137, 134, 119, 99, 14, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 77624afdad66d5b9f3bb0917ce6afc3f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 71f3e5fb9f2896b02c6bbd2d8472e8e5, }, ), received_events: EventHandle { count: 1680826144436578710, key: EventKey( [ 15, 178, 153, 7, 245, 40, 26, 104, 198, 34, 21, 62, 146, 157, 147, 187, 132, 216, 153, 169, 29, 135, 23, 237, ], ), }, sent_events: EventHandle { count: 7176356532148457679, key: EventKey( [ 163, 53, 110, 11, 121, 62, 178, 111, 208, 100, 125, 44, 49, 28, 38, 11, 14, 14, 163, 16, 137, 197, 198, 90, ], ), }, sequence_number: 15695734908305351305, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(99caeb4f8eedffb831f7ea70ceac7b7d74858f0fb1c7d717ede4a247f85ba3b3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99f014261452c7d88a3c8c0e1e19164c7a884cdc8fe3de3e27280225580424d852399043b775092501b79c91adf169d1a08bcd08ce8400714a157cd02ef366be9c8ff38d42401bc53077d6ed27bf4cac85293ad16217200f11d39ac99353f7418f09fa51e597e821d7dd003a82ec555b128506141ec966d72739a5ad3a149027518f162d038361f23de0da5aa93d9ec3f3bd29e589e5affc60c3139cabf46bf62662101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826d7b531eab3f92c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 69, 44, 125, 136, 163, 200, 192, 225, 225, 145, 100, 199, 168, 132, 205, 200, 254, 61, 227, 226, 114, 128, 34, 85, 128, 66, 77, 133, 35, 153, 4, 59, 119, 80, 146, 80, 27, 121, 201, 26, 223, 22, 157, 26, 8, 188, 208, 140, 232, 64, 7, 20, 161, 87, 205, 2, 239, 54, 107, 233, 200, 255, 56, 212, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: bc53077d6ed27bf4cac85293ad162172, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8376472766068104689, key: EventKey( [ 240, 159, 165, 30, 89, 126, 130, 29, 125, 208, 3, 168, 46, 197, 85, 177, 40, 80, 97, 65, 236, 150, 109, 114, ], ), }, sent_events: EventHandle { count: 8431382411775482483, key: EventKey( [ 241, 98, 208, 56, 54, 31, 35, 222, 13, 165, 170, 147, 217, 236, 63, 59, 210, 158, 88, 158, 90, 255, 198, 12, ], ), }, sequence_number: 7377669450172610865, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9a6053755621698a24212b64c54ff81f5bbf591e04f6cdd63a2c1df03fbd087a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c001537ddbcb6edabdf87ae20dffef99be369050cb0784d0583a76f75e15d82e7d479d9a46175ed10b0bb20bf95339a0114078fb4f028685a4c33ea4932c4ef4ff2fad7ee7d36b7c3046aa15a8a454f67eb1bf4641e201dd0c2eb7d204756dda7ce2eae58c2e4a013c86f3d8336759795be950c71b2aea01c256fe5bbcf51d78186b989e6e0434af14a2f54bd8964b94836eda060ed1a1f730c92c3ffb30f7c637189b0e208b01db5dd45a2efba1b67e32b34d1f6b487b7b1b7c30e8e2b5781c198c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ada3970830e7de4d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 219, 203, 110, 218, 189, 248, 122, 226, 13, 255, 239, 153, 190, 54, 144, 80, 203, 7, 132, 208, 88, 58, 118, 247, 94, 21, 216, 46, 125, 71, 157, 154, 70, 23, 94, 209, 11, 11, 178, 11, 249, 83, 57, 160, 17, 64, 120, 251, 79, 2, 134, 133, 164, 195, 62, 164, 147, 44, 78, 244, 255, 47, 173, 126, 231, 211, 107, 124, 48, 70, 170, 21, 168, 164, 84, 246, 126, 177, 191, 70, 65, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dd0c2eb7d204756dda7ce2eae58c2e4a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3c86f3d8336759795be950c71b2aea01, }, ), received_events: EventHandle { count: 8655344248222013122, key: EventKey( [ 107, 152, 158, 110, 4, 52, 175, 20, 162, 245, 75, 216, 150, 75, 148, 131, 110, 218, 6, 14, 209, 161, 247, 48, ], ), }, sent_events: EventHandle { count: 4019171507220458697, key: EventKey( [ 155, 14, 32, 139, 1, 219, 93, 212, 90, 46, 251, 161, 182, 126, 50, 179, 77, 31, 107, 72, 123, 123, 27, 124, ], ), }, sequence_number: 10095131344500877360, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9a64f708ab719541f77e20dd9830dab2be6994d977b77916fa282be3b6b54f02): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95508c6b0cbde541765cb0000cf9cdf46aebdc61f184f209cb7780239d4e82105ac1c653988b3e37c0e23857e88c3b0e97afcfc0a721887083ea4c46aa23998ea1c428b7df3aec8122f13981ec044b3c9b7358e77f77e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a7b53e7e2922dee6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 198, 176, 203, 222, 84, 23, 101, 203, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2289726016775494863, key: EventKey( [ 79, 32, 156, 183, 120, 2, 57, 212, 232, 33, 5, 172, 28, 101, 57, 136, 179, 227, 124, 14, 35, 133, 126, 136, ], ), }, sent_events: EventHandle { count: 8217658631414984899, key: EventKey( [ 135, 8, 62, 164, 196, 106, 162, 57, 152, 234, 28, 66, 139, 125, 243, 174, 200, 18, 47, 19, 152, 30, 192, 68, ], ), }, sequence_number: 9148912620696750515, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aad46f854c5775cff46e5c320794218210684cf0a3715ebb91973d47390732b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974178fb775f43c4d5f0fd34ac174e3e3e77db3179fe584c226010fccbc720c59a34954c15a8602d6effc002ed2d749bfd6fc7c18cd2783f9275e9081707eab349355c7a32602d6ca5b8eec5f59d2105221a1871118377d232ee028d9066a446a4e340ce75c3d0ab02d996759e241d704b3799e510b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d5ca286cd07448f6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 143, 183, 117, 244, 60, 77, 95, 15, 211, 74, 193, 116, 227, 227, 231, 125, 179, 23, 159, 229, 132, 194, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0fccbc720c59a34954c15a8602d6effc, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9006309471900127790, key: EventKey( [ 205, 39, 131, 249, 39, 94, 144, 129, 112, 126, 171, 52, 147, 85, 199, 163, 38, 2, 214, 202, 91, 142, 236, 95, ], ), }, sent_events: EventHandle { count: 1263155384983540313, key: EventKey( [ 55, 125, 35, 46, 224, 40, 217, 6, 106, 68, 106, 78, 52, 12, 231, 92, 61, 10, 176, 45, 153, 103, 89, 226, ], ), }, sequence_number: 815607253062440769, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9aae46449fb64ec8891629129544ad4125eba074198f55edccdfd4819a541525): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f8eef07e1ae2def600a3e08b3b89aee2c80ab3c02fe073528a5aefd60492fae62936e36dd6514b4ae0082cb27572c3a0000111fc13796530c7118deeecca536acd15d123606046b8fb806c700692e347aa3cd8a6d8a097ba82c76184bd2fd5b4e2d31690d74fe446641c9aef840aea6c286fe094ce8ccb9d308c1422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708488dd80d8fdc65e5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 239, 7, 225, 174, 45, 239, 96, 10, 62, 8, 179, 184, 154, 238, 44, 128, 171, 60, 2, 254, 7, 53, 40, 165, 174, 253, 96, 73, 47, 174, 98, 147, 110, 54, 221, 101, 20, 180, 174, 0, 130, 203, 39, 87, 44, 58, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8145977730651987729, key: EventKey( [ 222, 238, 204, 165, 54, 172, 209, 93, 18, 54, 6, 4, 107, 143, 184, 6, 199, 0, 105, 46, 52, 122, 163, 205, ], ), }, sent_events: EventHandle { count: 8515366241845276042, key: EventKey( [ 75, 210, 253, 91, 78, 45, 49, 105, 13, 116, 254, 68, 102, 65, 201, 174, 248, 64, 174, 166, 194, 134, 254, 9, ], ), }, sequence_number: 4810135582456735820, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ac5de7b6d7e72b23a06da6efd66791e32b635cbbb4b4132cd3cb89e6d639a6e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa013d09f16695bfb267917da358b48ba06db9e3ec4c5513337596331e82f5e03deff9d18b7b536724a2853e5744f0f67a503ebebf50d823c992e7351ded83e101c35cd50ce4b013e89cf6c8dfaf3012c6010b83c0eeea5aa8f8fecd040a9f5ed830c693dcdcec6c023d189b16748bfc0f0f9c8812710c1e48fe5100d3b4e3392efae029f06f47a9fe814e182dcb186ffafaf99e3e864bf77c992251ea9aea8c6ad2f292a5482c4e108d37042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cbeaddbd5e4876f1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 241, 102, 149, 191, 178, 103, 145, 125, 163, 88, 180, 139, 160, 109, 185, 227, 236, 76, 85, 19, 51, 117, 150, 51, 30, 130, 245, 224, 61, 239, 249, 209, 139, 123, 83, 103, 36, 162, 133, 62, 87, 68, 240, 246, 122, 80, 62, 190, 191, 80, 216, 35, 201, 146, 231, 53, 29, 237, 131, 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c35cd50ce4b013e89cf6c8dfaf3012c6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0b83c0eeea5aa8f8fecd040a9f5ed830, }, ), received_events: EventHandle { count: 4396195950840550342, key: EventKey( [ 155, 22, 116, 139, 252, 15, 15, 156, 136, 18, 113, 12, 30, 72, 254, 81, 0, 211, 180, 227, 57, 46, 250, 224, ], ), }, sent_events: EventHandle { count: 5657082609955500073, key: EventKey( [ 45, 203, 24, 111, 250, 250, 249, 158, 62, 134, 75, 247, 124, 153, 34, 81, 234, 154, 234, 140, 106, 210, 242, 146, ], ), }, sequence_number: 303866601041316005, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9b26c04f88e4dfcd24f320b94866f1e562ea87c1c06accac77bb52eff90c0f18): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c989012cf720874baf0abe2954b5f7f217aaf4c075c0e7840baab82aa56f1ada0115e7fd2df4de39c204e329be5a4be50001866d29a3dae28b6afce314092ea2aafc62696d36779a8a73187ccceaa3f70a349aa674466a28b163f03f79fc9c38cf07e8d3c914e2938030411885629bc97111310db007f455d938ae2149d7a682e2bd8a8714e9cb7a440ff4fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086c7a5ceeb0b44ccc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 32, 135, 75, 175, 10, 190, 41, 84, 181, 247, 242, 23, 170, 244, 192, 117, 192, 231, 132, 11, 170, 184, 42, 165, 111, 26, 218, 1, 21, 231, 253, 45, 244, 222, 57, 194, 4, 227, 41, 190, 90, 75, 229, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 866d29a3dae28b6afce314092ea2aafc, }, ), received_events: EventHandle { count: 8325636697952708962, key: EventKey( [ 124, 204, 234, 163, 247, 10, 52, 154, 166, 116, 70, 106, 40, 177, 99, 240, 63, 121, 252, 156, 56, 207, 7, 232, ], ), }, sent_events: EventHandle { count: 4697395783988988371, key: EventKey( [ 133, 98, 155, 201, 113, 17, 49, 13, 176, 7, 244, 85, 217, 56, 174, 33, 73, 215, 166, 130, 226, 189, 138, 135, ], ), }, sequence_number: 18371325566743472404, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9b39854a38e811dc35b05bc215ce49e7eb71e0f8d7606ca53971c75d50e0abd8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d30667087a510a01d8dc29601f82e89322eff09402f3d5ae64c75b74f8d739f2940eaf46c52ce79a4076b5f3071a01aaf8e0000d725f1318140d94f18751e754a18f571d76ae204775ba239562ae37b71dabca19eae463fb5bbfe1129189df452295e00700ccc950fd2c53ee435f4f6e28a4a7c0843ada81c46b689ae9a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70854b94e85ed776ba8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 102, 112, 135, 165, 16, 160, 29, 141, 194, 150, 1, 248, 46, 137, 50, 46, 255, 9, 64, 47, 61, 90, 230, 76, 117, 183, 79, 141, 115, 159, 41, 64, 234, 244, 108, 82, 206, 121, 164, 7, 107, 95, 48, 113, 160, 26, 175, 142, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5753700922575365591, key: EventKey( [ 117, 30, 117, 74, 24, 245, 113, 215, 106, 226, 4, 119, 91, 162, 57, 86, 42, 227, 123, 113, 218, 188, 161, 158, ], ), }, sent_events: EventHandle { count: 2959426512312288942, key: EventKey( [ 157, 244, 82, 41, 94, 0, 112, 12, 204, 149, 15, 210, 197, 62, 228, 53, 244, 246, 226, 138, 74, 124, 8, 67, ], ), }, sequence_number: 11145997543741892781, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ba0cc93f5b0d5d33b851202cd2dbf53746263b64ca9178a6001d389f944f144): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7015a05972bba7975a973a5468714873647d52cf6dd1ca8f86c5b973161b45376151f2c734ea71061c65d075d3f439591e2e95d9d056d686d4c568cc897e68efed3e1b64119beb4e27138d5280bac28b350e282b85b34b12b1394ae3a01c4f374ee91a4b1f25a7a241fa7c921d900174470d2f8c0207318212fec2eb02ff33fc8e465850651da55db878560ed7e95f43955bebad1a101581817e2fa90bafa403685907dc32ad53cc64ebaea882a35e115092c8bc721cb1c2a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d296640fcc7b0cff Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 151, 43, 186, 121, 117, 169, 115, 165, 70, 135, 20, 135, 54, 71, 213, 44, 246, 221, 28, 168, 248, 108, 91, 151, 49, 97, 180, 83, 118, 21, 31, 44, 115, 78, 167, 16, 97, 198, 93, 7, 93, 63, 67, 149, 145, 226, 233, 93, 157, 5, 109, 104, 109, 76, 86, 140, 200, 151, 230, 142, 254, 211, 225, 182, 65, 25, 190, 180, 226, 113, 56, 213, 40, 11, 172, 40, 179, 80, 226, 130, 184, 91, 52, 177, 43, 19, 148, 174, 58, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c4f374ee91a4b1f25a7a241fa7c921d9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8295842688531448855, key: EventKey( [ 33, 47, 236, 46, 176, 47, 243, 63, 200, 228, 101, 133, 6, 81, 218, 85, 219, 135, 133, 96, 237, 126, 149, 244, ], ), }, sent_events: EventHandle { count: 6341527672467641657, key: EventKey( [ 23, 226, 250, 144, 186, 250, 64, 54, 133, 144, 125, 195, 42, 213, 60, 198, 78, 186, 234, 136, 42, 53, 225, 21, ], ), }, sequence_number: 3034523594883017737, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9bd9220a49a0372ef09b29a32315ad6cb31b8d5b3318738bb7aafb3c49707bdb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab015e76b12ead0bb8102bb4ce62f3b528b1290b274de6acf915495b3dfa3413229120db96d0b5ce680e1c189d72ccd256d92e1044fe4d28570e1ffaa41b8e0eaae95c8b6eda6d48dd75914342bc9c118abf32498a38a8e3c76f96130e7c69c3e1000072e61d158963443a1888fe3ef994d778a1767ab64d0e845ccfb9caf30137a1c177537845d5a385650d18a2aa8330d6d90fbd76b6cf0f6a8c80b8095897e7ada0d0628f7b6375a960f9402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708832245ee080fd47e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 118, 177, 46, 173, 11, 184, 16, 43, 180, 206, 98, 243, 181, 40, 177, 41, 11, 39, 77, 230, 172, 249, 21, 73, 91, 61, 250, 52, 19, 34, 145, 32, 219, 150, 208, 181, 206, 104, 14, 28, 24, 157, 114, 204, 210, 86, 217, 46, 16, 68, 254, 77, 40, 87, 14, 31, 250, 164, 27, 142, 14, 170, 233, 92, 139, 110, 218, 109, 72, 221, 117, 145, 67, 66, 188, 156, 17, 138, 191, 50, 73, 138, 56, 168, 227, 199, 111, 150, 19, 14, 124, 105, 195, 225, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4198590193032095346, key: EventKey( [ 136, 254, 62, 249, 148, 215, 120, 161, 118, 122, 182, 77, 14, 132, 92, 207, 185, 202, 243, 1, 55, 161, 193, 119, ], ), }, sent_events: EventHandle { count: 965324633845102675, key: EventKey( [ 162, 170, 131, 48, 214, 217, 15, 189, 118, 182, 207, 15, 106, 140, 128, 184, 9, 88, 151, 231, 173, 160, 208, 98, ], ), }, sequence_number: 4681879568563534735, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9c483766a86de09bcab53cd75337dc24886e27b4e07b411f1f41261364dbd18e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32f66cf30320d7f46a755f1491dbc85b9fe75eaaba7290fa1c68eb62e4d59ca7598b43680c44a594660dcc47d35a4fb935b7750000fc0b6ec4838724261844a89097d8e5412238daed0d0d669b79c1475f8b210977c78a69f8919ae73a4b18f3a2dcfffd2e3974fd4465facea47a6d1afa544c81d6953ec7c3b9dac2e70ea42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70820d6ab1f26d671b3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 246, 108, 243, 3, 32, 215, 244, 106, 117, 95, 20, 145, 219, 200, 91, 159, 231, 94, 170, 186, 114, 144, 250, 28, 104, 235, 98, 228, 213, 156, 167, 89, 139, 67, 104, 12, 68, 165, 148, 102, 13, 204, 71, 211, 90, 79, 185, 53, 183, 117, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2748470672608857084, key: EventKey( [ 68, 168, 144, 151, 216, 229, 65, 34, 56, 218, 237, 13, 13, 102, 155, 121, 193, 71, 95, 139, 33, 9, 119, 199, ], ), }, sent_events: EventHandle { count: 5420899752553769354, key: EventKey( [ 243, 162, 220, 255, 253, 46, 57, 116, 253, 68, 101, 250, 206, 164, 122, 109, 26, 250, 84, 76, 129, 214, 149, 62, ], ), }, sequence_number: 11821640895973409735, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ca85e4b3d25cf4dc159dbd1a73a383d33f53e675c061b4a2531d710ab0457ce): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9671af4db093a3bcd6bfc3a7c021fa76693d00eaabd707d19163c8551000094bc232b9244257e18aec3bcb8dff814338d2f1649dd58b817c94e5fffd4741b07a6f77e7769fcb10118a9154f207ca41c1494daa0418aa97770f97ccce91e0dab6cf5e1128738d81c9d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822c0f7a5123fd7a6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 219, 9, 58, 59, 205, 107, 252, 58, 124, 2, 31, 167, 102, 147, 208, 14, 170, 189, 112, 125, 25, 22, 60, 133, 81, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9089746817496890516, key: EventKey( [ 174, 195, 188, 184, 223, 248, 20, 51, 141, 47, 22, 73, 221, 88, 184, 23, 201, 78, 95, 255, 212, 116, 27, 7, ], ), }, sent_events: EventHandle { count: 122156194822289318, key: EventKey( [ 169, 21, 79, 32, 124, 164, 28, 20, 148, 218, 160, 65, 138, 169, 119, 112, 249, 124, 204, 233, 30, 13, 171, 108, ], ), }, sequence_number: 11321161300598514165, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9d8d240f7fadc9bc697371b487bd3794458c512261f691d733590e3df5626f72): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01615a78e7cd14e33923ac5ec794aad2a5e6f4bd58bf6251bf42101a5c844dcdac3800d7bf20b91fb74d9d5de809b2b417273e954a10e6b977d24cf0d5d11f98fe942a5c0b235835bc9e05b1268abb1d8413ef49aa998ff2c4ccfa8b2f17dd0bded88701da885418ebf04a686b3e9e8ea10bb48401984f455cd7b87cc53d8f666180a7a58c66f16bcb18df725018d2e9ccac7d0ec9150b16872301c502ce4b7e608efbf7b3a35ae17bfb3bd9140a18a2814e24441ba86ad6c487d94c4cfe644e37658f2ae58db4983e55463fd3756d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708391d680b38f875e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 120, 231, 205, 20, 227, 57, 35, 172, 94, 199, 148, 170, 210, 165, 230, 244, 189, 88, 191, 98, 81, 191, 66, 16, 26, 92, 132, 77, 205, 172, 56, 0, 215, 191, 32, 185, 31, 183, 77, 157, 93, 232, 9, 178, 180, 23, 39, 62, 149, 74, 16, 230, 185, 119, 210, 76, 240, 213, 209, 31, 152, 254, 148, 42, 92, 11, 35, 88, 53, 188, 158, 5, 177, 38, 138, 187, 29, 132, 19, 239, 73, 170, 153, 143, 242, 196, 204, 250, 139, 47, 23, 221, 11, 222, 216, 135, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: da885418ebf04a686b3e9e8ea10bb484, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 984f455cd7b87cc53d8f666180a7a58c, }, ), received_events: EventHandle { count: 5796940967964307814, key: EventKey( [ 210, 233, 204, 172, 125, 14, 201, 21, 11, 22, 135, 35, 1, 197, 2, 206, 75, 126, 96, 142, 251, 247, 179, 163, ], ), }, sent_events: EventHandle { count: 726444291558990170, key: EventKey( [ 162, 129, 78, 36, 68, 27, 168, 106, 214, 196, 135, 217, 76, 76, 254, 100, 78, 55, 101, 143, 42, 229, 141, 180, ], ), }, sequence_number: 7887442591125683864, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9e5b653346fce241acf382dd33d9066f84144990d9b777b8e347d4483a935117): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e012b019a09fb65ffd0d1ad6bf2a12c4a8ab66a011e429647fc5a1097310a39e16dc917cee9da521aa520e51818f55afbb1d704e4454ecb80d01638f4a1c158c2b1db60d1707258bc3d8ee4d92c1856db9aaa8b936fb3d9760485cc2dc0e0067cb20b868dc2cacf0f50eb0f5116a82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dbe7f1400c655b7d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 43, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9a09fb65ffd0d1ad6bf2a12c4a8ab66a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 1e429647fc5a1097310a39e16dc917ce, }, ), received_events: EventHandle { count: 1793875920060340969, key: EventKey( [ 245, 90, 251, 177, 215, 4, 228, 69, 78, 203, 128, 208, 22, 56, 244, 161, 193, 88, 194, 177, 219, 96, 209, 112, ], ), }, sent_events: EventHandle { count: 3231865507187284082, key: EventKey( [ 86, 219, 154, 170, 139, 147, 111, 179, 217, 118, 4, 133, 204, 45, 192, 224, 6, 124, 178, 11, 134, 141, 194, 202, ], ), }, sequence_number: 12111957376673779663, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(9ed30dd1c607de591e96dc550b72b080a6238e4add6374fd05aed97b3a0d9058): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9015c09deceaa609712851b97224f0b451819c1d187c112cd4b8dfaa760a2d02e3abc506e03514c603d9d9eb4f04697bc485681c9e32aba1731241280f6901a1176c1dfe85d73fa56597c316e14ff220137ee7d0ed8fa9bade2ea306cda1c0000b57367dd1833705318760553ec0dc761e4f7f2c1c2fb6c8f0bca00be929061ca75492d110d89ecac06184639df0769966bd2068359bf4209c0985b9a201d4fbad8097d2db89ee20812842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dfd2142fd859224e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 222, 206, 170, 96, 151, 18, 133, 27, 151, 34, 79, 11, 69, 24, 25, 193, 209, 135, 193, 18, 205, 75, 141, 250, 167, 96, 162, 208, 46, 58, 188, 80, 110, 3, 81, 76, 96, 61, 157, 158, 180, 240, 70, 151, 188, 72, 86, 129, 201, 227, 42, 186, 23, 49, 36, 18, 128, 246, 144, 26, 17, 118, 193, 223, 232, 93, 115, 250, 86, 89, 124, 49, 110, 20, 255, 34, 1, 55, 238, 125, 14, 216, 250, 155, 173, 226, 234, 48, 108, 218, 28, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6012361684426388405, key: EventKey( [ 118, 5, 83, 236, 13, 199, 97, 228, 247, 242, 193, 194, 251, 108, 143, 11, 202, 0, 190, 146, 144, 97, 202, 117, ], ), }, sent_events: EventHandle { count: 481019333595704649, key: EventKey( [ 70, 57, 223, 7, 105, 150, 107, 210, 6, 131, 89, 191, 66, 9, 192, 152, 91, 154, 32, 29, 79, 186, 216, 9, ], ), }, sequence_number: 9516678732005780861, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a077e33f13f8d551845ca0cc993f20e2c2a8f8922e8d1c566a4925df07ba9838): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96003978f9f0129fa9e6d8252fa49669eee3e7b9344a20048d776564cfc9120182a7d2be0603d7eb838845190852c7a7463654cfbae8fee1778c0187a7e16982218077f38cfd681a2e2eedc2a34726af0ee5a65b210a40da0324be9432ddfe4c9172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae90840ca87f586c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 143, 159, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 29fa9e6d8252fa49669eee3e7b9344a2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2346934285635082056, key: EventKey( [ 42, 125, 43, 224, 96, 61, 126, 184, 56, 132, 81, 144, 133, 44, 122, 116, 99, 101, 76, 251, 174, 143, 238, 23, ], ), }, sent_events: EventHandle { count: 2492767126219702392, key: EventKey( [ 7, 127, 56, 207, 214, 129, 162, 226, 238, 220, 42, 52, 114, 106, 240, 238, 90, 101, 178, 16, 164, 13, 160, 50, ], ), }, sequence_number: 1714152780379449675, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a085c05eba6129f8539b82d125c28e901e90419f4285d2eae65cd570f5e29714): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a601494068fd343184891f92f37dbd6746aeda3354f5fb6730e7515f9eb5ce06fa09da3ae38b8722ce840aab3f1977f0a1f86605a8bfda05bae5f2c0ec9df943b59ff0d79cf833dd21cfe0da0001fe9ed5387ba85ac3b86567c31f6e19bf7f0cbab24f1a580c187da5cadf897ce8b24ed7b12b8fa79f576dd18be1cfa95493355c87373a3ac63f18ff57553f184ddfe6128ca9e3c48c788e87a39d3c14385a28e6c093839be4df712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082284bcde4dc0c330 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 104, 253, 52, 49, 132, 137, 31, 146, 243, 125, 189, 103, 70, 174, 218, 51, 84, 245, 251, 103, 48, 231, 81, 95, 158, 181, 206, 6, 250, 9, 218, 58, 227, 139, 135, 34, 206, 132, 10, 171, 63, 25, 119, 240, 161, 248, 102, 5, 168, 191, 218, 5, 186, 229, 242, 192, 236, 157, 249, 67, 181, 159, 240, 215, 156, 248, 51, 221, 33, 207, 224, 218, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fe9ed5387ba85ac3b86567c31f6e19bf, }, ), received_events: EventHandle { count: 889489856008948863, key: EventKey( [ 125, 165, 202, 223, 137, 124, 232, 178, 78, 215, 177, 43, 143, 167, 159, 87, 109, 209, 139, 225, 207, 169, 84, 147, ], ), }, sent_events: EventHandle { count: 4595424491492301877, key: EventKey( [ 255, 87, 85, 63, 24, 77, 223, 230, 18, 140, 169, 227, 196, 140, 120, 142, 135, 163, 157, 60, 20, 56, 90, 40, ], ), }, sequence_number: 8205528402670895334, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a0ee13320fdbee93c5dcc40e427f485a23d2e41363f246732bcf6a1f74fb0b8a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a011dfbec37278afb96b51a968ee00dc81dd2d46d741bf6fd62181d6d673f9401b244630477a57326a35d1b3d1c260fb00174da3913e60950d1ad409afcbde52f51370aa83d7918b70b1851e039f250bd5948c306b38134d177406d70a3438aaf74fa1a992d4d0e5ffe7b18ccf2bb744e647260373a22b7daba7f9c0cc3929ef8e1eb86f86d4c9a42f5bfe92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089a2276ff3c831cb9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 236, 55, 39, 138, 251, 150, 181, 26, 150, 142, 224, 13, 200, 29, 210, 212, 109, 116, 27, 246, 253, 98, 24, 29, 109, 103, 63, 148, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b244630477a57326a35d1b3d1c260fb0, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 74da3913e60950d1ad409afcbde52f51, }, ), received_events: EventHandle { count: 844170364159789623, key: EventKey( [ 81, 224, 57, 242, 80, 189, 89, 72, 195, 6, 179, 129, 52, 209, 119, 64, 109, 112, 163, 67, 138, 175, 116, 250, ], ), }, sent_events: EventHandle { count: 8934683225778657562, key: EventKey( [ 204, 242, 187, 116, 78, 100, 114, 96, 55, 58, 34, 183, 218, 186, 127, 156, 12, 195, 146, 158, 248, 225, 235, 134, ], ), }, sequence_number: 16843450797794291192, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a0f8e7ad783241423a8cd4c7e631d39a172ae7928015f34a1e3357acb296487b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dcbe566161f429274a54f4bf7ca568b27f40f7138574912b5d4f44d8a81475597dfab64a828fe0936490b7a6e55e0adba63ff460f7462eab1987401a6420001b534b057afe1def9930811e49a91f83d0e337d184a1abd24189bbb39561009aed7ffa6aaed596d85949c48bd6f3909bfd52efe243e808b7f691897a406b3626b61a415695aff6803f17cad2c5cd4c3a511993e1a4e26795e8c662101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cc21e6e10f72302 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 229, 102, 22, 31, 66, 146, 116, 165, 79, 75, 247, 202, 86, 139, 39, 244, 15, 113, 56, 87, 73, 18, 181, 212, 244, 77, 138, 129, 71, 85, 151, 223, 171, 100, 168, 40, 254, 9, 54, 73, 11, 122, 110, 85, 224, 173, 186, 99, 255, 70, 15, 116, 98, 234, 177, 152, 116, 1, 166, 66, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b534b057afe1def9930811e49a91f83d, }, ), received_events: EventHandle { count: 2647301061504480014, key: EventKey( [ 155, 187, 57, 86, 16, 9, 174, 215, 255, 166, 170, 237, 89, 109, 133, 148, 156, 72, 189, 111, 57, 9, 191, 213, ], ), }, sent_events: EventHandle { count: 7601948078939373102, key: EventKey( [ 151, 164, 6, 179, 98, 107, 97, 164, 21, 105, 90, 255, 104, 3, 241, 124, 173, 44, 92, 212, 195, 165, 17, 153, ], ), }, sequence_number: 7389384963034847806, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a12ee966cfc06c0060e8a1b6db67681b18d96ccbcd7f9715781e0cc9161c8ae8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c985013840d0e65203a8a96e249a2b92ffa7b5fbc358473b02afc760cca7f592caf9764d74baf375fbe9e22d5db065e3fc45f0d0df2effa04ecf8303000020f60bc0a22ce52f1825cb75a2327df62a3f6d9449bafa87650f5aca367a43f8e206b9d0240be6d60e1827fd2b73ffeb7680b33cb0e3aa0f97f3b6a351ee87a01a1a9fbcafe90a34616d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1ea21f46c77c1f4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 208, 230, 82, 3, 168, 169, 110, 36, 154, 43, 146, 255, 167, 181, 251, 195, 88, 71, 59, 2, 175, 199, 96, 204, 167, 245, 146, 202, 249, 118, 77, 116, 186, 243, 117, 251, 233, 226, 45, 93, 176, 101, 227, 252, 69, 240, 208, 223, 46, 255, 160, 78, 207, 131, 3, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3451213766967686688, key: EventKey( [ 37, 203, 117, 162, 50, 125, 246, 42, 63, 109, 148, 73, 186, 250, 135, 101, 15, 90, 202, 54, 122, 67, 248, 226, ], ), }, sent_events: EventHandle { count: 1069294897083758854, key: EventKey( [ 39, 253, 43, 115, 255, 235, 118, 128, 179, 60, 176, 227, 170, 15, 151, 243, 182, 163, 81, 238, 135, 160, 26, 26, ], ), }, sequence_number: 7881638044350004383, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a13ab3c531c258ec325150bea2ecf43998a5f29a20cdac4e3a40394cb70d217f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9772a87a336f7830afc3d50c5cfc526f7ff508d008fbd1ce1776e63e598ac7b702e474fbdf445aeba84d268ea0000887c2480e690e37318340ae623a71dcaba1c8a685b12dbf6e021aa0bb357ea4ba1817c7772fc17861e18bd8af6ab5c1178b5308504e2a0f89ac8d5bf13c175d1dc1a4f74b9b8c96e73972101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a84a211f5db23058 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 163, 54, 247, 131, 10, 252, 61, 80, 197, 207, 197, 38, 247, 255, 80, 141, 0, 143, 189, 28, 225, 119, 110, 99, 229, 152, 172, 123, 112, 46, 71, 79, 189, 244, 69, 174, 186, 132, 210, 104, 234, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8350677453741784200, key: EventKey( [ 52, 10, 230, 35, 167, 29, 202, 186, 28, 138, 104, 91, 18, 219, 246, 224, 33, 170, 11, 179, 87, 234, 75, 161, ], ), }, sent_events: EventHandle { count: 2199471841036696705, key: EventKey( [ 189, 138, 246, 171, 92, 17, 120, 181, 48, 133, 4, 226, 160, 248, 154, 200, 213, 191, 19, 193, 117, 209, 220, 26, ], ), }, sequence_number: 10913188134715487311, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a14275a1176510cf8d9d4ba926cb6d4bf1559c053f5101440e15c448e25a1d95): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015bc47c18a4b9db4eed99ca3021f704f4fbf6daeb7bda14689ec292fb971498e99de0eaa0656b5cd30382ecf0aa4b4c9d569b5db2083c6e478b88c95bd44b7d6a18cd6f659c11adcef6c1dd58f22596b05f043df77ef6e1b4fa99e0d100010a658ab988271a0d1c22b22d04efb3c049a961c49c593e5118ea37a5a72ad7dabe9095f77a430dded61fcda2662e8ac64fe0cec21ffc2cfc4518831fc5f0b1ce922c49d870283e4c3b372b8503b7ff7df522cca82eacdff830892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088a1f58fa60db94c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 124, 24, 164, 185, 219, 78, 237, 153, 202, 48, 33, 247, 4, 244, 251, 246, 218, 235, 123, 218, 20, 104, 158, 194, 146, 251, 151, 20, 152, 233, 157, 224, 234, 160, 101, 107, 92, 211, 3, 130, 236, 240, 170, 75, 76, 157, 86, 155, 93, 178, 8, 60, 110, 71, 139, 136, 201, 91, 212, 75, 125, 106, 24, 205, 111, 101, 156, 17, 173, 206, 246, 193, 221, 88, 242, 37, 150, 176, 95, 4, 61, 247, 126, 246, 225, 180, 250, 153, 224, 209, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0a658ab988271a0d1c22b22d04efb3c0, }, ), received_events: EventHandle { count: 5854215095472728393, key: EventKey( [ 234, 55, 165, 167, 42, 215, 218, 190, 144, 149, 247, 122, 67, 13, 222, 214, 31, 205, 162, 102, 46, 138, 198, 79, ], ), }, sent_events: EventHandle { count: 5042955144124354272, key: EventKey( [ 131, 31, 197, 240, 177, 206, 146, 44, 73, 216, 112, 40, 62, 76, 59, 55, 43, 133, 3, 183, 255, 125, 245, 34, ], ), }, sequence_number: 9885674821628373196, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a190b22f5a8d7220ec386e2595c9670604a42210cc87ca08e2ba399ac258fe58): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781be92180bed2d1d2f5018e236603569f9b4a6c50b706e6e30083d68d01752ff65c61e60d5b6d07b80e0c5e756a0006e57cbce857b85218716363fa6d7991f1b48bdac92028c24af85582d1a6c1319f4895c31a6cf3346418af62ab8ee84ad7d92ccbb0fa53c0611df7223b9b2768828d06057717b1a83d842101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085f25808a93346fce Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 33, 128, 190, 210, 209, 210, 245, 1, 142, 35, 102, 3, 86, 159, 155, 74, 108, 80, 183, 6, 230, 227, 0, 131, 214, 141, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 752ff65c61e60d5b6d07b80e0c5e756a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5960610763931182342, key: EventKey( [ 113, 99, 99, 250, 109, 121, 145, 241, 180, 139, 218, 201, 32, 40, 194, 74, 248, 85, 130, 209, 166, 193, 49, 159, ], ), }, sent_events: EventHandle { count: 7220663748212790600, key: EventKey( [ 175, 98, 171, 142, 232, 74, 215, 217, 44, 203, 176, 250, 83, 192, 97, 29, 247, 34, 59, 155, 39, 104, 130, 141, ], ), }, sequence_number: 9528957865142191366, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a1b3a0a64c412e50805fe2a5022b4b8977446005333f97cca05089de4b49e435): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98a012df241faad8c64ff438a587dcb823c713118a657cc7805b7af25d7be93a5cc37a70a0a8faad8d1d7d708af4af96f018cf5d11d070985a88d0140cdc060d9a000b3d2cd5c48a3ba4118304d8da4956dbc1469cac31161b5c330cfa767a05a80c456e5816d5a8e49650c18dc5f5b2e3e0da0913079d1f25f7de05e89d87e43ae1fef179bd1eb8b3421ceb52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b96f5cc10a510723 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 65, 250, 173, 140, 100, 255, 67, 138, 88, 125, 203, 130, 60, 113, 49, 24, 166, 87, 204, 120, 5, 183, 175, 37, 215, 190, 147, 165, 204, 55, 167, 10, 10, 143, 170, 216, 209, 215, 215, 8, 175, 74, 249, 111, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8cf5d11d070985a88d0140cdc060d9a0, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4736277489323463347, key: EventKey( [ 48, 77, 141, 164, 149, 109, 188, 20, 105, 202, 195, 17, 97, 181, 195, 48, 207, 167, 103, 160, 90, 128, 196, 86, ], ), }, sent_events: EventHandle { count: 893200976854221285, key: EventKey( [ 220, 95, 91, 46, 62, 13, 160, 145, 48, 121, 209, 242, 95, 125, 224, 94, 137, 216, 126, 67, 174, 31, 239, 23, ], ), }, sequence_number: 13100444875636855195, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a27b9548718475b7a1cc4258affb3119404c50ca0f7daa2cb6714e0226b66101): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997014addb5bcef8cbdf29a94d08e23d6a3bde5d876fc3f7a545e22eaec36362f57b37691267342ae9270fbbe556528c558de037d9d9b6610a94999b72f6392387e8c83da6654db5852fe6e51100000828737633288001b18f92aa95d6b8ad3d7b84eecec14f5b9f93d33df968747d0552c93fb358820cc2518eeb43082785be88f72ae5ed57952768bd81a09e2b25c83a367907faceeff129e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708045c7d7a6211291a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 181, 188, 239, 140, 189, 242, 154, 148, 208, 142, 35, 214, 163, 189, 229, 216, 118, 252, 63, 122, 84, 94, 34, 234, 236, 54, 54, 47, 87, 179, 118, 145, 38, 115, 66, 174, 146, 112, 251, 190, 85, 101, 40, 197, 88, 222, 3, 125, 157, 155, 102, 16, 169, 73, 153, 183, 47, 99, 146, 56, 126, 140, 131, 218, 102, 84, 219, 88, 82, 254, 110, 81, 16, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1945704789018380162, key: EventKey( [ 249, 42, 169, 93, 107, 138, 211, 215, 184, 78, 236, 236, 20, 245, 185, 249, 61, 51, 223, 150, 135, 71, 208, 85, ], ), }, sent_events: EventHandle { count: 2723587644045628204, key: EventKey( [ 238, 180, 48, 130, 120, 91, 232, 143, 114, 174, 94, 213, 121, 82, 118, 139, 216, 26, 9, 226, 178, 92, 131, 163, ], ), }, sequence_number: 11390447808134746215, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a304d3cf01dfb175f4f0b960de475703f698938627fffaa8c5b6c92a89f6f1d5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f222ad1fe4f9c905c14ef87605a1eed4ad718d358ca0d8f845a26902b11c23f670dba2d000193b77fd09d1af7d19be7c3218ab144f8222d589ed9af697018ada16a6436392525b54764f5ae5f1d03118cc4d8ba54fe9dc0c994d670dd19181829ee9a78dd9cf5a30d1c0f37e15cae6568c6267a5180b3cd82e29abf23d92b082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7e05ab3645d32e0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 42, 209, 254, 79, 156, 144, 92, 20, 239, 135, 96, 90, 30, 237, 74, 215, 24, 211, 88, 202, 13, 143, 132, 90, 38, 144, 43, 17, 194, 63, 103, 13, 186, 45, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 93b77fd09d1af7d19be7c3218ab144f8, }, ), received_events: EventHandle { count: 8100198754001890594, key: EventKey( [ 173, 161, 106, 100, 54, 57, 37, 37, 181, 71, 100, 245, 174, 95, 29, 3, 17, 140, 196, 216, 186, 84, 254, 157, ], ), }, sent_events: EventHandle { count: 1736662608034187712, key: EventKey( [ 41, 238, 154, 120, 221, 156, 245, 163, 13, 28, 15, 55, 225, 92, 174, 101, 104, 198, 38, 122, 81, 128, 179, 205, ], ), }, sequence_number: 588802923863663234, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3a573bf8451bb1ad411810848f09ccdb053e921dfad82d15120530c689d9d9d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800133c095b813223c3d2645d3a7418927ef62e06849715640e70fba8d62288271db3a88b71e32faf3692b5466a34b772deeecc777130000564dd379793ccb1718e90b1d7bf3c6b9b9ea7d5e9bacd76e45024d640737d768e599c6453232f8cc1918ff5a4dfddd670a6b89e8be3858bc4c10480fc618107fb51ed9921543f3228e6f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089ee6cdd3022df869 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 192, 149, 184, 19, 34, 60, 61, 38, 69, 211, 167, 65, 137, 39, 239, 98, 224, 104, 73, 113, 86, 64, 231, 15, 186, 141, 98, 40, 130, 113, 219, 58, 136, 183, 30, 50, 250, 243, 105, 43, 84, 102, 163, 75, 119, 45, 238, 236, 199, 119, 19, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1714530575577206102, key: EventKey( [ 233, 11, 29, 123, 243, 198, 185, 185, 234, 125, 94, 155, 172, 215, 110, 69, 2, 77, 100, 7, 55, 215, 104, 229, ], ), }, sent_events: EventHandle { count: 1859133640672659097, key: EventKey( [ 255, 90, 77, 253, 221, 103, 10, 107, 137, 232, 190, 56, 88, 188, 76, 16, 72, 15, 198, 24, 16, 127, 181, 30, ], ), }, sequence_number: 8038400813100798681, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3c6d1f162c75af7fda8a27c2c1df1953d5ae332cc27635c9a928391ccd81bea): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01308241eae677bc531b80b596ad8d7650e781a668ec4458d0363685f881b6966c65be1de685ee0ff3449abb965f8bfa6f770001dcbc3830176d12072889b93c1382ccc0ba4b238e448139381800d3f4f6d0e2c0c99f257b5d2c54fe80bfff4badb77e56ac1ebd9f260e1c53471853e34cbb4c2ca8bb5b5d30c767e33b6bb9f37950bb7f3ca6b84f26a13de92dfe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8ca9a3fc1ad8bb8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 130, 65, 234, 230, 119, 188, 83, 27, 128, 181, 150, 173, 141, 118, 80, 231, 129, 166, 104, 236, 68, 88, 208, 54, 54, 133, 248, 129, 182, 150, 108, 101, 190, 29, 230, 133, 238, 15, 243, 68, 154, 187, 150, 95, 139, 250, 111, 119, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: dcbc3830176d12072889b93c1382ccc0, }, ), received_events: EventHandle { count: 4051411471238908858, key: EventKey( [ 0, 211, 244, 246, 208, 226, 192, 201, 159, 37, 123, 93, 44, 84, 254, 128, 191, 255, 75, 173, 183, 126, 86, 172, ], ), }, sent_events: EventHandle { count: 5139482446862990622, key: EventKey( [ 83, 227, 76, 187, 76, 44, 168, 187, 91, 93, 48, 199, 103, 227, 59, 107, 185, 243, 121, 80, 187, 127, 60, 166, ], ), }, sequence_number: 18315551710491594680, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a3e3a48f9c73aaf56bc185cfe6ccb0fad14631e304891b328aa1faf379e16e3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e8df025a42cca7c1ed83e9235596002c01be2ce03b87f8153f19fd175da041b0699d4f614a925b1964b40813e0a67d609156c0f1f36185c929c1b2c57e32f2aacaf73eb5e408e621c281bc04e5161556a1b2f5d6a231f282f424cfbbf8c4f016d002f4058a012beef6f566b9310a18e00f10c9005cf8f747a18712ed6d7e5c51935a2561bd5d05aaadd596d91c47b55f80b225e063680b29025189e7d0cf5dab4a07ee84e6f1c6b85715fd2e05b41a79aef5900773595784c7b462101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084dd989b1230655b6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 240, 37, 164, 44, 202, 124, 30, 216, 62, 146, 53, 89, 96, 2, 192, 27, 226, 206, 3, 184, 127, 129, 83, 241, 159, 209, 117, 218, 4, 27, 6, 153, 212, 246, 20, 169, 37, 177, 150, 75, 64, 129, 62, 10, 103, 214, 9, 21, 108, 15, 31, 54, 24, 92, 146, 156, 27, 44, 87, 227, 47, 42, 172, 175, 115, 235, 94, 64, 142, 98, 28, 40, 27, 192, 78, 81, 97, 85, 106, 27, 47, 93, 106, 35, 31, 40, 47, 66, 76, 251, 191, 140, 79, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d002f4058a012beef6f566b9310a18e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8823835689239973105, key: EventKey( [ 113, 46, 214, 215, 229, 197, 25, 53, 162, 86, 27, 213, 208, 90, 170, 221, 89, 109, 145, 196, 123, 85, 248, 11, ], ), }, sent_events: EventHandle { count: 2706859639781613090, key: EventKey( [ 158, 125, 12, 245, 218, 180, 160, 126, 232, 78, 111, 28, 107, 133, 113, 95, 210, 224, 91, 65, 167, 154, 239, 89, ], ), }, sequence_number: 5078737085573461760, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a4eebd1394e5504f3f34e88d3759e8d365c8fcaad540efb54db5bb0277ac58e0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9791cf97a488f484e6d692fa25bc98d43564ada6ecd14d0cdb865a8e13dda01c52a7d09c3f4dfa728eabe0b7411fa2d003a18b68f18e79e5c18abf6a3725e3020bfbbbb8520ae08f46f7cae5f668532a5a4401677c9e644693d18b39b129ae36f4e26b2a24afee4aabb686c0dd5e073d2ee91f499cac44597c7882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d455a7c4e8bb2ddb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 249, 122, 72, 143, 72, 78, 109, 105, 47, 162, 91, 201, 141, 67, 86, 74, 218, 110, 205, 20, 208, 205, 184, 101, 168, 225, 61, 218, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c52a7d09c3f4dfa728eabe0b7411fa2d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6674025790485960762, key: EventKey( [ 171, 246, 163, 114, 94, 48, 32, 191, 187, 187, 133, 32, 174, 8, 244, 111, 124, 174, 95, 102, 133, 50, 165, 164, ], ), }, sent_events: EventHandle { count: 4425143866881414720, key: EventKey( [ 179, 155, 18, 154, 227, 111, 78, 38, 178, 162, 74, 254, 228, 170, 187, 104, 108, 13, 213, 224, 115, 210, 238, 145, ], ), }, sequence_number: 9856012635433769460, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a57b7afabbc8e570a4d6754a6a35e2df65a9cc6ecb9d90b8b702973e3e1f97d0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e1105db01357d78a36b37c524403b2ddb5fc501cb1bacca81f3100c739a5e9f2b1bd27b001f76819896625232180a74ac969187fd8bd34322250c46e35feb90898807b72ce89f5adb7848a8353918f816e0cc692320d09669ca06abdeabe34a48d3a8255179c02aeddb2a582d454b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089c980f7016faebe0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 219, 1, 53, 125, 120, 163, 107, 55, 197, 36, 64, 59, 45, 219, 95, 197, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cb1bacca81f3100c739a5e9f2b1bd27b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3626069048929908255, key: EventKey( [ 10, 116, 172, 150, 145, 135, 253, 139, 211, 67, 34, 37, 12, 70, 227, 95, 235, 144, 137, 136, 7, 183, 44, 232, ], ), }, sent_events: EventHandle { count: 4122386063146310303, key: EventKey( [ 248, 22, 224, 204, 105, 35, 32, 208, 150, 105, 202, 6, 171, 222, 171, 227, 74, 72, 211, 168, 37, 81, 121, 192, ], ), }, sequence_number: 5423791182937058602, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5a42d6003cdd774f99f8374a2e0b6838eb05482d1ea4bde3c4d96ead94ada9e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c980012365dfcfff8d121dc91ccecac6b33c724f4b118b36b2a1b73f627e97a46ef39576867e5001c45fed2dca91130e5e362c33f43b59cb00f09851a52604705d181a03b4e80e3832eb97712090f5a9eae3fab7154c0edc6c71ba7a6e6959ba5a6d18517e665dc201c286266b3c86f50e40aba7b1588557751e274a5579265a03ef5b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70899c29e0048bc4045 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 223, 207, 255, 141, 18, 29, 201, 28, 206, 202, 198, 179, 60, 114, 79, 75, 17, 139, 54, 178, 161, 183, 63, 98, 126, 151, 164, 110, 243, 149, 118, 134, 126, 80, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c45fed2dca91130e5e362c33f43b59cb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6732886006947748080, key: EventKey( [ 26, 3, 180, 232, 14, 56, 50, 235, 151, 113, 32, 144, 245, 169, 234, 227, 250, 183, 21, 76, 14, 220, 108, 113, ], ), }, sent_events: EventHandle { count: 7879815391221807802, key: EventKey( [ 81, 126, 102, 93, 194, 1, 194, 134, 38, 107, 60, 134, 245, 14, 64, 171, 167, 177, 88, 133, 87, 117, 30, 39, ], ), }, sequence_number: 6624517262612714826, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a5c7ef6a7aee4701209350fc7a32251465223d795c05a3d54cc70487d01138bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f74be47ddfec51e0cf3a20f67a1f4090001c4e7362aa0ecea3e635a22a65a3f58f9634ba5b8a880bb3518fef087d95dbb5a07f044310553d7f989c04835e1e428419b63ebfa74cce42c391881eff000151e2adb5811c6daacf567dc3806fee3d7e7aa32e70cf4cadd515f2b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708adcd07d7d3f21a55 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 190, 71, 221, 254, 197, 30, 12, 243, 162, 15, 103, 161, 244, 9, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c4e7362aa0ecea3e635a22a65a3f58f9, }, ), received_events: EventHandle { count: 3871829766795774819, key: EventKey( [ 254, 240, 135, 217, 93, 187, 90, 7, 240, 68, 49, 5, 83, 215, 249, 137, 192, 72, 53, 225, 228, 40, 65, 155, ], ), }, sent_events: EventHandle { count: 4119919325924223843, key: EventKey( [ 129, 239, 240, 0, 21, 30, 42, 219, 88, 17, 198, 218, 172, 245, 103, 220, 56, 6, 254, 227, 215, 231, 170, 50, ], ), }, sequence_number: 3125306679453027559, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a66091beadd49d2d6d905e5f6dee30290000a93e0c20ae4410952298aabc4d42): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b30156d6930c1eb39fa6828b404bded0a33372bc64b4b0ef9bb9d055cd34dccea79e61fb1e1ae998f681005e37083cd59c32ed3dfb65abfbf2a3d79df9cfca4d45141275ad4cd8e0f8bdb191e86564b8f29f05b12fec0616da00017b7a137c6eaa5e8ef20d3af086a19d530e3e0e19da1a3d561803f3eb3fa96b2526804706b2d136c6ba22ea5897c7db179efad468a0052e737418cc3610ed5ea2bbc479607ca39d357a63ae0b6461c8a2c604eb6e9bf51e64359f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea2ee0460d46ce0e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 214, 147, 12, 30, 179, 159, 166, 130, 139, 64, 75, 222, 208, 163, 51, 114, 188, 100, 180, 176, 239, 155, 185, 208, 85, 205, 52, 220, 206, 167, 158, 97, 251, 30, 26, 233, 152, 246, 129, 0, 94, 55, 8, 60, 213, 156, 50, 237, 61, 251, 101, 171, 251, 242, 163, 215, 157, 249, 207, 202, 77, 69, 20, 18, 117, 173, 76, 216, 224, 248, 189, 177, 145, 232, 101, 100, 184, 242, 159, 5, 177, 47, 236, 6, 22, 218, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7b7a137c6eaa5e8ef20d3af086a19d53, }, ), received_events: EventHandle { count: 6214152584866709006, key: EventKey( [ 3, 243, 235, 63, 169, 107, 37, 38, 128, 71, 6, 178, 209, 54, 198, 186, 34, 234, 88, 151, 199, 219, 23, 158, ], ), }, sent_events: EventHandle { count: 8391101132422305018, key: EventKey( [ 204, 54, 16, 237, 94, 162, 187, 196, 121, 96, 124, 163, 157, 53, 122, 99, 174, 11, 100, 97, 200, 162, 198, 4, ], ), }, sequence_number: 11472185709928607467, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a67d2e632c22cd119be86f9690ff6f630934a7282c4c9c3fff37450cfffe4fac): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e21243e20312ca9aa094a4569e3459167bb773c0fd79c32715912b60d1d65af1eb53a0000672864da0d3d6d1c188b9118ce4dff9aa49bcbcf9efebb8d0a9e47de2b568b30de3c8530773fbac579188a6e4b68b25951db6c96fe787774a163d8bc50b34957a6a11a53ed4640b30dfd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ae962d14b0e21b6a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 62, 32, 49, 44, 169, 170, 9, 74, 69, 105, 227, 69, 145, 103, 187, 119, 60, 15, 215, 156, 50, 113, 89, 18, 182, 13, 29, 101, 175, 30, 181, 58, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2048360535231309927, key: EventKey( [ 139, 145, 24, 206, 77, 255, 154, 164, 155, 203, 207, 158, 254, 187, 141, 10, 158, 71, 222, 43, 86, 139, 48, 222, ], ), }, sent_events: EventHandle { count: 8774624230746654012, key: EventKey( [ 138, 110, 75, 104, 178, 89, 81, 219, 108, 150, 254, 120, 119, 116, 161, 99, 216, 188, 80, 179, 73, 87, 166, 161, ], ), }, sequence_number: 18234427554942243610, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a6be7115b78680cfdeb7e1d75c89f00a988bff12a7e084762b758744eb3afe66): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e016001380a3284931e0ea1cb217c62aa2cd93d00a0cea62ab7c16021180156353bbe9a4713e8498eb0b02bd63da85238a3fd23a9c88babcc25461c9354182a003337dfee070a7241c8900f19aa7f6638c36c87f1de7d67791316a1767d522101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c0c51479a7eb3c0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 380a3284931e0ea1cb217c62aa2cd93d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2405135193454595744, key: EventKey( [ 1, 86, 53, 59, 190, 154, 71, 19, 232, 73, 142, 176, 176, 43, 214, 61, 168, 82, 56, 163, 253, 35, 169, 200, ], ), }, sent_events: EventHandle { count: 6094245808369871755, key: EventKey( [ 42, 0, 51, 55, 223, 238, 7, 10, 114, 65, 200, 144, 15, 25, 170, 127, 102, 56, 195, 108, 135, 241, 222, 125, ], ), }, sequence_number: 5944037517431109991, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a6d176bde4083dd5940ae66309dfff24947e4912eded17b2f33582e1cf01704b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10154e87c8b7fc29fce5c07a9ba47c32a004ea7b1432c7348cffa1440a7cddf39fa5b3e96b07415c8328ead93255ff2e8c9c158f95c1e557023bc2905bc5490df02dd4e276cd98991c1f69cb0c48a6d54fb95744bbc84000098aa45272193dc24185159872370f7d3dd309f52c215bc04fdff004bb73aeb6252fb2df941d2ef1f02182a5d9d0a811a58e139734da34e4664e7335b387ac12dae26e3a91ba8ab02d6342101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084ba738f47ce2db3f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 232, 124, 139, 127, 194, 159, 206, 92, 7, 169, 186, 71, 195, 42, 0, 78, 167, 177, 67, 44, 115, 72, 207, 250, 20, 64, 167, 205, 223, 57, 250, 91, 62, 150, 176, 116, 21, 200, 50, 142, 173, 147, 37, 95, 242, 232, 201, 193, 88, 249, 92, 30, 85, 112, 35, 188, 41, 5, 188, 84, 144, 223, 2, 221, 78, 39, 108, 217, 137, 145, 193, 246, 156, 176, 196, 138, 109, 84, 251, 149, 116, 75, 188, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2656159650843830936, key: EventKey( [ 81, 89, 135, 35, 112, 247, 211, 221, 48, 159, 82, 194, 21, 188, 4, 253, 255, 0, 75, 183, 58, 235, 98, 82, ], ), }, sent_events: EventHandle { count: 153104598682906107, key: EventKey( [ 42, 93, 157, 10, 129, 26, 88, 225, 57, 115, 77, 163, 78, 70, 100, 231, 51, 91, 56, 122, 193, 45, 174, 38, ], ), }, sequence_number: 3807233471271381475, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a75ff241b814f43f204bef56feb530f12a2647d7d4b6b092b03c0bc6f7017a77): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d6c5690d12a7e4c463e79eb98b0a8dd0aaedf0d4ae2e09f20a388093d13d8d21ad5748ed75c78639525a660fceae51e887acff80dfba0b1fa98143c1b310001c133ff4017de9e60a806740b2805c9f70d5b6036638c6732183827dada862787790758038607463b95715448f983148094a578c0891b4faa4b182488ef238cec36bdee621f7857a4d81c73ccabb8b4c0271eecf717eb09fce6562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085718be5851bf0d2f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 108, 86, 144, 209, 42, 126, 76, 70, 62, 121, 235, 152, 176, 168, 221, 10, 174, 223, 13, 74, 226, 224, 159, 32, 163, 136, 9, 61, 19, 216, 210, 26, 213, 116, 142, 215, 92, 120, 99, 149, 37, 166, 96, 252, 234, 229, 30, 136, 122, 207, 248, 13, 251, 160, 177, 250, 152, 20, 60, 27, 49, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c133ff4017de9e60a806740b2805c9f7, }, ), received_events: EventHandle { count: 3632025982239529741, key: EventKey( [ 56, 39, 218, 218, 134, 39, 135, 121, 7, 88, 3, 134, 7, 70, 59, 149, 113, 84, 72, 249, 131, 20, 128, 148, ], ), }, sent_events: EventHandle { count: 5452257278579210405, key: EventKey( [ 36, 136, 239, 35, 140, 236, 54, 189, 238, 98, 31, 120, 87, 164, 216, 28, 115, 204, 171, 184, 180, 192, 39, 30, ], ), }, sequence_number: 6261969451434375148, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a78cb2fff23f16e2a936cf226510465f69e34c0a4b0b68a97838424e99a0a64a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910134aa7116a57286cdd95d1e0dae02938f3e2e7b62243c3a32ce9598f0b36e6e310c1e85188d74006f0b2d163b4e619f4e13dff2b2e200015dc29f0ecc941549c2cc852ffd450c0552b9f458ba8ced4b18cc25e4bfa6367ab32dfdc462442c5c14f1d9306bcbfaea41322425d96caa0a6c18045e1d3fd3af61b097b38e1f4d1a7a06638dd0c32d7cd3c2b024868d51dc012e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088ac40efb05269836 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 113, 22, 165, 114, 134, 205, 217, 93, 30, 13, 174, 2, 147, 143, 62, 46, 123, 98, 36, 60, 58, 50, 206, 149, 152, 240, 179, 110, 110, 49, 12, 30, 133, 24, 141, 116, 0, 111, 11, 45, 22, 59, 78, 97, 159, 78, 19, 223, 242, 178, 226, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5dc29f0ecc941549c2cc852ffd450c05, }, ), received_events: EventHandle { count: 5471183854309259602, key: EventKey( [ 204, 37, 228, 191, 166, 54, 122, 179, 45, 253, 196, 98, 68, 44, 92, 20, 241, 217, 48, 107, 203, 250, 234, 65, ], ), }, sent_events: EventHandle { count: 7785222290339603506, key: EventKey( [ 4, 94, 29, 63, 211, 175, 97, 176, 151, 179, 142, 31, 77, 26, 122, 6, 99, 141, 208, 195, 45, 124, 211, 194, ], ), }, sequence_number: 3315173043546236080, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a7ac4801c39a626a73d6884ea1b2ad1a6b341c17e9db785551b152eaf9d8c8b9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149c48ad2da9d536626d93970fdb56a759962ba958d85324389e347403c8fb527c670f97f434315ac8a521db4ab88bdae6480158ae5af03ae273920a681f94736c46bcadd4d9f6705227e00013c8504c349a729d0a756b4749530b8dbb767dee71580037918a9e5bfc9bb5106071a90ac8404992afc528b120e9cb9c81f0afdde62ee132d3d1891aac717af44f4df9f55dd5edcd275d950e060790969e797d5d683b2bb1e52aa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f594134982b4675c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 196, 138, 210, 218, 157, 83, 102, 38, 217, 57, 112, 253, 181, 106, 117, 153, 98, 186, 149, 141, 133, 50, 67, 137, 227, 71, 64, 60, 143, 181, 39, 198, 112, 249, 127, 67, 67, 21, 172, 138, 82, 29, 180, 171, 136, 189, 174, 100, 128, 21, 138, 229, 175, 3, 174, 39, 57, 32, 166, 129, 249, 71, 54, 196, 107, 202, 221, 77, 159, 103, 5, 34, 126, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3c8504c349a729d0a756b4749530b8db, }, ), received_events: EventHandle { count: 8719954135092193207, key: EventKey( [ 169, 229, 191, 201, 187, 81, 6, 7, 26, 144, 172, 132, 4, 153, 42, 252, 82, 139, 18, 14, 156, 185, 200, 31, ], ), }, sent_events: EventHandle { count: 4408201524847508746, key: EventKey( [ 145, 170, 199, 23, 175, 68, 244, 223, 159, 85, 221, 94, 220, 210, 117, 217, 80, 224, 96, 121, 9, 105, 231, 151, ], ), }, sequence_number: 12272905726040725205, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a7e1c3760f16bf8a371b70cd45c8e74d224afce759dc3f8a4b68d1535b9eba9c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c970133b9dfe4a0e23f494ae8671bea3b5d27afbf8f201100b40cb1ab9e5baf439ec63d472fc45005fc5ceabb1dc4e3418c6f1bb14c1f3a8ad588d7bd781f923a4dee3a6bd45c34eaba4cc379a4e82b03918491dd19ffebe6e39574bca1cf1dd90f8858723a6bd58d902834b53ac8282897a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708470e44fca02cf9fa Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 157, 254, 74, 14, 35, 244, 148, 174, 134, 113, 190, 163, 181, 210, 122, 251, 248, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 100b40cb1ab9e5baf439ec63d472fc45, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3769192593805460831, key: EventKey( [ 198, 241, 187, 20, 193, 243, 168, 173, 88, 141, 123, 215, 129, 249, 35, 164, 222, 227, 166, 189, 69, 195, 78, 171, ], ), }, sent_events: EventHandle { count: 4156965730169375908, key: EventKey( [ 73, 29, 209, 159, 254, 190, 110, 57, 87, 75, 202, 28, 241, 221, 144, 248, 133, 135, 35, 166, 189, 88, 217, 2, ], ), }, sequence_number: 8829732042185067395, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a8076a0b2c81b4ec5ae16dd8186623695039ce5f5da86f7c0c92e3bee214e8df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0142ccf00fe0055f5d44f33331e1ce4efe02dfbeecb14068bfbbc919be7c84a35856599e49f72f013b6eed2dbc23064b9a272bd9f58de6ab33a2ec0539738976978794dc0000a97086d0652bae2e189b7a4b674ba905c1ca9bfb021f7a6a6b3c008703c6cec89a75c49f4f7f13022d18a9846e075cc300da5632f3e9c701ec5c2b9b2756a6f7ce9d9eb18df0f5abe2d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c227cc2a32d7802a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 204, 240, 15, 224, 5, 95, 93, 68, 243, 51, 49, 225, 206, 78, 254, 2, 223, 190, 236, 177, 64, 104, 191, 187, 201, 25, 190, 124, 132, 163, 88, 86, 89, 158, 73, 247, 47, 1, 59, 110, 237, 45, 188, 35, 6, 75, 154, 39, 43, 217, 245, 141, 230, 171, 51, 162, 236, 5, 57, 115, 137, 118, 151, 135, 148, 220, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3363673687982502057, key: EventKey( [ 155, 122, 75, 103, 75, 169, 5, 193, 202, 155, 251, 2, 31, 122, 106, 107, 60, 0, 135, 3, 198, 206, 200, 154, ], ), }, sent_events: EventHandle { count: 3243176119177823349, key: EventKey( [ 169, 132, 110, 7, 92, 195, 0, 218, 86, 50, 243, 233, 199, 1, 236, 92, 43, 155, 39, 86, 166, 247, 206, 157, ], ), }, sequence_number: 15628242729720197534, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a815140dc33fc52da2727d327e6558e58685e3c04e9ca1e2cb8a48e90d0eb07e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99401271d7820ed7a4e7eca5c2bab573eecba23b6317d1f32dd7559f84854e2d2f60a2875afd40d1e57c401f3ae3aee6c50e0fb199bf141a1e890ec01a03839e54e7c0062b04e91174e12c22f3b8f4d7390a6776b18752008f84be40140fca88015fed190e25d6e8aedd06f46d86f7cf97c38a1a311187105907761686f5a3f37b67478b75fc823da87f5f37181dde96102ae0f484cd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cd4452eb7ed7bc64 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 120, 32, 237, 122, 78, 126, 202, 92, 43, 171, 87, 62, 236, 186, 35, 182, 49, 125, 31, 50, 221, 117, 89, 248, 72, 84, 226, 210, 246, 10, 40, 117, 175, 212, 13, 30, 87, 196, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f3ae3aee6c50e0fb199bf141a1e890ec, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a03839e54e7c0062b04e91174e12c22f, }, ), received_events: EventHandle { count: 7743841223626821435, key: EventKey( [ 117, 32, 8, 248, 75, 228, 1, 64, 252, 168, 128, 21, 254, 209, 144, 226, 93, 110, 138, 237, 208, 111, 70, 216, ], ), }, sent_events: EventHandle { count: 1271036783835577455, key: EventKey( [ 113, 5, 144, 119, 97, 104, 111, 90, 63, 55, 182, 116, 120, 183, 95, 200, 35, 218, 135, 245, 243, 113, 129, 221, ], ), }, sequence_number: 15441796454527689193, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a850dc84963d962bf5b2b830ed3e521055917108ad146f3e8c5ac37e7f8822f3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9770ac27aaeee128827d9f2a401773c5dcff0c4df99d0ec5885430eb4e701bd71231ff5009c99d06531763bc40338bab10197fe9e62601846ea61844d1da1bf7629648788f0d48a4bc8587c02d3f631045c2fffb0f0664018f311c806e9bb331e73139f58d97fbdbe8036674d2854ee8d9134adc520029c0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ab362fdb71b78309 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 194, 122, 174, 238, 18, 136, 39, 217, 242, 164, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 773c5dcff0c4df99d0ec5885430eb4e7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd71231ff5009c99d06531763bc40338, }, ), received_events: EventHandle { count: 6945288391651078586, key: EventKey( [ 70, 234, 97, 132, 77, 29, 161, 191, 118, 41, 100, 135, 136, 240, 212, 138, 75, 200, 88, 124, 2, 211, 246, 49, ], ), }, sent_events: EventHandle { count: 4640661109038078980, key: EventKey( [ 243, 17, 200, 6, 233, 187, 51, 30, 115, 19, 159, 88, 217, 127, 189, 190, 128, 54, 103, 77, 40, 84, 238, 141, ], ), }, sequence_number: 836545970562741393, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a951b535c5f7080ee28ee5869554136ddb024f58ff861c2c7053e8f5acbac4c2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101246d8f55db549330c3d3d5ef52b03ff9fe3b7f7103b29e5a25edd72dbc4f4088b3b66f8b4b00014beec6f2ca7d69104420207eaf6102126d52fccd5dd2c70618d0c90523e6c907a236b2308e1e4f098efa9329fb981c9aa7fc3f71472c580f1d18f5d7d8e63838faa454f2f7f2a8446bd1bed5cf2abad140f022090b7b7915e1312101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708341204a33573f980 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 143, 85, 219, 84, 147, 48, 195, 211, 213, 239, 82, 176, 63, 249, 254, 59, 127, 113, 3, 178, 158, 90, 37, 237, 215, 45, 188, 79, 64, 136, 179, 182, 111, 139, 75, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4beec6f2ca7d69104420207eaf610212, }, ), received_events: EventHandle { count: 488590384922645101, key: EventKey( [ 208, 201, 5, 35, 230, 201, 7, 162, 54, 178, 48, 142, 30, 79, 9, 142, 250, 147, 41, 251, 152, 28, 154, 167, ], ), }, sent_events: EventHandle { count: 2093989298950979580, key: EventKey( [ 245, 215, 216, 230, 56, 56, 250, 164, 84, 242, 247, 242, 168, 68, 107, 209, 190, 213, 207, 42, 186, 209, 64, 240, ], ), }, sequence_number: 3594177589117913378, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a9b1459630198c60a3f919c32f337e9d651253b07eaff2aabd30ac5253fb4cef): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ecb015bddd9e4559a36d249bfd8c326c1486fa3915abbcff43b7d9681a0edd0c1f5d9ff7b34bb2a8be023dfdbf1f5171c9cb2b29de231f026f9192afc6a558bb12cf111109d85ce3248f17fc3c9f012df0265496e1a4e8f1be20e752fec5c0100d60f68eda355b7bca60a6788dff0f90072b8c2fc44d8df2018c55097790b156dd849143ae3d7176730438f7d6e620455c87843609c0de70b0e18dce25ac2fc4fd818a15d991ad522a736da31f625d580ea86cbd8034d54a19e7a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080ce5cd5d2b4da1d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 1, 91, 221, 217, 228, 85, 154, 54, 210, 73, 191, 216, 195, 38, 193, 72, 111, 163, 145, 90, 187, 207, 244, 59, 125, 150, 129, 160, 237, 208, 193, 245, 217, 255, 123, 52, 187, 42, 139, 224, 35, 223, 219, 241, 245, 23, 28, 156, 178, 178, 157, 226, 49, 240, 38, 249, 25, 42, 252, 106, 85, 139, 177, 44, 241, 17, 16, 157, 133, 206, 50, 72, 241, 127, 195, 201, 240, 18, 223, 2, 101, 73, 110, 26, 78, 143, 27, 226, 14, 117, 47, 236, 92, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 00d60f68eda355b7bca60a6788dff0f9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2368849719830165618, key: EventKey( [ 197, 80, 151, 121, 11, 21, 109, 216, 73, 20, 58, 227, 215, 23, 103, 48, 67, 143, 125, 110, 98, 4, 85, 200, ], ), }, sent_events: EventHandle { count: 1012156586918953848, key: EventKey( [ 220, 226, 90, 194, 252, 79, 216, 24, 161, 93, 153, 26, 213, 34, 167, 54, 218, 49, 246, 37, 213, 128, 234, 134, ], ), }, sequence_number: 8835676902388914379, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(a9f69cea7b3bf861ab1ffba94cf6f36880d7ca786d5a2d98b3e506b56eecdd20): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125d312e2f823060aae237d6dd8c9ebae1b387c2243f171229d04ee14d237a235a1d0e1b4e8a00001bc3354d032a02b2ad3a448d877a2e2e144fdb3a3fdaec33f18a815c9d5b72e768b23c4d2fb2c2d840832f9f174ae6114a3d783a35a06674e1818b490bff0a8a56dc4ba1c732c344b296e7b0d12dc7c9855ac7e8154dd85fb96052101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70815b3ea9564384d77 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 18, 226, 248, 35, 6, 10, 174, 35, 125, 109, 216, 201, 235, 174, 27, 56, 124, 34, 67, 241, 113, 34, 157, 4, 238, 20, 210, 55, 162, 53, 161, 208, 225, 180, 232, 160, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bc3354d032a02b2ad3a448d877a2e2e1, }, ), received_events: EventHandle { count: 4594708449244478788, key: EventKey( [ 168, 21, 201, 213, 183, 46, 118, 139, 35, 196, 210, 251, 44, 45, 132, 8, 50, 249, 241, 116, 174, 97, 20, 163, ], ), }, sent_events: EventHandle { count: 1751450582081831895, key: EventKey( [ 180, 144, 191, 240, 168, 165, 109, 196, 186, 28, 115, 44, 52, 75, 41, 110, 123, 13, 18, 220, 124, 152, 85, 172, ], ), }, sequence_number: 402785769058763134, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aa4a16cf7bf913f4abf717fa201be8aea20c4d76527670e4755ed7342dc37549): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1da0d34b293d8f437ae25e2b9938a741a56ea158604652873f2e069319a90000b4c8f034d2759479185b6b2e76abc2fc3af9380f2b9bdabe79fb8af61d206d3499a1e72069debcce5c18a297c6a75b8d352329f774edc74bc264673911c4ae184754b1b7b363415896542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ba165a0d371f1ffd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 211, 75, 41, 61, 143, 67, 122, 226, 94, 43, 153, 56, 167, 65, 165, 110, 161, 88, 96, 70, 82, 135, 63, 46, 6, 147, 25, 169, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8760756720834234548, key: EventKey( [ 91, 107, 46, 118, 171, 194, 252, 58, 249, 56, 15, 43, 155, 218, 190, 121, 251, 138, 246, 29, 32, 109, 52, 153, ], ), }, sent_events: EventHandle { count: 6687490160124290977, key: EventKey( [ 162, 151, 198, 167, 91, 141, 53, 35, 41, 247, 116, 237, 199, 75, 194, 100, 103, 57, 17, 196, 174, 24, 71, 84, ], ), }, sequence_number: 6095156183561385905, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab3881bc717818c1dbc200768c780bbd79249f2e09fc2a29e9c109493ca432d9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9680bd241c1fa609e140f6407f20193d29d8f72e22af0043e4abf6dd0c71800f8055e911ac7286e18718c77b9cde8b7670943154060ca7ca58da924acee86cdbfb8a6330e2b2f7c511889e23b1d703bbbcc3992773ecff7511ba19799ab96ab5161f4e9170a796bd1762101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e95fd37c1a61d844 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 210, 65, 193, 250, 96, 158, 20, 15, 100, 7, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 93d29d8f72e22af0043e4abf6dd0c718, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7937813260162434552, key: EventKey( [ 113, 140, 119, 185, 205, 232, 183, 103, 9, 67, 21, 64, 96, 202, 124, 165, 141, 169, 36, 172, 238, 134, 205, 191, ], ), }, sent_events: EventHandle { count: 5871619876152649400, key: EventKey( [ 137, 226, 59, 29, 112, 59, 187, 204, 57, 146, 119, 62, 207, 247, 81, 27, 161, 151, 153, 171, 150, 171, 81, 97, ], ), }, sequence_number: 8561742534212577780, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab6201c79290fb754aacf628d7ec2aabdb0f02dbc606a6ecb2535164ee1c5d4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97508cf90a7154cce2d33016d6bb2d8f1520f7704460579141d630c01269a802b1c8db09a540f26a200f1f119dd5d14850732f842184d83d7ff122ca179a8a568b37b608f3cd4ddd95092af50f787f73c70a43a443818f84243b6ae7fcce51bc5e61da55b864f78d404767f0b350dd21e5e2a769e0aa82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869417f665009b634 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 144, 167, 21, 76, 206, 45, 51, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6d6bb2d8f1520f7704460579141d630c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 269a802b1c8db09a540f26a200f1f119, }, ), received_events: EventHandle { count: 4825662008606350813, key: EventKey( [ 77, 131, 215, 255, 18, 44, 161, 121, 168, 165, 104, 179, 123, 96, 143, 60, 212, 221, 217, 80, 146, 175, 80, 247, ], ), }, sent_events: EventHandle { count: 4054430042472380295, key: EventKey( [ 248, 66, 67, 182, 174, 127, 204, 229, 27, 197, 230, 29, 165, 91, 134, 79, 120, 212, 4, 118, 127, 11, 53, 13, ], ), }, sequence_number: 12108664778493140690, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ab93b1112fe4608996a8bc8f3092f3cd21819f56586820547c5ef66ac70439a3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95b0e0b025c228def7828294697fa03010000930f9990eeb14c5a183b28f0b8eba29ac6c05bb617f216b0a31b41c6579fdab10b524fe0f1356ce17c18717637d679ba709e2999f330139fd63bf72999c6dbbcd8e885c582703b0072882101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089460fa7f4707a5db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 2, 92, 34, 141, 239, 120, 40, 41, 70, 151, 250, 3, 1, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6506771199829806995, key: EventKey( [ 59, 40, 240, 184, 235, 162, 154, 198, 192, 91, 182, 23, 242, 22, 176, 163, 27, 65, 198, 87, 159, 218, 177, 11, ], ), }, sent_events: EventHandle { count: 8998592509410037586, key: EventKey( [ 113, 118, 55, 214, 121, 186, 112, 158, 41, 153, 243, 48, 19, 159, 214, 59, 247, 41, 153, 198, 219, 188, 216, 232, ], ), }, sequence_number: 9831921191793902981, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(abb55f2fbcb5bf97af217c33301fe0ced2680054b2b5536af71d234c2700d73a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a012d53f79b41da04bb63d055b11c0d55e892fcad93b146591a1ccd092d52bbcf54bb9e97de90fc8c1fd44d1ea41369015ad76658110f2d4ae44729f5339fa89c016ed564b7df74edba049afabcdf2943fdbe34755808c68c2d189a51647215adad69cf4cbfe5d11a4b983e7f9eee92422d90f81bf9fcf0abc44b18c6779fb746aa083a660e5849961079bf899f152c16fab1613f819361991619142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e5b22775905f044a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 247, 155, 65, 218, 4, 187, 99, 208, 85, 177, 28, 13, 85, 232, 146, 252, 173, 147, 177, 70, 89, 26, 28, 205, 9, 45, 82, 187, 207, 84, 187, 158, 151, 222, 144, 252, 140, 31, 212, 77, 30, 164, 19, 105, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ad76658110f2d4ae44729f5339fa89c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6ed564b7df74edba049afabcdf2943fd, }, ), received_events: EventHandle { count: 3282215967592363198, key: EventKey( [ 154, 81, 100, 114, 21, 173, 173, 105, 207, 76, 191, 229, 209, 26, 75, 152, 62, 127, 158, 238, 146, 66, 45, 144, ], ), }, sent_events: EventHandle { count: 5459677699804568568, key: EventKey( [ 198, 119, 159, 183, 70, 170, 8, 58, 102, 14, 88, 73, 150, 16, 121, 191, 137, 159, 21, 44, 22, 250, 177, 97, ], ), }, sequence_number: 1448213603199189311, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(abc7b6f6d8988ec30b4012e8630a90bfff8823d17a7e995c0cf9d43d3bbdbd38): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998013b366a294bb5b6dd7469047e5be4fde3f0b938a2beafbb6a7840b6af2bda2d8d90fc9616ff1b0c34dda556b4bd2b0b4f621bf73397b27fc8bdb32d960001394b2686d3f7da39a31ea595d5c382179e96cc5b8107b341184e6cfc69524b12888af57dcadb1c71d84327346da0e045eb92c5b5bf05ac966418fe0cd5b90467f127ff7cba6ac52c561ddbdb743c86491b9c7d94ad9b8c4d80ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70861e21991277063c6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 106, 41, 75, 181, 182, 221, 116, 105, 4, 126, 91, 228, 253, 227, 240, 185, 56, 162, 190, 175, 187, 106, 120, 64, 182, 175, 43, 218, 45, 141, 144, 252, 150, 22, 255, 27, 12, 52, 221, 165, 86, 180, 189, 43, 11, 79, 98, 27, 247, 51, 151, 178, 127, 200, 189, 179, 45, 150, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 394b2686d3f7da39a31ea595d5c38217, }, ), received_events: EventHandle { count: 4734135885468833438, key: EventKey( [ 78, 108, 252, 105, 82, 75, 18, 136, 138, 245, 125, 202, 219, 28, 113, 216, 67, 39, 52, 109, 160, 224, 69, 235, ], ), }, sent_events: EventHandle { count: 7248169790990566802, key: EventKey( [ 254, 12, 213, 185, 4, 103, 241, 39, 255, 124, 186, 106, 197, 44, 86, 29, 219, 219, 116, 60, 134, 73, 27, 156, ], ), }, sequence_number: 18410800542993192061, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ac4cccb85a2fc3433b79f801af127293a7d73cc31b25bb633a51002db9235e62): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98601299f66fa5f899e52da31e311658dee079b8ca34cd5190dce94fffab86a8a2a61b34e9d0f404fcd936e1501961aea28c0ac41c25f87ba51b0c168c300fae9d76503f7757c18ab96fcfc5e7ada0cc2587c05d4b138008ad2bccbdda5f97b906dd4c96de2714618b6a21219809059b8de8caa162fcb58f053c8bb8015ea11e6db05790719428c2e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083c7474a61eef8ecd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 159, 102, 250, 95, 137, 158, 82, 218, 49, 227, 17, 101, 141, 238, 7, 155, 140, 163, 76, 213, 25, 13, 206, 148, 255, 250, 184, 106, 138, 42, 97, 179, 78, 157, 15, 64, 79, 205, 147, 110, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 961aea28c0ac41c25f87ba51b0c168c3, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8968345826943822330, key: EventKey( [ 171, 150, 252, 252, 94, 122, 218, 12, 194, 88, 124, 5, 212, 177, 56, 0, 138, 210, 188, 203, 221, 165, 249, 123, ], ), }, sent_events: EventHandle { count: 5076087216188714384, key: EventKey( [ 182, 162, 18, 25, 128, 144, 89, 184, 222, 140, 170, 22, 47, 203, 88, 240, 83, 200, 187, 128, 21, 234, 17, 230, ], ), }, sequence_number: 3354128497751164379, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(acd6cb2f8eeb6a44dc23efef9a3d3d6557d1bc387368da0b233a790f5175948a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964079311dd4f8c44bb01a4c60abb6cc20952c48f600dfef3142b003d3a6bc2515a572618e5bf7c65ccdc261bbd1b8d30ea0593270d0a2afc0856c446a474dcd6fc6c1472181bc2eb76e1e57d4fbb43c6cb989360178c620a8f223c42cda2dd966b455b2eeb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a5d96c53e748237 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 17, 221, 79, 140, 68, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a4c60abb6cc20952c48f600dfef3142b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2762776203615746621, key: EventKey( [ 229, 191, 124, 101, 204, 220, 38, 27, 189, 27, 141, 48, 234, 5, 147, 39, 13, 10, 42, 252, 8, 86, 196, 70, ], ), }, sent_events: EventHandle { count: 8220315053050328228, key: EventKey( [ 27, 194, 235, 118, 225, 229, 125, 79, 187, 67, 198, 203, 152, 147, 96, 23, 140, 98, 10, 143, 34, 60, 66, 205, ], ), }, sequence_number: 16946582801557675426, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(acf70b393a98ebcc115f43f6f946fec96ff3f030688c62295d7796ee69274d8e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8013babf73e8e7b78a0a29fb945f37a4ee327ff10ffc6c8be678e98607fcc60cd52ecd17af1f355e8339521bc6d02f6c159d76e94ca8c303042f038787b018d7d6a003b4206c11281a2a948de31a801fd4f6c14428e0c208450852c312eea7c2a0df8ffff11fe521859cf17109d539fda09374be315b806be2c705b723be37ecd40c9a57f40fde62c18b4a921018b0b6b2fc29585d554552edfdb50a28a9940f11c5358468c1011ddc22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70813525831626fd217 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 247, 62, 142, 123, 120, 160, 162, 159, 185, 69, 243, 122, 78, 227, 39, 255, 16, 255, 198, 200, 190, 103, 142, 152, 96, 127, 204, 96, 205, 82, 236, 209, 122, 241, 243, 85, 232, 51, 149, 33, 188, 109, 2, 246, 193, 89, 215, 110, 148, 202, 140, 48, 48, 66, 240, 56, 120, 123, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8d7d6a003b4206c11281a2a948de31a8, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fd4f6c14428e0c208450852c312eea7c, }, ), received_events: EventHandle { count: 5980237146403376426, key: EventKey( [ 89, 207, 23, 16, 157, 83, 159, 218, 9, 55, 75, 227, 21, 184, 6, 190, 44, 112, 91, 114, 59, 227, 126, 205, ], ), }, sent_events: EventHandle { count: 3235551835773585728, key: EventKey( [ 180, 169, 33, 1, 139, 11, 107, 47, 194, 149, 133, 213, 84, 85, 46, 223, 219, 80, 162, 138, 153, 64, 241, 28, ], ), }, sequence_number: 14041397975981643859, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ad3a3de8d4909465bb76f4b54194988360f3be8cacd98c3dec447b0e52c25205): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974179077b47136904d28c91435393fba922e65fa39d9629ac10001a4601a9df8198cd56b82de0a5e271155a1cca03fdf41c86a18a8682c0509431fcb0a8908eb31ded1a5e72992489e9b41d1d223138d2a921d34180f9d16fba629d7812224d48910d6a26857e63f7644cd25b725719ac7a02d6ca42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f28a48eba36c00a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 144, 119, 180, 113, 54, 144, 77, 40, 201, 20, 53, 57, 63, 186, 146, 46, 101, 250, 57, 217, 98, 154, 193, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a4601a9df8198cd56b82de0a5e271155, }, ), received_events: EventHandle { count: 7694472390463507617, key: EventKey( [ 168, 104, 44, 5, 9, 67, 31, 203, 10, 137, 8, 235, 49, 222, 209, 165, 231, 41, 146, 72, 158, 155, 65, 209, ], ), }, sent_events: EventHandle { count: 3755318375749985234, key: EventKey( [ 15, 157, 22, 251, 166, 41, 215, 129, 34, 36, 212, 137, 16, 214, 162, 104, 87, 230, 63, 118, 68, 205, 37, 183, ], ), }, sequence_number: 11847894888271737125, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ad65eabaa678740292042ce74cc61678a4fd819cb05753fa5942c4c22466ce52): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139dd8e149ca66b23278b9df8a90222861a41affc7b6d5a0fd50a19768ec449b9bbece7cbe65446d77b7c6922ef9f0759eb5677d3da5c53827b5701058231cfcef61d92b6fb61386201086a00db61e2f6a81d0e0718d2ca84e1d2fe016a00892e331dc059845410e2111715ee231e480baac706f23218c5494f05d3378fe57f05e53b1ae9d21cdaff95505b6e657e466840894068688e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f1ebc5d63f0f4cb0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 142, 20, 156, 166, 107, 35, 39, 139, 157, 248, 169, 2, 34, 134, 26, 65, 175, 252, 123, 109, 90, 15, 213, 10, 25, 118, 142, 196, 73, 185, 187, 236, 231, 203, 230, 84, 70, 215, 123, 124, 105, 34, 239, 159, 7, 89, 235, 86, 119, 211, 218, 92, 83, 130, 123, 87, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 058231cfcef61d92b6fb61386201086a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 508376419473187291, key: EventKey( [ 210, 202, 132, 225, 210, 254, 1, 106, 0, 137, 46, 51, 29, 192, 89, 132, 84, 16, 226, 17, 23, 21, 238, 35, ], ), }, sent_events: EventHandle { count: 3671004100881500190, key: EventKey( [ 197, 73, 79, 5, 211, 55, 143, 229, 127, 5, 229, 59, 26, 233, 210, 28, 218, 255, 149, 80, 91, 110, 101, 126, ], ), }, sequence_number: 10261566377353570374, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ada80a27e1c313b24bb627e83aafb2b5b5c3e09412ec81206beb9e64e142ae67): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001536a38d93706b0ea56b00bfb1c46a86997702dcaeddd042733a4f6a120bfea981522f9ac3fc934e0a77c1c1e32a9197e6386c4dfa3cabbe352cf2bcdeb774685413673fb75926fed717b1c68fa5b1d20fbd8de830000c91535648453952318659603ab64a7d6fe1416657be9925686dd2120e6f3f2830035a64a8cfb158a6d18762a65b903ee4e2fbdd9b3eaad0f0c8dfe9d6285c819852d6fa76b57954e25c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0a21dd335247af5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 56, 217, 55, 6, 176, 234, 86, 176, 11, 251, 28, 70, 168, 105, 151, 112, 45, 202, 237, 221, 4, 39, 51, 164, 246, 161, 32, 191, 234, 152, 21, 34, 249, 172, 63, 201, 52, 224, 167, 124, 28, 30, 50, 169, 25, 126, 99, 134, 196, 223, 163, 202, 187, 227, 82, 207, 43, 205, 235, 119, 70, 133, 65, 54, 115, 251, 117, 146, 111, 237, 113, 123, 28, 104, 250, 91, 29, 32, 251, 216, 222, 131, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2564047390939354569, key: EventKey( [ 101, 150, 3, 171, 100, 167, 214, 254, 20, 22, 101, 123, 233, 146, 86, 134, 221, 33, 32, 230, 243, 242, 131, 0, ], ), }, sent_events: EventHandle { count: 7893145467054892597, key: EventKey( [ 118, 42, 101, 185, 3, 238, 78, 47, 189, 217, 179, 234, 173, 15, 12, 141, 254, 157, 98, 133, 200, 25, 133, 45, ], ), }, sequence_number: 13989674220820080495, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(adf85e39acd4e8ed4713512b20337c07e29cd8f82d3dda7c530df90e235fe337): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820135a6ef5893386034d3d3e64e5fe42887631a1e676028c8942666811d6cbe67067929a65744369ce7fab1e03a465dfb20b0021ca757390000c5a1fa9c2144f15f18427ccf5529f341799e8f5a2f4f8870b15f5e86f3000780fa0c8266dea0bfd874187e6522e1149832757bf50fb37129659ebd06a73d7ab329c66271f2d4a4651ac92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a8f21a77188b1c4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 166, 239, 88, 147, 56, 96, 52, 211, 211, 230, 78, 95, 228, 40, 135, 99, 26, 30, 103, 96, 40, 200, 148, 38, 102, 129, 29, 108, 190, 103, 6, 121, 41, 166, 87, 68, 54, 156, 231, 250, 177, 224, 58, 70, 93, 251, 32, 176, 2, 28, 167, 87, 57, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6913381814148702661, key: EventKey( [ 66, 124, 207, 85, 41, 243, 65, 121, 158, 143, 90, 47, 79, 136, 112, 177, 95, 94, 134, 243, 0, 7, 128, 250, ], ), }, sent_events: EventHandle { count: 8419690201016074764, key: EventKey( [ 126, 101, 34, 225, 20, 152, 50, 117, 123, 245, 15, 179, 113, 41, 101, 158, 189, 6, 167, 61, 122, 179, 41, 198, ], ), }, sequence_number: 14491006509639692642, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ae4f3f6f168637ddb578e9ba61ca8c42934419c852406482c5860f4fa90d09f4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a8d7d0fc69bd57e2e066071c42a0a19b4aa65a86f13f7e01c78bef8709ce95897f3208b654ac8978a268da278a43a1fad1e5cf188c62b76fffdc7013c0f0a63629f1a69cb7e923657422a99005bdb5e3e28a4c32118a5b3314f19f32ac2b4691a08ea1bdb78e97f472ea08f4bba3935fcdde36dcf2e18cdc6b07a07b0df7d9dd4de7a487f43f00acb733557dfeb3bc760a8341f679cfc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083682511862002604 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 125, 15, 198, 155, 213, 126, 46, 6, 96, 113, 196, 42, 10, 25, 180, 170, 101, 168, 111, 19, 247, 224, 28, 120, 190, 248, 112, 156, 233, 88, 151, 243, 32, 139, 101, 74, 200, 151, 138, 38, 141, 162, 120, 164, 58, 31, 173, 30, 92, 241, 136, 198, 43, 118, 255, 253, 199, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3c0f0a63629f1a69cb7e923657422a99, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2432968716462250843, key: EventKey( [ 165, 179, 49, 79, 25, 243, 42, 194, 180, 105, 26, 8, 234, 27, 219, 120, 233, 127, 71, 46, 160, 143, 75, 186, ], ), }, sent_events: EventHandle { count: 3373035471373088057, key: EventKey( [ 205, 198, 176, 122, 7, 176, 223, 125, 157, 212, 222, 122, 72, 127, 67, 240, 10, 203, 115, 53, 87, 223, 235, 59, ], ), }, sequence_number: 18202537177649799367, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ae96153d5225b53f3da7431236d8c8053b8f2cadeea22cbc9b0117fe8ca56e4d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e0131257343101d37c047f196ece82a36e21ccbf43db9b7ce56db3a0c70930ba5bd8b504ce895f6ff06e5ef50cbeb6b193ea25101fd6ade98be71bc3e1b86024e6d6594d700874e5ddb06c23f291850b2341f1098c77ccd06919e6974303b00b7c64a1e44f17deb3ee63029c28a7c1807c40b301118a55d9013747b346ad28cb85c9bf2d7a5ae7037bc769965b23cbe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e684356ed0aa4ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 37, 115, 67, 16, 29, 55, 192, 71, 241, 150, 236, 232, 42, 54, 226, 28, 203, 244, 61, 185, 183, 206, 86, 219, 58, 12, 112, 147, 11, 165, 189, 139, 80, 76, 232, 149, 246, 255, 6, 229, 239, 80, 203, 235, 107, 25, 62, 162, 81, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: fd6ade98be71bc3e1b86024e6d6594d7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2972307613793734279, key: EventKey( [ 80, 178, 52, 31, 16, 152, 199, 124, 205, 6, 145, 158, 105, 116, 48, 59, 0, 183, 198, 74, 30, 68, 241, 125, ], ), }, sent_events: EventHandle { count: 8974198689658978027, key: EventKey( [ 7, 196, 11, 48, 17, 24, 165, 93, 144, 19, 116, 123, 52, 106, 210, 140, 184, 92, 155, 242, 215, 165, 174, 112, ], ), }, sequence_number: 13708027515245083703, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(aee36771bb41a6e44a91c2623839ed4d45b5239945bfb12dac02629e5f86693b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f87db14fb2db8ff987cc7267b654e39dff8aeef9b53faa420342224380b350e000138c19aacb41807275fcbc7362583106ff596b512cd10432218b07dd3d769e62a3cffcaf5a9e8a143ac4dc8efe00c6ccc0f75233257cc55df0d18ae88d00268a0566419cfb82e0035d066b72afb56ff4a9dbc5fd02928ee7044782101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851f50379eb093d75 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 135, 219, 20, 251, 45, 184, 255, 152, 124, 199, 38, 123, 101, 78, 57, 223, 248, 174, 239, 155, 83, 250, 164, 32, 52, 34, 36, 56, 11, 53, 14, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 38c19aacb41807275fcbc7362583106f, }, ), received_events: EventHandle { count: 2468835493697394421, key: EventKey( [ 176, 125, 211, 215, 105, 230, 42, 60, 255, 202, 245, 169, 232, 161, 67, 172, 77, 200, 239, 224, 12, 108, 204, 15, ], ), }, sent_events: EventHandle { count: 999611978424132469, key: EventKey( [ 174, 136, 208, 2, 104, 160, 86, 100, 25, 207, 184, 46, 0, 53, 208, 102, 183, 42, 251, 86, 255, 74, 157, 188, ], ), }, sequence_number: 8666175751146033247, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(af9e8c8a2e4713b0e5628eda1bcb8591018e40cf1ba6cb298e2de784597706a4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97023161c0e112896bdaf0490939347d235f67b45eeeecd4f4d0bbfa4707f15f028a4bcc171000082428fb79318901918b0b6e063346bfe4f80552a0d2661eafc8d6b754db873a780b90d5bae82d2746918d6208de77a0c8e888587d389e334296900674f49c692e43a6eb5d26403067b892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a3e60c694fc643a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 22, 28, 14, 17, 40, 150, 189, 175, 4, 144, 147, 147, 71, 210, 53, 246, 123, 69, 238, 238, 205, 79, 77, 11, 191, 164, 112, 127, 21, 240, 40, 164, 188, 193, 113, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1841999270313411202, key: EventKey( [ 176, 182, 224, 99, 52, 107, 254, 79, 128, 85, 42, 13, 38, 97, 234, 252, 141, 107, 117, 77, 184, 115, 167, 128, ], ), }, sent_events: EventHandle { count: 7598929929993653689, key: EventKey( [ 214, 32, 141, 231, 122, 12, 142, 136, 133, 135, 211, 137, 227, 52, 41, 105, 0, 103, 79, 73, 198, 146, 228, 58, ], ), }, sequence_number: 9906518416977737070, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b01563cf866434fa8f47f78db39580b339ab4087c602fc5798be9c4a8af859d1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae01513be7b342661a966c5a4eddb56a72b640d196875b6a033ec7700e70a70c86759e2e7db2a812822eddc1f902d38034dc48b2453907fa4e95a729d38cdf1bfb45cdcd780bd837d2906169404e11ad4c6e6e6201ae06890b09399d6659315a13a2ea5a2500ad452e140ef5ee0c18ce0743eeb3efee4de73a28f875f07e779cc92e7a83330a0490437063a7a02b4d18df6238169ea0e967eb29d27eab0dca3831da2c34a3579da2342d432c055adb712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ea37f6e3376a9369 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 59, 231, 179, 66, 102, 26, 150, 108, 90, 78, 221, 181, 106, 114, 182, 64, 209, 150, 135, 91, 106, 3, 62, 199, 112, 14, 112, 167, 12, 134, 117, 158, 46, 125, 178, 168, 18, 130, 46, 221, 193, 249, 2, 211, 128, 52, 220, 72, 178, 69, 57, 7, 250, 78, 149, 167, 41, 211, 140, 223, 27, 251, 69, 205, 205, 120, 11, 216, 55, 210, 144, 97, 105, 64, 78, 17, 173, 76, 110, 110, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ae06890b09399d6659315a13a2ea5a25, }, ), key_rotation_capability: None, received_events: EventHandle { count: 931951613729195437, key: EventKey( [ 206, 7, 67, 238, 179, 239, 238, 77, 231, 58, 40, 248, 117, 240, 126, 119, 156, 201, 46, 122, 131, 51, 10, 4, ], ), }, sent_events: EventHandle { count: 5560714805707293584, key: EventKey( [ 223, 98, 56, 22, 158, 160, 233, 103, 235, 41, 210, 126, 171, 13, 202, 56, 49, 218, 44, 52, 163, 87, 157, 162, ], ), }, sequence_number: 8204250124449426740, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b0fc5df523d8fd05ca7bbbaf77901902cbc69a89d35eda3ba144f2984dcfafd6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b60159d9ee196beacf705eae7855fcf34edad1185afc60c3f3239da95396073e428b6c8a567c44c14ea87ba437bd53887db47fd2032585beb088ec8c21083d03d0900fe8b84ca6f770207bca1a74230f1aa6e87e2566c48fbb6d226d01c9642adb364256d48bd6d6b87404138900104d4d074790a04e18551623d5ca7691cc7392239424b6c8c64e5e62e2d0c2ab5523b2d7455a97e33a18fee27789fe08248552734dc85dfba19397c980391ccb73cc69c8cbc0bf56a4af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc3bed9288ca5dba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 217, 238, 25, 107, 234, 207, 112, 94, 174, 120, 85, 252, 243, 78, 218, 209, 24, 90, 252, 96, 195, 243, 35, 157, 169, 83, 150, 7, 62, 66, 139, 108, 138, 86, 124, 68, 193, 78, 168, 123, 164, 55, 189, 83, 136, 125, 180, 127, 210, 3, 37, 133, 190, 176, 136, 236, 140, 33, 8, 61, 3, 208, 144, 15, 232, 184, 76, 166, 247, 112, 32, 123, 202, 26, 116, 35, 15, 26, 166, 232, 126, 37, 102, 196, 143, 187, 109, 34, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c9642adb364256d48bd6d6b874041389, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5665686965971668240, key: EventKey( [ 85, 22, 35, 213, 202, 118, 145, 204, 115, 146, 35, 148, 36, 182, 200, 198, 78, 94, 98, 226, 208, 194, 171, 85, ], ), }, sent_events: EventHandle { count: 4243401687887753763, key: EventKey( [ 254, 226, 119, 137, 254, 8, 36, 133, 82, 115, 77, 200, 93, 251, 161, 147, 151, 201, 128, 57, 28, 203, 115, 204, ], ), }, sequence_number: 12656336234391259241, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b1ee389d79b91069d39e14b8e596b7932b25e74d10bb8ee22294d555339a6d3f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c588b3b5b31d73171323b834d6f92d2d601dc45e7c9a1df2fc082ca4e6eddbed7714f311810689c21500c53bcba864022c2c4215d5aaa4a1ed98e7a3501f196f2436075466312523a9424b8e7a1004498c2fbd5f4457b182ddc90cda41446775b8c7b0433531e8b4c34eb62a9038f52e2c37c92f4e3e07218a0cb5c7131f248d279444596e385b1e0cb18d0d41657ada3e4ef0e9fac3a42632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c204160c975eacc3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 88, 139, 59, 91, 49, 215, 49, 113, 50, 59, 131, 77, 111, 146, 210, 214, 1, 220, 69, 231, 201, 161, 223, 47, 192, 130, 202, 78, 110, 221, 190, 215, 113, 79, 49, 24, 16, 104, 156, 33, 80, 12, 83, 188, 186, 134, 64, 34, 194, 196, 33, 93, 90, 170, 74, 30, 217, 142, 122, 53, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f196f2436075466312523a9424b8e7a1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8882775039947216964, key: EventKey( [ 45, 220, 144, 205, 164, 20, 70, 119, 91, 140, 123, 4, 51, 83, 30, 139, 76, 52, 235, 98, 169, 3, 143, 82, ], ), }, sent_events: EventHandle { count: 8277866754676147170, key: EventKey( [ 160, 203, 92, 113, 49, 242, 72, 210, 121, 68, 69, 150, 227, 133, 177, 224, 203, 24, 208, 212, 22, 87, 173, 163, ], ), }, sequence_number: 7152343671295111140, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b21ac31a7d3eec8eb10d0a5fcd24a37cef156d067442f246d9216fb9b3a37565): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c1f4b3395ed9201f499e8e91bc37c73158bcd892501256a6f0026b1bdaf3d15810001cf16f388949b986a26a3a2ac8d279aa83effc5fd3667c819186dcd467d91996edb6e5debccd20e528ae656b36064098ce593a4cac301111c0418b9b437f1ccdbf285129891315ae1921bf43437ec16198dca27114bc10b0f61502101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70871f53216c8b783df Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 51, 149, 237, 146, 1, 244, 153, 232, 233, 27, 195, 124, 115, 21, 139, 205, 137, 37, 1, 37, 106, 111, 0, 38, 177, 189, 175, 61, 21, 129, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf16f388949b986a26a3a2ac8d279aa8, }, ), received_events: EventHandle { count: 1857848332173836094, key: EventKey( [ 109, 205, 70, 125, 145, 153, 110, 219, 110, 93, 235, 204, 210, 14, 82, 138, 230, 86, 179, 96, 100, 9, 140, 229, ], ), }, sent_events: EventHandle { count: 296130374777087123, key: EventKey( [ 185, 180, 55, 241, 204, 219, 242, 133, 18, 152, 145, 49, 90, 225, 146, 27, 244, 52, 55, 236, 22, 25, 141, 202, ], ), }, sequence_number: 5791927138937147687, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b29894e1ff38398da4c84bb04a74a54764c75bfed03f481ca540da7014aec9cf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c013f7f75dbfbb915c50c14dcaa5a7dfa6f5e05684db021be86eda4f4dc978c4fe77a8169b27bf09b83b37c87aa8271216a4cc6ff05a8751e5783edf53a65b99a2b0001fc1bb68aef986aea8d54a2b1051f1eb318d62089ac0e944f181fe23aa34d044f31b586ab98c0aee3bc69735220f0417bce93f45874460d0f62181fe9cdcffc1ae801914a9d0ff350ad53d6240a2236c9946e1160ab4e4b633eab2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805aa29ae39118656 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 127, 117, 219, 251, 185, 21, 197, 12, 20, 220, 170, 90, 125, 250, 111, 94, 5, 104, 77, 176, 33, 190, 134, 237, 164, 244, 220, 151, 140, 79, 231, 122, 129, 105, 178, 123, 240, 155, 131, 179, 124, 135, 170, 130, 113, 33, 106, 76, 198, 255, 5, 168, 117, 30, 87, 131, 237, 245, 58, 101, 185, 154, 43, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc1bb68aef986aea8d54a2b1051f1eb3, }, ), received_events: EventHandle { count: 5734224359747278360, key: EventKey( [ 31, 226, 58, 163, 77, 4, 79, 49, 181, 134, 171, 152, 192, 174, 227, 188, 105, 115, 82, 32, 240, 65, 123, 206, ], ), }, sent_events: EventHandle { count: 7065880936618456211, key: EventKey( [ 31, 233, 205, 207, 252, 26, 232, 1, 145, 74, 157, 15, 243, 80, 173, 83, 214, 36, 10, 34, 54, 201, 148, 110, ], ), }, sequence_number: 12339409204135288849, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b2cf961ae6c1fac383f3603954d8ed03951e1a1dab5aed5c8759e8c64b42b3c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d10b72a97625e2992c7df810958cc084b2c0000e18879e96977041418a617a81e3b64c6ce373b86a9fbba965b30381ccdb389fd39f3e50fb94956a83d1821190b86488baa670a55cc330fc585511478e5a81c82e5369e6b98f0de3fdff62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084c52de1f6cb4572a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 42, 151, 98, 94, 41, 146, 199, 223, 129, 9, 88, 204, 8, 75, 44, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1442409077437728993, key: EventKey( [ 166, 23, 168, 30, 59, 100, 198, 206, 55, 59, 134, 169, 251, 186, 150, 91, 48, 56, 28, 205, 179, 137, 253, 57, ], ), }, sent_events: EventHandle { count: 4442895907038422515, key: EventKey( [ 33, 25, 11, 134, 72, 139, 170, 103, 10, 85, 204, 51, 15, 197, 133, 81, 20, 120, 229, 168, 28, 130, 229, 54, ], ), }, sequence_number: 17789007279888559006, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b43fb7d6c4e6535590c9bbb803ef26f10fa1b6472640a20edf25c77bc9984711): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8014b2ebcda55a6b64cf95656630228b16a5f64dccd6640c295509cde7d6338582c45790e8b253b8071b2937f9d63749971cdc7ba0ccd804464dee963388fe9caa8e2fa3e617e64c53731bbbe950109089f12c8d372e4b58fc43441b4e40f0120ab9229ce51f3ba4d70ee30d27bf9ad41353d5a1a54c601188902b2de7eefd1e9167aa2050968772baedda8e20adc764dcb2c594a30f2153718956a1e843633a2fba4f56c11f4fb6ca0323e0fc70173f86b3753bd71df8e5fd62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70805b7ab75d56f04ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 188, 218, 85, 166, 182, 76, 249, 86, 86, 99, 2, 40, 177, 106, 95, 100, 220, 205, 102, 64, 194, 149, 80, 156, 222, 125, 99, 56, 88, 44, 69, 121, 14, 139, 37, 59, 128, 113, 178, 147, 127, 157, 99, 116, 153, 113, 205, 199, 186, 12, 205, 128, 68, 100, 222, 233, 99, 56, 143, 233, 202, 168, 226, 250, 62, 97, 126, 100, 197, 55, 49, 187, 190, 149, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 09089f12c8d372e4b58fc43441b4e40f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 20ab9229ce51f3ba4d70ee30d27bf9ad, }, ), received_events: EventHandle { count: 127882111586481473, key: EventKey( [ 137, 2, 178, 222, 126, 239, 209, 233, 22, 122, 162, 5, 9, 104, 119, 43, 174, 221, 168, 226, 10, 220, 118, 77, ], ), }, sent_events: EventHandle { count: 3969344935816670411, key: EventKey( [ 149, 106, 30, 132, 54, 51, 162, 251, 164, 245, 108, 17, 244, 251, 108, 160, 50, 62, 15, 199, 1, 115, 248, 107, ], ), }, sequence_number: 15447222337241174839, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b485f8df7df34b8e6a53b5847ae86a826e3210929bfdaf1f8b1c40d3c9a88a4c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95205acd442949600008ec3ed32311705701840696fe105dee6ce80553c8702962666517112049982966e1aeed983cb1bf54318a9fb3bbf7b7d6364c655efddbe52f15df94a29989d02c8a8061b22747ca4f69e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708da9b9533561381af Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 212, 66, 148, 150, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8071883407206761358, key: EventKey( [ 64, 105, 111, 225, 5, 222, 230, 206, 128, 85, 60, 135, 2, 150, 38, 102, 81, 113, 18, 4, 153, 130, 150, 110, ], ), }, sent_events: EventHandle { count: 4896850730739691034, key: EventKey( [ 169, 251, 59, 191, 123, 125, 99, 100, 198, 85, 239, 221, 190, 82, 241, 93, 249, 74, 41, 152, 157, 2, 200, 168, ], ), }, sequence_number: 11454523556694727430, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b4fd8865283cf3fb80217dafe3d6a79abf828a9617a22ba7055c029f5bf91c4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d20653d165e400423f85aa5d7e64a3c424a2db8b3feb8d0bee9384a6c5fe8d871d10186e56f64503e1455de64aac56e02da8e00ebeba59041ac6812189792b7497ca1f1e8b2fad153578acb39c525700c10f0886193cfc8b3d549be51184e2f5c5632cff237e435ed3e2de0539735e5c70b3da3160b45b27043179a40642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083576e67bf903e21f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 61, 22, 94, 64, 4, 35, 248, 90, 165, 215, 230, 74, 60, 66, 74, 45, 184, 179, 254, 184, 208, 190, 233, 56, 74, 108, 95, 232, 216, 113, 209, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 86e56f64503e1455de64aac56e02da8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1326499487860255723, key: EventKey( [ 151, 146, 183, 73, 124, 161, 241, 232, 178, 250, 209, 83, 87, 138, 203, 57, 197, 37, 112, 12, 16, 240, 136, 97, ], ), }, sent_events: EventHandle { count: 5890226544840331155, key: EventKey( [ 78, 47, 92, 86, 50, 207, 242, 55, 228, 53, 237, 62, 45, 224, 83, 151, 53, 229, 199, 11, 61, 163, 22, 11, ], ), }, sequence_number: 7223943227008660037, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b5658880811fcfed5aa2a6b14b0eb790e76ec75007c103cda3af3b0bd13d7f2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1d5b5c5183726e8292610ec113a99302c3b3b6789b141b9685dcc67101f20000a9f6cdcd48b2390418a04f91818545f235712f868ace4a4debe4245e9b8c3750fae220465f0a462e49180c2f4f4906a84c3fd08a5fe713648e9fed650f65a8f8c7b111b31dd7cc551c282101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b772aa5884c8c794 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 91, 92, 81, 131, 114, 110, 130, 146, 97, 14, 193, 19, 169, 147, 2, 195, 179, 182, 120, 155, 20, 27, 150, 133, 220, 198, 113, 1, 242, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 304470475584435881, key: EventKey( [ 160, 79, 145, 129, 133, 69, 242, 53, 113, 47, 134, 138, 206, 74, 77, 235, 228, 36, 94, 155, 140, 55, 80, 250, ], ), }, sent_events: EventHandle { count: 5273229224059478242, key: EventKey( [ 12, 47, 79, 73, 6, 168, 76, 63, 208, 138, 95, 231, 19, 100, 142, 159, 237, 101, 15, 101, 168, 248, 199, 177, ], ), }, sequence_number: 2890279399135752977, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b6144d30f560d9265ffe5d1d7c132ff6ad7ac2869639ba34a30d52c13b1f6f95): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a1d1e11223a91d6842151a545908d7647c1990ba49697123cb064f3405ba10000ee28100e8b63c671186804e5956dc45510aea429794f45ba6e4f17935095a16d4753c00f4a3b5ba766187ac2955606b176a0ac3da690be4aece7f78d90a8e52e1aea60685cf2003bf6902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708219c7ea41fa65426 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 30, 17, 34, 58, 145, 214, 132, 33, 81, 165, 69, 144, 141, 118, 71, 193, 153, 11, 164, 150, 151, 18, 60, 176, 100, 243, 64, 91, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8198349620562110702, key: EventKey( [ 104, 4, 229, 149, 109, 196, 85, 16, 174, 164, 41, 121, 79, 69, 186, 110, 79, 23, 147, 80, 149, 161, 109, 71, ], ), }, sent_events: EventHandle { count: 7396981223183073363, key: EventKey( [ 122, 194, 149, 86, 6, 177, 118, 160, 172, 61, 166, 144, 190, 74, 236, 231, 247, 141, 144, 168, 229, 46, 26, 234, ], ), }, sequence_number: 10445601260984625248, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b629ecd6d39966de60641895cb29a6a440221c457d4686e9377f656c1c0009e4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c973260dd81cae4d16bf9c4f10e3604a005d643ba45fb29f9a086937704f1b998d040538501dba60210000d7e0c7e23c8eb61718946f17b1d705bf445318f34e194e542df0f2e791ab3eeee662a5123cfd097d1218539656eeb815edfeaf2a20d05122f08896bea8ac4b413c79823745a01fef8e6a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085cafe946042ecd13 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 216, 28, 174, 77, 22, 191, 156, 79, 16, 227, 96, 74, 0, 93, 100, 59, 164, 95, 178, 159, 154, 8, 105, 55, 112, 79, 27, 153, 141, 4, 5, 56, 80, 29, 186, 96, 33, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1708709500787613911, key: EventKey( [ 148, 111, 23, 177, 215, 5, 191, 68, 83, 24, 243, 78, 25, 78, 84, 45, 240, 242, 231, 145, 171, 62, 238, 230, ], ), }, sent_events: EventHandle { count: 1332232048010765666, key: EventKey( [ 83, 150, 86, 238, 184, 21, 237, 254, 175, 42, 32, 208, 81, 34, 240, 136, 150, 190, 168, 172, 75, 65, 60, 121, ], ), }, sequence_number: 7678337333825189762, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b65c69dcc842781990087780881674d29fa7e25096d06253f68001c615926fd7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f226167d849cb47c68b647dd418a77340a4edbaafe415a8fb412b7b42affbb4ebfb7649000193011c5b78152b072ba6ee60e353c31d2a646c310782287a18b76196ae3ffdccc83815c6cda5f52be745800c9e9fdc316279bd0fbe5be1736b186cf45304d206bf58632b85c615665380604e741350f83e25c51ce80e91feb3892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817b3f1d86ec786fc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 97, 103, 216, 73, 203, 71, 198, 139, 100, 125, 212, 24, 167, 115, 64, 164, 237, 186, 175, 228, 21, 168, 251, 65, 43, 123, 66, 175, 251, 180, 235, 251, 118, 73, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 93011c5b78152b072ba6ee60e353c31d, }, ), received_events: EventHandle { count: 8802428439101203498, key: EventKey( [ 183, 97, 150, 174, 63, 253, 204, 200, 56, 21, 198, 205, 165, 245, 43, 231, 69, 128, 12, 158, 159, 220, 49, 98, ], ), }, sent_events: EventHandle { count: 7742779968526990713, key: EventKey( [ 108, 244, 83, 4, 210, 6, 191, 88, 99, 43, 133, 198, 21, 102, 83, 128, 96, 78, 116, 19, 80, 248, 62, 37, ], ), }, sequence_number: 9922554303001140421, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b661aec3175b703da4333a2d2595de9b9a522087abb9f5131c8cbbcc873c5984): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96b0e01399ba8debd65a21f04e3e4108f0001740f100ced01938ddcfcb2f8e14e8fb643fe9a8d4b1e2306183fff9a66510ea7146597cc2655019900944d90749c16b66b6b476b3b7adff8581885b7e78721f53eba6cf898fa374f7b95cfa881ee5bc9c3f273343bdafe034b372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dd0663c63acbff7e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 57, 155, 168, 222, 189, 101, 162, 31, 4, 227, 228, 16, 143, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 740f100ced01938ddcfcb2f8e14e8fb6, }, ), received_events: EventHandle { count: 442230498259566147, key: EventKey( [ 63, 255, 154, 102, 81, 14, 167, 20, 101, 151, 204, 38, 85, 1, 153, 0, 148, 77, 144, 116, 156, 22, 182, 107, ], ), }, sent_events: EventHandle { count: 6411119785637791595, key: EventKey( [ 133, 183, 231, 135, 33, 245, 62, 186, 108, 248, 152, 250, 55, 79, 123, 149, 207, 168, 129, 238, 91, 201, 195, 242, ], ), }, sequence_number: 3984282688457225331, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b71aa12a03e214f74ceb449f0ee2257a7b82e095b2deca4a12e7dfa64d32f588): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997013a075f70cd524b56b4c9322f50d88dc352656675cba95d734df5a691081ecb6375a4b9f3c4bea25651f127bb52cbe33c89b5f77204e17e73076b5c0001cf0988901eccea948a4f38507ee0adcfeeb397b7c770ed1018f58fd34294f7c140a27988f39baf64e53dc60de1fd8d67d99e1833b859d7cd2618040226167eda5e068613845bc51e36b78e9ed3931072c00b42443776d1c16d332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a815bc146b3f6550 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 7, 95, 112, 205, 82, 75, 86, 180, 201, 50, 47, 80, 216, 141, 195, 82, 101, 102, 117, 203, 169, 93, 115, 77, 245, 166, 145, 8, 30, 203, 99, 117, 164, 185, 243, 196, 190, 162, 86, 81, 241, 39, 187, 82, 203, 227, 60, 137, 181, 247, 114, 4, 225, 126, 115, 7, 107, 92, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cf0988901eccea948a4f38507ee0adcf, }, ), received_events: EventHandle { count: 1219755077168247790, key: EventKey( [ 245, 143, 211, 66, 148, 247, 193, 64, 162, 121, 136, 243, 155, 175, 100, 229, 61, 198, 13, 225, 253, 141, 103, 217, ], ), }, sent_events: EventHandle { count: 2796127724009363614, key: EventKey( [ 4, 2, 38, 22, 126, 218, 94, 6, 134, 19, 132, 91, 197, 30, 54, 183, 142, 158, 211, 147, 16, 114, 192, 11, ], ), }, sequence_number: 3705831173771445314, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8214d272edfb8dc54caae6dc1478c3aceea31b274269e1a321d9c2fbfae511d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d60a5906bb66cec73310c4d1af801eb9a1974863f8b80cded8d8c7fec14e70077d1925219edad45180d462307b04ccaa5d4ff856427b2bacf702b78b0406c76a5c207fe9d0e45e207183dbe61f2fd6286a69027b3e6027236c4b0b3d9a1c43db19ac4cc8365dd1b78902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708377fa688e331cfd5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 165, 144, 107, 182, 108, 236, 115, 49, 12, 77, 26, 248, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: eb9a1974863f8b80cded8d8c7fec14e7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5020929852603289975, key: EventKey( [ 13, 70, 35, 7, 176, 76, 202, 165, 212, 255, 133, 100, 39, 178, 186, 207, 112, 43, 120, 176, 64, 108, 118, 165, ], ), }, sent_events: EventHandle { count: 568092432084633538, key: EventKey( [ 61, 190, 97, 242, 253, 98, 134, 166, 144, 39, 179, 230, 2, 114, 54, 196, 176, 179, 217, 161, 196, 61, 177, 154, ], ), }, sequence_number: 10410101176371760324, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b83fa8ec67586554d521711bd3b25dc0c58f2ffee71beca9cb1dbceaf0e44854): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97326f0dd63b7752ba8f105a527e5f5a9124da3490590316032812fec9d2a2a9a87a685bad83b602b00000e1d8efa114e3f7c184d2059fbaaced7a10e31c807e290c6f3e5c8d8e11b5a74c2a69a374d5ebef72c18508981a809f6480c2353bbcaac583cdf5ed3d371d64a6e9e82605a4661b3183e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083996f55995955988 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 240, 221, 99, 183, 117, 43, 168, 241, 5, 165, 39, 229, 245, 169, 18, 77, 163, 73, 5, 144, 49, 96, 50, 129, 47, 236, 157, 42, 42, 154, 135, 166, 133, 186, 216, 59, 96, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8952960423360863502, key: EventKey( [ 77, 32, 89, 251, 170, 206, 215, 161, 14, 49, 200, 7, 226, 144, 198, 243, 229, 200, 216, 225, 27, 90, 116, 194, ], ), }, sent_events: EventHandle { count: 3240267769148054182, key: EventKey( [ 80, 137, 129, 168, 9, 246, 72, 12, 35, 83, 187, 202, 172, 88, 60, 223, 94, 211, 211, 113, 214, 74, 110, 158, ], ), }, sequence_number: 4474523460166115458, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b84dd721c4f23270bf6c2a21d92b7d5a527200637bb5f9b8f33ed54052c59019): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b2015580cfcd1899e9b322b052b1424e9088c1be6835f7281f91e3d6d3d90bb10eedfe4feff5541714f0c0f249eb34269817902d8fd141068200c2a086316060e49e6fbaf79defe3a137ddd3ae93c4cba05928353b1e13fb01e7869656c35cc2ed61fc2b6405ad1d4b00f9335e62ec65da1d18d2cceaf6dd16cb9a8ac1976c9cb4c5d12f6221370ad2ed4378c625601e9e7d4518223aac6176d8c3faf92362f061cd4d46e9cd4dbef8370f955aa18c7d1062b66a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fa5c675cab648753 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 128, 207, 205, 24, 153, 233, 179, 34, 176, 82, 177, 66, 78, 144, 136, 193, 190, 104, 53, 247, 40, 31, 145, 227, 214, 211, 217, 11, 177, 14, 237, 254, 79, 239, 245, 84, 23, 20, 240, 192, 242, 73, 235, 52, 38, 152, 23, 144, 45, 143, 209, 65, 6, 130, 0, 194, 160, 134, 49, 96, 96, 228, 158, 111, 186, 247, 157, 239, 227, 161, 55, 221, 211, 174, 147, 196, 203, 160, 89, 40, 53, 59, 30, 19, 251, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e7869656c35cc2ed61fc2b6405ad1d4b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2151143837959861241, key: EventKey( [ 210, 204, 234, 246, 221, 22, 203, 154, 138, 193, 151, 108, 156, 180, 197, 209, 47, 98, 33, 55, 10, 210, 237, 67, ], ), }, sent_events: EventHandle { count: 5007332214005155448, key: EventKey( [ 34, 58, 172, 97, 118, 216, 195, 250, 249, 35, 98, 240, 97, 205, 77, 70, 233, 205, 77, 190, 248, 55, 15, 149, ], ), }, sequence_number: 7689441236747067738, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b8aa0cc14f160a324d1007de0f429cfd5b8fc67420b60b44811c15f6585fb409): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c984011786a43704d335ec1a47f64044a8979a6ba6a64d814a5ff70160bbf07dece549c043ce19cb7542218501eaeb107cda0dd773231eee6a29fdac00dfa66b1642c0f84d18a49a6445b49397fe27652f6e0b4e05009badedcc82dbacbe30260e7208e9d232189b7fe9d3c0f5368e0b6eff69b29f937d47d59d8c046925e0c9c0338f187333292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e932eb2001afac3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 164, 55, 4, 211, 53, 236, 26, 71, 246, 64, 68, 168, 151, 154, 107, 166, 166, 77, 129, 74, 95, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 60bbf07dece549c043ce19cb75422185, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: eaeb107cda0dd773231eee6a29fdac00, }, ), received_events: EventHandle { count: 5618451925221222111, key: EventKey( [ 164, 154, 100, 69, 180, 147, 151, 254, 39, 101, 47, 110, 11, 78, 5, 0, 155, 173, 237, 204, 130, 219, 172, 190, ], ), }, sent_events: EventHandle { count: 3662245669488174640, key: EventKey( [ 155, 127, 233, 211, 192, 245, 54, 142, 11, 110, 255, 105, 178, 159, 147, 125, 71, 213, 157, 140, 4, 105, 37, 224, ], ), }, sequence_number: 2968843128686231753, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b97981414747a13c8016af6d6fd8ebd23b8a2c31bd13344a73a4a3d7ac72e9b2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9701365aea1749baee0d43a07d803e51b9bf8d4549a000134cc11bb4efa7d6df13aa622076e12d940b5ec46eac00b251818037a2239d55c8f211c21b3bbaeaea8cdeb04dd326542bd3a83403f7afe275418e0aa1b3409c0c02ef301dcdacb8724ed6af40255ead6391c9bb76d076f087fb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708abd668c5b5852dfe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 174, 161, 116, 155, 174, 224, 212, 58, 7, 216, 3, 229, 27, 155, 248, 212, 84, 154, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 34cc11bb4efa7d6df13aa622076e12d9, }, ), received_events: EventHandle { count: 2669439316591949120, key: EventKey( [ 24, 3, 122, 34, 57, 213, 92, 143, 33, 28, 33, 179, 187, 174, 174, 168, 205, 235, 4, 221, 50, 101, 66, 189, ], ), }, sent_events: EventHandle { count: 6064095224278319930, key: EventKey( [ 224, 170, 27, 52, 9, 192, 192, 46, 243, 1, 220, 218, 203, 135, 36, 237, 106, 244, 2, 85, 234, 214, 57, 28, ], ), }, sequence_number: 13366411492017944475, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(b9edefe4ab01d02c455d660f09a8c8e06ae19e3955190f878b0be779c2e9b51b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ca015deefa2be16ab59d16fa937e12457fbb05ac8089337f7594042484407a4147a25b55a0b565f27680d516830553d2545da53b90bed579e6dcd633ba042e3e7568f6fc0fe72fdcddd5e0dd454dffe527da8a661bfb852c8b4ed97f23c2372701dcca7e05197e38108607f1e7e51e82e90199491e85a936e9f8691ff67e32787160b4ad50b39f95ca4e189231b2fa706ca6a00939d4fb71ff7189b47a622aa26083d9737f564a181ab279189ca7531cefba62bc00a7b2fe3a0c9f2bd53a14cf43b39b11eb1ceae3ff6deed62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080cddcb303db3f36e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 250, 43, 225, 106, 181, 157, 22, 250, 147, 126, 18, 69, 127, 187, 5, 172, 128, 137, 51, 127, 117, 148, 4, 36, 132, 64, 122, 65, 71, 162, 91, 85, 160, 181, 101, 242, 118, 128, 213, 22, 131, 5, 83, 210, 84, 93, 165, 59, 144, 190, 213, 121, 230, 220, 214, 51, 186, 4, 46, 62, 117, 104, 246, 252, 15, 231, 47, 220, 221, 213, 224, 221, 69, 77, 255, 229, 39, 218, 138, 102, 27, 251, 133, 44, 139, 78, 217, 127, 35, 194, 55, 39, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dcca7e05197e38108607f1e7e51e82e9, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 99491e85a936e9f8691ff67e32787160, }, ), received_events: EventHandle { count: 5677514793394679220, key: EventKey( [ 146, 49, 178, 250, 112, 108, 166, 160, 9, 57, 212, 251, 113, 255, 113, 137, 180, 122, 98, 42, 162, 96, 131, 217, ], ), }, sent_events: EventHandle { count: 8769100116072497011, key: EventKey( [ 156, 167, 83, 28, 239, 186, 98, 188, 0, 167, 178, 254, 58, 12, 159, 43, 213, 58, 20, 207, 67, 179, 155, 17, ], ), }, sequence_number: 15487437114381573355, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba0d10bc7d3e13ab435c4c0832e16099f33d09b5d6bbd31985cc04d3e90196ab): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b0b22a50e0239b9829dd9e1c8c950ee63d3a3507e53b4605d2bf5870001c7606fa90d82a27f1b3ca4bb089ec051693b3e135493d33a184c5e581fc062d5611d81883b036e71bb02602a60230ee01405f56fe01029091f186f246e39817ea295e73e9c1b21e5515a9aa4074ffdf77f1e274978fae44b522f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef6d3a0efc694b5f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 34, 165, 14, 2, 57, 185, 130, 157, 217, 225, 200, 201, 80, 238, 99, 211, 163, 80, 126, 83, 180, 96, 93, 43, 245, 135, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c7606fa90d82a27f1b3ca4bb089ec051, }, ), received_events: EventHandle { count: 4238893663595150185, key: EventKey( [ 76, 94, 88, 31, 192, 98, 213, 97, 29, 129, 136, 59, 3, 110, 113, 187, 2, 96, 42, 96, 35, 14, 224, 20, ], ), }, sent_events: EventHandle { count: 2236363842427811077, key: EventKey( [ 111, 36, 110, 57, 129, 126, 162, 149, 231, 62, 156, 27, 33, 229, 81, 90, 154, 164, 7, 79, 253, 247, 127, 30, ], ), }, sequence_number: 3409871314699700519, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba1088c1446442e5df04c6c62a0d6005ae489a3dcc33d4d88de208a0bf1909a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd01608b059ef35efd4b6132b7369dd741b168e04360d407f38dc8fa8743b3cdf2284a778fe93899d39303171b9c213e18b9f5bacb3636231b1021285d148188f8d9aeb3d0904763cbb52f4bf5cb73d57efe8d1c76912d7759cc06693d89846ad9f4ae0001809e1d7bbd9903fb58744350b56c0d906c65ef6f047c5533183d4fc2775e9d0cf0cefb786413e5320148e960d4c94b007aef748d65f8b3fe49189fe2d8ab90b22d7fdf29da5c98598b3054917ddb2f0136e03a20f403394f4faa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c6a7788eb960d707 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 139, 5, 158, 243, 94, 253, 75, 97, 50, 183, 54, 157, 215, 65, 177, 104, 224, 67, 96, 212, 7, 243, 141, 200, 250, 135, 67, 179, 205, 242, 40, 74, 119, 143, 233, 56, 153, 211, 147, 3, 23, 27, 156, 33, 62, 24, 185, 245, 186, 203, 54, 54, 35, 27, 16, 33, 40, 93, 20, 129, 136, 248, 217, 174, 179, 208, 144, 71, 99, 203, 181, 47, 75, 245, 203, 115, 213, 126, 254, 141, 28, 118, 145, 45, 119, 89, 204, 6, 105, 61, 137, 132, 106, 217, 244, 174, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 809e1d7bbd9903fb58744350b56c0d90, }, ), received_events: EventHandle { count: 3698999027454403948, key: EventKey( [ 61, 79, 194, 119, 94, 157, 12, 240, 206, 251, 120, 100, 19, 229, 50, 1, 72, 233, 96, 212, 201, 75, 0, 122, ], ), }, sent_events: EventHandle { count: 5331896888290276591, key: EventKey( [ 159, 226, 216, 171, 144, 178, 45, 127, 223, 41, 218, 92, 152, 89, 139, 48, 84, 145, 125, 219, 47, 1, 54, 224, ], ), }, sequence_number: 12272114615905951802, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba754a4b4a648fccf9b6a224df1dee8c4307fb8440ed298f51485a82b1d19545): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b1014491b81ab2ef34c88eccb8f8852ba0e56afdc975390b1491dd4a76780f2e7fb24a7a669372cbd445d49fb402ca4231918c2c7a65a38293a554e23183e9c4ef227ddab14b1c01d0ea6ddee5af0900000bb3d6a0a1a02f01998f50dc7d414b207a4a7c554b61f763836072b174af9959186587c693cb53a6bb95992f807079d722d8f51d547dd4b7b2a0170a432054be4518f1f2148dc814a2658ed245e344a2862228526b6f047017f010bc44cc33086acd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708573b914daede0aae Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 145, 184, 26, 178, 239, 52, 200, 142, 204, 184, 248, 133, 43, 160, 229, 106, 253, 201, 117, 57, 11, 20, 145, 221, 74, 118, 120, 15, 46, 127, 178, 74, 122, 102, 147, 114, 203, 212, 69, 212, 159, 180, 2, 202, 66, 49, 145, 140, 44, 122, 101, 163, 130, 147, 165, 84, 226, 49, 131, 233, 196, 239, 34, 125, 218, 177, 75, 28, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d0ea6ddee5af0900000bb3d6a0a1a02f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 998f50dc7d414b207a4a7c554b61f763, }, ), received_events: EventHandle { count: 6456384456540446851, key: EventKey( [ 101, 135, 198, 147, 203, 83, 166, 187, 149, 153, 47, 128, 112, 121, 215, 34, 216, 245, 29, 84, 125, 212, 183, 178, ], ), }, sent_events: EventHandle { count: 5025546731732473760, key: EventKey( [ 241, 242, 20, 141, 200, 20, 162, 101, 142, 210, 69, 227, 68, 162, 134, 34, 40, 82, 107, 111, 4, 112, 23, 240, ], ), }, sequence_number: 14801652143869967376, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ba8a8349fa98cc89ac0a24b613d547f2e305ef1c7e7190f5c9ea43ea9cb8feb4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b101546005cd8237f91f0151252a8b638637621041a364747892d757061c9911e3b302bad3802530a4fef26fa5bb9c20e9cf2011baab3e396ce62598eb7701654807e968f6c43a3c315f1305fd554a2b858bfa4ccd15a501f15ca7f2d6b8bc55f9e16f00c148098000831de5d3eeb9ae3e18d3d4f2ccfaa568e7ecb094bfddae64ee2f918aed0828287de86c1200ea7e9d5418bfba669ca02f12e987080af56a752419e0279c11673df1864b2db83816ca8b702101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a92706d82eb8468 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 96, 5, 205, 130, 55, 249, 31, 1, 81, 37, 42, 139, 99, 134, 55, 98, 16, 65, 163, 100, 116, 120, 146, 215, 87, 6, 28, 153, 17, 227, 179, 2, 186, 211, 128, 37, 48, 164, 254, 242, 111, 165, 187, 156, 32, 233, 207, 32, 17, 186, 171, 62, 57, 108, 230, 37, 152, 235, 119, 1, 101, 72, 7, 233, 104, 246, 196, 58, 60, 49, 95, 19, 5, 253, 85, 74, 43, 133, 139, 250, 76, 205, 21, 165, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f15ca7f2d6b8bc55f9e16f00c1480980, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4516751911707549059, key: EventKey( [ 211, 212, 242, 204, 250, 165, 104, 231, 236, 176, 148, 191, 221, 174, 100, 238, 47, 145, 138, 237, 8, 40, 40, 125, ], ), }, sent_events: EventHandle { count: 6097169014018174184, key: EventKey( [ 191, 186, 102, 156, 160, 47, 18, 233, 135, 8, 10, 245, 106, 117, 36, 25, 224, 39, 156, 17, 103, 61, 241, 134, ], ), }, sequence_number: 8109797750800395595, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bafb204dab0c64741bac181bf48000a98ce0cb1a6a136c1ba457962a1cc0e3d3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9820125e96bba105229e8120fac5864ded8849392e2d033f2fb170e03f18acfbce3e80b2cef59788e01e80b5dbc92d80b39c4d399d1b6fd1d110095c3f68e08966b60183e07ce3456c3a30d481a86a420745b05a63860fe7c6ed40dd344dc1bd957122d1897c9c49f4990678cd4d24dd841098ef02fc001cdf92bedb20082e06056fcc86e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70854bf74f7ccd14013 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 107, 186, 16, 82, 41, 232, 18, 15, 172, 88, 100, 222, 216, 132, 147, 146, 226, 208, 51, 242, 251, 23, 14, 3, 241, 138, 207, 188, 227, 232, 11, 44, 239, 89, 120, 142, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e80b5dbc92d80b39c4d399d1b6fd1d11, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6947811813651563413, key: EventKey( [ 62, 7, 206, 52, 86, 195, 163, 13, 72, 26, 134, 164, 32, 116, 91, 5, 166, 56, 96, 254, 124, 110, 212, 13, ], ), }, sent_events: EventHandle { count: 3247754871274489043, key: EventKey( [ 151, 201, 196, 159, 73, 144, 103, 140, 212, 210, 77, 216, 65, 9, 142, 240, 47, 192, 1, 205, 249, 43, 237, 178, ], ), }, sequence_number: 7982907787436917248, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb15a062e2e8f96652be857725bf8f0bd3bf8cd40dd5f0fcdfad24e709c2437f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d01402593b0f5f54ad52d6b1935f55e2b5b12b2d1e47204caab7e54fbb9bea654f39f2c8b154aff5aa7d9c6a65c931fe933da299c74398075ce62fbf6631b99e849400001a77d9cbb089ef32d15560d48c8442f9dab5e96a8377b053e18ba5dd88f666b35f2016a7390cb50b59a32142d038feb645a2a95ee51f7e708021872dc34407d2b6a0fea9172ae650492007f8f7262176c3f71c59d702ada0d1a292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdafe0d8122889c5 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 37, 147, 176, 245, 245, 74, 213, 45, 107, 25, 53, 245, 94, 43, 91, 18, 178, 209, 228, 114, 4, 202, 171, 126, 84, 251, 185, 190, 166, 84, 243, 159, 44, 139, 21, 74, 255, 90, 167, 217, 198, 166, 92, 147, 31, 233, 51, 218, 41, 156, 116, 57, 128, 117, 206, 98, 251, 246, 99, 27, 153, 232, 73, 64, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a77d9cbb089ef32d15560d48c8442f9d, }, ), received_events: EventHandle { count: 4469113684216929963, key: EventKey( [ 186, 93, 216, 143, 102, 107, 53, 242, 1, 106, 115, 144, 203, 80, 181, 154, 50, 20, 45, 3, 143, 235, 100, 90, ], ), }, sent_events: EventHandle { count: 146622037307069738, key: EventKey( [ 114, 220, 52, 64, 125, 43, 106, 15, 234, 145, 114, 174, 101, 4, 146, 0, 127, 143, 114, 98, 23, 108, 63, 113, ], ), }, sequence_number: 2961694935615577541, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb408e14271f956d78ab9f164089d70c107de3ec713e188dc98724dae72da4d1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800123843b47849127076d80ffd02831b64b0b12eab56bfd7c73073e5960241db17f7f74c22401e0a3ce506841d7cb5ea3d58638e4fc3d00c0f998861de261771856d20572f417d583fcfb131f36149b6ab624705b72a3e6c8159f5294cf7c96411811201aefa8f626fe7c0deadd9ccc34139f5cca114a61f13734eb2acf802a69bf2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e8fa8cfc768f302e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 132, 59, 71, 132, 145, 39, 7, 109, 128, 255, 208, 40, 49, 182, 75, 11, 18, 234, 181, 107, 253, 124, 115, 7, 62, 89, 96, 36, 29, 177, 127, 127, 116, 194, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e0a3ce506841d7cb5ea3d58638e4fc3d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8602405379694459328, key: EventKey( [ 86, 210, 5, 114, 244, 23, 213, 131, 252, 251, 19, 31, 54, 20, 155, 106, 182, 36, 112, 91, 114, 163, 230, 200, ], ), }, sent_events: EventHandle { count: 4726102089960431381, key: EventKey( [ 17, 32, 26, 239, 168, 246, 38, 254, 124, 13, 234, 221, 156, 204, 52, 19, 159, 92, 202, 17, 74, 97, 241, 55, ], ), }, sequence_number: 13792602066518731572, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb4b34d092dd9adeac015f9f9e5ebd9988f265aac344ba26b1204b8039f8bce5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95f12a86abf66f105187620824fd7c449a282805b0000dcd3510edfdbd95f1847b5e895a683622eaeb551b552b426078dcb697b77b2103d24940188a76ae717186392a5d71086c6a36fe088fc63c6099dc9f8a76a0209cfb88b80f9117fb61bcc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4061cd168089bab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 106, 191, 102, 241, 5, 24, 118, 32, 130, 79, 215, 196, 73, 162, 130, 128, 91, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6906793254613799900, key: EventKey( [ 71, 181, 232, 149, 166, 131, 98, 46, 174, 181, 81, 181, 82, 180, 38, 7, 141, 203, 105, 123, 119, 178, 16, 61, ], ), }, sent_events: EventHandle { count: 1722462650266391588, key: EventKey( [ 99, 146, 165, 215, 16, 134, 198, 163, 111, 224, 136, 252, 99, 198, 9, 157, 201, 248, 167, 106, 2, 9, 207, 184, ], ), }, sequence_number: 14707549664987152523, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bb847d73c0ad7f3050a4793113db65ee356967df71f969679b04de9c16f3faa8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f32770c678b4a3f94003bdb78fe279292f5a9252f3437012fa3aedefb0c45c214f44c9aa52392cb39c74a343d6f4abeccd2ddd70000c03bfdf079d7275118171b6bfb2249ce74ea2f8983a2d1f8d65dc23af1da2319f09128b02ca7ce147118d89c34c879eea87b6fcc8a9b53a30b11394dd0a0801f66f3daa4db3160a2e42a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708db47ce01c038bb88 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 119, 12, 103, 139, 74, 63, 148, 0, 59, 219, 120, 254, 39, 146, 146, 245, 169, 37, 47, 52, 55, 1, 47, 163, 174, 222, 251, 12, 69, 194, 20, 244, 76, 154, 165, 35, 146, 203, 57, 199, 74, 52, 61, 111, 74, 190, 204, 210, 221, 215, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5847879559898020800, key: EventKey( [ 23, 27, 107, 251, 34, 73, 206, 116, 234, 47, 137, 131, 162, 209, 248, 214, 93, 194, 58, 241, 218, 35, 25, 240, ], ), }, sent_events: EventHandle { count: 8148364843224672401, key: EventKey( [ 216, 156, 52, 200, 121, 238, 168, 123, 111, 204, 138, 155, 83, 163, 11, 17, 57, 77, 208, 160, 128, 31, 102, 243, ], ), }, sequence_number: 3090773778320041178, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bbc3ecfbfb39fa6149222be63410ee2a9eee5048d5ba688b226e62dc765ecbf6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99201350eb13990d42057b81f3db7ff3ed932be8591ed6f24078ad5930612e7276b7798b1391bf8fee4192d1dd86239267ee3b17d8d2cd94b000177bedffc59689bbc2a4417125a8fc415397c3651007548771842cbd23f114c9e289b281479de93dd7807d46bbfd3a8c61a8452d98237cfb84518451149ec4aacfb701ff2ab7df97757cbe0d2d96c6469333d6f4bf71a08dae1dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708acf43ff64c5e89b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 14, 177, 57, 144, 212, 32, 87, 184, 31, 61, 183, 255, 62, 217, 50, 190, 133, 145, 237, 111, 36, 7, 138, 213, 147, 6, 18, 231, 39, 107, 119, 152, 177, 57, 27, 248, 254, 228, 25, 45, 29, 216, 98, 57, 38, 126, 227, 177, 125, 141, 44, 217, 75, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 77bedffc59689bbc2a4417125a8fc415, }, ), received_events: EventHandle { count: 8595248533059566649, key: EventKey( [ 66, 203, 210, 63, 17, 76, 158, 40, 155, 40, 20, 121, 222, 147, 221, 120, 7, 212, 107, 191, 211, 168, 198, 26, ], ), }, sent_events: EventHandle { count: 5023993221657219716, key: EventKey( [ 69, 17, 73, 236, 74, 172, 251, 112, 31, 242, 171, 125, 249, 119, 87, 203, 224, 210, 217, 108, 100, 105, 51, 61, ], ), }, sequence_number: 15916242286451051375, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bc7868a4ab35f64df85d87d25bc174b92ccfa1e552553bb6cca4ccbd22b6696f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c997012ab6ab238dff55bfd8a88a9c6d7bf0d7461b9e1fd06dda2ea144c7e4ed711e8f5d456804f554a0c4f28afe01ad6c277d73f4c4036038622011a7f9330147ae2f0eb19c8ee8af4935cd134345413c9640c68a903d3118e9a0e5f29de6453f1c46a2ba23a82d9e8f9dfde89187d093c1951ee6a8bb327318598554b9caf75d1744c32272a5d3a0923b4a63224330e3ac16d2a3afe1ad5dd72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847649a3e3196f63d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 171, 35, 141, 255, 85, 191, 216, 168, 138, 156, 109, 123, 240, 215, 70, 27, 158, 31, 208, 109, 218, 46, 161, 68, 199, 228, 237, 113, 30, 143, 93, 69, 104, 4, 245, 84, 160, 196, 242, 138, 254, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ad6c277d73f4c4036038622011a7f933, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 47ae2f0eb19c8ee8af4935cd13434541, }, ), received_events: EventHandle { count: 3548151007143827004, key: EventKey( [ 233, 160, 229, 242, 157, 230, 69, 63, 28, 70, 162, 186, 35, 168, 45, 158, 143, 157, 253, 232, 145, 135, 208, 147, ], ), }, sent_events: EventHandle { count: 8300903397286909377, key: EventKey( [ 89, 133, 84, 185, 202, 247, 93, 23, 68, 195, 34, 114, 165, 211, 160, 146, 59, 74, 99, 34, 67, 48, 227, 172, ], ), }, sequence_number: 15518751075814593046, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bcb603049c3b30a21250e2a2afdbb0782bbbd501ac4afd82b693b9571d2ecd63): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f320c240c3719c5427ec7dac8d530c0b9742e9379cca9e1d0603d4a31b8236049926f63469aa6784a3f477adc38b20436a5da780000bddabd566ff35959187c73b45e0bc9d4a91f94e3fac4093d178d4c18792bd1f95d3394aeca24c3b06118030aabb1f8336e14b9ecfc257ae5aa989a1c3f38e7eeef09664ae48d005babb22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70842e6a47383b5fc8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 36, 12, 55, 25, 197, 66, 126, 199, 218, 200, 213, 48, 192, 185, 116, 46, 147, 121, 204, 169, 225, 208, 96, 61, 74, 49, 184, 35, 96, 73, 146, 111, 99, 70, 154, 166, 120, 74, 63, 71, 122, 220, 56, 178, 4, 54, 165, 218, 120, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6438444801825036989, key: EventKey( [ 124, 115, 180, 94, 11, 201, 212, 169, 31, 148, 227, 250, 196, 9, 61, 23, 141, 76, 24, 121, 43, 209, 249, 93, ], ), }, sent_events: EventHandle { count: 7039340780366763059, key: EventKey( [ 3, 10, 171, 177, 248, 51, 110, 20, 185, 236, 252, 37, 122, 229, 170, 152, 154, 28, 63, 56, 231, 238, 239, 9, ], ), }, sequence_number: 12874484017707371110, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bcb76b5cf684be29de17869f8f9f341be66aff407b79c244fbb661a4d5b77da0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01312eabc92838be155ef1d0d855ae630cb99bc5a1452228d0e1595fe0226e2f743336509ed142659508005b908fe2e62e8d840001754d3ac92bd907269e9102926dd15b98b19e1aae37d38d7718ac8d158548a3281b316a557080397456a54b23f708d8d8a0d454aa69db575a1f18f45b6156c75771c9c98e80da6d9e83ffc4463192652840ce65add4590b1309f42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b5d7f28d629811c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 46, 171, 201, 40, 56, 190, 21, 94, 241, 208, 216, 85, 174, 99, 12, 185, 155, 197, 161, 69, 34, 40, 208, 225, 89, 95, 224, 34, 110, 47, 116, 51, 54, 80, 158, 209, 66, 101, 149, 8, 0, 91, 144, 143, 226, 230, 46, 141, 132, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 754d3ac92bd907269e9102926dd15b98, }, ), received_events: EventHandle { count: 8614773898327269041, key: EventKey( [ 172, 141, 21, 133, 72, 163, 40, 27, 49, 106, 85, 112, 128, 57, 116, 86, 165, 75, 35, 247, 8, 216, 216, 160, ], ), }, sent_events: EventHandle { count: 2259214762961949908, key: EventKey( [ 244, 91, 97, 86, 199, 87, 113, 201, 201, 142, 128, 218, 109, 158, 131, 255, 196, 70, 49, 146, 101, 40, 64, 206, ], ), }, sequence_number: 17584607159517490533, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(be4e6487195fefadda492420a6eeb50286b15b2595b0331932c546467151e3f1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97e113f7d04be037ac210eaf2027f97ff45c335014810fc61b68286101b7a7b688343cbff01278b7da212ef316a7dc2acc37af07fa24b9e9ce36d9a5f0018acacbc15ab5fe515b5daccc649789966c4287865a96036c61748d696f54e01191832e93452a899430d3603b36312e5b6482405c8c66e073325e1df2c789b37143c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876aeaffc01310bfd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 125, 4, 190, 3, 122, 194, 16, 234, 242, 2, 127, 151, 255, 69, 195, 53, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4810fc61b68286101b7a7b688343cbff, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 278b7da212ef316a7dc2acc37af07fa2, }, ), received_events: EventHandle { count: 26909919548317259, key: EventKey( [ 172, 172, 188, 21, 171, 95, 229, 21, 181, 218, 204, 198, 73, 120, 153, 102, 196, 40, 120, 101, 169, 96, 54, 198, ], ), }, sent_events: EventHandle { count: 1801808142629488663, key: EventKey( [ 50, 233, 52, 82, 168, 153, 67, 13, 54, 3, 179, 99, 18, 229, 182, 72, 36, 5, 200, 198, 110, 7, 51, 37, ], ), }, sequence_number: 4329146282685554657, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bed2cc71e1ac9a10a27dafbc12d50d3bbcfc58f93559ebb4857da1ef67171c6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d81f0a5c2ad8e46057342f048e70001f7c503a879500f2a15f0c07e80402c413ad6f82f0d8b554a181e538cc07f76bba50fa0f60e97c0600713c356007025b3f7f84cd5a76a001e2618fd102c875d66b9ddce70ef499152ca3506961cc7daf6469238bb2eeebb0f89f32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083466dd8e3879fa1c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 129, 240, 165, 194, 173, 142, 70, 5, 115, 66, 240, 72, 231, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: f7c503a879500f2a15f0c07e80402c41, }, ), received_events: EventHandle { count: 5356340220582745658, key: EventKey( [ 30, 83, 140, 192, 127, 118, 187, 165, 15, 160, 246, 14, 151, 192, 96, 7, 19, 195, 86, 0, 112, 37, 179, 247, ], ), }, sent_events: EventHandle { count: 2746633280824888568, key: EventKey( [ 253, 16, 44, 135, 93, 102, 185, 221, 206, 112, 239, 73, 145, 82, 202, 53, 6, 150, 28, 199, 218, 246, 70, 146, ], ), }, sequence_number: 17548574722855189304, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf1df6738a20a34ce09cd1cb2a79c580321f4611b1f63c69d05c478463779e62): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013eee52eebb6e6d2cc7758d5a6e67da9f5eb177ac0198ad3c284af9a009aae8ea132a0f9ca2858874200cbba9df5b71c6f58f61447b6a39f7720f1bd8f7078201b631b00fe57127b0a7e3a8df02c3231f00f86a5509b74cf764186af594290763d4a9b34e0fd06bd63616b7e7ceb6aa3def9aa57a6e8ed1d4344c180aa6cdfd030bc128afa0b5e70a3e803ee07306a90df260e755cdbafb33d64a332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3c521f7edb1e47f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 82, 238, 187, 110, 109, 44, 199, 117, 141, 90, 110, 103, 218, 159, 94, 177, 119, 172, 1, 152, 173, 60, 40, 74, 249, 160, 9, 170, 232, 234, 19, 42, 15, 156, 162, 133, 136, 116, 32, 12, 187, 169, 223, 91, 113, 198, 245, 143, 97, 68, 123, 106, 57, 247, 114, 15, 27, 216, 247, 7, 130, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b631b00fe57127b0a7e3a8df02c3231f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7275368072059644664, key: EventKey( [ 106, 245, 148, 41, 7, 99, 212, 169, 179, 78, 15, 208, 107, 214, 54, 22, 183, 231, 206, 182, 170, 61, 239, 154, ], ), }, sent_events: EventHandle { count: 5491247842174335653, key: EventKey( [ 10, 166, 205, 253, 3, 11, 193, 40, 175, 160, 181, 231, 10, 62, 128, 62, 224, 115, 6, 169, 13, 242, 96, 231, ], ), }, sequence_number: 3696001962965912917, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bf38a97144b57fc1ceedc2610e206e7ebc6500355fbf396468f3254908cb6c64): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7013ab2ac9a3b40e5f2f459d16e7efadeb4788408c465092b79d20731bf146ac8db0a8334296133a38f0d6dd0993506a3f538de159883a897279aa163017452b2e1205c44b8c61c312090efd3bf014f6de326ad036a7abe8d7e7bf1f79b338c8566448864fe2418e0dc61c68be0dafd3042bc98f9823f22d85424f44e371897da51acbd43099e391867e465c2e6598e82ee2eb02e88bd654327bab1f069948321588092aaa1968ea72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800c075c37b48366a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 178, 172, 154, 59, 64, 229, 242, 244, 89, 209, 110, 126, 250, 222, 180, 120, 132, 8, 196, 101, 9, 43, 121, 210, 7, 49, 191, 20, 106, 200, 219, 10, 131, 52, 41, 97, 51, 163, 143, 13, 109, 208, 153, 53, 6, 163, 245, 56, 222, 21, 152, 131, 168, 151, 39, 154, 161, 99, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7452b2e1205c44b8c61c312090efd3bf, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4f6de326ad036a7abe8d7e7bf1f79b33, }, ), received_events: EventHandle { count: 2665678565875811724, key: EventKey( [ 224, 220, 97, 198, 139, 224, 218, 253, 48, 66, 188, 152, 249, 130, 63, 34, 216, 84, 36, 244, 78, 55, 24, 151, ], ), }, sent_events: EventHandle { count: 4151766093031821786, key: EventKey( [ 103, 228, 101, 194, 230, 89, 142, 130, 238, 46, 176, 46, 136, 189, 101, 67, 39, 186, 177, 240, 105, 148, 131, 33, ], ), }, sequence_number: 12073753272122507352, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfbcfc2f15a369d2f58049425f76afffe9b182569d75dcd9872df9d71e43aec5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98001133a8f93e92238cd3a04cdd2b2650bc323e53974016cf7179cec9ae84170a9bd049459da7a01bf344bc588e53aceaa67b9cbd456c11c713ac4991cd7723f189eab3b4b59afc52ae72b69fc67c3ed788d30b6ebf78db2e9b77267f64265d34718688fa4ae0fc9c942ff932334fca8288b9e68eaed6c926ce28f4cfc9825ba4a5e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f51e224bf1e06930 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 58, 143, 147, 233, 34, 56, 205, 58, 4, 205, 210, 178, 101, 11, 195, 35, 229, 57, 116, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6cf7179cec9ae84170a9bd049459da7a, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bf344bc588e53aceaa67b9cbd456c11c, }, ), received_events: EventHandle { count: 4571953089573304945, key: EventKey( [ 158, 171, 59, 75, 89, 175, 197, 42, 231, 43, 105, 252, 103, 195, 237, 120, 141, 48, 182, 235, 247, 141, 178, 233, ], ), }, sent_events: EventHandle { count: 5175591735055053495, key: EventKey( [ 104, 143, 164, 174, 15, 201, 201, 66, 255, 147, 35, 52, 252, 168, 40, 139, 158, 104, 234, 237, 108, 146, 108, 226, ], ), }, sequence_number: 6794447658485042319, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfc6c740e6d0c19624984a382c7ac111b3823b876a90e43320d65a6517d72716): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98001339d93123d899bde99e14559897ca909f0353537674d088fcc72ff0526937b53d0f163a8e524816e9194d8bde6aef63218d083af0000794b57336243d14d1885d4af99917dce5d6ca60e3d9e67196b9756dab2a9b0651d55191b4748af6b7f18be7946863c5e3a86622cc8089048a188e5cdffced1733a122e6d19566ad67c212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088afdd1429609b435 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 157, 147, 18, 61, 137, 155, 222, 153, 225, 69, 89, 137, 124, 169, 9, 240, 53, 53, 55, 103, 77, 8, 143, 204, 114, 255, 5, 38, 147, 123, 83, 208, 241, 99, 168, 229, 36, 129, 110, 145, 148, 216, 189, 230, 174, 246, 50, 24, 208, 131, 175, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5607337100100193145, key: EventKey( [ 133, 212, 175, 153, 145, 125, 206, 93, 108, 166, 14, 61, 158, 103, 25, 107, 151, 86, 218, 178, 169, 176, 101, 29, ], ), }, sent_events: EventHandle { count: 9181624990290352469, key: EventKey( [ 190, 121, 70, 134, 60, 94, 58, 134, 98, 44, 200, 8, 144, 72, 161, 136, 229, 205, 255, 206, 209, 115, 58, 18, ], ), }, sequence_number: 2413039252563127598, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(bfddd2eef2f0adb7b34c25c671a99602c9ce6d3b263979545527beebe1a2277c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c983011669fd5a2f46f12fb891d44bde608564f70d832f873fa1018143726e03fcf4b41fcc870a6d01374601a9746e6ed69474af817b151d75252a4647f5ad449bfb430f189c0d80d0322571f255fb5a0084ef42ae93aff64aa563e6c00e5484c255d5be37186076c9e7f5db0038e3c94ca7a276ec123f5f0ee212af96091c0630af26718fd02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70812819f10e9c23764 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 105, 253, 90, 47, 70, 241, 47, 184, 145, 212, 75, 222, 96, 133, 100, 247, 13, 131, 47, 135, 63, 161, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8143726e03fcf4b41fcc870a6d013746, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a9746e6ed69474af817b151d75252a46, }, ), received_events: EventHandle { count: 1099999378299286855, key: EventKey( [ 156, 13, 128, 208, 50, 37, 113, 242, 85, 251, 90, 0, 132, 239, 66, 174, 147, 175, 246, 74, 165, 99, 230, 192, ], ), }, sent_events: EventHandle { count: 4016882481973449742, key: EventKey( [ 96, 118, 201, 231, 245, 219, 0, 56, 227, 201, 76, 167, 162, 118, 236, 18, 63, 95, 14, 226, 18, 175, 150, 9, ], ), }, sequence_number: 15028354892520490524, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c0a5b4b7a0465cd83305294e4ba519a4bd0f65ed686f6d735ae0dc8430b9a936): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015e0467a3edd792b72fbd5717a48407f07b668ea45b42d1b8a4dee2dd7b4bc40d8a15452095ed7af864bdf1ffb3319c88c77a1d44711cec880851ea2919a90471b3006190b667240b3a028b9a9ad0cc2f44017e8bc25ebbad32100afff98a1701a18b83bb0b6f2d1765b5aa1041375f8e004dfa9a5bef2b96291802724c3ed4e52c955cf10c039e0f555bd11ace192d7e57fb99b6b3728a54c242185ebcc1f0852345b97c333a8fc14778847bcb1632ad4b90530fd8a0ca99e5dd0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708844b1f07151228a1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 103, 163, 237, 215, 146, 183, 47, 189, 87, 23, 164, 132, 7, 240, 123, 102, 142, 164, 91, 66, 209, 184, 164, 222, 226, 221, 123, 75, 196, 13, 138, 21, 69, 32, 149, 237, 122, 248, 100, 189, 241, 255, 179, 49, 156, 136, 199, 122, 29, 68, 113, 28, 236, 136, 8, 81, 234, 41, 25, 169, 4, 113, 179, 0, 97, 144, 182, 103, 36, 11, 58, 2, 139, 154, 154, 208, 204, 47, 68, 1, 126, 139, 194, 94, 187, 173, 50, 16, 10, 255, 249, 138, 23, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a18b83bb0b6f2d1765b5aa1041375f8e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2996630909095705165, key: EventKey( [ 2, 114, 76, 62, 212, 229, 44, 149, 92, 241, 12, 3, 158, 15, 85, 91, 209, 26, 206, 25, 45, 126, 87, 251, ], ), }, sent_events: EventHandle { count: 4810500305591711385, key: EventKey( [ 94, 188, 193, 240, 133, 35, 69, 185, 124, 51, 58, 143, 193, 71, 120, 132, 123, 203, 22, 50, 173, 75, 144, 83, ], ), }, sequence_number: 855091952962557967, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c0ac560d5d34ffa0b03fa28d9c250a541266240b7bb908329bd131d319f928ce): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9014cd3c6c1e6797680fbddffec9c5c7ad578937714a2b3850f6e979a3b5ff1e12183528b8ceffbe464f08881dcbe8ca8bd4e79c474614551da79d582ec90b45aff49e221472178b2c6d8468d5bce0131fb6f144f10341813f282d217fa92c700a9c0040c3417214c189b10e8aa79b907250ce2248dd0a6a55a62f56c16636473e5928df2bbc5c67c35183559fa3d892ba10d83a58a9c4ff7a0876fda7d8b612416662d131f890b945d562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084eb752f92cd5db6f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 211, 198, 193, 230, 121, 118, 128, 251, 221, 255, 236, 156, 92, 122, 213, 120, 147, 119, 20, 162, 179, 133, 15, 110, 151, 154, 59, 95, 241, 225, 33, 131, 82, 139, 140, 239, 251, 228, 100, 240, 136, 129, 220, 190, 140, 168, 189, 78, 121, 196, 116, 97, 69, 81, 218, 121, 213, 130, 236, 144, 180, 90, 255, 73, 226, 33, 71, 33, 120, 178, 198, 216, 70, 141, 91, 206, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 31fb6f144f10341813f282d217fa92c7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5485691333421351081, key: EventKey( [ 155, 16, 232, 170, 121, 185, 7, 37, 12, 226, 36, 141, 208, 166, 165, 90, 98, 245, 108, 22, 99, 100, 115, 229, ], ), }, sent_events: EventHandle { count: 3854173933686394258, key: EventKey( [ 53, 89, 250, 61, 137, 43, 161, 13, 131, 165, 138, 156, 79, 247, 160, 135, 111, 218, 125, 139, 97, 36, 22, 102, ], ), }, sequence_number: 6223293037361959725, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c12b36ce51f15bccfc66fb975e8cb99a7bba3d0fd78a2472571aae4bf8473a53): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201553fad6245fc8aa757b11c4174702283eca643588ca84a83276ee2cae3ddc9fd92a59c699c810c18777c26d3b668e8f391007da32bd68984bc56dc4c5ca905b38db3f3a2cf97a4a197bd29b4d98035fdeb913f202632000186d9abab20d7bbdb873bab62d6802f9d8ba6d33669616060184cd0c694bcd41a1a59105fd3c2120c1673a6b584fd6f6a7395593b0d5e3b4b25186550a9b196977f98b92813a698dae2588a9770655182502de7da9822f5ca21e12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70821947ef467be4049 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 173, 98, 69, 252, 138, 167, 87, 177, 28, 65, 116, 112, 34, 131, 236, 166, 67, 88, 140, 168, 74, 131, 39, 110, 226, 202, 227, 221, 201, 253, 146, 165, 156, 105, 156, 129, 12, 24, 119, 124, 38, 211, 182, 104, 232, 243, 145, 0, 125, 163, 43, 214, 137, 132, 188, 86, 220, 76, 92, 169, 5, 179, 141, 179, 243, 162, 207, 151, 164, 161, 151, 189, 41, 180, 217, 128, 53, 253, 235, 145, 63, 32, 38, 50, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 86d9abab20d7bbdb873bab62d6802f9d, }, ), received_events: EventHandle { count: 6944657729924605579, key: EventKey( [ 76, 208, 198, 148, 188, 212, 26, 26, 89, 16, 95, 211, 194, 18, 12, 22, 115, 166, 181, 132, 253, 111, 106, 115, ], ), }, sent_events: EventHandle { count: 2687306877791590805, key: EventKey( [ 101, 80, 169, 177, 150, 151, 127, 152, 185, 40, 19, 166, 152, 218, 226, 88, 138, 151, 112, 101, 81, 130, 80, 45, ], ), }, sequence_number: 16222470486961478375, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c1600a2e6c577478bfcdbf560a9e8160a0aead937d2eb473b11641e8f14414bd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417366fc94b546a8bbd572f18c1aadd359750daf1ac60283d0001d687306ca3b1fd60f8a3dbaebe9b13bf4b36915f0a9edb1d1802c35dfdc07cc05bc8c2e82cd1cae26a881525e99059ca65830756d771804d7a186145aada9ad8ee45668acd4d93f58fd1157fe8eb3a56f3286dc737532e0f34562101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70867fb0b24464eb928 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 54, 111, 201, 75, 84, 106, 139, 189, 87, 47, 24, 193, 170, 221, 53, 151, 80, 218, 241, 172, 96, 40, 61, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d687306ca3b1fd60f8a3dbaebe9b13bf, }, ), received_events: EventHandle { count: 2151487014389757515, key: EventKey( [ 2, 195, 93, 253, 192, 124, 192, 91, 200, 194, 232, 44, 209, 202, 226, 106, 136, 21, 37, 233, 144, 89, 202, 101, ], ), }, sent_events: EventHandle { count: 8812841272266327939, key: EventKey( [ 97, 69, 170, 218, 154, 216, 238, 69, 102, 138, 205, 77, 147, 245, 143, 209, 21, 127, 232, 235, 58, 86, 243, 40, ], ), }, sequence_number: 6211606477689833325, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c1e70c8469dbdb79d6f4ca37e9baf6ac60d4b5124f3a6b78c9c4cc7fcd09e8fe): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96104f444466e0001d91ff4b726309f0a3201a3a4ae98a097f97aeec45554ab0518f26c43c02c6d4dc3c923e35e589bde7e8c79ee78639613944876d0b6edb4b46c18eb2b24d85f1771c09d931b61a9d2c69273dbd7978e22b9d3bef5601205c9f0bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e456f69faf205201 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 244, 68, 70, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d91ff4b726309f0a3201a3a4ae98a097, }, ), received_events: EventHandle { count: 408512918560078585, key: EventKey( [ 242, 108, 67, 192, 44, 109, 77, 195, 201, 35, 227, 94, 88, 155, 222, 126, 140, 121, 238, 120, 99, 150, 19, 148, ], ), }, sent_events: EventHandle { count: 7833084584971499080, key: EventKey( [ 235, 43, 36, 216, 95, 23, 113, 192, 157, 147, 27, 97, 169, 210, 198, 146, 115, 219, 215, 151, 142, 34, 185, 211, ], ), }, sequence_number: 13542545103123445182, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c30dea296a4236b4967ec288bd3ca59c28cb0a450de3b3ec7a602c18d85ab819): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9800113e67b8b1167945b4f6e8d23d10a6814b25a875a0192727b8b81b85055f7819094aeee053b01d03c229a49769f5987f1a810164df5023915f6917595ff39182dcd98419b7e5c0c481c87d7459b1ae5f3ddf7403a91fc547e05f8bc960c255918fb98a58dbc9e1ab98e1738517c1fc49bba06be9269834c0d5c5a2d0b38f11e0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b12f8cc77855a92e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 123, 139, 17, 103, 148, 91, 79, 110, 141, 35, 209, 10, 104, 20, 178, 90, 135, 90, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 92727b8b81b85055f7819094aeee053b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d03c229a49769f5987f1a810164df502, }, ), received_events: EventHandle { count: 4179223311415645497, key: EventKey( [ 45, 205, 152, 65, 155, 126, 92, 12, 72, 28, 135, 215, 69, 155, 26, 229, 243, 221, 247, 64, 58, 145, 252, 84, ], ), }, sent_events: EventHandle { count: 6423554285068879230, key: EventKey( [ 251, 152, 165, 141, 188, 158, 26, 185, 142, 23, 56, 81, 124, 31, 196, 155, 186, 6, 190, 146, 105, 131, 76, 13, ], ), }, sequence_number: 801343006726511196, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c320cf80ec4194971a41dfd0ed90a97be2d8456a9b4f4597a5c56276413cab0b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c976295073aceb62f7d05c31f6fa3d471698fb3a454745272d47576978c2abb469a91f8a73e2e7e5e12a282500009c241721f3a2055a186dc06e9e5d52628f8681eb3317a2bd7ba34df672c06a3128dba334b81c1de254184d6d23b3576a7ab5b37bd8c2cfb098fb0e964a0c69449490bba9f07b44ec1ed92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081f68f905930ada6f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 80, 115, 172, 235, 98, 247, 208, 92, 49, 246, 250, 61, 71, 22, 152, 251, 58, 69, 71, 69, 39, 45, 71, 87, 105, 120, 194, 171, 180, 105, 169, 31, 138, 115, 226, 231, 229, 225, 42, 40, 37, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6486770003412984988, key: EventKey( [ 109, 192, 110, 158, 93, 82, 98, 143, 134, 129, 235, 51, 23, 162, 189, 123, 163, 77, 246, 114, 192, 106, 49, 40, ], ), }, sent_events: EventHandle { count: 6116483253109302235, key: EventKey( [ 77, 109, 35, 179, 87, 106, 122, 181, 179, 123, 216, 194, 207, 176, 152, 251, 14, 150, 74, 12, 105, 68, 148, 144, ], ), }, sequence_number: 15645201934412982715, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c3594c9324e78699435b3222045ac9d52dac42fd29526b7d47cb420417150aeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95609bc52088523b90aa936000091c9d082b5d2de17184a6774683dd74a15e879cb38bcd68dea1316d2b7196483a429ea68c86ec72c4e18d99204336526bb17c618a656ba93b4e81fd92ebc25956478c98b73e074d3bea12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c587c23decd7f512 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 82, 8, 133, 35, 185, 10, 169, 54, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1720043784727742865, key: EventKey( [ 74, 103, 116, 104, 61, 215, 74, 21, 232, 121, 203, 56, 188, 214, 141, 234, 19, 22, 210, 183, 25, 100, 131, 164, ], ), }, sent_events: EventHandle { count: 5633096512556296745, key: EventKey( [ 217, 146, 4, 51, 101, 38, 187, 23, 198, 24, 166, 86, 186, 147, 180, 232, 31, 217, 46, 188, 37, 149, 100, 120, ], ), }, sequence_number: 11654985384616758217, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c3825f162b107c246689a9bc17afd43a8b93d9f7a1b8b8ceddc9cab86e5dc570): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987012abfff7ed55730bda03e8200cb11d88a80110d4da0ae57322ce0519829fc422f3e93e760b79e30022eb340010653ceb978676c262f4f4f322f70eb5100c3d1a9052eb8c42b187ca6fb65b3f36f4a75556382dacacc0209895e506fe94a14f600e08f898a05691840cf67c309757549350b127aba81a9a1d48dbe7651ee0b2dcca2b036f70a9b6d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846de53691b3f26ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 255, 126, 213, 87, 48, 189, 160, 62, 130, 0, 203, 17, 216, 138, 128, 17, 13, 77, 160, 174, 87, 50, 44, 224, 81, 152, 41, 252, 66, 47, 62, 147, 231, 96, 183, 158, 48, 2, 46, 179, 64, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0653ceb978676c262f4f4f322f70eb51, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3153848146869211587, key: EventKey( [ 124, 166, 251, 101, 179, 243, 111, 74, 117, 85, 99, 130, 218, 202, 204, 2, 9, 137, 94, 80, 111, 233, 74, 20, ], ), }, sent_events: EventHandle { count: 7567607072294961398, key: EventKey( [ 64, 207, 103, 195, 9, 117, 117, 73, 53, 11, 18, 122, 186, 129, 169, 161, 212, 141, 190, 118, 81, 238, 11, 45, ], ), }, sequence_number: 7897918428415042252, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c41ed3b7840a868be33557f77a3aff1d9ecff5430aba3b249f8f6ae5af8aa3da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97316b6e6abda28adc1fb2ccf1b3fb10aa72e0b7e5d5207b000015fd147b610c28a06c053488beab629c01075e35aaa10917418857d599ae355f31e11aac21c4f1039c6bd080f502528c7cf0b9a51f62ac68b6b18da2d16ed3e7add0c6430e1c7234c6cb7d3a7ce5db79145cbc79de994aa5da4c42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708930c7606fcd83162 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 230, 171, 218, 40, 173, 193, 251, 44, 207, 27, 63, 177, 10, 167, 46, 11, 126, 93, 82, 7, 176, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5fd147b610c28a06c053488beab629c0, }, ), received_events: EventHandle { count: 8399513103878026512, key: EventKey( [ 133, 125, 89, 154, 227, 85, 243, 30, 17, 170, 194, 28, 79, 16, 57, 198, 189, 8, 15, 80, 37, 40, 199, 207, ], ), }, sent_events: EventHandle { count: 7749505471644539403, key: EventKey( [ 218, 45, 22, 237, 62, 122, 221, 12, 100, 48, 225, 199, 35, 76, 108, 183, 211, 167, 206, 93, 183, 145, 69, 203, ], ), }, sequence_number: 14169553314838584775, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c484f538259fdd2363204324906e423c6e6fe17549b1f21db209b02f9ace22ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e11f7587236dcf9af1c0b2b6d94c2c38820a0000048a9ab39b2f6610d1858b33585f848eb7b130a8dd13996c1a9874f49ef156f986a7558434b8b04d73118ff6703adc26fbfb0aedd5ba25d63793cc5ec8425270030978167b027263175642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089d0af467899e7a50 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 88, 114, 54, 220, 249, 175, 28, 11, 43, 109, 148, 194, 195, 136, 32, 160, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 964323040566159688, key: EventKey( [ 88, 179, 53, 133, 248, 72, 235, 123, 19, 10, 141, 209, 57, 150, 193, 169, 135, 79, 73, 239, 21, 111, 152, 106, ], ), }, sent_events: EventHandle { count: 3591344224160929909, key: EventKey( [ 255, 103, 3, 173, 194, 111, 191, 176, 174, 221, 91, 162, 93, 99, 121, 60, 197, 236, 132, 37, 39, 0, 48, 151, ], ), }, sequence_number: 7238746016012330881, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c4bab0ee0ef28d12dcb48011f24e36895faa07512b4546c19f4aa08ce140e4c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013ee063183699720061cbdba71f199340556159a54e583a8a695a7319b52b03c7f0c9613c0c59ccdce4b2677205f27cc6498299e9de9e9dd39a742e5379b92c0001d471f2f795f730a022520f24dbd2e5a38e92d8f829e38f64188e5df4a842e2d6d2ff58992a1532dd38723382f9a32cc6cfcd6ce263f23f9c5718b9690ee07212d466423e7cd8208f53bed7dd9527ea541c46afa1aeacfa8ac1ff2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082e81441e3c8b4512 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 99, 24, 54, 153, 114, 0, 97, 203, 219, 167, 31, 25, 147, 64, 85, 97, 89, 165, 78, 88, 58, 138, 105, 90, 115, 25, 181, 43, 3, 199, 240, 201, 97, 60, 12, 89, 204, 220, 228, 178, 103, 114, 5, 242, 124, 198, 73, 130, 153, 233, 222, 158, 157, 211, 154, 116, 46, 83, 121, 185, 44, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d471f2f795f730a022520f24dbd2e5a3, }, ), received_events: EventHandle { count: 7246260094870524558, key: EventKey( [ 142, 93, 244, 168, 66, 226, 214, 210, 255, 88, 153, 42, 21, 50, 221, 56, 114, 51, 130, 249, 163, 44, 198, 207, ], ), }, sent_events: EventHandle { count: 6312991087957011661, key: EventKey( [ 185, 105, 14, 224, 114, 18, 212, 102, 66, 62, 124, 216, 32, 143, 83, 190, 215, 221, 149, 39, 234, 84, 28, 70, ], ), }, sequence_number: 18429163959420363183, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c51655eabfb2bf65e78e5708ef55419a4c106bfb6fc37a858f9761dd13ecc234): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97417caddca0dad448f9a4d4f3f70416b0decef46bfd523cf370001e6406983dcc6aef8c82f4e12e5209e020ee15f91f125d90d18d7872cb207dafa1db03c48d77d14252a80cca6aa8df324312b066925dd673e33189c9032546ba6f3a4e5baa488ad70db7e61cbea010802c0b6214c95516be96b382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70846a41212e870a192 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 221, 202, 13, 173, 68, 143, 154, 77, 79, 63, 112, 65, 107, 13, 236, 239, 70, 191, 213, 35, 207, 55, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e6406983dcc6aef8c82f4e12e5209e02, }, ), received_events: EventHandle { count: 997870511895601422, key: EventKey( [ 215, 135, 44, 178, 7, 218, 250, 29, 176, 60, 72, 215, 125, 20, 37, 42, 128, 204, 166, 170, 141, 243, 36, 49, ], ), }, sent_events: EventHandle { count: 3692502944003458603, key: EventKey( [ 156, 144, 50, 84, 107, 166, 243, 164, 229, 186, 164, 136, 173, 112, 219, 126, 97, 203, 234, 1, 8, 2, 192, 182, ], ), }, sequence_number: 4065599735771515937, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5568db2a6d9bad60777cc69da310428d29d4920338e7f90437b1545902a9dcc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96306bab5a5b644590001cfde88be56dfabc6cbdf64682f154f316f9ce254608b723e180262d04463d9a7e34c6f61fd20759b1cb72f7b3984ac9377b8dc3e082b78d00f186e88e11e0f58557709dc1f6944d360f55aebab08389fee5a77e0980908c66faa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70802ec21d607d03132 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 186, 181, 165, 182, 68, 89, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cfde88be56dfabc6cbdf64682f154f31, }, ), received_events: EventHandle { count: 4499812223553805423, key: EventKey( [ 2, 98, 208, 68, 99, 217, 167, 227, 76, 111, 97, 253, 32, 117, 155, 28, 183, 47, 123, 57, 132, 172, 147, 119, ], ), }, sent_events: EventHandle { count: 1139542831941999800, key: EventKey( [ 110, 136, 225, 30, 15, 88, 85, 119, 9, 220, 31, 105, 68, 211, 96, 245, 90, 235, 171, 8, 56, 159, 238, 90, ], ), }, sequence_number: 12281252446685683831, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c59b72df80767a3a4235013759a0aaae616ecb1253e248074851bc82c653ac74): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201451f8a78e350d853bf5c8e36eee785aeef842e9f68157461068a120c9355b170b1442467c7db39ca412a89330741dc8ed6046d5a8f170ae8a793fd570851f51d65812aff5305013feeeacc6e0f21c623ba613b172d0bfc01b97821761f0ddd3dafa3b926372ed0cbaffee1fa0192117318adc977343633cc570781d0d0ebfad4e4c957492897de374f88edcfe331002c3f18e9fbabcc4eb0fa43306a493587f6c720784e6ea2e40df328dea96836902bb9192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d18d416eb5728a6e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 138, 120, 227, 80, 216, 83, 191, 92, 142, 54, 238, 231, 133, 174, 239, 132, 46, 159, 104, 21, 116, 97, 6, 138, 18, 12, 147, 85, 177, 112, 177, 68, 36, 103, 199, 219, 57, 202, 65, 42, 137, 51, 7, 65, 220, 142, 214, 4, 109, 90, 143, 23, 10, 232, 167, 147, 253, 87, 8, 81, 245, 29, 101, 129, 42, 255, 83, 5, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3feeeacc6e0f21c623ba613b172d0bfc, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b97821761f0ddd3dafa3b926372ed0cb, }, ), received_events: EventHandle { count: 8291568926167531183, key: EventKey( [ 173, 201, 119, 52, 54, 51, 204, 87, 7, 129, 208, 208, 235, 250, 212, 228, 201, 87, 73, 40, 151, 222, 55, 79, ], ), }, sent_events: EventHandle { count: 4552013537640181128, key: EventKey( [ 233, 251, 171, 204, 78, 176, 250, 67, 48, 106, 73, 53, 135, 246, 199, 32, 120, 78, 110, 162, 228, 13, 243, 40, ], ), }, sequence_number: 1853560620027783646, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5c5e2e697c92556023043cc8003d5182b65d0b68600ac235afd1423a4c83af0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014bb60b3d0f1230224aae0bb2d122b5a1ca2bc4b626bceb86fe33e432e8b975c941e84ba0e20d5fe62f4c63f23c182e8c7b2127af5368c668a8d46663d39d922f2fd6b1fac64983a7eb2f628b0000cb7c6ed76eeaef31188110fca782469844e4c91a24e36623646c626daf8608ee44495ab55e12624f40188914ab75afafbb0f507debd29c0578d7c8282c4ecc420597825a93c4fad0edc52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081b85c2e82305a540 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 11, 61, 15, 18, 48, 34, 74, 174, 11, 178, 209, 34, 181, 161, 202, 43, 196, 182, 38, 188, 235, 134, 254, 51, 228, 50, 232, 185, 117, 201, 65, 232, 75, 160, 226, 13, 95, 230, 47, 76, 99, 242, 60, 24, 46, 140, 123, 33, 39, 175, 83, 104, 198, 104, 168, 212, 102, 99, 211, 157, 146, 47, 47, 214, 177, 250, 198, 73, 131, 167, 235, 47, 98, 139, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3598352389073960139, key: EventKey( [ 129, 16, 252, 167, 130, 70, 152, 68, 228, 201, 26, 36, 227, 102, 35, 100, 108, 98, 109, 175, 134, 8, 238, 68, ], ), }, sent_events: EventHandle { count: 4634030372625406537, key: EventKey( [ 137, 20, 171, 117, 175, 175, 187, 15, 80, 125, 235, 210, 156, 5, 120, 215, 200, 40, 44, 78, 204, 66, 5, 151, ], ), }, sequence_number: 14262285370410621570, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5dc16635c40b35cd1dd5c01e03ee40ec26d6d4437dc11ba2f64895a13d1b7c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b7014afb1c7657bca5925d9882abe4b5a8fe0483b6459989cd327744599e9a757595938785c99be70ea1cf1881de361a7ff4f2f4db269e1a1bde8f2193ec90ecbea248bce9b12ca72ef4dac84b01f8eb7b224bfbafd653272ee1621fe9310191afaeb0c5b1dcc731b0d3f2d6a1e491dfafad14798a936e1829b69041e3850460cccbf69b16016412608da79ecce3e20e4dad5944fbf32e6418ffa175065b92f5aabdf1c58dd654039e90e1b682d48af6b650bac4eb50c13e082101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f50efbea0478a8b4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 28, 118, 87, 188, 165, 146, 93, 152, 130, 171, 228, 181, 168, 254, 4, 131, 182, 69, 153, 137, 205, 50, 119, 68, 89, 158, 154, 117, 117, 149, 147, 135, 133, 201, 155, 231, 14, 161, 207, 24, 129, 222, 54, 26, 127, 244, 242, 244, 219, 38, 158, 26, 27, 222, 143, 33, 147, 236, 144, 236, 190, 162, 72, 188, 233, 177, 44, 167, 46, 244, 218, 200, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f8eb7b224bfbafd653272ee1621fe931, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 91afaeb0c5b1dcc731b0d3f2d6a1e491, }, ), received_events: EventHandle { count: 7967864418391142367, key: EventKey( [ 41, 182, 144, 65, 227, 133, 4, 96, 204, 203, 246, 155, 22, 1, 100, 18, 96, 141, 167, 158, 204, 227, 226, 14, ], ), }, sent_events: EventHandle { count: 7218975513230552397, key: EventKey( [ 255, 161, 117, 6, 91, 146, 245, 170, 189, 241, 197, 141, 214, 84, 3, 158, 144, 225, 182, 130, 212, 138, 246, 182, ], ), }, sequence_number: 594124754156567120, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c5fc1fd678e96f043bb6ef7c1c82924c9cea9d6d5452b4533267d95a19b427f2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0ffaa691759cff6538a144582f5533fd01062ef485f5ba2c7b947131331cc99e4c00cc5ebdb750c2381f18447caec0599ce7b54826122c0f35225745e6a1f36d3ab05ffb2b0b4ab86fb274187ee1e3a80042cbf6854c9c011042c39cc6ca13ec9c477190519561e9daa734372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708eb3945adf6acaa56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 250, 166, 145, 117, 156, 255, 101, 56, 161, 68, 88, 47, 85, 51, 253, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 062ef485f5ba2c7b947131331cc99e4c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2249761665807376076, key: EventKey( [ 68, 124, 174, 192, 89, 156, 231, 181, 72, 38, 18, 44, 15, 53, 34, 87, 69, 230, 161, 243, 109, 58, 176, 95, ], ), }, sent_events: EventHandle { count: 8408906291561049083, key: EventKey( [ 126, 225, 227, 168, 0, 66, 203, 246, 133, 76, 156, 1, 16, 66, 195, 156, 198, 202, 19, 236, 156, 71, 113, 144, ], ), }, sequence_number: 3977988929535186257, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c666893e079f5338c5d00a8f2f7e35340ab688a0912b20e811933afc6b9e2e69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c972158a97a093d3fb02fb97ee2a4dc0e72935916558c4fc00016d6c6d86910bae7d0e5191f7fb5a240bcbe4560f83e97c1218f1fb31d40bae8e94ab09ec9c598e7e51549a4fa0fc45a606dc6ab6dbb3ba2a0018eba7356ba7dc3512fc2fed9c1fff7cf12e7e96f20a92865c4e8ca28dc9fd14c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b689d332dcfa3475 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 138, 151, 160, 147, 211, 251, 2, 251, 151, 238, 42, 77, 192, 231, 41, 53, 145, 101, 88, 196, 252, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6d6c6d86910bae7d0e5191f7fb5a240b, }, ), received_events: EventHandle { count: 1332196338902164683, key: EventKey( [ 241, 251, 49, 212, 11, 174, 142, 148, 171, 9, 236, 156, 89, 142, 126, 81, 84, 154, 79, 160, 252, 69, 166, 6, ], ), }, sent_events: EventHandle { count: 12027230669925084, key: EventKey( [ 235, 167, 53, 107, 167, 220, 53, 18, 252, 47, 237, 156, 31, 255, 124, 241, 46, 126, 150, 242, 10, 146, 134, 92, ], ), }, sequence_number: 13840966596922870862, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c72b25d2a11c9c79f3dc6e3992ff731dc1d4fe89585ebe66ba7327a3c3020464): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163e907826881b42751217bd9a183efb889de2b0a02e8d3b96df3100f1986bd7a0510d88e2376a9246b951f6d971f9af5bab2f55d459885f8180e3b96cf7e582a3649c9bf4a883fd2197f907a2387c3115de0f920dc2e79f861c49cab0d1d496cf46cb27101f71a72fec0bac6748f81c19ff854ebb600a18cfc0482ff4a67189e48088a09f7dd7748ef947dbaf2fc4e7356ba9626c18e4a757e6db3ea14802218b5624247397423936f917e616aed3a773bd81180240e2d19f07c97a07c9b51532101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d27b5dd7f896e72b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 233, 7, 130, 104, 129, 180, 39, 81, 33, 123, 217, 161, 131, 239, 184, 137, 222, 43, 10, 2, 232, 211, 185, 109, 243, 16, 15, 25, 134, 189, 122, 5, 16, 216, 142, 35, 118, 169, 36, 107, 149, 31, 109, 151, 31, 154, 245, 186, 178, 245, 93, 69, 152, 133, 248, 24, 14, 59, 150, 207, 126, 88, 42, 54, 73, 201, 191, 74, 136, 63, 210, 25, 127, 144, 122, 35, 135, 195, 17, 93, 224, 249, 32, 220, 46, 121, 248, 97, 196, 156, 171, 13, 29, 73, 108, 244, 108, 178, 113, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f71a72fec0bac6748f81c19ff854ebb6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7443042268077657249, key: EventKey( [ 158, 72, 8, 138, 9, 247, 221, 119, 72, 239, 148, 125, 186, 242, 252, 78, 115, 86, 186, 150, 38, 193, 142, 74, ], ), }, sent_events: EventHandle { count: 2486009992573714037, key: EventKey( [ 181, 98, 66, 71, 57, 116, 35, 147, 111, 145, 126, 97, 106, 237, 58, 119, 59, 216, 17, 128, 36, 14, 45, 25, ], ), }, sequence_number: 6003750737834114288, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c731de57b94733f0910a21daecc2749bedc2f11569834fc632c5c454910f79c6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d625dd09f4dd79b082ac0b3c6ec000141ecf0a30b7271c88c4be9b15056804e7d88ea101cafdb1c1800147f4e2801123a472f3e16e2fa06f25c61a1ee7ea7c6d64d1801e17497db2018956a8f157a5a97a45667327771dd4bbc01e348488d1682d13824058c4d8f12542101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70852ef333ba1accdea Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 93, 208, 159, 77, 215, 155, 8, 42, 192, 179, 198, 236, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 41ecf0a30b7271c88c4be9b15056804e, }, ), received_events: EventHandle { count: 2079448188039366781, key: EventKey( [ 0, 20, 127, 78, 40, 1, 18, 58, 71, 47, 62, 22, 226, 250, 6, 242, 92, 97, 161, 238, 126, 167, 198, 214, ], ), }, sent_events: EventHandle { count: 2367652557360273485, key: EventKey( [ 149, 106, 143, 21, 122, 90, 151, 164, 86, 103, 50, 119, 113, 221, 75, 188, 1, 227, 72, 72, 141, 22, 130, 209, ], ), }, sequence_number: 6058062011991139384, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c73262c635bc545dfcb2d5f2e5543a388a5893caa01717039ad171a339e7004f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b00153179e575a3b360ff4bfd6fe6963c37dadc39ca83d43f06812a02686f5c205453dc7bdcd3f853208ad226446d54c9a47857b70d7cb649bc8495d5aba80aafac55b11b43e3570db382c5d7cc8165c60ea585593900154254d49622e2f561dace89b5631e27c006ebcf69280b8a42e18303936b2c4c4983f144dfe12e5e139b554e1e22931af0d4127c938a52d11b00d1844675a0d92471adc91bdec187b81e6692bc4421c6784af9cc1a8723378e656142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c501caec7d21d951 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 23, 158, 87, 90, 59, 54, 15, 244, 191, 214, 254, 105, 99, 195, 125, 173, 195, 156, 168, 61, 67, 240, 104, 18, 160, 38, 134, 245, 194, 5, 69, 61, 199, 189, 205, 63, 133, 50, 8, 173, 34, 100, 70, 213, 76, 154, 71, 133, 123, 112, 215, 203, 100, 155, 200, 73, 93, 90, 186, 128, 170, 250, 197, 91, 17, 180, 62, 53, 112, 219, 56, 44, 93, 124, 200, 22, 92, 96, 234, 88, 85, 147, 144, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 54254d49622e2f561dace89b5631e27c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3361014084286200942, key: EventKey( [ 48, 57, 54, 178, 196, 196, 152, 63, 20, 77, 254, 18, 229, 225, 57, 181, 84, 225, 226, 41, 49, 175, 13, 65, ], ), }, sent_events: EventHandle { count: 986307206137301287, key: EventKey( [ 68, 103, 90, 13, 146, 71, 26, 220, 145, 189, 236, 24, 123, 129, 230, 105, 43, 196, 66, 28, 103, 132, 175, 156, ], ), }, sequence_number: 1465612132689291457, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c7baeac6b631175ef2d17900bf4e2254d880a2b21c4efbddd7074aa17618343a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b20155414d8ab0305625052adde173148c5f852b32deb42a11ef456d6cb0837db6426267b473ddbfa17bb52fd3a97e0820597fff09899f9e36f36c3bbc1688b5d83f347aa05eb53d688f96d062fd55557755e27d15f1db230001905d81d335a5af4fd6de94ff86492ac00d973d76ce8ee14718e1a73835ab7faf256799bbf105ac8ad5ef65314bcb57719fb8f4235cff2a4f1e187ded059061008e72124643f0b70e77561850ba149ca06a5132b55ccb29fda7f52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708fc9845b0784ce34a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 65, 77, 138, 176, 48, 86, 37, 5, 42, 221, 225, 115, 20, 140, 95, 133, 43, 50, 222, 180, 42, 17, 239, 69, 109, 108, 176, 131, 125, 182, 66, 98, 103, 180, 115, 221, 191, 161, 123, 181, 47, 211, 169, 126, 8, 32, 89, 127, 255, 9, 137, 159, 158, 54, 243, 108, 59, 188, 22, 136, 181, 216, 63, 52, 122, 160, 94, 181, 61, 104, 143, 150, 208, 98, 253, 85, 85, 119, 85, 226, 125, 21, 241, 219, 35, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 905d81d335a5af4fd6de94ff86492ac0, }, ), received_events: EventHandle { count: 5179578063850936077, key: EventKey( [ 225, 167, 56, 53, 171, 127, 175, 37, 103, 153, 187, 241, 5, 172, 138, 213, 239, 101, 49, 75, 203, 87, 113, 159, ], ), }, sent_events: EventHandle { count: 2184011620548867256, key: EventKey( [ 125, 237, 5, 144, 97, 0, 142, 114, 18, 70, 67, 240, 183, 14, 119, 86, 24, 80, 186, 20, 156, 160, 106, 81, ], ), }, sequence_number: 17701395216350360882, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c7db27fcea652c559f3bd060d4fb19b4713d6bea0e645416b2a153be5a123239): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0fae17840fb5377d79dd60e0f6d96ea701af032e008536dd56f2b9ecca1dcb113e00483cb26220d7813d180c3f3ed0f809753d5747145adc1412bc84a38f105674ffd3cf21e6d50bc7704418dbc3a014fadd7f003f90080498ad6b9a27e2b3f9d786faa78233611cb07fc1852101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708942ade8d87cb7dd7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 23, 132, 15, 181, 55, 125, 121, 221, 96, 224, 246, 217, 110, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: af032e008536dd56f2b9ecca1dcb113e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4432060042404052040, key: EventKey( [ 12, 63, 62, 208, 248, 9, 117, 61, 87, 71, 20, 90, 220, 20, 18, 188, 132, 163, 143, 16, 86, 116, 255, 211, ], ), }, sent_events: EventHandle { count: 4931660445617889743, key: EventKey( [ 219, 195, 160, 20, 250, 221, 127, 0, 63, 144, 8, 4, 152, 173, 107, 154, 39, 226, 179, 249, 215, 134, 250, 167, ], ), }, sequence_number: 9638125071916675970, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c833d39165bcc29dd0bf8c9b6d3ec65f07742d6620b3a4b2f61411843af11a8b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98f0142a99817ca11ff7c6acdff3dfc7bbc1084573577797064c335392132f0afe82186d4e36739215b0dd6c482085d7fd25ad581da1ca8369bff3a8f55ff6fc26fe71c3acf00004c64400bff730d1f18f80828125d9a0ac4b93c2e99682e3766e483929b7ce3ab5a159af130a502b1651877f070e92a6ad39e09ff60bff72a77e5f98f59e0f6692979e650baedebb499d02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089c806c82358e764d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 152, 23, 202, 17, 255, 124, 106, 205, 255, 61, 252, 123, 188, 16, 132, 87, 53, 119, 121, 112, 100, 195, 53, 57, 33, 50, 240, 175, 232, 33, 134, 212, 227, 103, 57, 33, 91, 13, 214, 196, 130, 8, 93, 127, 210, 90, 213, 129, 218, 28, 168, 54, 155, 255, 58, 143, 85, 255, 111, 194, 111, 231, 28, 58, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2237572129115628620, key: EventKey( [ 248, 8, 40, 18, 93, 154, 10, 196, 185, 60, 46, 153, 104, 46, 55, 102, 228, 131, 146, 155, 124, 227, 171, 90, ], ), }, sent_events: EventHandle { count: 7327640977222507029, key: EventKey( [ 119, 240, 112, 233, 42, 106, 211, 158, 9, 255, 96, 191, 247, 42, 119, 229, 249, 143, 89, 224, 246, 105, 41, 121, ], ), }, sequence_number: 15031244156724465894, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c84ba869e4f22c6b9e41c8c4f7e4de50b89cdf0d1aceba2ebb676e8e72166508): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f57056fd6e2fc386b7e6cb30bf26bb8da6a8cd5f946a6998142591465b31f8b0e29a75151c8a7345e0fbcda4de1c34200006c773b0fd7e7516a18e4bd0a969a63271f7d2b9089f008e435285f82f992f35d50dfb4d9e13182cd5218b37ca37282409c6c8da72308b2bc11c038a85345073f54d65adc62d230a4644e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70806481974eeb364cc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 5, 111, 214, 226, 252, 56, 107, 126, 108, 179, 11, 242, 107, 184, 218, 106, 140, 213, 249, 70, 166, 153, 129, 66, 89, 20, 101, 179, 31, 139, 14, 41, 167, 81, 81, 200, 167, 52, 94, 15, 188, 218, 77, 225, 195, 66, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7661159351993464684, key: EventKey( [ 228, 189, 10, 150, 154, 99, 39, 31, 125, 43, 144, 137, 240, 8, 228, 53, 40, 95, 130, 249, 146, 243, 93, 80, ], ), }, sent_events: EventHandle { count: 5966568232089924831, key: EventKey( [ 179, 124, 163, 114, 130, 64, 156, 108, 141, 167, 35, 8, 178, 188, 17, 192, 56, 168, 83, 69, 7, 63, 84, 214, ], ), }, sequence_number: 5648820362224524378, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c893857720ccbdaa3503ddbed69d6101a590f50fb701d3631b7a3a0a4883e0a5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a00153fdbcb9fc7a24f1140adbf3770a09ed6247a5d912f16d20cabe826d0b97521cc9db94a16b081ae3a8c9e9ae324b38142b65776bd2dd321774a83c0e375a2bbeee7b1f8c91b21807c57cb932005cb7bde1e63980000024f4d18e73bc6f03180180a8016462e8a207751e18384665465dc5abd8b8aa0fcd28377d59c2e5f34318c664188113738d18ea1e6b5a68c003d90ab9c1827bb486a5605e49cbeb9639512101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70829f8ba5342e3efac Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 188, 185, 252, 122, 36, 241, 20, 10, 219, 243, 119, 10, 9, 237, 98, 71, 165, 217, 18, 241, 109, 32, 202, 190, 130, 109, 11, 151, 82, 28, 201, 219, 148, 161, 107, 8, 26, 227, 168, 201, 233, 174, 50, 75, 56, 20, 43, 101, 119, 107, 210, 221, 50, 23, 116, 168, 60, 14, 55, 90, 43, 190, 238, 123, 31, 140, 145, 178, 24, 7, 197, 124, 185, 50, 0, 92, 183, 189, 225, 230, 57, 128, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 247623709032051748, key: EventKey( [ 1, 128, 168, 1, 100, 98, 232, 162, 7, 117, 30, 24, 56, 70, 101, 70, 93, 197, 171, 216, 184, 170, 15, 205, ], ), }, sent_events: EventHandle { count: 4896509842769655592, key: EventKey( [ 198, 100, 24, 129, 19, 115, 141, 24, 234, 30, 107, 90, 104, 192, 3, 217, 10, 185, 193, 130, 123, 180, 134, 165, ], ), }, sequence_number: 5852875130216734304, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c8ac6922089df28b2a3f04447a947921b312d4aba9d71d8614eccc2ff55eee24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f64db93ffdb4976b8cbb56aaffc30b40124b4cf2395443faa0ae5a81924d10e74005966bbc1aeed312f18573b85fe9948988894c09452b2f40b512bea0137ac87d88f4ad628a02e6359041845f5eba023db4664dd5f383252713f21f9ef972be0a404dd1ddb322be03bd8432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70889560ebd9453a99a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 100, 219, 147, 255, 219, 73, 118, 184, 203, 181, 106, 175, 252, 48, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24b4cf2395443faa0ae5a81924d10e74, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3400760528471811673, key: EventKey( [ 87, 59, 133, 254, 153, 72, 152, 136, 148, 192, 148, 82, 178, 244, 11, 81, 43, 234, 1, 55, 172, 135, 216, 143, ], ), }, sent_events: EventHandle { count: 313390700985636426, key: EventKey( [ 69, 245, 235, 160, 35, 219, 70, 100, 221, 95, 56, 50, 82, 113, 63, 33, 249, 239, 151, 43, 224, 164, 4, 221, ], ), }, sequence_number: 4888723229494139677, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(c8af29b1b68b95edcc69901762c40769320d4a9c3372faaefa54156619dd67d2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b9015cbd9705d717ee1c9973bd0ed462e6d9236a2a41226ae3fa065c3e5eba488baaa7734c4f492f6deee8e0cae991b984a82f070a0a0139cb77a6482f84bf9d5c3f96e2083d134d6a75650f5eff69c78836c8b6eb0f566761acf68e4b8c3d01e42620f1cf708ecb043d2e630253b5dd001370db1552e5736c1877c73a72e6c5f74fa861c33f7b56fd62ac93928fb4228fa6dadb43d8343a9d1e183d9f777168d06ca74adcb0e76b842f535a6465cfae77c1e4793e814535afc6fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c4ed538783801870 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 189, 151, 5, 215, 23, 238, 28, 153, 115, 189, 14, 212, 98, 230, 217, 35, 106, 42, 65, 34, 106, 227, 250, 6, 92, 62, 94, 186, 72, 139, 170, 167, 115, 76, 79, 73, 47, 109, 238, 232, 224, 202, 233, 145, 185, 132, 168, 47, 7, 10, 10, 1, 57, 203, 119, 166, 72, 47, 132, 191, 157, 92, 63, 150, 226, 8, 61, 19, 77, 106, 117, 101, 15, 94, 255, 105, 199, 136, 54, 200, 182, 235, 15, 86, 103, 97, 172, 246, 142, 75, 140, 61, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e42620f1cf708ecb043d2e630253b5dd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7814841919134724115, key: EventKey( [ 119, 199, 58, 114, 230, 197, 247, 79, 168, 97, 195, 63, 123, 86, 253, 98, 172, 147, 146, 143, 180, 34, 143, 166, ], ), }, sent_events: EventHandle { count: 2205983391122447322, key: EventKey( [ 61, 159, 119, 113, 104, 208, 108, 167, 74, 220, 176, 231, 107, 132, 47, 83, 90, 100, 101, 207, 174, 119, 193, 228, ], ), }, sequence_number: 18358553574356631161, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cbe7169dddefeec8754872aef770dac570c1236d246ea8540ecf0fe0c27e6cf9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013dd71ca5d9b71fe432e5f0fbe30832a93501c2f829e63799797136e60546d9fb73c3cc6511ac95082392a294f364f89ad541365b191597539d2be01e4ebb00015749fdbed9a25a0693576162965779d2ad5a184d25208f4118b9fd80588ae6effc559502f22c74e9e795fa3e47effe0281b8a2f256cfd27f621868c54252fd29b9f14631c430e81ee5d068248f1c7df31ca045975c829853402c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a725ea06369fffe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 28, 165, 217, 183, 31, 228, 50, 229, 240, 251, 227, 8, 50, 169, 53, 1, 194, 248, 41, 230, 55, 153, 121, 113, 54, 230, 5, 70, 217, 251, 115, 195, 204, 101, 17, 172, 149, 8, 35, 146, 162, 148, 243, 100, 248, 154, 213, 65, 54, 91, 25, 21, 151, 83, 157, 43, 224, 30, 78, 187, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5749fdbed9a25a0693576162965779d2, }, ), received_events: EventHandle { count: 4724029878714260141, key: EventKey( [ 185, 253, 128, 88, 138, 230, 239, 252, 85, 149, 2, 242, 44, 116, 233, 231, 149, 250, 62, 71, 239, 254, 2, 129, ], ), }, sent_events: EventHandle { count: 7097623325717996216, key: EventKey( [ 104, 197, 66, 82, 253, 41, 185, 241, 70, 49, 196, 48, 232, 30, 229, 208, 104, 36, 143, 28, 125, 243, 28, 160, ], ), }, sequence_number: 3188640450665551685, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cc0e6e4661f284a1882948c9e52ff60bc8622e57b4261581fedf4a2c0fb5744e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b0014334eaa7cc62664dbfd4651e5949e239b8b439d8b3bb684b50965c0a52200299846d2e552f849a362a84ebd30c0ac40c702c0c54859e22e8c0a3f6669a4bff4e1737782c01e68ebed122b7f3a26357d8326c05374d012a5af5c5c131efef527ae0d113f63b39b790c0d5bba9471f184ae3aad8fb996a98956683f8af8887c178fddf711cd27c369b565d4c0c54674718458bf2d886952d5897e739186063665dae18b2ca50f9d01aff94cf5c7fa9b3d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b8c2d4c9191cbb9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 52, 234, 167, 204, 98, 102, 77, 191, 212, 101, 30, 89, 73, 226, 57, 184, 180, 57, 216, 179, 187, 104, 75, 80, 150, 92, 10, 82, 32, 2, 153, 132, 109, 46, 85, 47, 132, 154, 54, 42, 132, 235, 211, 12, 10, 196, 12, 112, 44, 12, 84, 133, 158, 34, 232, 192, 163, 246, 102, 154, 75, 255, 78, 23, 55, 120, 44, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e68ebed122b7f3a26357d8326c05374d, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2a5af5c5c131efef527ae0d113f63b39, }, ), received_events: EventHandle { count: 2253956762732368055, key: EventKey( [ 74, 227, 170, 216, 251, 153, 106, 152, 149, 102, 131, 248, 175, 136, 135, 193, 120, 253, 223, 113, 28, 210, 124, 54, ], ), }, sent_events: EventHandle { count: 5145173511091607195, key: EventKey( [ 69, 139, 242, 216, 134, 149, 45, 88, 151, 231, 57, 24, 96, 99, 102, 93, 174, 24, 178, 202, 80, 249, 208, 26, ], ), }, sequence_number: 15687068291544618239, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cc3660115ef643168c689137f143e811466d3b50465e034b3082785a4c6f2b33): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99c012fadc4acff65346ebe880f783ce52374425730351eec5d03d3f53572e62819def2ca6ab4b83bf7b16dd82cfa04ddc9fd017725e1348b6a56c532604c173231412f01e7eeaa17ceb677c5e818770803a80d868095b7467b70434b18f159efbe867d772637960e5fc5c09f0b58a6384b3a2e0bf61b79f998bbc1703e185923f14f9b260dd3e7b6ac1270301163cf96c6bfdec0bf13d68838a4a9226c152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708053a14152a1ff58f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 173, 196, 172, 255, 101, 52, 110, 190, 136, 15, 120, 60, 229, 35, 116, 66, 87, 48, 53, 30, 236, 93, 3, 211, 245, 53, 114, 230, 40, 25, 222, 242, 202, 106, 180, 184, 59, 247, 177, 109, 216, 44, 250, 4, 221, 201, 253, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7725e1348b6a56c532604c173231412f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e7eeaa17ceb677c5e818770803a80d86, }, ), received_events: EventHandle { count: 5423302051053933952, key: EventKey( [ 241, 89, 239, 190, 134, 125, 119, 38, 55, 150, 14, 95, 197, 192, 159, 11, 88, 166, 56, 75, 58, 46, 11, 246, ], ), }, sent_events: EventHandle { count: 4499309039212656923, key: EventKey( [ 89, 35, 241, 79, 155, 38, 13, 211, 231, 182, 172, 18, 112, 48, 17, 99, 207, 150, 198, 191, 222, 192, 191, 19, ], ), }, sequence_number: 1543646884281223382, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd4c034f7010a8eb3d1034833ff5f9e4f39ce9dee9ae66b675c3f4cf2c5685fa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c988011bd796eadf7ea1d3f9507a7abb00f802e3455616e955f6a95d55025901d5e705ae2b55bb9ddd9ec938460f1cc701880b393f7cace1b8cc7227342728a5fc7daf08e97f79942718ceed21a89ab1328e658244c6ef44ff063fa749988d451a9beceab3eaabee3e3318e6a8d225710e00138079d1b8e5dfae9927922e3952e9d24ad267594527437eb92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a409465e47a57365 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 215, 150, 234, 223, 126, 161, 211, 249, 80, 122, 122, 187, 0, 248, 2, 227, 69, 86, 22, 233, 85, 246, 169, 93, 85, 2, 89, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: d5e705ae2b55bb9ddd9ec938460f1cc7, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 880b393f7cace1b8cc7227342728a5fc, }, ), received_events: EventHandle { count: 2852038054309834621, key: EventKey( [ 206, 237, 33, 168, 154, 177, 50, 142, 101, 130, 68, 198, 239, 68, 255, 6, 63, 167, 73, 152, 141, 69, 26, 155, ], ), }, sent_events: EventHandle { count: 3692651166634863340, key: EventKey( [ 230, 168, 210, 37, 113, 14, 0, 19, 128, 121, 209, 184, 229, 223, 174, 153, 39, 146, 46, 57, 82, 233, 210, 74, ], ), }, sequence_number: 13366194580028483538, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd695c61e309ee5bcc03f4bf37f799f7608f046223faf8f7c6e38632709b402d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bc015f31aca42dadaccad1bd1f4b13014316111952f0456fbfab8630381e89b94ed57222398dd79d6a1d86e851c560698b33507d5b398f44f26fdcc916dc126ce67cb2a785886badd3ca75835bf5101bb833d27953e14f8b4b41276b3d74b1708b6e00019ae7781461a13e6272c03a3a050d7a6ca129f6ddcbe8682218acf2403fa3874595fc8775341bb77fa35302695c120a93bb180f68a5c0a6517318a46cfcb0dcf1f937d80cbbebae8b91be83359e4aae5ef63d3e7f8cc03c3b94922101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70876d39ec2421ff024 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 49, 172, 164, 45, 173, 172, 202, 209, 189, 31, 75, 19, 1, 67, 22, 17, 25, 82, 240, 69, 111, 191, 171, 134, 48, 56, 30, 137, 185, 78, 213, 114, 34, 57, 141, 215, 157, 106, 29, 134, 232, 81, 197, 96, 105, 139, 51, 80, 125, 91, 57, 143, 68, 242, 111, 220, 201, 22, 220, 18, 108, 230, 124, 178, 167, 133, 136, 107, 173, 211, 202, 117, 131, 91, 245, 16, 27, 184, 51, 210, 121, 83, 225, 79, 139, 75, 65, 39, 107, 61, 116, 177, 112, 139, 110, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9ae7781461a13e6272c03a3a050d7a6c, }, ), received_events: EventHandle { count: 2479487557167360417, key: EventKey( [ 172, 242, 64, 63, 163, 135, 69, 149, 252, 135, 117, 52, 27, 183, 127, 163, 83, 2, 105, 92, 18, 10, 147, 187, ], ), }, sent_events: EventHandle { count: 8309606133814267672, key: EventKey( [ 164, 108, 252, 176, 220, 241, 249, 55, 216, 12, 187, 235, 174, 139, 145, 190, 131, 53, 158, 74, 174, 94, 246, 61, ], ), }, sequence_number: 10562132158205165374, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cd83d20e939613608f0da06551199def2ff9af60de795c0ca0334654a6ac4980): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e0141a0cd70f6fcf46e80c092ebf7f112397c088d20b5f032de7b974f2f830e2e394138004140ac0bd6476291f55402452c9929f3b168057c01c83a10570c05f7cd70e801dfb639e5746f8af9d6c603092a43436500b86f951a2b3a852b18846c9e1c08d20b62f20afd9eb594c5c7cfa28ad7c6db67c971a43c6e84e1825418807bedf37a3d45006e2f37105940ea85e70c01ce15bd79ceead36d6c3f1cd9072101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc7505feb31dcf35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 160, 205, 112, 246, 252, 244, 110, 128, 192, 146, 235, 247, 241, 18, 57, 124, 8, 141, 32, 181, 240, 50, 222, 123, 151, 79, 47, 131, 14, 46, 57, 65, 56, 0, 65, 64, 172, 11, 214, 71, 98, 145, 245, 84, 2, 69, 44, 153, 41, 243, 177, 104, 5, 124, 1, 200, 58, 16, 87, 12, 5, 247, 205, 112, 232, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dfb639e5746f8af9d6c603092a434365, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3135976672337424312, key: EventKey( [ 132, 108, 158, 28, 8, 210, 11, 98, 242, 10, 253, 158, 181, 148, 197, 199, 207, 162, 138, 215, 198, 219, 103, 201, ], ), }, sent_events: EventHandle { count: 6089677605059732593, key: EventKey( [ 128, 123, 237, 243, 122, 61, 69, 0, 110, 47, 55, 16, 89, 64, 234, 133, 231, 12, 1, 206, 21, 189, 121, 206, ], ), }, sequence_number: 565514286939362282, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cdb0a7f73b43d787f9c6df61202005ab6dc75a19c4e5b20879c0fc7098359244): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a30156abb7098c54921d0debcfc3355ec94b3dd8ea2be746a7d83aac9b8ef0e7498b4447392c9b0794fdf9499dbf88dea50e0644c3e4dd3b40c8ca9a38bd79c70d548d3ca02104c0186017a35596d82965b6f0deb9e31aae880000cab74b4e8f724c471877e862a3eb45b3be3840416408197071b02a30f2a23bd21f5b44c2a747402a1818baca79bc1730f7b7eda5ec970162df711774b7c948844e738147097d813ee3cd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bbe125ac655dc025 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 171, 183, 9, 140, 84, 146, 29, 13, 235, 207, 195, 53, 94, 201, 75, 61, 216, 234, 43, 231, 70, 167, 216, 58, 172, 155, 142, 240, 231, 73, 139, 68, 71, 57, 44, 155, 7, 148, 253, 249, 73, 157, 191, 136, 222, 165, 14, 6, 68, 195, 228, 221, 59, 64, 200, 202, 154, 56, 189, 121, 199, 13, 84, 141, 60, 160, 33, 4, 192, 24, 96, 23, 163, 85, 150, 216, 41, 101, 182, 240, 222, 185, 227, 26, 174, 136, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5137607234742368202, key: EventKey( [ 119, 232, 98, 163, 235, 69, 179, 190, 56, 64, 65, 100, 8, 25, 112, 113, 176, 42, 48, 242, 162, 59, 210, 31, ], ), }, sent_events: EventHandle { count: 1741274882433500251, key: EventKey( [ 186, 202, 121, 188, 23, 48, 247, 183, 237, 165, 236, 151, 1, 98, 223, 113, 23, 116, 183, 201, 72, 132, 78, 115, ], ), }, sequence_number: 14835770323358009217, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ce66505a711fa99ecb08533be9e29a076ea2b4e78f3e7eda3e27314e1ae28f60): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960149217c90494deb21ee87fa9206da9a9e4210ab3acd1ca398e97d9f129ad85854c2d9c4e3d602c5ebd29ce88772ff13e1b6dab0eeca254c76e2c133973a3a299bad023093190857e2b5380000e934989d1c70ff07189f2d7f5908db1e087223e93f334dd4ab328de454b7df4b540a6cf9ea94470349181da4b63a2651b3a45c76626ab861f9077171aafc36762ec2c510f7b5e16b888a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e2ebdfae47d0093a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 33, 124, 144, 73, 77, 235, 33, 238, 135, 250, 146, 6, 218, 154, 158, 66, 16, 171, 58, 205, 28, 163, 152, 233, 125, 159, 18, 154, 216, 88, 84, 194, 217, 196, 227, 214, 2, 197, 235, 210, 156, 232, 135, 114, 255, 19, 225, 182, 218, 176, 238, 202, 37, 76, 118, 226, 193, 51, 151, 58, 58, 41, 155, 173, 2, 48, 147, 25, 8, 87, 226, 181, 56, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 576302545532105961, key: EventKey( [ 159, 45, 127, 89, 8, 219, 30, 8, 114, 35, 233, 63, 51, 77, 212, 171, 50, 141, 228, 84, 183, 223, 75, 84, ], ), }, sent_events: EventHandle { count: 5261127494621817866, key: EventKey( [ 29, 164, 182, 58, 38, 81, 179, 164, 92, 118, 98, 106, 184, 97, 249, 7, 113, 113, 170, 252, 54, 118, 46, 194, ], ), }, sequence_number: 9982347191231385797, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(cfeec9ae44e08f0f1797f20b7a34d5da39a17801d03c6d2b644f3061145daf10): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9910144cfd9ecfc19c212ddc800c442f3306f242dd082a4805673925aa4b4735ffc0be09c191546939c95134107538afc769083d965cbfae1a130343670c17f841c24a1ff7f390100002fe289120e79e55e18cd14a0f382ac55521d01dc16083168100d77c2ff55caa374af48baee949d4f0218c19323e8f3011aad9700affb892a96b74a0687f0c822bbdeec8daaa2acd990a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b74cdb718953cc4b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 207, 217, 236, 252, 25, 194, 18, 221, 200, 0, 196, 66, 243, 48, 111, 36, 45, 208, 130, 164, 128, 86, 115, 146, 90, 164, 180, 115, 95, 252, 11, 224, 156, 25, 21, 70, 147, 156, 149, 19, 65, 7, 83, 138, 252, 118, 144, 131, 217, 101, 203, 250, 225, 161, 48, 52, 54, 112, 193, 127, 132, 28, 36, 161, 255, 127, 57, 1, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6838004710579495471, key: EventKey( [ 205, 20, 160, 243, 130, 172, 85, 82, 29, 1, 220, 22, 8, 49, 104, 16, 13, 119, 194, 255, 85, 202, 163, 116, ], ), }, sent_events: EventHandle { count: 166524974221904047, key: EventKey( [ 193, 147, 35, 232, 243, 1, 26, 173, 151, 0, 175, 251, 137, 42, 150, 183, 74, 6, 135, 240, 200, 34, 187, 222, ], ), }, sequence_number: 11858217154353204716, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d0ce1421ad156e6a830091d91ca1b9b1074682b3782819f9d75dd9fa7c0c3f96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c950038102a100003f095f5fb1fb6b7318b9c73b7a337bf2ded9c8ca1dadfe009cc4822094a410890df9201772456df53e187f9de532e864334044edcbee3c8cf7558c447837e0b9c25e44de335e30835f602101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70831a6be12c203d108 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 129, 2, 161, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8317017876097599807, key: EventKey( [ 185, 199, 59, 122, 51, 123, 242, 222, 217, 200, 202, 29, 173, 254, 0, 156, 196, 130, 32, 148, 164, 16, 137, 13, ], ), }, sent_events: EventHandle { count: 4536652344679932153, key: EventKey( [ 127, 157, 229, 50, 232, 100, 51, 64, 68, 237, 203, 238, 60, 140, 247, 85, 140, 68, 120, 55, 224, 185, 194, 94, ], ), }, sequence_number: 6944413394190720580, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d13eb5acea4c3fdc0a9e086b4ce62e4348bdd3847005f69330151bc2ec99385f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97c2f63b8c18d05260e4a4cd3a91ab51ff4ea39fc7058ee8e9f3d620dd563066ca76e94b2eafa85dd590f99fc68e136b95e00001f9122d5d339d6131842ae166001b4437deb268b702d6cb60222acf5b80553a950c9161ed4a42b3d09180cd0cfa9aba28ded11d49e7c427274cfbbbe32db10695c281b60d34f7c3007272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d2ba124652cad947 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 99, 184, 193, 141, 5, 38, 14, 74, 76, 211, 169, 26, 181, 31, 244, 234, 57, 252, 112, 88, 238, 142, 159, 61, 98, 13, 213, 99, 6, 108, 167, 110, 148, 178, 234, 250, 133, 221, 89, 15, 153, 252, 104, 225, 54, 185, 94, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1429393513713406239, key: EventKey( [ 66, 174, 22, 96, 1, 180, 67, 125, 235, 38, 139, 112, 45, 108, 182, 2, 34, 172, 245, 184, 5, 83, 169, 80, ], ), }, sent_events: EventHandle { count: 665736306854074057, key: EventKey( [ 12, 208, 207, 169, 171, 162, 141, 237, 17, 212, 158, 124, 66, 114, 116, 207, 187, 190, 50, 219, 16, 105, 92, 40, ], ), }, sequence_number: 2812269802789494811, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1765398a1bd88b94869a9306c2a3707f9fd0d929e87269b58f0b29363955a4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d108d1faa83d927b57b796b463cb7804f5b014a0d6c252d977be0bbe76a6c2706f0d5014d9d141bb4e9c8fe5f9ab689a098aa59bd5f784ea2b6e03a18190f541cf28fe034c028fb4613037e86f3c47be66e5ee95d63e7fa6cfb83cc72183f8c1d551664da5ecf2cf97ba92c8f43a9e8e6a6839780661cd31889eb07d78c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080a621c3ce6f80f45 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 141, 31, 170, 131, 217, 39, 181, 123, 121, 107, 70, 60, 183, 128, 79, 91, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 4a0d6c252d977be0bbe76a6c2706f0d5, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4d9d141bb4e9c8fe5f9ab689a098aa59, }, ), received_events: EventHandle { count: 4242591657200476093, key: EventKey( [ 25, 15, 84, 28, 242, 143, 224, 52, 192, 40, 251, 70, 19, 3, 126, 134, 243, 196, 123, 230, 110, 94, 233, 93, ], ), }, sent_events: EventHandle { count: 8272131731461171043, key: EventKey( [ 63, 140, 29, 85, 22, 100, 218, 94, 207, 44, 249, 123, 169, 44, 143, 67, 169, 232, 230, 166, 131, 151, 128, 102, ], ), }, sequence_number: 10148588993501516572, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d17961d63bec07c6045da68d08c36dea17fe2710aefae9e90ec9217017dc2b0f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d0130ce869ed4dfa772ecefdd7160b708ccdb380202a19f07131c9e5181a030f1b246184f4b76483d297e1801bb4a3e108c41015513a8faea9d208e4cc4ce79aa22427a00efef043299b82b431831310ed4abc4b147b566894ffa184e395b7fe60f837f7dce3067decdb1336f3418b56b3f73775b0d40c87835a37066e91c1cda5d38521f4ed2651be1cc3f33239d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085188f833e1177c32 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 134, 158, 212, 223, 167, 114, 236, 239, 221, 113, 96, 183, 8, 204, 219, 56, 2, 2, 161, 159, 7, 19, 28, 158, 81, 129, 160, 48, 241, 178, 70, 24, 79, 75, 118, 72, 61, 41, 126, 24, 1, 187, 74, 62, 16, 140, 65, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5513a8faea9d208e4cc4ce79aa22427a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4840165192648421359, key: EventKey( [ 49, 49, 14, 212, 171, 196, 177, 71, 181, 102, 137, 79, 250, 24, 78, 57, 91, 127, 230, 15, 131, 127, 125, 206, ], ), }, sent_events: EventHandle { count: 3778295451143268144, key: EventKey( [ 181, 107, 63, 115, 119, 91, 13, 64, 200, 120, 53, 163, 112, 102, 233, 28, 28, 218, 93, 56, 82, 31, 78, 210, ], ), }, sequence_number: 11322950237252819813, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1ab06384a23fdd122d3058529c5ad9b3dc95c8d2fdc2cc6cc0601cef674d46b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c960033db41f010b9799b9d40de2dd47ecbef50587c8c900ce55f208c1b7832d18bd5343c5dc3abf1493ca148d897591d695c94014b1d6457b71f77784c04abd31189ad1bebe98bd31662f890e07eeb31053a348c485f35bee316995231311edc26c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080e92347649e41b9a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 61, 180, 31, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0b9799b9d40de2dd47ecbef50587c8c9, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3279666993362523598, key: EventKey( [ 189, 83, 67, 197, 220, 58, 191, 20, 147, 202, 20, 141, 137, 117, 145, 214, 149, 201, 64, 20, 177, 214, 69, 123, ], ), }, sent_events: EventHandle { count: 3584103069173413745, key: EventKey( [ 154, 209, 190, 190, 152, 189, 49, 102, 47, 137, 14, 7, 238, 179, 16, 83, 163, 72, 196, 133, 243, 91, 238, 49, ], ), }, sequence_number: 7837086959169410409, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d1b95a5cc46233812351ad98cbbd62d054bf16d84df081588e26c937b4687e4e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9690c3295320d9740faaef748d31400019facc08835654d77dfde2d906615939493248b3afe486d6218c860cdb28a3e8747819c779c50ef865a3099d994711906b95e0770de311f1554186cc33b502f67289535745100d32c1fc5ec536e73bd4b3b366ca4a892010423132101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085e2410e8c580a9b8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 149, 50, 13, 151, 64, 250, 174, 247, 72, 211, 20, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9facc08835654d77dfde2d9066159394, }, ), received_events: EventHandle { count: 7092405244919489683, key: EventKey( [ 200, 96, 205, 178, 138, 62, 135, 71, 129, 156, 119, 156, 80, 239, 134, 90, 48, 153, 217, 148, 113, 25, 6, 185, ], ), }, sent_events: EventHandle { count: 6058783172742612830, key: EventKey( [ 108, 195, 59, 80, 47, 103, 40, 149, 53, 116, 81, 0, 211, 44, 31, 197, 236, 83, 110, 115, 189, 75, 59, 54, ], ), }, sequence_number: 1378950315707507820, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d2034f830a268d5ec2bf61d960e8ac3db330f593ddf69e0557a1d76550f8e9ad): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ad01408094dc3ed8858db3ccadb10393e0aef5cf4e1f8aeebd32ae34ca166682d66423a59c6158a2ca1538d53e1c6451c0099f9b36cc23b582f9937b8d8f8ed3b83d61012eb0d08b956b6d92d25f0e7e8485ed8b01e482ddd628d55480dcdd190396ac761b21bbda70c46967261854ad85c4b7a9f98f881c632967b5fd2c39e844761c3135a743abb30b6944e46c1829465b18ac730890a3cdbc862f50b7dfbea0d336aa400cb0860d7b0e01c71acc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d4c76b143304c7e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 128, 148, 220, 62, 216, 133, 141, 179, 204, 173, 177, 3, 147, 224, 174, 245, 207, 78, 31, 138, 238, 189, 50, 174, 52, 202, 22, 102, 130, 214, 100, 35, 165, 156, 97, 88, 162, 202, 21, 56, 213, 62, 28, 100, 81, 192, 9, 159, 155, 54, 204, 35, 181, 130, 249, 147, 123, 141, 143, 142, 211, 184, 61, 97, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2eb0d08b956b6d92d25f0e7e8485ed8b, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e482ddd628d55480dcdd190396ac761b, }, ), received_events: EventHandle { count: 2767296788470348577, key: EventKey( [ 84, 173, 133, 196, 183, 169, 249, 143, 136, 28, 99, 41, 103, 181, 253, 44, 57, 232, 68, 118, 28, 49, 53, 167, ], ), }, sent_events: EventHandle { count: 7846471668744825667, key: EventKey( [ 41, 70, 91, 24, 172, 115, 8, 144, 163, 205, 188, 134, 47, 80, 183, 223, 190, 160, 211, 54, 170, 64, 12, 176, ], ), }, sequence_number: 14707286340483616134, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d21940c090d4f131d4ebb03f59be9cf32254a73e87dc751d4585690860d95c2f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e40fc626e469f456131315d8cd2d9461658ec835ecd72d3fadd2e61e61863addc7ee27b7c65c019966d2d609558ad6280976c2839dc8d28f18f7a46c574677f08cbcfef46bc699cf6ea1fbcc71ce033812433a96c0bf9fc947aed42f90ddc015a7c471b4fd4787053ee3c0642e2fbb401b02cc1c14f8923471a0de840274b401036fbea047cde8f23182a9f0eac2936591c2f82ae6c9a80ca8f3062acc48fa6975cfb7436ea94df2c0d18f0e0b7370a1e5906993ac3cbb3ef1dc5fd8dddd03084de48b9a9d90c36ce2f2d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087a2cc31d79e6bc19 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 64, 252, 98, 110, 70, 159, 69, 97, 49, 49, 93, 140, 210, 217, 70, 22, 88, 236, 131, 94, 205, 114, 211, 250, 221, 46, 97, 230, 24, 99, 173, 220, 126, 226, 123, 124, 101, 192, 25, 150, 109, 45, 96, 149, 88, 173, 98, 128, 151, 108, 40, 57, 220, 141, 40, 241, 143, 122, 70, 197, 116, 103, 127, 8, 203, 207, 239, 70, 188, 105, 156, 246, 234, 31, 188, 199, 28, 224, 51, 129, 36, 51, 169, 108, 11, 249, 252, 148, 122, 237, 66, 249, 13, 220, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5a7c471b4fd4787053ee3c0642e2fbb4, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b02cc1c14f8923471a0de840274b4010, }, ), received_events: EventHandle { count: 2562511337236921142, key: EventKey( [ 42, 159, 14, 172, 41, 54, 89, 28, 47, 130, 174, 108, 154, 128, 202, 143, 48, 98, 172, 196, 143, 166, 151, 92, ], ), }, sent_events: EventHandle { count: 949379452145923323, key: EventKey( [ 240, 224, 183, 55, 10, 30, 89, 6, 153, 58, 195, 203, 179, 239, 29, 197, 253, 141, 221, 208, 48, 132, 222, 72, ], ), }, sequence_number: 3256047787151305145, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d21f0ea8d41ce7e7ad3b72fae7934b92ab902ba9875ac6bdfbdece8ea1daec7f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9cb015e8e3aa296304a2170eaf355d7af87474aa272e70b11b5e19f6f7455e4bf6860136d0fcc82a024bd69eca1aa0c015e42eb8aba00171067d6691d449a1b7ed56fc762d76fde5ccfdddc6ea0b3473e9558584335dfc0d5f8514584ac4a844ebf015e98285d8223116b2dadc1e64154cb370163d530fb20cd7357c89c4662b7bc821e406cdcb5922f7b02186234a97dc2ef29d3104266638df195d2f263428c30c4ceb47c8af57ef9bfe447187c94ab34dfb3665850efcbfb9f3ad958ff5687ca508ca34f4d8df8c8eb2eaeec2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70892523587be8c4af2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 58, 162, 150, 48, 74, 33, 112, 234, 243, 85, 215, 175, 135, 71, 74, 162, 114, 231, 11, 17, 181, 225, 159, 111, 116, 85, 228, 191, 104, 96, 19, 109, 15, 204, 130, 160, 36, 189, 105, 236, 161, 170, 12, 1, 94, 66, 235, 138, 186, 0, 23, 16, 103, 214, 105, 29, 68, 154, 27, 126, 213, 111, 199, 98, 215, 111, 222, 92, 207, 221, 220, 110, 160, 179, 71, 62, 149, 88, 88, 67, 53, 223, 192, 213, 248, 81, 69, 132, 172, 74, 132, 78, 191, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5e98285d8223116b2dadc1e64154cb37, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 63d530fb20cd7357c89c4662b7bc821e, }, ), received_events: EventHandle { count: 178788917374118976, key: EventKey( [ 98, 52, 169, 125, 194, 239, 41, 211, 16, 66, 102, 99, 141, 241, 149, 210, 242, 99, 66, 140, 48, 196, 206, 180, ], ), }, sent_events: EventHandle { count: 5180476549680695932, key: EventKey( [ 124, 148, 171, 52, 223, 179, 102, 88, 80, 239, 203, 251, 159, 58, 217, 88, 255, 86, 135, 202, 80, 140, 163, 79, ], ), }, sequence_number: 17054620429122571597, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d2c59ecac40c228cde5d2bf811dc1c0b52638bc41e47e0ab26fad4bccc105d6d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133ee5d24cfff453d5e962bc853f81d821090e5f9f9d6fbd1d36bf981fdcdbf837ccec0b8ffaa90e1d23017201f8e8899652325e4000108b326e734bece7ac81133176863b85219ed52c2f13d667618a25f2aeb81715e8b447426d9ca1b26f0d07ed161c9466f1ab45fc6b898ce6a0118abd5ebc3be6f556150a0ef4d1c680b965f76d5794dd5a37c1a03f841ec8eb67b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869ddcb68a2f80a77 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 93, 36, 207, 255, 69, 61, 94, 150, 43, 200, 83, 248, 29, 130, 16, 144, 229, 249, 249, 214, 251, 209, 211, 107, 249, 129, 253, 205, 191, 131, 124, 206, 192, 184, 255, 170, 144, 225, 210, 48, 23, 32, 31, 142, 136, 153, 101, 35, 37, 228, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 08b326e734bece7ac81133176863b852, }, ), received_events: EventHandle { count: 8531574652656610585, key: EventKey( [ 162, 95, 42, 235, 129, 113, 94, 139, 68, 116, 38, 217, 202, 27, 38, 240, 208, 126, 209, 97, 201, 70, 111, 26, ], ), }, sent_events: EventHandle { count: 102121096899616692, key: EventKey( [ 171, 213, 235, 195, 190, 111, 85, 97, 80, 160, 239, 77, 28, 104, 11, 150, 95, 118, 213, 121, 77, 213, 163, 124, ], ), }, sequence_number: 8914469657796674330, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d3f3583fc6eb95219274f59bf82d4f5d503678c077308069823b6108a7b24627): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9830116535383c0f53b6684e96a6c6c8b743c47f3796bedf7f701e37f5c8fe26a706804f978b01c46f35401e69fd59ffb07b9cb76192c22eb9244d0f07b7d831145104b18ff659f106ea4367b832d32b5e6e8775a7a4c1ed53ea0db7976350b63d6f6674218cb19592bbab7466894b8963f5dd38dacd2e0f365ab03bb541614910b1dd30ccb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084060c5ae9807323f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 83, 83, 131, 192, 245, 59, 102, 132, 233, 106, 108, 108, 139, 116, 60, 71, 243, 121, 107, 237, 247, 247, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e37f5c8fe26a706804f978b01c46f354, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e69fd59ffb07b9cb76192c22eb9244d0, }, ), received_events: EventHandle { count: 5408899093994765296, key: EventKey( [ 255, 101, 159, 16, 110, 164, 54, 123, 131, 45, 50, 181, 230, 232, 119, 90, 122, 76, 30, 213, 62, 160, 219, 121, ], ), }, sent_events: EventHandle { count: 4785064529749554550, key: EventKey( [ 203, 25, 89, 43, 186, 183, 70, 104, 148, 184, 150, 63, 93, 211, 141, 172, 210, 224, 243, 101, 171, 3, 187, 84, ], ), }, sequence_number: 14631301411121468438, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d3f4b9954b401e9844bfcf76f5d3a63f3dd32960973feadb9de140cd504bc87e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b8015b799744c567dc05032c9627932cdff4bcd398754ea7ef1614fdbd2e77d0b0588c14fbee20aeba5bdcc103c895ddee5b11f965cec91f10cbd0a7516fb460c4e3c30ece4713d9ffc081575f3f04bc2c1b571e1421290fc05b0b132e72017b1fa2088816ed57094b532f2e0c25cf007e40f2415264f7291886753157c4f67d9951ed31ca857cbaced3439d59ddd9f42b2c5684577080d54718c8836774f070b19a8ecb95144dd1ffc113ea7012c01f39245e98f855f7fc615f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081c16ef07095498ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 121, 151, 68, 197, 103, 220, 5, 3, 44, 150, 39, 147, 44, 223, 244, 188, 211, 152, 117, 78, 167, 239, 22, 20, 253, 189, 46, 119, 208, 176, 88, 140, 20, 251, 238, 32, 174, 186, 91, 220, 193, 3, 200, 149, 221, 238, 91, 17, 249, 101, 206, 201, 31, 16, 203, 208, 167, 81, 111, 180, 96, 196, 227, 195, 14, 206, 71, 19, 217, 255, 192, 129, 87, 95, 63, 4, 188, 44, 27, 87, 30, 20, 33, 41, 15, 192, 91, 11, 19, 46, 114, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7b1fa2088816ed57094b532f2e0c25cf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3023995979259068542, key: EventKey( [ 134, 117, 49, 87, 196, 246, 125, 153, 81, 237, 49, 202, 133, 124, 186, 206, 211, 67, 157, 89, 221, 217, 244, 43, ], ), }, sent_events: EventHandle { count: 5176184566725236268, key: EventKey( [ 200, 131, 103, 116, 240, 112, 177, 154, 142, 203, 149, 20, 77, 209, 255, 193, 19, 234, 112, 18, 192, 31, 57, 36, ], ), }, sequence_number: 6873052645573564510, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d427ccdeb123d66fe466d09b32d2d753949ebdfb63646105216e2a69825707e1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b201559735b9bda330fa59356ffc31fe928f4854be1ceff5c521ddad8cc0078d84256eec715beb130456f7e7d7fd4caf6bb61344eebc2bd96bbe8640a096e7a57e8844d1db0cfbad61ddbe6abc0f3a8b11d694534ca286e80140f251793d6668f5f4ccb5b879a6c650002d8b8e3d5ac37a66183f498bc17effba96abab65928ffa646ca39f7b35fff7545ee3d88fb05a7456521870f50faf032b755b7e23c424b5b20df7805ec2594f7225834786d44737bc564b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a4f6de491d22d10a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 53, 185, 189, 163, 48, 250, 89, 53, 111, 252, 49, 254, 146, 143, 72, 84, 190, 28, 239, 245, 197, 33, 221, 173, 140, 192, 7, 141, 132, 37, 110, 236, 113, 91, 235, 19, 4, 86, 247, 231, 215, 253, 76, 175, 107, 182, 19, 68, 238, 188, 43, 217, 107, 190, 134, 64, 160, 150, 231, 165, 126, 136, 68, 209, 219, 12, 251, 173, 97, 221, 190, 106, 188, 15, 58, 139, 17, 214, 148, 83, 76, 162, 134, 232, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 40f251793d6668f5f4ccb5b879a6c650, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7384429331374574381, key: EventKey( [ 63, 73, 139, 193, 126, 255, 186, 150, 171, 171, 101, 146, 143, 250, 100, 108, 163, 159, 123, 53, 255, 247, 84, 94, ], ), }, sent_events: EventHandle { count: 5933057491965303011, key: EventKey( [ 112, 245, 15, 175, 3, 43, 117, 91, 126, 35, 196, 36, 181, 178, 13, 247, 128, 94, 194, 89, 79, 114, 37, 131, ], ), }, sequence_number: 5428733346456045127, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d42c31329887f25c64f3758defaab17f59ef5ab6c90945689dc4060b9e0396ff): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96114e212a0b749a8ca193a882a9c893fc1d4c1a60e9f0000018648255cf308361884f0ceb898168e7520b7799e9f2604280c503f5cd0e909f2da96015f553a2e5a180eafd5505c9f3e49e6634bd9dfe0e7d8bc447314c2cdf1439e79b6474bf114332101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70877bcd1b5b0e6b338 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 18, 160, 183, 73, 168, 202, 25, 58, 136, 42, 156, 137, 63, 193, 212, 193, 166, 14, 159, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3893629454949844481, key: EventKey( [ 132, 240, 206, 184, 152, 22, 142, 117, 32, 183, 121, 158, 159, 38, 4, 40, 12, 80, 63, 92, 208, 233, 9, 242, ], ), }, sent_events: EventHandle { count: 6498195450682775258, key: EventKey( [ 14, 175, 213, 80, 92, 159, 62, 73, 230, 99, 75, 217, 223, 224, 231, 216, 188, 68, 115, 20, 194, 205, 241, 67, ], ), }, sequence_number: 3680832101096520094, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d47ddb19c2f3b7fab6e83e77f043bef1d42ca385977d4a52d4823ac23d139730): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501480ccb9c5b67d845ab4bf27460ffcdaa885dcf5daad2f1a7ff6f0f3f0f4fc74c5f4fb1df20c621c8065cbe43ed58994e81b9bc974cd0d2a0a056978adab9be91b2bf17ddcfde99ad6401a68abcb01a223095aafad8a2097ff58c00c8752c4192300644184372432147088766fd7942e25f87771e6b3d99defc4056a28763baed57174b1718227b6ab045564ea08a9220135c3817335ed86980d975f657cccf0c2a005418712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70828503a2dc7a7d0ff Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 12, 203, 156, 91, 103, 216, 69, 171, 75, 242, 116, 96, 255, 205, 170, 136, 93, 207, 93, 170, 210, 241, 167, 255, 111, 15, 63, 15, 79, 199, 76, 95, 79, 177, 223, 32, 198, 33, 200, 6, 92, 190, 67, 237, 88, 153, 78, 129, 185, 188, 151, 76, 208, 210, 160, 160, 86, 151, 138, 218, 185, 190, 145, 178, 191, 23, 221, 207, 222, 153, 173, 100, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a68abcb01a223095aafad8a2097ff58c, }, ), key_rotation_capability: None, received_events: EventHandle { count: 4901658649156154824, key: EventKey( [ 67, 114, 67, 33, 71, 8, 135, 102, 253, 121, 66, 226, 95, 135, 119, 30, 107, 61, 153, 222, 252, 64, 86, 162, ], ), }, sent_events: EventHandle { count: 1678460952543650695, key: EventKey( [ 34, 123, 106, 176, 69, 86, 78, 160, 138, 146, 32, 19, 92, 56, 23, 51, 94, 216, 105, 128, 217, 117, 246, 87, ], ), }, sequence_number: 8149355885409128396, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d4c7004e0eaaab0c2ef8361e04480f8065337d57652f32062aa983083623a24f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c0f1d589b46be0ed62a8c30d555293e8d01dd89d0a396a14eecc40766b5db669f76006a9a77f59e754073188305c38e6f634458398fa7f2b4303886d57c7939da9dfbc6151ff06df3fc7507181046896794ce67b4352851e66874a38c90fdaab62b8f563b3957d4b5010adf432101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708171311937a853233 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 88, 155, 70, 190, 14, 214, 42, 140, 48, 213, 85, 41, 62, 141, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: dd89d0a396a14eecc40766b5db669f76, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8304767038454733418, key: EventKey( [ 131, 5, 195, 142, 111, 99, 68, 88, 57, 143, 167, 242, 180, 48, 56, 134, 213, 124, 121, 57, 218, 157, 251, 198, ], ), }, sent_events: EventHandle { count: 537613852992347925, key: EventKey( [ 16, 70, 137, 103, 148, 206, 103, 180, 53, 40, 81, 230, 104, 116, 163, 140, 144, 253, 170, 182, 43, 143, 86, 59, ], ), }, sequence_number: 4890638722809485113, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d4fd4dac46c7b17629f51bc4626bba8ca5d48fc43096e0c95612f9bce2f6a26c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940127e66eb2455b41285bd04e6871355a4e2ec9d180d635b15522eab4cc325fd42c494a9b720cfac60701c1a80c6d59fadd50835eea4f837bdc3601d7dcff9210959efc95063cb7b9ccecfaa2426381f098c7531840a514662c77baa62fc0daa84698c3047dcb7b20e843e2cb21e46c712b7fb74218d1f19aa4dab5fca829e0c708e8f0709b1b2285a7f3c9e1265e7769d470c077c22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081eff916e5aeae1d7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 230, 110, 178, 69, 91, 65, 40, 91, 208, 78, 104, 113, 53, 90, 78, 46, 201, 209, 128, 214, 53, 177, 85, 34, 234, 180, 204, 50, 95, 212, 44, 73, 74, 155, 114, 12, 250, 198, 7, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: c1a80c6d59fadd50835eea4f837bdc36, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d7dcff9210959efc95063cb7b9ccecfa, }, ), received_events: EventHandle { count: 6036961984243778210, key: EventKey( [ 64, 165, 20, 102, 44, 119, 186, 166, 47, 192, 218, 168, 70, 152, 195, 4, 125, 203, 123, 32, 232, 67, 226, 203, ], ), }, sent_events: EventHandle { count: 4807450951804576801, key: EventKey( [ 209, 241, 154, 164, 218, 181, 252, 168, 41, 224, 199, 8, 232, 240, 112, 155, 27, 34, 133, 167, 243, 201, 225, 38, ], ), }, sequence_number: 14012880356419139422, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d53174e5a5b0a9b92c9fc365b1a41b0b270a1e8371aae9db44c7db49c3141150): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a301464603e3395d63061cc1da3ed9ca8d8d3d2d64d229c0145e42a5e699f2dacc920f1f49257f537074f233e8332c5cac1705cc112ee26120af74f63b005592c4aefa6d3800aca89a0156b752d97a28adc71c085d1a6d5b725200d5abda017f9a342918d9e8450414e08bc7327ff3c184edcbb9a4836883697e3f28d8303f791c1b902818fa0531f258402f7360b8e04e70e11ebb06165552813fc1fdea5f88d66552d2802101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c7d9a30df7005f4c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 70, 3, 227, 57, 93, 99, 6, 28, 193, 218, 62, 217, 202, 141, 141, 61, 45, 100, 210, 41, 192, 20, 94, 66, 165, 230, 153, 242, 218, 204, 146, 15, 31, 73, 37, 127, 83, 112, 116, 242, 51, 232, 51, 44, 92, 172, 23, 5, 204, 17, 46, 226, 97, 32, 175, 116, 246, 59, 0, 85, 146, 196, 174, 250, 109, 56, 0, 172, 168, 154, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 56b752d97a28adc71c085d1a6d5b7252, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2969167924626631637, key: EventKey( [ 217, 232, 69, 4, 20, 224, 139, 199, 50, 127, 243, 193, 132, 237, 203, 185, 164, 131, 104, 131, 105, 126, 63, 40, ], ), }, sent_events: EventHandle { count: 2922865967270670552, key: EventKey( [ 250, 5, 49, 242, 88, 64, 47, 115, 96, 184, 224, 78, 112, 225, 30, 187, 6, 22, 85, 82, 129, 63, 193, 253, ], ), }, sequence_number: 9282572379308449770, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d535fcbf3d1dae5a641fc68315100ea17ace9daebe206ddddeb47fe8f4707c01): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c999013c048df8cc296727a66a99c4ccb2ff0b50cc59ba8ea3111a46d5a32d070ce3808b5abdeb93eac1a3c5c581db99b086f7f4b9dd2a56997704c5ae2d8b260170010082bc2427302fb87d9250f29df600287acb7bbe04cc1218b34d4206184fec166164d6a43686a91d58be95d3b73dd1fe210acc97da422203186a36229ba7d402f0550873800c9e5520a9c4a3a8a3e6b56e500ee393d55513b32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cf6c0258de090a8d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 4, 141, 248, 204, 41, 103, 39, 166, 106, 153, 196, 204, 178, 255, 11, 80, 204, 89, 186, 142, 163, 17, 26, 70, 213, 163, 45, 7, 12, 227, 128, 139, 90, 189, 235, 147, 234, 193, 163, 197, 197, 129, 219, 153, 176, 134, 247, 244, 185, 221, 42, 86, 153, 119, 4, 197, 174, 45, 139, 38, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 70010082bc2427302fb87d9250f29df6, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1354462804098906664, key: EventKey( [ 179, 77, 66, 6, 24, 79, 236, 22, 97, 100, 214, 164, 54, 134, 169, 29, 88, 190, 149, 211, 183, 61, 209, 254, ], ), }, sent_events: EventHandle { count: 225816437938981409, key: EventKey( [ 106, 54, 34, 155, 167, 212, 2, 240, 85, 8, 115, 128, 12, 158, 85, 32, 169, 196, 163, 168, 163, 230, 181, 110, ], ), }, sequence_number: 12903751733144129104, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d5d92476d80952ce838c04b30f9df822a12d67c984ff3114da0cb986be3fe2eb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9940137f2952a44d04d36b71a49c44483e97c63e98cf42442dda1277edc22765f2c1eb5e5c5cde00d55eefabee62db7daf5d42e77da2a168c1a6a0108a8579d28b7e2b76966ab1149e1657300985753cd754d212b186b8cf49ac3634e7f01a2b56301a896a33067bb38febd9ee1948c3e111c3bbd7318cc7c0aff4b3218199c339bd77dd630503b9350597c0c1c4ed8529a6609af516d2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708559d766361b1cc16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 242, 149, 42, 68, 208, 77, 54, 183, 26, 73, 196, 68, 131, 233, 124, 99, 233, 140, 244, 36, 66, 221, 161, 39, 126, 220, 34, 118, 95, 44, 30, 181, 229, 197, 205, 224, 13, 85, 238, 250, 190, 230, 45, 183, 218, 245, 212, 46, 119, 218, 42, 22, 140, 26, 106, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 08a8579d28b7e2b76966ab1149e16573, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3107850386213656472, key: EventKey( [ 107, 140, 244, 154, 195, 99, 78, 127, 1, 162, 181, 99, 1, 168, 150, 163, 48, 103, 187, 56, 254, 189, 158, 225, ], ), }, sent_events: EventHandle { count: 8339887076694461588, key: EventKey( [ 204, 124, 10, 255, 75, 50, 24, 25, 156, 51, 155, 215, 125, 214, 48, 80, 59, 147, 80, 89, 124, 12, 28, 78, ], ), }, sequence_number: 7877269678158664408, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d62f37f159ed10d2240cbc6ba007a920580fac0cf842df3420d5b5774a0648cb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9560952af241517c1484b2200008bb6697612dd0061181a25042999195a9fedc9095ecc6b54673c9ec4b339b3306f29ee07940bb23c701886a683b749c1a3b0f875d082dac73329a956a1d546bfc86c777d5e1a75d1581b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e815a660b7317354 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 175, 36, 21, 23, 193, 72, 75, 34, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6989829693044799115, key: EventKey( [ 26, 37, 4, 41, 153, 25, 90, 159, 237, 201, 9, 94, 204, 107, 84, 103, 60, 158, 196, 179, 57, 179, 48, 111, ], ), }, sent_events: EventHandle { count: 8087534793648500265, key: EventKey( [ 134, 166, 131, 183, 73, 193, 163, 176, 248, 117, 208, 130, 218, 199, 51, 41, 169, 86, 161, 213, 70, 191, 200, 108, ], ), }, sequence_number: 1970555137858370935, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d63a82f132ba4a5fd00eea3f473844d24c1b2190d194dd68925efe16d7edcf03): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998012b1da432eb5adc346d72343c9c155f2af6ae3196fd0a9e0dbcf6aaa8333735a8b9abcebc15d7dd530559caa701120d23bb914d490a4627c75167acc968015ea2c70bc6a7db6c2b891d93fefad1e13fada97c1c843e1918bba96435009438dbb732163fb2a2a6007491f8e0925723552f790e304cc01508180d7450e6641329043783e5515c372148b26f5609e74b4b18f359f8011fedc3902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7089cb1510a60ce05cc Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 164, 50, 235, 90, 220, 52, 109, 114, 52, 60, 156, 21, 95, 42, 246, 174, 49, 150, 253, 10, 158, 13, 188, 246, 170, 168, 51, 55, 53, 168, 185, 171, 206, 188, 21, 215, 221, 83, 5, 89, 202, 167, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 120d23bb914d490a4627c75167acc968, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 5ea2c70bc6a7db6c2b891d93fefad1e1, }, ), received_events: EventHandle { count: 1819036557389704511, key: EventKey( [ 187, 169, 100, 53, 0, 148, 56, 219, 183, 50, 22, 63, 178, 162, 166, 0, 116, 145, 248, 224, 146, 87, 35, 85, ], ), }, sent_events: EventHandle { count: 582583160270649647, key: EventKey( [ 13, 116, 80, 230, 100, 19, 41, 4, 55, 131, 229, 81, 92, 55, 33, 72, 178, 111, 86, 9, 231, 75, 75, 24, ], ), }, sequence_number: 10431441879353022963, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d69feecf4d652926cd05a9356bdc9813f4e2060ab4e6ca258b7b1e4c73e28241): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014da43a3ed02e185e9353b8f811a7447c9c5d5fb729a248ec3be3b6384304fdb08ca88a0e028ce9e79fd89bacdc61300ace3846b0aa8e13847fd7170dc4d9685783bc78dcf894cddee1584070ce1101627474190c8fdccf849eaab3ccb21f900065beabbac86b2056184e443915b74562f87078073e3f172761be43471be837bbc4b6fb2cab21c3ea0218b49e135177a357f05d18024c83e977249dc6c70dabf5d67fb6cc9e967172044a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d7c1aaa2953ae2e7 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 164, 58, 62, 208, 46, 24, 94, 147, 83, 184, 248, 17, 167, 68, 124, 156, 93, 95, 183, 41, 162, 72, 236, 59, 227, 182, 56, 67, 4, 253, 176, 140, 168, 138, 14, 2, 140, 233, 231, 159, 216, 155, 172, 220, 97, 48, 10, 206, 56, 70, 176, 170, 142, 19, 132, 127, 215, 23, 13, 196, 217, 104, 87, 131, 188, 120, 220, 248, 148, 205, 222, 225, 88, 64, 112, 206, 17, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 627474190c8fdccf849eaab3ccb21f90, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6206078796385992293, key: EventKey( [ 78, 68, 57, 21, 183, 69, 98, 248, 112, 120, 7, 62, 63, 23, 39, 97, 190, 67, 71, 27, 232, 55, 187, 196, ], ), }, sent_events: EventHandle { count: 210194881999338422, key: EventKey( [ 180, 158, 19, 81, 119, 163, 87, 240, 93, 24, 2, 76, 131, 233, 119, 36, 157, 198, 199, 13, 171, 245, 214, 127, ], ), }, sequence_number: 5333513690897370294, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d6b7abf9cf1ea340e11548f86ebfe0c0849302ea3dee91dba31989c6e0aa7d15): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9960139ede8756963a43d2ac1b4ad6c0b5241fe6df8e33a6eb3528bd8010c67597acf72134464046823d559c95811e191d19ad867469a446194725a7b0001701a4c490e56b2c27c3518535fb8fb461aa6e0c56309507a18557e524674a080d5ee47de80a88f029e6c132c36a99455ba7e887efed7a114121841a3cd07470d9bd0a6093d0dbf52cdb98d334f7b291ad96e91fbc9d8c7c194362101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70822c54227d2494045 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 237, 232, 117, 105, 99, 164, 61, 42, 193, 180, 173, 108, 11, 82, 65, 254, 109, 248, 227, 58, 110, 179, 82, 139, 216, 1, 12, 103, 89, 122, 207, 114, 19, 68, 100, 4, 104, 35, 213, 89, 201, 88, 17, 225, 145, 209, 154, 216, 103, 70, 154, 68, 97, 148, 114, 90, 123, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 701a4c490e56b2c27c3518535fb8fb46, }, ), received_events: EventHandle { count: 8813554794890307098, key: EventKey( [ 85, 126, 82, 70, 116, 160, 128, 213, 238, 71, 222, 128, 168, 143, 2, 158, 108, 19, 44, 54, 169, 148, 85, 186, ], ), }, sent_events: EventHandle { count: 1302844141276661886, key: EventKey( [ 65, 163, 205, 7, 71, 13, 155, 208, 166, 9, 61, 13, 191, 82, 205, 185, 141, 51, 79, 123, 41, 26, 217, 110, ], ), }, sequence_number: 3932981438681054097, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d74767365ae4653707984345abc8a81067552c170a0dede728d03ad9b41faa4a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0f78bec3d763eb40caca90184e0424870000360c62fd4477623618ea9dc9488b83a03b8d78816cf8ba5707203a27edb0d5c9333dabf6d97411600718106cca0427c5908a95f3ed5a9c1cbf309805bb7fa43648926d4f839d166bd8732101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70818a2ec0980e58ac3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 120, 190, 195, 215, 99, 235, 64, 202, 202, 144, 24, 78, 4, 36, 135, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3918825763958295606, key: EventKey( [ 234, 157, 201, 72, 139, 131, 160, 59, 141, 120, 129, 108, 248, 186, 87, 7, 32, 58, 39, 237, 176, 213, 201, 51, ], ), }, sent_events: EventHandle { count: 531443949600418621, key: EventKey( [ 16, 108, 202, 4, 39, 197, 144, 138, 149, 243, 237, 90, 156, 28, 191, 48, 152, 5, 187, 127, 164, 54, 72, 146, ], ), }, sequence_number: 8347539654207295341, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d814b8be7639954956e630060b88b61d4b6d8555df190db28accfb1ac94911b5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b7ce34ef7a59de65ff07b78011953561e26045d821ac546d0572be33e0158ae33c6faecaef8c1b3708f693dd50473596b6e39e30f7b188dcb01c99a2b0deea3b1c101c772a4bfcb6279ebf6663b0c20bf252cc739b011183894e689cdd3abbc16db2329d4d633eb4d1750012406dcd0276d776286bc7bbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70826032e69359a4c35 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 124, 227, 78, 247, 165, 157, 230, 95, 240, 123, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1953561e26045d821ac546d0572be33e, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 58ae33c6faecaef8c1b3708f693dd504, }, ), received_events: EventHandle { count: 8867556027120966003, key: EventKey( [ 141, 203, 1, 201, 154, 43, 13, 238, 163, 177, 193, 1, 199, 114, 164, 191, 203, 98, 121, 235, 246, 102, 59, 12, ], ), }, sent_events: EventHandle { count: 1274582222147796768, key: EventKey( [ 56, 148, 230, 137, 205, 211, 171, 188, 22, 219, 35, 41, 212, 214, 51, 235, 77, 23, 80, 1, 36, 6, 220, 208, ], ), }, sequence_number: 13653713980667424039, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d81c480735b7bbf4e0c5d65bbd32e04ae7d1785e3cd169ec9c3c84a92add756b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97528052d6f16b98f0139128673d21a80d4aa0d2429c731fe8e02420f29ae7c62f1a83bc3435229ea263d0000e4603ee83985113718114567f70107423ae9cfde46bd355999a23c667d8ab173ddea688a39b93ca41e182ed60ae3c820acad709c357f65ac2d474cff705a1ace6008faeb3f70ed0252452101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081a6e4db498438a14 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 5, 45, 111, 22, 185, 143, 1, 57, 18, 134, 115, 210, 26, 128, 212, 170, 13, 36, 41, 199, 49, 254, 142, 2, 66, 15, 41, 174, 124, 98, 241, 168, 59, 195, 67, 82, 41, 234, 38, 61, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3968099230446149860, key: EventKey( [ 17, 69, 103, 247, 1, 7, 66, 58, 233, 207, 222, 70, 189, 53, 89, 153, 162, 60, 102, 125, 138, 177, 115, 221, ], ), }, sent_events: EventHandle { count: 2207956483550374122, key: EventKey( [ 46, 214, 10, 227, 200, 32, 172, 173, 112, 156, 53, 127, 101, 172, 45, 71, 76, 255, 112, 90, 26, 206, 96, 8, ], ), }, sequence_number: 4995058155521043450, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8b6e6174c48c4f314d99b120baa5503132251d88166168a516b0224baf1c99b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a201456e713c0bb2ab3cbea6a036ba62f3f27a5882f24031641f4d5ef18456e87cab527af651a822462ecd8f014c0d2063527ae5b1e1c7e96e8fef183e4a8c2cd39eeea2b3f404b101488516f54bf2cbc5e377cc5b38a2f1da000c1b3073a8656f7f18ff7ac3b4deda52de0ce41569dad8e9a3c192f914cea4a1fe0825da0beb7fff2018797733a9b5a5f5bf7f76cc74c0beb7032c5354729862d0b43b4c6d13e4dbb0c02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70851af36fdf7ad3266 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 110, 113, 60, 11, 178, 171, 60, 190, 166, 160, 54, 186, 98, 243, 242, 122, 88, 130, 242, 64, 49, 100, 31, 77, 94, 241, 132, 86, 232, 124, 171, 82, 122, 246, 81, 168, 34, 70, 46, 205, 143, 1, 76, 13, 32, 99, 82, 122, 229, 177, 225, 199, 233, 110, 143, 239, 24, 62, 74, 140, 44, 211, 158, 238, 162, 179, 244, 4, 177, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 488516f54bf2cbc5e377cc5b38a2f1da, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9182669939393174284, key: EventKey( [ 255, 122, 195, 180, 222, 218, 82, 222, 12, 228, 21, 105, 218, 216, 233, 163, 193, 146, 249, 20, 206, 164, 161, 254, ], ), }, sent_events: EventHandle { count: 2377759775767799048, key: EventKey( [ 121, 119, 51, 169, 181, 165, 245, 191, 127, 118, 204, 116, 192, 190, 183, 3, 44, 83, 84, 114, 152, 98, 208, 180, ], ), }, sequence_number: 13884839423808195643, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8e592ab010b8ab98553bf2a61c8ce13d5d8f622cca8b9899b84be6f7eed129b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb015ebfe43579e8233f433d9b169d54cf2bfefe1fbd744a844b1a1eb6c2903ad5d8eb12a9cdb98d5344395f2d850e3cda5d6e6fab3e40bab6f7a693427fed59b6ecde55b4eb747233ae953b91db0a3fd398edc417a7e32a094c78c94b52576834000101c8cae7fbe5a842073a4f26321a0f3f86b3d4f2020acd591814b4c0d5e34b20c05d7db8d71ff2d8fffc71041e9a24a13cc693d4d4bc4dee7818c755d58bff56bf1bbaddb244f76428794aaafb63db6686a766b4a76229f1abd22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f6a15bf8fad9fefe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 191, 228, 53, 121, 232, 35, 63, 67, 61, 155, 22, 157, 84, 207, 43, 254, 254, 31, 189, 116, 74, 132, 75, 26, 30, 182, 194, 144, 58, 213, 216, 235, 18, 169, 205, 185, 141, 83, 68, 57, 95, 45, 133, 14, 60, 218, 93, 110, 111, 171, 62, 64, 186, 182, 247, 166, 147, 66, 127, 237, 89, 182, 236, 222, 85, 180, 235, 116, 114, 51, 174, 149, 59, 145, 219, 10, 63, 211, 152, 237, 196, 23, 167, 227, 42, 9, 76, 120, 201, 75, 82, 87, 104, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 01c8cae7fbe5a842073a4f26321a0f3f, }, ), received_events: EventHandle { count: 6470839247381508998, key: EventKey( [ 20, 180, 192, 213, 227, 75, 32, 192, 93, 125, 184, 215, 31, 242, 216, 255, 252, 113, 4, 30, 154, 36, 161, 60, ], ), }, sent_events: EventHandle { count: 8713987802428380102, key: EventKey( [ 199, 85, 213, 139, 255, 86, 191, 27, 186, 221, 178, 68, 247, 100, 40, 121, 74, 170, 251, 99, 219, 102, 134, 167, ], ), }, sequence_number: 15180492129033499750, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8e9f7804999c21c90b9e7b5815642e9f0050c81ac8ec46c527fdef7ec612f8b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014e73b88c8a4b125ae3f72a8cf6ac08c574ca446ed69ca8b1fde397fbd96a7d3d8671d53a9709ae18424e02bb438be2aac10b23f9e17c71956b1731a1b950b8c1d46c98248755b9c4602b80a5218d51011d517c3634424de6251bf124cdb20073001dbed6f90ec8d110183a74dee01e7d3fe3ba0ccce2fb2a1b49aaabc91c32393485f015b57b176be446180a36f86b3e92bb5e5775761e311d316760c16fda44bd223e7ad09e8d2f24a27e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b19ac7fa6cf9114e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, 184, 140, 138, 75, 18, 90, 227, 247, 42, 140, 246, 172, 8, 197, 116, 202, 68, 110, 214, 156, 168, 177, 253, 227, 151, 251, 217, 106, 125, 61, 134, 113, 213, 58, 151, 9, 174, 24, 66, 78, 2, 187, 67, 139, 226, 170, 193, 11, 35, 249, 225, 124, 113, 149, 107, 23, 49, 161, 185, 80, 184, 193, 212, 108, 152, 36, 135, 85, 185, 196, 96, 43, 128, 165, 33, 141, 81, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1d517c3634424de6251bf124cdb20073, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1211969741386071581, key: EventKey( [ 58, 116, 222, 224, 30, 125, 63, 227, 186, 12, 204, 226, 251, 42, 27, 73, 170, 171, 201, 28, 50, 57, 52, 133, ], ), }, sent_events: EventHandle { count: 5108325625948870128, key: EventKey( [ 10, 54, 248, 107, 62, 146, 187, 94, 87, 117, 118, 30, 49, 29, 49, 103, 96, 193, 111, 218, 68, 189, 34, 62, ], ), }, sequence_number: 9124895581664104570, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d8f339c9dfdb7230bdef2f530e6197fc0504b1d02731c74c9d4fdc37e179a888): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144b654f95e899de0fa84f3e76b2db841e0e5e1131fedc6af124521f1ac5a7729ddccfe7afcd36db02102df8269af32b151819502f98d0b8bfcfbf5c2143f51ddc2faa325bb012cb0ac2d859e778d3248227ad8b73e970015b37e6e2c8b992f1847ed3d2d0226e08c29c34ca1f302ebbddbe1c057cd3bf8f83ef97d4b243ada2d1878ce6d5b4172b3dffffa3e713bae1d6b76d0d03cbb895f5c0884f2fae0ce297c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708781ad370ae77d8c0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 182, 84, 249, 94, 137, 157, 224, 250, 132, 243, 231, 107, 45, 184, 65, 224, 229, 225, 19, 31, 237, 198, 175, 18, 69, 33, 241, 172, 90, 119, 41, 221, 204, 254, 122, 252, 211, 109, 176, 33, 2, 223, 130, 105, 175, 50, 177, 81, 129, 149, 2, 249, 141, 11, 139, 252, 251, 245, 194, 20, 63, 81, 221, 194, 250, 163, 37, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2cb0ac2d859e778d3248227ad8b73e97, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3429925614167962389, key: EventKey( [ 71, 237, 61, 45, 2, 38, 224, 140, 41, 195, 76, 161, 243, 2, 235, 189, 219, 225, 192, 87, 205, 59, 248, 248, ], ), }, sent_events: EventHandle { count: 3304017204189460798, key: EventKey( [ 120, 206, 109, 91, 65, 114, 179, 223, 255, 250, 62, 113, 59, 174, 29, 107, 118, 208, 208, 60, 187, 137, 95, 92, ], ), }, sequence_number: 8946909600426394632, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d92c7aa5c5766acf8a5a0886b46574d3920ab79b1c37d5a223aebc4de961ff9d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a301467d6615ffae4dcbfa8575fba2d1658891cb91cdf32c499c85e948d13cbeeaebf191b0476a31da6a4914d6692f2d3179571b0abbadd33aee396fca729668a97ffd798638b9931200018e59eaed85732bd789a5296ecdec117f5e73489aed5a4b1a18d6b18ba5981f204ec64f9a336dedc10497812e7722ed21f4a75a819fc46039661832521cc766132bfe99fe4e154ae9f0f7e52e3a1ba1c1dc659ee3d0a88942a1d52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d01a363d4e666502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 102, 21, 255, 174, 77, 203, 250, 133, 117, 251, 162, 209, 101, 136, 145, 203, 145, 205, 243, 44, 73, 156, 133, 233, 72, 209, 60, 190, 234, 235, 241, 145, 176, 71, 106, 49, 218, 106, 73, 20, 214, 105, 47, 45, 49, 121, 87, 27, 10, 187, 173, 211, 58, 238, 57, 111, 202, 114, 150, 104, 169, 127, 253, 121, 134, 56, 185, 147, 18, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 8e59eaed85732bd789a5296ecdec117f, }, ), received_events: EventHandle { count: 1894708044781613918, key: EventKey( [ 214, 177, 139, 165, 152, 31, 32, 78, 198, 79, 154, 51, 109, 237, 193, 4, 151, 129, 46, 119, 34, 237, 33, 244, ], ), }, sent_events: EventHandle { count: 7366025063147068071, key: EventKey( [ 50, 82, 28, 199, 102, 19, 43, 254, 153, 254, 78, 21, 74, 233, 240, 247, 229, 46, 58, 27, 161, 193, 220, 101, ], ), }, sequence_number: 15393658160339280798, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d99cec3339641d99f39dcb9f29ed7be7a45bc544d478fb5a59c71d1fbd31db69): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987012aecb536821f20e7cc17e2933eceb8744de8cd8715eb513082b51cc5a2c1a93650da1ad4917e1309fef3bb01f8c223ce7908ee913f72b299f0899a5b00e1dba1c1578f945d18398ac5cf78c6112536e2c66ffbfba524c78bdabe597baa5fcda3aee4adafcf101825e65f80d7f40b2bf4a8ce9f8b8612a39ea74d0e7df59f6ff1f97eaf36b4e6ba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708522634692bd59b56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 236, 181, 54, 130, 31, 32, 231, 204, 23, 226, 147, 62, 206, 184, 116, 77, 232, 205, 135, 21, 235, 81, 48, 130, 181, 28, 197, 162, 193, 169, 54, 80, 218, 26, 212, 145, 126, 19, 9, 254, 243, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f8c223ce7908ee913f72b299f0899a5b, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6743172149154012129, key: EventKey( [ 57, 138, 197, 207, 120, 198, 17, 37, 54, 226, 198, 111, 251, 251, 165, 36, 199, 139, 218, 190, 89, 123, 170, 95, ], ), }, sent_events: EventHandle { count: 1211379986186806221, key: EventKey( [ 37, 230, 95, 128, 215, 244, 11, 43, 244, 168, 206, 159, 139, 134, 18, 163, 158, 167, 77, 14, 125, 245, 159, 111, ], ), }, sequence_number: 13467649882663614961, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(d9b04b175940b81f654c420b9f3ac0f3d730f16d733e8693bd84e63d2adac379): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96c1f0a5d8e34dc56f78bf1b33c3b7a85921c0f1203ce6af10848fe1517f8bae12900001fe17f7f5fe1361518362f7b899b704043062a3f737ec5983bdb05f9d879ab730a089b40c5131be43518f2824c8736ea438e50ac179b3792aecac22484643be30180a2f4a9145f8da85f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708580b59e49182fc1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 10, 93, 142, 52, 220, 86, 247, 139, 241, 179, 60, 59, 122, 133, 146, 28, 15, 18, 3, 206, 106, 241, 8, 72, 254, 21, 23, 248, 186, 225, 41, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 1528656923816091935, key: EventKey( [ 54, 47, 123, 137, 155, 112, 64, 67, 6, 42, 63, 115, 126, 197, 152, 59, 219, 5, 249, 216, 121, 171, 115, 10, ], ), }, sent_events: EventHandle { count: 3883258550427884296, key: EventKey( [ 242, 130, 76, 135, 54, 234, 67, 142, 80, 172, 23, 155, 55, 146, 174, 202, 194, 36, 132, 100, 59, 227, 1, 128, ], ), }, sequence_number: 6892914669198636194, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(da4260d92eca33d21c60fe5178a26a9a1a58530eef1533c0091e9e687064255f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670a329726d234960ef834670124e81104e11fb4c73343703afa440acd003f37f611085a294e185d9cbcc1d4e3abcfe0e5394bff3b407f00979d1ede75416cc09b0d0bd97eee031875a865eeffe26f64b1edd03d901e4f048b11a27c68c94a9a99854bbfca5b1dfe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70820b70aacdb5b48b9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 50, 151, 38, 210, 52, 150, 14, 248, 52, 103, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 24e81104e11fb4c73343703afa440acd, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5632131799711102783, key: EventKey( [ 93, 156, 188, 193, 212, 227, 171, 207, 224, 229, 57, 75, 255, 59, 64, 127, 0, 151, 157, 30, 222, 117, 65, 108, ], ), }, sent_events: EventHandle { count: 283303297229364160, key: EventKey( [ 117, 168, 101, 238, 255, 226, 111, 100, 177, 237, 208, 61, 144, 30, 79, 4, 139, 17, 162, 124, 104, 201, 74, 154, ], ), }, sequence_number: 18310892586309223833, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(daf49fd9cf58db1427854615079e8c838ab453d057f46d69d993887cf65dce6f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9681b09885f98cc157591359a99ba2003215a0e383fda9e00570d98a72b0000189e3071b783766f180864abf16be07838b1a4cd78dadf684e0db11079647677fcb01b91d9c68aa226182981654ee2878b9da91780b8ffb6784be4d5a4552ef9017d4bed4491e724f4fc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087f64cdaae63a7523 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 136, 95, 152, 204, 21, 117, 145, 53, 154, 153, 186, 32, 3, 33, 90, 14, 56, 63, 218, 158, 0, 87, 13, 152, 167, 43, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8031751809363123736, key: EventKey( [ 8, 100, 171, 241, 107, 224, 120, 56, 177, 164, 205, 120, 218, 223, 104, 78, 13, 177, 16, 121, 100, 118, 119, 252, ], ), }, sent_events: EventHandle { count: 2783940106326711216, key: EventKey( [ 41, 129, 101, 78, 226, 135, 139, 157, 169, 23, 128, 184, 255, 182, 120, 75, 228, 213, 164, 85, 46, 249, 1, 125, ], ), }, sequence_number: 18227234168868498763, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db177762f245b943befadefced20767371c52ae280faac4170745d6cb38e2f5a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619654159ca4ef73bbee39982eabe6cfdccdd538671e8a53585710000c001f154f0073943185e67f81cab9e4c8fb5d3c5834981557778b7d739ab32680a3127cab354e58265184c833353d4aff1f208742f8fc235ecc7a1612e8d057d7aad50e4f929b0ce29152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083d928bc0e73db59b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 65, 89, 202, 78, 247, 59, 190, 227, 153, 130, 234, 190, 108, 253, 204, 221, 83, 134, 113, 232, 165, 53, 133, 113, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4843911603012305344, key: EventKey( [ 94, 103, 248, 28, 171, 158, 76, 143, 181, 211, 197, 131, 73, 129, 85, 119, 120, 183, 215, 57, 171, 50, 104, 10, ], ), }, sent_events: EventHandle { count: 7314660896759490353, key: EventKey( [ 76, 131, 51, 83, 212, 175, 241, 242, 8, 116, 47, 143, 194, 53, 236, 199, 161, 97, 46, 141, 5, 125, 122, 173, ], ), }, sequence_number: 1524977204855432272, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db4adda33d79a547489b7dd8b0d247321382c9123797a2179d9688f947ae63b0): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0fa2a7a127fd9c7200cb0bd720b88f750000e49fb7f3d1bc312718ef23655242f4714e7fa40ec0decd61aa411adec61187f4d99f0b274a50628b051816f81f2306be8adba024df27899333f6e879a083cce00241bc81752b6f1d5bd32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b28fa804c517555a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 162, 167, 161, 39, 253, 156, 114, 0, 203, 11, 215, 32, 184, 143, 117, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2824246051261095908, key: EventKey( [ 239, 35, 101, 82, 66, 244, 113, 78, 127, 164, 14, 192, 222, 205, 97, 170, 65, 26, 222, 198, 17, 135, 244, 217, ], ), }, sent_events: EventHandle { count: 399521088933399455, key: EventKey( [ 22, 248, 31, 35, 6, 190, 138, 219, 160, 36, 223, 39, 137, 147, 51, 246, 232, 121, 160, 131, 204, 224, 2, 65, ], ), }, sequence_number: 15229798928191160764, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(db9d618c80854240d3707226fc1d2cb59f07381ece5bcd851775f1ffccf55252): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96205a82ff33d3400019c12b2f34833c0fddfe55128e10c5af5060dceb182199c2f18687352550387d61a6827d539ea82d64bd2ee6cd40cae30a0f5e8b25988a9171518e18992cce2a130b8358b2f98420ba133dc1338874862151b374b8c94b0c939ef2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70817152f56ce6d677e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 168, 47, 243, 61, 52, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9c12b2f34833c0fddfe55128e10c5af5, }, ), received_events: EventHandle { count: 3430645065268989190, key: EventKey( [ 104, 115, 82, 85, 3, 135, 214, 26, 104, 39, 213, 57, 234, 130, 214, 75, 210, 238, 108, 212, 12, 174, 48, 160, ], ), }, sent_events: EventHandle { count: 1519869802346375413, key: EventKey( [ 225, 137, 146, 204, 226, 161, 48, 184, 53, 139, 47, 152, 66, 11, 161, 51, 220, 19, 56, 135, 72, 98, 21, 27, ], ), }, sequence_number: 17238030808980933431, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dbe1ca21b8a2f22445d71a466fbd4a44d38eb7e4787369de5fd0a03c40753c2f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963166d65b8cf9fad0fd9a92d7042d819de36a0608cfdffcf0000277a81f6a5c4fd1e18a13aea90da7318dd5d36dd72be4bac5317a56c48ea806e82bca3254b81cc333a18ad68217e1129273c35f98bcc81f66cfa839e54a3f34d78e91af4e5722f8dc04b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c22d80a7d5511a7c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 101, 184, 207, 159, 173, 15, 217, 169, 45, 112, 66, 216, 25, 222, 54, 160, 96, 140, 253, 255, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2233157207329962535, key: EventKey( [ 161, 58, 234, 144, 218, 115, 24, 221, 93, 54, 221, 114, 190, 75, 172, 83, 23, 165, 108, 72, 234, 128, 110, 130, ], ), }, sent_events: EventHandle { count: 4193920533695669180, key: EventKey( [ 173, 104, 33, 126, 17, 41, 39, 60, 53, 249, 139, 204, 129, 246, 108, 250, 131, 158, 84, 163, 243, 77, 120, 233, ], ), }, sequence_number: 5458517983303693338, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dcee7d0f806e08c58dc4caf30df659a2b3e27d7e7b08575c612595fc3579a971): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d0140628ce429178d3dc621d70eb7f39e1d06bff1d5178d51f260a9a440f70ea325469857a3ca5158c0c9aa0ad73b5f40ddfed0dc0a7ae30ea5761d2859a680becfba0001a65ca0c9de1deea90a850b8786f36ace404637ab92f60c41189f7afa4c038acad6035938c425f4a4e5b37b727177dd80e9ae96490a99dabc68182c63ea4f51308e8de783966fda6279e31ad69c983512df318af1f6475d270e642101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70880ddbdb5d216bf3b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 98, 140, 228, 41, 23, 141, 61, 198, 33, 215, 14, 183, 243, 158, 29, 6, 191, 241, 213, 23, 141, 81, 242, 96, 169, 164, 64, 247, 14, 163, 37, 70, 152, 87, 163, 202, 81, 88, 192, 201, 170, 10, 215, 59, 95, 64, 221, 254, 208, 220, 10, 122, 227, 14, 165, 118, 29, 40, 89, 166, 128, 190, 207, 186, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a65ca0c9de1deea90a850b8786f36ace, }, ), received_events: EventHandle { count: 4687392421984028224, key: EventKey( [ 159, 122, 250, 76, 3, 138, 202, 214, 3, 89, 56, 196, 37, 244, 164, 229, 179, 123, 114, 113, 119, 221, 128, 233, ], ), }, sent_events: EventHandle { count: 7547147426403554990, key: EventKey( [ 44, 99, 234, 79, 81, 48, 142, 141, 231, 131, 150, 111, 218, 98, 121, 227, 26, 214, 156, 152, 53, 18, 223, 49, ], ), }, sequence_number: 7209743335059550602, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd5ca4eece94c27e13ed6eec8a500a70aa90931be25bbc4dea187ea265d4c940): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99001434d2cb6414eeb3f47d4ed31085e8164aaa28e7177604c7b5114745711865d1b190a15403a0e3539d0e0deb4b4eba6b0f683f45a5d8242a7c860f9cce25116e2ada0cee9000061d8f36ac516d958183a3a55daeab119679a54ac7976061704e4df10bf6f22a207d7d1f253cb7d115b18c9db993712d10a9c812b51cd09adac886d09c447e79e07f7a8ec673fe7331b442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bdbebc7586485e01 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 77, 44, 182, 65, 78, 235, 63, 71, 212, 237, 49, 8, 94, 129, 100, 170, 162, 142, 113, 119, 96, 76, 123, 81, 20, 116, 87, 17, 134, 93, 27, 25, 10, 21, 64, 58, 14, 53, 57, 208, 224, 222, 180, 180, 235, 166, 176, 246, 131, 244, 90, 93, 130, 66, 167, 200, 96, 249, 204, 226, 81, 22, 226, 173, 160, 206, 233, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6402173382442604641, key: EventKey( [ 58, 58, 85, 218, 234, 177, 25, 103, 154, 84, 172, 121, 118, 6, 23, 4, 228, 223, 16, 191, 111, 34, 162, 7, ], ), }, sent_events: EventHandle { count: 6562164444295778775, key: EventKey( [ 201, 219, 153, 55, 18, 209, 10, 156, 129, 43, 81, 205, 9, 173, 172, 136, 109, 9, 196, 71, 231, 158, 7, 247, ], ), }, sequence_number: 4907573287244524712, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd5f067705641f71fde5b0456e49ee56e020560ef7dd6fde1c3617d91d640a24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a60149b16b24d362e9ce1ca3f5f239745c88e8231d8a9a4241535ceb70640182eb3d2444daf7b19634dc48171010542799a414c72f6b5be3357a1c4ceba38fa122ca2519039bc504ca64300200014554243bcfa772676a0b803119594923c809eefa57c22b1a1802fb12ba701b1c2b3187c7a3f33d4e17444918c6f3763d65d9155daef48c771918b873b33bce7dbd5e912c0d86df9a9e269b0039257f693c7cbd5329e7376824a42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082f69a173d7ae3ea0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 177, 107, 36, 211, 98, 233, 206, 28, 163, 245, 242, 57, 116, 92, 136, 232, 35, 29, 138, 154, 66, 65, 83, 92, 235, 112, 100, 1, 130, 235, 61, 36, 68, 218, 247, 177, 150, 52, 220, 72, 23, 16, 16, 84, 39, 153, 164, 20, 199, 47, 107, 91, 227, 53, 122, 28, 76, 235, 163, 143, 161, 34, 202, 37, 25, 3, 155, 197, 4, 202, 100, 48, 2, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 4554243bcfa772676a0b803119594923, }, ), received_events: EventHandle { count: 1885814552112531912, key: EventKey( [ 2, 251, 18, 186, 112, 27, 28, 43, 49, 135, 199, 163, 243, 61, 78, 23, 68, 73, 24, 198, 243, 118, 61, 101, ], ), }, sent_events: EventHandle { count: 1835090355702011353, key: EventKey( [ 184, 115, 179, 59, 206, 125, 189, 94, 145, 44, 13, 134, 223, 154, 158, 38, 155, 0, 57, 37, 127, 105, 60, 124, ], ), }, sequence_number: 11827693110692500413, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dd81b3d4c9076cf922ca63b46d05b998b37ab312f5a1893db1e6b87025097160): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b401575a6007cd116fdf3fc542810494a440208e99b9a298f2e99b0d33bb7a109558ab00356dbcc6c3ef6a65b020e05b7724e4b4d1fa1eae9ebea065cdbf77158b7622456893f130cf68fc8ce47dc4dbff3c06995bbe538583410001715ebaa851e206e52b96edecebd08e016b6846db113aa57f18c9bbdf881949d30058fc9d459fa5e36eb40882b53adae43724aaf33eb78d325b18511a06834d15797c7f13dc48b11c0d12de1ae29f38564ba8f1f19b0f3342efe22101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708be4fbcfff19e89b1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 96, 7, 205, 17, 111, 223, 63, 197, 66, 129, 4, 148, 164, 64, 32, 142, 153, 185, 162, 152, 242, 233, 155, 13, 51, 187, 122, 16, 149, 88, 171, 0, 53, 109, 188, 198, 195, 239, 106, 101, 176, 32, 224, 91, 119, 36, 228, 180, 209, 250, 30, 174, 158, 190, 160, 101, 205, 191, 119, 21, 139, 118, 34, 69, 104, 147, 241, 48, 207, 104, 252, 140, 228, 125, 196, 219, 255, 60, 6, 153, 91, 190, 83, 133, 131, 65, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 715ebaa851e206e52b96edecebd08e01, }, ), received_events: EventHandle { count: 9197821662341785707, key: EventKey( [ 201, 187, 223, 136, 25, 73, 211, 0, 88, 252, 157, 69, 159, 165, 227, 110, 180, 8, 130, 181, 58, 218, 228, 55, ], ), }, sent_events: EventHandle { count: 6571470624461662756, key: EventKey( [ 81, 26, 6, 131, 77, 21, 121, 124, 127, 19, 220, 72, 177, 28, 13, 18, 222, 26, 226, 159, 56, 86, 75, 168, ], ), }, sequence_number: 16352361559078203889, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dddede26d7b1202724ae4fcd29da2be85f3f85f1dc8cd817a006fbf63ce55a6b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a501489749b5a5590d6271c2613d03c8c8519be0689f02364f429aea0eba12d9195e9c91a527ae7236ee142345181987ddb688b8343ff834755b32754793e4a268305ccb749f9a1e87d966013a88c9d4933f4de49c899f94ad5c7a0e00e546847862ded76e180be46e66c13410d61749e95caffe9f1a55b1666e8d9b952ac0b1e300095284201849b83e57069fd81e612bbd39f3cb47b48daf1ffae2422c1071ac86a0e3b159892101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f430e8bb29a1a4ef Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 151, 73, 181, 165, 89, 13, 98, 113, 194, 97, 61, 3, 200, 200, 81, 155, 224, 104, 159, 2, 54, 79, 66, 154, 234, 14, 186, 18, 217, 25, 94, 156, 145, 165, 39, 174, 114, 54, 238, 20, 35, 69, 24, 25, 135, 221, 182, 136, 184, 52, 63, 248, 52, 117, 91, 50, 117, 71, 147, 228, 162, 104, 48, 92, 203, 116, 159, 154, 30, 135, 217, 102, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 3a88c9d4933f4de49c899f94ad5c7a0e, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7987096978674960101, key: EventKey( [ 11, 228, 110, 102, 193, 52, 16, 214, 23, 73, 233, 92, 175, 254, 159, 26, 85, 177, 102, 110, 141, 155, 149, 42, ], ), }, sent_events: EventHandle { count: 2343087904762606016, key: EventKey( [ 73, 184, 62, 87, 6, 159, 216, 30, 97, 43, 189, 57, 243, 203, 71, 180, 141, 175, 31, 250, 226, 66, 44, 16, ], ), }, sequence_number: 9897137247332248689, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ddee705cdca3bfcbff1d3d26aa83734046ad0b5a56517cbcead27649f92bef60): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0152ca10b24ee7000cdbdf5cf873f0df4b58b72f385ef825f2ba2e6015f7eea76cc0387bb99df124db7496aa82d16bcb38a62abd5e06c4ccd28eca1c70afa763c5bdc71621292c5c4776160504e0a9ae34cb946201b9a7551d2a314c644e812d90e49fdbdb00e658ade6e2444f7818526046d451abf49c0cf6166d8688bdfde0177480f8cb7b2d43fc1fd606d0341c184aea9f00995571cd3ac4d329f9e0302f355f51d9a5a449c1f90b471070f6ddc12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b77dd4a6b5a6cd68 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 202, 16, 178, 78, 231, 0, 12, 219, 223, 92, 248, 115, 240, 223, 75, 88, 183, 47, 56, 94, 248, 37, 242, 186, 46, 96, 21, 247, 238, 167, 108, 192, 56, 123, 185, 157, 241, 36, 219, 116, 150, 170, 130, 209, 107, 203, 56, 166, 42, 189, 94, 6, 196, 204, 210, 142, 202, 28, 112, 175, 167, 99, 197, 189, 199, 22, 33, 41, 44, 92, 71, 118, 22, 5, 4, 224, 169, 174, 52, 203, 148, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b9a7551d2a314c644e812d90e49fdbdb, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8669223549034911974, key: EventKey( [ 82, 96, 70, 212, 81, 171, 244, 156, 12, 246, 22, 109, 134, 136, 189, 253, 224, 23, 116, 128, 248, 203, 123, 45, ], ), }, sent_events: EventHandle { count: 2032478059631737923, key: EventKey( [ 74, 234, 159, 0, 153, 85, 113, 205, 58, 196, 211, 41, 249, 224, 48, 47, 53, 95, 81, 217, 165, 164, 73, 193, ], ), }, sequence_number: 13969592580343008249, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(de6bf0ad407346e505b195910e1e171cc94ff6ec79eb45f2e990d104d41aa7df): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c964071a0a45cb30480f01090465a765e871c6969b4c2d462afcc2000dd01389db4eff19181417ba57e8ff7c61257707e79239c85ca9a08d48de7b746f24cd4a23732f983d18a7d7f3b5dbf6fccc309bd5e03f52c64467a5780b98ec798e1ee3cefc20ca724e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d1f8b8afe218b34 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 26, 10, 69, 203, 48, 72, 15, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 090465a765e871c6969b4c2d462afcc2, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1873302674813997069, key: EventKey( [ 20, 23, 186, 87, 232, 255, 124, 97, 37, 119, 7, 231, 146, 57, 200, 92, 169, 160, 141, 72, 222, 123, 116, 111, ], ), }, sent_events: EventHandle { count: 4438349604333473060, key: EventKey( [ 167, 215, 243, 181, 219, 246, 252, 204, 48, 155, 213, 224, 63, 82, 198, 68, 103, 165, 120, 11, 152, 236, 121, 142, ], ), }, sequence_number: 5652802725332575006, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df76d3ad0c1d34fa81a903534b8ef526c5af0168715829e942922636842862e9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d6db63f48e048879b9d86f298d2f5734a2c3b3d85bac0318474b822087b55207585bf5dab53425eacb6dbbaa43affff876d798a73615bec5e9dcbe2b515018af9eafa4df48ee204b5c541767b542d0026fe6b302a7a7e7b18a3beedc75f4f6258890a00396dd94351583ebae24cb30358431e0eb0722af264181e3851f14e7fd4e51bccc8167ff3d083f28f477e6664aa508040abb815ba80a32101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708f4149c2614d488cd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 109, 182, 63, 72, 224, 72, 135, 155, 157, 134, 242, 152, 210, 245, 115, 74, 44, 59, 61, 133, 186, 192, 49, 132, 116, 184, 34, 8, 123, 85, 32, 117, 133, 191, 93, 171, 83, 66, 94, 172, 182, 219, 186, 164, 58, 255, 255, 135, 109, 121, 138, 115, 97, 91, 236, 94, 157, 203, 226, 181, 21, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8af9eafa4df48ee204b5c541767b542d, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8898684235350277670, key: EventKey( [ 163, 190, 237, 199, 95, 79, 98, 88, 137, 10, 0, 57, 109, 217, 67, 81, 88, 62, 186, 226, 76, 179, 3, 88, ], ), }, sent_events: EventHandle { count: 7273923020225125955, key: EventKey( [ 30, 56, 81, 241, 78, 127, 212, 229, 27, 204, 200, 22, 127, 243, 208, 131, 242, 143, 71, 126, 102, 100, 170, 80, ], ), }, sequence_number: 11781621227656528000, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(df9b8848fb0a75b72beb95bced427a920c8f07afd69bb2c40ae66870aa275a6a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c974179370d4819b76850d5df52af55a4ca73829026578f9c1f201e6899125dde4d040a92bb836f77be15400c2a478132efd2a6e1804b39f927d4fd9a25ccb966d1e0530979ce2f8ae241742c29dfd2f4165343b45185bdcb158e1c0096d412faf25220c04fb4f57aff99873d68e810d84e242627f442101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086e5862e92dcf44be Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 147, 112, 212, 129, 155, 118, 133, 13, 93, 245, 42, 245, 90, 76, 167, 56, 41, 2, 101, 120, 249, 193, 242, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e6899125dde4d040a92bb836f77be154, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7938435667530917058, key: EventKey( [ 4, 179, 159, 146, 125, 79, 217, 162, 92, 203, 150, 109, 30, 5, 48, 151, 156, 226, 248, 174, 36, 23, 66, 194, ], ), }, sent_events: EventHandle { count: 4988638621732961693, key: EventKey( [ 91, 220, 177, 88, 225, 192, 9, 109, 65, 47, 175, 37, 34, 12, 4, 251, 79, 87, 175, 249, 152, 115, 214, 142, ], ), }, sequence_number: 4935771756029021569, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(dfba6ddaefa878fc7f34168d2dddc3068311879bf83647593de36bd845ab6fc6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99b013ece735b2b9b6ce66b4fd5a5a665577f0a78cc2fc10f8cc529d0fea0938beec2a896e2318bc85d9796b1ee4c363e1c1d7bc1d9c0771dc14ec335561988e7f000017f5d3f99f142f3f2c7f7f15e2a0a5a367c9ecd686c8e386718548d6a9e43b3e35f6b766f030ad35cb174e27029b301f141b68d05d29ad03a2b180032389227cdbd14c3948dcb5f02a4f8ff2269f0afa0d8c4c7f858e6945c98202101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080531b0b38a4e2754 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 115, 91, 43, 155, 108, 230, 107, 79, 213, 165, 166, 101, 87, 127, 10, 120, 204, 47, 193, 15, 140, 197, 41, 208, 254, 160, 147, 139, 238, 194, 168, 150, 226, 49, 139, 200, 93, 151, 150, 177, 238, 76, 54, 62, 28, 29, 123, 193, 217, 192, 119, 29, 193, 78, 195, 53, 86, 25, 136, 231, 240, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7f5d3f99f142f3f2c7f7f15e2a0a5a36, }, ), received_events: EventHandle { count: 7437851380868292220, key: EventKey( [ 84, 141, 106, 158, 67, 179, 227, 95, 107, 118, 111, 3, 10, 211, 92, 177, 116, 226, 112, 41, 179, 1, 241, 65, ], ), }, sent_events: EventHandle { count: 3115031455647239606, key: EventKey( [ 0, 50, 56, 146, 39, 205, 189, 20, 195, 148, 141, 203, 95, 2, 164, 248, 255, 34, 105, 240, 175, 160, 216, 196, ], ), }, sequence_number: 2348729000263219399, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e097ee67c8536d5bec71c701cad8f4b4ca217b6748f9898a98534f9c8fd07569): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c992014586d167a899277cb60e0f164657f87715425f74552398111c5ff8bb2bbd1b945effc89c64810f747f583debeee909a8d73dc2a9ca00da305617db00c527d9ea38b3120702e2000001ead3752def436518df497774ec40bfa675b44a2651692aadeef4bebae28684da357d146a51928718185ce5c96d2e07b3699709e63afe9fdad3a61987b50ed3c9d8ce4fd8950c751d6b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70800e40be04c725c53 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 134, 209, 103, 168, 153, 39, 124, 182, 14, 15, 22, 70, 87, 248, 119, 21, 66, 95, 116, 85, 35, 152, 17, 28, 95, 248, 187, 43, 189, 27, 148, 94, 255, 200, 156, 100, 129, 15, 116, 127, 88, 61, 235, 238, 233, 9, 168, 215, 61, 194, 169, 202, 0, 218, 48, 86, 23, 219, 0, 197, 39, 217, 234, 56, 179, 18, 7, 2, 226, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7296938799799724545, key: EventKey( [ 223, 73, 119, 116, 236, 64, 191, 166, 117, 180, 74, 38, 81, 105, 42, 173, 238, 244, 190, 186, 226, 134, 132, 218, ], ), }, sent_events: EventHandle { count: 1767542257135942965, key: EventKey( [ 92, 229, 201, 109, 46, 7, 179, 105, 151, 9, 230, 58, 254, 159, 218, 211, 166, 25, 135, 181, 14, 211, 201, 216, ], ), }, sequence_number: 7718454033296936910, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0a08d98a835e81d0cbd6def12842048986149ca2f339aed57bcf695ad8fe494): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f22a507b4f26bb65215c3926189481601adef6e4d933612821e99370c77b4779d22642300005e3725f63322516118b7efb1902ef10e7a4af2eb6fb04b85bb2c5afd4dc4c772503261c5b1be63dc561860b1a8ebfe01b334179851aecf898a6bd3d5af22269ea001da5a5e6962a07d042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70869bbf75699b77689 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 165, 7, 180, 242, 107, 182, 82, 21, 195, 146, 97, 137, 72, 22, 1, 173, 239, 110, 77, 147, 54, 18, 130, 30, 153, 55, 12, 119, 180, 119, 157, 34, 100, 35, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7012423701360883550, key: EventKey( [ 183, 239, 177, 144, 46, 241, 14, 122, 74, 242, 235, 111, 176, 75, 133, 187, 44, 90, 253, 77, 196, 199, 114, 80, ], ), }, sent_events: EventHandle { count: 6258987252815585586, key: EventKey( [ 96, 177, 168, 235, 254, 1, 179, 52, 23, 152, 81, 174, 207, 137, 138, 107, 211, 213, 175, 34, 38, 158, 160, 1, ], ), }, sequence_number: 323591092775574234, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e0ca101592daa30749b6188fec077be442318981b98f424fbc5410dbf5ed65da): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d0bf2cc407cc98488da7be95c060001c25ec84d9052885d0ef3aa2924c307a1d1757eec590e6976186880c60835122961b189afa1bceb1f5152f92aff9fc0dc517bbc4fa9f6560d7a1863be1f10809410c4d3dd82ece4cc4f8786fe08461a562cc81650c129682ef2ee2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878f54fd13d364529 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 11, 242, 204, 64, 124, 201, 132, 136, 218, 123, 233, 92, 6, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c25ec84d9052885d0ef3aa2924c307a1, }, ), received_events: EventHandle { count: 8532366748412704209, key: EventKey( [ 104, 128, 198, 8, 53, 18, 41, 97, 177, 137, 175, 161, 188, 235, 31, 81, 82, 249, 42, 255, 159, 192, 220, 81, ], ), }, sent_events: EventHandle { count: 8794781264726965371, key: EventKey( [ 99, 190, 31, 16, 128, 148, 16, 196, 211, 221, 130, 236, 228, 204, 79, 135, 134, 254, 8, 70, 26, 86, 44, 200, ], ), }, sequence_number: 17217875350302838806, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e116a7d5277d45dfcf931885c8a75ed7ebfd452edbc6c7b74af893cb9f617422): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c987013a4220d2a85635a6f5a3b72da7d8a2c1a87101dece5aa3e31d5fe315dadbc0bff17bfdbd96cbfef8181509543a3a53b5573e5fe8676eec680b05810000289b8e207826f50718d0dba7b283e923db4374121062fc4342ea2b5be747017ce641fde354e93cc639181a1c91de210200c3c8746cd08b7b3f43ca168aba15e9b85c473c71c22d66cc572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708443e3d2196ab1502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 66, 32, 210, 168, 86, 53, 166, 245, 163, 183, 45, 167, 216, 162, 193, 168, 113, 1, 222, 206, 90, 163, 227, 29, 95, 227, 21, 218, 219, 192, 191, 241, 123, 253, 189, 150, 203, 254, 248, 24, 21, 9, 84, 58, 58, 83, 181, 87, 62, 95, 232, 103, 110, 236, 104, 11, 5, 129, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 573406824943754024, key: EventKey( [ 208, 219, 167, 178, 131, 233, 35, 219, 67, 116, 18, 16, 98, 252, 67, 66, 234, 43, 91, 231, 71, 1, 124, 230, ], ), }, sent_events: EventHandle { count: 4163081878399876417, key: EventKey( [ 26, 28, 145, 222, 33, 2, 0, 195, 200, 116, 108, 208, 139, 123, 63, 67, 202, 22, 138, 186, 21, 233, 184, 92, ], ), }, sequence_number: 6326543923270466631, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1cde6bde32b76fafe83a49c9e1f4049eb8392f10c135a6c7b3bff41d0d519ca): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97518da615fffc46652977696b49b2130e6e1ce778c1a3fd2b60001336b24e31b85ca977828c56c97ceb370006755565d6e85340118918639e4310dbfd5c4bd27795c46372c66b2cba464d1383e0219576fc7e3b62a182230836232c8b5c5fd87f8f8d806c8302eab442bf9c2b2f1f33bcbeb6b90d7ef2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708584cbb9f3d79bdb6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 97, 95, 255, 196, 102, 82, 151, 118, 150, 180, 155, 33, 48, 230, 225, 206, 119, 140, 26, 63, 210, 182, 0, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 336b24e31b85ca977828c56c97ceb370, }, ), key_rotation_capability: None, received_events: EventHandle { count: 86841001885717863, key: EventKey( [ 145, 134, 57, 228, 49, 13, 191, 213, 196, 189, 39, 121, 92, 70, 55, 44, 102, 178, 203, 164, 100, 209, 56, 62, ], ), }, sent_events: EventHandle { count: 3077897841060288770, key: EventKey( [ 34, 48, 131, 98, 50, 200, 181, 197, 253, 135, 248, 248, 216, 6, 200, 48, 46, 171, 68, 43, 249, 194, 178, 241, ], ), }, sequence_number: 17282440888249433075, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1eeec35238fae2186ebdf8d0b33571237f4d63531561b1962a32ff4757ba639): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c998014b24a11e8a7c2756a9af512bd23fdeec5d571b6a3fc6a4bdccec72da2d5204eceb386ba38cdf8cf6509f81c123bf1384a453b1ae5193e0b2b3989cf2053998c3b7043235d956c7593081978a0000be3d86d56677a47f1866fd99193f3f51f5d2fd472fd8411c7219e8d6b285bc59df9aa89873a3777112189d1e1f07e0cd50a426595a41c12f225aff1490f479563166fd924b47d190f05c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708491b43a7912f574a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 161, 30, 138, 124, 39, 86, 169, 175, 81, 43, 210, 63, 222, 236, 93, 87, 27, 106, 63, 198, 164, 189, 204, 236, 114, 218, 45, 82, 4, 236, 235, 56, 107, 163, 140, 223, 140, 246, 80, 159, 129, 193, 35, 191, 19, 132, 164, 83, 177, 174, 81, 147, 224, 178, 179, 152, 156, 242, 5, 57, 152, 195, 183, 4, 50, 53, 217, 86, 199, 89, 48, 129, 151, 138, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 9197607622550109630, key: EventKey( [ 102, 253, 153, 25, 63, 63, 81, 245, 210, 253, 71, 47, 216, 65, 28, 114, 25, 232, 214, 178, 133, 188, 89, 223, ], ), }, sent_events: EventHandle { count: 1328974908953766042, key: EventKey( [ 157, 30, 31, 7, 224, 205, 80, 164, 38, 89, 90, 65, 193, 47, 34, 90, 255, 20, 144, 244, 121, 86, 49, 102, ], ), }, sequence_number: 6697011874418627325, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e1fe9be0d70405e598d58a63d8d28a21903836e7710952cdc4d7e7befc97907b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99e01515675fd4b69b6b4d365eafaed5a6b2e6a8f8aa447255758bb12121cd7eca8e7f08c318c71c4ec6e50ada253db72f88e62973a0c876501adbb12bb485d39d622b11d5a92e5b6704ab938c88ca407e7d139cf0000e678b4774a95e13e1886bb229bc3d398aed9b1e2729ce2c4d44d67c24d8ef779ad2a03c4465343413918fda518b500a5046a1ff44900472e9d043c20d9b57af4fc61594a87282aa339422101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bbd1d8116c4b4cd0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 86, 117, 253, 75, 105, 182, 180, 211, 101, 234, 250, 237, 90, 107, 46, 106, 143, 138, 164, 71, 37, 87, 88, 187, 18, 18, 28, 215, 236, 168, 231, 240, 140, 49, 140, 113, 196, 236, 110, 80, 173, 162, 83, 219, 114, 248, 142, 98, 151, 58, 12, 135, 101, 1, 173, 187, 18, 187, 72, 93, 57, 214, 34, 177, 29, 90, 146, 229, 182, 112, 74, 185, 56, 200, 140, 164, 7, 231, 209, 57, 207, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4531066847179864294, key: EventKey( [ 134, 187, 34, 155, 195, 211, 152, 174, 217, 177, 226, 114, 156, 226, 196, 212, 77, 103, 194, 77, 142, 247, 121, 173, ], ), }, sent_events: EventHandle { count: 4125652758596682538, key: EventKey( [ 253, 165, 24, 181, 0, 165, 4, 106, 31, 244, 73, 0, 71, 46, 157, 4, 60, 32, 217, 181, 122, 244, 252, 97, ], ), }, sequence_number: 4772024681639660121, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e201440c8a0ee0a1775475ff8a24b33c0f8bd097db47a9f45c3d0fcbd977f613): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9781b65f94c0b893f21bdf49901062e20715fdd032620a6d80631703dde00017019b7e5cd0766bbdd524e292320e08da1bb48c3b9591b251821ac3e7750a07e5b23235b1fac3fa9a608b4d23f5ff20b51e278fc474cc6de5618a26a78a7a77e54d155256e2e7c6fdb314b5351825e4b47ca61bf182cd9708aad2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088ed21dc080e440eb Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 101, 249, 76, 11, 137, 63, 33, 189, 244, 153, 1, 6, 46, 32, 113, 95, 221, 3, 38, 32, 166, 216, 6, 49, 112, 61, 222, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 7019b7e5cd0766bbdd524e292320e08d, }, ), received_events: EventHandle { count: 2673829458154666913, key: EventKey( [ 33, 172, 62, 119, 80, 160, 126, 91, 35, 35, 91, 31, 172, 63, 169, 166, 8, 180, 210, 63, 95, 242, 11, 81, ], ), }, sent_events: EventHandle { count: 6259658563019110626, key: EventKey( [ 162, 106, 120, 167, 167, 126, 84, 209, 85, 37, 110, 46, 124, 111, 219, 49, 75, 83, 81, 130, 94, 75, 71, 202, ], ), }, sequence_number: 12504931393397636961, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e346e6d37406239ddf5a78617cae4a0eb46882c519e773468802584742f96c2e): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96619988e50aa4f50b27fc9979b4d02c1febec2aa8943df3692e0480000b119cc516fb8734218e80ed05abc479358a8f38ba8d127293c2a1ceda7aeb7419f60dec33c8922f57a18c1b6452785a981d94b8695f52404f1449ef2f2e2d689d781d63d305f7f41894f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b253b99ab2d4d043 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 142, 80, 170, 79, 80, 178, 127, 201, 151, 155, 77, 2, 193, 254, 190, 194, 170, 137, 67, 223, 54, 146, 224, 72, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4788373617078180273, key: EventKey( [ 232, 14, 208, 90, 188, 71, 147, 88, 168, 243, 139, 168, 209, 39, 41, 60, 42, 28, 237, 167, 174, 183, 65, 159, ], ), }, sent_events: EventHandle { count: 8860025814746652256, key: EventKey( [ 193, 182, 69, 39, 133, 169, 129, 217, 75, 134, 149, 245, 36, 4, 241, 68, 158, 242, 242, 226, 214, 137, 215, 129, ], ), }, sequence_number: 5731184016119315926, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e36421d572213246cef99da094d5f5574322cce705e9c558c3975e7096b4a155): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9900133b77e9852ed34a4e5e13235bf568820b4ff7f7d2011710429550cead31b410de2414255d27692ecdca8880c3278c996abeb5178019663a63bffda841f1b67f6f328bda3c100a06176f8a7f0cc6a1864fc4ce69f525aabd60e62c5d43388698b45a9185997975041a80953c0974f56185973491adcdac1b3c09e8043b40bc799f42013f1489af6494e9a6166a3989f942101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084ebe67b1cc6c682b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 126, 152, 82, 237, 52, 164, 229, 225, 50, 53, 191, 86, 136, 32, 180, 255, 127, 125, 32, 17, 113, 4, 41, 85, 12, 234, 211, 27, 65, 13, 226, 65, 66, 85, 210, 118, 146, 236, 220, 168, 136, 12, 50, 120, 201, 150, 171, 235, 81, 120, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 9663a63bffda841f1b67f6f328bda3c1, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7695790467488047520, key: EventKey( [ 100, 252, 76, 230, 159, 82, 90, 171, 214, 14, 98, 197, 212, 51, 136, 105, 139, 69, 169, 24, 89, 151, 151, 80, ], ), }, sent_events: EventHandle { count: 6219356462704601153, key: EventKey( [ 89, 115, 73, 26, 220, 218, 193, 179, 192, 158, 128, 67, 180, 11, 199, 153, 244, 32, 19, 241, 72, 154, 246, 73, ], ), }, sequence_number: 10709446266475092558, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e36aa3e3fcdd151f75f2600148c74e9d4d417b56595277256f125e8589d5e2e2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e110960b53312626680d4e8cbbb2970db2f680000689f7c951c3d5d48180a99aaae08f15132fe5e2c0d170813a887bffaca83d8aae3b8307c571dc659171824bd941d8f3ee5f95483a974248765bf5d9f69eb01d26e5549d0643eb4bc0ea52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708182aa07b21d93909 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 9, 96, 181, 51, 18, 98, 102, 128, 212, 232, 203, 187, 41, 112, 219, 47, 104, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5214391136541253480, key: EventKey( [ 10, 153, 170, 174, 8, 241, 81, 50, 254, 94, 44, 13, 23, 8, 19, 168, 135, 191, 250, 202, 131, 216, 170, 227, ], ), }, sent_events: EventHandle { count: 1682593765123698872, key: EventKey( [ 36, 189, 148, 29, 143, 62, 229, 249, 84, 131, 169, 116, 36, 135, 101, 191, 93, 159, 105, 235, 1, 210, 110, 85, ], ), }, sequence_number: 11893651148258988105, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e3fc311dddd7cdb276d4a2e28c3ea043da3c3c7ab5f22eebe241646071bfd05f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01e101da89be634f3e826818ef2570d688ee5a006d6c9f9bdcd3d96618b619e1c16f037df1452a0cb5e0bba537b546254244fd605157db09982fc725741848108fc84bb93aa114c30f2131ad1cdd0f3910a942a27090756cee780a4c95c12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083e62356da64f4217 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 225, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: da89be634f3e826818ef2570d688ee5a, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7411187606272044141, key: EventKey( [ 182, 25, 225, 193, 111, 3, 125, 241, 69, 42, 12, 181, 224, 187, 165, 55, 181, 70, 37, 66, 68, 253, 96, 81, ], ), }, sent_events: EventHandle { count: 8369314489766107991, key: EventKey( [ 72, 16, 143, 200, 75, 185, 58, 161, 20, 195, 15, 33, 49, 173, 28, 221, 15, 57, 16, 169, 66, 162, 112, 144, ], ), }, sequence_number: 13949139028712254581, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e4e204c6371fcec5b4334ca6e42763426fbe5b89ef9d59143317232372110c76): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97d109a2f8d66b14df012303e414aff82f36d01e8defa31d844ac912ee804afe7f01ad60172ded66cfc4745b415d30a64e5ea4be19a643094bb2f6625184329aa7718cab9038ea8e56c7d8624aeb863cace785bd008c49140e21b6a262218c06628ac6f04a17db3d3c9159ca0ab3212e0a539717622ae86b949be697764632101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7081cdadf8758ed394c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 154, 47, 141, 102, 177, 77, 240, 18, 48, 62, 65, 74, 255, 130, 243, 109, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: e8defa31d844ac912ee804afe7f01ad6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 72ded66cfc4745b415d30a64e5ea4be1, }, ), received_events: EventHandle { count: 2694893909719409818, key: EventKey( [ 67, 41, 170, 119, 24, 202, 185, 3, 142, 168, 229, 108, 125, 134, 36, 174, 184, 99, 202, 206, 120, 91, 208, 8, ], ), }, sent_events: EventHandle { count: 2460770914397098436, key: EventKey( [ 192, 102, 40, 172, 111, 4, 161, 125, 179, 211, 201, 21, 156, 160, 171, 50, 18, 224, 165, 57, 113, 118, 34, 174, ], ), }, sequence_number: 7161980603473705350, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e4feff360438cff988b7e061bb4ef940cb042fd6e389fe59817c38b386685422): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97215450943f0eee5a341d1212d6b0513edb746836f75e70001165290c2cb9787c2ee26be9454caafb4a3793379406b993918f600e8c77c3ac68984130958ba927abe4d8b815de23e1b05ae529c672da97f621839394ec8abb91fe5cad9192341652cde87e41afa8211ae2a7107970b5407ea402101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70878584169d73c963b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 69, 9, 67, 240, 238, 229, 163, 65, 209, 33, 45, 107, 5, 19, 237, 183, 70, 131, 111, 117, 231, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 165290c2cb9787c2ee26be9454caafb4, }, ), received_events: EventHandle { count: 4150466456254118307, key: EventKey( [ 246, 0, 232, 199, 124, 58, 198, 137, 132, 19, 9, 88, 186, 146, 122, 190, 77, 139, 129, 93, 226, 62, 27, 5, ], ), }, sent_events: EventHandle { count: 7097577550236111534, key: EventKey( [ 57, 57, 78, 200, 171, 185, 31, 229, 202, 217, 25, 35, 65, 101, 44, 222, 135, 228, 26, 250, 130, 17, 174, 42, ], ), }, sequence_number: 4677559220530775921, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e515e3e210514c92deed7010ab4f1097f117386131621a4322f62f86aec87642): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001337d05d255968417b14feec4b006db8530ff36c532ddffd532679899bd94e70de6c6667092b12b5613422cef7932f9accabe3f6c015ba5958fb268a35a7bf8817f83dc0d81016d02129e7bd7e8affc0de482ba9b0d837626a5ce76fc464218c7fc54adbca583285078c98fa51e01544512d2f6e24550ee69d8688c12fe62451885c453fc4b1bd0e2e399e231d8437c2ed3b9b0c078ccdde884af4217dacb9cbd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082d0ffe457dcdb06d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 5, 210, 85, 150, 132, 23, 177, 79, 238, 196, 176, 6, 219, 133, 48, 255, 54, 197, 50, 221, 255, 213, 50, 103, 152, 153, 189, 148, 231, 13, 230, 198, 102, 112, 146, 177, 43, 86, 19, 66, 44, 239, 121, 50, 249, 172, 202, 190, 63, 108, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 5ba5958fb268a35a7bf8817f83dc0d81, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 6d02129e7bd7e8affc0de482ba9b0d83, }, ), received_events: EventHandle { count: 4775782042076259958, key: EventKey( [ 199, 252, 84, 173, 188, 165, 131, 40, 80, 120, 201, 143, 165, 30, 1, 84, 69, 18, 210, 246, 226, 69, 80, 238, ], ), }, sent_events: EventHandle { count: 4999837891953219689, key: EventKey( [ 133, 196, 83, 252, 75, 27, 208, 226, 227, 153, 226, 49, 216, 67, 124, 46, 211, 185, 176, 192, 120, 204, 221, 232, ], ), }, sequence_number: 13663019507088797572, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e536ab8c03499ab2d2b5b4bc8c0679db8ba8b625a9e5038834de951fa6299a82): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bb014ef1144c27b0ed57f871e374de7a97eff9e683be27be717f287387fee64234bdc291883a740cd49e6988669ba8961a7bdc3b3d05970a55396236d21a212e3da1de310b5d2edab51c2cd422bcdfdf0b0166d66221bd3f985a5dd8004a2fedf6af01be2fd8e80d6fc2d4208e75e8c13314a1dc4dd9b8fddfd206188f42950c3d0fddf14e546f0fc5ba2a6c6e7e8dc5afdbf278dac2a8005cde9c301870e32eeb0d42e57e6b49e76d44cb0406fffababd7a0840e78de338db7457d6e52101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70883457614ad09cb9f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 241, 20, 76, 39, 176, 237, 87, 248, 113, 227, 116, 222, 122, 151, 239, 249, 230, 131, 190, 39, 190, 113, 127, 40, 115, 135, 254, 230, 66, 52, 189, 194, 145, 136, 58, 116, 12, 212, 158, 105, 136, 102, 155, 168, 150, 26, 123, 220, 59, 61, 5, 151, 10, 85, 57, 98, 54, 210, 26, 33, 46, 61, 161, 222, 49, 11, 93, 46, 218, 181, 28, 44, 212, 34, 188, 223, 223, 11, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 66d66221bd3f985a5dd8004a2fedf6af, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: be2fd8e80d6fc2d4208e75e8c13314a1, }, ), received_events: EventHandle { count: 491701590157774300, key: EventKey( [ 143, 66, 149, 12, 61, 15, 221, 241, 78, 84, 111, 15, 197, 186, 42, 108, 110, 126, 141, 197, 175, 219, 242, 120, ], ), }, sent_events: EventHandle { count: 3502919096916820698, key: EventKey( [ 112, 227, 46, 235, 13, 66, 229, 126, 107, 73, 231, 109, 68, 203, 4, 6, 255, 250, 186, 189, 122, 8, 64, 231, ], ), }, sequence_number: 16561520839107339149, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e541aec070b4ac0faf1c56f69805fc106b47ea6fafe136f09bdacb20bf295fb9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97f22eeeebd7a46251fe0c0d9f9dd5bb837f94d91c06e29f0a287c1a49189c36400a0536201283ae9da70de0807774575079096302f008e61938504771c58184b2f984e6946ac1b2585a68181e7d0a5b743939bbe7bd22566f7ad0dd074370c18f4a5aff867a06ba65f879bdc89c67ec76266e0c70c4554840ad05ba923f52d2f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080d90ba9b3d986903 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 238, 238, 189, 122, 70, 37, 31, 224, 192, 217, 249, 221, 91, 184, 55, 249, 77, 145, 192, 110, 41, 240, 162, 135, 193, 164, 145, 137, 195, 100, 0, 160, 83, 98, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 283ae9da70de0807774575079096302f, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6349080435990159758, key: EventKey( [ 75, 47, 152, 78, 105, 70, 172, 27, 37, 133, 166, 129, 129, 231, 208, 165, 183, 67, 147, 155, 190, 123, 210, 37, ], ), }, sent_events: EventHandle { count: 880300689105745766, key: EventKey( [ 244, 165, 175, 248, 103, 160, 107, 166, 95, 135, 155, 220, 137, 198, 126, 199, 98, 102, 224, 199, 12, 69, 84, 132, ], ), }, sequence_number: 3399642827248619530, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e6302df17bf1b108015e37dd9420b399d2e4ba194eb52e1779108f7e41227936): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a7015afb86d2572df93209f4f41fdebd7fb1d4f2ab436cf3b6ecc35156e80bdc29b181fbca254e051c8dbb65a65e5a0380fb33f0bdfaaab93f70efb0f99ed5cfb676a6245d506237617f95700526d82b29285bdea898ecf05f3043357c0000eb51c08db029d53a189d95a8f7bef82c1795cc27baaeb7ea6ace72154d23951aeac897eeb16bf96a19184ed166f3a6fa03662347823bcf39f54b29b1c2bd963e1a4d947c156078d234822101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084cf2e3f38e9d73e3 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 134, 210, 87, 45, 249, 50, 9, 244, 244, 31, 222, 189, 127, 177, 212, 242, 171, 67, 108, 243, 182, 236, 195, 81, 86, 232, 11, 220, 41, 177, 129, 251, 202, 37, 78, 5, 28, 141, 187, 101, 166, 94, 90, 3, 128, 251, 51, 240, 189, 250, 170, 185, 63, 112, 239, 176, 249, 158, 213, 207, 182, 118, 166, 36, 93, 80, 98, 55, 97, 127, 149, 112, 5, 38, 216, 43, 41, 40, 91, 222, 168, 152, 236, 240, 95, 48, 67, 53, 124, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4239340462508364267, key: EventKey( [ 157, 149, 168, 247, 190, 248, 44, 23, 149, 204, 39, 186, 174, 183, 234, 106, 206, 114, 21, 77, 35, 149, 26, 234, ], ), }, sent_events: EventHandle { count: 1831550439421548488, key: EventKey( [ 78, 209, 102, 243, 166, 250, 3, 102, 35, 71, 130, 59, 207, 57, 245, 75, 41, 177, 194, 189, 150, 62, 26, 77, ], ), }, sequence_number: 9382355338169515156, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e6b196e0815bbfd25a09fc912d511de63ddead6e11a41f6fae0f0d48b807b308): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ba015de021fb35e8ea60bb5e88b8a7bae6bd0cfc066d47dfd809099957047e6f43f470ae671eeefc5d0d88012a072dff86fcbc9dab0824d097fbfffc18369e7b4f214dc897ac2b99c467d7351a861b0c3049713d11bf197dc8380639161d8dc3010f0fa6904daa7e9ec429ed4d0386e6a70008c303934b01641a18785729fc57aba71a0077594b8d6a0f0a0469385088bfd20c84c3133681eed254182241cdc15f9100809481781e5d93cfd2140dca236b01dd0c36984764681bd8392101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082ffa394aeb32ee01 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 224, 33, 251, 53, 232, 234, 96, 187, 94, 136, 184, 167, 186, 230, 189, 12, 252, 6, 109, 71, 223, 216, 9, 9, 153, 87, 4, 126, 111, 67, 244, 112, 174, 103, 30, 238, 252, 93, 13, 136, 1, 42, 7, 45, 255, 134, 252, 188, 157, 171, 8, 36, 208, 151, 251, 255, 252, 24, 54, 158, 123, 79, 33, 77, 200, 151, 172, 43, 153, 196, 103, 215, 53, 26, 134, 27, 12, 48, 73, 113, 61, 17, 191, 25, 125, 200, 56, 6, 57, 22, 29, 141, 195, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 0f0fa6904daa7e9ec429ed4d0386e6a7, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1901646366757864200, key: EventKey( [ 120, 87, 41, 252, 87, 171, 167, 26, 0, 119, 89, 75, 141, 106, 15, 10, 4, 105, 56, 80, 136, 191, 210, 12, ], ), }, sent_events: EventHandle { count: 6112209883020641156, key: EventKey( [ 34, 65, 205, 193, 95, 145, 0, 128, 148, 129, 120, 30, 93, 147, 207, 210, 20, 13, 202, 35, 107, 1, 221, 12, ], ), }, sequence_number: 4168111590304356406, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e85ebc55e355c2c1c8a9085026348c2095eed132c6e852d0590c3adb1ae8100c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95c0fd8f506d27f852e244b116229784318000050e7f99a0c28a462187c4975ceeb7843de6537c747b24eef9915e50dd79caf07c0ea131838e8f1d22a1847f7e9b1a8a2590507b1b59668e160e51a981a4a1991700314327917c50d155b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083a37380b71df1e1a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 216, 245, 6, 210, 127, 133, 46, 36, 75, 17, 98, 41, 120, 67, 24, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7107850146502272848, key: EventKey( [ 124, 73, 117, 206, 235, 120, 67, 222, 101, 55, 199, 71, 178, 78, 239, 153, 21, 229, 13, 215, 156, 175, 7, 192, ], ), }, sent_events: EventHandle { count: 3085794674378019818, key: EventKey( [ 71, 247, 233, 177, 168, 162, 89, 5, 7, 177, 181, 150, 104, 225, 96, 229, 26, 152, 26, 74, 25, 145, 112, 3, ], ), }, sequence_number: 6563167172115902996, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e87fe9675bac5870f131f6f9712f550754bcb4c5acee5c0547f502b5e5058cc7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99d014089fd03614be9c2ebcd7381311ff9d5ba181f71748545e4a6cd7a07502639ec5d626f44d6a26f46a98206ccf25bc5c94bab87ba0ed7a354a5b2f637b18c7b1c7e0001a99b5ee9f69efad0828cf09120d8a839bc2c890b24037e0718cf6bf59417645157a24f64257370c8b83d63c67d0aef9d66f7ee67fdff56f93f181fda9a3007afa33d08fa8297301fbe550aec82ef905a485c1b3787852ab07f272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708cc9a50e4468c8dd1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 137, 253, 3, 97, 75, 233, 194, 235, 205, 115, 129, 49, 31, 249, 213, 186, 24, 31, 113, 116, 133, 69, 228, 166, 205, 122, 7, 80, 38, 57, 236, 93, 98, 111, 68, 214, 162, 111, 70, 169, 130, 6, 204, 242, 91, 197, 201, 75, 171, 135, 186, 14, 215, 163, 84, 165, 178, 246, 55, 177, 140, 123, 28, 126, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: a99b5ee9f69efad0828cf09120d8a839, }, ), received_events: EventHandle { count: 539872458678283452, key: EventKey( [ 207, 107, 245, 148, 23, 100, 81, 87, 162, 79, 100, 37, 115, 112, 200, 184, 61, 99, 198, 125, 10, 239, 157, 102, ], ), }, sent_events: EventHandle { count: 4609811351058509559, key: EventKey( [ 31, 218, 154, 48, 7, 175, 163, 61, 8, 250, 130, 151, 48, 31, 190, 85, 10, 236, 130, 239, 144, 90, 72, 92, ], ), }, sequence_number: 2846187186196789019, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e8a8edb65fb5ea57a2b4220367c83487b8170faf515eb5c19ed109a750e2435c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137dacd636ba5ecc193c49fb69bd458006b66dfef14ec062423132438fe71a103c09e345afc1d168bb1505d734b108ba93d4ee009f5687931012b5011af71bf83361083851f974c3ba601bae6b240b378b800d9403b1b439fb97712929d95a4a69c0618d005e496534bb7ed2c93452c0195a7e22e0d938808a4b6683dbe583580fff45f18a5421c78ad2a427a0922682f442d6c6e4284fe03d09d9032a1d97e6247a49f042101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ee990f89fd46f7c9 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 218, 205, 99, 107, 165, 236, 193, 147, 196, 159, 182, 155, 212, 88, 0, 107, 102, 223, 239, 20, 236, 6, 36, 35, 19, 36, 56, 254, 113, 161, 3, 192, 158, 52, 90, 252, 29, 22, 139, 177, 80, 93, 115, 75, 16, 139, 169, 61, 78, 224, 9, 245, 104, 121, 49, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2b5011af71bf83361083851f974c3ba6, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bae6b240b378b800d9403b1b439fb977, }, ), received_events: EventHandle { count: 476438886409409042, key: EventKey( [ 208, 5, 228, 150, 83, 75, 183, 237, 44, 147, 69, 44, 1, 149, 167, 226, 46, 13, 147, 136, 8, 164, 182, 104, ], ), }, sent_events: EventHandle { count: 6914432254036459069, key: EventKey( [ 165, 66, 28, 120, 173, 42, 66, 122, 9, 34, 104, 47, 68, 45, 108, 110, 66, 132, 254, 3, 208, 157, 144, 50, ], ), }, sequence_number: 333165523950819745, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e90e972bba570f56d61f27b0fdb072aef697c77a6351b249a0229d3af247abeb): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97619ebeb30f637b1ad702957c089e2cf89b4a1bbf95e7f7a5d2e7001db1f70c4757137aa125fd6521ba26196002b80718c00d2d663188702d02021984604b2ec997a1b9dbacf6334f444ee2625dc20a7441c726c4a291848431a53187d19f1cda99402ce3bbb496bf7ada907d8cc2d879a13df15d18a822101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e9d7a6c88a35adf6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 235, 235, 48, 246, 55, 177, 173, 112, 41, 87, 192, 137, 226, 207, 137, 180, 161, 187, 249, 94, 127, 122, 93, 46, 112, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: db1f70c4757137aa125fd6521ba26196, }, ), key_rotation_capability: None, received_events: EventHandle { count: 7194168354569027627, key: EventKey( [ 135, 2, 208, 32, 33, 152, 70, 4, 178, 236, 153, 122, 27, 157, 186, 207, 99, 52, 244, 68, 238, 38, 37, 220, ], ), }, sent_events: EventHandle { count: 2975309741187966752, key: EventKey( [ 72, 67, 26, 83, 24, 125, 25, 241, 205, 169, 148, 2, 206, 59, 187, 73, 107, 247, 173, 169, 7, 216, 204, 45, ], ), }, sequence_number: 9406560663583824519, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e9261741c0c2a518e12445350103b0565c529a8283acca8aef4c7e2664f081ed): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95d1096bd239022161f870637ac2def082e840000ffabbe957003d63818f60c8494a386fbd7d0193d1d3b22280e15965b2a8902c0755697efbec6da140018e0a6db39afe1b6d665165a070999a64dea2fad804e71c847ce94ee5c592453d82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708945339086bf5d323 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 150, 189, 35, 144, 34, 22, 31, 135, 6, 55, 172, 45, 239, 8, 46, 132, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4095464693223566335, key: EventKey( [ 246, 12, 132, 148, 163, 134, 251, 215, 208, 25, 61, 29, 59, 34, 40, 14, 21, 150, 91, 42, 137, 2, 192, 117, ], ), }, sent_events: EventHandle { count: 5870046675965782, key: EventKey( [ 224, 166, 219, 57, 175, 225, 182, 214, 101, 22, 90, 7, 9, 153, 166, 77, 234, 47, 173, 128, 78, 113, 200, 71, ], ), }, sequence_number: 15587842701489247438, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(e9b87b7d24234fbad3b42fcbb2b0d667f86b53f3bfb41c831501e45fbd81d002): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a8014be2867111edf26020f10dd636fea8f6ca4187491dadbed2537f065ce9e6e448dfd182a76589048ae66270a9ed213033ec996aebddb241ecba11b43e7cbafab52ef92d98a0c551899ce1d3f7000149f9f5b2392dfc9f385d45ac3691594760a17683f954f50518f36db72f4981a296813b04b8be25a5a8921a6fb794c573a92361ed41dbfdb17f1851a778cc481b9b8ccf7bd70c01e6b0d163554314bb8794c261177c9878d6fcf72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083a49f7d879b69549 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 226, 134, 113, 17, 237, 242, 96, 32, 241, 13, 214, 54, 254, 168, 246, 202, 65, 135, 73, 29, 173, 190, 210, 83, 127, 6, 92, 233, 230, 228, 72, 223, 209, 130, 167, 101, 137, 4, 138, 230, 98, 112, 169, 237, 33, 48, 51, 236, 153, 106, 235, 221, 178, 65, 236, 186, 17, 180, 62, 124, 186, 250, 181, 46, 249, 45, 152, 160, 197, 81, 137, 156, 225, 211, 247, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 49f9f5b2392dfc9f385d45ac36915947, }, ), received_events: EventHandle { count: 429342770112930144, key: EventKey( [ 243, 109, 183, 47, 73, 129, 162, 150, 129, 59, 4, 184, 190, 37, 165, 168, 146, 26, 111, 183, 148, 197, 115, 169, ], ), }, sent_events: EventHandle { count: 9201414631840375075, key: EventKey( [ 81, 167, 120, 204, 72, 27, 155, 140, 207, 123, 215, 12, 1, 230, 176, 209, 99, 85, 67, 20, 187, 135, 148, 194, ], ), }, sequence_number: 17869393234941974369, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ea193f853f492dd05d02fbdc49001c4935ba33a7dafc55a22cb96061fa110805): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd016023bdcfb9d9f7108f2780097305bff2d8095a5445409a48ae02b2e5a5efe094e16fdbeeaab58d5b9e9215420636823789d16744646ae61e7556bb4557cdfd1232fad57f645a39a2d3f291f7587e1b4bc0389c0136398f59119df92d2641c796f70001e60862e464b55c22147cb4441f1a6b34ff28a65fdb2f2c1518c183f31bee0591006559c483ff5d2f3415260b3d2eef5040fe5733a82a1ad17e1872ef49b34f55a0c618768cad440b81e67013da1ca9373466cace8fc4fab783dc2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70868dd82e8f99e9c91 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 35, 189, 207, 185, 217, 247, 16, 143, 39, 128, 9, 115, 5, 191, 242, 216, 9, 90, 84, 69, 64, 154, 72, 174, 2, 178, 229, 165, 239, 224, 148, 225, 111, 219, 238, 170, 181, 141, 91, 158, 146, 21, 66, 6, 54, 130, 55, 137, 209, 103, 68, 100, 106, 230, 30, 117, 86, 187, 69, 87, 205, 253, 18, 50, 250, 213, 127, 100, 90, 57, 162, 211, 242, 145, 247, 88, 126, 27, 75, 192, 56, 156, 1, 54, 57, 143, 89, 17, 157, 249, 45, 38, 65, 199, 150, 247, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e60862e464b55c22147cb4441f1a6b34, }, ), received_events: EventHandle { count: 1525646993020823807, key: EventKey( [ 193, 131, 243, 27, 238, 5, 145, 0, 101, 89, 196, 131, 255, 93, 47, 52, 21, 38, 11, 61, 46, 239, 80, 64, ], ), }, sent_events: EventHandle { count: 9138113889424332798, key: EventKey( [ 114, 239, 73, 179, 79, 85, 160, 198, 24, 118, 140, 173, 68, 11, 129, 230, 112, 19, 218, 28, 169, 55, 52, 102, ], ), }, sequence_number: 15889746197960707786, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eab33f30b57e0e20c6bd9f8669420182a25236fd15bad509bc3e50e8c8c3c524): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99301365a01bc1b442db14f4aabc02c7cc68b589f63f36ee221a5202f7a343a1061e64d5d5aff474a98655b66e285c32955a3ce25079d8decb900019180890728b620c8320e4f0eda5f1e36b22f673feb84d922183ba4daa21f535f0e8de714d63769d5714e7ecbfa5f969d0837a85bd30d05d43f1887019f440359b7bc59af0e1c0796ae52bdb13a42f0335c12dd3e57749b5cb2f62101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708632fd6b128844195 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 90, 1, 188, 27, 68, 45, 177, 79, 74, 171, 192, 44, 124, 198, 139, 88, 159, 99, 243, 110, 226, 33, 165, 32, 47, 122, 52, 58, 16, 97, 230, 77, 93, 90, 255, 71, 74, 152, 101, 91, 102, 226, 133, 195, 41, 85, 163, 206, 37, 7, 157, 141, 236, 185, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9180890728b620c8320e4f0eda5f1e36, }, ), received_events: EventHandle { count: 2511184413151670194, key: EventKey( [ 59, 164, 218, 162, 31, 83, 95, 14, 141, 231, 20, 214, 55, 105, 213, 113, 78, 126, 203, 250, 95, 150, 157, 8, ], ), }, sent_events: EventHandle { count: 4599306676390832183, key: EventKey( [ 135, 1, 159, 68, 3, 89, 183, 188, 89, 175, 14, 28, 7, 150, 174, 82, 189, 177, 58, 66, 240, 51, 92, 18, ], ), }, sequence_number: 17776372501926330077, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb08012cf571a6fe4ec66461a3c0e302e79b28eb971ccbcfb51a331837158e2a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c963165288c96b870225f8628ad04536f1e7a060b5806aca62000001b03cfea0217f3a18596e76137a672aabf33da3b7beef6e3f9d07c844b89da4a2f4d6d86b8e3a101e180d66ee3f712886693830aab3c629a48445d6e12eb23e07d4c041f30fea099bf42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d8cf808f6410c929 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 82, 136, 201, 107, 135, 2, 37, 248, 98, 138, 208, 69, 54, 241, 231, 160, 96, 181, 128, 106, 202, 98, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4215124751585947649, key: EventKey( [ 89, 110, 118, 19, 122, 103, 42, 171, 243, 61, 163, 183, 190, 239, 110, 63, 157, 7, 200, 68, 184, 157, 164, 162, ], ), }, sent_events: EventHandle { count: 2166295804134348532, key: EventKey( [ 13, 102, 238, 63, 113, 40, 134, 105, 56, 48, 170, 179, 198, 41, 164, 132, 69, 214, 225, 46, 178, 62, 7, 212, ], ), }, sequence_number: 17625692467539165632, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb232b6d2f65d345fe4bc9d688a60ceb3f2f8a6610840afa4e66cf96ccfd43f6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9860139bcba154ae8fe7e78bf1af10865cf97b5bf4752482b53781e146f6ded00a77dc59de5183a1a6205824379e9565aa6fb60f7cfb438c0fb27e94200001a26d36f203bcd7218f5921b092b2db3b57738ad3f514b88503bbc3e845e37d03957d28b60ab69dd0718c25fca844c6f200ddf157681a91a6c41e238d974d96c75f38dded57f951a78932101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a8f9519bae21aad8 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 188, 186, 21, 74, 232, 254, 126, 120, 191, 26, 241, 8, 101, 207, 151, 181, 191, 71, 82, 72, 43, 83, 120, 30, 20, 111, 109, 237, 0, 167, 125, 197, 157, 229, 24, 58, 26, 98, 5, 130, 67, 121, 233, 86, 90, 166, 251, 96, 247, 207, 180, 56, 192, 251, 39, 233, 66, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 8272333101050570266, key: EventKey( [ 245, 146, 27, 9, 43, 45, 179, 181, 119, 56, 173, 63, 81, 75, 136, 80, 59, 188, 62, 132, 94, 55, 208, 57, ], ), }, sent_events: EventHandle { count: 566725312898650711, key: EventKey( [ 194, 95, 202, 132, 76, 111, 32, 13, 223, 21, 118, 129, 169, 26, 108, 65, 226, 56, 217, 116, 217, 108, 117, 243, ], ), }, sequence_number: 10626272550177857165, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(eb847467781690609663c2f0f977ecb0740652bdcfd18b36ea45bd1f47acbd96): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ab014ed55855110576f0034cdffd9e71331b7cba5b17d2e6fd4312f849f781f284c77c6cc17747e39547e4b91ffb8267c364c19764f294f793d545578c3ef959bfb0a7d129434726edec2a40d3ccf5cc1201ed84af4eea223cabc302c3ceff875d0400e8b86b0467cdf9561802edb3783fdd122b129595bb3e2255809dd58421432dc4d04cf2f62ccb90bd5f181ca8d87c2c46f945230fed47d1b2ffd352212cb68322374ee38aacbee85438152101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083dada3d648b30a43 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 213, 88, 85, 17, 5, 118, 240, 3, 76, 223, 253, 158, 113, 51, 27, 124, 186, 91, 23, 210, 230, 253, 67, 18, 248, 73, 247, 129, 242, 132, 199, 124, 108, 193, 119, 71, 227, 149, 71, 228, 185, 31, 251, 130, 103, 195, 100, 193, 151, 100, 242, 148, 247, 147, 213, 69, 87, 140, 62, 249, 89, 191, 176, 167, 209, 41, 67, 71, 38, 237, 236, 42, 64, 211, 204, 245, 204, 18, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ed84af4eea223cabc302c3ceff875d04, }, ), key_rotation_capability: None, received_events: EventHandle { count: 6267266198802249960, key: EventKey( [ 2, 237, 179, 120, 63, 221, 18, 43, 18, 149, 149, 187, 62, 34, 85, 128, 157, 213, 132, 33, 67, 45, 196, 208, ], ), }, sent_events: EventHandle { count: 6898829406508610124, key: EventKey( [ 28, 168, 216, 124, 44, 70, 249, 69, 35, 15, 237, 71, 209, 178, 255, 211, 82, 33, 44, 182, 131, 34, 55, 78, ], ), }, sequence_number: 1529065432100408035, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec445e24cd766b6a6131788d9eb0b7e8796e0081c92569464a9f56ce7ea47f3c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98101147445e695dfc15902017674b43e9fceaa5e69478f0108510b5ada46d3d8553ef6c40c96a4ee0122696dc421068d53ea5e6761fac6b453e807bd8962a8346618a4fe718ef237a284c922c7a80ad9025bdb80b929e027c8cd68d19e367a182a7f1825027ae004d19a5ce73e35f028d2a9736074fc6ab83a087819a4a591071766772101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e3cc96c85eb8a4de Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 116, 69, 230, 149, 223, 193, 89, 2, 1, 118, 116, 180, 62, 159, 206, 170, 94, 105, 71, 143, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 08510b5ada46d3d8553ef6c40c96a4ee, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 22696dc421068d53ea5e6761fac6b453, }, ), received_events: EventHandle { count: 7364696431828731880, key: EventKey( [ 164, 254, 113, 142, 242, 55, 162, 132, 201, 34, 199, 168, 10, 217, 2, 91, 219, 128, 185, 41, 224, 39, 200, 205, ], ), }, sent_events: EventHandle { count: 9163163305020150120, key: EventKey( [ 37, 2, 122, 224, 4, 209, 154, 92, 231, 62, 53, 240, 40, 210, 169, 115, 96, 116, 252, 106, 184, 58, 8, 120, ], ), }, sequence_number: 8603589459413672985, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec62c0686a78ffe9b79016d72d6a7d12ba12000afc11734e6c97bc059f64a55a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af01522451e9d16e7eed695052bb592ea46cb64922ee33c1f5638e8c71af789cd3a7eb5c19375c9b2b59777f92ff894afdf074275751cb4f2683261dd96bd80942e76b2138a741ebd97559c449ae90b3c75f8ee57501a8885381acb32efaffd09e9d4bd841a4003d1663b00f05202c18809fb41c4fab554877c6743dd317f385eb545d50b132e8242822e601604fab101843b38936c35b1e4cc054c3f7edf388497ba75e5f1a7247b1424ae37152bb69af2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70891f927bc8a62a3db Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 36, 81, 233, 209, 110, 126, 237, 105, 80, 82, 187, 89, 46, 164, 108, 182, 73, 34, 238, 51, 193, 245, 99, 142, 140, 113, 175, 120, 156, 211, 167, 235, 92, 25, 55, 92, 155, 43, 89, 119, 127, 146, 255, 137, 74, 253, 240, 116, 39, 87, 81, 203, 79, 38, 131, 38, 29, 217, 107, 216, 9, 66, 231, 107, 33, 56, 167, 65, 235, 217, 117, 89, 196, 73, 174, 144, 179, 199, 95, 142, 229, 117, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a8885381acb32efaffd09e9d4bd841a4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3179546901865502269, key: EventKey( [ 128, 159, 180, 28, 79, 171, 85, 72, 119, 198, 116, 61, 211, 23, 243, 133, 235, 84, 93, 80, 177, 50, 232, 36, ], ), }, sent_events: EventHandle { count: 1201140999391683112, key: EventKey( [ 67, 179, 137, 54, 195, 91, 30, 76, 192, 84, 195, 247, 237, 243, 136, 73, 123, 167, 94, 95, 26, 114, 71, 177, ], ), }, sequence_number: 12639839791964441154, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec6ebe7a38aa15ccd893aeda525f0635f013ff4e1318566b57fcbe927724fd50): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a10144dd212a3f8d27ba802d94d1caad8f8c89659f035777268dcccced19d1c60e0d39c864fe822f5b49c270cd2ea1b5c6b2442352359b587a3773a47fcd5c28dedd3a8fa3d8370001c8e19a2c6c3c26f6879125fe1348ae3b72e644167eb6c46b18500ae18735597f631f665866f22ce4fecb7259d749ad24a971378f0f8f5d6e0f18ae5f1ae38595ef4ec858a527d4cc9be6be781e21d3bc3dd28f0c67d73eab9a0e2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70897cb966628c1c168 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 221, 33, 42, 63, 141, 39, 186, 128, 45, 148, 209, 202, 173, 143, 140, 137, 101, 159, 3, 87, 119, 38, 141, 204, 204, 237, 25, 209, 198, 14, 13, 57, 200, 100, 254, 130, 47, 91, 73, 194, 112, 205, 46, 161, 181, 198, 178, 68, 35, 82, 53, 155, 88, 122, 55, 115, 164, 127, 205, 92, 40, 222, 221, 58, 143, 163, 216, 55, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: c8e19a2c6c3c26f6879125fe1348ae3b, }, ), received_events: EventHandle { count: 7765532310149326450, key: EventKey( [ 80, 10, 225, 135, 53, 89, 127, 99, 31, 102, 88, 102, 242, 44, 228, 254, 203, 114, 89, 215, 73, 173, 36, 169, ], ), }, sent_events: EventHandle { count: 1111929027029841777, key: EventKey( [ 174, 95, 26, 227, 133, 149, 239, 78, 200, 88, 165, 39, 212, 204, 155, 230, 190, 120, 30, 33, 211, 188, 61, 210, ], ), }, sequence_number: 1052341749334609039, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ec89b30d8c61a990668c34108e7ae03e8d926c00af8c94c45328278d4c7753e8): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c995013801b823e25fbbb3973bd272a6233eb3df98a48ddbe81a775acb9f2072923f2c2c0d506d9e3454cd567c8fb51a7aafa5b9ff8256cb5f2731780001caafac1a21d07d8417ae729b3570d50da87e788c608a3c0718901d359d4893411f5101e71a425abe069dd6c1073fb71d31fcac2b74cbb7444818617599633ddd63cac054706111ff12a6e6580d5503bb126d1f1f1fe8677946c72101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70811f711c198f0a319 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 1, 184, 35, 226, 95, 187, 179, 151, 59, 210, 114, 166, 35, 62, 179, 223, 152, 164, 141, 219, 232, 26, 119, 90, 203, 159, 32, 114, 146, 63, 44, 44, 13, 80, 109, 158, 52, 84, 205, 86, 124, 143, 181, 26, 122, 175, 165, 185, 255, 130, 86, 203, 95, 39, 49, 120, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: caafac1a21d07d8417ae729b3570d50d, }, ), received_events: EventHandle { count: 521443804146335400, key: EventKey( [ 144, 29, 53, 157, 72, 147, 65, 31, 81, 1, 231, 26, 66, 90, 190, 6, 157, 214, 193, 7, 63, 183, 29, 49, ], ), }, sent_events: EventHandle { count: 5207489153602399484, key: EventKey( [ 97, 117, 153, 99, 61, 221, 99, 202, 192, 84, 112, 97, 17, 255, 18, 166, 230, 88, 13, 85, 3, 187, 18, 109, ], ), }, sequence_number: 14359297949100351263, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ecb019cf8f52ef65a49580c8e408cff68c2c6c871eeb141c7b090e13a72b16bf): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a30156cee19fe1f3bb7674e927a4c5ae97b319f2533a25305d98ab649ed42799b12bce582a4c540ebeaabeb11a7198c39e2d06f531e3ffd1dab105c225488f7e0d8c33df7c2ddf4050f6085486ded0ab35ca3fd5855d54f4dd0000f8e143c692a35d3218a51aeb2e277fd8ae66381b806571e0a0534c7038a575f50273df50129320c97d187a715f6cee83799f0f1a02a657bc97a97ebb7906f34f33deb2cafd73b2cac9b12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70896b705040b7662d2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 225, 159, 225, 243, 187, 118, 116, 233, 39, 164, 197, 174, 151, 179, 25, 242, 83, 58, 37, 48, 93, 152, 171, 100, 158, 212, 39, 153, 177, 43, 206, 88, 42, 76, 84, 14, 190, 170, 190, 177, 26, 113, 152, 195, 158, 45, 6, 245, 49, 227, 255, 209, 218, 177, 5, 194, 37, 72, 143, 126, 13, 140, 51, 223, 124, 45, 223, 64, 80, 246, 8, 84, 134, 222, 208, 171, 53, 202, 63, 213, 133, 93, 84, 244, 221, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 3629236725517378040, key: EventKey( [ 165, 26, 235, 46, 39, 127, 216, 174, 102, 56, 27, 128, 101, 113, 224, 160, 83, 76, 112, 56, 165, 117, 245, 2, ], ), }, sent_events: EventHandle { count: 9063811541099405171, key: EventKey( [ 122, 113, 95, 108, 238, 131, 121, 159, 15, 26, 2, 166, 87, 188, 151, 169, 126, 187, 121, 6, 243, 79, 51, 222, ], ), }, sequence_number: 12810993482831088306, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ed57bc0575214154371d1e8e3473b5ea586388feca522a18072552d2b5b2fc17): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f225759128dab76c51b23704abffdf14c909de1e2b459d80c653257a161cac4c38f78a6000088008595a998216d184e625f6c667647ce735a9e62797f14fc37aaf0e798994d654b497f508886ad1018b48287776c44267ea377e0bcb728aedfe1d2b06f1ef148ce1ded83184efaac142101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708aebecfb0673d968f Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 87, 89, 18, 141, 171, 118, 197, 27, 35, 112, 74, 191, 253, 241, 76, 144, 157, 225, 226, 180, 89, 216, 12, 101, 50, 87, 161, 97, 202, 196, 195, 143, 120, 166, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7863734278491013256, key: EventKey( [ 78, 98, 95, 108, 102, 118, 71, 206, 115, 90, 158, 98, 121, 127, 20, 252, 55, 170, 240, 231, 152, 153, 77, 101, ], ), }, sent_events: EventHandle { count: 1201764595601983819, key: EventKey( [ 180, 130, 135, 119, 108, 68, 38, 126, 163, 119, 224, 188, 183, 40, 174, 223, 225, 210, 176, 111, 30, 241, 72, 206, ], ), }, sequence_number: 1489840790078483741, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ed84dbad2224e81c1c0d68b7ca46d4e428aac627d810c0fe14d8c99894e57312): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c95e01730001fc093f1baabdac1689eaac6a57f611d89eb2cafc7076fa6c18f7e965d7be07de9c321536c1f598d2f757d4feacc666bf2fcdc9dec9b3991d561836c4c83867bcdd882807752d97d2f97961978d74088c12e7629e35763fd2f19c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7083827bcf44aedc7e1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 115, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc093f1baabdac1689eaac6a57f611d8, }, ), received_events: EventHandle { count: 7852719127923438238, key: EventKey( [ 247, 233, 101, 215, 190, 7, 222, 156, 50, 21, 54, 193, 245, 152, 210, 247, 87, 212, 254, 172, 198, 102, 191, 47, ], ), }, sent_events: EventHandle { count: 6205284859051428301, key: EventKey( [ 54, 196, 200, 56, 103, 188, 221, 136, 40, 7, 117, 45, 151, 210, 249, 121, 97, 151, 141, 116, 8, 140, 18, 231, ], ), }, sequence_number: 11309051309312024162, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(edcaaf7387d24e19793acd7fb714e92327723b5316de25784af0f76ebe94e6a3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9840117ae7dc64b709f6d578c109de3dde3f066b14c74eaa6a24a018f9d73920d6f896cfaac206cac3099d3013a70527097ca671f175a95bc3753ab5c820d9127cf843a16182a669194cadbdbedbe6b73dffe98f2ca68f6ed4f8648bd7dc17d245a55b3fa7a18371ca7476374caee03d15a607bf2d5b7040844456e865f2f7820d64d7281b03c2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7086920b8a3195b24ba Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 174, 125, 198, 75, 112, 159, 109, 87, 140, 16, 157, 227, 221, 227, 240, 102, 177, 76, 116, 234, 166, 162, 74, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8f9d73920d6f896cfaac206cac3099d3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 3a70527097ca671f175a95bc3753ab5c, }, ), received_events: EventHandle { count: 1601738642740546946, key: EventKey( [ 42, 102, 145, 148, 202, 219, 219, 237, 190, 107, 115, 223, 254, 152, 242, 202, 104, 246, 237, 79, 134, 72, 189, 125, ], ), }, sent_events: EventHandle { count: 8861592395970805185, key: EventKey( [ 55, 28, 167, 71, 99, 116, 202, 238, 3, 209, 90, 96, 123, 242, 213, 183, 4, 8, 68, 69, 110, 134, 95, 47, ], ), }, sequence_number: 4373137566108885112, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee1655ea11cb6579f1fa969c5398f87939310ecd5d758faf95af431095fea52c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f02fb6e01f170b824ed66fd5dceb02745a470f400012f70e304348768dcaa2db4fa1ad9369a7c91247c3525f1621876970441aba54cf7dca8bd6e85d92cc8cd7dc32b08ab0c9e6b29a7d856c2aa1418387522ee38ef005ce30ce42268ce2b54dffba5a03a18a346bf5877d1fef6b4da2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d7ebf7842277ff1c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 251, 110, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: f170b824ed66fd5dceb02745a470f400, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 2f70e304348768dcaa2db4fa1ad9369a, }, ), received_events: EventHandle { count: 7129520596750471548, key: EventKey( [ 118, 151, 4, 65, 171, 165, 76, 247, 220, 168, 189, 110, 133, 217, 44, 200, 205, 125, 195, 43, 8, 171, 12, 158, ], ), }, sent_events: EventHandle { count: 1489216305057180011, key: EventKey( [ 56, 117, 34, 238, 56, 239, 0, 92, 227, 12, 228, 34, 104, 206, 43, 84, 223, 251, 165, 160, 58, 24, 163, 70, ], ), }, sequence_number: 15759492570372593855, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ee996638db5861a195860117d9627e6f90327350843df5d8fd6d9fde663a1625): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ae0161a9c23ce6cbd0d14b2191348b55fe9e88ff2b19756d6454692e04ec285fb7f69b00d017fbf666cddcf87694515f310d69e7e8298275586d8490583327a79023e820be81f94ea7f6e2b813ba21d854336e60eefc8da0a66f11618acd7cc3048529bb0000f5173cc8edca8b3818b26aba9c1ada620466878c1142469e09703befd6f318252247fd1ae008b360631847e38953b35055113fbea20ce33f5ccd4f7c2042abdd6e2c492851b0c884a52b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708dffcd361c8514ae0 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 169, 194, 60, 230, 203, 208, 209, 75, 33, 145, 52, 139, 85, 254, 158, 136, 255, 43, 25, 117, 109, 100, 84, 105, 46, 4, 236, 40, 95, 183, 246, 155, 0, 208, 23, 251, 246, 102, 205, 220, 248, 118, 148, 81, 95, 49, 13, 105, 231, 232, 41, 130, 117, 88, 109, 132, 144, 88, 51, 39, 167, 144, 35, 232, 32, 190, 129, 249, 78, 167, 246, 226, 184, 19, 186, 33, 216, 84, 51, 110, 96, 238, 252, 141, 160, 166, 111, 17, 97, 138, 205, 124, 195, 4, 133, 41, 187, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4074573410502186997, key: EventKey( [ 178, 106, 186, 156, 26, 218, 98, 4, 102, 135, 140, 17, 66, 70, 158, 9, 112, 59, 239, 214, 243, 24, 37, 34, ], ), }, sent_events: EventHandle { count: 7160920258220064071, key: EventKey( [ 71, 227, 137, 83, 179, 80, 85, 17, 63, 190, 162, 12, 227, 63, 92, 205, 79, 124, 32, 66, 171, 221, 110, 44, ], ), }, sequence_number: 3145065912274593865, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef41e2249c57fa4f390bcc23c3ffeebe291f6b5e4ca7c7291dda6e98f1a5eff5): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96114b3b1b4ce8ca6b4aa0922be16ed475d846dd1188e000068897ee0a14d8e6a18367d97036320761ba68d5e9c49baa14cbe9306fb7b9a6459c40f2782aaa4a91d18b97d826a1caa5835187f577791aac9db0133625c175f367bd48f4330a179e7622101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a37548f6087d4912 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 179, 177, 180, 206, 140, 166, 180, 170, 9, 34, 190, 22, 237, 71, 93, 132, 109, 209, 24, 142, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7678159772364736872, key: EventKey( [ 54, 125, 151, 3, 99, 32, 118, 27, 166, 141, 94, 156, 73, 186, 161, 76, 190, 147, 6, 251, 123, 154, 100, 89, ], ), }, sent_events: EventHandle { count: 2137420550399004612, key: EventKey( [ 185, 125, 130, 106, 28, 170, 88, 53, 24, 127, 87, 119, 145, 170, 201, 219, 1, 51, 98, 92, 23, 95, 54, 123, ], ), }, sequence_number: 7126798668543528916, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ef613958062a8481b694396a2c2cf26ca3a251a4ff1690b9733edb0d84805ed3): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c966196a61448c8bdb00e90bb83352924f092891b7859a8e39f9894600006ccf25730b2e43591810de5961d0e64d111df72472967fc9c13e6434cfa28ecbcb94be25db714ab4171829612eba175efab75254ed9e01bb7472d38857cd0c8564931623a4eb3beab6212101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7080f6ce28080340766 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 106, 97, 68, 140, 139, 219, 0, 233, 11, 184, 51, 82, 146, 79, 9, 40, 145, 183, 133, 154, 142, 57, 249, 137, 70, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6432035319526575980, key: EventKey( [ 16, 222, 89, 97, 208, 230, 77, 17, 29, 247, 36, 114, 150, 127, 201, 193, 62, 100, 52, 207, 162, 142, 203, 203, ], ), }, sent_events: EventHandle { count: 1708072011548704404, key: EventKey( [ 41, 97, 46, 186, 23, 94, 250, 183, 82, 84, 237, 158, 1, 187, 116, 114, 211, 136, 87, 205, 12, 133, 100, 147, ], ), }, sequence_number: 2429386592090333974, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(efbe0584b9e08008870fe28352430e41f1c9daaab86512cd557f47ddc1680580): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ac013fa101316afa3dcaff2885309f9e32947a1f2a4da1127cc54ce553834430b54efe9d477b6001d4d3a7f8ee42120a59cd03e82a5cb79cbb3fae19ef6695388bb40198fe0ddf33f5bd847389744ff477ce4f0176e81c1d9c91112dca5530aeeaa274127712b3d239d4c02518791e3bd22181695b938619cc9407dc90a26b291691673130922167bbb1311946188bb93aae09f71196a3ccbceaa12f02343c43610832e7da0eb9eefaa94408ec612101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708737801f9dc19a3a4 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 161, 1, 49, 106, 250, 61, 202, 255, 40, 133, 48, 159, 158, 50, 148, 122, 31, 42, 77, 161, 18, 124, 197, 76, 229, 83, 131, 68, 48, 181, 78, 254, 157, 71, 123, 96, 1, 212, 211, 167, 248, 238, 66, 18, 10, 89, 205, 3, 232, 42, 92, 183, 156, 187, 63, 174, 25, 239, 102, 149, 56, 139, 180, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 98fe0ddf33f5bd847389744ff477ce4f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 76e81c1d9c91112dca5530aeeaa27412, }, ), received_events: EventHandle { count: 2720407519744954999, key: EventKey( [ 121, 30, 59, 210, 33, 129, 105, 91, 147, 134, 25, 204, 148, 7, 220, 144, 162, 107, 41, 22, 145, 103, 49, 48, ], ), }, sent_events: EventHandle { count: 5051123096495792530, key: EventKey( [ 139, 185, 58, 174, 9, 247, 17, 150, 163, 204, 188, 234, 161, 47, 2, 52, 60, 67, 97, 8, 50, 231, 218, 14, ], ), }, sequence_number: 7056023807185317561, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f084f6d2c4000c4ea88e518de56ca2df19488ce9e984f01b776c47544a3d795b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c601597a55f4b8d516fe80f9f7d84d9d31f8e40954357039a3d1fffbcbb5f06eb82851f8d57b1ed7d96f30b4945231bae33396fcddb0473fc90b8e5787026a88a85217808e5c1889402bd3f17a96388db473384a5e3078799b37a2530121ce7693aa04e035a8f430de4f99131401fd0061f5f57bff17fb7914cde47f1be042ee62a4cfa9577c18f5ee9f0c4cc875d68f586876f2580424f93ab703c5de4f0090a16180f766d75d18e8231b55886cca60397c10d10a1f849a92e5644257b46da312c198665947fec02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d1b540f1d95cba89 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 122, 85, 244, 184, 213, 22, 254, 128, 249, 247, 216, 77, 157, 49, 248, 228, 9, 84, 53, 112, 57, 163, 209, 255, 251, 203, 181, 240, 110, 184, 40, 81, 248, 213, 123, 30, 215, 217, 111, 48, 180, 148, 82, 49, 186, 227, 51, 150, 252, 221, 176, 71, 63, 201, 11, 142, 87, 135, 2, 106, 136, 168, 82, 23, 128, 142, 92, 24, 137, 64, 43, 211, 241, 122, 150, 56, 141, 180, 115, 56, 74, 94, 48, 120, 121, 155, 55, 162, 83, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 21ce7693aa04e035a8f430de4f991314, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fd0061f5f57bff17fb7914cde47f1be0, }, ), received_events: EventHandle { count: 8959816692958162498, key: EventKey( [ 245, 238, 159, 12, 76, 200, 117, 214, 143, 88, 104, 118, 242, 88, 4, 36, 249, 58, 183, 3, 197, 222, 79, 0, ], ), }, sent_events: EventHandle { count: 6761986578716926352, key: EventKey( [ 232, 35, 27, 85, 136, 108, 202, 96, 57, 124, 16, 209, 10, 31, 132, 154, 146, 229, 100, 66, 87, 180, 109, 163, ], ), }, sequence_number: 13906631148665618706, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f0c846ae221e2e218a16293d1907bf88ee628f1da8f537b1a47863f54df0b394): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9570af7ff307c8c23705b075d0000fad354e7dd2877681875c0e974bc13d8bba69b15021d0cfab9db8d9eef926bf73c280b01b573cde12a18f2a7b203ba3d2bb1a6b132c87072a0803b2b9091251d7c8593f40b566c2e04172101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e7d773d143766b1b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 247, 255, 48, 124, 140, 35, 112, 91, 7, 93, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 7527530235707053050, key: EventKey( [ 117, 192, 233, 116, 188, 19, 216, 187, 166, 155, 21, 2, 29, 12, 250, 185, 219, 141, 158, 239, 146, 107, 247, 60, ], ), }, sent_events: EventHandle { count: 3089976716194548520, key: EventKey( [ 242, 167, 178, 3, 186, 61, 43, 177, 166, 177, 50, 200, 112, 114, 160, 128, 59, 43, 144, 145, 37, 29, 124, 133, ], ), }, sequence_number: 1658501605614154899, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f1183ad8aa6b80ee97637d9b3d1a3ade0006d6ac41833caef03796379d10ca24): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9c00163d46005ac99bc18783e533bf4c0726a73b3252c5ed056f4060dd6b210b9870ad485ba100f9105d668946dce5d744b5ddf32cbf30c51f57cb4aeb7a33d61924b7c58615090737b953a9ce1d45bf7903a9c9b1d188d8ac8e0c7eb58d6176891a126298bcd01be80a64a8ad982ef5df163edb980dccf00981237fdee052d171838e79c2575bc9e910bb4c6b707a7b3541b7955abcd06b070c336f04d881b075d189a24a5c835c66219fde80be144c62e6171596fa9a3800f6faf4a0b6cc98d0ec42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708884655119d5462d2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 212, 96, 5, 172, 153, 188, 24, 120, 62, 83, 59, 244, 192, 114, 106, 115, 179, 37, 44, 94, 208, 86, 244, 6, 13, 214, 178, 16, 185, 135, 10, 212, 133, 186, 16, 15, 145, 5, 214, 104, 148, 109, 206, 93, 116, 75, 93, 223, 50, 203, 243, 12, 81, 245, 124, 180, 174, 183, 163, 61, 97, 146, 75, 124, 88, 97, 80, 144, 115, 123, 149, 58, 156, 225, 212, 91, 247, 144, 58, 156, 155, 29, 24, 141, 138, 200, 224, 199, 235, 88, 214, 23, 104, 145, 161, 38, 41, 139, 205, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: be80a64a8ad982ef5df163edb980dccf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 1669997560832922264, key: EventKey( [ 56, 231, 156, 37, 117, 188, 158, 145, 11, 180, 198, 183, 7, 167, 179, 84, 27, 121, 85, 171, 205, 6, 176, 112, ], ), }, sent_events: EventHandle { count: 6703356842601363139, key: EventKey( [ 154, 36, 165, 200, 53, 198, 98, 25, 253, 232, 11, 225, 68, 198, 46, 97, 113, 89, 111, 169, 163, 128, 15, 111, ], ), }, sequence_number: 14127384977348446895, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f277d2abc4335418a1e4b3ce8ca1b8aa88a023f7b49ce79faeb0de5acc54b76a): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a001330d86f07f2c85be8f5fd93ca139148ac4fa69445d6a442d3b0f664c6fc3a26fbda04a03effebb8cc57bb94bc5892589cfab17af01b301fb35a5afef88c25c21baa797bc7001ddcbf169de4c30cf4c5b56a7edf2e62d224ee94653255f63187115b742bfa9cae3af42891538bd6fb7212eb48a058b2962bc594d6ae965431118244289f2addea45816bdace541d58ea02698d13308742b2968a29196eebe909f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b2825c002f16f53 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 13, 134, 240, 127, 44, 133, 190, 143, 95, 217, 60, 161, 57, 20, 138, 196, 250, 105, 68, 93, 106, 68, 45, 59, 15, 102, 76, 111, 195, 162, 111, 189, 160, 74, 3, 239, 254, 187, 140, 197, 123, 185, 75, 197, 137, 37, 137, 207, 171, 23, 175, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: b301fb35a5afef88c25c21baa797bc70, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: ddcbf169de4c30cf4c5b56a7edf2e62d, }, ), received_events: EventHandle { count: 7160482972144586274, key: EventKey( [ 113, 21, 183, 66, 191, 169, 202, 227, 175, 66, 137, 21, 56, 189, 111, 183, 33, 46, 180, 138, 5, 139, 41, 98, ], ), }, sent_events: EventHandle { count: 1243949975269628348, key: EventKey( [ 36, 66, 137, 242, 173, 222, 164, 88, 22, 189, 172, 229, 65, 213, 142, 160, 38, 152, 209, 51, 8, 116, 43, 41, ], ), }, sequence_number: 11497899780614496872, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f3695cdb6a5eff97b998ce9b81cdf72f98df27a5594b1b0361eebf7b3c36f6c7): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a40137274b233c253252b711066761a8888539fcf29acb9b76290a1d8c82f8e97608467bf3a7b1c160e0dbdc7f78a8b0d43c0c13311859b4c9be011ecc6c5abff08fcf576c9987dabca6a301aa2b0cb3951ee5db9d0e9f5d6cbe4a78e4943ddf815ba57718b6714f6b5dade847493b7de5f9f89e928e18d7e9d4cf27110a0666b331779e7218dacdb2b7c5694c8bee645e4100b43fd3928783456dd631e53b3a62edbb3e4f902101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708558edabd9ae327f2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 39, 75, 35, 60, 37, 50, 82, 183, 17, 6, 103, 97, 168, 136, 133, 57, 252, 242, 154, 203, 155, 118, 41, 10, 29, 140, 130, 248, 233, 118, 8, 70, 123, 243, 167, 177, 193, 96, 224, 219, 220, 127, 120, 168, 176, 212, 60, 12, 19, 49, 24, 89, 180, 201, 190, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 1ecc6c5abff08fcf576c9987dabca6a3, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: aa2b0cb3951ee5db9d0e9f5d6cbe4a78, }, ), received_events: EventHandle { count: 8621397675024946404, key: EventKey( [ 182, 113, 79, 107, 93, 173, 232, 71, 73, 59, 125, 229, 249, 248, 158, 146, 142, 24, 215, 233, 212, 207, 39, 17, ], ), }, sent_events: EventHandle { count: 8259169821990979082, key: EventKey( [ 218, 205, 178, 183, 197, 105, 76, 139, 238, 100, 94, 65, 0, 180, 63, 211, 146, 135, 131, 69, 109, 214, 49, 229, ], ), }, sequence_number: 10398599041484208699, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f37ecf748757c42ce499a357bf181a1968df7f1e28b9428639adc722d0d3276f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c97b1e641b853893da095176885a6d966f66ddb4d00c08c42d31622ee1f8a728cc00010ed1afd5815b7210944ff655d0f000dd8ccdddb5c2846e2118277d858f8d1e254ea82df514f2ac2ca007955a3a567caddb7af7ed4d08db7a18181d6a68f54d632daa2ec9188dd8d3b0ed6c6b099e45abf53b597a22526f82efba2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088b5e0b8037f80384 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 100, 27, 133, 56, 147, 218, 9, 81, 118, 136, 90, 109, 150, 111, 102, 221, 180, 208, 12, 8, 196, 45, 49, 98, 46, 225, 248, 167, 40, 204, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 0ed1afd5815b7210944ff655d0f000dd, }, ), received_events: EventHandle { count: 2409008822499528076, key: EventKey( [ 39, 125, 133, 143, 141, 30, 37, 78, 168, 45, 245, 20, 242, 172, 44, 160, 7, 149, 90, 58, 86, 124, 173, 219, ], ), }, sent_events: EventHandle { count: 1763963032782632826, key: EventKey( [ 29, 106, 104, 245, 77, 99, 45, 170, 46, 201, 24, 141, 216, 211, 176, 237, 108, 107, 9, 158, 69, 171, 245, 59, ], ), }, sequence_number: 13470128425119414873, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f3e6f5b5d7f5a92ec85b0f3c062873fb47aa6cd1d579e310601961acbbafa9b1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9810134542066ee5b93ffe2a1a3dc8613fb25f524e34e68a497e4ab048047d5799a4c406c5345a0933a95d504e5ee97cff709f428be3ac7000062228ddc46b560071845401ed0336eb2cbbdeb99a42fb7ad75a6e1fc1697f4351fdffb4d2eb2c7f00f18ec7a92e2530cb0a85708c0e6db1f907622563056b28dbbf0b38c92eb059daf0b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a2d9195eafd766ab Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 84, 32, 102, 238, 91, 147, 255, 226, 161, 163, 220, 134, 19, 251, 37, 245, 36, 227, 78, 104, 164, 151, 228, 171, 4, 128, 71, 213, 121, 154, 76, 64, 108, 83, 69, 160, 147, 58, 149, 213, 4, 229, 238, 151, 207, 247, 9, 244, 40, 190, 58, 199, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 531624071982293602, key: EventKey( [ 69, 64, 30, 208, 51, 110, 178, 203, 189, 235, 153, 164, 47, 183, 173, 117, 166, 225, 252, 22, 151, 244, 53, 31, ], ), }, sent_events: EventHandle { count: 1148637473074445279, key: EventKey( [ 236, 122, 146, 226, 83, 12, 176, 168, 87, 8, 192, 230, 219, 31, 144, 118, 34, 86, 48, 86, 178, 141, 187, 240, ], ), }, sequence_number: 842064304094219443, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f4a773354fe3c41c17cccbeaedebab88594a87d6a10a653e7a06a8b7ac8aede1): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9730694ebd6fd02240129c35ec2bb7a6e491f422cf51909c2bd01bd3f6303f69a2d5085684902515bc7aff82bb4a9ac33ce3718a523d7d57cafe1be3f6a7d34815ee8333caca9ebc126789b8fc152f5793dde0e18f34da61eefd5b100f804cd5b5a0a6870f4e3b62baee6dc80b7caeb4ffea956d42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7088e8ee4f18b099ee6 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 148, 235, 214, 253, 2, 36, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 29c35ec2bb7a6e491f422cf51909c2bd, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd3f6303f69a2d5085684902515bc7af, }, ), received_events: EventHandle { count: 4021208333962980344, key: EventKey( [ 165, 35, 215, 213, 124, 175, 225, 190, 63, 106, 125, 52, 129, 94, 232, 51, 60, 172, 169, 235, 193, 38, 120, 155, ], ), }, sent_events: EventHandle { count: 1071361355376935311, key: EventKey( [ 243, 77, 166, 30, 239, 213, 177, 0, 248, 4, 205, 91, 90, 10, 104, 112, 244, 227, 182, 43, 174, 230, 220, 128, ], ), }, sequence_number: 15300603693765479095, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f509fb13562c4df5c983e577346cdd7efd5b3cbd6df6573f7f85391a78450851): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96f127086721d564540f271ec76306575363fde75012a42d5916e6d80da9d3c62b6fd859572005ebfaa3c5711fc7e189155d326ad7f5077f0a12ff7eb2f81f6c5de972bfcc9bb872d2bdc6f76220c00185b7e606966f0e6f6468cbcac18f12eb194c6940e6eb469992d1ca872033326bd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7085b1cf39cb17f545c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 112, 134, 114, 29, 86, 69, 64, 242, 113, 236, 118, 48, 101, 117, 54, 63, 222, 117, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2a42d5916e6d80da9d3c62b6fd859572, }, ), key_rotation_capability: None, received_events: EventHandle { count: 9150207609287655262, key: EventKey( [ 145, 85, 211, 38, 173, 127, 80, 119, 240, 161, 47, 247, 235, 47, 129, 246, 197, 222, 151, 43, 252, 201, 187, 135, ], ), }, sent_events: EventHandle { count: 3415591798713133, key: EventKey( [ 91, 126, 96, 105, 102, 240, 230, 246, 70, 140, 188, 172, 24, 241, 46, 177, 148, 198, 148, 14, 110, 180, 105, 153, ], ), }, sequence_number: 13629637412184923181, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f556826d99abfbecbd8eef1a6b476a3fb2747ba1867118f903b76ad31e28f442): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c99a013d7ab3915a88089312d83611c9002891a6f67f22c8107fa548c4ae73d127b0e6fd1505debb8724168d7525a01d692df497d7a6211b0d6b725dcb0398ad740001bd3cf2f703bb51faeba8487a21ffede6cc984f9c9204de5b18c4784758c48f06cbfcccfc330bf1736d4bf6bdd68669e091127f79c24b728e1018d98038c993e75eea2bc4371783073b7ae99f8782c2a65902fefec588d3dc09372101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d9492fff4d043f16 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 122, 179, 145, 90, 136, 8, 147, 18, 216, 54, 17, 201, 0, 40, 145, 166, 246, 127, 34, 200, 16, 127, 165, 72, 196, 174, 115, 209, 39, 176, 230, 253, 21, 5, 222, 187, 135, 36, 22, 141, 117, 37, 160, 29, 105, 45, 244, 151, 215, 166, 33, 27, 13, 107, 114, 93, 203, 3, 152, 173, 116, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: bd3cf2f703bb51faeba8487a21ffede6, }, ), received_events: EventHandle { count: 6619733530015406284, key: EventKey( [ 196, 120, 71, 88, 196, 143, 6, 203, 252, 204, 252, 51, 11, 241, 115, 109, 75, 246, 189, 214, 134, 105, 224, 145, ], ), }, sent_events: EventHandle { count: 1193016621010616082, key: EventKey( [ 217, 128, 56, 201, 147, 231, 94, 234, 43, 196, 55, 23, 131, 7, 59, 122, 233, 159, 135, 130, 194, 166, 89, 2, ], ), }, sequence_number: 3965943747967319806, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f5fa83341eb1a9b5757ea44ec160bc134bb247cbe2586edf6048d98c01175f4f): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98e01318eef2e694dfac0016ff3a0222c141344b69e5bff777ebf1780b409465e25180bdd436aab2efc77e8ff68d7d7b8d746da190001d1eea67ca9555d88816d6905b51b9b886f76e8c4ab161a0318016716fe5ffe6488cdb16bdd3c7383a9fed7717db0245fa1566defeb9829497718233df090cfafcea9b79b1a2e95a1c357d5b02efb7742d02c1f048775d692d8fe2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0495e0ff5949727 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 142, 239, 46, 105, 77, 250, 192, 1, 111, 243, 160, 34, 44, 20, 19, 68, 182, 158, 91, 255, 119, 126, 191, 23, 128, 180, 9, 70, 94, 37, 24, 11, 221, 67, 106, 171, 46, 252, 119, 232, 255, 104, 215, 215, 184, 215, 70, 218, 25, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: d1eea67ca9555d88816d6905b51b9b88, }, ), received_events: EventHandle { count: 223516058507048559, key: EventKey( [ 1, 103, 22, 254, 95, 254, 100, 136, 205, 177, 107, 221, 60, 115, 131, 169, 254, 215, 113, 125, 176, 36, 95, 161, ], ), }, sent_events: EventHandle { count: 8595447100583406934, key: EventKey( [ 35, 61, 240, 144, 207, 175, 206, 169, 183, 155, 26, 46, 149, 161, 195, 87, 213, 176, 46, 251, 119, 66, 208, 44, ], ), }, sequence_number: 18363588930395636767, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f60af067ba7527ebec02ad14aec030678e0f0e1e79a609ddf9051f245cc4e1d6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9ce01611d926225b982ad77588ef5c2534376ac06279a9f90c3d2343172ff4bdb10a8aa7cb25e55b649698848fe43e5a13c9923bcb41f895a26f2a516e1e0092e01fecce3eabb912392b0dea619778fa03bb7ded39540ca192136392a787d2f04b4e025b8012d79eddd1e47c36a0b05515974a5eebe01e07eff8bdd8fc09c979fd59d7890d12fc6b361bb114579501861b3d36f38c4cb3a53e6f2cafc9c09f68b57b044f3a039ae42f3f97cd3b6f57e185c3922f06b783a59cfa0a3aa1e1135cc47279035d0c16230510d86c81f9f372a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708355a1e266df6e742 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 29, 146, 98, 37, 185, 130, 173, 119, 88, 142, 245, 194, 83, 67, 118, 172, 6, 39, 154, 159, 144, 195, 210, 52, 49, 114, 255, 75, 219, 16, 168, 170, 124, 178, 94, 85, 182, 73, 105, 136, 72, 254, 67, 229, 161, 60, 153, 35, 188, 180, 31, 137, 90, 38, 242, 165, 22, 225, 224, 9, 46, 1, 254, 204, 227, 234, 187, 145, 35, 146, 176, 222, 166, 25, 119, 143, 160, 59, 183, 222, 211, 149, 64, 202, 25, 33, 54, 57, 42, 120, 125, 47, 4, 180, 224, 37, 184, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 2d79eddd1e47c36a0b05515974a5eebe, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e07eff8bdd8fc09c979fd59d7890d12f, }, ), received_events: EventHandle { count: 5798741937676727238, key: EventKey( [ 97, 179, 211, 111, 56, 196, 203, 58, 83, 230, 242, 202, 252, 156, 9, 246, 139, 87, 176, 68, 243, 160, 57, 174, ], ), }, sent_events: EventHandle { count: 9148419237524140866, key: EventKey( [ 92, 57, 34, 240, 107, 120, 58, 89, 207, 160, 163, 170, 30, 17, 53, 204, 71, 39, 144, 53, 208, 193, 98, 48, ], ), }, sequence_number: 3042075032169090385, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f669bc0f4f45d37fd440fd2771ff805104626f94bace3118ec673ec8815caa80): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9780b470ee47e10563193eb814b01a18f0ed82f12edb04f73185823ef26fa0138f2f8e09bad5a8b05d5597b8884638d9c3061ecd56e0c2918416bee8834000173b08fcdfa68f063522dfd9c4abdb02c31506d803980547359183e0806cb4ce958f0efb01a7ffd46de391d7334e0bc52fb6c22aac325b6c6baa82101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ef9200b36b641397 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 71, 14, 228, 126, 16, 86, 49, 147, 235, 129, 75, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: a18f0ed82f12edb04f73185823ef26fa, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 38f2f8e09bad5a8b05d5597b8884638d, }, ), received_events: EventHandle { count: 2957860920348455068, key: EventKey( [ 65, 107, 238, 136, 52, 0, 1, 115, 176, 143, 205, 250, 104, 240, 99, 82, 45, 253, 156, 74, 189, 176, 44, 49, ], ), }, sent_events: EventHandle { count: 6445588401394576720, key: EventKey( [ 62, 8, 6, 203, 76, 233, 88, 240, 239, 176, 26, 127, 253, 70, 222, 57, 29, 115, 52, 224, 188, 82, 251, 108, ], ), }, sequence_number: 12158248629660002850, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f6ae23f00efaa53636e417cdae405b561b29273c4fa971294289b526d4b129c4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c971141fae6e868e8e0604b0f6985a3269ea5a4db261e201cd2a8040cdb2781af886448aa3fe21ef0041159ea99aa997511842e477f43e9bbe7f0d0685b328a04d0a3f04201982e82fdf439f3e314e0b131f1854fdb8b67fcf265092b3511e87e549b1ac3e09a0c0fafab885b407825b8f96272101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d3968e4f0e4c3091 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 31, 174, 110, 134, 142, 142, 6, 4, 176, 246, 152, 90, 50, 105, 234, 90, 77, 178, 97, 226, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: cd2a8040cdb2781af886448aa3fe21ef, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5879354320291239233, key: EventKey( [ 66, 228, 119, 244, 62, 155, 190, 127, 13, 6, 133, 179, 40, 160, 77, 10, 63, 4, 32, 25, 130, 232, 47, 223, ], ), }, sent_events: EventHandle { count: 2239145870194810691, key: EventKey( [ 84, 253, 184, 182, 127, 207, 38, 80, 146, 179, 81, 30, 135, 229, 73, 177, 172, 62, 9, 160, 192, 250, 250, 184, ], ), }, sequence_number: 2852625037172126853, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f73587aefccea43a05caece9536930f6869c7912e5f466fdad57211866e47851): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b001535132babdf6140c2a1a907e2076a41ce032e67ecc5cccbb30f1620a474f46729563dfc1a55413747af4018857d5c7620d01932a655139efa605984be846f5c76e8854828cadc69f6428a01f78c7ab5104a007a30148763cea5407395bf7647a2f0fa156cf009715f8549066422b18854ca12ae057c4d526b03632663c6177346a50acec55f9b41a37123f5da5a93318d35de923e4c3e120396e223a69ef19eb456cec9d3808b47c2e727bbc45cae2712101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087eb1cc966a576c47 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 81, 50, 186, 189, 246, 20, 12, 42, 26, 144, 126, 32, 118, 164, 28, 224, 50, 230, 126, 204, 92, 204, 187, 48, 241, 98, 10, 71, 79, 70, 114, 149, 99, 223, 193, 165, 84, 19, 116, 122, 244, 1, 136, 87, 213, 199, 98, 13, 1, 147, 42, 101, 81, 57, 239, 166, 5, 152, 75, 232, 70, 245, 199, 110, 136, 84, 130, 140, 173, 198, 159, 100, 40, 160, 31, 120, 199, 171, 81, 4, 160, 7, 163, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 48763cea5407395bf7647a2f0fa156cf, }, ), key_rotation_capability: None, received_events: EventHandle { count: 3117166662180672919, key: EventKey( [ 133, 76, 161, 42, 224, 87, 196, 213, 38, 176, 54, 50, 102, 60, 97, 119, 52, 106, 80, 172, 236, 85, 249, 180, ], ), }, sent_events: EventHandle { count: 3722688386907125530, key: EventKey( [ 211, 93, 233, 35, 228, 195, 225, 32, 57, 110, 34, 58, 105, 239, 25, 235, 69, 108, 236, 157, 56, 8, 180, 124, ], ), }, sequence_number: 8206343871886225966, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f78f092ef28cab0045e46c23f8142dc01b0af176627d57cf8be3e4c7fac2ba61): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af014272a8caeb8eeffb8396d61b1665e4de6eb73db42119d72aa6665d87cf4bf134de68ddbd95e0777b54f26bafd018da23edb4ccbc2122055e47bd400c0daa1def3cd6bc0191200a63b5352523aac377f062d1a48f01e505227e2f0b53cb9d06a818505a3ee7fea06384c77f794518d3868f5a5cde4ec40a87673fca7cd187d55d9cd61d5ae63de2202a9b66b0af6d1842eb87199404c50aaa7ee9939e3435a7b9cb7d149e634568bff18d1c84771ecd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7084519a540c53ad114 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 168, 202, 235, 142, 239, 251, 131, 150, 214, 27, 22, 101, 228, 222, 110, 183, 61, 180, 33, 25, 215, 42, 166, 102, 93, 135, 207, 75, 241, 52, 222, 104, 221, 189, 149, 224, 119, 123, 84, 242, 107, 175, 208, 24, 218, 35, 237, 180, 204, 188, 33, 34, 5, 94, 71, 189, 64, 12, 13, 170, 29, 239, 60, 214, 188, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 91200a63b5352523aac377f062d1a48f, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: e505227e2f0b53cb9d06a818505a3ee7, }, ), received_events: EventHandle { count: 5006172955695358206, key: EventKey( [ 211, 134, 143, 90, 92, 222, 78, 196, 10, 135, 103, 63, 202, 124, 209, 135, 213, 93, 156, 214, 29, 90, 230, 61, ], ), }, sent_events: EventHandle { count: 7903729825794892002, key: EventKey( [ 66, 235, 135, 25, 148, 4, 197, 10, 170, 126, 233, 147, 158, 52, 53, 167, 185, 203, 125, 20, 158, 99, 69, 104, ], ), }, sequence_number: 14780382436374999487, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f7f126e9f29944a97aa35be3855819259e89a824402c6f3d65d7cf2d9c2989a2): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c982013598393550dd984e27ab63ae220b0613809924f0c0ed3b211b04130e646310dd653d9af6ec1b94af65751040f1143d0943684291fa8800005a5f6045dbdff151181e80d7fdb51e4cba1a4059d95315d161c13dd2123393db552c9c6914083cbe4e18bd9535ad33d4122f4969b85924c015cdfd492fa397d7d672f457ea5711c39d572101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708c5c4c764e8f47ddd Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 152, 57, 53, 80, 221, 152, 78, 39, 171, 99, 174, 34, 11, 6, 19, 128, 153, 36, 240, 192, 237, 59, 33, 27, 4, 19, 14, 100, 99, 16, 221, 101, 61, 154, 246, 236, 27, 148, 175, 101, 117, 16, 64, 241, 20, 61, 9, 67, 104, 66, 145, 250, 136, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 5904746719314206554, key: EventKey( [ 30, 128, 215, 253, 181, 30, 76, 186, 26, 64, 89, 217, 83, 21, 209, 97, 193, 61, 210, 18, 51, 147, 219, 85, ], ), }, sent_events: EventHandle { count: 5674038585933274156, key: EventKey( [ 189, 149, 53, 173, 51, 212, 18, 47, 73, 105, 184, 89, 36, 192, 21, 205, 253, 73, 47, 163, 151, 215, 214, 114, ], ), }, sequence_number: 6313416731900139508, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f859e32df951ce79dfd13996941dd451a4db0219535cb99fc131233ec44fd978): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9580bb74beeefd61ed1f30ea30b00000603a5109f168e5a1873af977bd9e9084aada0c078ae5898df61484b2304d0f2e9a02550d2836c3d4c183fae4ec1463dc2f035f3e71da4e3b26cc7901ab81fc88e35dac7b1ec863b35e42101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7082296947fc8565502 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 183, 75, 238, 239, 214, 30, 209, 243, 14, 163, 11, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 6525177782541288198, key: EventKey( [ 115, 175, 151, 123, 217, 233, 8, 74, 173, 160, 192, 120, 174, 88, 152, 223, 97, 72, 75, 35, 4, 208, 242, 233, ], ), }, sent_events: EventHandle { count: 5493666433886856608, key: EventKey( [ 63, 174, 78, 193, 70, 61, 194, 240, 53, 243, 231, 29, 164, 227, 178, 108, 199, 144, 26, 184, 31, 200, 142, 53, ], ), }, sequence_number: 16444115065095964634, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f89388df69a7f26e999e44528cefa019dc8c835026c3ec14280f8b24f28ae35b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9bd0160cb135e9afa0cb22c058291fd6e59b77d25fc439e222ec4db25bb1ad441a1ef9a41e8e4e89e99338dcf0f79a4106c601f9829fdd2d4a550985cb403f2675eb504f453b87048ece16b6e539aac3c068e712dd5301f1e34759dafb8435cc96679730146cc93a0e19756534c586f735007bcf40058f553639035837a18e6895aa5bdf5f0d074078a1fa72b11b7d9544ab84b2970539aa441fb4d0f0140185a5723ad824c02f9ad01b66e9cc70a7000d9ece85f1bfb7ab69d8963eb3ce6bb2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bcdbdce9c3b9041e Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 203, 19, 94, 154, 250, 12, 178, 44, 5, 130, 145, 253, 110, 89, 183, 125, 37, 252, 67, 158, 34, 46, 196, 219, 37, 187, 26, 212, 65, 161, 239, 154, 65, 232, 228, 232, 158, 153, 51, 141, 207, 15, 121, 164, 16, 108, 96, 31, 152, 41, 253, 210, 212, 165, 80, 152, 92, 180, 3, 242, 103, 94, 181, 4, 244, 83, 184, 112, 72, 236, 225, 107, 110, 83, 154, 172, 60, 6, 142, 113, 45, 213, 48, 31, 30, 52, 117, 157, 175, 184, 67, 92, 201, 102, 121, 115, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 46cc93a0e19756534c586f735007bcf4, }, ), key_rotation_capability: None, received_events: EventHandle { count: 8827958588834313560, key: EventKey( [ 230, 137, 90, 165, 189, 245, 240, 208, 116, 7, 138, 31, 167, 43, 17, 183, 217, 84, 74, 184, 75, 41, 112, 83, ], ), }, sent_events: EventHandle { count: 4611984321006380186, key: EventKey( [ 90, 87, 35, 173, 130, 76, 2, 249, 173, 1, 182, 110, 156, 199, 10, 112, 0, 217, 236, 232, 95, 27, 251, 122, ], ), }, sequence_number: 13539576311420919222, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f89cae2bee30bd38667e73695460a059fa0862e7b4c151a3a43ab2bffd500cb4): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96a0d722d65af64779ca741eaa7caca0001b83a437f350be79300fc095de35d3ed352cda275dd7df61b1848ccfd29dbc507c5a1b6dec1582ba5c4cea37edac4862e389e1e02161fe7a14c18db6f309e18049e99ec05dac430579b92d27b51909ad8cc83077f1d6d8345dffa2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087b74d85c27452a55 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 114, 45, 101, 175, 100, 119, 156, 167, 65, 234, 167, 202, 202, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: b83a437f350be79300fc095de35d3ed3, }, ), received_events: EventHandle { count: 2014936273409723730, key: EventKey( [ 72, 204, 253, 41, 219, 197, 7, 197, 161, 182, 222, 193, 88, 43, 165, 196, 206, 163, 126, 218, 196, 134, 46, 56, ], ), }, sent_events: EventHandle { count: 5521948738832178846, key: EventKey( [ 219, 111, 48, 158, 24, 4, 158, 153, 236, 5, 218, 196, 48, 87, 155, 146, 210, 123, 81, 144, 154, 216, 204, 131, ], ), }, sequence_number: 18077243860062142215, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(f98a488d7552ff00915c95c113875ecb132107414dfbd64aa32b65281050d2a6): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9a9013c43cb637ce3aa347127a2efd928e1d70e3a083785f47fa3c3c42cfba4b600e736c6636254b095b4d1155ed1d407bed85697de4d8c73f52012f8d03cbb017f0eae2540e108987cd1a7bb0c36e6df0192dfd134879612f9281953274f287caa2aa03f759dd41274184179f67f1be4b711b2fdcee33cfdfe98d5d45001ecf1c18b4f5a90420a93e7611837507790655727d52239d789fe0af4d738fab86f7c932a3cffb32587c0a6f4fd2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70862d73c15335f0d56 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 67, 203, 99, 124, 227, 170, 52, 113, 39, 162, 239, 217, 40, 225, 215, 14, 58, 8, 55, 133, 244, 127, 163, 195, 196, 44, 251, 164, 182, 0, 231, 54, 198, 99, 98, 84, 176, 149, 180, 209, 21, 94, 209, 212, 7, 190, 216, 86, 151, 222, 77, 140, 115, 245, 32, 18, 248, 208, 60, 187, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 7f0eae2540e108987cd1a7bb0c36e6df, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 92dfd134879612f9281953274f287caa, }, ), received_events: EventHandle { count: 8363981230722490410, key: EventKey( [ 65, 121, 246, 127, 27, 228, 183, 17, 178, 253, 206, 227, 60, 253, 254, 152, 213, 212, 80, 1, 236, 241, 193, 139, ], ), }, sent_events: EventHandle { count: 7054769013574883919, key: EventKey( [ 55, 80, 119, 144, 101, 87, 39, 213, 34, 57, 215, 137, 254, 10, 244, 215, 56, 250, 184, 111, 124, 147, 42, 60, ], ), }, sequence_number: 18299434531744494591, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fa4ae38e8dfe84bdaf874de4104a035bb7377a414d37803da18af634e4eec02d): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9aa014dac10587f16782a26c61dc199a1803c1c394f689c55610096f3d84be7384fc4441f0aedb8f61bc7eb8e422b23529ec3023476f869baad4b73896735589d14701e1f380b831dc4758449bf220c710001fc0914ec657c0006b2f38eb8bd1c70a25bef20253ede68071801ee88f3093550ecef3dc489b59fa05b921cc46285aaf4ae9539c459e0c2e90818e814ef94183d0030b09375c8626e4f5fb931243ecc6c3274b6f54cbedb7522e02101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a10a855a202983a1 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 172, 16, 88, 127, 22, 120, 42, 38, 198, 29, 193, 153, 161, 128, 60, 28, 57, 79, 104, 156, 85, 97, 0, 150, 243, 216, 75, 231, 56, 79, 196, 68, 31, 10, 237, 184, 246, 27, 199, 235, 142, 66, 43, 35, 82, 158, 195, 2, 52, 118, 248, 105, 186, 173, 75, 115, 137, 103, 53, 88, 157, 20, 112, 30, 31, 56, 11, 131, 29, 196, 117, 132, 73, 191, 34, 12, 113, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: fc0914ec657c0006b2f38eb8bd1c70a2, }, ), received_events: EventHandle { count: 533920914335657819, key: EventKey( [ 1, 238, 136, 243, 9, 53, 80, 236, 239, 61, 196, 137, 181, 159, 160, 91, 146, 28, 196, 98, 133, 170, 244, 174, ], ), }, sent_events: EventHandle { count: 642258690711501205, key: EventKey( [ 232, 20, 239, 148, 24, 61, 0, 48, 176, 147, 117, 200, 98, 110, 79, 95, 185, 49, 36, 62, 204, 108, 50, 116, ], ), }, sequence_number: 16150600800355022262, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fb33d3d1367c27ade478df19568b47e53e3eb0046e495b0853d4e4635ba253a9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b00143aa0d8cc0fdf2c14ff02a646957637995eca52f95b9a2f97f95a53b2d262376423b13a0ec0b2783a1cfeea4916f5227ee566b54e3bef32d7b1e516f85e12883074736e5018e70f7a9652db8d542ce10d031f6fa47019d16a47b6a6c27f911b2a07733f745dbc9e5b6cdfa67f46418acd61c92d9ec87f0cb6832a2961ba9b936ba72776f09e28e1dd567e5de1af06c187b286ffe87a2c8bb1e3f4adec77e441e34c47b6538bb0f85236d40fd30bca43a2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708a9e62fe8eebe032b Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 170, 13, 140, 192, 253, 242, 193, 79, 240, 42, 100, 105, 87, 99, 121, 149, 236, 165, 47, 149, 185, 162, 249, 127, 149, 165, 59, 45, 38, 35, 118, 66, 59, 19, 160, 236, 11, 39, 131, 161, 207, 238, 164, 145, 111, 82, 39, 238, 86, 107, 84, 227, 190, 243, 45, 123, 30, 81, 111, 133, 225, 40, 131, 7, 71, 54, 229, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 8e70f7a9652db8d542ce10d031f6fa47, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 9d16a47b6a6c27f911b2a07733f745db, }, ), received_events: EventHandle { count: 7274553625000994249, key: EventKey( [ 172, 214, 28, 146, 217, 236, 135, 240, 203, 104, 50, 162, 150, 27, 169, 185, 54, 186, 114, 119, 111, 9, 226, 142, ], ), }, sent_events: EventHandle { count: 7849803695140623645, key: EventKey( [ 123, 40, 111, 254, 135, 162, 200, 187, 30, 63, 74, 222, 199, 126, 68, 30, 52, 196, 123, 101, 56, 187, 15, 133, ], ), }, sequence_number: 4225709268973677859, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fbf798edf5127a73ed86b01321b783b06245d55b6ab69965991c9018f6fb4d5b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9792cd23cebdb133ff27a547dea624d02e2ccf0747e0bd468c62b8be3e38ec6dc30b802a88b15fdbb44881192fffc0000e01cf0b392476429188de21aa31e74ad614ba45bc6973b39bd0bb44c9397402de9d1e43cfa87d718161801c06157aaf5a397885bf6d2faae8411627eee6109e63dc5028e069e51ada7292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708e1926a9560fb9fa2 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 210, 60, 235, 219, 19, 63, 242, 122, 84, 125, 234, 98, 77, 2, 226, 204, 240, 116, 126, 11, 212, 104, 198, 43, 139, 227, 227, 142, 198, 220, 48, 184, 2, 168, 139, 21, 253, 187, 68, 136, 17, 146, 255, 252, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 2982587548635765984, key: EventKey( [ 141, 226, 26, 163, 30, 116, 173, 97, 75, 164, 91, 198, 151, 59, 57, 189, 11, 180, 76, 147, 151, 64, 45, 233, ], ), }, sent_events: EventHandle { count: 1592259447294321873, key: EventKey( [ 1, 192, 97, 87, 170, 245, 163, 151, 136, 91, 246, 210, 250, 174, 132, 17, 98, 126, 238, 97, 9, 230, 61, 197, ], ), }, sequence_number: 3001558242720910850, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fc763d7d660b7a5fd90d0b34d73655f786f7b168267d79f2c3762374c87266fa): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c965088cc527b5fbc6d5ae01ec4ce2538a3f040f8121bb6156aedbce006f45e9228aae684e188150d1e7c1232d0f7c68414ac920080fc7fcbf2c82ac8c44171b8e1786d6543718917c95ddee067055faecc5737f4e994a38ef4146e7da695de1291d6ff8723d192101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70847a3a46d500489be Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 140, 197, 39, 181, 251, 198, 213, 174, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: ec4ce2538a3f040f8121bb6156aedbce, }, ), key_rotation_capability: None, received_events: EventHandle { count: 5649957640850720111, key: EventKey( [ 129, 80, 209, 231, 193, 35, 45, 15, 124, 104, 65, 74, 201, 32, 8, 15, 199, 252, 191, 44, 130, 172, 140, 68, ], ), }, sent_events: EventHandle { count: 3987047441538882327, key: EventKey( [ 145, 124, 149, 221, 238, 6, 112, 85, 250, 236, 197, 115, 127, 78, 153, 74, 56, 239, 65, 70, 231, 218, 105, 93, ], ), }, sequence_number: 1818736235869186529, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(fcadfebdae2a0a845b38e359893885afef8e5ac7514a7f8bc1cea24cd4cc142b): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9b601594b89a2ea420b286d1bf514f9da771bfd86cc224d1447ad8d674f95ef79c830db1c4c86bf1bba0c611ae3675228cc90735e788d5e67b902c35320188008825ba90ac0b75c5637b163c1f7ade142a9addf12a915c4128dea6f9201484a619338468587b548040efa9addf800d18d9cc8d7bfbd2618f90ee94d5db19e7979584abeb7bea34d1c88b1a18226fde29e94538b243b2e0718dcb106fdf362e5af294c75455ae4b50bc582e0768f8176cc698253e0f2d062d92101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c70892b1128241546332 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 75, 137, 162, 234, 66, 11, 40, 109, 27, 245, 20, 249, 218, 119, 27, 253, 134, 204, 34, 77, 20, 71, 173, 141, 103, 79, 149, 239, 121, 200, 48, 219, 28, 76, 134, 191, 27, 186, 12, 97, 26, 227, 103, 82, 40, 204, 144, 115, 94, 120, 141, 94, 103, 185, 2, 195, 83, 32, 24, 128, 8, 130, 91, 169, 10, 192, 183, 92, 86, 55, 177, 99, 193, 247, 173, 225, 66, 169, 173, 223, 18, 169, 21, 196, 18, 141, 234, 111, 146, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 484a619338468587b548040efa9addf8, }, ), key_rotation_capability: None, received_events: EventHandle { count: 2791598277544152529, key: EventKey( [ 249, 14, 233, 77, 93, 177, 158, 121, 121, 88, 74, 190, 183, 190, 163, 77, 28, 136, 177, 161, 130, 38, 253, 226, ], ), }, sent_events: EventHandle { count: 517416035336557726, key: EventKey( [ 220, 177, 6, 253, 243, 98, 229, 175, 41, 76, 117, 69, 90, 228, 181, 11, 197, 130, 224, 118, 143, 129, 118, 204, ], ), }, sequence_number: 15664312195512238697, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff184a9f665beec979886cccfaf69b45a23d0c1b83a3a0aafc704adc7f99c4f9): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9670aceeed70f390df0fbaea1000102d398e48714f7329cf27ebaa13b6d8bf3d19bff93e4ca7e182a19a92ab30fc0cef9dbe9363ae80bad8d7e3480c68fb029d75bbed3ab802d3d183788d5ae290ef03f6c8eea0de68264dc0a086332ee9b2354c4dc35894927d9952101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708ca3cd564f1688f4a Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 206, 238, 215, 15, 57, 13, 240, 251, 174, 161, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 02d398e48714f7329cf27ebaa13b6d8b, }, ), received_events: EventHandle { count: 9136366118374199795, key: EventKey( [ 42, 25, 169, 42, 179, 15, 192, 206, 249, 219, 233, 54, 58, 232, 11, 173, 141, 126, 52, 128, 198, 143, 176, 41, ], ), }, sent_events: EventHandle { count: 4408321085745814487, key: EventKey( [ 55, 136, 213, 174, 41, 14, 240, 63, 108, 142, 234, 13, 230, 130, 100, 220, 10, 8, 99, 50, 238, 155, 35, 84, ], ), }, sequence_number: 10797704778385579204, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff41461a62da7c9d5ece0dee2307ed4eda5fbe6cf8e7cdf8f4d68f22f9d2a3bc): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c975183fe0688db39ecd8d1262fc648b123ace51f28de08be41f33000179697c5aa1f2366e0ed1a1327a1e2f70fcd2619a58df5f581831311985c12bc889543c82ee2f147caeb45b82e89562edb7a31c8d94f4bf512118c2f3a62b59259b7d9d679611c1a708132cfd0d57466f67ac0d2e972e613f28382101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708bc1f4c381c35724d Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 63, 224, 104, 141, 179, 158, 205, 141, 18, 98, 252, 100, 139, 18, 58, 206, 81, 242, 141, 224, 139, 228, 31, 51, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 79697c5aa1f2366e0ed1a1327a1e2f70, }, ), received_events: EventHandle { count: 6368053969765389052, key: EventKey( [ 49, 49, 25, 133, 193, 43, 200, 137, 84, 60, 130, 238, 47, 20, 124, 174, 180, 91, 130, 232, 149, 98, 237, 183, ], ), }, sent_events: EventHandle { count: 2400911133550386339, key: EventKey( [ 194, 243, 166, 43, 89, 37, 155, 125, 157, 103, 150, 17, 193, 167, 8, 19, 44, 253, 13, 87, 70, 111, 103, 172, ], ), }, sequence_number: 4046553951818427917, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff623328eb5704d8d2c804f1804cbc1fc01accdb0051f945359b9696a548c823): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98b011e7dc4ad66375237ae376ba3e8275066efb9144258364ad2ae27785dab703d016265eb2fa47cb1716d633a0aa83bd63c01cd999da1b09c8336b9c598efc2e27b1ea3953c762f85a41f182cd19146183511ee3ddc060537ae9766ef9ee58105483025ca32092c25d9703018444a886702119e2fdfc119018abdd4a580492adcddd118ce217c620a9af817292101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c7087d0c597636993155 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 125, 196, 173, 102, 55, 82, 55, 174, 55, 107, 163, 232, 39, 80, 102, 239, 185, 20, 66, 88, 54, 74, 210, 174, 39, 120, 93, 171, 112, 61, ], withdrawal_capability: Some( WithdrawCapabilityResource { account_address: 6265eb2fa47cb1716d633a0aa83bd63c, }, ), key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: cd999da1b09c8336b9c598efc2e27b1e, }, ), received_events: EventHandle { count: 2280093750249952675, key: EventKey( [ 44, 209, 145, 70, 24, 53, 17, 238, 61, 220, 6, 5, 55, 174, 151, 102, 239, 158, 229, 129, 5, 72, 48, 37, ], ), }, sent_events: EventHandle { count: 3490528464887952074, key: EventKey( [ 68, 74, 136, 103, 2, 17, 158, 47, 223, 193, 25, 1, 138, 189, 212, 165, 128, 73, 42, 220, 221, 209, 24, 206, ], ), }, sequence_number: 2961108620502268961, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ff74ae02592f921c067f44fe7cfb837a7377e097d23f39aaa0acdf7d62bbe08c): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c9af0162fdf7d2aedd8d9fcddb974c4406273b0b420d291d65610de440fe26ae3e606de22a956c1de795e500099d70a161094be68c988e572f007e93532b90039e359c483c117b243c37a51dfa4f0723248939610e2fad78c8305056433958bf43bc7ebc2bb9000093c39ede342e583d18d9e8b83a4829e47abb0e34c8a9c3efb72ccaf94224144c5f89a036d4a4995d2c188ac9a6bf821bbbd5652106706a886af8cd4837ad5dfbb2d94608c1df8b9cef4f2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d604b753ec2b555c Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 253, 247, 210, 174, 221, 141, 159, 205, 219, 151, 76, 68, 6, 39, 59, 11, 66, 13, 41, 29, 101, 97, 13, 228, 64, 254, 38, 174, 62, 96, 109, 226, 42, 149, 108, 29, 231, 149, 229, 0, 9, 157, 112, 161, 97, 9, 75, 230, 140, 152, 142, 87, 47, 0, 126, 147, 83, 43, 144, 3, 158, 53, 156, 72, 60, 17, 123, 36, 60, 55, 165, 29, 250, 79, 7, 35, 36, 137, 57, 97, 14, 47, 173, 120, 200, 48, 80, 86, 67, 57, 88, 191, 67, 188, 126, 188, 43, 185, ], withdrawal_capability: None, key_rotation_capability: None, received_events: EventHandle { count: 4420333838872265619, key: EventKey( [ 217, 232, 184, 58, 72, 41, 228, 122, 187, 14, 52, 200, 169, 195, 239, 183, 44, 202, 249, 66, 36, 20, 76, 95, ], ), }, sent_events: EventHandle { count: 3196880243716956297, key: EventKey( [ 138, 201, 166, 191, 130, 27, 187, 213, 101, 33, 6, 112, 106, 136, 106, 248, 205, 72, 55, 173, 93, 251, 178, 217, ], ), }, sequence_number: 5759994572998510662, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ffc736bab1af2ad60ba995fbcb3602ebbc4433c67b6ed1955cdef7e6c5c26771): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c96e11e712be0176e07db6ead80d91b439369e460001700e1480e7d3a30b40274ea6c1cae2029eacebeee585954218238aa369829c1df800b496afa666c366ef44bf12392bf87e06792db56c56327118385b6213414cf5d16d12875af211aaef865e6a99a9a0cd6784c560afdac455a12101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708b40b0c60816c07fe Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 231, 18, 190, 1, 118, 224, 125, 182, 234, 216, 13, 145, 180, 57, 54, 158, 70, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 700e1480e7d3a30b40274ea6c1cae202, }, ), received_events: EventHandle { count: 4797888200635559070, key: EventKey( [ 35, 138, 163, 105, 130, 156, 29, 248, 0, 180, 150, 175, 166, 102, 195, 102, 239, 68, 191, 18, 57, 43, 248, 126, ], ), }, sent_events: EventHandle { count: 8156676900017502470, key: EventKey( [ 56, 91, 98, 19, 65, 76, 245, 209, 109, 18, 135, 90, 242, 17, 170, 239, 134, 94, 106, 153, 169, 160, 205, 103, ], ), }, sequence_number: 11625414456651072900, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }, HashValue(ffcd6a9637a9d78539ee4622125a80061fcd4d88377c1432e9aac5daa2ccd9dd): AccountStateBlob { Raw: 0x02210185aa1f79e25ca70b8f54f8a0b673259fc19b1af35acb98885d99e160600387c98d01302d9484fa403b5daa72ccef94a5b5f29ff033619225a42140ff2bd3a4ea1b14abdb08755a16fe98671e580cd35636133e000142237c93555e752efb43e0f841d94f68da6529e4e8d3c06318142725145e44f650fc106adc6006eed5bad428503f0dd54e74760b84af592d0b18e5618f2352725fcc34d269be2fd413cc0ce424ab308f6ee8bcc699985c76a57b2101c5a88aa4ec51fc5df0119af0f6faf3c82fe99ac6bc38e82fd6385cdaa45190c708d0949ab152676081 Decoded: { AccountResource { Some( AccountResource { authentication_key: [ 45, 148, 132, 250, 64, 59, 93, 170, 114, 204, 239, 148, 165, 181, 242, 159, 240, 51, 97, 146, 37, 164, 33, 64, 255, 43, 211, 164, 234, 27, 20, 171, 219, 8, 117, 90, 22, 254, 152, 103, 30, 88, 12, 211, 86, 54, 19, 62, ], withdrawal_capability: None, key_rotation_capability: Some( KeyRotationCapabilityResource { account_address: 42237c93555e752efb43e0f841d94f68, }, ), received_events: EventHandle { count: 7187978002497103322, key: EventKey( [ 20, 39, 37, 20, 94, 68, 246, 80, 252, 16, 106, 220, 96, 6, 238, 213, 186, 212, 40, 80, 63, 13, 213, 78, ], ), }, sent_events: EventHandle { count: 805398518738679412, key: EventKey( [ 229, 97, 143, 35, 82, 114, 95, 204, 52, 210, 105, 190, 47, 212, 19, 204, 12, 228, 36, 171, 48, 143, 110, 232, ], ), }, sequence_number: 8909657577891677884, }, ) } DiemTimestamp { None } ValidatorConfig { None } ValidatorSet { None } } }}, target_version = 1157 diff --git a/storage/jellyfish-merkle/src/iterator/iterator_test.rs b/storage/jellyfish-merkle/src/iterator/iterator_test.rs index 553dd063b2..0363a58927 100644 --- a/storage/jellyfish-merkle/src/iterator/iterator_test.rs +++ b/storage/jellyfish-merkle/src/iterator/iterator_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,8 +6,8 @@ use crate::{ JellyfishMerkleTree, }; use anyhow::Result; -use libra_crypto::HashValue; -use libra_types::{account_state_blob::AccountStateBlob, transaction::Version}; +use diem_crypto::HashValue; +use diem_types::{account_state_blob::AccountStateBlob, transaction::Version}; use rand::{rngs::StdRng, SeedableRng}; use std::{collections::BTreeMap, sync::Arc}; diff --git a/storage/jellyfish-merkle/src/iterator/mod.rs b/storage/jellyfish-merkle/src/iterator/mod.rs index f4f286965e..e1df7d7f5a 100644 --- a/storage/jellyfish-merkle/src/iterator/mod.rs +++ b/storage/jellyfish-merkle/src/iterator/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements `JellyfishMerkleIterator`. Initialized with a version and a key, the @@ -15,9 +15,9 @@ use crate::{ TreeReader, }; use anyhow::{format_err, Result}; -use libra_crypto::HashValue; -use libra_nibble::Nibble; -use libra_types::{account_state_blob::AccountStateBlob, transaction::Version}; +use diem_crypto::HashValue; +use diem_nibble::Nibble; +use diem_types::{account_state_blob::AccountStateBlob, transaction::Version}; use std::sync::Arc; /// `NodeVisitInfo` keeps track of the status of an internal node during the iteration process. It diff --git a/storage/jellyfish-merkle/src/jellyfish_merkle_test.rs b/storage/jellyfish-merkle/src/jellyfish_merkle_test.rs index 2b60b59949..a885156661 100644 --- a/storage/jellyfish-merkle/src/jellyfish_merkle_test.rs +++ b/storage/jellyfish-merkle/src/jellyfish_merkle_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; @@ -7,9 +7,9 @@ use crate::test_helper::{ arb_tree_with_index, test_get_range_proof, test_get_with_proof, test_get_with_proof_with_distinct_last_nibble, }; -use libra_crypto::HashValue; -use libra_nibble::Nibble; -use libra_types::transaction::PRE_GENESIS_VERSION; +use diem_crypto::HashValue; +use diem_nibble::Nibble; +use diem_types::transaction::PRE_GENESIS_VERSION; use mock_tree_store::MockTreeStore; use proptest::prelude::*; use rand::{rngs::StdRng, Rng, SeedableRng}; diff --git a/storage/jellyfish-merkle/src/lib.rs b/storage/jellyfish-merkle/src/lib.rs index 131180f169..c21b3bddbb 100644 --- a/storage/jellyfish-merkle/src/lib.rs +++ b/storage/jellyfish-merkle/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -81,8 +81,8 @@ pub mod test_helper; mod tree_cache; use anyhow::{bail, ensure, format_err, Result}; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleProof, SparseMerkleRangeProof}, transaction::Version, diff --git a/storage/jellyfish-merkle/src/mock_tree_store.rs b/storage/jellyfish-merkle/src/mock_tree_store.rs index 8a50c915f9..759bc9d6eb 100644 --- a/storage/jellyfish-merkle/src/mock_tree_store.rs +++ b/storage/jellyfish-merkle/src/mock_tree_store.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,8 +6,8 @@ use crate::{ NodeBatch, StaleNodeIndex, TreeReader, TreeUpdateBatch, TreeWriter, }; use anyhow::{bail, ensure, Result}; -use libra_infallible::RwLock; -use libra_types::transaction::Version; +use diem_infallible::RwLock; +use diem_types::transaction::Version; use std::collections::{hash_map::Entry, BTreeSet, HashMap}; #[derive(Default)] diff --git a/storage/jellyfish-merkle/src/nibble_path/mod.rs b/storage/jellyfish-merkle/src/nibble_path/mod.rs index 0238315657..def78d7025 100644 --- a/storage/jellyfish-merkle/src/nibble_path/mod.rs +++ b/storage/jellyfish-merkle/src/nibble_path/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! NibblePath library simplify operations with nibbles in a compact format for modified sparse @@ -8,7 +8,7 @@ mod nibble_path_test; use crate::ROOT_NIBBLE_HEIGHT; -use libra_nibble::Nibble; +use diem_nibble::Nibble; use mirai_annotations::*; #[cfg(any(test, feature = "fuzzing"))] use proptest::{collection::vec, prelude::*}; diff --git a/storage/jellyfish-merkle/src/nibble_path/nibble_path_test.rs b/storage/jellyfish-merkle/src/nibble_path/nibble_path_test.rs index c9fa813530..8e5588539d 100644 --- a/storage/jellyfish-merkle/src/nibble_path/nibble_path_test.rs +++ b/storage/jellyfish-merkle/src/nibble_path/nibble_path_test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{arb_internal_nibble_path, skip_common_prefix, NibblePath}; -use libra_nibble::Nibble; +use diem_nibble::Nibble; use proptest::prelude::*; #[test] diff --git a/storage/jellyfish-merkle/src/node_type/mod.rs b/storage/jellyfish-merkle/src/node_type/mod.rs index 0bc96af97f..66996e87ed 100644 --- a/storage/jellyfish-merkle/src/node_type/mod.rs +++ b/storage/jellyfish-merkle/src/node_type/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Node types of [`JellyfishMerkleTree`](crate::JellyfishMerkleTree) @@ -16,12 +16,12 @@ mod node_type_test; use crate::{nibble_path::NibblePath, ROOT_NIBBLE_HEIGHT}; use anyhow::{ensure, Context, Result}; use byteorder::{BigEndian, LittleEndian, ReadBytesExt, WriteBytesExt}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_nibble::Nibble; -use libra_types::{ +use diem_nibble::Nibble; +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleInternalNode, SparseMerkleLeafNode}, transaction::Version, diff --git a/storage/jellyfish-merkle/src/node_type/node_type_test.rs b/storage/jellyfish-merkle/src/node_type/node_type_test.rs index 4dc03d2cb4..049f2a1fb9 100644 --- a/storage/jellyfish-merkle/src/node_type/node_type_test.rs +++ b/storage/jellyfish-merkle/src/node_type/node_type_test.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_types::proof::{SparseMerkleInternalNode, SparseMerkleLeafNode}; +use diem_types::proof::{SparseMerkleInternalNode, SparseMerkleLeafNode}; use proptest::prelude::*; use std::{panic, rc::Rc}; diff --git a/storage/jellyfish-merkle/src/restore/mod.rs b/storage/jellyfish-merkle/src/restore/mod.rs index 74bc4e7e4b..ba1821a68e 100644 --- a/storage/jellyfish-merkle/src/restore/mod.rs +++ b/storage/jellyfish-merkle/src/restore/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements the functionality to restore a `JellyfishMerkleTree` from small chunks @@ -15,12 +15,12 @@ use crate::{ NodeBatch, TreeReader, TreeWriter, ROOT_NIBBLE_HEIGHT, }; use anyhow::{bail, ensure, format_err, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_nibble::Nibble; -use libra_types::{ +use diem_nibble::Nibble; +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleInternalNode, SparseMerkleRangeProof}, transaction::Version, diff --git a/storage/jellyfish-merkle/src/restore/restore_test.rs b/storage/jellyfish-merkle/src/restore/restore_test.rs index 89147ef7d6..282b50a017 100644 --- a/storage/jellyfish-merkle/src/restore/restore_test.rs +++ b/storage/jellyfish-merkle/src/restore/restore_test.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ mock_tree_store::MockTreeStore, restore::JellyfishMerkleRestore, test_helper::init_mock_db, JellyfishMerkleTree, TreeReader, }; -use libra_crypto::HashValue; -use libra_types::{account_state_blob::AccountStateBlob, transaction::Version}; +use diem_crypto::HashValue; +use diem_types::{account_state_blob::AccountStateBlob, transaction::Version}; use proptest::{collection::btree_map, prelude::*}; use std::{collections::BTreeMap, sync::Arc}; diff --git a/storage/jellyfish-merkle/src/test_helper.rs b/storage/jellyfish-merkle/src/test_helper.rs index d410716b46..5381c87b0a 100644 --- a/storage/jellyfish-merkle/src/test_helper.rs +++ b/storage/jellyfish-merkle/src/test_helper.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{mock_tree_store::MockTreeStore, node_type::LeafNode, JellyfishMerkleTree}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_types::{ +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleInternalNode, SparseMerkleRangeProof}, transaction::Version, diff --git a/storage/jellyfish-merkle/src/tree_cache/mod.rs b/storage/jellyfish-merkle/src/tree_cache/mod.rs index 2cb33c152f..e3f8bc4dab 100644 --- a/storage/jellyfish-merkle/src/tree_cache/mod.rs +++ b/storage/jellyfish-merkle/src/tree_cache/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! A transaction can have multiple operations on state. For example, it might update values @@ -74,8 +74,8 @@ use crate::{ NodeStats, StaleNodeIndex, TreeReader, TreeUpdateBatch, }; use anyhow::{bail, Result}; -use libra_crypto::HashValue; -use libra_types::transaction::{Version, PRE_GENESIS_VERSION}; +use diem_crypto::HashValue; +use diem_types::transaction::{Version, PRE_GENESIS_VERSION}; use std::{ collections::{hash_map::Entry, BTreeMap, BTreeSet, HashMap, HashSet}, convert::Into, diff --git a/storage/jellyfish-merkle/src/tree_cache/tree_cache_test.rs b/storage/jellyfish-merkle/src/tree_cache/tree_cache_test.rs index 7dc8996f2b..9f1f9b7314 100644 --- a/storage/jellyfish-merkle/src/tree_cache/tree_cache_test.rs +++ b/storage/jellyfish-merkle/src/tree_cache/tree_cache_test.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; use crate::{mock_tree_store::MockTreeStore, nibble_path::NibblePath, node_type::Node, NodeKey}; -use libra_crypto::HashValue; -use libra_types::account_state_blob::AccountStateBlob; +use diem_crypto::HashValue; +use diem_types::account_state_blob::AccountStateBlob; fn random_leaf_with_key(next_version: Version) -> (Node, NodeKey) { let address = HashValue::random(); diff --git a/storage/libradb/Cargo.toml b/storage/libradb/Cargo.toml deleted file mode 100644 index 195f8bc804..0000000000 --- a/storage/libradb/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "libradb" -version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libradb" -repository = "https://github.com/libra/libra" -homepage = "https://libra.org" -license = "Apache-2.0" -publish = false -edition = "2018" - -[dependencies] -anyhow = "1.0.34" -arc-swap = "1.0.0" -byteorder = "1.3.4" -itertools = "0.9.0" -once_cell = "1.4.1" -num-derive = "0.3.3" -num-traits = "0.2.14" -proptest = { version = "0.10.1", optional = true } -proptest-derive = { version = "0.2.0", optional = true } -serde = "1.0.117" -thiserror = "1.0.22" - -accumulator = { path = "../accumulator", version = "0.1.0" } -lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-jellyfish-merkle = { path = "../jellyfish-merkle", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0", optional = true } -libra-temppath = { path = "../../common/temppath", version = "0.1.0", optional = true } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } -num-variants = { path = "../../common/num-variants", version = "0.1.0" } -schemadb = { path = "../schemadb", version = "0.1.0" } -storage-interface = { path = "../storage-interface", version = "0.1.0" } - -[dev-dependencies] -proptest = "0.10.1" -proptest-derive = "0.2.0" -rand = "0.7.3" - -libra-jellyfish-merkle = { path = "../jellyfish-merkle", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } - -[features] -default = [] -librarian = [] -fuzzing = ["proptest", "proptest-derive", "libra-proptest-helpers", "libra-temppath", "libra-crypto/fuzzing", "libra-jellyfish-merkle/fuzzing", "libra-types/fuzzing"] diff --git a/storage/librarian/Cargo.toml b/storage/librarian/Cargo.toml index 7d270b6da3..cff32b2241 100644 --- a/storage/librarian/Cargo.toml +++ b/storage/librarian/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "librarian" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra libradb data access tool for data analysis or human read" +authors = ["Diem Association "] +description = "Diem diemdb data access tool for data analysis or human read" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,8 +15,8 @@ structopt = "0.3.21" serde = "1.0.117" serde_json = "1.0.60" -libradb = { path = "../libradb", version = "0.1.0", features = ["librarian"] } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diemdb = { path = "../diemdb", version = "0.1.0", features = ["librarian"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-interface = { path = "../storage-interface", version = "0.1.0" } diff --git a/storage/librarian/src/main.rs b/storage/librarian/src/main.rs index 7703ba47b5..3b2cfd8dc9 100644 --- a/storage/librarian/src/main.rs +++ b/storage/librarian/src/main.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(dead_code)] use anyhow::Result; -use libra_types::{account_address::AccountAddress, event::EventKey}; -use libradb::librarian::Librarian; +use diem_types::{account_address::AccountAddress, event::EventKey}; +use diemdb::librarian::Librarian; use serde::Serialize; use serde_json::to_string_pretty; use std::path::PathBuf; @@ -14,10 +14,10 @@ use structopt::StructOpt; #[derive(StructOpt)] #[structopt( name = "Librarian", - about = "A command line tool that offers multiple data access commands for LibraDB" + about = "A command line tool that offers multiple data access commands for DiemDB" )] struct Opt { - /// The parent dir of libradb + /// The parent dir of diemdb #[structopt(long = "db", parse(from_os_str))] db_dir: PathBuf, diff --git a/storage/schemadb/Cargo.toml b/storage/schemadb/Cargo.toml index f8404e6d40..fef425ef90 100644 --- a/storage/schemadb/Cargo.toml +++ b/storage/schemadb/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "schemadb" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra schemadb" +authors = ["Diem Association "] +description = "Diem schemadb" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,9 +12,9 @@ edition = "2018" [dependencies] anyhow = "1.0.34" once_cell = "1.4.1" -libra-config = { path = "../../config", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dependencies.rocksdb] version = "0.15.0" @@ -25,4 +25,4 @@ features = ["lz4"] byteorder = "1.3.4" proptest = "0.10.1" tempfile = "3.1.0" -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } diff --git a/storage/schemadb/src/lib.rs b/storage/schemadb/src/lib.rs index 255b2fb9c4..e41ef2a9a2 100644 --- a/storage/schemadb/src/lib.rs +++ b/storage/schemadb/src/lib.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] //! This library implements a schematized DB on top of [RocksDB](https://rocksdb.org/). It makes //! sure all data passed in and out are structured according to predefined schemas and prevents -//! access to raw keys and values. This library also enforces a set of Libra specific DB options, +//! access to raw keys and values. This library also enforces a set of Diem specific DB options, //! like custom comparators and schema-to-column-family mapping. //! //! It requires that different kinds of key-value pairs be stored in separate column @@ -19,9 +19,9 @@ pub mod schema; use crate::{ metrics::{ - LIBRA_SCHEMADB_BATCH_COMMIT_BYTES, LIBRA_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS, - LIBRA_SCHEMADB_DELETES, LIBRA_SCHEMADB_GET_BYTES, LIBRA_SCHEMADB_GET_LATENCY_SECONDS, - LIBRA_SCHEMADB_ITER_BYTES, LIBRA_SCHEMADB_ITER_LATENCY_SECONDS, LIBRA_SCHEMADB_PUT_BYTES, + DIEM_SCHEMADB_BATCH_COMMIT_BYTES, DIEM_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS, + DIEM_SCHEMADB_DELETES, DIEM_SCHEMADB_GET_BYTES, DIEM_SCHEMADB_GET_LATENCY_SECONDS, + DIEM_SCHEMADB_ITER_BYTES, DIEM_SCHEMADB_ITER_LATENCY_SECONDS, DIEM_SCHEMADB_PUT_BYTES, }, schema::{KeyCodec, Schema, SeekKeyCodec, ValueCodec}, }; @@ -149,7 +149,7 @@ where } fn next_impl(&mut self) -> Result> { - let _timer = LIBRA_SCHEMADB_ITER_LATENCY_SECONDS + let _timer = DIEM_SCHEMADB_ITER_LATENCY_SECONDS .with_label_values(&[S::COLUMN_FAMILY_NAME]) .start_timer(); @@ -160,7 +160,7 @@ where let raw_key = self.db_iter.key().expect("Iterator must be valid."); let raw_value = self.db_iter.value().expect("Iterator must be valid."); - LIBRA_SCHEMADB_ITER_BYTES + DIEM_SCHEMADB_ITER_BYTES .with_label_values(&[S::COLUMN_FAMILY_NAME]) .observe((raw_key.len() + raw_value.len()) as f64); @@ -235,7 +235,7 @@ impl DB { /// Open db as secondary. /// This allows to read the DB in another process while it's already opened for read / write in - /// one (e.g. a Libra Node) + /// one (e.g. a Diem Node) /// https://github.com/facebook/rocksdb/blob/493f425e77043cc35ea2d89ee3c4ec0274c700cb/include/rocksdb/db.h#L176-L222 pub fn open_as_secondary>( primary_path: P, @@ -313,7 +313,7 @@ impl DB { /// Reads single record by key. pub fn get(&self, schema_key: &S::Key) -> Result> { - let _timer = LIBRA_SCHEMADB_GET_LATENCY_SECONDS + let _timer = DIEM_SCHEMADB_GET_LATENCY_SECONDS .with_label_values(&[S::COLUMN_FAMILY_NAME]) .start_timer(); @@ -321,7 +321,7 @@ impl DB { let cf_handle = self.get_cf_handle(S::COLUMN_FAMILY_NAME)?; let result = self.inner.get_cf(cf_handle, &k)?; - LIBRA_SCHEMADB_GET_BYTES + DIEM_SCHEMADB_GET_BYTES .with_label_values(&[S::COLUMN_FAMILY_NAME]) .observe(result.as_ref().map_or(0.0, |v| v.len() as f64)); @@ -381,7 +381,7 @@ impl DB { /// Writes a group of records wrapped in a [`SchemaBatch`]. pub fn write_schemas(&self, batch: SchemaBatch) -> Result<()> { - let _timer = LIBRA_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS + let _timer = DIEM_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS .with_label_values(&[self.name]) .start_timer(); @@ -404,17 +404,17 @@ impl DB { for (key, write_op) in rows { match write_op { WriteOp::Value(value) => { - LIBRA_SCHEMADB_PUT_BYTES + DIEM_SCHEMADB_PUT_BYTES .with_label_values(&[cf_name]) .observe((key.len() + value.len()) as f64); } WriteOp::Deletion => { - LIBRA_SCHEMADB_DELETES.with_label_values(&[cf_name]).inc(); + DIEM_SCHEMADB_DELETES.with_label_values(&[cf_name]).inc(); } } } } - LIBRA_SCHEMADB_BATCH_COMMIT_BYTES + DIEM_SCHEMADB_BATCH_COMMIT_BYTES .with_label_values(&[self.name]) .observe(serialized_size as f64); diff --git a/storage/schemadb/src/metrics.rs b/storage/schemadb/src/metrics.rs index a5fd52e05c..d1850364e7 100644 --- a/storage/schemadb/src/metrics.rs +++ b/storage/schemadb/src/metrics.rs @@ -1,99 +1,97 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{ - register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec, -}; +use diem_metrics::{register_histogram_vec, register_int_counter_vec, HistogramVec, IntCounterVec}; use once_cell::sync::Lazy; -pub static LIBRA_SCHEMADB_ITER_LATENCY_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_ITER_LATENCY_SECONDS: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_iter_latency_seconds", + "diem_schemadb_iter_latency_seconds", // metric description - "Libra schemadb iter latency in seconds", + "Diem schemadb iter latency in seconds", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_ITER_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_ITER_BYTES: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_iter_bytes", + "diem_schemadb_iter_bytes", // metric description - "Libra schemadb iter size in bytess", + "Diem schemadb iter size in bytess", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_GET_LATENCY_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_GET_LATENCY_SECONDS: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_get_latency_seconds", + "diem_schemadb_get_latency_seconds", // metric description - "Libra schemadb get latency in seconds", + "Diem schemadb get latency in seconds", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_GET_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_GET_BYTES: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_get_bytes", + "diem_schemadb_get_bytes", // metric description - "Libra schemadb get call returned data size in bytes", + "Diem schemadb get call returned data size in bytes", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_BATCH_COMMIT_LATENCY_SECONDS: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_batch_commit_latency_seconds", + "diem_schemadb_batch_commit_latency_seconds", // metric description - "Libra schemadb schema batch commit latency in seconds", + "Diem schemadb schema batch commit latency in seconds", // metric labels (dimensions) &["db_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_BATCH_COMMIT_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_BATCH_COMMIT_BYTES: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_batch_commit_bytes", + "diem_schemadb_batch_commit_bytes", // metric description - "Libra schemadb schema batch commit size in bytes", + "Diem schemadb schema batch commit size in bytes", // metric labels (dimensions) &["db_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_PUT_BYTES: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_PUT_BYTES: Lazy = Lazy::new(|| { register_histogram_vec!( // metric name - "libra_schemadb_put_bytes", + "diem_schemadb_put_bytes", // metric description - "Libra schemadb put call puts data size in bytes", + "Diem schemadb put call puts data size in bytes", // metric labels (dimensions) &["cf_name"] ) .unwrap() }); -pub static LIBRA_SCHEMADB_DELETES: Lazy = Lazy::new(|| { +pub static DIEM_SCHEMADB_DELETES: Lazy = Lazy::new(|| { register_int_counter_vec!( - "libra_storage_deletes", - "Libra storage delete calls", + "diem_storage_deletes", + "Diem storage delete calls", &["cf_name"] ) .unwrap() diff --git a/storage/schemadb/src/schema.rs b/storage/schemadb/src/schema.rs index 22f8b73905..2a4c4d6a3f 100644 --- a/storage/schemadb/src/schema.rs +++ b/storage/schemadb/src/schema.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides traits that define the behavior of a schema and its associated key and diff --git a/storage/schemadb/tests/db.rs b/storage/schemadb/tests/db.rs index 6bbfca9ff9..60d5b04cec 100644 --- a/storage/schemadb/tests/db.rs +++ b/storage/schemadb/tests/db.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; @@ -79,14 +79,14 @@ fn get_column_families() -> Vec { ] } -fn open_db(dir: &libra_temppath::TempPath) -> DB { +fn open_db(dir: &diem_temppath::TempPath) -> DB { let mut db_opts = rocksdb::Options::default(); db_opts.create_if_missing(true); db_opts.create_missing_column_families(true); DB::open(&dir.path(), "test", get_column_families(), &db_opts).expect("Failed to open DB.") } -fn open_db_read_only(dir: &libra_temppath::TempPath) -> DB { +fn open_db_read_only(dir: &diem_temppath::TempPath) -> DB { DB::open_readonly( &dir.path(), "test", @@ -96,7 +96,7 @@ fn open_db_read_only(dir: &libra_temppath::TempPath) -> DB { .expect("Failed to open DB.") } -fn open_db_as_secondary(dir: &libra_temppath::TempPath, dir_sec: &libra_temppath::TempPath) -> DB { +fn open_db_as_secondary(dir: &diem_temppath::TempPath, dir_sec: &diem_temppath::TempPath) -> DB { DB::open_as_secondary( &dir.path(), &dir_sec.path(), @@ -108,13 +108,13 @@ fn open_db_as_secondary(dir: &libra_temppath::TempPath, dir_sec: &libra_temppath } struct TestDB { - _tmpdir: libra_temppath::TempPath, + _tmpdir: diem_temppath::TempPath, db: DB, } impl TestDB { fn new() -> Self { - let tmpdir = libra_temppath::TempPath::new(); + let tmpdir = diem_temppath::TempPath::new(); let db = open_db(&tmpdir); TestDB { @@ -301,7 +301,7 @@ fn test_two_schema_batches() { #[test] fn test_reopen() { - let tmpdir = libra_temppath::TempPath::new(); + let tmpdir = diem_temppath::TempPath::new(); { let db = open_db(&tmpdir); db.put::(&TestField(0), &TestField(0)).unwrap(); @@ -321,7 +321,7 @@ fn test_reopen() { #[test] fn test_open_read_only() { - let tmpdir = libra_temppath::TempPath::new(); + let tmpdir = diem_temppath::TempPath::new(); { let db = open_db(&tmpdir); db.put::(&TestField(0), &TestField(0)).unwrap(); @@ -338,8 +338,8 @@ fn test_open_read_only() { #[test] fn test_open_as_secondary() { - let tmpdir = libra_temppath::TempPath::new(); - let tmpdir_sec = libra_temppath::TempPath::new(); + let tmpdir = diem_temppath::TempPath::new(); + let tmpdir_sec = diem_temppath::TempPath::new(); let db = open_db(&tmpdir); db.put::(&TestField(0), &TestField(0)).unwrap(); diff --git a/storage/schemadb/tests/iterator.rs b/storage/schemadb/tests/iterator.rs index 3d9e86acdb..cd1fe5e4e6 100644 --- a/storage/schemadb/tests/iterator.rs +++ b/storage/schemadb/tests/iterator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; @@ -71,13 +71,13 @@ fn collect_values(iter: SchemaIterator) -> Vec { } struct TestDB { - _tmpdir: libra_temppath::TempPath, + _tmpdir: diem_temppath::TempPath, db: DB, } impl TestDB { fn new() -> Self { - let tmpdir = libra_temppath::TempPath::new(); + let tmpdir = diem_temppath::TempPath::new(); let column_families = vec![DEFAULT_CF_NAME, TestSchema::COLUMN_FAMILY_NAME]; let mut db_opts = rocksdb::Options::default(); db_opts.create_if_missing(true); diff --git a/storage/scratchpad/Cargo.toml b/storage/scratchpad/Cargo.toml index 4843da3736..7a5b375fe4 100644 --- a/storage/scratchpad/Cargo.toml +++ b/storage/scratchpad/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "scratchpad" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra scratchpad" +authors = ["Diem Association "] +description = "Diem scratchpad" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -12,14 +12,14 @@ edition = "2018" [dependencies] itertools = "0.9.0" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/storage/scratchpad/src/lib.rs b/storage/scratchpad/src/lib.rs index 40ef086f9b..144f0ecad8 100644 --- a/storage/scratchpad/src/lib.rs +++ b/storage/scratchpad/src/lib.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! This crate provides in-memory representation of Libra core data structures used by the executor. +//! This crate provides in-memory representation of Diem core data structures used by the executor. mod sparse_merkle; diff --git a/storage/scratchpad/src/sparse_merkle/mod.rs b/storage/scratchpad/src/sparse_merkle/mod.rs index 2793ff002f..787aff9842 100644 --- a/storage/scratchpad/src/sparse_merkle/mod.rs +++ b/storage/scratchpad/src/sparse_merkle/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements an in-memory Sparse Merkle Tree that is similar to what we use in @@ -68,11 +68,11 @@ mod node; mod sparse_merkle_test; use self::node::{LeafNode, LeafValue, Node, SparseMerkleNode}; -use libra_crypto::{ +use diem_crypto::{ hash::{HashValueBitIterator, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_types::{account_state_blob::AccountStateBlob, proof::SparseMerkleProof}; +use diem_types::{account_state_blob::AccountStateBlob, proof::SparseMerkleProof}; use std::sync::Arc; /// `AccountStatus` describes the result of querying an account from this SparseMerkleTree. diff --git a/storage/scratchpad/src/sparse_merkle/node.rs b/storage/scratchpad/src/sparse_merkle/node.rs index bc1a4d7b53..2ba5267ce0 100644 --- a/storage/scratchpad/src/sparse_merkle/node.rs +++ b/storage/scratchpad/src/sparse_merkle/node.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module defines all kinds of nodes in the Sparse Merkle Tree maintained in scratch pad. @@ -17,12 +17,12 @@ //! //! - An `EmptyNode` represents an empty subtree with zero leaf. -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_infallible::RwLock; -use libra_types::{ +use diem_infallible::RwLock; +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleInternalNode, SparseMerkleLeafNode}, }; diff --git a/storage/scratchpad/src/sparse_merkle/sparse_merkle_test.rs b/storage/scratchpad/src/sparse_merkle/sparse_merkle_test.rs index 30a95b80a9..00761f2a6e 100644 --- a/storage/scratchpad/src/sparse_merkle/sparse_merkle_test.rs +++ b/storage/scratchpad/src/sparse_merkle/sparse_merkle_test.rs @@ -1,22 +1,22 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::{ node::{LeafNode, LeafValue, SparseMerkleNode}, AccountStatus, ProofRead, SparseMerkleTree, }; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, TestOnlyHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_types::{ +use diem_types::{ account_state_blob::AccountStateBlob, proof::{SparseMerkleLeafNode, SparseMerkleProof}, }; use std::{collections::HashMap, sync::Arc}; fn hash_internal(left_child: HashValue, right_child: HashValue) -> HashValue { - libra_types::proof::SparseMerkleInternalNode::new(left_child, right_child).hash() + diem_types::proof::SparseMerkleInternalNode::new(left_child, right_child).hash() } fn hash_leaf(key: HashValue, value_hash: HashValue) -> HashValue { diff --git a/storage/state-view/Cargo.toml b/storage/state-view/Cargo.toml index f7fb77c3b5..c4cbaaa4e4 100644 --- a/storage/state-view/Cargo.toml +++ b/storage/state-view/Cargo.toml @@ -1,20 +1,20 @@ [package] -name = "libra-state-view" +name = "diem-state-view" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra state view" +authors = ["Diem Association "] +description = "Diem state view" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" [dependencies] anyhow = "1.0.34" -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/storage/state-view/src/lib.rs b/storage/state-view/src/lib.rs index 44345ce0cf..557f542f56 100644 --- a/storage/state-view/src/lib.rs +++ b/storage/state-view/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -6,8 +6,8 @@ //! This crate defines [`trait StateView`](StateView). use anyhow::Result; -use libra_crypto::HashValue; -use libra_types::{access_path::AccessPath, transaction::Version}; +use diem_crypto::HashValue; +use diem_types::{access_path::AccessPath, transaction::Version}; /// `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 diff --git a/storage/storage-client/Cargo.toml b/storage/storage-client/Cargo.toml index 8391aac916..b2335a7664 100644 --- a/storage/storage-client/Cargo.toml +++ b/storage/storage-client/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "storage-client" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra storage client" +authors = ["Diem Association "] +description = "Diem storage client" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -14,12 +14,12 @@ anyhow = "1.0.34" serde = "1.0.117" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } storage-interface = { path = "../storage-interface", version = "0.1.0" } [features] diff --git a/storage/storage-client/src/lib.rs b/storage/storage-client/src/lib.rs index 405408d85b..301c1e5b00 100644 --- a/storage/storage-client/src/lib.rs +++ b/storage/storage-client/src/lib.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::Result; -use libra_crypto::HashValue; -use libra_infallible::Mutex; -use libra_logger::warn; -use libra_secure_net::NetworkClient; -use libra_types::{ +use diem_crypto::HashValue; +use diem_infallible::Mutex; +use diem_logger::warn; +use diem_secure_net::NetworkClient; +use diem_types::{ account_address::AccountAddress, account_state_blob::{AccountStateBlob, AccountStateWithProof}, contract_event::ContractEvent, diff --git a/storage/storage-interface/Cargo.toml b/storage/storage-interface/Cargo.toml index 9c68e68493..8d9663abf7 100644 --- a/storage/storage-interface/Cargo.toml +++ b/storage/storage-interface/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "storage-interface" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra storage interface" +authors = ["Diem Association "] +description = "Diem storage interface" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -16,14 +16,14 @@ serde = { version = "1.0.117", default-features = false } thiserror = "1.0.22" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } -libra-state-view = { path = "../../storage/state-view", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-state-view = { path = "../../storage/state-view", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } scratchpad = { path = "../scratchpad", version = "0.1.0" } move-core-types = { path = "../../language/move-core/types", version = "0.1.0" } [features] default = [] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/storage/storage-interface/src/lib.rs b/storage/storage-interface/src/lib.rs index ed3ac56ac7..16b47ca50f 100644 --- a/storage/storage-interface/src/lib.rs +++ b/storage/storage-interface/src/lib.rs @@ -1,10 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Result}; -use itertools::Itertools; -use libra_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; -use libra_types::{ +use diem_crypto::{hash::SPARSE_MERKLE_PLACEHOLDER_HASH, HashValue}; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_state::AccountState, @@ -21,6 +20,7 @@ use libra_types::{ Version, }, }; +use itertools::Itertools; use serde::{Deserialize, Serialize}; use std::{ collections::{HashMap, HashSet}, @@ -61,7 +61,7 @@ impl StartupInfo { #[cfg(any(feature = "fuzzing"))] pub fn new_for_testing() -> Self { - use libra_types::on_chain_config::ValidatorSet; + use diem_types::on_chain_config::ValidatorSet; let latest_ledger_info = LedgerInfoWithSignatures::genesis(HashValue::zero(), ValidatorSet::empty()); @@ -147,8 +147,8 @@ impl From for Error { } } -impl From for Error { - fn from(error: libra_secure_net::Error) -> Self { +impl From for Error { + fn from(error: diem_secure_net::Error) -> Self { Self::ServiceError { error: format!("{}", error), } @@ -162,21 +162,21 @@ pub enum Order { } /// Trait that is implemented by a DB that supports certain public (to client) read APIs -/// expected of a Libra DB +/// expected of a Diem DB pub trait DbReader: Send + Sync { - /// See [`LibraDB::get_epoch_ending_ledger_infos`]. + /// See [`DiemDB::get_epoch_ending_ledger_infos`]. /// - /// [`LibraDB::get_epoch_ending_ledger_infos`]: - /// ../libradb/struct.LibraDB.html#method.get_epoch_ending_ledger_infos + /// [`DiemDB::get_epoch_ending_ledger_infos`]: + /// ../diemdb/struct.DiemDB.html#method.get_epoch_ending_ledger_infos fn get_epoch_ending_ledger_infos( &self, start_epoch: u64, end_epoch: u64, ) -> Result; - /// See [`LibraDB::get_transactions`]. + /// See [`DiemDB::get_transactions`]. /// - /// [`LibraDB::get_transactions`]: ../libradb/struct.LibraDB.html#method.get_transactions + /// [`DiemDB::get_transactions`]: ../diemdb/struct.DiemDB.html#method.get_transactions fn get_transactions( &self, start_version: Version, @@ -194,16 +194,16 @@ pub trait DbReader: Send + Sync { limit: u64, ) -> Result>; - /// See [`LibraDB::get_block_timestamp`]. + /// See [`DiemDB::get_block_timestamp`]. /// - /// [`LibraDB::get_block_timestamp`]: - /// ../libradb/struct.LibraDB.html#method.get_block_timestamp + /// [`DiemDB::get_block_timestamp`]: + /// ../diemdb/struct.DiemDB.html#method.get_block_timestamp fn get_block_timestamp(&self, version: u64) -> Result; - /// See [`LibraDB::get_latest_account_state`]. + /// See [`DiemDB::get_latest_account_state`]. /// - /// [`LibraDB::get_latest_account_state`]: - /// ../libradb/struct.LibraDB.html#method.get_latest_account_state + /// [`DiemDB::get_latest_account_state`]: + /// ../diemdb/struct.DiemDB.html#method.get_latest_account_state fn get_latest_account_state(&self, address: AccountAddress) -> Result>; @@ -223,10 +223,10 @@ pub trait DbReader: Send + Sync { } /// Gets information needed from storage during the main node startup. - /// See [`LibraDB::get_startup_info`]. + /// See [`DiemDB::get_startup_info`]. /// - /// [`LibraDB::get_startup_info`]: - /// ../libradb/struct.LibraDB.html#method.get_startup_info + /// [`DiemDB::get_startup_info`]: + /// ../diemdb/struct.DiemDB.html#method.get_startup_info fn get_startup_info(&self) -> Result>; fn get_txn_by_account( @@ -266,22 +266,22 @@ pub trait DbReader: Send + Sync { // Gets an account state by account address, out of the ledger state indicated by the state // Merkle tree root with a sparse merkle proof proving state tree root. - // See [`LibraDB::get_account_state_with_proof_by_version`]. + // See [`DiemDB::get_account_state_with_proof_by_version`]. // - // [`LibraDB::get_account_state_with_proof_by_version`]: - // ../libradb/struct.LibraDB.html#method.get_account_state_with_proof_by_version + // [`DiemDB::get_account_state_with_proof_by_version`]: + // ../diemdb/struct.DiemDB.html#method.get_account_state_with_proof_by_version // - // This is used by libra core (executor) internally. + // This is used by diem core (executor) internally. fn get_account_state_with_proof_by_version( &self, address: AccountAddress, version: Version, ) -> Result<(Option, SparseMerkleProof)>; - /// See [`LibraDB::get_latest_state_root`]. + /// See [`DiemDB::get_latest_state_root`]. /// - /// [`LibraDB::get_latest_state_root`]: - /// ../libradb/struct.LibraDB.html#method.get_latest_state_root + /// [`DiemDB::get_latest_state_root`]: + /// ../diemdb/struct.DiemDB.html#method.get_latest_state_root fn get_latest_state_root(&self) -> Result<(Version, HashValue)>; /// Gets the latest TreeState no matter if db has been bootstrapped. @@ -367,13 +367,13 @@ impl MoveStorage for &dyn DbReader { } /// Trait that is implemented by a DB that supports certain public (to client) write APIs -/// expected of a Libra DB. This adds write APIs to DbReader. +/// expected of a Diem DB. This adds write APIs to DbReader. pub trait DbWriter: Send + Sync { /// Persist transactions. Called by the executor module when either syncing nodes or committing /// blocks during normal operation. - /// See [`LibraDB::save_transactions`]. + /// See [`DiemDB::save_transactions`]. /// - /// [`LibraDB::save_transactions`]: ../libradb/struct.LibraDB.html#method.save_transactions + /// [`DiemDB::save_transactions`]: ../diemdb/struct.DiemDB.html#method.save_transactions fn save_transactions( &self, txns_to_commit: &[TransactionToCommit], diff --git a/storage/storage-interface/src/mock.rs b/storage/storage-interface/src/mock.rs index 564c7dfbaa..66a15e79f6 100644 --- a/storage/storage-interface/src/mock.rs +++ b/storage/storage-interface/src/mock.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides mock dbreader for tests. use crate::{DbReader, Order, StartupInfo, TreeState}; use anyhow::Result; -use libra_crypto::HashValue; -use libra_types::{ +use diem_crypto::HashValue; +use diem_types::{ account_address::AccountAddress, account_config::AccountResource, account_state::AccountState, diff --git a/storage/storage-interface/src/state_view.rs b/storage/storage-interface/src/state_view.rs index ccb36de790..30cd666e39 100644 --- a/storage/storage-interface/src/state_view.rs +++ b/storage/storage-interface/src/state_view.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::DbReader; use anyhow::{format_err, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; -use libra_state_view::{StateView, StateViewId}; -use libra_types::{ +use diem_state_view::{StateView, StateViewId}; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_state::AccountState, diff --git a/storage/storage-service/Cargo.toml b/storage/storage-service/Cargo.toml index 260b256617..4386915774 100644 --- a/storage/storage-service/Cargo.toml +++ b/storage/storage-service/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "storage-service" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra storage service" +authors = ["Diem Association "] +description = "Diem storage service" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,26 +15,26 @@ tokio = { version = "0.2.22", features = ["full"] } futures = "0.3.8" lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libradb = { path = "../libradb", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-secure-net = { path = "../../secure/net", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diemdb = { path = "../diemdb", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-secure-net = { path = "../../secure/net", version = "0.1.0" } storage-interface = { path = "../storage-interface", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } rand = { version = "0.7.3", optional = true } storage-client = { path = "../storage-client", version = "0.1.0", optional = true } proptest = { version = "0.10.1", optional = true } [dev-dependencies] itertools = "0.9.0" -libradb = { path = "../libradb", version = "0.1.0", features = ["fuzzing"] } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } +diemdb = { path = "../diemdb", version = "0.1.0", features = ["fuzzing"] } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } proptest = "0.10.1" storage-client = { path = "../storage-client", version = "0.1.0" } [features] default = [] -fuzzing = ["proptest", "libradb/fuzzing", "rand"] +fuzzing = ["proptest", "diemdb/fuzzing", "rand"] diff --git a/storage/storage-service/src/lib.rs b/storage/storage-service/src/lib.rs index fbad674935..10f8b1decb 100644 --- a/storage/storage-service/src/lib.rs +++ b/storage/storage-service/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -9,29 +9,26 @@ //! [`storage-client`](../storage-client/index.html) instead of via use anyhow::Result; -use libra_config::config::NodeConfig; -use libra_logger::prelude::*; -use libra_secure_net::NetworkServer; -use libra_types::{account_state_blob::AccountStateBlob, proof::SparseMerkleProof}; -use libradb::LibraDB; +use diem_config::config::NodeConfig; +use diem_logger::prelude::*; +use diem_secure_net::NetworkServer; +use diem_types::{account_state_blob::AccountStateBlob, proof::SparseMerkleProof}; +use diemdb::DiemDB; use std::{ sync::Arc, thread::{self, JoinHandle}, }; use storage_interface::{DbReader, DbWriter, Error, StartupInfo}; -/// Starts storage service with a given LibraDB -pub fn start_storage_service_with_db( - config: &NodeConfig, - libra_db: Arc, -) -> JoinHandle<()> { - let storage_service = StorageService { db: libra_db }; +/// Starts storage service with a given DiemDB +pub fn start_storage_service_with_db(config: &NodeConfig, diem_db: Arc) -> JoinHandle<()> { + let storage_service = StorageService { db: diem_db }; storage_service.run(config) } #[derive(Clone)] pub struct StorageService { - db: Arc, + db: Arc, } impl StorageService { diff --git a/storage/storage-service/src/storage_service_test.rs b/storage/storage-service/src/storage_service_test.rs index d6fc61626b..c9aa6d83b1 100644 --- a/storage/storage-service/src/storage_service_test.rs +++ b/storage/storage-service/src/storage_service_test.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::*; -use itertools::zip_eq; -use libra_config::{config::NodeConfig, utils}; -use libra_crypto::hash::CryptoHash; +use diem_config::{config::NodeConfig, utils}; +use diem_crypto::hash::CryptoHash; #[cfg(test)] -use libradb::test_helper::arb_blocks_to_commit; +use diemdb::test_helper::arb_blocks_to_commit; +use itertools::zip_eq; use proptest::prelude::*; use std::{ collections::{BTreeMap, HashMap}, @@ -14,16 +14,16 @@ use std::{ }; use storage_client::StorageClient; -fn start_test_storage_with_client() -> (JoinHandle<()>, libra_temppath::TempPath, StorageClient) { +fn start_test_storage_with_client() -> (JoinHandle<()>, diem_temppath::TempPath, StorageClient) { let mut config = NodeConfig::random(); - let tmp_dir = libra_temppath::TempPath::new(); + let tmp_dir = diem_temppath::TempPath::new(); let server_port = utils::get_available_port(); config.storage.address = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), server_port); // Test timeout of 5 seconds config.storage.timeout_ms = 5_000; - let db = Arc::new(LibraDB::new_for_test(&tmp_dir)); + let db = Arc::new(DiemDB::new_for_test(&tmp_dir)); let storage_server_handle = start_storage_service_with_db(&config, db); let client = StorageClient::new(&config.storage.address, config.storage.timeout_ms); diff --git a/testsuite/cli/Cargo.toml b/testsuite/cli/Cargo.toml index d68b8898e7..c2bfa3d818 100644 --- a/testsuite/cli/Cargo.toml +++ b/testsuite/cli/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "cli" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra client" +authors = ["Diem Association "] +description = "Diem client" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -24,20 +24,20 @@ structopt = "0.3.21" tokio = { version = "0.2.22", features = ["full"] } walkdir = "2.3.1" -libra-config = { path = "../../config", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } generate-key = { path = "../../config/generate-key", version = "0.1.0" } crash-handler = { path = "../../common/crash-handler", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-wallet = { path = "libra-wallet", version = "0.1.0" } -libra-json-rpc-client = { path = "../../client/json-rpc", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-metrics = { path = "../../common/metrics", version = "0.1.0" } -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-temppath = { path = "../../common/temppath/", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-wallet = { path = "diem-wallet", version = "0.1.0" } +diem-json-rpc-client = { path = "../../client/json-rpc", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-metrics = { path = "../../common/metrics", version = "0.1.0" } +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-temppath = { path = "../../common/temppath/", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } resource-viewer = { path = "../../language/tools/resource-viewer", version = "0.1.0" } compiled-stdlib = { path = "../../language/stdlib/compiled", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } @@ -46,8 +46,8 @@ compiler = { path = "../../language/compiler", version = "0.1.0" } [dev-dependencies] proptest = "0.10.1" -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "libra-crypto/fuzzing", "libra-types/fuzzing"] +fuzzing = ["proptest", "diem-crypto/fuzzing", "diem-types/fuzzing"] diff --git a/testsuite/cli/libra-wallet/Cargo.toml b/testsuite/cli/diem-wallet/Cargo.toml similarity index 59% rename from testsuite/cli/libra-wallet/Cargo.toml rename to testsuite/cli/diem-wallet/Cargo.toml index 7ae240239a..d707a5310d 100644 --- a/testsuite/cli/libra-wallet/Cargo.toml +++ b/testsuite/cli/diem-wallet/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-wallet" +name = "diem-wallet" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra wallet" +authors = ["Diem Association "] +description = "Diem wallet" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -21,14 +21,14 @@ sha2 = "0.9.2" thiserror = "1.0.22" vanilla-ed25519-dalek = { version = "1.0.1", package = 'ed25519-dalek', optional = true} ed25519-dalek = { git = "https://github.com/novifinancial/ed25519-dalek.git", branch = "fiat5", version = "1.0.1", default-features = false, features = ["std", "fiat_u64_backend"], optional = true} -libra-crypto = { path = "../../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } -libra-temppath = { path = "../../../common/temppath/", version = "0.1.0" } -libra-types = { path = "../../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-temppath = { path = "../../../common/temppath/", version = "0.1.0" } +diem-types = { path = "../../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } mirai-annotations = "1.10.1" [features] default = ["fiat"] fiat = ["ed25519-dalek"] vanilla = ["vanilla-ed25519-dalek"] -fuzzing = ["libra-types/fuzzing"] +fuzzing = ["diem-types/fuzzing"] diff --git a/testsuite/cli/diem-wallet/README.md b/testsuite/cli/diem-wallet/README.md new file mode 100644 index 0000000000..37a37d0179 --- /dev/null +++ b/testsuite/cli/diem-wallet/README.md @@ -0,0 +1,15 @@ +# Diem Wallet + +Diem Wallet is a pure-rust implementation of hierarchical key derivation for SecretKey material in Diem. + +# Overview + +`diem-wallet` is a library providing hierarchical key derivation for SecretKey material in Diem. The following crate is largely inspired by [`rust-wallet`](https://github.com/rust-bitcoin/rust-wallet) with minor modifications to the key derivation function. Note that Diem makes use of the ed25519 Edwards Curve Digital Signature Algorithm (EdDSA) over the Edwards Cruve cruve25519. Therefore, BIP32-like PublicKey derivation is not possible without falling back to a traditional non-deterministic Schnorr signature algorithm. For this reason, we modified the key derivation function to a simpler alternative. + +The `internal_macros.rs` is taken from [`rust-bitcoin`](https://github.com/rust-bitcoin/rust-bitcoin/blob/master/src/internal_macros.rs) and `mnemonic.rs` is a slightly modified version of the file with the same name from [`rust-wallet`](https://github.com/rust-bitcoin/rust-wallet/blob/master/src/mnemonic.rs), while `error.rs`, `key_factor.rs` and `wallet_library.rs` are modified to present a minimalist wallet library for the Diem Client. Note that `mnemonic.rs` from `rust-wallet` adheres to the [`BIP39`](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) spec. + +# Implementation Details + +`key_factory.rs` implements the key derivation functions. The `KeyFactory` struct holds the Master Secret Material used to derive the Child Key(s). The constructor of a particular `KeyFactory` accepts a `[u8; 64]` `Seed` and computes both the `Master` Secret Material as well as the `ChainCode` from the HMAC-512 of the `Seed`. Finally, the `KeyFactory` allows to derive a child PrivateKey at a particular `ChildNumber` from the Master and ChainCode, as well as the `ChildNumber`'s u64 member. + +`wallet_library.rs` is a thin wrapper around `KeyFactory` which enables to keep track of Diem `AccountAddresses` and the information required to restore the current wallet from a `Mnemonic` backup. The `WalletLibrary` struct includes constructors that allow to generate a new `WalletLibrary` from OS randomness or generate a `WalletLibrary` from an instance of `Mnemonic`. `WalletLibrary` also allows to generate new addresses in-order or out-of-order via the `fn new_address` and `fn new_address_at_child_number`. Finally, `WalletLibrary` is capable of signing a Diem `RawTransaction` with the PrivateKey associated to the `AccountAddress` submitted. Note that in the future, Diem will support rotating authentication keys and therefore, `WalletLibrary` will need to understand more general inputs when mapping `AuthenticationKeys` to `PrivateKeys` diff --git a/testsuite/cli/diem-wallet/src/error.rs b/testsuite/cli/diem-wallet/src/error.rs new file mode 100644 index 0000000000..d8f8e70fbe --- /dev/null +++ b/testsuite/cli/diem-wallet/src/error.rs @@ -0,0 +1,14 @@ +// Copyright (c) The Diem Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use thiserror::Error; + +/// Diem Wallet Error is a convenience enum for generating arbitrary WalletErrors. Currently, only +/// the DiemWalletGeneric error is being used, but there are plans to add more specific errors as +/// the Diem Wallet matures +#[derive(Debug, Error)] +pub enum WalletError { + /// generic error message + #[error("{0}")] + DiemWalletGeneric(String), +} diff --git a/testsuite/cli/libra-wallet/src/internal_macros.rs b/testsuite/cli/diem-wallet/src/internal_macros.rs similarity index 97% rename from testsuite/cli/libra-wallet/src/internal_macros.rs rename to testsuite/cli/diem-wallet/src/internal_macros.rs index 9f0e759366..b026eedf7f 100644 --- a/testsuite/cli/libra-wallet/src/internal_macros.rs +++ b/testsuite/cli/diem-wallet/src/internal_macros.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The following macros are slightly modified from rust-bitcoin. The original file may be found @@ -50,7 +50,7 @@ macro_rules! impl_array_newtype { #[inline] fn cmp(&self, other: &$thing) -> ::std::cmp::Ordering { // manually implement comparison to get little-endian ordering - // (we need this for our numeric libra_types; non-numeric ones shouldn't + // (we need this for our numeric diem_types; non-numeric ones shouldn't // be ordered anyway except to put them in BTrees or whatever, and // they don't care how we order as long as we're consistent). for i in 0..$len { diff --git a/testsuite/cli/libra-wallet/src/io_utils.rs b/testsuite/cli/diem-wallet/src/io_utils.rs similarity index 96% rename from testsuite/cli/libra-wallet/src/io_utils.rs rename to testsuite/cli/diem-wallet/src/io_utils.rs index 67cdd7876a..0b0ff87acd 100644 --- a/testsuite/cli/libra-wallet/src/io_utils.rs +++ b/testsuite/cli/diem-wallet/src/io_utils.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! A module to generate, store and load known users accounts. diff --git a/testsuite/cli/libra-wallet/src/key_factory.rs b/testsuite/cli/diem-wallet/src/key_factory.rs similarity index 84% rename from testsuite/cli/libra-wallet/src/key_factory.rs rename to testsuite/cli/diem-wallet/src/key_factory.rs index 356a5fd6c8..abd700fcfa 100644 --- a/testsuite/cli/libra-wallet/src/key_factory.rs +++ b/testsuite/cli/diem-wallet/src/key_factory.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The following is a minimalist version of a hierarchical key derivation library for the -//! LibraWallet. +//! DiemWallet. //! -//! Note that the Libra Blockchain makes use of ed25519 Edwards Digital Signature Algorithm +//! Note that the Diem Blockchain makes use of ed25519 Edwards Digital Signature Algorithm //! (EdDSA) and therefore, BIP32 Public Key derivation is not available without falling back to -//! a non-deterministic Schnorr signature scheme. As LibraWallet is meant to be a minimalist +//! a non-deterministic Schnorr signature scheme. As DiemWallet is meant to be a minimalist //! reference implementation of a simple wallet, the following does not deviate from the //! ed25519 spec. In a future iteration of this wallet, we will also provide an implementation //! of a Schnorr variant over curve25519 and demonstrate our proposal for BIP32-like public key @@ -18,15 +18,15 @@ use crate::mnemonic::Mnemonic; use anyhow::{anyhow, Result}; use byteorder::{ByteOrder, LittleEndian}; -use hmac::Hmac; -use libra_crypto::{ +use diem_crypto::{ compat::Sha3_256, ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, hash::CryptoHash, hkdf::Hkdf, traits::SigningKey, }; -use libra_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; +use diem_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; +use hmac::Hmac; use mirai_annotations::*; use pbkdf2::pbkdf2; use serde::{Deserialize, Serialize}; @@ -85,7 +85,7 @@ pub struct ExtendedPrivKey { impl ExtendedPrivKey { /// Constructor for creating an ExtendedPrivKey from a ed25519 PrivateKey. Note that the - /// ChildNumber are not used in this iteration of LibraWallet, but in order to + /// ChildNumber are not used in this iteration of DiemWallet, but in order to /// enable more general Hierarchical KeyDerivation schemes, we include it for completeness. pub fn new(_child_number: ChildNumber, private_key: Ed25519PrivateKey) -> Self { Self { @@ -101,7 +101,7 @@ impl ExtendedPrivKey { /// Compute the account address for this account's public key pub fn get_address(&self) -> AccountAddress { - libra_types::account_address::from_public_key(&self.get_public()) + diem_types::account_address::from_public_key(&self.get_public()) } /// Get private key @@ -114,16 +114,16 @@ impl ExtendedPrivKey { AuthenticationKey::ed25519(&self.get_public()) } - /// Libra specific sign function that is capable of signing an arbitrary + /// Diem specific sign function that is capable of signing an arbitrary /// Serializable value. /// - /// NOTE: In Libra, we do not sign the raw bytes of a transaction, but + /// NOTE: In Diem, we do not sign the raw bytes of a transaction, but /// those raw bytes prefixed by a domain separation hash. /// Informally signed_bytes = sha3(domain_separator) || lcs_serialization_bytes /// /// The domain separator hash is derived automatically from a `#[derive(CryptoHasher, /// LCSCryptoHash)]` annotation, or can be declared manually in a process - /// described in `libra_crypto::hash`. + /// described in `diem_crypto::hash`. /// pub fn sign(&self, msg: &T) -> Ed25519Signature { self.private_key.sign(msg) @@ -136,9 +136,9 @@ pub struct KeyFactory { } impl KeyFactory { - const MNEMONIC_SALT_PREFIX: &'static [u8] = b"LIBRA WALLET: mnemonic salt prefix$"; - const MAIN_KEY_SALT: &'static [u8] = b"LIBRA WALLET: main key salt$"; - const INFO_PREFIX: &'static [u8] = b"LIBRA WALLET: derived key$"; + const MNEMONIC_SALT_PREFIX: &'static [u8] = b"DIEM WALLET: mnemonic salt prefix$"; + const MAIN_KEY_SALT: &'static [u8] = b"DIEM WALLET: main key salt$"; + const INFO_PREFIX: &'static [u8] = b"DIEM WALLET: derived key$"; /// Instantiate a new KeyFactor from a Seed, where the [u8; 64] raw bytes of the Seed are used /// to derive both the Main and its child keys pub fn new(seed: &Seed) -> Result { @@ -158,7 +158,7 @@ impl KeyFactory { /// /// Note that the function below adheres to [HKDF RFC 5869](https://tools.ietf.org/html/rfc5869). pub fn private_child(&self, child: ChildNumber) -> Result { - // application info in the HKDF context is defined as Libra derived key$child_number. + // application info in the HKDF context is defined as Diem derived key$child_number. let mut le_n = [0u8; 8]; LittleEndian::write_u64(&mut le_n, child.0); let mut info = KeyFactory::INFO_PREFIX.to_vec(); @@ -208,18 +208,18 @@ fn test_key_derivation() { mnemonic.to_string(), Mnemonic::mnemonic(&data).unwrap().to_string() ); - let seed = Seed::new(&mnemonic, "LIBRA"); + let seed = Seed::new(&mnemonic, "DIEM"); let key_factory = KeyFactory::new(&seed).unwrap(); assert_eq!( - "f3573b6dfee9718f6344971a7eb6c3521448b12fb893b77bdb7e8f99e3f7013f", + "66ae6b767defe3ea0c646f10bf31ad3b36f822064d3923adada7676703a350c0", hex::encode(&key_factory.main()) ); // Check child_0 key derivation. let child_private_0 = key_factory.private_child(ChildNumber(0)).unwrap(); assert_eq!( - "e6400d102987959a5165867583fdb1b4ae0ef6679a655d5a671483edee10f3f2", + "732bc883893c716f320c01864709ca9f16f8f30342a1de42144bfcc2ddb7af10", hex::encode(&child_private_0.private_key.to_bytes()[..]) ); @@ -233,7 +233,7 @@ fn test_key_derivation() { // Check child_1 key derivation. let child_private_1 = key_factory.private_child(ChildNumber(1)).unwrap(); assert_eq!( - "ea0d01cd35dada45246208dfea0be4a32a9fc63dffcacbf277b321dd2c9a4828", + "f6b472bd0941e315d3c34c3ac679d610d2b9e1abe85128752d04bb0f042f3391", hex::encode(&child_private_1.private_key.to_bytes()[..]) ); @@ -244,7 +244,7 @@ fn test_key_derivation() { // Check determinism, regenerate child_1, but by incrementing ChildNumber(0). let child_private_1_from_increment = key_factory.private_child(child_1_again).unwrap(); assert_eq!( - "ea0d01cd35dada45246208dfea0be4a32a9fc63dffcacbf277b321dd2c9a4828", + "f6b472bd0941e315d3c34c3ac679d610d2b9e1abe85128752d04bb0f042f3391", hex::encode(&child_private_1_from_increment.private_key.to_bytes()[..]) ); } diff --git a/testsuite/cli/libra-wallet/src/lib.rs b/testsuite/cli/diem-wallet/src/lib.rs similarity index 90% rename from testsuite/cli/libra-wallet/src/lib.rs rename to testsuite/cli/diem-wallet/src/lib.rs index a57de7cf13..a01cf8926b 100644 --- a/testsuite/cli/libra-wallet/src/lib.rs +++ b/testsuite/cli/diem-wallet/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cli/libra-wallet/src/mnemonic.rs b/testsuite/cli/diem-wallet/src/mnemonic.rs similarity index 98% rename from testsuite/cli/libra-wallet/src/mnemonic.rs rename to testsuite/cli/diem-wallet/src/mnemonic.rs index f07498d11b..a225fac262 100644 --- a/testsuite/cli/libra-wallet/src/mnemonic.rs +++ b/testsuite/cli/diem-wallet/src/mnemonic.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! The following is a slightly modified version of the file with the same name in the @@ -9,7 +9,7 @@ use crate::error::WalletError; use anyhow::Result; #[cfg(test)] -use libra_temppath::TempPath; +use diem_temppath::TempPath; use mirai_annotations::*; #[cfg(test)] use rand::rngs::OsRng; @@ -53,7 +53,7 @@ impl Mnemonic { let words: Vec<_> = s.split(' ').collect(); let len = words.len(); if len < 12 || len > 24 || len % 3 != 0 { - return Err(WalletError::LibraWalletGeneric( + return Err(WalletError::DiemWalletGeneric( "Mnemonic must have a word count of the following lengths: 24, 21, 18, 15, 12" .to_string(), ) @@ -67,7 +67,7 @@ impl Mnemonic { mnemonic.push(WORDS[idx]); bit_writer.write_u11(idx as u16); } else { - return Err(WalletError::LibraWalletGeneric( + return Err(WalletError::DiemWalletGeneric( "Mnemonic contains an unknown word".to_string(), ) .into()); @@ -85,7 +85,7 @@ impl Mnemonic { // Checksum validation. if *checksum != computed_checksum { return Err( - WalletError::LibraWalletGeneric("Mnemonic checksum failed".to_string()).into(), + WalletError::DiemWalletGeneric("Mnemonic checksum failed".to_string()).into(), ); } Ok(Mnemonic(mnemonic)) @@ -95,7 +95,7 @@ impl Mnemonic { pub fn mnemonic(entropy: &[u8]) -> Result { let len = entropy.len(); if len < 16 || len > 32 || len % 4 != 0 { - return Err(WalletError::LibraWalletGeneric( + return Err(WalletError::DiemWalletGeneric( "Entropy data for mnemonic must have one of the following byte lengths: \ 32, 28, 24, 20, 16" .to_string(), @@ -123,7 +123,7 @@ impl Mnemonic { /// Write mnemonic to output_file_path. pub fn write(&self, output_file_path: &Path) -> Result<()> { if output_file_path.exists() && !output_file_path.is_file() { - return Err(WalletError::LibraWalletGeneric(format!( + return Err(WalletError::DiemWalletGeneric(format!( "Output file {:?} for mnemonic backup is reserved", output_file_path.to_str(), )) @@ -140,7 +140,7 @@ impl Mnemonic { let mnemonic_string: String = fs::read_to_string(input_file_path)?; return Self::from(&mnemonic_string[..]); } - Err(WalletError::LibraWalletGeneric( + Err(WalletError::DiemWalletGeneric( "Input file for mnemonic backup does not exist".to_string(), ) .into()) diff --git a/testsuite/cli/libra-wallet/src/wallet_library.rs b/testsuite/cli/diem-wallet/src/wallet_library.rs similarity index 90% rename from testsuite/cli/libra-wallet/src/wallet_library.rs rename to testsuite/cli/diem-wallet/src/wallet_library.rs index 9a7a2fa872..86799668f8 100644 --- a/testsuite/cli/libra-wallet/src/wallet_library.rs +++ b/testsuite/cli/diem-wallet/src/wallet_library.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! The following document is a minimalist version of Libra Wallet. Note that this Wallet does +//! The following document is a minimalist version of Diem Wallet. Note that this Wallet does //! not promote security as the mnemonic is stored in unencrypted form. In future iterations, //! we will be releasing more robust Wallet implementations. It is our intention to present a -//! foundation that is simple to understand and incrementally improve the LibraWallet +//! foundation that is simple to understand and incrementally improve the DiemWallet //! implementation and it's security guarantees throughout testnet. For a more robust wallet //! reference, the authors suggest to audit the file of the same name in the rust-wallet crate. //! That file can be found here: @@ -18,8 +18,8 @@ use crate::{ mnemonic::Mnemonic, }; use anyhow::Result; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_types::{ +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_types::{ account_address::AccountAddress, transaction::{ authenticator::AuthenticationKey, helpers::TransactionSigner, RawTransaction, @@ -50,7 +50,7 @@ impl WalletLibrary { /// Constructor that instantiates a new WalletLibrary from Mnemonic pub fn new_from_mnemonic(mnemonic: Mnemonic) -> Self { - let seed = Seed::new(&mnemonic, "LIBRA"); + let seed = Seed::new(&mnemonic, "DIEM"); WalletLibrary { mnemonic, key_factory: KeyFactory::new(&seed).unwrap(), @@ -87,7 +87,7 @@ impl WalletLibrary { pub fn generate_addresses(&mut self, depth: u64) -> Result<()> { let current = self.key_leaf.0; if current > depth { - return Err(WalletError::LibraWalletGeneric( + return Err(WalletError::DiemWalletGeneric( "Addresses already generated up to the supplied depth".to_string(), ) .into()); @@ -121,7 +121,7 @@ impl WalletLibrary { { Ok((authentication_key, old_key_leaf)) } else { - Err(WalletError::LibraWalletGeneric( + Err(WalletError::DiemWalletGeneric( "This address is already in your wallet".to_string(), ) .into()) @@ -143,7 +143,7 @@ impl WalletLibrary { ret.push(*account_address); } None => { - return Err(WalletError::LibraWalletGeneric(format!( + return Err(WalletError::DiemWalletGeneric(format!( "Child num {} not exist while depth is {}", i, self.addr_map.len() @@ -155,7 +155,7 @@ impl WalletLibrary { Ok(ret) } - /// Simple public function that allows to sign a Libra RawTransaction with the PrivateKey + /// Simple public function that allows to sign a Diem RawTransaction with the PrivateKey /// associated to a particular AccountAddress. If the PrivateKey associated to an /// AccountAddress is not contained in the addr_map, then this function will return an Error pub fn sign_txn(&self, txn: RawTransaction) -> Result { @@ -168,7 +168,7 @@ impl WalletLibrary { signature, )) } else { - Err(WalletError::LibraWalletGeneric( + Err(WalletError::DiemWalletGeneric( "Well, that address is nowhere to be found... This is awkward".to_string(), ) .into()) @@ -180,7 +180,7 @@ impl WalletLibrary { if let Some(child) = self.addr_map.get(&address) { Ok(self.key_factory.private_child(*child)?.get_private_key()) } else { - Err(WalletError::LibraWalletGeneric("missing address".to_string()).into()) + Err(WalletError::DiemWalletGeneric("missing address".to_string()).into()) } } @@ -192,7 +192,7 @@ impl WalletLibrary { .private_child(*child)? .get_authentication_key()) } else { - Err(WalletError::LibraWalletGeneric("missing address".to_string()).into()) + Err(WalletError::DiemWalletGeneric("missing address".to_string()).into()) } } } diff --git a/testsuite/cli/libra-wallet/README.md b/testsuite/cli/libra-wallet/README.md deleted file mode 100644 index c4cecf514f..0000000000 --- a/testsuite/cli/libra-wallet/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Libra Wallet - -Libra Wallet is a pure-rust implementation of hierarchical key derivation for SecretKey material in Libra. - -# Overview - -`libra-wallet` is a library providing hierarchical key derivation for SecretKey material in Libra. The following crate is largely inspired by [`rust-wallet`](https://github.com/rust-bitcoin/rust-wallet) with minor modifications to the key derivation function. Note that Libra makes use of the ed25519 Edwards Curve Digital Signature Algorithm (EdDSA) over the Edwards Cruve cruve25519. Therefore, BIP32-like PublicKey derivation is not possible without falling back to a traditional non-deterministic Schnorr signature algorithm. For this reason, we modified the key derivation function to a simpler alternative. - -The `internal_macros.rs` is taken from [`rust-bitcoin`](https://github.com/rust-bitcoin/rust-bitcoin/blob/master/src/internal_macros.rs) and `mnemonic.rs` is a slightly modified version of the file with the same name from [`rust-wallet`](https://github.com/rust-bitcoin/rust-wallet/blob/master/src/mnemonic.rs), while `error.rs`, `key_factor.rs` and `wallet_library.rs` are modified to present a minimalist wallet library for the Libra Client. Note that `mnemonic.rs` from `rust-wallet` adheres to the [`BIP39`](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) spec. - -# Implementation Details - -`key_factory.rs` implements the key derivation functions. The `KeyFactory` struct holds the Master Secret Material used to derive the Child Key(s). The constructor of a particular `KeyFactory` accepts a `[u8; 64]` `Seed` and computes both the `Master` Secret Material as well as the `ChainCode` from the HMAC-512 of the `Seed`. Finally, the `KeyFactory` allows to derive a child PrivateKey at a particular `ChildNumber` from the Master and ChainCode, as well as the `ChildNumber`'s u64 member. - -`wallet_library.rs` is a thin wrapper around `KeyFactory` which enables to keep track of Libra `AccountAddresses` and the information required to restore the current wallet from a `Mnemonic` backup. The `WalletLibrary` struct includes constructors that allow to generate a new `WalletLibrary` from OS randomness or generate a `WalletLibrary` from an instance of `Mnemonic`. `WalletLibrary` also allows to generate new addresses in-order or out-of-order via the `fn new_address` and `fn new_address_at_child_number`. Finally, `WalletLibrary` is capable of signing a Libra `RawTransaction` with the PrivateKey associated to the `AccountAddress` submitted. Note that in the future, Libra will support rotating authentication keys and therefore, `WalletLibrary` will need to understand more general inputs when mapping `AuthenticationKeys` to `PrivateKeys` diff --git a/testsuite/cli/libra-wallet/src/error.rs b/testsuite/cli/libra-wallet/src/error.rs deleted file mode 100644 index 04095be07b..0000000000 --- a/testsuite/cli/libra-wallet/src/error.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) The Libra Core Contributors -// SPDX-License-Identifier: Apache-2.0 - -use thiserror::Error; - -/// Libra Wallet Error is a convenience enum for generating arbitrary WalletErrors. Currently, only -/// the LibraWalletGeneric error is being used, but there are plans to add more specific errors as -/// the Libra Wallet matures -#[derive(Debug, Error)] -pub enum WalletError { - /// generic error message - #[error("{0}")] - LibraWalletGeneric(String), -} diff --git a/testsuite/cli/src/account_commands.rs b/testsuite/cli/src/account_commands.rs index be762ca57c..9656c56af7 100644 --- a/testsuite/cli/src/account_commands.rs +++ b/testsuite/cli/src/account_commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -64,7 +64,7 @@ impl Command for AccountCommandRecoverWallet { "" } fn get_description(&self) -> &'static str { - "Recover Libra wallet from the file path" + "Recover Diem wallet from the file path" } fn execute(&self, client: &mut ClientProxy, params: &[&str]) { println!(">> Recovering Wallet"); @@ -78,7 +78,7 @@ impl Command for AccountCommandRecoverWallet { println!("#{} address {}", data.index, hex::encode(data.address)); } } - Err(e) => report_error("Error recovering Libra wallet", e), + Err(e) => report_error("Error recovering Diem wallet", e), } } } @@ -94,10 +94,10 @@ impl Command for AccountCommandWriteRecovery { "" } fn get_description(&self) -> &'static str { - "Save Libra wallet mnemonic recovery seed to disk" + "Save Diem wallet mnemonic recovery seed to disk" } fn execute(&self, client: &mut ClientProxy, params: &[&str]) { - println!(">> Saving Libra wallet mnemonic recovery seed to disk"); + println!(">> Saving Diem wallet mnemonic recovery seed to disk"); match client.write_recovery(¶ms) { Ok(_) => println!("Saved mnemonic seed to disk"), Err(e) => report_error("Error writing mnemonic recovery seed to file", e), diff --git a/testsuite/cli/src/client_proxy.rs b/testsuite/cli/src/client_proxy.rs index 2e1e992a33..bc4c14eb23 100644 --- a/testsuite/cli/src/client_proxy.rs +++ b/testsuite/cli/src/client_proxy.rs @@ -1,28 +1,28 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ commands::{is_address, is_authentication_key}, - libra_client::LibraClient, + diem_client::DiemClient, AccountData, AccountStatus, }; use anyhow::{bail, ensure, format_err, Error, Result}; use compiled_stdlib::StdLibOptions; use compiler::Compiler; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, test_utils::KeyPair, }; -use libra_json_rpc_client::async_client::{types as jsonrpc, WaitForTransactionError}; -use libra_logger::prelude::{error, info}; -use libra_temppath::TempPath; -use libra_types::{ +use diem_json_rpc_client::async_client::{types as jsonrpc, WaitForTransactionError}; +use diem_logger::prelude::{error, info}; +use diem_temppath::TempPath; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::{ - from_currency_code_string, libra_root_address, testnet_dd_account_address, + diem_root_address, from_currency_code_string, testnet_dd_account_address, treasury_compliance_account_address, type_tag_for_currency_code, - ACCOUNT_RECEIVED_EVENT_PATH, ACCOUNT_SENT_EVENT_PATH, COIN1_NAME, LBR_NAME, + ACCOUNT_RECEIVED_EVENT_PATH, ACCOUNT_SENT_EVENT_PATH, XDX_NAME, XUS_NAME, }, account_state::AccountState, chain_id::ChainId, @@ -35,7 +35,7 @@ use libra_types::{ }, waypoint::Waypoint, }; -use libra_wallet::{io_utils, WalletLibrary}; +use diem_wallet::{io_utils, WalletLibrary}; use num_traits::{ cast::{FromPrimitive, ToPrimitive}, identities::Zero, @@ -95,18 +95,18 @@ pub struct IndexAndSequence { /// Proxy handling CLI commands/inputs. pub struct ClientProxy { - /// chain ID of the Libra network this client is interacting with + /// chain ID of the Diem network this client is interacting with pub chain_id: ChainId, /// client for admission control interface. - pub client: LibraClient, + pub client: DiemClient, /// Created accounts. pub accounts: Vec, /// Address to account_ref_id map. address_to_ref_id: HashMap, /// Host that operates a faucet service faucet_url: Url, - /// Account used for Libra Root operations (e.g., adding a new transaction script) - pub libra_root_account: Option, + /// Account used for Diem Root operations (e.g., adding a new transaction script) + pub diem_root_account: Option, /// Account used for Treasury Compliance operations pub tc_account: Option, /// Account used for "minting" operations @@ -127,7 +127,7 @@ impl ClientProxy { pub fn new( chain_id: ChainId, url: &str, - libra_root_account_file: &str, + diem_root_account_file: &str, tc_account_file: &str, testnet_designated_dealer_account_file: &str, sync_on_wallet_recovery: bool, @@ -138,22 +138,22 @@ impl ClientProxy { ) -> Result { // fail fast if url is not valid let url = Url::parse(url)?; - let client = LibraClient::new(url.clone(), waypoint)?; + let client = DiemClient::new(url.clone(), waypoint)?; let accounts = vec![]; - let libra_root_account = if libra_root_account_file.is_empty() { + let diem_root_account = if diem_root_account_file.is_empty() { None } else { - let libra_root_account_key = generate_key::load_key(libra_root_account_file); - let libra_root_account_data = Self::get_account_data_from_address( + let diem_root_account_key = generate_key::load_key(diem_root_account_file); + let diem_root_account_data = Self::get_account_data_from_address( &client, - libra_root_address(), + diem_root_address(), true, - Some(KeyPair::from(libra_root_account_key)), + Some(KeyPair::from(diem_root_account_key)), None, )?; - Some(libra_root_account_data) + Some(diem_root_account_data) }; let tc_account = if tc_account_file.is_empty() { @@ -203,10 +203,10 @@ impl ClientProxy { accounts, address_to_ref_id, faucet_url, - libra_root_account, + diem_root_account, tc_account, testnet_designated_dealer_account: dd_account, - wallet: Self::get_libra_wallet(mnemonic_file)?, + wallet: Self::get_diem_wallet(mnemonic_file)?, sync_on_wallet_recovery, temp_files: vec![], quiet_wait, @@ -263,12 +263,12 @@ impl ClientProxy { } } - if let Some(libra_root_account) = &self.libra_root_account { + if let Some(diem_root_account) = &self.diem_root_account { println!( "AssocRoot account address: {}, sequence_number: {}, status: {:?}", - hex::encode(&libra_root_account.address), - libra_root_account.sequence_number, - libra_root_account.status, + hex::encode(&diem_root_account.address), + diem_root_account.sequence_number, + diem_root_account.status, ); } if let Some(tc_account) = &self.tc_account { @@ -565,17 +565,17 @@ impl ClientProxy { ); let script_body = { let code = " - import 0x1.LibraTransactionPublishingOption; + import 0x1.DiemTransactionPublishingOption; main(account: &signer) { - LibraTransactionPublishingOption.set_open_script(move(account)); + DiemTransactionPublishingOption.set_open_script(move(account)); return; } "; let compiler = Compiler { - address: libra_types::account_config::CORE_CODE_ADDRESS, + address: diem_types::account_config::CORE_CODE_ADDRESS, extra_deps: vec![], ..Compiler::default() }; @@ -583,8 +583,8 @@ impl ClientProxy { .into_script_blob("file_name", code) .expect("Failed to compile") }; - match self.libra_root_account { - Some(_) => self.association_transaction_with_local_libra_root_account( + match self.diem_root_account { + Some(_) => self.association_transaction_with_local_diem_root_account( TransactionPayload::Script(Script::new(script_body, vec![], vec![])), is_blocking, ), @@ -607,12 +607,12 @@ impl ClientProxy { space_delim_strings.len() == 2, "Invalid number of arguments for adding hash to script whitelist" ); - match self.libra_root_account { - Some(_) => self.association_transaction_with_local_libra_root_account( + match self.diem_root_account { + Some(_) => self.association_transaction_with_local_diem_root_account( TransactionPayload::Script( transaction_builder::encode_add_to_script_allow_list_script( hex::decode(space_delim_strings[1])?, - self.libra_root_account.as_ref().unwrap().sequence_number, + self.diem_root_account.as_ref().unwrap().sequence_number, ), ), is_blocking, @@ -621,29 +621,27 @@ impl ClientProxy { } } - /// Modify the stored LibraVersion on chain. - pub fn change_libra_version( + /// Modify the stored DiemVersion on chain. + pub fn change_diem_version( &mut self, space_delim_strings: &[&str], is_blocking: bool, ) -> Result<()> { ensure!( - space_delim_strings[0] == "change_libra_version" || space_delim_strings[0] == "v", - "inconsistent command '{}' for change_libra_version", + space_delim_strings[0] == "change_diem_version" || space_delim_strings[0] == "v", + "inconsistent command '{}' for change_diem_version", space_delim_strings[0] ); ensure!( space_delim_strings.len() == 2, - "Invalid number of arguments for changing libra_version" + "Invalid number of arguments for changing diem_version" ); - match self.libra_root_account { - Some(_) => self.association_transaction_with_local_libra_root_account( - TransactionPayload::Script( - transaction_builder::encode_update_libra_version_script( - self.libra_root_account.as_ref().unwrap().sequence_number, - space_delim_strings[1].parse::().unwrap(), - ), - ), + match self.diem_root_account { + Some(_) => self.association_transaction_with_local_diem_root_account( + TransactionPayload::Script(transaction_builder::encode_update_diem_version_script( + self.diem_root_account.as_ref().unwrap().sequence_number, + space_delim_strings[1].parse::().unwrap(), + )), is_blocking, ), None => unimplemented!(), @@ -666,8 +664,8 @@ impl ClientProxy { "Invalid number of arguments for upgrading_stdlib_transaction" ); - match self.libra_root_account { - Some(_) => self.association_transaction_with_local_libra_root_account( + match self.diem_root_account { + Some(_) => self.association_transaction_with_local_diem_root_account( TransactionPayload::WriteSet(WriteSetPayload::Direct( transaction_builder::encode_stdlib_upgrade_transaction(StdLibOptions::Fresh), )), @@ -819,7 +817,7 @@ impl ClientProxy { sender_sequence_number, max_gas_amount.unwrap_or(MAX_GAS_AMOUNT), gas_unit_price.unwrap_or(GAS_UNIT_PRICE), - gas_currency_code.unwrap_or_else(|| COIN1_NAME.to_owned()), + gas_currency_code.unwrap_or_else(|| XUS_NAME.to_owned()), TX_EXPIRATION, self.chain_id, )) @@ -1285,9 +1283,9 @@ impl ClientProxy { /// Update account seq fn update_account_seq(&mut self, address: &AccountAddress, seq: u64) { - if let Some(libra_root_account) = &mut self.libra_root_account { - if &libra_root_account.address == address { - libra_root_account.sequence_number = seq; + if let Some(diem_root_account) = &mut self.diem_root_account { + if &diem_root_account.address == address { + diem_root_account.sequence_number = seq; } } if let Some(tc_account) = &mut self.tc_account { @@ -1321,7 +1319,7 @@ impl ClientProxy { /// Sync with validator for account sequence number in case it is already created on chain. /// This assumes we have a very low probability of mnemonic word conflict. fn get_account_data_from_address( - client: &LibraClient, + client: &DiemClient, address: AccountAddress, sync_with_validator: bool, key_pair: Option>, @@ -1355,7 +1353,7 @@ impl ClientProxy { }) } - fn get_libra_wallet(mnemonic_file: Option) -> Result { + fn get_diem_wallet(mnemonic_file: Option) -> Result { let wallet_recovery_file_path = if let Some(input_mnemonic_word) = mnemonic_file { Path::new(&input_mnemonic_word).to_path_buf() } else { @@ -1412,16 +1410,16 @@ impl ClientProxy { Ok(auth_key) } - fn association_transaction_with_local_libra_root_account( + fn association_transaction_with_local_diem_root_account( &mut self, payload: TransactionPayload, is_blocking: bool, ) -> Result<()> { ensure!( - self.libra_root_account.is_some(), + self.diem_root_account.is_some(), "No assoc root account loaded" ); - let sender = self.libra_root_account.as_ref().unwrap(); + let sender = self.diem_root_account.as_ref().unwrap(); let txn = self.create_txn_to_submit(payload, sender, None, None, None)?; self.submit_and_wait(&txn, is_blocking)?; @@ -1509,7 +1507,7 @@ impl ClientProxy { scaling_factor: i64, fractional_part: i64, ) -> Result { - ensure!(!input.is_empty(), "Empty input not allowed for libra unit"); + ensure!(!input.is_empty(), "Empty input not allowed for diem unit"); let max_value = Decimal::from_u64(std::u64::MAX).unwrap() / Decimal::new(scaling_factor, 0); let scale = input.find('.').unwrap_or(input.len() - 1); let digits_after_decimal = input @@ -1552,10 +1550,10 @@ impl ClientProxy { input: &str, currency: &str, ) -> Result { - ensure!(!input.is_empty(), "Empty input not allowed for libra unit"); + ensure!(!input.is_empty(), "Empty input not allowed for diem unit"); ensure!( - currency != LBR_NAME, - "LBR not allowed to be minted or transferred. Use Coin1 instead" + currency != XDX_NAME, + "XDX not allowed to be minted or transferred. Use XUS instead" ); // This is not supposed to panic as it is used as constant here. let currencies_info = self.client.get_currency_info()?; @@ -1595,7 +1593,7 @@ impl ClientProxy { sender_account.sequence_number, max_gas_amount.unwrap_or(MAX_GAS_AMOUNT), gas_unit_price.unwrap_or(GAS_UNIT_PRICE), - gas_currency_code.unwrap_or_else(|| COIN1_NAME.to_owned()), + gas_currency_code.unwrap_or_else(|| XUS_NAME.to_owned()), TX_EXPIRATION, self.chain_id, ) @@ -1642,12 +1640,12 @@ impl fmt::Display for AccountEntry { #[cfg(test)] mod tests { use crate::client_proxy::{parse_bool, AddressAndIndex, ClientProxy}; - use libra_temppath::TempPath; - use libra_types::{ + use diem_temppath::TempPath; + use diem_types::{ chain_id::ChainId, ledger_info::LedgerInfo, on_chain_config::ValidatorSet, waypoint::Waypoint, }; - use libra_wallet::io_utils; + use diem_wallet::io_utils; use proptest::prelude::*; fn generate_accounts_from_wallet(count: usize) -> (ClientProxy, Vec) { @@ -1700,7 +1698,7 @@ mod tests { } #[test] - fn test_micro_libra_conversion() { + fn test_micro_diem_conversion() { assert!(ClientProxy::convert_to_scaled_representation("", 1_000_000, 1_000_000).is_err()); assert!( ClientProxy::convert_to_scaled_representation("-11", 1_000_000, 1_000_000).is_err() @@ -1720,7 +1718,7 @@ mod tests { assert!(ClientProxy::convert_to_scaled_representation("1", 1_000_000, 1_000_000).is_ok()); assert!(ClientProxy::convert_to_scaled_representation("0.1", 1_000_000, 1_000_000).is_ok()); assert!(ClientProxy::convert_to_scaled_representation("1.1", 1_000_000, 1_000_000).is_ok()); - // Max of micro libra is u64::MAX (18446744073709551615). + // Max of micro diem is u64::MAX (18446744073709551615). assert!(ClientProxy::convert_to_scaled_representation( "18446744073709.551615", 1_000_000, @@ -1795,16 +1793,16 @@ mod tests { proptest! { // Proptest is used to verify that the conversion will not panic with random input. #[test] - fn test_micro_libra_conversion_random_string(req in any::()) { + fn test_micro_diem_conversion_random_string(req in any::()) { let _res = ClientProxy::convert_to_scaled_representation(&req, 1_000_000, 1_000_000); } #[test] - fn test_micro_libra_conversion_random_f64(req in any::()) { + fn test_micro_diem_conversion_random_f64(req in any::()) { let req_str = req.to_string(); let _res = ClientProxy::convert_to_scaled_representation(&req_str, 1_000_000, 1_000_000); } #[test] - fn test_micro_libra_conversion_random_u64(req in any::()) { + fn test_micro_diem_conversion_random_u64(req in any::()) { let req_str = req.to_string(); let _res = ClientProxy::convert_to_scaled_representation(&req_str, 1_000_000, 1_000_000); } diff --git a/testsuite/cli/src/commands.rs b/testsuite/cli/src/commands.rs index 6e6b2ce8cb..01ca826b2b 100644 --- a/testsuite/cli/src/commands.rs +++ b/testsuite/cli/src/commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -7,7 +7,7 @@ use crate::{ transfer_commands::TransferCommand, }; use anyhow::Error; -use libra_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; +use diem_types::{account_address::AccountAddress, transaction::authenticator::AuthenticationKey}; use std::{collections::HashMap, sync::Arc}; /// Print the error and bump up error counter. @@ -26,12 +26,12 @@ pub fn debug_format_cmd(cmd: &str) -> bool { cmd.ends_with('?') } -/// Check whether the input string is a valid libra address. +/// Check whether the input string is a valid diem address. pub fn is_address(data: &str) -> bool { hex::decode(data).map_or(false, |vec| vec.len() == AccountAddress::LENGTH) } -/// Check whether the input string is a valid libra authentication key. +/// Check whether the input string is a valid diem authentication key. pub fn is_authentication_key(data: &str) -> bool { hex::decode(data).map_or(false, |vec| vec.len() == AuthenticationKey::LENGTH) } diff --git a/testsuite/cli/src/counters.rs b/testsuite/cli/src/counters.rs index f4332261b7..74d825bfc4 100644 --- a/testsuite/cli/src/counters.rs +++ b/testsuite/cli/src/counters.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_metrics::{register_int_counter, IntCounter}; +use diem_metrics::{register_int_counter, IntCounter}; use once_cell::sync::Lazy; // Client counters diff --git a/testsuite/cli/src/dev_commands.rs b/testsuite/cli/src/dev_commands.rs index 48c02bc482..5d4c2e6b15 100644 --- a/testsuite/cli/src/dev_commands.rs +++ b/testsuite/cli/src/dev_commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ commands::{subcommand_execute, Command}, }; use chrono::{DateTime, Utc}; -use libra_types::waypoint::Waypoint; +use diem_types::waypoint::Waypoint; use std::time::{Duration, UNIX_EPOCH}; /// Major command for account related operations. @@ -26,7 +26,7 @@ impl Command for DevCommand { Box::new(DevCommandExecute {}), Box::new(DevCommandUpgradeStdlib {}), Box::new(DevCommandGenWaypoint {}), - Box::new(DevCommandChangeLibraVersion {}), + Box::new(DevCommandChangeDiemVersion {}), Box::new(DevCommandEnableCustomScript {}), Box::new(AddToScriptAllowList {}), ]; @@ -175,19 +175,19 @@ impl Command for AddToScriptAllowList { } } -pub struct DevCommandChangeLibraVersion {} +pub struct DevCommandChangeDiemVersion {} -impl Command for DevCommandChangeLibraVersion { +impl Command for DevCommandChangeDiemVersion { fn get_aliases(&self) -> Vec<&'static str> { - vec!["change_libra_version", "v"] + vec!["change_diem_version", "v"] } fn get_params_help(&self) -> &'static str { - "" + "" } fn get_description(&self) -> &'static str { - "Change the libra_version stored on chain" + "Change the diem_version stored on chain" } fn execute(&self, client: &mut ClientProxy, params: &[&str]) { @@ -195,7 +195,7 @@ impl Command for DevCommandChangeLibraVersion { println!("Invalid number of arguments"); return; } - match client.change_libra_version(params, true) { + match client.change_diem_version(params, true) { Ok(_) => println!("Successfully finished execution"), Err(e) => println!("{}", e), } diff --git a/testsuite/cli/src/libra_client.rs b/testsuite/cli/src/diem_client.rs similarity index 95% rename from testsuite/cli/src/libra_client.rs rename to testsuite/cli/src/diem_client.rs index 7901577efb..7d19540894 100644 --- a/testsuite/cli/src/libra_client.rs +++ b/testsuite/cli/src/diem_client.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, ensure, Result}; -use libra_json_rpc_client::async_client::{ +use diem_json_rpc_client::async_client::{ types as jsonrpc, Client, Retry, WaitForTransactionError, }; -use libra_logger::prelude::info; -use libra_types::{ +use diem_logger::prelude::info; +use diem_types::{ access_path::AccessPath, account_address::AccountAddress, account_config::{ACCOUNT_RECEIVED_EVENT_PATH, ACCOUNT_SENT_EVENT_PATH}, @@ -20,21 +20,21 @@ use libra_types::{ use reqwest::Url; use std::time::Duration; -/// A client connection to an AdmissionControl (AC) service. `LibraClient` also +/// A client connection to an AdmissionControl (AC) service. `DiemClient` also /// handles verifying the server's responses, retrying on non-fatal failures, and /// ratcheting our latest verified state, which includes the latest verified /// version and latest verified epoch change ledger info. /// /// ### Note /// -/// `LibraClient` will reject out-of-date responses. For example, this can happen if +/// `DiemClient` will reject out-of-date responses. For example, this can happen if /// /// 1. We make a request to the remote AC service. /// 2. The remote service crashes and it forgets the most recent state or an /// out-of-date replica takes its place. /// 3. We make another request to the remote AC service. In this case, the remote /// AC will be behind us and we will reject their response as stale. -pub struct LibraClient { +pub struct DiemClient { client: Client, /// The latest verified chain state. trusted_state: TrustedState, @@ -42,17 +42,17 @@ pub struct LibraClient { /// about our local [`Waypoint`] and have not yet ratcheted to the remote's /// latest state. latest_epoch_change_li: Option, - runtime: libra_infallible::Mutex, + runtime: diem_infallible::Mutex, } -impl LibraClient { +impl DiemClient { /// Construct a new Client instance. pub fn new(url: Url, waypoint: Waypoint) -> Result { let initial_trusted_state = TrustedState::from(waypoint); let client = Client::from_url(url, Retry::default())?; - Ok(LibraClient { - runtime: libra_infallible::Mutex::new( + Ok(DiemClient { + runtime: diem_infallible::Mutex::new( tokio::runtime::Builder::new() .thread_name("cli-client") .threaded_scheduler() diff --git a/testsuite/cli/src/info_commands.rs b/testsuite/cli/src/info_commands.rs index 38d9cda45f..225152396b 100644 --- a/testsuite/cli/src/info_commands.rs +++ b/testsuite/cli/src/info_commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{client_proxy::ClientProxy, commands::Command}; diff --git a/testsuite/cli/src/lib.rs b/testsuite/cli/src/lib.rs index a695300949..a12d92c093 100644 --- a/testsuite/cli/src/lib.rs +++ b/testsuite/cli/src/lib.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] #![deny(missing_docs)] -//! Libra Client +//! Diem Client //! -//! Client (binary) is the CLI tool to interact with Libra validator. +//! Client (binary) is the CLI tool to interact with Diem validator. //! It supposes all public APIs. -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, test_utils::KeyPair, traits::ValidCryptoMaterialStringExt, }; -use libra_types::account_address::AccountAddress; +use diem_types::account_address::AccountAddress; use serde::{Deserialize, Serialize}; mod account_commands; @@ -24,9 +24,9 @@ pub mod client_proxy; pub mod commands; mod counters; mod dev_commands; -mod info_commands; /// Client wrapper to connect to validator. -mod libra_client; +mod diem_client; +mod info_commands; mod query_commands; mod transfer_commands; diff --git a/testsuite/cli/src/main.rs b/testsuite/cli/src/main.rs index e0648b966b..030ac4667a 100644 --- a/testsuite/cli/src/main.rs +++ b/testsuite/cli/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,7 +11,7 @@ use cli::{ client_proxy::ClientProxy, commands::{get_commands, parse_cmd, report_error, Command}, }; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use rustyline::{config::CompletionType, error::ReadlineError, Config, Editor}; use std::{ str::FromStr, @@ -21,9 +21,9 @@ use structopt::StructOpt; #[derive(Debug, StructOpt)] #[structopt( - name = "Libra Client", - author = "The Libra Association", - about = "Libra client to connect to a specific validator" + name = "Diem Client", + author = "The Diem Association", + about = "Diem client to connect to a specific validator" )] struct Args { /// Chain ID of the network this client is connecting to @@ -53,7 +53,7 @@ struct Args { #[structopt(short = "f", long)] pub faucet_url: Option, /// File location from which to load mnemonic word for user account address/key generation. - /// If not passed, a new mnemonic file will be generated by libra-wallet in the current + /// If not passed, a new mnemonic file will be generated by diem-wallet in the current /// directory. #[structopt(short = "n", long)] pub mnemonic_file: Option, @@ -83,9 +83,9 @@ struct Args { fn main() { let args = Args::from_args(); - let mut logger = ::libra_logger::Logger::new(); + let mut logger = ::diem_logger::Logger::new(); if !args.verbose { - logger.level(::libra_logger::Level::Warn); + logger.level(::diem_logger::Level::Warn); } logger.init(); crash_handler::setup_panic_handler(); @@ -156,7 +156,7 @@ fn main() { println!("#{} address {}", data.index, hex::encode(data.address)); } } - Err(e) => report_error("Error recovering Libra wallet", e), + Err(e) => report_error("Error recovering Diem wallet", e), } } print_help(&cli_info, &commands); @@ -169,7 +169,7 @@ fn main() { .build(); let mut rl = Editor::<()>::with_config(config); loop { - let readline = rl.readline("libra% "); + let readline = rl.readline("diem% "); match readline { Ok(line) => { let params = parse_cmd(&line); diff --git a/testsuite/cli/src/query_commands.rs b/testsuite/cli/src/query_commands.rs index d5c0597918..1ecb92b66b 100644 --- a/testsuite/cli/src/query_commands.rs +++ b/testsuite/cli/src/query_commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/testsuite/cli/src/transfer_commands.rs b/testsuite/cli/src/transfer_commands.rs index edb933457a..3d4c0bdafc 100644 --- a/testsuite/cli/src/transfer_commands.rs +++ b/testsuite/cli/src/transfer_commands.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,7 +16,7 @@ impl Command for TransferCommand { fn get_params_help(&self) -> &'static str { "\n\t| \ | \ - [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 400_000)] \ + [gas_unit_price_in_micro_diems (default=0)] [max_gas_amount_in_micro_diems (default 400_000)] \ Suffix 'b' is for blocking. " } fn get_description(&self) -> &'static str { diff --git a/testsuite/cluster-test/Cargo.toml b/testsuite/cluster-test/Cargo.toml index 805681d378..9323f8cccb 100644 --- a/testsuite/cluster-test/Cargo.toml +++ b/testsuite/cluster-test/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "cluster-test" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra cluster test" +authors = ["Diem Association "] +description = "Diem cluster test" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -31,30 +31,30 @@ chrono = "0.4.19" toml = { version = "0.5.7", default-features = false } debug-interface = { path = "../../common/debug-interface", version = "0.1.0"} -libra-json-rpc-client = { path = "../../client/json-rpc", version = "0.1.0"} -libra-retrier = { path = "../../common/retrier", version = "0.1.0" } +diem-json-rpc-client = { path = "../../client/json-rpc", version = "0.1.0"} +diem-retrier = { path = "../../common/retrier", version = "0.1.0" } num_cpus = "1.13.0" consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0" } generate-key = { path = "../../config/generate-key", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-genesis-tool = { path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-management = { path = "../../config/management", version = "0.1.0", features = ["testing"] } -libra-mempool = { path = "../../mempool", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-network-address-encryption = { path = "../../config/management/network-address-encryption", version = "0.1.0" } -libra-node = { path = "../../libra-node", version = "0.1.0" } -libra-operational-tool = {path = "../../config/management/operational", version = "0.1.0", features = ["testing"] } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } -libra-swarm = { path = "../libra-swarm", version = "0.1.0" } -libra-trace = {path = "../../common/trace", version = "0.1.0"} -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-genesis-tool = { path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-management = { path = "../../config/management", version = "0.1.0", features = ["testing"] } +diem-mempool = { path = "../../mempool", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-network-address-encryption = { path = "../../config/management/network-address-encryption", version = "0.1.0" } +diem-node = { path = "../../diem-node", version = "0.1.0" } +diem-operational-tool = {path = "../../config/management/operational", version = "0.1.0", features = ["testing"] } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } +diem-swarm = { path = "../diem-swarm", version = "0.1.0" } +diem-trace = {path = "../../common/trace", version = "0.1.0"} +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } network = { path = "../../network", version = "0.1.0" } network-builder = { path = "../../network/builder", version = "0.1.0" } seed-peer-generator = { path = "../../config/seed-peer-generator", version = "0.1.0" } diff --git a/testsuite/cluster-test/src/atomic_histogram.rs b/testsuite/cluster-test/src/atomic_histogram.rs index d7efda0b36..0c4fc95f26 100644 --- a/testsuite/cluster-test/src/atomic_histogram.rs +++ b/testsuite/cluster-test/src/atomic_histogram.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/aws.rs b/testsuite/cluster-test/src/aws.rs index 67b0e5c209..fe2ba914b5 100644 --- a/testsuite/cluster-test/src/aws.rs +++ b/testsuite/cluster-test/src/aws.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use anyhow::{anyhow, bail, format_err, Result}; -use libra_logger::{info, warn}; +use diem_logger::{info, warn}; use rusoto_autoscaling::{ AutoScalingGroupNamesType, Autoscaling, AutoscalingClient, SetDesiredCapacityType, }; @@ -39,7 +39,7 @@ pub async fn set_asg_size( let dispatcher = rusoto_core::HttpClient::new() .map_err(|e| anyhow!("Failed to create request dispatcher, met Error:{}", e))?; let asc = AutoscalingClient::new_with(dispatcher, credentials_provider, Region::UsWest2); - libra_retrier::retry_async(libra_retrier::fixed_retry_strategy(10_000, 60), || { + diem_retrier::retry_async(diem_retrier::fixed_retry_strategy(10_000, 60), || { let asc = asc.clone(); let set_desired_capacity_type = set_desired_capacity_type.clone(); Box::pin(async move { @@ -55,7 +55,7 @@ pub async fn set_asg_size( if !wait_for_completion { return Ok(()); } - libra_retrier::retry_async(libra_retrier::fixed_retry_strategy(10_000, 60), || { + diem_retrier::retry_async(diem_retrier::fixed_retry_strategy(10_000, 60), || { let asc_clone = asc.clone(); Box::pin(async move { let mut total = 0; diff --git a/testsuite/cluster-test/src/cluster.rs b/testsuite/cluster-test/src/cluster.rs index fbe7e4026e..3aaa4d685e 100644 --- a/testsuite/cluster-test/src/cluster.rs +++ b/testsuite/cluster-test/src/cluster.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use crate::instance::{Instance, ValidatorGroup}; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, test_utils::KeyPair, Uniform, }; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use rand::prelude::*; use reqwest::Client; diff --git a/testsuite/cluster-test/src/cluster_builder.rs b/testsuite/cluster-test/src/cluster_builder.rs index ec95331d6b..fef2b727b7 100644 --- a/testsuite/cluster-test/src/cluster_builder.rs +++ b/testsuite/cluster-test/src/cluster_builder.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -17,26 +17,26 @@ use crate::{ }, }; use anyhow::{format_err, Result}; +use diem_logger::info; use futures::future::try_join_all; -use libra_logger::info; use std::{fs::File, io::Write, path::Path}; use structopt::StructOpt; use consensus_types::safety_data::SafetyData; -use libra_genesis_tool::layout::Layout; -use libra_global_constants::{ - CONSENSUS_KEY, EXECUTION_KEY, FULLNODE_NETWORK_KEY, GENESIS_WAYPOINT, LIBRA_ROOT_KEY, +use diem_genesis_tool::layout::Layout; +use diem_global_constants::{ + CONSENSUS_KEY, DIEM_ROOT_KEY, EXECUTION_KEY, FULLNODE_NETWORK_KEY, GENESIS_WAYPOINT, OPERATOR_KEY, OWNER_KEY, SAFETY_DATA, TREASURY_COMPLIANCE_KEY, VALIDATOR_NETWORK_ADDRESS_KEYS, VALIDATOR_NETWORK_KEY, WAYPOINT, }; -use libra_network_address::NetworkAddress; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage, VaultStorage}; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_network_address::NetworkAddress; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage, VaultStorage}; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use std::str::FromStr; const VAULT_TOKEN: &str = "root"; const VAULT_PORT: u32 = 8200; -const LIBRA_ROOT_NS: &str = "val-0"; +const DIEM_ROOT_NS: &str = "val-0"; const VAULT_BACKEND: &str = "vault"; const GENESIS_PATH: &str = "/tmp/genesis.blob"; @@ -250,7 +250,7 @@ impl ClusterBuilder { if !vault_nodes.is_empty() { info!("Generating genesis with management tool."); try_join_all(vault_nodes.iter().enumerate().map(|(i, node)| async move { - libra_retrier::retry_async(libra_retrier::fixed_retry_strategy(5000, 15), || { + diem_retrier::retry_async(diem_retrier::fixed_retry_strategy(5000, 15), || { Box::pin(async move { self.initialize_vault(i as u32, node).await }) }) .await @@ -372,13 +372,13 @@ impl ClusterBuilder { true, )); if validator_index == 0 { - vault_storage.create_key(LIBRA_ROOT_KEY).map_err(|e| { - format_err!("Failed to create {}__{} : {}", pod_name, LIBRA_ROOT_KEY, e) + vault_storage.create_key(DIEM_ROOT_KEY).map_err(|e| { + format_err!("Failed to create {}__{} : {}", pod_name, DIEM_ROOT_KEY, e) })?; let key = vault_storage - .export_private_key(LIBRA_ROOT_KEY) + .export_private_key(DIEM_ROOT_KEY) .map_err(|e| { - format_err!("Failed to export {}__{} : {}", pod_name, LIBRA_ROOT_KEY, e) + format_err!("Failed to export {}__{} : {}", pod_name, DIEM_ROOT_KEY, e) })?; vault_storage .import_private_key(TREASURY_COMPLIANCE_KEY, key) @@ -413,7 +413,7 @@ impl ClusterBuilder { vault_storage .set(GENESIS_WAYPOINT, Waypoint::default()) .map_err(|e| format_err!("Failed to create {}/{} : {}", pod_name, WAYPOINT, e))?; - libra_network_address_encryption::Encryptor::new(vault_storage) + diem_network_address_encryption::Encryptor::new(vault_storage) .initialize_for_testing() .map_err(|e| { format_err!( @@ -441,8 +441,8 @@ impl ClusterBuilder { let layout = Layout { owners: owners.clone(), operators: owners, - libra_root: LIBRA_ROOT_NS.to_string(), - treasury_compliance: LIBRA_ROOT_NS.to_string(), + diem_root: DIEM_ROOT_NS.to_string(), + treasury_compliance: DIEM_ROOT_NS.to_string(), }; let layout_path = "/tmp/layout.yaml"; write!( @@ -471,25 +471,25 @@ impl ClusterBuilder { .await .map_err(|e| format_err!("Failed to set_layout : {}", e))?; genesis_helper - .libra_root_key( + .diem_root_key( VAULT_BACKEND, format!("http://{}:{}", vault_nodes[0].internal_ip, VAULT_PORT).as_str(), token_path, - LIBRA_ROOT_NS, - LIBRA_ROOT_NS, + DIEM_ROOT_NS, + DIEM_ROOT_NS, ) .await - .map_err(|e| format_err!("Failed to libra_root_key : {}", e))?; + .map_err(|e| format_err!("Failed to diem_root_key : {}", e))?; genesis_helper .treasury_compliance_key( VAULT_BACKEND, format!("http://{}:{}", vault_nodes[0].internal_ip, VAULT_PORT).as_str(), token_path, - LIBRA_ROOT_NS, - LIBRA_ROOT_NS, + DIEM_ROOT_NS, + DIEM_ROOT_NS, ) .await - .map_err(|e| format_err!("Failed to libra_root_key : {}", e))?; + .map_err(|e| format_err!("Failed to diem_root_key : {}", e))?; for (i, node) in vault_nodes.iter().enumerate() { let pod_name = validator_pod_name(i as u32); @@ -569,7 +569,7 @@ impl ClusterBuilder { } genesis_helper .extract_private_key( - format!("{}__{}", LIBRA_ROOT_NS, LIBRA_ROOT_KEY).as_str(), + format!("{}__{}", DIEM_ROOT_NS, DIEM_ROOT_KEY).as_str(), "/tmp/mint.key", VAULT_BACKEND, format!("http://{}:{}", vault_nodes[0].internal_ip, VAULT_PORT).as_str(), diff --git a/testsuite/cluster-test/src/cluster_swarm/cluster_swarm_kube.rs b/testsuite/cluster-test/src/cluster_swarm/cluster_swarm_kube.rs index 825d26c31b..e5d1a9b2a8 100644 --- a/testsuite/cluster-test/src/cluster_swarm/cluster_swarm_kube.rs +++ b/testsuite/cluster-test/src/cluster_swarm/cluster_swarm_kube.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -8,6 +8,7 @@ use std::{collections::HashMap, env, sync::Arc}; use anyhow::{bail, format_err, Result}; use async_trait::async_trait; +use diem_logger::*; use futures::{future::try_join_all, lock::Mutex, Future, TryFuture}; use k8s_openapi::api::core::v1::{ConfigMap, Node, Pod, Service}; use kube::{ @@ -15,7 +16,6 @@ use kube::{ client::Client, Config, }; -use libra_logger::*; use crate::{cluster_swarm::ClusterSwarm, instance::Instance}; use rand::{distributions::Alphanumeric, thread_rng, Rng}; @@ -24,9 +24,9 @@ use crate::instance::{ ApplicationConfig::{Fullnode, Validator, Vault, LSR}, InstanceConfig, }; +use diem_config::config::DEFAULT_JSON_RPC_PORT; use k8s_openapi::api::batch::v1::Job; use kube::api::ListParams; -use libra_config::config::DEFAULT_JSON_RPC_PORT; use reqwest::Client as HttpClient; use rusoto_core::Region; use rusoto_s3::{PutObjectRequest, S3Client, S3}; @@ -82,14 +82,14 @@ macro_rules! JOB_TEMPLATE { "templates/job_template.yaml" }; } -macro_rules! LIBRA_NODE_SERVICE_TEMPLATE { +macro_rules! DIEM_NODE_SERVICE_TEMPLATE { () => { - "templates/libra_node_service_template.yaml" + "templates/diem_node_service_template.yaml" }; } -macro_rules! LIBRA_NODE_SPEC_TEMPLATE { +macro_rules! DIEM_NODE_SPEC_TEMPLATE { () => { - "templates/libra_node_spec_template.yaml" + "templates/diem_node_spec_template.yaml" }; } macro_rules! LSR_SERVICE_TEMPLATE { @@ -126,7 +126,7 @@ impl ClusterSwarmKube { let http_client = HttpClient::new(); // This uses kubectl proxy locally to forward connections to kubernetes api server Command::new(KUBECTL_BIN).arg("proxy").spawn()?; - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { Box::pin(async move { debug!("Running local kube pod healthcheck on {}", HEALTH_CHECK_URL); reqwest::get(HEALTH_CHECK_URL).await?.text().await?; @@ -154,7 +154,7 @@ impl ClusterSwarmKube { fn service_spec(&self, peer_id: String) -> Result { let service_yaml = format!( - include_str!(LIBRA_NODE_SERVICE_TEMPLATE!()), + include_str!(DIEM_NODE_SERVICE_TEMPLATE!()), peer_id = &peer_id ); get_spec_instance_from_template(service_yaml) @@ -192,7 +192,7 @@ impl ClusterSwarmKube { Ok((pod_spec, service_spec)) } - fn libra_node_spec( + fn diem_node_spec( &self, pod_app: &str, pod_name: &str, @@ -200,7 +200,7 @@ impl ClusterSwarmKube { image_tag: &str, ) -> Result { let pod_yaml = format!( - include_str!(LIBRA_NODE_SPEC_TEMPLATE!()), + include_str!(DIEM_NODE_SPEC_TEMPLATE!()), pod_app = pod_app, pod_name = pod_name, image_tag = image_tag, @@ -243,7 +243,7 @@ impl ClusterSwarmKube { back_off_limit: u32, killed: bool, ) -> Result { - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { let job_api: Api = Api::namespaced(self.client.clone(), DEFAULT_NAMESPACE); let job_name = job_name.to_string(); Box::pin(async move { @@ -352,7 +352,7 @@ impl ClusterSwarmKube { { debug!("Deleting {} {}", T::KIND, name); let resource_api: Api = Api::namespaced(self.client.clone(), DEFAULT_NAMESPACE); - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { let resource_api = resource_api.clone(); let name = name.to_string(); Box::pin(async move { @@ -474,7 +474,7 @@ impl ClusterSwarmKube { } pub async fn allocate_node(&self, pod_name: &str) -> Result { - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { Box::pin(async move { self.allocate_node_impl(pod_name).await }) }) .await @@ -529,8 +529,8 @@ impl ClusterSwarmKube { debug!("Creating pod {} on {:?}", pod_name, node); let (p, s): (Pod, Service) = match &instance_config.application_config { Validator(validator_config) => ( - self.libra_node_spec( - "libra-validator", + self.diem_node_spec( + "diem-validator", pod_name.as_str(), &node.name, &validator_config.image_tag, @@ -538,8 +538,8 @@ impl ClusterSwarmKube { self.service_spec(pod_name.clone())?, ), Fullnode(fullnode_config) => ( - self.libra_node_spec( - "libra-fullnode", + self.diem_node_spec( + "diem-fullnode", pod_name.as_str(), &node.name, &fullnode_config.image_tag, @@ -607,7 +607,7 @@ impl ClusterSwarmKube { } async fn remove_all_network_effects(&self) -> Result<()> { - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { Box::pin(async move { self.remove_all_network_effects_helper().await }) }) .await @@ -626,7 +626,7 @@ impl ClusterSwarmKube { let pod_api: Api = Api::namespaced(self.client.clone(), DEFAULT_NAMESPACE); let pod_names: Vec = pod_api .list(&ListParams { - label_selector: Some("libra-node=true".to_string()), + label_selector: Some("diem-node=true".to_string()), ..Default::default() }) .await? @@ -647,7 +647,7 @@ impl ClusterSwarmKube { let service_api: Api = Api::namespaced(self.client.clone(), DEFAULT_NAMESPACE); let service_names: Vec = service_api .list(&ListParams { - label_selector: Some("libra-node=true".to_string()), + label_selector: Some("diem-node=true".to_string()), ..Default::default() }) .await? @@ -668,7 +668,7 @@ impl ClusterSwarmKube { let job_api: Api = Api::namespaced(self.client.clone(), DEFAULT_NAMESPACE); let job_names: Vec = job_api .list(&ListParams { - label_selector: Some("libra-node=true".to_string()), + label_selector: Some("diem-node=true".to_string()), ..Default::default() }) .await? @@ -712,7 +712,7 @@ impl ClusterSwarmKube { input_tag = input_tag, pod_name = pod_name ); - let dir = "/opt/libra/data/fluent-bit/"; + let dir = "/opt/diem/data/fluent-bit/"; self.put_file( node, pod_name, @@ -736,7 +736,7 @@ impl ClusterSwarmKube { self.put_file( node, pod_name, - "/opt/libra/etc/genesis.blob", + "/opt/diem/etc/genesis.blob", genesis.as_slice(), ) .await?; @@ -792,7 +792,7 @@ impl ClusterSwarmKube { self.put_file( node, pod_name, - "/opt/libra/etc/node.yaml", + "/opt/diem/etc/node.yaml", node_config.as_bytes(), ) .await?; @@ -816,7 +816,7 @@ impl ClusterSwarm for ClusterSwarmKube { } async fn clean_data(&self, node: &str) -> Result<()> { - self.util_cmd("rm -rf /opt/libra/data/*", node, "clean-data") + self.util_cmd("rm -rf /opt/diem/data/*", node, "clean-data") .await } @@ -836,7 +836,7 @@ impl ClusterSwarm for ClusterSwarmKube { async fn put_file(&self, node: &str, pod_name: &str, path: &str, content: &[u8]) -> Result<()> { let bucket = "toro-cluster-test-flamegraphs"; let run_id = env::var("RUN_ID").expect("RUN_ID is not set."); - libra_retrier::retry_async(k8s_retry_strategy(), || { + diem_retrier::retry_async(k8s_retry_strategy(), || { let run_id = &run_id; let content = content.to_vec(); Box::pin(async move { @@ -925,5 +925,5 @@ async fn acquire_and_execute(semaphore: &Semaphore, f: F) -> F::Ou } fn k8s_retry_strategy() -> impl Iterator { - libra_retrier::exp_retry_strategy(1000, 5000, 30) + diem_retrier::exp_retry_strategy(1000, 5000, 30) } diff --git a/testsuite/cluster-test/src/cluster_swarm/configs/validator.yaml b/testsuite/cluster-test/src/cluster_swarm/configs/validator.yaml index 7993f0f694..70315b21ed 100644 --- a/testsuite/cluster-test/src/cluster_swarm/configs/validator.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/configs/validator.yaml @@ -14,7 +14,7 @@ consensus: server_address: "/ip4/{safety_rules_addr}/tcp/6185" execution: - genesis_file_location: "/opt/libra/etc/genesis.blob" + genesis_file_location: "/opt/diem/etc/genesis.blob" backend: type: "vault" server: "http://{vault_addr}:8200" diff --git a/testsuite/cluster-test/src/cluster_swarm/fluent-bit/fluent-bit.conf b/testsuite/cluster-test/src/cluster_swarm/fluent-bit/fluent-bit.conf index 84fae7b269..a87eea6956 100644 --- a/testsuite/cluster-test/src/cluster_swarm/fluent-bit/fluent-bit.conf +++ b/testsuite/cluster-test/src/cluster_swarm/fluent-bit/fluent-bit.conf @@ -2,7 +2,7 @@ Flush 5 Log_Level info Daemon off - Parsers_File /opt/libra/data/fluent-bit/parsers.conf + Parsers_File /opt/diem/data/fluent-bit/parsers.conf [INPUT] Name tcp @@ -16,7 +16,7 @@ [INPUT] Name tail Tag {input_tag} - Path /opt/libra/data/events.log + Path /opt/diem/data/events.log Mem_Buf_Limit 200MB Refresh_Interval 10 Skip_Long_Lines On diff --git a/testsuite/cluster-test/src/cluster_swarm/mod.rs b/testsuite/cluster-test/src/cluster_swarm/mod.rs index 06201b365d..b32bd7c2c7 100644 --- a/testsuite/cluster-test/src/cluster_swarm/mod.rs +++ b/testsuite/cluster-test/src/cluster_swarm/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod cluster_swarm_kube; @@ -12,7 +12,7 @@ pub trait ClusterSwarm: Send + Sync { /// Spawns a new instance. async fn spawn_new_instance(&self, instance_config: InstanceConfig) -> Result; - /// If deleting /opt/libra/data/* is required, call clean_date before calling + /// If deleting /opt/diem/data/* is required, call clean_date before calling /// spawn_new_instance. async fn clean_data(&self, node: &str) -> Result<()>; diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/libra_node_service_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/diem_node_service_template.yaml similarity index 82% rename from testsuite/cluster-test/src/cluster_swarm/templates/libra_node_service_template.yaml rename to testsuite/cluster-test/src/cluster_swarm/templates/diem_node_service_template.yaml index efc7075ca4..187bf39841 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/libra_node_service_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/diem_node_service_template.yaml @@ -3,14 +3,14 @@ kind: Service metadata: name: {peer_id} labels: - app: libra-validator - libra-node: "true" + app: diem-validator + diem-node: "true" peer_id: {peer_id} spec: type: ClusterIP selector: - app: libra-validator - libra-node: "true" + app: diem-validator + diem-node: "true" peer_id: {peer_id} ports: - name: "port6180" diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/libra_node_spec_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/diem_node_spec_template.yaml similarity index 76% rename from testsuite/cluster-test/src/cluster_swarm/templates/libra_node_spec_template.yaml rename to testsuite/cluster-test/src/cluster_swarm/templates/diem_node_spec_template.yaml index d49e811358..1bbb2b7417 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/libra_node_spec_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/diem_node_spec_template.yaml @@ -4,7 +4,7 @@ metadata: name: {pod_name} labels: app: {pod_app} - libra-node: "true" + diem-node: "true" peer_id: {pod_name} annotations: prometheus.io/should_be_scraped: "true" @@ -19,17 +19,17 @@ spec: - name: fluent-bit image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/fluent-bit:1.3.9 imagePullPolicy: IfNotPresent - command: ["/fluent-bit/bin/fluent-bit", "-c", "/opt/libra/data/fluent-bit/fluent-bit.conf"] + command: ["/fluent-bit/bin/fluent-bit", "-c", "/opt/diem/data/fluent-bit/fluent-bit.conf"] volumeMounts: - - mountPath: /opt/libra/data + - mountPath: /opt/diem/data name: data - name: debug - image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/libra/validator:{image_tag} + image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/diem/validator:{image_tag} imagePullPolicy: Always volumeMounts: - - mountPath: /opt/libra/data + - mountPath: /opt/diem/data name: data - - mountPath: /opt/libra/etc + - mountPath: /opt/diem/etc name: config command: - "bash" @@ -38,12 +38,12 @@ spec: set -x; while true; do sleep 10; done - name: main - image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/libra/validator:{image_tag} + image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/diem/validator:{image_tag} imagePullPolicy: Always resources: requests: cpu: 7800m - command: ["/opt/libra/bin/libra-node", "-f", "/opt/libra/etc/node.yaml"] + command: ["/opt/diem/bin/diem-node", "-f", "/opt/diem/etc/node.yaml"] ports: - containerPort: 6180 - containerPort: 6181 @@ -51,9 +51,9 @@ spec: - containerPort: 9101 - containerPort: 6191 volumeMounts: - - mountPath: /opt/libra/data + - mountPath: /opt/diem/data name: data - - mountPath: /opt/libra/etc + - mountPath: /opt/diem/etc name: config env: - name: RUST_LOG @@ -80,7 +80,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: libra-node + - key: diem-node operator: Exists topologyKey: "kubernetes.io/hostname" terminationGracePeriodSeconds: 5 diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/job_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/job_template.yaml index 5ceb9d2306..c6d6934e88 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/job_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/job_template.yaml @@ -4,7 +4,7 @@ metadata: name: {name} labels: app: {label} - libra-node: "true" + diem-node: "true" spec: template: metadata: @@ -20,14 +20,14 @@ spec: - name: main image: {image} volumeMounts: - - mountPath: /opt/libra/data + - mountPath: /opt/diem/data name: data - - mountPath: /opt/libra/etc + - mountPath: /opt/diem/etc name: config imagePullPolicy: Always command: ["sh", "-c", "{command}"] securityContext: - runAsUser: 0 # To get permissions to write to /opt/libra/data + runAsUser: 0 # To get permissions to write to /opt/diem/data privileged: true capabilities: add: ["SYS_ADMIN"] diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/lsr_service_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/lsr_service_template.yaml index ffa900541d..b1edde15cb 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/lsr_service_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/lsr_service_template.yaml @@ -3,15 +3,15 @@ kind: Service metadata: name: {pod_name} labels: - app: libra-lsr - libra-node: "true" + app: diem-lsr + diem-node: "true" peer_id: {pod_name} spec: type: ClusterIP publishNotReadyAddresses: true selector: - app: libra-lsr - libra-node: "true" + app: diem-lsr + diem-node: "true" peer_id: {pod_name} ports: - name: safety-rules diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/lsr_spec_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/lsr_spec_template.yaml index 4c8afd8db2..0ab42fe20a 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/lsr_spec_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/lsr_spec_template.yaml @@ -3,8 +3,8 @@ kind: Pod metadata: name: {pod_name} labels: - app: libra-lsr - libra-node: "true" + app: diem-lsr + diem-node: "true" peer_id: {pod_name} spec: hostNetwork: true @@ -17,21 +17,21 @@ spec: - name: fluent-bit image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/fluent-bit:1.3.9 imagePullPolicy: IfNotPresent - command: ["/fluent-bit/bin/fluent-bit", "-c", "/opt/libra/data/fluent-bit/fluent-bit.conf"] + command: ["/fluent-bit/bin/fluent-bit", "-c", "/opt/diem/data/fluent-bit/fluent-bit.conf"] volumeMounts: - - mountPath: /opt/libra/data - name: libra-data + - mountPath: /opt/diem/data + name: diem-data - name: main - image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/libra/validator_tcb:{image_tag} + image: 853397791086.dkr.ecr.us-west-2.amazonaws.com/diem/validator_tcb:{image_tag} imagePullPolicy: Always - command: ["/opt/libra/bin/safety-rules", "/opt/libra/etc/node.yaml"] + command: ["/opt/diem/bin/safety-rules", "/opt/diem/etc/node.yaml"] ports: - containerPort: 6185 volumeMounts: - - mountPath: /opt/libra/etc + - mountPath: /opt/diem/etc name: config-built - - mountPath: /opt/libra/data - name: libra-data + - mountPath: /opt/diem/data + name: diem-data - mountPath: /opt/vault name: vault-token env: @@ -40,13 +40,13 @@ spec: - name: RUST_BACKTRACE value: "1" - name: PUSH_METRICS_ENDPOINT - value: "http://libra-testnet-prometheus-pushgateway:9091/metrics/job/safety_rules/instance/{pod_name}" + value: "http://diem-testnet-prometheus-pushgateway:9091/metrics/job/safety_rules/instance/{pod_name}" volumes: - name: config-built hostPath: path: /config type: DirectoryOrCreate - - name: libra-data + - name: diem-data hostPath: path: /data type: DirectoryOrCreate @@ -60,7 +60,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: libra-node + - key: diem-node operator: Exists topologyKey: "kubernetes.io/hostname" terminationGracePeriodSeconds: 5 diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/vault_service_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/vault_service_template.yaml index 7166aaa223..9ba038f19a 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/vault_service_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/vault_service_template.yaml @@ -4,8 +4,8 @@ kind: Service metadata: name: vault-{validator_index} labels: - app: libra-vault - libra-node: "true" + app: diem-vault + diem-node: "true" peer_id: vault-{validator_index} annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" @@ -20,6 +20,6 @@ spec: port: 8201 targetPort: 8201 selector: - app: libra-vault - libra-node: "true" + app: diem-vault + diem-node: "true" peer_id: vault-{validator_index} diff --git a/testsuite/cluster-test/src/cluster_swarm/templates/vault_spec_template.yaml b/testsuite/cluster-test/src/cluster_swarm/templates/vault_spec_template.yaml index 90d158f925..27d6597834 100644 --- a/testsuite/cluster-test/src/cluster_swarm/templates/vault_spec_template.yaml +++ b/testsuite/cluster-test/src/cluster_swarm/templates/vault_spec_template.yaml @@ -4,8 +4,8 @@ kind: Pod metadata: name: vault-{validator_index} labels: - app: libra-vault - libra-node: "true" + app: diem-vault + diem-node: "true" peer_id: vault-{validator_index} spec: hostNetwork: true @@ -121,7 +121,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: libra-node + - key: diem-node operator: Exists topologyKey: "kubernetes.io/hostname" terminationGracePeriodSeconds: 5 diff --git a/testsuite/cluster-test/src/effects/mod.rs b/testsuite/cluster-test/src/effects/mod.rs index 8101de7193..9f453161ce 100644 --- a/testsuite/cluster-test/src/effects/mod.rs +++ b/testsuite/cluster-test/src/effects/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/effects/network_delay.rs b/testsuite/cluster-test/src/effects/network_delay.rs index 4bd3964b9d..449f83a37c 100644 --- a/testsuite/cluster-test/src/effects/network_delay.rs +++ b/testsuite/cluster-test/src/effects/network_delay.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -10,7 +10,7 @@ use crate::instance::Instance; use anyhow::Result; use async_trait::async_trait; -use libra_logger::debug; +use diem_logger::debug; use std::{fmt, time::Duration}; pub struct NetworkDelay { diff --git a/testsuite/cluster-test/src/effects/packet_loss.rs b/testsuite/cluster-test/src/effects/packet_loss.rs index 986dd145d2..e0ab9f0566 100644 --- a/testsuite/cluster-test/src/effects/packet_loss.rs +++ b/testsuite/cluster-test/src/effects/packet_loss.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -8,7 +8,7 @@ use crate::{effects::Effect, instance::Instance}; use anyhow::Result; use async_trait::async_trait; -use libra_logger::info; +use diem_logger::info; use std::fmt; pub struct PacketLoss { diff --git a/testsuite/cluster-test/src/effects/stop_validator.rs b/testsuite/cluster-test/src/effects/stop_validator.rs index 34113cdf15..46a7721c7d 100644 --- a/testsuite/cluster-test/src/effects/stop_validator.rs +++ b/testsuite/cluster-test/src/effects/stop_validator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -8,7 +8,7 @@ use crate::{effects::Effect, instance::Instance}; use anyhow::Result; use async_trait::async_trait; -use libra_logger::debug; +use diem_logger::debug; use std::fmt; pub struct StopValidator { diff --git a/testsuite/cluster-test/src/experiments/compatibility_test.rs b/testsuite/cluster-test/src/experiments/compatibility_test.rs index c80ac16889..6e754c35c0 100644 --- a/testsuite/cluster-test/src/experiments/compatibility_test.rs +++ b/testsuite/cluster-test/src/experiments/compatibility_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,8 +11,8 @@ use crate::{ tx_emitter::EmitJobRequest, }; use async_trait::async_trait; +use diem_logger::prelude::*; use futures::future::try_join_all; -use libra_logger::prelude::*; use std::{ collections::HashSet, env, fmt, diff --git a/testsuite/cluster-test/src/experiments/cpu_flamegraph.rs b/testsuite/cluster-test/src/experiments/cpu_flamegraph.rs index 677c6b25a0..4efc14552f 100644 --- a/testsuite/cluster-test/src/experiments/cpu_flamegraph.rs +++ b/testsuite/cluster-test/src/experiments/cpu_flamegraph.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{ @@ -69,7 +69,7 @@ impl Experiment for CpuFlamegraph { .boxed(); let run_id = env::var("RUN_ID") .map_err(|e| anyhow!("RUN_ID could not be read from the environment, Error:{}", e))?; - let filename = "libra-node-perf.svg"; + let filename = "diem-node-perf.svg"; let command = generate_perf_flamegraph_command(&filename, &run_id, self.duration_secs); let flame_graph = self.perf_instance.util_cmd(command, "generate-flamegraph"); let flame_graph_future = tokio::time::delay_for(buffer) @@ -104,7 +104,7 @@ fn generate_perf_flamegraph_command(filename: &str, run_id: &str, duration_secs: rm -rf /tmp/perf-data; mkdir /tmp/perf-data; cd /tmp/perf-data; - perf record -F 99 -p $(ps aux | grep libra-node | grep -v grep | awk '{{print $2}}') --output=perf.data --call-graph dwarf -- sleep {duration_secs}; + perf record -F 99 -p $(ps aux | grep diem-node | grep -v grep | awk '{{print $2}}') --output=perf.data --call-graph dwarf -- sleep {duration_secs}; perf script --input=perf.data | /usr/local/etc/FlameGraph/stackcollapse-perf.pl > out.perf-folded; /usr/local/etc/FlameGraph/flamegraph.pl out.perf-folded > {filename}; aws s3 cp {filename} s3://toro-cluster-test-flamegraphs/flamegraphs/{run_id}/{filename};"#, diff --git a/testsuite/cluster-test/src/experiments/load_test.rs b/testsuite/cluster-test/src/experiments/load_test.rs index 92d24ba906..e89451b561 100644 --- a/testsuite/cluster-test/src/experiments/load_test.rs +++ b/testsuite/cluster-test/src/experiments/load_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -10,13 +10,13 @@ use crate::{ }; use anyhow::Result; use async_trait::async_trait; +use diem_config::{config::NodeConfig, network_id::NetworkId}; +use diem_crypto::x25519; +use diem_logger::info; +use diem_mempool::network::{MempoolNetworkEvents, MempoolNetworkSender}; +use diem_network_address::NetworkAddress; +use diem_types::{account_config::diem_root_address, chain_id::ChainId}; use futures::{sink::SinkExt, StreamExt}; -use libra_config::{config::NodeConfig, network_id::NetworkId}; -use libra_crypto::x25519; -use libra_logger::info; -use libra_mempool::network::{MempoolNetworkEvents, MempoolNetworkSender}; -use libra_network_address::NetworkAddress; -use libra_types::{account_config::libra_root_address, chain_id::ChainId}; use network::{ connectivity_manager::DiscoverySource, protocols::network::Event, ConnectivityRequest, }; @@ -133,9 +133,9 @@ impl Experiment for LoadTest { let full_node_client = full_node.json_rpc_client(); let mut sender = context .tx_emitter - .load_libra_root_account(&full_node_client) + .load_diem_root_account(&full_node_client) .await?; - let receiver = libra_root_address(); + let receiver = diem_root_address(); let dummy_tx = gen_transfer_txn_request(&mut sender, &receiver, 0, ChainId::test(), 0); let total_byte = dummy_tx.raw_txn_bytes_len() as u64 * stats.submitted; info!("Total tx emitter stats: {}, bytes: {}", stats, total_byte); @@ -191,10 +191,10 @@ impl fmt::Display for LoadTest { } } -// An actor that can participate in LibraNet +// An actor that can participate in DiemNet // Connects to VFN via on-chain discovery and interact with it via mempool and state sync protocol // It is 'stubbed' in the sense that it has no real node components running and only network stubs -// that interact with the remote VFN via LibraNet mempool and state sync protocol +// that interact with the remote VFN via DiemNet mempool and state sync protocol struct StubbedNode { pub network_runtime: Runtime, pub mempool_handle: Option<(MempoolNetworkSender, MempoolNetworkEvents)>, @@ -228,7 +228,7 @@ impl StubbedNode { ); let mempool_handle = Some(network_builder.add_protocol_handler( - libra_mempool::network::network_endpoint_config( + diem_mempool::network::network_endpoint_config( pfn_config.mempool.max_broadcasts_per_peer, ), )); @@ -297,7 +297,7 @@ async fn mempool_load_test( let mut msg_num = 0_u64; let task_start = Instant::now(); while Instant::now().duration_since(task_start) < duration { - let msg = libra_mempool::network::MempoolSyncMsg::BroadcastTransactionsRequest { + let msg = diem_mempool::network::MempoolSyncMsg::BroadcastTransactionsRequest { request_id: lcs::to_bytes("request_id")?, transactions: vec![], // TODO submit actual txns }; diff --git a/testsuite/cluster-test/src/experiments/mod.rs b/testsuite/cluster-test/src/experiments/mod.rs index 3f77c48da7..ccf49bb44e 100644 --- a/testsuite/cluster-test/src/experiments/mod.rs +++ b/testsuite/cluster-test/src/experiments/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/experiments/packet_loss_random_validators.rs b/testsuite/cluster-test/src/experiments/packet_loss_random_validators.rs index 207bd98d52..042381f80f 100644 --- a/testsuite/cluster-test/src/experiments/packet_loss_random_validators.rs +++ b/testsuite/cluster-test/src/experiments/packet_loss_random_validators.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/experiments/performance_benchmark.rs b/testsuite/cluster-test/src/experiments/performance_benchmark.rs index a7f93fc96a..3862794de7 100644 --- a/testsuite/cluster-test/src/experiments/performance_benchmark.rs +++ b/testsuite/cluster-test/src/experiments/performance_benchmark.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -12,13 +12,13 @@ use crate::{ }; use anyhow::{anyhow, Result}; use async_trait::async_trait; -use futures::{future::try_join_all, join, FutureExt}; -use libra_infallible::duration_since_epoch; -use libra_logger::{info, warn}; -use libra_trace::{ +use diem_infallible::duration_since_epoch; +use diem_logger::{info, warn}; +use diem_trace::{ trace::{find_peer_with_stage, random_node, trace_node}, - LibraTraceClient, + DiemTraceClient, }; +use futures::{future::try_join_all, join, FutureExt}; use rand::{rngs::ThreadRng, seq::SliceRandom}; use serde_json::Value; use std::{ @@ -39,7 +39,7 @@ pub struct PerformanceBenchmarkParams { pub percent_nodes_down: usize, #[structopt(long, help = "Whether benchmark should perform trace")] pub trace: bool, - #[structopt(long, help = "Whether benchmark should trace only one libra node")] + #[structopt(long, help = "Whether benchmark should trace only one diem node")] pub trace_single: bool, #[structopt( long, @@ -220,9 +220,9 @@ impl Experiment for PerformanceBenchmark { let trace_log = self.use_logs_for_trace; if trace_log { let start = start + chrono::Duration::seconds(60); - let libra_trace_client = LibraTraceClient::new("elasticsearch-master", 9200); - trace = match libra_trace_client - .get_libra_trace(start, chrono::Duration::seconds(5)) + let diem_trace_client = DiemTraceClient::new("elasticsearch-master", 9200); + trace = match diem_trace_client + .get_diem_trace(start, chrono::Duration::seconds(5)) .await { Ok(trace) => Some(trace), @@ -250,8 +250,8 @@ impl Experiment for PerformanceBenchmark { info!("Tracing {}", node); if self.trace_single { let filter_peer = - find_peer_with_stage(&events[..], &node, "libra_vm::execute_block_impl") - .expect("Can not find peer with libra_vm::execute_block_impl") + find_peer_with_stage(&events[..], &node, "diem_vm::execute_block_impl") + .expect("Can not find peer with diem_vm::execute_block_impl") .to_string(); events = events .into_iter() @@ -299,10 +299,10 @@ impl PerformanceBenchmark { .ok_or_else(|| anyhow!("No up validator."))? .clone(); - const COMMAND: &str = "/opt/libra/bin/db-backup coordinator run \ + const COMMAND: &str = "/opt/diem/bin/db-backup coordinator run \ --transaction-batch-size 20000 \ --state-snapshot-interval 1 \ - local-fs --dir $(mktemp -d -t libra_backup_XXXXXXXX);"; + local-fs --dir $(mktemp -d -t diem_backup_XXXXXXXX);"; Ok(Some(tokio::spawn(async move { validator.exec(COMMAND, true).await.unwrap_or_else(|e| { diff --git a/testsuite/cluster-test/src/experiments/performance_benchmark_three_region_simulation.rs b/testsuite/cluster-test/src/experiments/performance_benchmark_three_region_simulation.rs index 12342a6704..50dc96b099 100644 --- a/testsuite/cluster-test/src/experiments/performance_benchmark_three_region_simulation.rs +++ b/testsuite/cluster-test/src/experiments/performance_benchmark_three_region_simulation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/testsuite/cluster-test/src/experiments/reboot_cluster.rs b/testsuite/cluster-test/src/experiments/reboot_cluster.rs index df5278d820..b86ac9af00 100644 --- a/testsuite/cluster-test/src/experiments/reboot_cluster.rs +++ b/testsuite/cluster-test/src/experiments/reboot_cluster.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -12,8 +12,8 @@ use crate::{ instance::Instance, }; use async_trait::async_trait; +use diem_logger::info; use futures::future::try_join_all; -use libra_logger::info; use std::{ collections::HashSet, fmt::{Error, Formatter}, diff --git a/testsuite/cluster-test/src/experiments/reboot_random_validators.rs b/testsuite/cluster-test/src/experiments/reboot_random_validators.rs index acb36c6cf3..8671090d0f 100644 --- a/testsuite/cluster-test/src/experiments/reboot_random_validators.rs +++ b/testsuite/cluster-test/src/experiments/reboot_random_validators.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/experiments/reconfiguration_test.rs b/testsuite/cluster-test/src/experiments/reconfiguration_test.rs index 54d228042a..081f159041 100644 --- a/testsuite/cluster-test/src/experiments/reconfiguration_test.rs +++ b/testsuite/cluster-test/src/experiments/reconfiguration_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,10 +11,10 @@ use crate::{ }; use anyhow::{bail, ensure}; use async_trait::async_trait; -use libra_json_rpc_client::{JsonRpcAsyncClient, JsonRpcBatch, JsonRpcResponse}; -use libra_logger::prelude::*; -use libra_operational_tool::json_rpc::JsonRpcClientWrapper; -use libra_types::{ +use diem_json_rpc_client::{JsonRpcAsyncClient, JsonRpcBatch, JsonRpcResponse}; +use diem_logger::prelude::*; +use diem_operational_tool::json_rpc::JsonRpcClientWrapper; +use diem_types::{ account_address::AccountAddress, chain_id::ChainId, ledger_info::LedgerInfoWithSignatures, }; use std::{ @@ -25,7 +25,7 @@ use std::{ use structopt::StructOpt; use transaction_builder::{ encode_add_validator_and_reconfigure_script, encode_remove_validator_and_reconfigure_script, - encode_update_libra_version_script, + encode_update_diem_version_script, }; #[derive(StructOpt, Debug)] @@ -103,9 +103,9 @@ impl Experiment for Reconfiguration { async fn run(&mut self, context: &mut Context<'_>) -> anyhow::Result<()> { let full_node = context.cluster.random_fullnode_instance(); let mut full_node_client = full_node.json_rpc_client(); - let mut libra_root_account = context + let mut diem_root_account = context .tx_emitter - .load_libra_root_account(&full_node_client) + .load_diem_root_account(&full_node_client) .await?; let allowed_nonce = 0; let emit_job = if self.emit_txn { @@ -145,13 +145,13 @@ impl Experiment for Reconfiguration { validator_name.clone(), self.affected_peer_id, ), - &mut libra_root_account, + &mut diem_root_account, ChainId::test(), 0, ); execute_and_wait_transactions( &mut full_node_client, - &mut libra_root_account, + &mut diem_root_account, vec![remove_txn], ) .await?; @@ -162,13 +162,13 @@ impl Experiment for Reconfiguration { validator_name.clone(), self.affected_peer_id, ), - &mut libra_root_account, + &mut diem_root_account, ChainId::test(), 0, ); execute_and_wait_transactions( &mut full_node_client, - &mut libra_root_account, + &mut diem_root_account, vec![add_txn], ) .await?; @@ -177,17 +177,17 @@ impl Experiment for Reconfiguration { if self.count % 2 == 1 { let magic_number = 42; - info!("Bump LibraVersion to {}", magic_number); + info!("Bump DiemVersion to {}", magic_number); let update_txn = gen_submit_transaction_request( - encode_update_libra_version_script(allowed_nonce, magic_number), - &mut libra_root_account, + encode_update_diem_version_script(allowed_nonce, magic_number), + &mut diem_root_account, ChainId::test(), 0, ); execute_and_wait_transactions( &mut full_node_client, - &mut libra_root_account, + &mut diem_root_account, vec![update_txn], ) .await?; diff --git a/testsuite/cluster-test/src/experiments/recovery_time.rs b/testsuite/cluster-test/src/experiments/recovery_time.rs index 1dcdce3710..a644285e60 100644 --- a/testsuite/cluster-test/src/experiments/recovery_time.rs +++ b/testsuite/cluster-test/src/experiments/recovery_time.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -15,7 +15,7 @@ use crate::{ tx_emitter::EmitJobRequest, }; use async_trait::async_trait; -use libra_logger::info; +use diem_logger::info; use std::time::Instant; #[derive(StructOpt, Debug)] @@ -80,7 +80,7 @@ impl Experiment for RecoveryTime { ); while self .instance - .counter("libra_consensus_last_committed_round") + .counter("diem_consensus_last_committed_round") .is_err() { time::delay_for(Duration::from_secs(1)).await; diff --git a/testsuite/cluster-test/src/experiments/twin_validator.rs b/testsuite/cluster-test/src/experiments/twin_validator.rs index 0e80860724..5302a82eaa 100644 --- a/testsuite/cluster-test/src/experiments/twin_validator.rs +++ b/testsuite/cluster-test/src/experiments/twin_validator.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,9 +11,9 @@ use crate::{ tx_emitter::EmitJobRequest, }; use async_trait::async_trait; +use diem_infallible::duration_since_epoch; +use diem_logger::info; use futures::future::try_join_all; -use libra_infallible::duration_since_epoch; -use libra_logger::info; use rand::Rng; use std::{ collections::HashSet, diff --git a/testsuite/cluster-test/src/experiments/versioning_test.rs b/testsuite/cluster-test/src/experiments/versioning_test.rs index 7dfd9691bf..73c380a29c 100644 --- a/testsuite/cluster-test/src/experiments/versioning_test.rs +++ b/testsuite/cluster-test/src/experiments/versioning_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -14,16 +14,16 @@ use crate::{ }; use anyhow::format_err; use async_trait::async_trait; -use libra_logger::prelude::*; -use libra_types::{ - account_config::{coin1_tmp_tag, COIN1_NAME}, +use diem_logger::prelude::*; +use diem_types::{ + account_config::{xus_tag, XUS_NAME}, chain_id::ChainId, transaction::{helpers::create_user_txn, TransactionPayload}, }; use std::{collections::HashSet, fmt, time::Duration}; use structopt::StructOpt; use transaction_builder::{ - encode_peer_to_peer_with_metadata_script, encode_update_libra_version_script, + encode_peer_to_peer_with_metadata_script, encode_update_diem_version_script, }; #[derive(StructOpt, Debug)] @@ -117,7 +117,7 @@ impl Experiment for ValidatorVersioning { let account_2 = context.tx_emitter.take_account(); let txn_payload = TransactionPayload::Script(encode_peer_to_peer_with_metadata_script( - coin1_tmp_tag(), + xus_tag(), account_2.address, 1, vec![], @@ -136,7 +136,7 @@ impl Experiment for ValidatorVersioning { account.sequence_number, 123456, 0, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), 10, ChainId::test(), ) @@ -171,12 +171,12 @@ impl Experiment for ValidatorVersioning { let allowed_nonce = 0; let update_txn = create_user_txn( &faucet_account.key_pair, - TransactionPayload::Script(encode_update_libra_version_script(allowed_nonce, 11)), + TransactionPayload::Script(encode_update_diem_version_script(allowed_nonce, 11)), faucet_account.address, faucet_account.sequence_number, 123456, 0, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), 10, ChainId::test(), ) diff --git a/testsuite/cluster-test/src/genesis_helper.rs b/testsuite/cluster-test/src/genesis_helper.rs index 604ab9c993..7df510dcb1 100644 --- a/testsuite/cluster-test/src/genesis_helper.rs +++ b/testsuite/cluster-test/src/genesis_helper.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_genesis_tool::{command::Command, layout::Layout}; -use libra_management::{error::Error, secure_backend::DISK}; -use libra_network_address::NetworkAddress; -use libra_operational_tool::command::Command as OperationalCommand; -use libra_types::{chain_id::ChainId, transaction::Transaction, waypoint::Waypoint}; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_genesis_tool::{command::Command, layout::Layout}; +use diem_management::{error::Error, secure_backend::DISK}; +use diem_network_address::NetworkAddress; +use diem_operational_tool::command::Command as OperationalCommand; +use diem_types::{chain_id::ChainId, transaction::Transaction, waypoint::Waypoint}; use std::path::Path; use structopt::StructOpt; use tokio::task::spawn_blocking; @@ -22,7 +22,7 @@ impl GenesisHelper { pub async fn set_layout(&self, path: &str, namespace: &str) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool set-layout --path {path} --shared-backend backend={backend};\ @@ -41,7 +41,7 @@ impl GenesisHelper { .expect("tokio spawn_blocking runtime error") } - pub async fn libra_root_key( + pub async fn diem_root_key( &self, validator_backend: &str, server: &str, @@ -51,8 +51,8 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool - libra-root-key + diem-genesis-tool + diem-root-key --validator-backend backend={validator_backend};\ server={server};\ token={token_path};\ @@ -71,7 +71,7 @@ impl GenesisHelper { ); let command = Command::from_iter(args.split_whitespace()); - spawn_blocking(|| command.libra_root_key()) + spawn_blocking(|| command.diem_root_key()) .await .expect("tokio spawn_blocking runtime error") } @@ -86,7 +86,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool owner-key --validator-backend backend={validator_backend};\ server={server};\ @@ -121,7 +121,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool operator-key --validator-backend backend={validator_backend};\ server={server};\ @@ -156,7 +156,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool treasury-compliance-key --validator-backend backend={validator_backend};\ server={server};\ @@ -195,7 +195,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool validator-config --owner-name {owner_name} --validator-address {validator_address} @@ -235,7 +235,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool set-operator --operator-name {operator_name} --shared-backend backend={backend};\ @@ -261,7 +261,7 @@ impl GenesisHelper { ) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool genesis --chain-id {chain_id} --shared-backend backend={backend};\ @@ -292,7 +292,7 @@ impl GenesisHelper { let args = format!( " - libra-genesis-tool + diem-genesis-tool insert-waypoint --validator-backend backend={validator_backend};\ server={server};\ @@ -318,7 +318,7 @@ impl GenesisHelper { pub async fn create_waypoint(&self, chain_id: ChainId) -> Result { let args = format!( " - libra-genesis-tool + diem-genesis-tool create-waypoint --chain-id {chain_id} --shared-backend backend={backend};\ @@ -345,7 +345,7 @@ impl GenesisHelper { ) -> Result<(), Error> { let args = format!( " - libra-operational-tool + diem-operational-tool extract-private-key --key-name {key_name} --key-file {key_file} diff --git a/testsuite/cluster-test/src/github.rs b/testsuite/cluster-test/src/github.rs index b535f8bc9f..ba2fec622b 100644 --- a/testsuite/cluster-test/src/github.rs +++ b/testsuite/cluster-test/src/github.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -49,7 +49,7 @@ impl GitHub { })?; let request = self.client.get(url); let response = request - .header(USER_AGENT, "libra-cluster-test") + .header(USER_AGENT, "diem-cluster-test") .send() .map_err(|e| format_err!("Failed to query github: {:?}", e))?; let response: Vec = response diff --git a/testsuite/cluster-test/src/health/commit_check.rs b/testsuite/cluster-test/src/health/commit_check.rs index d1161d73fc..f4df4bccba 100644 --- a/testsuite/cluster-test/src/health/commit_check.rs +++ b/testsuite/cluster-test/src/health/commit_check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/health/debug_interface_log_tail.rs b/testsuite/cluster-test/src/health/debug_interface_log_tail.rs index 076e084f94..1549c83ef7 100644 --- a/testsuite/cluster-test/src/health/debug_interface_log_tail.rs +++ b/testsuite/cluster-test/src/health/debug_interface_log_tail.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -9,8 +9,8 @@ use crate::{ instance::Instance, }; use debug_interface::AsyncNodeDebugClient; -use libra_infallible::{duration_since_epoch, Mutex}; -use libra_logger::{json_log::JsonLogEntry as DebugInterfaceEvent, *}; +use diem_infallible::{duration_since_epoch, Mutex}; +use diem_logger::{json_log::JsonLogEntry as DebugInterfaceEvent, *}; use serde_json::{self, value as json}; use std::{ env, diff --git a/testsuite/cluster-test/src/health/fullnode_check.rs b/testsuite/cluster-test/src/health/fullnode_check.rs index 82b648a1f8..338277a4c7 100644 --- a/testsuite/cluster-test/src/health/fullnode_check.rs +++ b/testsuite/cluster-test/src/health/fullnode_check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -35,7 +35,7 @@ impl FullNodeHealthCheck { async fn get_version(instance: &Instance) -> (&Instance, i64) { let res = instance .debug_interface_client() - .get_node_metric("libra_state_sync_version{type=committed}") + .get_node_metric("diem_state_sync_version{type=committed}") .await; let content = match res { Ok(res) => res.unwrap_or_default(), diff --git a/testsuite/cluster-test/src/health/liveness_check.rs b/testsuite/cluster-test/src/health/liveness_check.rs index 57114607eb..20d4a40093 100644 --- a/testsuite/cluster-test/src/health/liveness_check.rs +++ b/testsuite/cluster-test/src/health/liveness_check.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/health/log_tail.rs b/testsuite/cluster-test/src/health/log_tail.rs index dd65b0045f..9da97e8112 100644 --- a/testsuite/cluster-test/src/health/log_tail.rs +++ b/testsuite/cluster-test/src/health/log_tail.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] use crate::health::ValidatorEvent; -use libra_infallible::{duration_since_epoch, Mutex}; -use libra_logger::{json_log::JsonLogEntry as DebugInterfaceEvent, *}; +use diem_infallible::{duration_since_epoch, Mutex}; +use diem_logger::{json_log::JsonLogEntry as DebugInterfaceEvent, *}; use std::{ sync::{ atomic::{AtomicBool, AtomicI64, Ordering}, diff --git a/testsuite/cluster-test/src/health/mod.rs b/testsuite/cluster-test/src/health/mod.rs index 7c4f6a1b31..ce26024410 100644 --- a/testsuite/cluster-test/src/health/mod.rs +++ b/testsuite/cluster-test/src/health/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -140,7 +140,7 @@ impl HealthCheckRunner { if self.debug { messages.push(format!( "{} {}, on_event time: {}ms, verify time: {}ms, events: {}", - libra_infallible::duration_since_epoch().as_millis(), + diem_infallible::duration_since_epoch().as_millis(), health_check.name(), (events_processed - start).as_millis(), (verified - events_processed).as_millis(), @@ -152,7 +152,7 @@ impl HealthCheckRunner { node_health.insert(err.validator.clone(), false); messages.push(format!( "{} {:?}", - libra_infallible::duration_since_epoch().as_millis(), + diem_infallible::duration_since_epoch().as_millis(), err )); } @@ -233,7 +233,7 @@ pub struct HealthCheckError { impl HealthCheckContext { pub fn new() -> Self { - let now = libra_infallible::duration_since_epoch(); + let now = diem_infallible::duration_since_epoch(); Self { now, err_acc: vec![], diff --git a/testsuite/cluster-test/src/instance.rs b/testsuite/cluster-test/src/instance.rs index f06d22cbad..610ada097c 100644 --- a/testsuite/cluster-test/src/instance.rs +++ b/testsuite/cluster-test/src/instance.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -6,8 +6,8 @@ use crate::cluster_swarm::cluster_swarm_kube::ClusterSwarmKube; use anyhow::{format_err, Result}; use debug_interface::AsyncNodeDebugClient; -use libra_config::config::NodeConfig; -use libra_json_rpc_client::{JsonRpcAsyncClient, JsonRpcBatch}; +use diem_config::config::NodeConfig; +use diem_json_rpc_client::{JsonRpcAsyncClient, JsonRpcBatch}; use reqwest::{Client, Url}; use serde_json::Value; use std::{ @@ -303,10 +303,10 @@ impl Instance { .map(|_| ()) } - /// If deleting /opt/libra/data/* is required, call Instance::clean_date before calling + /// If deleting /opt/diem/data/* is required, call Instance::clean_date before calling /// Instance::start. pub async fn clean_data(&self) -> Result<()> { - self.util_cmd("rm -rf /opt/libra/data/*; ", "clean-data") + self.util_cmd("rm -rf /opt/diem/data/*; ", "clean-data") .await } diff --git a/testsuite/cluster-test/src/lib.rs b/testsuite/cluster-test/src/lib.rs index 287f0cac89..cc8948ea3b 100644 --- a/testsuite/cluster-test/src/lib.rs +++ b/testsuite/cluster-test/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod atomic_histogram; diff --git a/testsuite/cluster-test/src/main.rs b/testsuite/cluster-test/src/main.rs index 210dbb2a2e..a18fd3cefe 100644 --- a/testsuite/cluster-test/src/main.rs +++ b/testsuite/cluster-test/src/main.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{ @@ -7,8 +7,8 @@ use std::{ time::{Duration, Instant}, }; -use libra_logger::{info, warn}; -use libra_types::chain_id::ChainId; +use diem_logger::{info, warn}; +use diem_types::chain_id::ChainId; use reqwest::Url; use structopt::{clap::ArgGroup, StructOpt}; use termion::{color, style}; @@ -29,12 +29,12 @@ use cluster_test::{ suite::ExperimentSuite, tx_emitter::{AccountData, EmitJobRequest, EmitThreadParams, TxEmitter}, }; +use diem_config::config::DEFAULT_JSON_RPC_PORT; use futures::{ future::{join_all, FutureExt}, select, }; use itertools::zip; -use libra_config::config::DEFAULT_JSON_RPC_PORT; use std::cmp::min; use tokio::time::{delay_for, delay_until, Instant as TokioInstant}; @@ -46,10 +46,7 @@ struct Args { #[structopt(short = "p", long, use_delimiter = true, requires = "swarm")] peers: Vec, - #[structopt( - long, - help = "If set, tries to connect to a libra-swarm instead of aws" - )] + #[structopt(long, help = "If set, tries to connect to a diem-swarm instead of aws")] swarm: bool, #[structopt( long, @@ -261,7 +258,7 @@ fn setup_log() { if env::var("RUST_LOG").is_err() { env::set_var("RUST_LOG", "info"); } - ::libra_logger::Logger::new().is_async(true).init(); + ::diem_logger::Logger::new().is_async(true).init(); } struct BasicSwarmUtil { @@ -486,7 +483,7 @@ impl ClusterTestRunner { let cluster_swarm = ClusterSwarmKube::new() .await .map_err(|e| format_err!("Failed to initialize ClusterSwarmKube: {}", e))?; - let prometheus_ip = "libra-testnet-prometheus-server.default.svc.cluster.local"; + let prometheus_ip = "diem-testnet-prometheus-server.default.svc.cluster.local"; let grafana_base_url = cluster_swarm .get_grafana_baseurl() .await diff --git a/testsuite/cluster-test/src/prometheus.rs b/testsuite/cluster-test/src/prometheus.rs index f13b40ce24..1f19017080 100644 --- a/testsuite/cluster-test/src/prometheus.rs +++ b/testsuite/cluster-test/src/prometheus.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/report.rs b/testsuite/cluster-test/src/report.rs index ad16959ead..e6dcaea8fb 100644 --- a/testsuite/cluster-test/src/report.rs +++ b/testsuite/cluster-test/src/report.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::tx_emitter::TxStats; diff --git a/testsuite/cluster-test/src/slack.rs b/testsuite/cluster-test/src/slack.rs index 3dd0f466d5..8a5b11d35a 100644 --- a/testsuite/cluster-test/src/slack.rs +++ b/testsuite/cluster-test/src/slack.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/stats.rs b/testsuite/cluster-test/src/stats.rs index a6fedb6986..332c9be284 100644 --- a/testsuite/cluster-test/src/stats.rs +++ b/testsuite/cluster-test/src/stats.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::prometheus::Prometheus; @@ -23,14 +23,14 @@ impl<'a> PrometheusRangeView<'a> { pub fn avg_txns_per_block(&self) -> Option { self.query_avg( "txn_per_block", - "irate(libra_consensus_num_txns_per_block_sum[1m])/irate(libra_consensus_num_txns_per_block_count[1m])".to_string(), + "irate(diem_consensus_num_txns_per_block_sum[1m])/irate(diem_consensus_num_txns_per_block_count[1m])".to_string(), ) } pub fn avg_backup_bytes_per_second(&self) -> Option { self.query_avg( "backup_bytes_per_second", - "sum(irate(libra_backup_service_sent_bytes[1m])) by(peer_id)".to_string(), + "sum(irate(diem_backup_service_sent_bytes[1m])) by(peer_id)".to_string(), ) } } diff --git a/testsuite/cluster-test/src/suite.rs b/testsuite/cluster-test/src/suite.rs index f8b20dd467..a6c5e2f962 100644 --- a/testsuite/cluster-test/src/suite.rs +++ b/testsuite/cluster-test/src/suite.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/cluster-test/src/tx_emitter.rs b/testsuite/cluster-test/src/tx_emitter.rs index ef8223d587..72c3d19295 100644 --- a/testsuite/cluster-test/src/tx_emitter.rs +++ b/testsuite/cluster-test/src/tx_emitter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -11,21 +11,21 @@ use std::{ }; use anyhow::{format_err, Result}; -use itertools::zip; -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, test_utils::KeyPair, traits::Uniform, }; -use libra_logger::*; -use libra_types::{ +use diem_logger::*; +use diem_types::{ account_address::AccountAddress, - account_config::{self, testnet_dd_account_address, COIN1_NAME}, + account_config::{self, testnet_dd_account_address, XUS_NAME}, chain_id::ChainId, transaction::{ authenticator::AuthenticationKey, helpers::create_user_txn, Script, TransactionPayload, }, }; +use itertools::zip; use rand::{ prelude::ThreadRng, rngs::{OsRng, StdRng}, @@ -34,12 +34,12 @@ use rand::{ }; use tokio::runtime::Handle; -use futures::future::{try_join_all, FutureExt}; -use libra_json_rpc_client::{views::AmountView, JsonRpcAsyncClient}; -use libra_types::{ - account_config::{libra_root_address, treasury_compliance_account_address}, +use diem_json_rpc_client::{views::AmountView, JsonRpcAsyncClient}; +use diem_types::{ + account_config::{diem_root_address, treasury_compliance_account_address}, transaction::SignedTransaction, }; +use futures::future::{try_join_all, FutureExt}; use once_cell::sync::Lazy; use std::{ cmp::{max, min}, @@ -308,11 +308,8 @@ impl TxEmitter { }) } - pub async fn load_libra_root_account( - &self, - client: &JsonRpcAsyncClient, - ) -> Result { - self.load_account_with_mint_key(client, libra_root_address()) + pub async fn load_diem_root_account(&self, client: &JsonRpcAsyncClient) -> Result { + self.load_account_with_mint_key(client, diem_root_address()) .await } @@ -329,7 +326,7 @@ impl TxEmitter { pub async fn load_dd_account(&self, client: &JsonRpcAsyncClient) -> Result { let mint_key: Ed25519PrivateKey = generate_key::load_key(DD_KEY); let mint_key_pair: KeyPair = KeyPair::from(mint_key); - let address = libra_types::account_address::from_public_key(&mint_key_pair.public_key); + let address = diem_types::account_address::from_public_key(&mint_key_pair.public_key); let sequence_number = query_sequence_numbers(&client, &[address]) .await .map_err(|e| { @@ -354,7 +351,7 @@ impl TxEmitter { let file = "vasp".to_owned() + index.to_string().as_str() + ".key"; let mint_key: Ed25519PrivateKey = generate_key::load_key(file); let mint_key_pair: KeyPair = KeyPair::from(mint_key); - let address = libra_types::account_address::from_public_key(&mint_key_pair.public_key); + let address = diem_types::account_address::from_public_key(&mint_key_pair.public_key); let sequence_number = query_sequence_numbers(&client, &[address]) .await .map_err(|e| { @@ -395,7 +392,7 @@ impl TxEmitter { }; let balance = retrieve_account_balance(&client, faucet_account.address).await?; for b in balance { - if b.currency.eq(COIN1_NAME) { + if b.currency.eq(XUS_NAME) { info!( "DD account current balances are {}, requested {} coins", b.amount, coins_total @@ -482,7 +479,7 @@ impl TxEmitter { info!("Minting additional {} accounts", num_accounts); let seed_rngs = gen_rng_for_reusable_account(actual_num_seed_accounts); - // For each seed account, create a future and transfer libra from that seed account to new accounts + // For each seed account, create a future and transfer diem from that seed account to new accounts let account_futures = seed_accounts .into_iter() .enumerate() @@ -762,7 +759,7 @@ async fn query_sequence_numbers( } const MAX_GAS_AMOUNT: u64 = 1_000_000; -const GAS_CURRENCY_CODE: &str = COIN1_NAME; +const GAS_CURRENCY_CODE: &str = XUS_NAME; const TXN_EXPIRATION_SECONDS: i64 = 50; const TXN_MAX_WAIT: Duration = Duration::from_secs(TXN_EXPIRATION_SECONDS as u64 + 30); const MAX_TXNS: u64 = 1_000_000; @@ -812,7 +809,7 @@ fn gen_mint_request( let receiver = faucet_account.address; gen_submit_transaction_request( transaction_builder::encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), receiver, num_coins, vec![], @@ -833,7 +830,7 @@ pub fn gen_transfer_txn_request( ) -> SignedTransaction { gen_submit_transaction_request( transaction_builder::encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *receiver, num_coins, vec![], @@ -855,7 +852,7 @@ fn gen_create_child_txn_request( let add_all_currencies = false; gen_submit_transaction_request( transaction_builder::encode_create_child_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *receiver, receiver_auth_key_prefix, add_all_currencies, @@ -875,7 +872,7 @@ fn gen_create_account_txn_request( ) -> SignedTransaction { gen_submit_transaction_request( transaction_builder::encode_create_parent_vasp_account_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), 0, *receiver, auth_key_prefix, @@ -896,7 +893,7 @@ fn gen_mint_txn_request( ) -> SignedTransaction { gen_submit_transaction_request( transaction_builder::encode_peer_to_peer_with_metadata_script( - account_config::coin1_tmp_tag(), + account_config::xus_tag(), *receiver, num_coins, vec![], @@ -911,7 +908,7 @@ fn gen_mint_txn_request( fn gen_random_account(rng: &mut StdRng) -> AccountData { let key_pair = KeyPair::generate(rng); AccountData { - address: libra_types::account_address::from_public_key(&key_pair.public_key), + address: diem_types::account_address::from_public_key(&key_pair.public_key), key_pair, sequence_number: 0, } @@ -944,7 +941,7 @@ async fn gen_reusable_account( rng: &mut StdRng, ) -> Result { let mint_key_pair = KeyPair::generate(rng); - let address = libra_types::account_address::from_public_key(&mint_key_pair.public_key); + let address = diem_types::account_address::from_public_key(&mint_key_pair.public_key); let sequence_number = match query_sequence_numbers(&client, &[address]).await { Ok(v) => v[0], Err(_) => 0, @@ -1033,7 +1030,7 @@ pub async fn execute_and_wait_transactions( account.address ); for request in txn { - libra_retrier::retry_async(libra_retrier::fixed_retry_strategy(5_000, 20), || { + diem_retrier::retry_async(diem_retrier::fixed_retry_strategy(5_000, 20), || { let request = request.clone(); let c = client.clone(); let client_name = format!("{:?}", client); @@ -1058,12 +1055,12 @@ pub async fn execute_and_wait_transactions( r } -/// Create `num_new_accounts` by transferring libra from `source_account`. Return Vec of created +/// Create `num_new_accounts` by transferring diem from `source_account`. Return Vec of created /// accounts async fn create_new_accounts( mut source_account: AccountData, num_new_accounts: usize, - libra_per_new_account: u64, + diem_per_new_account: u64, max_num_accounts_per_batch: u64, mut client: JsonRpcAsyncClient, chain_id: ChainId, @@ -1086,7 +1083,7 @@ async fn create_new_accounts( let requests = gen_create_child_txn_requests( &mut source_account, &batch, - libra_per_new_account, + diem_per_new_account, chain_id, ); execute_and_wait_transactions(&mut client, &mut source_account, requests).await?; @@ -1119,11 +1116,11 @@ async fn create_seed_accounts( Ok(accounts) } -/// Mint `libra_per_new_account` from `minting_account` to each account in `accounts`. +/// Mint `diem_per_new_account` from `minting_account` to each account in `accounts`. async fn mint_to_new_accounts( minting_account: &mut AccountData, accounts: &[AccountData], - libra_per_new_account: u64, + diem_per_new_account: u64, max_num_accounts_per_batch: u64, mut client: JsonRpcAsyncClient, chain_id: ChainId, @@ -1139,7 +1136,7 @@ async fn mint_to_new_accounts( ); let (to_batch, rest) = left.split_at(batch_size + 1); let mint_requests = - gen_mint_txn_requests(minting_account, to_batch, libra_per_new_account, chain_id); + gen_mint_txn_requests(minting_account, to_batch, diem_per_new_account, chain_id); execute_and_wait_transactions(&mut client, minting_account, mint_requests).await?; i += to_batch.len(); left = rest; diff --git a/testsuite/libra-fuzzer/Cargo.toml b/testsuite/diem-fuzzer/Cargo.toml similarity index 66% rename from testsuite/libra-fuzzer/Cargo.toml rename to testsuite/diem-fuzzer/Cargo.toml index 9db281f80a..6b775a6a0b 100644 --- a/testsuite/libra-fuzzer/Cargo.toml +++ b/testsuite/diem-fuzzer/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-fuzzer" +name = "diem-fuzzer" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra fuzzer" +authors = ["Diem Association "] +description = "Diem fuzzer" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" edition = "2018" @@ -24,8 +24,8 @@ rand = "0.7.3" ureq = { version = "1.5.2", features = ["json", "native-tls"], default-features = false } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-proptest-helpers = { path = "../../common/proptest-helpers", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } # List out modules with data structures being fuzzed here. accumulator = { path = "../../storage/accumulator", version = "0.1.0", features = ["fuzzing"] } @@ -34,19 +34,19 @@ consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0", executor = { path = "../../execution/executor", version = "0.1.0", features = ["fuzzing"] } executor-types = { path = "../../execution/executor-types", version = "0.1.0", features = ["fuzzing"] } language-e2e-tests = { path = "../../language/testing-infra/e2e-tests", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"]} -libra-jellyfish-merkle = { path = "../../storage/jellyfish-merkle", version = "0.1.0", features = ["fuzzing"] } -libra-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } -libra-mempool = { path = "../../mempool", version = "0.1.0" } -libra-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0", features = ["fuzzing"]} -libra-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } -libra-vault-client = { path = "../../secure/storage/vault", version = "0.1.0", features = ["fuzzing"] } -libradb = { path = "../../storage/libradb", version = "0.1.0", features = ["fuzzing"] } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features = ["fuzzing"]} +diem-jellyfish-merkle = { path = "../../storage/jellyfish-merkle", version = "0.1.0", features = ["fuzzing"] } +diem-json-rpc = { path = "../../json-rpc", version = "0.1.0", features = ["fuzzing"] } +diem-mempool = { path = "../../mempool", version = "0.1.0" } +diem-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0", features = ["fuzzing"]} +diem-types = { path = "../../types", version = "0.1.0", features = ["fuzzing"] } +diem-vault-client = { path = "../../secure/storage/vault", version = "0.1.0", features = ["fuzzing"] } +diemdb = { path = "../../storage/diemdb", version = "0.1.0", features = ["fuzzing"] } move-vm-types = { path = "../../language/move-vm/types", version = "0.1.0", features = ["fuzzing"] } move-core-types = { path = "../../language/move-core/types", version = "0.1.0", features = ["fuzzing"] } network = { path = "../../network", version = "0.1.0", features = ["fuzzing"] } safety-rules = { path = "../../consensus/safety-rules", version = "0.1.0", features = ["fuzzing", "testing"] } -state-synchronizer = { path = "../../state-synchronizer", version = "0.1.0", features = ["fuzzing", "libradb"] } +state-synchronizer = { path = "../../state-synchronizer", version = "0.1.0", features = ["fuzzing", "diemdb"] } storage-interface = { path = "../../storage/storage-interface", version = "0.1.0" } vm = { path = "../../language/vm", version = "0.1.0", features = ["fuzzing"] } diff --git a/testsuite/libra-fuzzer/README.md b/testsuite/diem-fuzzer/README.md similarity index 85% rename from testsuite/libra-fuzzer/README.md rename to testsuite/diem-fuzzer/README.md index 5033903a22..a96737ff8b 100644 --- a/testsuite/libra-fuzzer/README.md +++ b/testsuite/diem-fuzzer/README.md @@ -1,6 +1,6 @@ -## Fuzzing support for Libra +## Fuzzing support for Diem -This crate contains support for fuzzing Libra targets. This support sincludes: +This crate contains support for fuzzing Diem targets. This support sincludes: * corpus generation with `proptest` * automatically running failing examples with `cargo test` @@ -11,21 +11,21 @@ Install [`cargo-fuzz`](https://rust-fuzz.github.io/book/cargo-fuzz.html) if not ### Fuzzing a target -First, switch to the directory this README is in: `cd testsuite/libra-fuzzer`. +First, switch to the directory this README is in: `cd testsuite/diem-fuzzer`. -To list out known fuzz targets, run `cargo run --bin libra-fuzzer list`. +To list out known fuzz targets, run `cargo run --bin diem-fuzzer list`. To be effective, fuzzing requires a corpus of existing inputs. This crate contains support for generating corpuses with `proptest`. Generate -a corpus with `cargo run --bin libra-fuzzer generate `. +a corpus with `cargo run --bin diem-fuzzer generate `. Once a corpus has been generated, the fuzzer is ready to use, simply run: ``` -RUSTC_BOOTSTRAP=1 cargo run --bin libra-fuzzer --release fuzz +RUSTC_BOOTSTRAP=1 cargo run --bin diem-fuzzer --release fuzz ``` -For more options, run `cargo run --bin libra-fuzzer -- --help`. Note that `RUSTC_BOOTSTRAP=1` is +For more options, run `cargo run --bin diem-fuzzer -- --help`. Note that `RUSTC_BOOTSTRAP=1` is required as `cargo fuzz` uses unstable compiler flags. ### Adding a new target @@ -36,7 +36,7 @@ creating a new type and implementing `FuzzTargetImpl` for it. For examples, see the existing implementations in `src/fuzz_targets/`. Remember to add your target to `ALL_TARGETS` in `src/fuzz_targets.rs`. -Once that has been done, `cargo run --bin libra-fuzzer list` should list your new target. +Once that has been done, `cargo run --bin diem-fuzzer list` should list your new target. ### Debugging and testing artifacts @@ -86,7 +86,7 @@ See [Google OSS-Fuzz's documentation on reproducing bugs](https://google.github. To obtain a flamegraph of a harness test, run the following command: ```sh -FUZZ_TARGET=compiled_module cargo flamegraph -p libra-fuzzer --bin flamegraph +FUZZ_TARGET=compiled_module cargo flamegraph -p diem-fuzzer --bin flamegraph ``` It is good to first generate some corpus and run the fuzzer over it for a bit (to find new corpus). The larger corpus, the better flamegraph you will obtain. @@ -96,7 +96,7 @@ It is good to first generate some corpus and run the fuzzer over it for a bit (t To test coverage of our fuzzers you can run the following command with [grcov](https://github.com/mozilla/grcov): ```sh -RUSTFLAGS='--cfg feature="fuzzing"' CORPUS_PATH=fuzz/corpus cargo xtest --html-cov-dir -p libra-fuzzer -- coverage +RUSTFLAGS='--cfg feature="fuzzing"' CORPUS_PATH=fuzz/corpus cargo xtest --html-cov-dir -p diem-fuzzer -- coverage ``` ### Building a single fuzzer @@ -108,7 +108,7 @@ For this, build.rs can create a fuzzer binary based on an environement variable. Use it as such: ```sh -cd libra/testsuite/libra-fuzzer +cd diem/testsuite/diem-fuzzer fuzz/google-oss-fuzz/build_fuzzer.sh ConsensusProposal . ./ConsensusProposal ``` @@ -131,7 +131,7 @@ sudo xcode-select -s /Applications/Xcode_X.Y.Z.app If you get a linker error like ```sh -$ RUSTC_BOOTSTRAP=1 cargo run --bin libra-fuzzer --release fuzz +$ RUSTC_BOOTSTRAP=1 cargo run --bin diem-fuzzer --release fuzz # ... error: linking with `cc` failed: exit code: 1 | @@ -148,7 +148,7 @@ error: aborting due to previous error This is probably due to an issue in core-foundation-rs (https://github.com/servo/core-foundation-rs/pull/357) that was fixed in the latest version, but one of our transitive dependencies `native-tls` only has the update in its `master` branch. To fix this problem, add -the following to the end of `libra/Cargo.toml`: +the following to the end of `diem/Cargo.toml`: ```toml [patch.crates-io] diff --git a/testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc b/testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc similarity index 99% rename from testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc rename to testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc index 66aea501bb..9002dd73e9 100644 Binary files a/testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc and b/testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/crash-5d65cfbc differ diff --git a/testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 b/testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 similarity index 99% rename from testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 rename to testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 index 3e94cfea3b..652cad16c2 100644 Binary files a/testsuite/libra-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 and b/testsuite/diem-fuzzer/artifacts/CompiledModuleTarget/oom-54725f11 differ diff --git a/testsuite/libra-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 b/testsuite/diem-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 similarity index 93% rename from testsuite/libra-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 rename to testsuite/diem-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 index a064a22401..34a9c55934 100644 Binary files a/testsuite/libra-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 and b/testsuite/diem-fuzzer/artifacts/ConsensusProposal/crash-34c5631cb9944549796a14547cef7223a6ab78d6 differ diff --git a/testsuite/libra-fuzzer/artifacts/RpcInboundRequest/extra_trailing_byte_triggers_rpc_cancel b/testsuite/diem-fuzzer/artifacts/RpcInboundRequest/extra_trailing_byte_triggers_rpc_cancel similarity index 100% rename from testsuite/libra-fuzzer/artifacts/RpcInboundRequest/extra_trailing_byte_triggers_rpc_cancel rename to testsuite/diem-fuzzer/artifacts/RpcInboundRequest/extra_trailing_byte_triggers_rpc_cancel diff --git a/testsuite/libra-fuzzer/artifacts/ValueTarget/oom-9761fc3aeea49b5f4420ff159ca3f8a6fb0502d0 b/testsuite/diem-fuzzer/artifacts/ValueTarget/oom-9761fc3aeea49b5f4420ff159ca3f8a6fb0502d0 similarity index 100% rename from testsuite/libra-fuzzer/artifacts/ValueTarget/oom-9761fc3aeea49b5f4420ff159ca3f8a6fb0502d0 rename to testsuite/diem-fuzzer/artifacts/ValueTarget/oom-9761fc3aeea49b5f4420ff159ca3f8a6fb0502d0 diff --git a/testsuite/libra-fuzzer/artifacts/ValueTarget/oom-ce8ba3d1 b/testsuite/diem-fuzzer/artifacts/ValueTarget/oom-ce8ba3d1 similarity index 100% rename from testsuite/libra-fuzzer/artifacts/ValueTarget/oom-ce8ba3d1 rename to testsuite/diem-fuzzer/artifacts/ValueTarget/oom-ce8ba3d1 diff --git a/testsuite/libra-fuzzer/artifacts/VaultTransitExportResponse/insufficient_key_len_slicing_error b/testsuite/diem-fuzzer/artifacts/VaultTransitExportResponse/insufficient_key_len_slicing_error similarity index 100% rename from testsuite/libra-fuzzer/artifacts/VaultTransitExportResponse/insufficient_key_len_slicing_error rename to testsuite/diem-fuzzer/artifacts/VaultTransitExportResponse/insufficient_key_len_slicing_error diff --git a/testsuite/libra-fuzzer/fuzz/.gitignore b/testsuite/diem-fuzzer/fuzz/.gitignore similarity index 100% rename from testsuite/libra-fuzzer/fuzz/.gitignore rename to testsuite/diem-fuzzer/fuzz/.gitignore diff --git a/testsuite/libra-fuzzer/fuzz/Cargo.toml b/testsuite/diem-fuzzer/fuzz/Cargo.toml similarity index 64% rename from testsuite/libra-fuzzer/fuzz/Cargo.toml rename to testsuite/diem-fuzzer/fuzz/Cargo.toml index 3d9e5d1e15..db08dd15d9 100644 --- a/testsuite/libra-fuzzer/fuzz/Cargo.toml +++ b/testsuite/diem-fuzzer/fuzz/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "libra-fuzz" +name = "diem-fuzz" version = "0.1.0" edition = "2018" -authors = ["Libra Association "] -description = "Libra fuzzer fuzz" +authors = ["Diem Association "] +description = "Diem fuzzer fuzz" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false @@ -14,8 +14,8 @@ cargo-fuzz = true [dependencies] libfuzzer-sys = "=0.3.2" -libra-fuzzer = { path = "..", version = "0.1.0" } -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-fuzzer = { path = "..", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } once_cell = "1.4.1" # Prevent this from interfering with workspaces diff --git a/testsuite/libra-fuzzer/fuzz/build.rs b/testsuite/diem-fuzzer/fuzz/build.rs similarity index 95% rename from testsuite/libra-fuzzer/fuzz/build.rs rename to testsuite/diem-fuzzer/fuzz/build.rs index 4f546670aa..c4646de62e 100644 --- a/testsuite/libra-fuzzer/fuzz/build.rs +++ b/testsuite/diem-fuzzer/fuzz/build.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use std::{env, fs::File, io::prelude::*, path::PathBuf}; diff --git a/testsuite/libra-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs b/testsuite/diem-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs similarity index 88% rename from testsuite/libra-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs rename to testsuite/diem-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs index 6a46e00443..f0fb5d86b2 100644 --- a/testsuite/libra-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs +++ b/testsuite/diem-fuzzer/fuzz/fuzz_targets/fuzz_runner.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![no_main] +use diem_fuzzer::FuzzTarget; use libfuzzer_sys::fuzz_target; -use libra_fuzzer::FuzzTarget; use once_cell::sync::Lazy; use std::process; diff --git a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build.sh b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build.sh similarity index 82% rename from testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build.sh rename to testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build.sh index ca10fa3265..3bcdc26b7b 100755 --- a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build.sh +++ b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build.sh @@ -1,9 +1,9 @@ #!/bin/bash -eux -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # This build script is used with Google OSS-Fuzz to build fuzzer with their docker container. -# It must be called from libra/testsuite/libra-fuzzer +# It must be called from diem/testsuite/diem-fuzzer # usage: OUT=out_dir ./build.sh # recipe: @@ -16,7 +16,7 @@ cargo fetch # 1. list fuzzers -cargo run --bin libra-fuzzer list --no-desc > fuzzer_list +cargo run --bin diem-fuzzer list --no-desc > fuzzer_list # 2. build corpus and move to $OUT cat fuzzer_list | while read -r line diff --git a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh similarity index 77% rename from testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh rename to testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh index fe515557cc..d24d6d88d0 100755 --- a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh +++ b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_corpus.sh @@ -1,5 +1,5 @@ #!/bin/bash -eux -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # this file generates 128 corpus files for a target, zips it all, and move zipfile to an outdir @@ -8,6 +8,6 @@ export SINGLE_FUZZ_TARGET="$1" export OUT_DIR="$2" -cargo run --bin libra-fuzzer generate -n 128 $SINGLE_FUZZ_TARGET +cargo run --bin diem-fuzzer generate -n 128 $SINGLE_FUZZ_TARGET zip -r $OUT_DIR/"$SINGLE_FUZZ_TARGET"_seed_corpus.zip fuzz/corpus/$SINGLE_FUZZ_TARGET rm -r fuzz/corpus/$SINGLE_FUZZ_TARGET diff --git a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh similarity index 92% rename from testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh rename to testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh index 8615cc540a..681cdbb488 100755 --- a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh +++ b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/build_fuzzer.sh @@ -1,5 +1,5 @@ #!/bin/bash -eux -# Copyright (c) The Libra Core Contributors +# Copyright (c) The Diem Core Contributors # SPDX-License-Identifier: Apache-2.0 # this file builds a single fuzzer target @@ -43,4 +43,4 @@ export RUSTFLAGS # build cargo build --manifest-path fuzz/Cargo.toml --bin fuzzer_builder --target $TARGET # move fuzzer to $OUT -mv $SRC/libra/target/$TARGET/debug/fuzzer_builder $OUT_DIR/$SINGLE_FUZZ_TARGET +mv $SRC/diem/target/$TARGET/debug/fuzzer_builder $OUT_DIR/$SINGLE_FUZZ_TARGET diff --git a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs similarity index 78% rename from testsuite/libra-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs rename to testsuite/diem-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs index a2a6e09350..e1c8c2638d 100755 --- a/testsuite/libra-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs +++ b/testsuite/diem-fuzzer/fuzz/google-oss-fuzz/fuzzer_builder.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![no_main] +use diem_fuzzer::FuzzTarget; use libfuzzer_sys::fuzz_target; -use libra_fuzzer::FuzzTarget; // contains FUZZ_TARGET include!(concat!(env!("OUT_DIR"), "/fuzzer.rs")); diff --git a/testsuite/diem-fuzzer/lsan_suppressions.txt b/testsuite/diem-fuzzer/lsan_suppressions.txt new file mode 100644 index 0000000000..55d13aa959 --- /dev/null +++ b/testsuite/diem-fuzzer/lsan_suppressions.txt @@ -0,0 +1,4 @@ +leak:lazy_static +leak:backtrace +leak:libc +leak:diem_mempool::tests::mocks::MockSharedMempool diff --git a/testsuite/libra-fuzzer/src/bin/flamegraph.rs b/testsuite/diem-fuzzer/src/bin/flamegraph.rs similarity index 93% rename from testsuite/libra-fuzzer/src/bin/flamegraph.rs rename to testsuite/diem-fuzzer/src/bin/flamegraph.rs index fab96da65b..c3fb5fe986 100644 --- a/testsuite/libra-fuzzer/src/bin/flamegraph.rs +++ b/testsuite/diem-fuzzer/src/bin/flamegraph.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_fuzzer::FuzzTarget; +use diem_fuzzer::FuzzTarget; use std::{env, fs, path::PathBuf}; // diff --git a/testsuite/libra-fuzzer/src/bin/investigate.rs b/testsuite/diem-fuzzer/src/bin/investigate.rs similarity index 89% rename from testsuite/libra-fuzzer/src/bin/investigate.rs rename to testsuite/diem-fuzzer/src/bin/investigate.rs index 880c4a4fd4..5156d4099d 100644 --- a/testsuite/libra-fuzzer/src/bin/investigate.rs +++ b/testsuite/diem-fuzzer/src/bin/investigate.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_fuzzer::FuzzTarget; +use diem_fuzzer::FuzzTarget; use std::{fs, path::PathBuf}; use structopt::StructOpt; #[derive(Debug, StructOpt)] #[structopt( - name = "Libra-Fuzzer Investigator", - author = "The Libra Association", + name = "Diem-Fuzzer Investigator", + author = "The Diem Association", about = "Utility tool to investigate fuzzing artifacts" )] struct Args { diff --git a/testsuite/libra-fuzzer/src/commands.rs b/testsuite/diem-fuzzer/src/commands.rs similarity index 97% rename from testsuite/libra-fuzzer/src/commands.rs rename to testsuite/diem-fuzzer/src/commands.rs index fac0eddc97..84f4741bae 100644 --- a/testsuite/libra-fuzzer/src/commands.rs +++ b/testsuite/diem-fuzzer/src/commands.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTarget; use anyhow::{bail, format_err, Context, Result}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use sha1::{Digest, Sha1}; use std::{ env, diff --git a/testsuite/libra-fuzzer/src/coverage.rs b/testsuite/diem-fuzzer/src/coverage.rs similarity index 97% rename from testsuite/libra-fuzzer/src/coverage.rs rename to testsuite/diem-fuzzer/src/coverage.rs index 148c8bdeed..1bb6807b32 100644 --- a/testsuite/libra-fuzzer/src/coverage.rs +++ b/testsuite/diem-fuzzer/src/coverage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTarget; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets.rs b/testsuite/diem-fuzzer/src/fuzz_targets.rs similarity index 99% rename from testsuite/libra-fuzzer/src/fuzz_targets.rs rename to testsuite/diem-fuzzer/src/fuzz_targets.rs index b2a197906e..c46b0e2d17 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{FuzzTarget, FuzzTargetImpl}; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/consensus.rs b/testsuite/diem-fuzzer/src/fuzz_targets/consensus.rs similarity index 86% rename from testsuite/libra-fuzzer/src/fuzz_targets/consensus.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/consensus.rs index 92715512dd..574c381702 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/consensus.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/consensus.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTargetImpl; use consensus::round_manager_fuzzing::{fuzz_proposal, generate_corpus_proposal}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; #[derive(Clone, Debug, Default)] pub struct ConsensusProposal; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/executor.rs b/testsuite/diem-fuzzer/src/fuzz_targets/executor.rs similarity index 94% rename from testsuite/libra-fuzzer/src/fuzz_targets/executor.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/executor.rs index cfc54ad485..e9e0a93991 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/executor.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/executor.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use executor::fuzzing::{fuzz_execute_and_commit_blocks, fuzz_execute_and_commit_chunk}; -use libra_crypto::HashValue; -use libra_proptest_helpers::ValueGenerator; -use libra_types::{ +use diem_crypto::HashValue; +use diem_proptest_helpers::ValueGenerator; +use diem_types::{ ledger_info::LedgerInfoWithSignatures, transaction::{Transaction, TransactionListWithProof}, }; +use executor::fuzzing::{fuzz_execute_and_commit_blocks, fuzz_execute_and_commit_chunk}; use proptest::{collection::vec, prelude::*}; #[derive(Clone, Debug, Default)] diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/json_rpc_service.rs b/testsuite/diem-fuzzer/src/fuzz_targets/json_rpc_service.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/json_rpc_service.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/json_rpc_service.rs index e2ba0fa629..8a212112c2 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/json_rpc_service.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/json_rpc_service.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTargetImpl; -use libra_json_rpc::{ +use diem_json_rpc::{ fuzzing::{fuzzer, generate_corpus, method_fuzzer}, gen_request_params, }; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; const ADDRESS: &str = "000000000000000000000000000000dd"; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/mempool.rs b/testsuite/diem-fuzzer/src/fuzz_targets/mempool.rs similarity index 87% rename from testsuite/libra-fuzzer/src/fuzz_targets/mempool.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/mempool.rs index 42396ace16..7a96c9ead4 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/mempool.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/mempool.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_mempool::fuzzing::{ +use diem_mempool::fuzzing::{ mempool_incoming_transactions_strategy, test_mempool_process_incoming_transactions_impl, }; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; #[derive(Debug, Default)] pub struct MempoolIncomingTransactions; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/move_vm.rs b/testsuite/diem-fuzzer/src/fuzz_targets/move_vm.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/move_vm.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/move_vm.rs index 6a18a40cdd..cab45ca9af 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/move_vm.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/move_vm.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTargetImpl; use anyhow::{bail, format_err, Result}; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use move_core_types::value::{MoveKindInfo, MoveTypeLayout}; use move_vm_types::values::{prop::layout_kinfo_and_value_strategy, Value}; use std::io::Cursor; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/network.rs b/testsuite/diem-fuzzer/src/fuzz_targets/network.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/network.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/network.rs index 05a1dd4029..c5df7f4095 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/network.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/network.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; // // Noise wrapper diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/proof.rs b/testsuite/diem-fuzzer/src/fuzz_targets/proof.rs similarity index 98% rename from testsuite/libra-fuzzer/src/fuzz_targets/proof.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/proof.rs index dd425c0bec..ca8ca85e62 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/proof.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/proof.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_crypto::HashValue; -use libra_proptest_helpers::ValueGenerator; -use libra_types::{ +use diem_crypto::HashValue; +use diem_proptest_helpers::ValueGenerator; +use diem_types::{ account_state_blob::AccountStateBlob, ledger_info::LedgerInfo, proof::{ diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/safety_rules.rs b/testsuite/diem-fuzzer/src/fuzz_targets/safety_rules.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/safety_rules.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/safety_rules.rs index d8b81f5d11..5477c9146c 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/safety_rules.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/safety_rules.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use safety_rules::fuzzing_utils::{ arb_block_data, arb_epoch_change_proof, arb_maybe_signed_vote_proposal, arb_safety_rules_input, arb_timeout, diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs b/testsuite/diem-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs similarity index 95% rename from testsuite/libra-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs index 76b246bd07..5de8594600 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/secure_json_rpc_client.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_proptest_helpers::ValueGenerator; -use libra_secure_json_rpc::{ +use diem_proptest_helpers::ValueGenerator; +use diem_secure_json_rpc::{ fuzzing::{ arb_account_state_response, arb_submit_transaction_response, arb_transaction_status_response, diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/secure_storage_vault.rs b/testsuite/diem-fuzzer/src/fuzz_targets/secure_storage_vault.rs similarity index 98% rename from testsuite/libra-fuzzer/src/fuzz_targets/secure_storage_vault.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/secure_storage_vault.rs index baba14e52f..d440078a14 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/secure_storage_vault.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/secure_storage_vault.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_proptest_helpers::ValueGenerator; -use libra_vault_client::{ +use diem_proptest_helpers::ValueGenerator; +use diem_vault_client::{ fuzzing::{ arb_generic_response, arb_policy_list_response, arb_secret_list_response, arb_secret_read_response, arb_token_create_response, arb_token_renew_response, diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/state_sync.rs b/testsuite/diem-fuzzer/src/fuzz_targets/state_sync.rs similarity index 88% rename from testsuite/libra-fuzzer/src/fuzz_targets/state_sync.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/state_sync.rs index 014f08d1a3..492be8bfb5 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/state_sync.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/state_sync.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use state_synchronizer::fuzzing::{state_sync_msg_strategy, test_state_sync_msg_fuzzer_impl}; #[derive(Debug, Default)] diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/storage.rs b/testsuite/diem-fuzzer/src/fuzz_targets/storage.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/storage.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/storage.rs index fe52d1c3d1..bc8c08fff9 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/storage.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/storage.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; @@ -7,13 +7,13 @@ use accumulator::test_helpers::{ test_append_empty_impl, test_append_many_impl, test_consistency_proof_impl, test_get_frozen_subtree_hashes_impl, test_proof_impl, test_range_proof_impl, }; -use libra_jellyfish_merkle::test_helper::{ +use diem_jellyfish_merkle::test_helper::{ arb_existent_kvs_and_nonexistent_keys, arb_kv_pair_with_distinct_last_nibble, arb_tree_with_index, test_get_range_proof, test_get_with_proof, test_get_with_proof_with_distinct_last_nibble, }; -use libra_proptest_helpers::ValueGenerator; -use libradb::{ +use diem_proptest_helpers::ValueGenerator; +use diemdb::{ schema::fuzzing::fuzz_decode, test_helper::arb_blocks_to_commit, test_save_blocks_impl, }; use proptest::{collection::vec, prelude::*}; diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/transaction.rs b/testsuite/diem-fuzzer/src/fuzz_targets/transaction.rs similarity index 97% rename from testsuite/libra-fuzzer/src/fuzz_targets/transaction.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/transaction.rs index c0820eb097..fae84fae78 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/transaction.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/transaction.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{corpus_from_strategy, fuzz_data_to_value, FuzzTargetImpl}; +use diem_proptest_helpers::ValueGenerator; +use diem_types::transaction::SignedTransaction; use language_e2e_tests::account_universe::{ all_transactions_strategy, log_balance_strategy, run_and_assert_universe, AUTransactionGen, AccountUniverseGen, }; -use libra_proptest_helpers::ValueGenerator; -use libra_types::transaction::SignedTransaction; use once_cell::sync::Lazy; use proptest::{ collection::vec, diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/vm.rs b/testsuite/diem-fuzzer/src/fuzz_targets/vm.rs similarity index 91% rename from testsuite/libra-fuzzer/src/fuzz_targets/vm.rs rename to testsuite/diem-fuzzer/src/fuzz_targets/vm.rs index c46291f5c3..44917e3282 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets/vm.rs +++ b/testsuite/diem-fuzzer/src/fuzz_targets/vm.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::FuzzTargetImpl; -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use proptest::prelude::*; use vm::file_format::{CompiledModule, CompiledModuleMut}; diff --git a/testsuite/libra-fuzzer/src/lib.rs b/testsuite/diem-fuzzer/src/lib.rs similarity index 97% rename from testsuite/libra-fuzzer/src/lib.rs rename to testsuite/diem-fuzzer/src/lib.rs index 4725eb2c35..60b416317b 100644 --- a/testsuite/libra-fuzzer/src/lib.rs +++ b/testsuite/diem-fuzzer/src/lib.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_proptest_helpers::ValueGenerator; +use diem_proptest_helpers::ValueGenerator; use proptest::{ strategy::{Strategy, ValueTree}, test_runner::{self, RngAlgorithm, TestRunner}, diff --git a/testsuite/libra-fuzzer/src/main.rs b/testsuite/diem-fuzzer/src/main.rs similarity index 97% rename from testsuite/libra-fuzzer/src/main.rs rename to testsuite/diem-fuzzer/src/main.rs index b6b00b7309..82b13b6efc 100644 --- a/testsuite/libra-fuzzer/src/main.rs +++ b/testsuite/diem-fuzzer/src/main.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Helpers for fuzz testing. -use libra_fuzzer::{commands, FuzzTarget}; +use diem_fuzzer::{commands, FuzzTarget}; use once_cell::sync::Lazy; use std::{env, ffi::OsString, fs, path::PathBuf}; use structopt::StructOpt; #[derive(Debug, StructOpt)] -#[structopt(name = "fuzzer", about = "Libra fuzzer")] +#[structopt(name = "fuzzer", about = "Diem fuzzer")] struct Opt { /// Print extended debug output #[structopt(long = "debug")] diff --git a/testsuite/libra-fuzzer/tests/artifacts.rs b/testsuite/diem-fuzzer/tests/artifacts.rs similarity index 97% rename from testsuite/libra-fuzzer/tests/artifacts.rs rename to testsuite/diem-fuzzer/tests/artifacts.rs index 2cd4959213..49e317ea69 100644 --- a/testsuite/libra-fuzzer/tests/artifacts.rs +++ b/testsuite/diem-fuzzer/tests/artifacts.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Test artifacts: examples known to have crashed in the past. -use libra_fuzzer::FuzzTarget; +use diem_fuzzer::FuzzTarget; use rusty_fork::{fork, rusty_fork_id}; use stats_alloc::{Region, StatsAlloc, INSTRUMENTED_SYSTEM}; use std::{alloc::System, env, fs, path::Path}; diff --git a/testsuite/diem-swarm/Cargo.toml b/testsuite/diem-swarm/Cargo.toml new file mode 100644 index 0000000000..ccd3c1c355 --- /dev/null +++ b/testsuite/diem-swarm/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "diem-swarm" +version = "0.1.0" +authors = ["Diem Association "] +description = "Diem swarm" +repository = "https://github.com/libra/libra" +homepage = "https://diem.com" +license = "Apache-2.0" +publish = false +edition = "2018" + +[dependencies] +anyhow = "1.0.34" +ctrlc = { version = "3.1.7", default-features = false } +reqwest = { version = "0.10.9", features = ["blocking"], default-features = false } +structopt = "0.3.21" +thiserror = "1.0.22" +diem-config = { path = "../../config", version = "0.1.0", features = ["fuzzing"] } +debug-interface = { path = "../../common/debug-interface", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/testsuite/libra-swarm/src/client.rs b/testsuite/diem-swarm/src/client.rs similarity index 94% rename from testsuite/libra-swarm/src/client.rs rename to testsuite/diem-swarm/src/client.rs index 064cd5bbda..87f02af4fd 100644 --- a/testsuite/libra-swarm/src/client.rs +++ b/testsuite/diem-swarm/src/client.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; -use libra_types::{chain_id::ChainId, waypoint::Waypoint}; +use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use std::{ io, path::Path, @@ -40,7 +40,7 @@ impl InteractiveClient { pub fn new_with_inherit_io( cli_bin_path: &Path, port: u16, - libra_root_key_path: &Path, + diem_root_key_path: &Path, mnemonic_file_path: &Path, waypoint: Waypoint, ) -> Self { @@ -55,9 +55,9 @@ impl InteractiveClient { .arg(format!("http://localhost:{}", port)) .arg("-m") .arg( - libra_root_key_path + diem_root_key_path .canonicalize() - .expect("Unable to get canonical path of libra root key file") + .expect("Unable to get canonical path of diem root key file") .to_str() .unwrap(), ) diff --git a/testsuite/libra-swarm/src/faucet.rs b/testsuite/diem-swarm/src/faucet.rs similarity index 93% rename from testsuite/libra-swarm/src/faucet.rs rename to testsuite/diem-swarm/src/faucet.rs index 93fc32cd66..ff48c57d36 100644 --- a/testsuite/libra-swarm/src/faucet.rs +++ b/testsuite/diem-swarm/src/faucet.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{format_err, Context, Result}; -use libra_types::chain_id::ChainId; +use diem_types::chain_id::ChainId; use reqwest::{blocking, StatusCode, Url}; use std::{ path::Path, @@ -38,7 +38,7 @@ impl Process { faucet_bin_path: &Path, port: u16, server_port: u16, - libra_root_key_path: &Path, + diem_root_key_path: &Path, ) -> Self { Self { port, @@ -49,9 +49,9 @@ impl Process { .arg(format!("{}", port)) .arg("-m") .arg( - libra_root_key_path + diem_root_key_path .canonicalize() - .expect("Unable to get canonical path of libra root key file") + .expect("Unable to get canonical path of diem root key file") .to_str() .unwrap(), ) diff --git a/testsuite/libra-swarm/src/lib.rs b/testsuite/diem-swarm/src/lib.rs similarity index 71% rename from testsuite/libra-swarm/src/lib.rs rename to testsuite/diem-swarm/src/lib.rs index f36e272176..e724618912 100644 --- a/testsuite/libra-swarm/src/lib.rs +++ b/testsuite/diem-swarm/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] diff --git a/testsuite/libra-swarm/src/main.rs b/testsuite/diem-swarm/src/main.rs similarity index 81% rename from testsuite/libra-swarm/src/main.rs rename to testsuite/diem-swarm/src/main.rs index d60ab37421..dca7f98583 100644 --- a/testsuite/libra-swarm/src/main.rs +++ b/testsuite/diem-swarm/src/main.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] -use libra_config::config::NodeConfig; -use libra_genesis_tool::config_builder::FullnodeType; -use libra_swarm::{client, faucet, swarm::LibraSwarm}; -use libra_temppath::TempPath; -use libra_types::chain_id::ChainId; +use diem_config::config::NodeConfig; +use diem_genesis_tool::config_builder::FullnodeType; +use diem_swarm::{client, faucet, swarm::DiemSwarm}; +use diem_temppath::TempPath; +use diem_types::chain_id::ChainId; use std::path::Path; use structopt::StructOpt; #[derive(Debug, StructOpt)] -#[structopt(about = "Libra swarm to start local nodes")] +#[structopt(about = "Diem swarm to start local nodes")] struct Args { /// Number of nodes to start (1 by default) #[structopt(short = "n", long, default_value = "1")] @@ -20,7 +20,7 @@ struct Args { /// Start client #[structopt(short = "s", long, requires("cli-path"))] pub start_client: bool, - /// Directory used by launch_swarm to output LibraNodes' config files, logs, libradb, etc, + /// Directory used by launch_swarm to output DiemNodes' config files, logs, diemdb, etc, /// such that user can still inspect them after exit. /// If unspecified, a temporary dir will be used and auto deleted. #[structopt(short = "c", long)] @@ -33,9 +33,9 @@ struct Args { /// Used for manual testing faucet service integration. #[structopt(short = "m", long, requires("faucet-path"))] pub start_faucet: bool, - /// Path to the libra-node binary + /// Path to the diem-node binary #[structopt(long)] - pub libra_node: String, + pub diem_node: String, /// Path to the cli binary #[structopt(long)] @@ -50,10 +50,10 @@ fn main() { let num_nodes = args.num_nodes; let num_full_nodes = args.num_full_nodes; - libra_logger::Logger::new().init(); + diem_logger::Logger::new().init(); - let mut validator_swarm = LibraSwarm::configure_validator_swarm( - args.libra_node.as_ref(), + let mut validator_swarm = DiemSwarm::configure_validator_swarm( + args.diem_node.as_ref(), num_nodes, args.config_dir.clone(), None, @@ -62,8 +62,8 @@ fn main() { let mut full_node_swarm = if num_full_nodes > 0 { Some( - LibraSwarm::configure_fn_swarm( - args.libra_node.as_ref(), + DiemSwarm::configure_fn_swarm( + args.diem_node.as_ref(), None, /* config dir */ None, &validator_swarm.config, @@ -83,11 +83,11 @@ fn main() { .expect("Failed to launch full node swarm"); } - let libra_root_key_path = &validator_swarm.config.libra_root_key_path; + let diem_root_key_path = &validator_swarm.config.diem_root_key_path; let validator_config = NodeConfig::load(&validator_swarm.config.config_files[0]).unwrap(); let waypoint = validator_config.base.waypoint.waypoint(); - println!("To run the Libra CLI client in a separate process and connect to the validator nodes you just spawned, use this command:"); + println!("To run the Diem CLI client in a separate process and connect to the validator nodes you just spawned, use this command:"); println!( "\tcli -u {} -m {:?} --waypoint {} --chain-id {:?}", @@ -95,7 +95,7 @@ fn main() { "http://localhost:{}", validator_config.json_rpc.address.port() ), - libra_root_key_path, + diem_root_key_path, waypoint, ChainId::test().id() ); @@ -118,7 +118,7 @@ fn main() { println!("To run transaction generator run:"); println!( "\tcluster-test --mint-file {:?} --swarm --peers {:?} --emit-tx --workers-per-ac 1", - libra_root_key_path, node_address_list, + diem_root_key_path, node_address_list, ); let node_address_list = ports @@ -129,7 +129,7 @@ fn main() { println!("To run health check:"); println!( "\tcluster-test --mint-file {:?} --swarm --peers {:?} --health-check --duration 30", - libra_root_key_path, node_address_list, + diem_root_key_path, node_address_list, ); if let Some(ref swarm) = full_node_swarm { @@ -141,21 +141,21 @@ fn main() { "http://localhost:{}", full_node_config.json_rpc.address.port() ), - libra_root_key_path, + diem_root_key_path, waypoint, ChainId::test().id(), ); } let faucet = if args.start_faucet { - let faucet_port = libra_config::utils::get_available_port(); + let faucet_port = diem_config::utils::get_available_port(); let server_port = validator_swarm.get_client_port(0); println!("Starting faucet service at port: {}", faucet_port); let process = faucet::Process::start( args.faucet_path.as_ref().unwrap().as_ref(), faucet_port, server_port, - Path::new(&libra_root_key_path), + Path::new(&diem_root_key_path), ); println!("Waiting for faucet connectivity"); process @@ -182,7 +182,7 @@ fn main() { client::InteractiveClient::new_with_inherit_io( args.cli_path.as_ref().unwrap().as_ref(), port, - Path::new(&libra_root_key_path), + Path::new(&diem_root_key_path), &tmp_mnemonic_file.path(), waypoint, ) @@ -191,7 +191,7 @@ fn main() { let _output = client.output().expect("Failed to wait on child"); println!("Exit client."); } else { - // Explicitly capture CTRL-C to drop LibraSwarm. + // Explicitly capture CTRL-C to drop DiemSwarm. let (tx, rx) = std::sync::mpsc::channel(); ctrlc::set_handler(move || { tx.send(()) @@ -207,5 +207,5 @@ fn main() { println!("Please manually cleanup {:?} after inspection", dir); } - println!("Exit libra-swarm."); + println!("Exit diem-swarm."); } diff --git a/testsuite/libra-swarm/src/swarm.rs b/testsuite/diem-swarm/src/swarm.rs similarity index 88% rename from testsuite/libra-swarm/src/swarm.rs rename to testsuite/diem-swarm/src/swarm.rs index 6cdab6bc0f..7860e8e22c 100644 --- a/testsuite/libra-swarm/src/swarm.rs +++ b/testsuite/diem-swarm/src/swarm.rs @@ -1,16 +1,16 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{Context, Result}; use debug_interface::NodeDebugClient; -use libra_config::config::{NodeConfig, RoleType}; -use libra_genesis_tool::{ +use diem_config::config::{NodeConfig, RoleType}; +use diem_genesis_tool::{ config_builder::{FullnodeBuilder, FullnodeType, ValidatorBuilder}, swarm_config::SwarmConfig, }; -use libra_logger::prelude::*; -use libra_temppath::TempPath; -use libra_types::account_address::AccountAddress; +use diem_logger::prelude::*; +use diem_temppath::TempPath; +use diem_types::account_address::AccountAddress; use std::{ collections::HashMap, env, @@ -22,7 +22,7 @@ use std::{ }; use thiserror::Error; -pub struct LibraNode { +pub struct DiemNode { node: Child, node_id: String, validator_peer_id: Option, @@ -32,8 +32,8 @@ pub struct LibraNode { pub log: PathBuf, } -impl Drop for LibraNode { - // When the LibraNode struct goes out of scope we need to kill the child process +impl Drop for DiemNode { + // When the DiemNode struct goes out of scope we need to kill the child process fn drop(&mut self) { // check if the process has already been terminated match self.node.try_wait() { @@ -43,7 +43,7 @@ impl Drop for LibraNode { // The node is still running so we need to attempt to kill it _ => { if let Err(e) = self.node.kill() { - panic!("LibraNode process could not be killed: '{}'", e); + panic!("DiemNode process could not be killed: '{}'", e); } self.node.wait().unwrap(); } @@ -51,9 +51,9 @@ impl Drop for LibraNode { } } -impl LibraNode { +impl DiemNode { pub fn launch( - libra_node_bin_path: &Path, + diem_node_bin_path: &Path, node_id: String, role: RoleType, config_path: &Path, @@ -66,7 +66,7 @@ impl LibraNode { RoleType::Validator => Some(config.validator_network.as_ref().unwrap().peer_id()), RoleType::FullNode => None, }; - let mut node_command = Command::new(libra_node_bin_path); + let mut node_command = Command::new(diem_node_bin_path); node_command.arg("-f").arg(config_path); if env::var("RUST_LOG").is_err() { // Only set our RUST_LOG if its not present in environment @@ -78,7 +78,7 @@ impl LibraNode { let node = node_command.spawn().with_context(|| { format!( "Error launching node process with binary: {:?}", - libra_node_bin_path + diem_node_bin_path ) })?; let debug_client = NodeDebugClient::new( @@ -131,7 +131,7 @@ impl LibraNode { pub fn check_connectivity(&mut self, expected_peers: i64) -> bool { let connected_peers = format!( - "libra_network_peers{{role_type={},state=connected}}", + "diem_network_peers{{role_type={},state=connected}}", self.role.to_string() ); if let Some(num_connected_peers) = self.get_metric(&connected_peers) { @@ -189,27 +189,27 @@ pub enum HealthStatus { /// A wrapper that unifies PathBuf and TempPath. #[derive(Debug)] -pub enum LibraSwarmDir { +pub enum DiemSwarmDir { Persistent(PathBuf), Temporary(TempPath), } -impl AsRef for LibraSwarmDir { +impl AsRef for DiemSwarmDir { fn as_ref(&self) -> &Path { match self { - LibraSwarmDir::Persistent(path_buf) => path_buf.as_path(), - LibraSwarmDir::Temporary(temp_dir) => temp_dir.path(), + DiemSwarmDir::Persistent(path_buf) => path_buf.as_path(), + DiemSwarmDir::Temporary(temp_dir) => temp_dir.path(), } } } -/// Struct holding instances and information of Libra Swarm -pub struct LibraSwarm { - libra_node_bin_path: PathBuf, - // Output log, LibraNodes' config file, libradb etc, into this dir. - pub dir: LibraSwarmDir, - // Maps the node id of a node to the LibraNode struct - pub nodes: HashMap, +/// Struct holding instances and information of Diem Swarm +pub struct DiemSwarm { + diem_node_bin_path: PathBuf, + // Output log, DiemNodes' config file, diemdb etc, into this dir. + pub dir: DiemSwarmDir, + // Maps the node id of a node to the DiemNode struct + pub nodes: HashMap, pub config: SwarmConfig, pub role: RoleType, } @@ -229,35 +229,35 @@ pub enum SwarmLaunchFailure { IoError(#[from] io::Error), } -impl LibraSwarm { +impl DiemSwarm { /// Either create a persistent directory for swarm or return a temporary one. /// If specified persistent directory already exists, /// assumably due to previous launch failure, it will be removed. /// The directory for the last failed attempt won't be removed. - fn setup_config_dir(config_dir: &Option) -> LibraSwarmDir { + fn setup_config_dir(config_dir: &Option) -> DiemSwarmDir { if let Some(dir_str) = config_dir { let path_buf = PathBuf::from_str(&dir_str).expect("unable to create config dir"); if path_buf.exists() { std::fs::remove_dir_all(dir_str).expect("unable to delete previous config dir"); } std::fs::create_dir_all(dir_str).expect("unable to create config dir"); - LibraSwarmDir::Persistent(path_buf) + DiemSwarmDir::Persistent(path_buf) } else { let temp_dir = TempPath::new(); temp_dir .create_as_dir() .expect("unable to create temporary config dir"); - LibraSwarmDir::Temporary(temp_dir) + DiemSwarmDir::Temporary(temp_dir) } } pub fn configure_fn_swarm( - libra_node_bin_path: &Path, + diem_node_bin_path: &Path, config_dir: Option, template: Option, upstream_config: &SwarmConfig, fn_type: FullnodeType, - ) -> Result { + ) -> Result { let swarm_config_dir = Self::setup_config_dir(&config_dir); info!("logs for {:?} at {:?}", fn_type, swarm_config_dir); @@ -269,14 +269,14 @@ impl LibraSwarm { let config_path = &swarm_config_dir.as_ref().to_path_buf(); let builder = FullnodeBuilder::new( upstream_config.config_files.clone(), - upstream_config.libra_root_key_path.clone(), + upstream_config.diem_root_key_path.clone(), node_config, fn_type, ); let config = SwarmConfig::build(&builder, config_path)?; Ok(Self { - libra_node_bin_path: libra_node_bin_path.to_path_buf(), + diem_node_bin_path: diem_node_bin_path.to_path_buf(), dir: swarm_config_dir, nodes: HashMap::new(), config, @@ -285,11 +285,11 @@ impl LibraSwarm { } pub fn configure_validator_swarm( - libra_node_bin_path: &Path, + diem_node_bin_path: &Path, num_nodes: usize, config_dir: Option, template: Option, - ) -> Result { + ) -> Result { let swarm_config_dir = Self::setup_config_dir(&config_dir); info!("logs for validator at {:?}", swarm_config_dir); @@ -300,7 +300,7 @@ impl LibraSwarm { let config = SwarmConfig::build(&builder, config_path)?; Ok(Self { - libra_node_bin_path: libra_node_bin_path.to_path_buf(), + diem_node_bin_path: diem_node_bin_path.to_path_buf(), dir: swarm_config_dir, nodes: HashMap::new(), config, @@ -326,8 +326,8 @@ impl LibraSwarm { for (index, path) in self.config.config_files.iter().enumerate() { // Use index as node id. let node_id = format!("{}", index); - let node = LibraNode::launch( - &self.libra_node_bin_path, + let node = DiemNode::launch( + &self.diem_node_bin_path, node_id.clone(), self.role, &path, @@ -386,7 +386,7 @@ impl LibraSwarm { HealthStatus::RpcFailure(_) => continue, HealthStatus::Crashed(status) => { error!( - "Libra node '{}' has crashed with status '{}'. Log output: '''{}'''", + "Diem node '{}' has crashed with status '{}'. Log output: '''{}'''", node.node_id, status, node.get_log_contents().unwrap() @@ -413,7 +413,7 @@ impl LibraSwarm { /// function are now available at all the nodes. pub fn wait_for_all_nodes_to_catchup(&mut self) -> bool { let num_attempts = 60; - let last_committed_round_str = "libra_consensus_last_committed_round{}"; + let last_committed_round_str = "diem_consensus_last_committed_round{}"; let mut done = vec![false; self.nodes.len()]; let mut last_committed_round = 0; @@ -503,7 +503,7 @@ impl LibraSwarm { .collect() } - pub fn get_validator(&self, idx: usize) -> Option<&LibraNode> { + pub fn get_validator(&self, idx: usize) -> Option<&DiemNode> { let node_id = format!("{}", idx); self.nodes.get(&node_id) } @@ -523,8 +523,8 @@ impl LibraSwarm { .unwrap_or_else(|| panic!("Node at index {} not found", idx)); let log_file_path = self.dir.as_ref().join("logs").join(format!("{}.log", idx)); let node_id = format!("{}", idx); - let mut node = LibraNode::launch( - &self.libra_node_bin_path, + let mut node = DiemNode::launch( + &self.diem_node_bin_path, node_id.clone(), self.role, path, @@ -542,19 +542,19 @@ impl LibraSwarm { } } -impl Drop for LibraSwarm { +impl Drop for DiemSwarm { fn drop(&mut self) { // If panicking, we don't want to gc the swarm directory. if std::thread::panicking() { // let dir = self.dir; - if let LibraSwarmDir::Temporary(temp_dir) = &mut self.dir { + if let DiemSwarmDir::Temporary(temp_dir) = &mut self.dir { temp_dir.persist(); let log_path = temp_dir.path(); println!("logs located at {:?}", log_path); - // Dump logs for each validator to stdout when `LIBRA_DUMP_LOGS` + // Dump logs for each validator to stdout when `DIEM_DUMP_LOGS` // environment variable is set - if env::var_os("LIBRA_DUMP_LOGS").is_some() { + if env::var_os("DIEM_DUMP_LOGS").is_some() { for (peer_id, node) in &mut self.nodes { // Skip dumping logs for healthy nodes if let HealthStatus::Healthy = node.health_check() { diff --git a/testsuite/generate-format/Cargo.toml b/testsuite/generate-format/Cargo.toml index 759e95d1a4..0b95a07d5f 100644 --- a/testsuite/generate-format/Cargo.toml +++ b/testsuite/generate-format/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "generate-format" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra types" +authors = ["Diem Association "] +description = "Diem types" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -19,13 +19,13 @@ structopt = "0.3.21" consensus = { path = "../../consensus", version = "0.1.0", features=["fuzzing"] } consensus-types = { path = "../../consensus/consensus-types", version = "0.1.0", features=["fuzzing"] } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0", features=["fuzzing"] } -libra-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0"} -libra-types = { path = "../../types", version = "0.1.0", features=["fuzzing"] } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0", features=["fuzzing"] } +diem-crypto-derive = { path = "../../crypto/crypto-derive", version = "0.1.0"} +diem-types = { path = "../../types", version = "0.1.0", features=["fuzzing"] } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } network = { path = "../../network", version = "0.1.0" } -libra-network-address = { path = "../../network/network-address", version = "0.1.0", features=["fuzzing"] } +diem-network-address = { path = "../../network/network-address", version = "0.1.0", features=["fuzzing"] } move-core-types = { path = "../../language/move-core/types", version = "0.1.0", features=["fuzzing"] } [[bin]] diff --git a/testsuite/generate-format/src/compute.rs b/testsuite/generate-format/src/compute.rs index fe66710a75..1bbc722b95 100644 --- a/testsuite/generate-format/src/compute.rs +++ b/testsuite/generate-format/src/compute.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use generate_format::Corpus; @@ -7,11 +7,11 @@ use structopt::StructOpt; #[derive(Debug, StructOpt)] #[structopt( - name = "Libra format generator", - about = "Trace serde (de)serialization to generate format descriptions for Libra types" + name = "Diem format generator", + about = "Trace serde (de)serialization to generate format descriptions for Diem types" )] struct Options { - #[structopt(long, possible_values = &Corpus::variants(), default_value = "Libra", case_insensitive = true)] + #[structopt(long, possible_values = &Corpus::variants(), default_value = "Diem", case_insensitive = true)] corpus: Corpus, #[structopt(long)] diff --git a/testsuite/generate-format/src/consensus.rs b/testsuite/generate-format/src/consensus.rs index 6f9696386e..fb71f136bf 100644 --- a/testsuite/generate-format/src/consensus.rs +++ b/testsuite/generate-format/src/consensus.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, multi_ed25519::{MultiEd25519PublicKey, MultiEd25519Signature}, traits::{SigningKey, Uniform}, }; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::{contract_event, event, transaction, write_set}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::{contract_event, event, transaction, write_set}; use move_core_types::language_storage; use rand::{rngs::StdRng, SeedableRng}; use serde::{Deserialize, Serialize}; @@ -20,11 +20,11 @@ pub fn output_file() -> Option<&'static str> { /// This aims at signing canonically serializable LCS data #[derive(CryptoHasher, LCSCryptoHash, Serialize, Deserialize)] -struct TestLibraCrypto(String); +struct TestDiemCrypto(String); /// Record sample values for crypto types used by consensus. fn trace_crypto_values(tracer: &mut Tracer, samples: &mut Samples) -> Result<()> { - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); let mut rng: StdRng = SeedableRng::from_seed([0; 32]); let private_key = Ed25519PrivateKey::generate(&mut rng); diff --git a/testsuite/generate-format/src/libra.rs b/testsuite/generate-format/src/diem.rs similarity index 89% rename from testsuite/generate-format/src/libra.rs rename to testsuite/generate-format/src/diem.rs index 153507525b..a58267cdd1 100644 --- a/testsuite/generate-format/src/libra.rs +++ b/testsuite/generate-format/src/diem.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, hash::{CryptoHasher as _, TestOnlyHasher}, multi_ed25519::{MultiEd25519PublicKey, MultiEd25519Signature}, traits::{SigningKey, Uniform}, }; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; -use libra_types::{contract_event, event, transaction, write_set}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_types::{contract_event, event, transaction, write_set}; use move_core_types::language_storage; use rand::{rngs::StdRng, SeedableRng}; use serde::{Deserialize, Serialize}; @@ -16,12 +16,12 @@ use serde_reflection::{Registry, Result, Samples, Tracer, TracerConfig}; /// Default output file. pub fn output_file() -> Option<&'static str> { - Some("tests/staged/libra.yaml") + Some("tests/staged/diem.yaml") } /// This aims at signing canonically serializable LCS data #[derive(CryptoHasher, LCSCryptoHash, Serialize, Deserialize)] -struct TestLibraCrypto(String); +struct TestDiemCrypto(String); /// Record sample values for crypto types used by transactions. fn trace_crypto_values(tracer: &mut Tracer, samples: &mut Samples) -> Result<()> { @@ -29,7 +29,7 @@ fn trace_crypto_values(tracer: &mut Tracer, samples: &mut Samples) -> Result<()> hasher.update(b"Test message"); let hashed_message = hasher.finish(); - let message = TestLibraCrypto("Hello, World".to_string()); + let message = TestDiemCrypto("Hello, World".to_string()); let mut rng: StdRng = SeedableRng::from_seed([0; 32]); let private_key = Ed25519PrivateKey::generate(&mut rng); diff --git a/testsuite/generate-format/src/lib.rs b/testsuite/generate-format/src/lib.rs index f831523ad0..32ef2d6553 100644 --- a/testsuite/generate-format/src/lib.rs +++ b/testsuite/generate-format/src/lib.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -//! How and where to record the Serde format of interesting Libra types. +//! How and where to record the Serde format of interesting Diem types. //! See API documentation with `cargo doc -p serde-reflection --open` use serde_reflection::Registry; @@ -10,8 +10,8 @@ use structopt::{clap::arg_enum, StructOpt}; /// Consensus messages. mod consensus; -/// Libra transactions. -mod libra; +/// Diem transactions. +mod diem; /// Analyze Serde formats to detect certain patterns. mod linter; /// Move ABI. @@ -25,7 +25,7 @@ arg_enum! { #[derive(Debug, StructOpt, Clone, Copy)] /// A corpus of Rust types to trace, and optionally record on disk. pub enum Corpus { - Libra, + Diem, Consensus, Network, MoveABI, @@ -44,7 +44,7 @@ impl Corpus { /// Compute the registry of formats. pub fn get_registry(self) -> Registry { let result = match self { - Corpus::Libra => libra::get_registry(), + Corpus::Diem => diem::get_registry(), Corpus::Consensus => consensus::get_registry(), Corpus::Network => network::get_registry(), Corpus::MoveABI => move_abi::get_registry(), @@ -60,7 +60,7 @@ impl Corpus { /// Where to record this corpus on disk. pub fn output_file(self) -> Option<&'static str> { match self { - Corpus::Libra => libra::output_file(), + Corpus::Diem => diem::output_file(), Corpus::Consensus => consensus::output_file(), Corpus::Network => network::output_file(), Corpus::MoveABI => move_abi::output_file(), diff --git a/testsuite/generate-format/src/linter.rs b/testsuite/generate-format/src/linter.rs index 6cea28f45c..912cc45a3c 100644 --- a/testsuite/generate-format/src/linter.rs +++ b/testsuite/generate-format/src/linter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use serde_reflection::{ContainerFormat, Error, Format, FormatHolder, Result}; diff --git a/testsuite/generate-format/src/move_abi.rs b/testsuite/generate-format/src/move_abi.rs index db522cf9e2..93ff438b6a 100644 --- a/testsuite/generate-format/src/move_abi.rs +++ b/testsuite/generate-format/src/move_abi.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_types::transaction; +use diem_types::transaction; use move_core_types::language_storage; use serde_reflection::{Registry, Result, Samples, Tracer, TracerConfig}; diff --git a/testsuite/generate-format/src/network.rs b/testsuite/generate-format/src/network.rs index bb0f33d9df..457a39af59 100644 --- a/testsuite/generate-format/src/network.rs +++ b/testsuite/generate-format/src/network.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use libra_crypto::{ +use diem_crypto::{ traits::Uniform, x25519::{PrivateKey, PublicKey}, }; -use libra_network_address as address; +use diem_network_address as address; use network::protocols::wire::{handshake, messaging}; use rand::{rngs::StdRng, SeedableRng}; use serde_reflection::{Registry, Result, Samples, Tracer, TracerConfig}; @@ -50,7 +50,7 @@ pub fn get_registry() -> Result { tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; tracer.trace_type::(&samples)?; - tracer.trace_type::(&samples)?; + tracer.trace_type::(&samples)?; tracer.registry() } diff --git a/testsuite/generate-format/tests/detect_format_change.rs b/testsuite/generate-format/tests/detect_format_change.rs index 3ccdeb5260..642a45275a 100644 --- a/testsuite/generate-format/tests/detect_format_change.rs +++ b/testsuite/generate-format/tests/detect_format_change.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use generate_format::Corpus; diff --git a/testsuite/generate-format/tests/linter.rs b/testsuite/generate-format/tests/linter.rs index 681f54ab35..b582f31b7e 100644 --- a/testsuite/generate-format/tests/linter.rs +++ b/testsuite/generate-format/tests/linter.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use generate_format::lint_lcs_format; diff --git a/testsuite/generate-format/tests/staged/libra.yaml b/testsuite/generate-format/tests/staged/diem.yaml similarity index 100% rename from testsuite/generate-format/tests/staged/libra.yaml rename to testsuite/generate-format/tests/staged/diem.yaml diff --git a/testsuite/libra-fuzzer/lsan_suppressions.txt b/testsuite/libra-fuzzer/lsan_suppressions.txt deleted file mode 100644 index 917034cb07..0000000000 --- a/testsuite/libra-fuzzer/lsan_suppressions.txt +++ /dev/null @@ -1,4 +0,0 @@ -leak:lazy_static -leak:backtrace -leak:libc -leak:libra_mempool::tests::mocks::MockSharedMempool diff --git a/testsuite/libra-swarm/Cargo.toml b/testsuite/libra-swarm/Cargo.toml deleted file mode 100644 index c48fc7c44d..0000000000 --- a/testsuite/libra-swarm/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "libra-swarm" -version = "0.1.0" -authors = ["Libra Association "] -description = "Libra swarm" -repository = "https://github.com/libra/libra" -homepage = "https://libra.org" -license = "Apache-2.0" -publish = false -edition = "2018" - -[dependencies] -anyhow = "1.0.34" -ctrlc = { version = "3.1.7", default-features = false } -reqwest = { version = "0.10.9", features = ["blocking"], default-features = false } -structopt = "0.3.21" -thiserror = "1.0.22" -libra-config = { path = "../../config", version = "0.1.0", features = ["fuzzing"] } -debug-interface = { path = "../../common/debug-interface", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } diff --git a/testsuite/smoke-test/Cargo.toml b/testsuite/smoke-test/Cargo.toml index d61f3cac5b..4c12ee2b09 100644 --- a/testsuite/smoke-test/Cargo.toml +++ b/testsuite/smoke-test/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "smoke-test" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra smoke test" +authors = ["Diem Association "] +description = "Diem smoke test" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -27,27 +27,27 @@ cli = { path = "../cli", version = "0.1.0", features = ["fuzzing"] } debug-interface = { path = "../../common/debug-interface", version = "0.1.0" } generate-key = { path = "../../config/generate-key", version = "0.1.0" } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-config = { path = "../../config", version = "0.1.0" } -libra-crypto = { path = "../../crypto/crypto", version = "0.1.0" } -libra-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } -libra-global-constants = { path = "../../config/global-constants", version = "0.1.0" } -libra-infallible = { path = "../../common/infallible", version = "0.1.0" } -libra-json-rpc = { path = "../../json-rpc", version = "0.1.0" } -libra-key-manager = { path = "../../secure/key-manager", version = "0.1.0" } -libra-logger = { path = "../../common/logger", version = "0.1.0" } -libra-management = { path = "../../config/management", version = "0.1.0", features = ["testing"] } -libra-network-address = { path = "../../network/network-address", version = "0.1.0" } -libra-operational-tool = {path = "../../config/management/operational", version = "0.1.0", features = ["testing"] } -libra-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } -libra-secure-time = { path = "../../secure/time", version = "0.1.0" } -libra-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } -libra-smoke-test-attribute = { path = "../smoke-test/attribute", version = "0.1.0" } -libra-swarm = { path = "../libra-swarm", version = "0.1.0"} -libra-temppath = { path = "../../common/temppath", version = "0.1.0" } -libra-trace = { path = "../../common/trace", version = "0.1.0" } -libra-events-fetcher = { path = "../../language/libra-tools/libra-events-fetcher", version = "0.1.0" } -libra-transaction-replay = { path = "../../language/libra-tools/transaction-replay", version = "0.1.0" } -libra-types = { path = "../../types", version = "0.1.0" } -libra-vault-client = { path = "../../secure/storage/vault", version = "0.1.0", features = ["fuzzing"] } -libra-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } +diem-config = { path = "../../config", version = "0.1.0" } +diem-crypto = { path = "../../crypto/crypto", version = "0.1.0" } +diem-genesis-tool = {path = "../../config/management/genesis", version = "0.1.0", features = ["testing"] } +diem-global-constants = { path = "../../config/global-constants", version = "0.1.0" } +diem-infallible = { path = "../../common/infallible", version = "0.1.0" } +diem-json-rpc = { path = "../../json-rpc", version = "0.1.0" } +diem-key-manager = { path = "../../secure/key-manager", version = "0.1.0" } +diem-logger = { path = "../../common/logger", version = "0.1.0" } +diem-management = { path = "../../config/management", version = "0.1.0", features = ["testing"] } +diem-network-address = { path = "../../network/network-address", version = "0.1.0" } +diem-operational-tool = {path = "../../config/management/operational", version = "0.1.0", features = ["testing"] } +diem-secure-json-rpc = { path = "../../secure/json-rpc", version = "0.1.0" } +diem-secure-time = { path = "../../secure/time", version = "0.1.0" } +diem-secure-storage = { path = "../../secure/storage", version = "0.1.0", features = ["testing"] } +diem-smoke-test-attribute = { path = "../smoke-test/attribute", version = "0.1.0" } +diem-swarm = { path = "../diem-swarm", version = "0.1.0"} +diem-temppath = { path = "../../common/temppath", version = "0.1.0" } +diem-trace = { path = "../../common/trace", version = "0.1.0" } +diem-events-fetcher = { path = "../../language/diem-tools/diem-events-fetcher", version = "0.1.0" } +diem-transaction-replay = { path = "../../language/diem-tools/transaction-replay", version = "0.1.0" } +diem-types = { path = "../../types", version = "0.1.0" } +diem-vault-client = { path = "../../secure/storage/vault", version = "0.1.0", features = ["fuzzing"] } +diem-workspace-hack = { path = "../../common/workspace-hack", version = "0.1.0" } transaction-builder = { path = "../../language/transaction-builder", version = "0.1.0" } diff --git a/testsuite/smoke-test/attribute/Cargo.toml b/testsuite/smoke-test/attribute/Cargo.toml index e431e7051a..b3660708c5 100644 --- a/testsuite/smoke-test/attribute/Cargo.toml +++ b/testsuite/smoke-test/attribute/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "libra-smoke-test-attribute" +name = "diem-smoke-test-attribute" version = "0.1.0" -authors = ["Libra Association "] +authors = ["Diem Association "] repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -15,4 +15,4 @@ proc-macro = true proc-macro2 = "1.0.24" quote = "1.0.7" -libra-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } +diem-workspace-hack = { path = "../../../common/workspace-hack", version = "0.1.0" } diff --git a/testsuite/smoke-test/attribute/src/lib.rs b/testsuite/smoke-test/attribute/src/lib.rs index e81d737349..73870b4d15 100644 --- a/testsuite/smoke-test/attribute/src/lib.rs +++ b/testsuite/smoke-test/attribute/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use proc_macro::TokenStream; diff --git a/testsuite/smoke-test/src/client.rs b/testsuite/smoke-test/src/client.rs index 80afbc3d01..ca4a01f30f 100644 --- a/testsuite/smoke-test/src/client.rs +++ b/testsuite/smoke-test/src/client.rs @@ -1,15 +1,15 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::test_utils::{ compare_balances, - libra_swarm_utils::{get_op_tool, load_libra_root_storage}, + diem_swarm_utils::{get_op_tool, load_diem_root_storage}, setup_swarm_and_client_proxy, }; use cli::client_proxy::ClientProxy; use debug_interface::NodeDebugClient; -use libra_trace::trace::trace_node; -use libra_types::{ +use diem_trace::trace::trace_node; +use diem_types::{ account_config::testnet_dd_account_address, ledger_info::LedgerInfo, waypoint::Waypoint, }; @@ -46,21 +46,17 @@ fn test_basic_restartability() { client.create_next_account(false).unwrap(); client.create_next_account(false).unwrap(); + client.mint_coins(&["mb", "0", "100", "XUS"], true).unwrap(); + client.mint_coins(&["mb", "1", "10", "XUS"], true).unwrap(); client - .mint_coins(&["mb", "0", "100", "Coin1"], true) - .unwrap(); - client - .mint_coins(&["mb", "1", "10", "Coin1"], true) - .unwrap(); - client - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); @@ -69,23 +65,23 @@ fn test_basic_restartability() { assert!(env.validator_swarm.add_node(peer_to_restart).is_ok()); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); client - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(80.0, "Coin1".to_string())], + vec![(80.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(30.0, "Coin1".to_string())], + vec![(30.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); } @@ -96,7 +92,7 @@ fn test_client_waypoints() { client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); // Create the waypoint for the initial epoch @@ -120,16 +116,16 @@ fn test_client_waypoints() { .validator_peer_id() .unwrap(); let op_tool = get_op_tool(&env.validator_swarm, 1); - let libra_root = load_libra_root_storage(&env.validator_swarm, 0); + let diem_root = load_diem_root_storage(&env.validator_swarm, 0); let _ = op_tool - .remove_validator(peer_id, &libra_root, false) + .remove_validator(peer_id, &diem_root, false) .unwrap(); client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); let epoch_1_li = client @@ -161,29 +157,29 @@ fn test_concurrent_transfers_single_node() { client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "100", "Coin1"], true) + .mint_coins(&["mintb", "0", "100", "XUS"], true) .unwrap(); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); for _ in 0..20 { client - .transfer_coins(&["t", "0", "1", "1", "Coin1"], false) + .transfer_coins(&["t", "0", "1", "1", "XUS"], false) .unwrap(); } client - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(79.0, "Coin1".to_string())], + vec![(79.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(31.0, "Coin1".to_string())], + vec![(31.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); } @@ -197,15 +193,15 @@ fn test_trace() { client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "100", "Coin1"], true) + .mint_coins(&["mintb", "0", "100", "XUS"], true) .unwrap(); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); client - .transfer_coins(&["t", "0", "1", "1", "Coin1"], false) + .transfer_coins(&["t", "0", "1", "1", "XUS"], false) .unwrap(); let events = debug_client.get_events().expect("Failed to get events"); @@ -221,37 +217,37 @@ fn check_create_mint_transfer(mut client: ClientProxy) { // Create account 0, mint 10 coins and check balance client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); // Create account 1, mint 1 coin, transfer 3 coins from account 0 to 1, check balances client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "1", "1", "Coin1"], true) + .mint_coins(&["mintb", "1", "1", "XUS"], true) .unwrap(); client - .transfer_coins(&["tb", "0", "1", "3", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "3", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(7.0, "Coin1".to_string())], + vec![(7.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(4.0, "Coin1".to_string())], + vec![(4.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); // Create account 2, mint 15 coins and check balance client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "2", "15", "Coin1"], true) + .mint_coins(&["mintb", "2", "15", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(15.0, "Coin1".to_string())], + vec![(15.0, "XUS".to_string())], client.get_balances(&["b", "2"]).unwrap(), )); } diff --git a/testsuite/smoke-test/src/consensus.rs b/testsuite/smoke-test/src/consensus.rs index a5cf4d239e..e62b644d8f 100644 --- a/testsuite/smoke-test/src/consensus.rs +++ b/testsuite/smoke-test/src/consensus.rs @@ -1,22 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ operational_tooling::launch_swarm_with_op_tool_and_backend, smoke_test_environment::SmokeTestEnvironment, test_utils::{ - libra_swarm_utils::{ - get_op_tool, load_backend_storage, load_node_config, save_node_config, - }, + diem_swarm_utils::{get_op_tool, load_backend_storage, load_node_config, save_node_config}, wait_for_transaction_on_all_nodes, }, }; -use libra_config::config::SecureBackend; -use libra_global_constants::OWNER_ACCOUNT; -use libra_network_address::NetworkAddress; -use libra_secure_json_rpc::VMStatusView; -use libra_secure_storage::{KVStorage, Storage}; -use libra_types::account_address::AccountAddress; +use diem_config::config::SecureBackend; +use diem_global_constants::OWNER_ACCOUNT; +use diem_network_address::NetworkAddress; +use diem_secure_json_rpc::VMStatusView; +use diem_secure_storage::{KVStorage, Storage}; +use diem_types::account_address::AccountAddress; use std::{convert::TryInto, str::FromStr}; #[test] diff --git a/testsuite/smoke-test/src/dev_modules/module.move b/testsuite/smoke-test/src/dev_modules/module.move index 596af921ee..e305ccef13 100644 --- a/testsuite/smoke-test/src/dev_modules/module.move +++ b/testsuite/smoke-test/src/dev_modules/module.move @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Note: If this test file fails to run, it is possible that the @@ -9,10 +9,10 @@ address {{sender}} { module MyModule { - use 0x1::Libra::Libra; + use 0x1::Diem::Diem; - // The identity function for coins: takes a Libra as input and hands it back - public fun id(c: Libra): Libra { + // The identity function for coins: takes a Diem as input and hands it back + public fun id(c: Diem): Diem { c } } diff --git a/testsuite/smoke-test/src/dev_modules/script.move b/testsuite/smoke-test/src/dev_modules/script.move index 338bdb6916..65ff97db1c 100644 --- a/testsuite/smoke-test/src/dev_modules/script.move +++ b/testsuite/smoke-test/src/dev_modules/script.move @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 // Note: If this test file fails to run, it is possible that the @@ -7,16 +7,16 @@ // the compiled stdlib. script { -use 0x1::Libra; -use 0x1::LibraAccount; -use 0x1::Coin1::Coin1; +use 0x1::Diem; +use 0x1::DiemAccount; +use 0x1::XUS::XUS; use {{sender}}::MyModule; fun main(account: &signer, recipient: address, amount: u64) { - let with_cap = LibraAccount::extract_withdraw_capability(account); - LibraAccount::pay_from(&with_cap, recipient, amount, x"", x""); - LibraAccount::restore_withdraw_capability(with_cap); - let coin = MyModule::id(Libra::zero()); - Libra::destroy_zero(coin) + let with_cap = DiemAccount::extract_withdraw_capability(account); + DiemAccount::pay_from(&with_cap, recipient, amount, x"", x""); + DiemAccount::restore_withdraw_capability(with_cap); + let coin = MyModule::id(Diem::zero()); + Diem::destroy_zero(coin) } } diff --git a/testsuite/smoke-test/src/event_fetcher.rs b/testsuite/smoke-test/src/event_fetcher.rs index d26c853814..6ba4decf41 100644 --- a/testsuite/smoke-test/src/event_fetcher.rs +++ b/testsuite/smoke-test/src/event_fetcher.rs @@ -1,31 +1,31 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::test_utils::{libra_swarm_utils::get_libra_event_fetcher, setup_swarm_and_client_proxy}; +use crate::test_utils::{diem_swarm_utils::get_diem_event_fetcher, setup_swarm_and_client_proxy}; #[test] fn test_event_fetcher() { let mut runtime = tokio::runtime::Runtime::new().expect("Unable to create a runtime"); let (env, mut client) = setup_swarm_and_client_proxy(1, 0); - let events_fetcher = get_libra_event_fetcher(&env.validator_swarm, 0); + let events_fetcher = get_diem_event_fetcher(&env.validator_swarm, 0); client.create_next_account(false).unwrap(); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "100", "Coin1"], true) + .mint_coins(&["mintb", "0", "100", "XUS"], true) .unwrap(); client - .mint_coins(&["mintb", "1", "100", "Coin1"], true) + .mint_coins(&["mintb", "1", "100", "XUS"], true) .unwrap(); client - .transfer_coins(&["tb", "0", "1", "3", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "3", "XUS"], true) .unwrap(); client - .transfer_coins(&["tb", "0", "1", "4", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "4", "XUS"], true) .unwrap(); let (account, _) = client.get_account_address_from_parameter("0").unwrap(); diff --git a/testsuite/smoke-test/src/full_nodes.rs b/testsuite/smoke-test/src/full_nodes.rs index 8c02b7e5ea..ef6921ec11 100644 --- a/testsuite/smoke-test/src/full_nodes.rs +++ b/testsuite/smoke-test/src/full_nodes.rs @@ -1,10 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{smoke_test_environment::SmokeTestEnvironment, test_utils::compare_balances}; -use libra_types::account_config::{ - testnet_dd_account_address, treasury_compliance_account_address, -}; +use diem_types::account_config::{testnet_dd_account_address, treasury_compliance_account_address}; #[test] fn test_full_node_basic_flow() { @@ -40,10 +38,10 @@ fn test_full_node_basic_flow() { .get_sequence_number(&creation_sequence_reset_command) .unwrap(); vfn_client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .expect("Fail to mint!"); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], vfn_client.get_balances(&["b", "0"]).unwrap(), )); @@ -54,7 +52,7 @@ fn test_full_node_basic_flow() { .wait_for_transaction(sender_account, sequence - 1) .unwrap(); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], validator_client.get_balances(&["b", "0"]).unwrap(), )); @@ -78,7 +76,7 @@ fn test_full_node_basic_flow() { pfn_client.create_next_account(false).unwrap(); validator_client - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); let sequence = validator_client .get_sequence_number(&sequence_reset_command) @@ -88,30 +86,30 @@ fn test_full_node_basic_flow() { .unwrap(); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], validator_client.get_balances(&["b", "1"]).unwrap(), )); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], vfn_client.get_balances(&["b", "1"]).unwrap(), )); // minting again on validator doesn't cause error since client sequence has been updated validator_client - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); // test transferring balance from 0 to 1 through full node proxy vfn_client - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(0.0, "Coin1".to_string())], + vec![(0.0, "XUS".to_string())], vfn_client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(30.0, "Coin1".to_string())], + vec![(30.0, "XUS".to_string())], validator_client.get_balances(&["b", "1"]).unwrap(), )); @@ -122,11 +120,11 @@ fn test_full_node_basic_flow() { .wait_for_transaction(account, sequence - 1) .unwrap(); assert!(compare_balances( - vec![(0.0, "Coin1".to_string())], + vec![(0.0, "XUS".to_string())], pfn_client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(30.0, "Coin1".to_string())], + vec![(30.0, "XUS".to_string())], pfn_client.get_balances(&["b", "1"]).unwrap(), )); } @@ -161,18 +159,18 @@ fn test_vfn_failover() { vfn_0_client.create_next_account(false).unwrap(); } vfn_0_client - .mint_coins(&["mb", "0", "100", "Coin1"], true) + .mint_coins(&["mb", "0", "100", "XUS"], true) .unwrap(); vfn_0_client - .mint_coins(&["mb", "1", "50", "Coin1"], true) + .mint_coins(&["mb", "1", "50", "XUS"], true) .unwrap(); for _ in 0..8 { vfn_0_client - .transfer_coins(&["t", "0", "1", "1", "Coin1"], false) + .transfer_coins(&["t", "0", "1", "1", "XUS"], false) .unwrap(); } vfn_0_client - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); // wait for VFN 1 to catch up with creation and sender account @@ -192,10 +190,10 @@ fn test_vfn_failover() { vfn_1_client.create_next_account(false).unwrap(); } vfn_1_client - .mint_coins(&["mb", "2", "100", "Coin1"], true) + .mint_coins(&["mb", "2", "100", "XUS"], true) .unwrap(); vfn_1_client - .mint_coins(&["mb", "3", "50", "Coin1"], true) + .mint_coins(&["mb", "3", "50", "XUS"], true) .unwrap(); for _ in 0..6 { @@ -215,10 +213,10 @@ fn test_vfn_failover() { .get_sequence_number(&creation_sequence_reset_command) .unwrap(); pfn_0_client - .mint_coins(&["mb", "4", "100", "Coin1"], true) + .mint_coins(&["mb", "4", "100", "XUS"], true) .unwrap(); pfn_0_client - .mint_coins(&["mb", "5", "50", "Coin1"], true) + .mint_coins(&["mb", "5", "50", "XUS"], true) .unwrap(); // bring down another V @@ -228,14 +226,14 @@ fn test_vfn_failover() { // submit some non-blocking txns during this scenario when >f validators are down for _ in 0..10 { vfn_1_client - .transfer_coins(&["t", "2", "3", "1", "Coin1"], false) + .transfer_coins(&["t", "2", "3", "1", "XUS"], false) .unwrap(); } // submit txn for vfn_0 too for _ in 0..5 { vfn_0_client - .transfer_coins(&["t", "0", "1", "1", "Coin1"], false) + .transfer_coins(&["t", "0", "1", "1", "XUS"], false) .unwrap(); } @@ -243,7 +241,7 @@ fn test_vfn_failover() { // but by pigeonhole principle, we know the PFN is connected to max 2 live VFNs for _ in 0..7 { pfn_0_client - .transfer_coins(&["t", "4", "5", "1", "Coin1"], false) + .transfer_coins(&["t", "4", "5", "1", "XUS"], false) .unwrap(); } @@ -260,11 +258,11 @@ fn test_vfn_failover() { // submit txns to vfn of dead V for _ in 0..5 { vfn_1_client - .transfer_coins(&["t", "2", "3", "1", "Coin1"], false) + .transfer_coins(&["t", "2", "3", "1", "XUS"], false) .unwrap(); } vfn_1_client - .transfer_coins(&["tb", "2", "3", "1", "Coin1"], true) + .transfer_coins(&["tb", "2", "3", "1", "XUS"], true) .unwrap(); // bring back all Vs back up @@ -273,10 +271,10 @@ fn test_vfn_failover() { // just for kicks: check regular minting still works with revived validators for _ in 0..5 { pfn_0_client - .transfer_coins(&["t", "4", "5", "1", "Coin1"], false) + .transfer_coins(&["t", "4", "5", "1", "XUS"], false) .unwrap(); } pfn_0_client - .transfer_coins(&["tb", "4", "5", "1", "Coin1"], true) + .transfer_coins(&["tb", "4", "5", "1", "XUS"], true) .unwrap(); } diff --git a/testsuite/smoke-test/src/genesis.rs b/testsuite/smoke-test/src/genesis.rs index 365b3628c1..81dd898420 100644 --- a/testsuite/smoke-test/src/genesis.rs +++ b/testsuite/smoke-test/src/genesis.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ smoke_test_environment::SmokeTestEnvironment, - test_utils::libra_swarm_utils::{ - get_op_tool, insert_waypoint, load_libra_root_storage, load_node_config, save_node_config, + test_utils::diem_swarm_utils::{ + get_op_tool, insert_waypoint, load_diem_root_storage, load_node_config, save_node_config, }, workspace_builder, workspace_builder::workspace_root, }; use anyhow::anyhow; -use libra_temppath::TempPath; -use libra_types::{ - account_config::{libra_root_address, treasury_compliance_account_address}, +use diem_temppath::TempPath; +use diem_types::{ + account_config::{diem_root_address, treasury_compliance_account_address}, transaction::{Transaction, WriteSetPayload}, waypoint::Waypoint, }; @@ -26,7 +26,7 @@ use transaction_builder::encode_remove_validator_and_reconfigure_script; #[test] /// This test verifies the flow of a genesis transaction after the chain starts. /// 1. Test the consensus sync_only mode, every node should stop at the same version. -/// 2. Test the db-bootstrapper applying a manual genesis transaction (remove validator 0) on libradb directly +/// 2. Test the db-bootstrapper applying a manual genesis transaction (remove validator 0) on diemdb directly /// 3. Test the nodes and clients resume working after updating waypoint /// 4. Test a node lagging behind can sync to the waypoint fn test_genesis_transaction_flow() { @@ -44,7 +44,7 @@ fn test_genesis_transaction_flow() { let mut client_0 = env.get_validator_client(0, None); client_0.create_next_account(false).unwrap(); client_0 - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); println!("2. Set sync_only = true for all nodes and restart"); @@ -65,7 +65,7 @@ fn test_genesis_transaction_flow() { env.validator_swarm.wait_for_all_nodes_to_catchup(); let mut known_round = None; for i in 0..5 { - let last_committed_round_str = "libra_consensus_last_committed_round{}"; + let last_committed_round_str = "diem_consensus_last_committed_round{}"; for (index, node) in &mut env.validator_swarm.nodes { if let Some(round) = node.get_metric(last_committed_round_str) { match known_round { @@ -91,9 +91,9 @@ fn test_genesis_transaction_flow() { println!("5. kill all nodes and prepare a genesis txn to remove validator 0"); let validator_address = node_config.validator_network.as_ref().unwrap().peer_id(); let op_tool = get_op_tool(&env.validator_swarm, 0); - let libra_root = load_libra_root_storage(&env.validator_swarm, 0); + let diem_root = load_diem_root_storage(&env.validator_swarm, 0); let config = op_tool - .validator_config(validator_address, &libra_root) + .validator_config(validator_address, &diem_root) .unwrap(); let name = config.name.as_bytes().to_vec(); @@ -101,7 +101,7 @@ fn test_genesis_transaction_flow() { env.validator_swarm.kill_node(index); } let genesis_transaction = Transaction::GenesisTransaction(WriteSetPayload::Script { - execute_as: libra_root_address(), + execute_as: diem_root_address(), script: encode_remove_validator_and_reconfigure_script(0, name, validator_address), }); let genesis_path = TempPath::new(); @@ -142,7 +142,7 @@ fn test_genesis_transaction_flow() { client_proxy_1.set_accounts(client_0.copy_all_accounts()); client_proxy_1.create_next_account(false).unwrap(); client_proxy_1 - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); client_proxy_1 .wait_for_transaction(treasury_compliance_account_address(), 0) @@ -153,7 +153,7 @@ fn test_genesis_transaction_flow() { let _ = op_tool .add_validator( validator_address, - &load_libra_root_storage(&env.validator_swarm, 0), + &load_diem_root_storage(&env.validator_swarm, 0), false, ) .unwrap(); @@ -167,7 +167,7 @@ fn test_genesis_transaction_flow() { client_proxy_0.set_accounts(client_proxy_1.copy_all_accounts()); client_proxy_0.create_next_account(false).unwrap(); client_proxy_1 - .mint_coins(&["mintb", "1", "10", "Coin1"], true) + .mint_coins(&["mintb", "1", "10", "XUS"], true) .unwrap(); } diff --git a/testsuite/smoke-test/src/key_manager.rs b/testsuite/smoke-test/src/key_manager.rs index 7cc77389cd..18cb84e3a4 100644 --- a/testsuite/smoke-test/src/key_manager.rs +++ b/testsuite/smoke-test/src/key_manager.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ smoke_test_environment::SmokeTestEnvironment, - test_utils::libra_swarm_utils::load_backend_storage, + test_utils::diem_swarm_utils::load_backend_storage, }; -use libra_config::config::NodeConfig; -use libra_global_constants::CONSENSUS_KEY; -use libra_key_manager::{ - libra_interface::{JsonRpcLibraInterface, LibraInterface}, +use diem_config::config::NodeConfig; +use diem_global_constants::CONSENSUS_KEY; +use diem_key_manager::{ + diem_interface::{DiemInterface, JsonRpcDiemInterface}, KeyManager, }; -use libra_secure_storage::{CryptoStorage, Storage}; -use libra_secure_time::RealTimeService; -use libra_smoke_test_attribute::smoke_test; -use libra_types::chain_id::ChainId; +use diem_secure_storage::{CryptoStorage, Storage}; +use diem_secure_time::RealTimeService; +use diem_smoke_test_attribute::smoke_test; +use diem_types::chain_id::ChainId; use std::{convert::TryInto, thread, thread::sleep, time::Duration}; #[smoke_test] @@ -36,16 +36,16 @@ fn test_key_manager_consensus_rotation() { "http://127.0.0.1:{}", env.validator_swarm.get_client_port(0) ); - let libra_interface = JsonRpcLibraInterface::new(json_rpc_endpoint.clone()); + let diem_interface = JsonRpcDiemInterface::new(json_rpc_endpoint.clone()); let account = node_config.validator_network.unwrap().peer_id(); let current_consensus = storage.get_public_key(CONSENSUS_KEY).unwrap().public_key; - let validator_info = libra_interface.retrieve_validator_info(account).unwrap(); + let validator_info = diem_interface.retrieve_validator_info(account).unwrap(); assert_eq!(¤t_consensus, validator_info.consensus_public_key()); // Create the key manager let key_manager_storage: Storage = (&secure_backend).try_into().unwrap(); let mut key_manager = KeyManager::new( - JsonRpcLibraInterface::new(json_rpc_endpoint), + JsonRpcDiemInterface::new(json_rpc_endpoint), key_manager_storage, RealTimeService::new(), 1, @@ -62,7 +62,7 @@ fn test_key_manager_consensus_rotation() { sleep(Duration::from_secs(6)); let rotated_consensus = storage.get_public_key(CONSENSUS_KEY).unwrap().public_key; - let validator_info = libra_interface.retrieve_validator_info(account).unwrap(); + let validator_info = diem_interface.retrieve_validator_info(account).unwrap(); if current_consensus != rotated_consensus && validator_info.consensus_public_key() == &rotated_consensus { diff --git a/testsuite/smoke-test/src/lib.rs b/testsuite/smoke-test/src/lib.rs index 3e6706e321..1e975bc5d9 100644 --- a/testsuite/smoke-test/src/lib.rs +++ b/testsuite/smoke-test/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #[cfg(test)] diff --git a/testsuite/smoke-test/src/operational_tooling.rs b/testsuite/smoke-test/src/operational_tooling.rs index accea4803d..c314399dff 100644 --- a/testsuite/smoke-test/src/operational_tooling.rs +++ b/testsuite/smoke-test/src/operational_tooling.rs @@ -1,33 +1,33 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ smoke_test_environment::SmokeTestEnvironment, test_utils::{ - libra_swarm_utils::{ - get_json_rpc_libra_interface, get_op_tool, load_backend_storage, - load_libra_root_storage, load_node_config, + diem_swarm_utils::{ + get_json_rpc_diem_interface, get_op_tool, load_backend_storage, load_diem_root_storage, + load_node_config, }, wait_for_transaction_on_all_nodes, write_key_to_file_hex_format, write_key_to_file_lcs_format, }, }; -use libra_config::config::SecureBackend; -use libra_crypto::{ +use diem_config::config::SecureBackend; +use diem_crypto::{ ed25519::{Ed25519PrivateKey, Ed25519PublicKey}, HashValue, PrivateKey, Uniform, }; -use libra_global_constants::{ +use diem_global_constants::{ CONSENSUS_KEY, GENESIS_WAYPOINT, OPERATOR_ACCOUNT, OPERATOR_KEY, OWNER_ACCOUNT, OWNER_KEY, VALIDATOR_NETWORK_ADDRESS_KEYS, VALIDATOR_NETWORK_KEY, WAYPOINT, }; -use libra_key_manager::libra_interface::LibraInterface; -use libra_management::storage::to_x25519; -use libra_network_address::NetworkAddress; -use libra_operational_tool::test_helper::OperationalTool; -use libra_secure_json_rpc::VMStatusView; -use libra_secure_storage::{CryptoStorage, KVStorage, Storage}; -use libra_types::{ +use diem_key_manager::diem_interface::DiemInterface; +use diem_management::storage::to_x25519; +use diem_network_address::NetworkAddress; +use diem_operational_tool::test_helper::OperationalTool; +use diem_secure_json_rpc::VMStatusView; +use diem_secure_storage::{CryptoStorage, KVStorage, Storage}; +use diem_types::{ account_address::AccountAddress, block_info::BlockInfo, ledger_info::LedgerInfo, transaction::authenticator::AuthenticationKey, waypoint::Waypoint, }; @@ -210,13 +210,13 @@ fn test_set_operator_and_add_new_validator() { &env, write_key_to_file_hex_format, ); - let libra_backend = load_libra_root_storage(&env.validator_swarm, 0); + let diem_backend = load_diem_root_storage(&env.validator_swarm, 0); let val_human_name = "new_validator"; let (txn_ctx, _) = op_tool .create_validator( val_human_name, validator_key_path.to_str().unwrap(), - &libra_backend, + &diem_backend, false, ) .unwrap(); @@ -233,7 +233,7 @@ fn test_set_operator_and_add_new_validator() { .create_validator_operator( op_human_name, operator_key_path.to_str().unwrap(), - &libra_backend, + &diem_backend, true, ) .unwrap(); @@ -259,8 +259,8 @@ fn test_set_operator_and_add_new_validator() { .unwrap(); // Verify no validator operator - let libra_json_rpc = get_json_rpc_libra_interface(&env.validator_swarm, 0); - let account_state = libra_json_rpc + let diem_json_rpc = get_json_rpc_diem_interface(&env.validator_swarm, 0); + let account_state = diem_json_rpc .retrieve_account_state(validator_account) .unwrap(); let val_config_resource = account_state @@ -282,7 +282,7 @@ fn test_set_operator_and_add_new_validator() { .unwrap(); // Verify the operator has been set correctly - let account_state = libra_json_rpc + let account_state = diem_json_rpc .retrieve_account_state(validator_account) .unwrap(); let val_config_resource = account_state @@ -329,7 +329,7 @@ fn test_set_operator_and_add_new_validator() { // Add the validator to the validator set let txn_ctx = op_tool - .add_validator(validator_account, &libra_backend, true) + .add_validator(validator_account, &diem_backend, true) .unwrap(); // Wait for transaction execution @@ -354,7 +354,7 @@ fn test_set_operator_and_add_new_validator() { // Try and add the same validator again and watch it fail let txn_ctx = op_tool - .add_validator(validator_account, &libra_backend, false) + .add_validator(validator_account, &diem_backend, false) .unwrap(); assert_ne!(VMStatusView::Executed, txn_ctx.execution_result.unwrap()); } @@ -882,8 +882,8 @@ fn create_operator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf)) let (operator_key, operator_account) = create_new_test_account(); // Verify the corresponding account doesn't exist on-chain - let libra_json_rpc = get_json_rpc_libra_interface(&env.validator_swarm, 0); - libra_json_rpc + let diem_json_rpc = get_json_rpc_diem_interface(&env.validator_swarm, 0); + diem_json_rpc .retrieve_account_state(operator_account) .unwrap_err(); @@ -891,7 +891,7 @@ fn create_operator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf)) let key_file_path = write_key_to_file(&operator_key.public_key(), &env, file_writer); // Create the operator account - let backend = load_libra_root_storage(&env.validator_swarm, 0); + let backend = load_diem_root_storage(&env.validator_swarm, 0); let op_human_name = "new_operator"; let (txn_ctx, account_address) = op_tool .create_validator_operator( @@ -905,7 +905,7 @@ fn create_operator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf)) assert_eq!(VMStatusView::Executed, txn_ctx.execution_result.unwrap()); // Verify the operator account now exists on-chain - let account_state = libra_json_rpc + let account_state = diem_json_rpc .retrieve_account_state(operator_account) .unwrap(); let op_config_resource = account_state @@ -924,8 +924,8 @@ fn create_validator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf) let (validator_key, validator_account) = create_new_test_account(); // Verify the corresponding account doesn't exist on-chain - let libra_json_rpc = get_json_rpc_libra_interface(&env.validator_swarm, 0); - libra_json_rpc + let diem_json_rpc = get_json_rpc_diem_interface(&env.validator_swarm, 0); + diem_json_rpc .retrieve_account_state(validator_account) .unwrap_err(); @@ -933,7 +933,7 @@ fn create_validator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf) let key_file_path = write_key_to_file(&validator_key.public_key(), &env, file_writer); // Create the validator account - let backend = load_libra_root_storage(&env.validator_swarm, 0); + let backend = load_diem_root_storage(&env.validator_swarm, 0); let val_human_name = "new_validator"; let (txn_ctx, account_address) = op_tool .create_validator( @@ -959,7 +959,7 @@ fn create_validator_with_file_writer(file_writer: fn(&Ed25519PublicKey, PathBuf) assert_eq!(VMStatusView::Executed, txn_ctx.execution_result.unwrap()); // Verify the validator account now exists on-chain - let account_state = libra_json_rpc + let account_state = diem_json_rpc .retrieve_account_state(validator_account) .unwrap(); let val_config_resource = account_state diff --git a/testsuite/smoke-test/src/replay_tooling.rs b/testsuite/smoke-test/src/replay_tooling.rs index ca11901e05..860a4d9ca5 100644 --- a/testsuite/smoke-test/src/replay_tooling.rs +++ b/testsuite/smoke-test/src/replay_tooling.rs @@ -1,28 +1,28 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ - test_utils::{libra_swarm_utils::get_libra_debugger, setup_swarm_and_client_proxy}, + test_utils::{diem_swarm_utils::get_diem_debugger, setup_swarm_and_client_proxy}, workspace_builder, }; #[test] fn test_replay_tooling() { let (env, mut client) = setup_swarm_and_client_proxy(1, 0); - let json_debugger = get_libra_debugger(&env.validator_swarm, 0); + let json_debugger = get_diem_debugger(&env.validator_swarm, 0); client.create_next_account(false).unwrap(); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "100", "Coin1"], true) + .mint_coins(&["mintb", "0", "100", "XUS"], true) .unwrap(); client - .mint_coins(&["mintb", "1", "100", "Coin1"], true) + .mint_coins(&["mintb", "1", "100", "XUS"], true) .unwrap(); client - .transfer_coins(&["tb", "0", "1", "3", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "3", "XUS"], true) .unwrap(); let txn = client @@ -38,7 +38,7 @@ fn test_replay_tooling() { let (account, _) = client.get_account_address_from_parameter("0").unwrap(); let script_path = workspace_builder::workspace_root() - .join("language/libra-tools/transaction-replay/examples/account_exists.move"); + .join("language/diem-tools/transaction-replay/examples/account_exists.move"); let bisect_result = json_debugger .bisect_transactions_by_script(script_path.to_str().unwrap(), account, 0, txn.version, None) diff --git a/testsuite/smoke-test/src/scripts_and_modules.rs b/testsuite/smoke-test/src/scripts_and_modules.rs index 09e5d445f7..3976454d07 100644 --- a/testsuite/smoke-test/src/scripts_and_modules.rs +++ b/testsuite/smoke-test/src/scripts_and_modules.rs @@ -1,13 +1,13 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ test_utils::{compare_balances, setup_swarm_and_client_proxy}, workspace_builder, }; -use libra_crypto::HashValue; -use libra_temppath::TempPath; -use libra_types::account_address::AccountAddress; +use diem_crypto::HashValue; +use diem_temppath::TempPath; +use diem_types::account_address::AccountAddress; use std::{ fs, io, io::Write, @@ -20,10 +20,10 @@ fn test_e2e_modify_publishing_option() { client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); let script_path = workspace_builder::workspace_root() @@ -81,7 +81,7 @@ fn test_malformed_script() { let (_env, mut client) = setup_swarm_and_client_proxy(1, 0); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "100", "Coin1"], true) + .mint_coins(&["mintb", "0", "100", "XUS"], true) .unwrap(); let script_path = workspace_builder::workspace_root() @@ -104,7 +104,7 @@ fn test_malformed_script() { // Previous transaction should not choke the system. client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); } @@ -113,16 +113,16 @@ fn test_execute_custom_module_and_script() { let (_env, mut client) = setup_swarm_and_client_proxy(1, 0); client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "50", "Coin1"], true) + .mint_coins(&["mintb", "0", "50", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(50.0, "Coin1".to_string())], + vec![(50.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); let recipient_address = client.create_next_account(false).unwrap().address; client - .mint_coins(&["mintb", "1", "1", "Coin1"], true) + .mint_coins(&["mintb", "1", "1", "XUS"], true) .unwrap(); let (sender_account, _) = client.get_account_address_from_parameter("0").unwrap(); @@ -181,11 +181,11 @@ fn test_execute_custom_module_and_script() { .unwrap(); assert!(compare_balances( - vec![(49.999_990, "Coin1".to_string())], + vec![(49.999_990, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(1.000_010, "Coin1".to_string())], + vec![(1.000_010, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); } diff --git a/testsuite/smoke-test/src/smoke_test_environment.rs b/testsuite/smoke-test/src/smoke_test_environment.rs index 38481bbd47..5fe84bf59b 100644 --- a/testsuite/smoke-test/src/smoke_test_environment.rs +++ b/testsuite/smoke-test/src/smoke_test_environment.rs @@ -1,46 +1,46 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{test_utils::libra_swarm_utils::get_client_proxy, workspace_builder}; +use crate::{test_utils::diem_swarm_utils::get_client_proxy, workspace_builder}; use cli::client_proxy::ClientProxy; -use libra_config::config::NodeConfig; -use libra_crypto::ed25519::Ed25519PrivateKey; -use libra_genesis_tool::config_builder::FullnodeType; -use libra_swarm::swarm::LibraSwarm; -use libra_temppath::TempPath; -use libra_types::waypoint::Waypoint; +use diem_config::config::NodeConfig; +use diem_crypto::ed25519::Ed25519PrivateKey; +use diem_genesis_tool::config_builder::FullnodeType; +use diem_swarm::swarm::DiemSwarm; +use diem_temppath::TempPath; +use diem_types::waypoint::Waypoint; pub struct SmokeTestEnvironment { - pub validator_swarm: LibraSwarm, - pub vfn_swarm: Option, - pub pfn_swarm: Option, - libra_root_key: (Ed25519PrivateKey, String), + pub validator_swarm: DiemSwarm, + pub vfn_swarm: Option, + pub pfn_swarm: Option, + diem_root_key: (Ed25519PrivateKey, String), mnemonic_file: TempPath, } impl SmokeTestEnvironment { pub fn new_with_chunk_limit(num_validators: usize, chunk_limit: u64) -> Self { - ::libra_logger::Logger::new().init(); + ::diem_logger::Logger::new().init(); let mut template = NodeConfig::default_for_validator(); template.state_sync.chunk_limit = chunk_limit; - let validator_swarm = LibraSwarm::configure_validator_swarm( - &workspace_builder::get_libra_node_with_failpoints(), + let validator_swarm = DiemSwarm::configure_validator_swarm( + &workspace_builder::get_diem_node_with_failpoints(), num_validators, None, Some(template), ) .unwrap(); - let mnemonic_file = libra_temppath::TempPath::new(); + let mnemonic_file = diem_temppath::TempPath::new(); mnemonic_file .create_as_file() .expect("could not create temporary mnemonic_file_path"); - let key = generate_key::load_key(&validator_swarm.config.libra_root_key_path); + let key = generate_key::load_key(&validator_swarm.config.diem_root_key_path); let key_path = validator_swarm .config - .libra_root_key_path + .diem_root_key_path .to_str() .expect("Unable to read faucet path") .to_string(); @@ -49,7 +49,7 @@ impl SmokeTestEnvironment { validator_swarm, vfn_swarm: None, pfn_swarm: None, - libra_root_key: (key, key_path), + diem_root_key: (key, key_path), mnemonic_file, } } @@ -59,8 +59,8 @@ impl SmokeTestEnvironment { pub fn setup_vfn_swarm(&mut self) { self.vfn_swarm = Some( - LibraSwarm::configure_fn_swarm( - &workspace_builder::get_libra_node_with_failpoints(), + DiemSwarm::configure_fn_swarm( + &workspace_builder::get_diem_node_with_failpoints(), None, None, &self.validator_swarm.config, @@ -72,8 +72,8 @@ impl SmokeTestEnvironment { pub fn setup_pfn_swarm(&mut self, num_nodes: usize) { self.pfn_swarm = Some( - LibraSwarm::configure_fn_swarm( - &workspace_builder::get_libra_node_with_failpoints(), + DiemSwarm::configure_fn_swarm( + &workspace_builder::get_diem_node_with_failpoints(), None, None, &self.validator_swarm.config, @@ -91,7 +91,7 @@ impl SmokeTestEnvironment { get_client_proxy( &self.validator_swarm, node_index, - &self.libra_root_key.1, + &self.diem_root_key.1, self.mnemonic_file.path().to_path_buf(), waypoint, ) @@ -103,7 +103,7 @@ impl SmokeTestEnvironment { .as_ref() .expect("Vfn swarm is not initialized"), node_index, - &self.libra_root_key.1, + &self.diem_root_key.1, self.mnemonic_file.path().to_path_buf(), waypoint, ) @@ -115,7 +115,7 @@ impl SmokeTestEnvironment { .as_ref() .expect("Public fn swarm is not initialized"), node_index, - &self.libra_root_key.1, + &self.diem_root_key.1, self.mnemonic_file.path().to_path_buf(), waypoint, ) diff --git a/testsuite/smoke-test/src/state_sync.rs b/testsuite/smoke-test/src/state_sync.rs index f197ec07c1..eb301219f9 100644 --- a/testsuite/smoke-test/src/state_sync.rs +++ b/testsuite/smoke-test/src/state_sync.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ smoke_test_environment::SmokeTestEnvironment, test_utils::{ compare_balances, - libra_swarm_utils::{insert_waypoint, load_node_config, save_node_config}, + diem_swarm_utils::{insert_waypoint, load_node_config, save_node_config}, setup_swarm_and_client_proxy, }, workspace_builder, }; -use libra_config::config::NodeConfig; -use libra_crypto::HashValue; -use libra_types::waypoint::Waypoint; +use diem_config::config::NodeConfig; +use diem_crypto::HashValue; +use diem_types::waypoint::Waypoint; use std::{fs, path::PathBuf}; #[test] @@ -31,20 +31,20 @@ fn test_basic_state_synchronization() { client_1.create_next_account(false).unwrap(); client_1.create_next_account(false).unwrap(); client_1 - .mint_coins(&["mb", "0", "100", "Coin1"], true) + .mint_coins(&["mb", "0", "100", "XUS"], true) .unwrap(); client_1 - .mint_coins(&["mb", "1", "10", "Coin1"], true) + .mint_coins(&["mb", "1", "10", "XUS"], true) .unwrap(); client_1 - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_1.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_1.get_balances(&["b", "1"]).unwrap(), )); @@ -53,15 +53,15 @@ fn test_basic_state_synchronization() { env.validator_swarm.kill_node(node_to_restart); // All these are executed while one node is down assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_1.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_1.get_balances(&["b", "1"]).unwrap(), )); client_1 - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); // Reconnect and synchronize the state @@ -74,11 +74,11 @@ fn test_basic_state_synchronization() { let mut client_2 = env.get_validator_client(node_to_restart, None); client_2.set_accounts(client_1.copy_all_accounts()); assert!(compare_balances( - vec![(89.0, "Coin1".to_string())], + vec![(89.0, "XUS".to_string())], client_2.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(21.0, "Coin1".to_string())], + vec![(21.0, "XUS".to_string())], client_2.get_balances(&["b", "1"]).unwrap(), )); @@ -86,16 +86,16 @@ fn test_basic_state_synchronization() { env.validator_swarm.kill_node(node_to_restart); // All these are executed while one node is down assert!(compare_balances( - vec![(89.0, "Coin1".to_string())], + vec![(89.0, "XUS".to_string())], client_1.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(21.0, "Coin1".to_string())], + vec![(21.0, "XUS".to_string())], client_1.get_balances(&["b", "1"]).unwrap(), )); for _ in 0..10 { client_1 - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); } @@ -108,11 +108,11 @@ fn test_basic_state_synchronization() { // Connect to the newly recovered node and verify its state client_2.set_accounts(client_1.copy_all_accounts()); assert!(compare_balances( - vec![(79.0, "Coin1".to_string())], + vec![(79.0, "XUS".to_string())], client_2.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(31.0, "Coin1".to_string())], + vec![(31.0, "XUS".to_string())], client_2.get_balances(&["b", "1"]).unwrap(), )); } @@ -123,27 +123,27 @@ fn test_startup_sync_state() { client_1.create_next_account(false).unwrap(); client_1.create_next_account(false).unwrap(); client_1 - .mint_coins(&["mb", "0", "100", "Coin1"], true) + .mint_coins(&["mb", "0", "100", "XUS"], true) .unwrap(); client_1 - .mint_coins(&["mb", "1", "10", "Coin1"], true) + .mint_coins(&["mb", "1", "10", "XUS"], true) .unwrap(); client_1 - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_1.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_1.get_balances(&["b", "1"]).unwrap(), )); let peer_to_stop = 0; env.validator_swarm.kill_node(peer_to_stop); let (node_config, _) = load_node_config(&env.validator_swarm, peer_to_stop); // TODO Remove hardcoded path to state db - let state_db_path = node_config.storage.dir().join("libradb"); + let state_db_path = node_config.storage.dir().join("diemdb"); // Verify that state_db_path exists and // we are not deleting a non-existent directory assert!(state_db_path.as_path().exists()); @@ -159,23 +159,23 @@ fn test_startup_sync_state() { client_0.set_accounts(accounts); client_0.wait_for_transaction(sender_address, 0).unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_0.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_0.get_balances(&["b", "1"]).unwrap(), )); client_1 - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); client_0.wait_for_transaction(sender_address, 1).unwrap(); assert!(compare_balances( - vec![(80.0, "Coin1".to_string())], + vec![(80.0, "XUS".to_string())], client_0.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(30.0, "Coin1".to_string())], + vec![(30.0, "XUS".to_string())], client_0.get_balances(&["b", "1"]).unwrap(), )); } @@ -186,20 +186,20 @@ fn test_startup_sync_state_with_empty_consensus_db() { client_1.create_next_account(false).unwrap(); client_1.create_next_account(false).unwrap(); client_1 - .mint_coins(&["mb", "0", "100", "Coin1"], true) + .mint_coins(&["mb", "0", "100", "XUS"], true) .unwrap(); client_1 - .mint_coins(&["mb", "1", "10", "Coin1"], true) + .mint_coins(&["mb", "1", "10", "XUS"], true) .unwrap(); client_1 - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_1.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_1.get_balances(&["b", "1"]).unwrap(), )); let peer_to_stop = 0; @@ -226,23 +226,23 @@ fn test_startup_sync_state_with_empty_consensus_db() { client_0.set_accounts(accounts); client_0.wait_for_transaction(sender_address, 0).unwrap(); assert!(compare_balances( - vec![(90.0, "Coin1".to_string())], + vec![(90.0, "XUS".to_string())], client_0.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(20.0, "Coin1".to_string())], + vec![(20.0, "XUS".to_string())], client_0.get_balances(&["b", "1"]).unwrap(), )); client_1 - .transfer_coins(&["tb", "0", "1", "10", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "10", "XUS"], true) .unwrap(); client_0.wait_for_transaction(sender_address, 1).unwrap(); assert!(compare_balances( - vec![(80.0, "Coin1".to_string())], + vec![(80.0, "XUS".to_string())], client_0.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(30.0, "Coin1".to_string())], + vec![(30.0, "XUS".to_string())], client_0.get_balances(&["b", "1"]).unwrap(), )); } @@ -258,17 +258,17 @@ fn test_state_sync_multichunk_epoch() { client.create_next_account(false).unwrap(); client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(10.0, "Coin1".to_string())], + vec![(10.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); // submit more transactions to make the current epoch (=1) span > 1 chunk (= 5 versions) for _ in 0..7 { client - .mint_coins(&["mintb", "0", "10", "Coin1"], true) + .mint_coins(&["mintb", "0", "10", "XUS"], true) .unwrap(); } diff --git a/testsuite/smoke-test/src/storage.rs b/testsuite/smoke-test/src/storage.rs index 8ebef02d66..c15b856b8b 100644 --- a/testsuite/smoke-test/src/storage.rs +++ b/testsuite/smoke-test/src/storage.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ test_utils::{ compare_balances, - libra_swarm_utils::{insert_waypoint, load_node_config, save_node_config}, + diem_swarm_utils::{insert_waypoint, load_node_config, save_node_config}, setup_swarm_and_client_proxy, }, workspace_builder, @@ -13,8 +13,8 @@ use crate::{ use anyhow::{bail, Result}; use backup_cli::metadata::view::BackupStorageState; use cli::client_proxy::ClientProxy; -use libra_temppath::TempPath; -use libra_types::transaction::Version; +use diem_temppath::TempPath; +use diem_types::transaction::Version; use rand::random; use std::{ fs, @@ -41,20 +41,20 @@ fn test_db_restore() { client.create_next_account(false).unwrap(); client.create_next_account(false).unwrap(); client - .mint_coins(&["mb", "0", "1000000", "Coin1"], true) + .mint_coins(&["mb", "0", "1000000", "XUS"], true) .unwrap(); client - .mint_coins(&["mb", "1", "1000000", "Coin1"], true) + .mint_coins(&["mb", "1", "1000000", "XUS"], true) .unwrap(); client - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); assert!(compare_balances( - vec![(999999.0, "Coin1".to_string())], + vec![(999999.0, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(1000001.0, "Coin1".to_string())], + vec![(1000001.0, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); @@ -79,7 +79,7 @@ fn test_db_restore() { insert_waypoint(&mut node0_config, genesis_waypoint); save_node_config(&mut node0_config, &env.validator_swarm, 0); let db_dir = node0_config.storage.dir(); - fs::remove_dir_all(db_dir.join("libradb")).unwrap(); + fs::remove_dir_all(db_dir.join("diemdb")).unwrap(); fs::remove_dir_all(db_dir.join("consensusdb")).unwrap(); // restore db from backup @@ -98,7 +98,7 @@ fn test_db_restore() { let mut client0 = env.get_validator_client(0, None); client0.set_accounts(accounts); assert!(compare_balances( - vec![(999999.0 - transferred, "Coin1".to_string())], + vec![(999999.0 - transferred, "XUS".to_string())], client0.get_balances(&["b", "0"]).unwrap(), )); } @@ -254,26 +254,24 @@ fn transfer_and_reconfig( while !quit.load(Ordering::Relaxed) { if random::() % 10 == 0 { println!( - "Changing libra version to {}: {:?}", + "Changing diem version to {}: {:?}", transferred, - client.change_libra_version( - &["change_libra_version", &transferred.to_string()], - true - ) + client + .change_diem_version(&["change_diem_version", &transferred.to_string()], true) ); } client - .transfer_coins(&["tb", "0", "1", "1", "Coin1"], true) + .transfer_coins(&["tb", "0", "1", "1", "XUS"], true) .unwrap(); transferred += 1.0; assert!(compare_balances( - vec![(balance0 - transferred, "Coin1".to_string())], + vec![(balance0 - transferred, "XUS".to_string())], client.get_balances(&["b", "0"]).unwrap(), )); assert!(compare_balances( - vec![(balance1 + transferred, "Coin1".to_string())], + vec![(balance1 + transferred, "XUS".to_string())], client.get_balances(&["b", "1"]).unwrap(), )); } diff --git a/testsuite/smoke-test/src/test_utils.rs b/testsuite/smoke-test/src/test_utils.rs index 3b3202cf5b..318f1cedef 100644 --- a/testsuite/smoke-test/src/test_utils.rs +++ b/testsuite/smoke-test/src/test_utils.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::smoke_test_environment::SmokeTestEnvironment; use cli::client_proxy::ClientProxy; -use libra_config::config::{Identity, NodeConfig, SecureBackend}; -use libra_crypto::ed25519::Ed25519PublicKey; -use libra_types::account_address::AccountAddress; +use diem_config::config::{Identity, NodeConfig, SecureBackend}; +use diem_crypto::ed25519::Ed25519PublicKey; +use diem_types::account_address::AccountAddress; use rust_decimal::{prelude::FromPrimitive, Decimal}; use std::{collections::BTreeMap, fs::File, io::Write, path::PathBuf, str::FromStr}; @@ -22,10 +22,10 @@ pub fn compare_balances( let extracted_balances_dec: BTreeMap<_, _> = extracted_balances .into_iter() .map(|balance_str| { - let (currency_code, stripped_str) = if balance_str.ends_with("Coin1") { - ("Coin1", balance_str.trim_end_matches("Coin1")) - } else if balance_str.ends_with("LBR") { - ("LBR", balance_str.trim_end_matches("LBR")) + let (currency_code, stripped_str) = if balance_str.ends_with("XUS") { + ("XUS", balance_str.trim_end_matches("XUS")) + } else if balance_str.ends_with("XDX") { + ("XDX", balance_str.trim_end_matches("XDX")) } else { panic!("Unexpected currency type returned for balance") }; @@ -74,29 +74,29 @@ pub fn wait_for_transaction_on_all_nodes( } /// This module provides useful functions for operating, handling and managing -/// LibraSwarm instances. It is particularly useful for working with tests that +/// DiemSwarm instances. It is particularly useful for working with tests that /// require a SmokeTestEnvironment, as it provides a generic interface across -/// LibraSwarms, regardless of if the swarm is a validator swarm, validator full +/// DiemSwarms, regardless of if the swarm is a validator swarm, validator full /// node swarm, or a public full node swarm. -pub mod libra_swarm_utils { +pub mod diem_swarm_utils { use crate::test_utils::fetch_backend_storage; use cli::client_proxy::ClientProxy; - use libra_config::config::{NodeConfig, SecureBackend, WaypointConfig}; - use libra_events_fetcher::LibraEventsFetcher; - use libra_key_manager::libra_interface::JsonRpcLibraInterface; - use libra_operational_tool::test_helper::OperationalTool; - use libra_secure_storage::{KVStorage, Storage}; - use libra_swarm::swarm::LibraSwarm; - use libra_transaction_replay::LibraDebugger; - use libra_types::{chain_id::ChainId, waypoint::Waypoint}; + use diem_config::config::{NodeConfig, SecureBackend, WaypointConfig}; + use diem_events_fetcher::DiemEventsFetcher; + use diem_key_manager::diem_interface::JsonRpcDiemInterface; + use diem_operational_tool::test_helper::OperationalTool; + use diem_secure_storage::{KVStorage, Storage}; + use diem_swarm::swarm::DiemSwarm; + use diem_transaction_replay::DiemDebugger; + use diem_types::{chain_id::ChainId, waypoint::Waypoint}; use std::path::PathBuf; /// Returns a new client proxy connected to the given swarm at the specified /// node index. pub fn get_client_proxy( - swarm: &LibraSwarm, + swarm: &DiemSwarm, node_index: usize, - libra_root_key_path: &str, + diem_root_key_path: &str, mnemonic_file_path: PathBuf, waypoint: Option, ) -> ClientProxy { @@ -112,9 +112,9 @@ pub mod libra_swarm_utils { ClientProxy::new( ChainId::test(), &format!("http://localhost:{}/v1", port), - &libra_root_key_path, - &libra_root_key_path, - &libra_root_key_path, + &diem_root_key_path, + &diem_root_key_path, + &diem_root_key_path, false, /* faucet server */ None, Some(mnemonic_file_path), @@ -124,34 +124,34 @@ pub mod libra_swarm_utils { .unwrap() } - /// Returns a JSON RPC based Libra Interface pointing to a node at the given + /// Returns a JSON RPC based Diem Interface pointing to a node at the given /// node index. - pub fn get_json_rpc_libra_interface( - swarm: &LibraSwarm, + pub fn get_json_rpc_diem_interface( + swarm: &DiemSwarm, node_index: usize, - ) -> JsonRpcLibraInterface { + ) -> JsonRpcDiemInterface { let json_rpc_endpoint = format!("http://127.0.0.1:{}", swarm.get_client_port(node_index)); - JsonRpcLibraInterface::new(json_rpc_endpoint) + JsonRpcDiemInterface::new(json_rpc_endpoint) } - /// Returns a Libra Debugger pointing to a node at the given node index. - pub fn get_libra_debugger(swarm: &LibraSwarm, node_index: usize) -> LibraDebugger { + /// Returns a Diem Debugger pointing to a node at the given node index. + pub fn get_diem_debugger(swarm: &DiemSwarm, node_index: usize) -> DiemDebugger { let (node_config, _) = load_node_config(swarm, node_index); let swarm_rpc_endpoint = format!("http://localhost:{}", node_config.json_rpc.address.port()); - LibraDebugger::json_rpc(swarm_rpc_endpoint.as_str()).unwrap() + DiemDebugger::json_rpc(swarm_rpc_endpoint.as_str()).unwrap() } - /// Returns a Libra Event Fetcher pointing to a node at the given node index. - pub fn get_libra_event_fetcher(swarm: &LibraSwarm, node_index: usize) -> LibraEventsFetcher { + /// Returns a Diem Event Fetcher pointing to a node at the given node index. + pub fn get_diem_event_fetcher(swarm: &DiemSwarm, node_index: usize) -> DiemEventsFetcher { let (node_config, _) = load_node_config(swarm, node_index); let swarm_rpc_endpoint = format!("http://localhost:{}", node_config.json_rpc.address.port()); - LibraEventsFetcher::new(swarm_rpc_endpoint.as_str()).unwrap() + DiemEventsFetcher::new(swarm_rpc_endpoint.as_str()).unwrap() } /// Returns an operational tool pointing to a validator node at the given node index. - pub fn get_op_tool(swarm: &LibraSwarm, node_index: usize) -> OperationalTool { + pub fn get_op_tool(swarm: &DiemSwarm, node_index: usize) -> OperationalTool { OperationalTool::new( format!("http://127.0.0.1:{}", swarm.get_client_port(node_index)), ChainId::test(), @@ -159,27 +159,27 @@ pub mod libra_swarm_utils { } /// Loads the nodes's storage backend identified by the node index in the given swarm. - pub fn load_backend_storage(swarm: &LibraSwarm, node_index: usize) -> SecureBackend { + pub fn load_backend_storage(swarm: &DiemSwarm, node_index: usize) -> SecureBackend { let (node_config, _) = load_node_config(swarm, node_index); fetch_backend_storage(&node_config, None) } - /// Loads the libra root's storage backend identified by the node index in the given swarm. - pub fn load_libra_root_storage(swarm: &LibraSwarm, node_index: usize) -> SecureBackend { + /// Loads the diem root's storage backend identified by the node index in the given swarm. + pub fn load_diem_root_storage(swarm: &DiemSwarm, node_index: usize) -> SecureBackend { let (node_config, _) = load_node_config(swarm, node_index); - fetch_backend_storage(&node_config, Some("libra_root".to_string())) + fetch_backend_storage(&node_config, Some("diem_root".to_string())) } /// Loads the node config for the validator at the specified index. Also returns the node /// config path. - pub fn load_node_config(swarm: &LibraSwarm, node_index: usize) -> (NodeConfig, PathBuf) { + pub fn load_node_config(swarm: &DiemSwarm, node_index: usize) -> (NodeConfig, PathBuf) { let node_config_path = swarm.config.config_files.get(node_index).unwrap(); let node_config = NodeConfig::load(&node_config_path).unwrap(); (node_config, node_config_path.clone()) } /// Saves the node config for the node at the specified index in the given swarm. - pub fn save_node_config(node_config: &mut NodeConfig, swarm: &LibraSwarm, node_index: usize) { + pub fn save_node_config(node_config: &mut NodeConfig, swarm: &DiemSwarm, node_index: usize) { let node_config_path = swarm.config.config_files.get(node_index).unwrap(); node_config.save(node_config_path).unwrap(); } @@ -188,10 +188,10 @@ pub mod libra_swarm_utils { let f = |backend: &SecureBackend| { let mut storage: Storage = backend.into(); storage - .set(libra_global_constants::WAYPOINT, waypoint) + .set(diem_global_constants::WAYPOINT, waypoint) .expect("Unable to write waypoint"); storage - .set(libra_global_constants::GENESIS_WAYPOINT, waypoint) + .set(diem_global_constants::GENESIS_WAYPOINT, waypoint) .expect("Unable to write waypoint"); }; let backend = &node_config.consensus.safety_rules.backend; diff --git a/testsuite/smoke-test/src/transaction.rs b/testsuite/smoke-test/src/transaction.rs index b923fdee00..d8f43c9629 100644 --- a/testsuite/smoke-test/src/transaction.rs +++ b/testsuite/smoke-test/src/transaction.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::test_utils::setup_swarm_and_client_proxy; -use libra_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, SigningKey, Uniform}; -use libra_types::{account_config::COIN1_NAME, transaction::authenticator::AuthenticationKey}; +use diem_crypto::{ed25519::Ed25519PrivateKey, PrivateKey, SigningKey, Uniform}; +use diem_types::{account_config::XUS_NAME, transaction::authenticator::AuthenticationKey}; #[test] fn test_external_transaction_signer() { @@ -28,7 +28,7 @@ fn test_external_transaction_signer() { // mint to the sender address client .mint_coins( - &["mintb", &format!("{}", sender_auth_key), "10", "Coin1"], + &["mintb", &format!("{}", sender_auth_key), "10", "XUS"], true, ) .unwrap(); @@ -39,7 +39,7 @@ fn test_external_transaction_signer() { "mintb", &format!("{}", receiver_auth_key.unwrap()), "1", - "Coin1", + "XUS", ], true, ) @@ -50,7 +50,7 @@ fn test_external_transaction_signer() { .get_sequence_number(&["sequence", &format!("{}", sender_address)]) .unwrap(); - let currency_code = COIN1_NAME; + let currency_code = XUS_NAME; let unsigned_txn = client .prepare_transfer_coins( @@ -104,7 +104,7 @@ fn test_external_transaction_signer() { assert_eq!(p_max_gas_amount, max_gas_amount); assert_eq!(script.r#type, "peer_to_peer_with_metadata"); - assert_eq!(script.type_arguments, vec!["Coin1"]); + assert_eq!(script.type_arguments, vec!["XUS"]); assert_eq!( script.arguments, vec![ diff --git a/testsuite/smoke-test/src/workspace_builder.rs b/testsuite/smoke-test/src/workspace_builder.rs index 169d783e52..87d32f46d2 100644 --- a/testsuite/smoke-test/src/workspace_builder.rs +++ b/testsuite/smoke-test/src/workspace_builder.rs @@ -1,18 +1,18 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! DO NOT USE OUTSIDE OF SMOKE_TEST CRATE //! //! This utility is to only be used inside of smoke test. -use libra_logger::prelude::*; +use diem_logger::prelude::*; use once_cell::sync::Lazy; use std::{env, path::PathBuf, process::Command}; const WORKSPACE_BUILD_ERROR_MSG: &str = r#" Unable to build all workspace binaries. Cannot continue running tests. - Try running 'cargo build --all --bins --exclude cluster-test --exclude libra-node' yourself. + Try running 'cargo build --all --bins --exclude cluster-test --exclude diem-node' yourself. "#; // Global flag indicating if all binaries in the workspace have been built. @@ -20,7 +20,7 @@ static WORKSPACE_BUILT: Lazy = Lazy::new(|| { info!("Building project binaries"); let args = if cfg!(debug_assertions) { // special case: excluding cluster-test as it exports no-struct-opt feature that poisons everything - // use get_libra_node_with_failpoints to get libra-node binary + // use get_diem_node_with_failpoints to get diem-node binary vec![ "build", "--all", @@ -28,7 +28,7 @@ static WORKSPACE_BUILT: Lazy = Lazy::new(|| { "--exclude", "cluster-test", "--exclude", - "libra-node", + "diem-node", ] } else { vec!["build", "--all", "--bins", "--release"] @@ -96,18 +96,18 @@ pub fn get_bin>(bin_name: S) -> PathBuf { bin_path } -static LIBRA_NODE: Lazy = Lazy::new(|| { +static DIEM_NODE: Lazy = Lazy::new(|| { let args = vec!["build", "--features", "failpoints"]; let mut path = workspace_root(); - path.push("libra-node/"); - info!("Building libra-node binary with failpoints"); + path.push("diem-node/"); + info!("Building diem-node binary with failpoints"); let cargo_build = Command::new("cargo") .current_dir(path) .args(&args) .output() - .expect("Failed to build libra node"); + .expect("Failed to build diem node"); if cargo_build.status.success() { - info!("Finished building libra-node with failpoints"); + info!("Finished building diem-node with failpoints"); true } else { error!("Output: {:?}", cargo_build); @@ -115,14 +115,14 @@ static LIBRA_NODE: Lazy = Lazy::new(|| { } }); -pub fn get_libra_node_with_failpoints() -> PathBuf { - if !*LIBRA_NODE { - panic!("Failed to build libra node with failpoints"); +pub fn get_diem_node_with_failpoints() -> PathBuf { + if !*DIEM_NODE { + panic!("Failed to build diem node with failpoints"); } - let bin_path = build_dir().join(format!("{}{}", "libra-node", env::consts::EXE_SUFFIX)); + let bin_path = build_dir().join(format!("{}{}", "diem-node", env::consts::EXE_SUFFIX)); if !bin_path.exists() { panic!(format!( - "Can't find binary libra-node in expected path {:?}", + "Can't find binary diem-node in expected path {:?}", bin_path )); } diff --git a/types/Cargo.toml b/types/Cargo.toml index b8ce4f0db0..b762a98593 100644 --- a/types/Cargo.toml +++ b/types/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "libra-types" +name = "diem-types" version = "0.1.0" -authors = ["Libra Association "] -description = "Libra types" +authors = ["Diem Association "] +description = "Diem types" repository = "https://github.com/libra/libra" -homepage = "https://libra.org" +homepage = "https://diem.com" license = "Apache-2.0" publish = false edition = "2018" @@ -27,12 +27,12 @@ thiserror = "1.0.22" tiny-keccak = { version = "2.0.2", default-features = false, features = ["sha3"] } lcs = { version = "0.1.0", package = "libra-canonical-serialization" } -libra-crypto = { path = "../crypto/crypto", version = "0.1.0" } -libra-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } -libra-infallible = { path = "../common/infallible", version = "0.1.0" } -libra-network-address = { path = "../network/network-address", version = "0.1.0" } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } -libra-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0" } +diem-crypto-derive = { path = "../crypto/crypto-derive", version = "0.1.0" } +diem-infallible = { path = "../common/infallible", version = "0.1.0" } +diem-network-address = { path = "../network/network-address", version = "0.1.0" } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0", optional = true } +diem-workspace-hack = { path = "../common/workspace-hack", version = "0.1.0" } move-core-types = { path = "../language/move-core/types", version = "0.1.0" } [dev-dependencies] @@ -41,11 +41,11 @@ proptest = "0.10.1" proptest-derive = "0.2.0" serde_json = "1.0.60" -libra-crypto = { path = "../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } -libra-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } -libra-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } +diem-crypto = { path = "../crypto/crypto", version = "0.1.0", features = ["fuzzing"] } +diem-network-address = { path = "../network/network-address", version = "0.1.0", features = ["fuzzing"] } +diem-proptest-helpers = { path = "../common/proptest-helpers", version = "0.1.0" } move-core-types = { path = "../language/move-core/types", version = "0.1.0", features = ["fuzzing"] } [features] default = [] -fuzzing = ["proptest", "proptest-derive", "libra-proptest-helpers", "libra-crypto/fuzzing", "libra-network-address/fuzzing", "move-core-types/fuzzing"] +fuzzing = ["proptest", "proptest-derive", "diem-proptest-helpers", "diem-crypto/fuzzing", "diem-network-address/fuzzing", "move-core-types/fuzzing"] diff --git a/types/src/access_path.rs b/types/src/access_path.rs index 30784043a1..91dbeaf1a0 100644 --- a/types/src/access_path.rs +++ b/types/src/access_path.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! Suppose we have the following data structure in a smart contract: @@ -36,7 +36,7 @@ //! `path` will be set to "/a" and use the `get_prefix()` method from statedb use crate::account_address::AccountAddress; -use libra_crypto::hash::HashValue; +use diem_crypto::hash::HashValue; use move_core_types::language_storage::{ModuleId, ResourceKey, StructTag, CODE_TAG, RESOURCE_TAG}; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; diff --git a/types/src/account_address.rs b/types/src/account_address.rs index 88d86bd38d..73f62418c1 100644 --- a/types/src/account_address.rs +++ b/types/src/account_address.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::transaction::authenticator::AuthenticationKey; -use libra_crypto::ed25519::Ed25519PublicKey; +use diem_crypto::ed25519::Ed25519PublicKey; pub use move_core_types::account_address::AccountAddress; diff --git a/types/src/account_config/constants/account.rs b/types/src/account_config/constants/account.rs index 1bb1256bea..48155bbd88 100644 --- a/types/src/account_config/constants/account.rs +++ b/types/src/account_config/constants/account.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub use move_core_types::vm_status::known_locations::{ diff --git a/types/src/account_config/constants/addresses.rs b/types/src/account_config/constants/addresses.rs index 0c6c3fb015..dad30fc9bc 100644 --- a/types/src/account_config/constants/addresses.rs +++ b/types/src/account_config/constants/addresses.rs @@ -1,11 +1,11 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; pub use move_core_types::language_storage::CORE_CODE_ADDRESS; -pub fn libra_root_address() -> AccountAddress { +pub fn diem_root_address() -> AccountAddress { AccountAddress::from_hex_literal("0xA550C18") .expect("Parsing valid hex literal should always succeed") } diff --git a/types/src/account_config/constants/coins.rs b/types/src/account_config/constants/coins.rs index 76feade585..c7634ce33d 100644 --- a/types/src/account_config/constants/coins.rs +++ b/types/src/account_config/constants/coins.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_config::constants::{from_currency_code_string, CORE_CODE_ADDRESS}; @@ -8,33 +8,33 @@ use move_core_types::{ }; use once_cell::sync::Lazy; -pub const LBR_NAME: &str = "LBR"; -pub const COIN1_NAME: &str = "Coin1"; +pub const XDX_NAME: &str = "XDX"; +pub const XUS_NAME: &str = "XUS"; -pub fn coin1_tmp_tag() -> TypeTag { +pub fn xus_tag() -> TypeTag { TypeTag::Struct(StructTag { address: CORE_CODE_ADDRESS, - module: from_currency_code_string(COIN1_NAME).unwrap(), - name: from_currency_code_string(COIN1_NAME).unwrap(), + module: from_currency_code_string(XUS_NAME).unwrap(), + name: from_currency_code_string(XUS_NAME).unwrap(), type_params: vec![], }) } -pub static LBR_MODULE: Lazy = - Lazy::new(|| ModuleId::new(CORE_CODE_ADDRESS, Identifier::new(LBR_NAME).unwrap())); -pub static LBR_STRUCT_NAME: Lazy = Lazy::new(|| Identifier::new(LBR_NAME).unwrap()); +pub static XDX_MODULE: Lazy = + Lazy::new(|| ModuleId::new(CORE_CODE_ADDRESS, Identifier::new(XDX_NAME).unwrap())); +pub static XDX_STRUCT_NAME: Lazy = Lazy::new(|| Identifier::new(XDX_NAME).unwrap()); -pub fn lbr_type_tag() -> TypeTag { +pub fn xdx_type_tag() -> TypeTag { TypeTag::Struct(StructTag { address: CORE_CODE_ADDRESS, - module: from_currency_code_string(LBR_NAME).unwrap(), - name: from_currency_code_string(LBR_NAME).unwrap(), + module: from_currency_code_string(XDX_NAME).unwrap(), + name: from_currency_code_string(XDX_NAME).unwrap(), type_params: vec![], }) } -/// Return `Some(struct_name)` if `t` is a `StructTag` representing one of the current Libra coin -/// types (LBR, Coin1), `None` otherwise. +/// Return `Some(struct_name)` if `t` is a `StructTag` representing one of the current Diem coin +/// types (XDX, XUS), `None` otherwise. pub fn coin_name(t: &TypeTag) -> Option { match t { TypeTag::Struct(StructTag { @@ -44,7 +44,7 @@ pub fn coin_name(t: &TypeTag) -> Option { .. }) if *address == CORE_CODE_ADDRESS && module == name => { let name_str = name.to_string(); - if name_str == LBR_NAME || name_str == COIN1_NAME { + if name_str == XDX_NAME || name_str == XUS_NAME { Some(name_str) } else { None @@ -56,8 +56,8 @@ pub fn coin_name(t: &TypeTag) -> Option { #[test] fn coin_names() { - assert!(coin_name(&coin1_tmp_tag()).unwrap() == COIN1_NAME); - assert!(coin_name(&lbr_type_tag()).unwrap() == LBR_NAME); + assert!(coin_name(&xus_tag()).unwrap() == XUS_NAME); + assert!(coin_name(&xdx_type_tag()).unwrap() == XDX_NAME); assert!(coin_name(&TypeTag::U64) == None); let bad_name = Identifier::new("NotACoin").unwrap(); diff --git a/types/src/account_config/constants/libra.rs b/types/src/account_config/constants/diem.rs similarity index 88% rename from types/src/account_config/constants/libra.rs rename to types/src/account_config/constants/diem.rs index 014901815b..76018e7d61 100644 --- a/types/src/account_config/constants/libra.rs +++ b/types/src/account_config/constants/diem.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_config::constants::CORE_CODE_ADDRESS; @@ -9,8 +9,8 @@ use move_core_types::{ }; use once_cell::sync::Lazy; -pub const LIBRA_MODULE_NAME: &str = "Libra"; -static COIN_MODULE_NAME: Lazy = Lazy::new(|| Identifier::new("Libra").unwrap()); +pub const DIEM_MODULE_NAME: &str = "Diem"; +static COIN_MODULE_NAME: Lazy = Lazy::new(|| Identifier::new("Diem").unwrap()); pub static COIN_MODULE: Lazy = Lazy::new(|| ModuleId::new(CORE_CODE_ADDRESS, COIN_MODULE_NAME.clone())); @@ -31,7 +31,7 @@ pub fn type_tag_for_currency_code(currency_code: Identifier) -> TypeTag { pub fn from_currency_code_string(currency_code_string: &str) -> Result { // In addition to the constraints for valid Move identifiers, currency codes // should consist entirely of alphanumeric characters (e.g., no underscores). - // TODO: After Coin1 is renamed , this should require uppercase as well. + // TODO: After XUS is renamed , this should require uppercase as well. if !currency_code_string.chars().all(char::is_alphanumeric) { bail!("Invalid currency code '{}'", currency_code_string) } diff --git a/types/src/account_config/constants/event.rs b/types/src/account_config/constants/event.rs index e2e3dc3e99..92f8935b70 100644 --- a/types/src/account_config/constants/event.rs +++ b/types/src/account_config/constants/event.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_config::constants::CORE_CODE_ADDRESS; diff --git a/types/src/account_config/constants/mod.rs b/types/src/account_config/constants/mod.rs index 9a5157c966..3ce5f29a99 100644 --- a/types/src/account_config/constants/mod.rs +++ b/types/src/account_config/constants/mod.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod account; pub mod addresses; pub mod coins; +pub mod diem; pub mod event; -pub mod libra; pub use account::*; pub use addresses::*; pub use coins::*; +pub use diem::*; pub use event::*; -pub use libra::*; diff --git a/types/src/account_config/events/admin_transaction.rs b/types/src/account_config/events/admin_transaction.rs index 6a65d1b979..cae2551c68 100644 --- a/types/src/account_config/events/admin_transaction.rs +++ b/types/src/account_config/events/admin_transaction.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; @@ -23,6 +23,6 @@ impl AdminTransactionEvent { } impl MoveResource for AdminTransactionEvent { - const MODULE_NAME: &'static str = "LibraAccount"; + const MODULE_NAME: &'static str = "DiemAccount"; const STRUCT_NAME: &'static str = "AdminTransactionEvent"; } diff --git a/types/src/account_config/events/base_url_rotation.rs b/types/src/account_config/events/base_url_rotation.rs index 4da8911154..a6d9921795 100644 --- a/types/src/account_config/events/base_url_rotation.rs +++ b/types/src/account_config/events/base_url_rotation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; diff --git a/types/src/account_config/events/burn.rs b/types/src/account_config/events/burn.rs index 7f6f8c2070..e323992af9 100644 --- a/types/src/account_config/events/burn.rs +++ b/types/src/account_config/events/burn.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{account_address::AccountAddress, account_config::LIBRA_MODULE_NAME}; +use crate::{account_address::AccountAddress, account_config::DIEM_MODULE_NAME}; use anyhow::Result; use move_core_types::{ identifier::{IdentStr, Identifier}, @@ -39,6 +39,6 @@ impl BurnEvent { } impl MoveResource for BurnEvent { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; const STRUCT_NAME: &'static str = "BurnEvent"; } diff --git a/types/src/account_config/events/cancel_burn.rs b/types/src/account_config/events/cancel_burn.rs index 24c87ee9c8..d7f1927f21 100644 --- a/types/src/account_config/events/cancel_burn.rs +++ b/types/src/account_config/events/cancel_burn.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{account_address::AccountAddress, account_config::LIBRA_MODULE_NAME}; +use crate::{account_address::AccountAddress, account_config::DIEM_MODULE_NAME}; use anyhow::Result; use move_core_types::{ identifier::{IdentStr, Identifier}, @@ -39,6 +39,6 @@ impl CancelBurnEvent { } impl MoveResource for CancelBurnEvent { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; const STRUCT_NAME: &'static str = "CancelBurnEvent"; } diff --git a/types/src/account_config/events/compliance_key_rotation.rs b/types/src/account_config/events/compliance_key_rotation.rs index 80fccbbe52..f81473880e 100644 --- a/types/src/account_config/events/compliance_key_rotation.rs +++ b/types/src/account_config/events/compliance_key_rotation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::Result; diff --git a/types/src/account_config/events/create_account.rs b/types/src/account_config/events/create_account.rs index 478e13ace8..14f2744e9f 100644 --- a/types/src/account_config/events/create_account.rs +++ b/types/src/account_config/events/create_account.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{account_address::AccountAddress, account_config, event::EventKey}; @@ -26,11 +26,11 @@ impl CreateAccountEvent { } pub fn event_key() -> EventKey { - EventKey::new_from_address(&account_config::libra_root_address(), 0) + EventKey::new_from_address(&account_config::diem_root_address(), 0) } } impl MoveResource for CreateAccountEvent { - const MODULE_NAME: &'static str = "LibraAccount"; + const MODULE_NAME: &'static str = "DiemAccount"; const STRUCT_NAME: &'static str = "CreateAccountEvent"; } diff --git a/types/src/account_config/events/exchange_rate_update.rs b/types/src/account_config/events/exchange_rate_update.rs index b04f8df5ca..87de0ed194 100644 --- a/types/src/account_config/events/exchange_rate_update.rs +++ b/types/src/account_config/events/exchange_rate_update.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::account_config::LIBRA_MODULE_NAME; +use crate::account_config::DIEM_MODULE_NAME; use anyhow::Result; use move_core_types::{ identifier::{IdentStr, Identifier}, @@ -9,20 +9,20 @@ use move_core_types::{ }; use serde::{Deserialize, Serialize}; -/// Struct that represents a ToLBRExchangeRateUpdateEvent +/// Struct that represents a ToXDXExchangeRateUpdateEvent #[derive(Debug, Serialize, Deserialize)] -pub struct ToLBRExchangeRateUpdateEvent { +pub struct ToXDXExchangeRateUpdateEvent { currency_code: Identifier, - new_to_lbr_exchange_rate: u64, + new_to_xdx_exchange_rate: u64, } -impl ToLBRExchangeRateUpdateEvent { +impl ToXDXExchangeRateUpdateEvent { /// Exchange rates are represented as 32|32 fixed-point numbers on-chain. So we divide by the scaling /// factor (2^32) of the number to arrive at the floating point representation of the number. /// The exchange rate returned is the on-chain rate to two decimal places rounded up (e.g. 1.3333 /// would be rounded to 1.34). - pub fn new_to_lbr_exchange_rate(&self) -> f32 { - let unrounded = (self.new_to_lbr_exchange_rate as f32) / 2f32.powf(32f32); + pub fn new_to_xdx_exchange_rate(&self) -> f32 { + let unrounded = (self.new_to_xdx_exchange_rate as f32) / 2f32.powf(32f32); (unrounded * 100.0).round() / 100.0 } @@ -36,7 +36,7 @@ impl ToLBRExchangeRateUpdateEvent { } } -impl MoveResource for ToLBRExchangeRateUpdateEvent { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; - const STRUCT_NAME: &'static str = "ToLBRExchangeRateUpdateEvent"; +impl MoveResource for ToXDXExchangeRateUpdateEvent { + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; + const STRUCT_NAME: &'static str = "ToXDXExchangeRateUpdateEvent"; } diff --git a/types/src/account_config/events/mint.rs b/types/src/account_config/events/mint.rs index 6e0d7f2211..286c91c594 100644 --- a/types/src/account_config/events/mint.rs +++ b/types/src/account_config/events/mint.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::account_config::LIBRA_MODULE_NAME; +use crate::account_config::DIEM_MODULE_NAME; use anyhow::Result; use move_core_types::{ identifier::{IdentStr, Identifier}, @@ -33,6 +33,6 @@ impl MintEvent { } impl MoveResource for MintEvent { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; const STRUCT_NAME: &'static str = "MintEvent"; } diff --git a/types/src/account_config/events/mod.rs b/types/src/account_config/events/mod.rs index 6d11cceedc..421c8982d6 100644 --- a/types/src/account_config/events/mod.rs +++ b/types/src/account_config/events/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod admin_transaction; diff --git a/types/src/account_config/events/new_block.rs b/types/src/account_config/events/new_block.rs index a3adfa1c8f..bd78d7167e 100644 --- a/types/src/account_config/events/new_block.rs +++ b/types/src/account_config/events/new_block.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; @@ -34,6 +34,6 @@ impl NewBlockEvent { } impl MoveResource for NewBlockEvent { - const MODULE_NAME: &'static str = "LibraBlock"; + const MODULE_NAME: &'static str = "DiemBlock"; const STRUCT_NAME: &'static str = "NewBlockEvent"; } diff --git a/types/src/account_config/events/new_epoch.rs b/types/src/account_config/events/new_epoch.rs index ffb738ac16..e895aa00ed 100644 --- a/types/src/account_config/events/new_epoch.rs +++ b/types/src/account_config/events/new_epoch.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::event::EventKey; @@ -27,6 +27,6 @@ impl NewEpochEvent { } impl MoveResource for NewEpochEvent { - const MODULE_NAME: &'static str = "LibraConfig"; + const MODULE_NAME: &'static str = "DiemConfig"; const STRUCT_NAME: &'static str = "NewEpochEvent"; } diff --git a/types/src/account_config/events/preburn.rs b/types/src/account_config/events/preburn.rs index 217f8c8c62..235c1c9fb4 100644 --- a/types/src/account_config/events/preburn.rs +++ b/types/src/account_config/events/preburn.rs @@ -1,7 +1,7 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 -use crate::{account_address::AccountAddress, account_config::LIBRA_MODULE_NAME}; +use crate::{account_address::AccountAddress, account_config::DIEM_MODULE_NAME}; use anyhow::Result; use move_core_types::{ identifier::{IdentStr, Identifier}, @@ -39,6 +39,6 @@ impl PreburnEvent { } impl MoveResource for PreburnEvent { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; const STRUCT_NAME: &'static str = "PreburnEvent"; } diff --git a/types/src/account_config/events/received_mint.rs b/types/src/account_config/events/received_mint.rs index 1d4c67370b..901118f77f 100644 --- a/types/src/account_config/events/received_mint.rs +++ b/types/src/account_config/events/received_mint.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; diff --git a/types/src/account_config/events/received_payment.rs b/types/src/account_config/events/received_payment.rs index 37c27347f5..cb2713f081 100644 --- a/types/src/account_config/events/received_payment.rs +++ b/types/src/account_config/events/received_payment.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/types/src/account_config/events/sent_payment.rs b/types/src/account_config/events/sent_payment.rs index efcd24d8eb..8929ccdd54 100644 --- a/types/src/account_config/events/sent_payment.rs +++ b/types/src/account_config/events/sent_payment.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -31,7 +31,7 @@ pub struct SentPaymentEvent { } impl SentPaymentEvent { - // TODO: should only be used for libra client testing and be removed eventually + // TODO: should only be used for diem client testing and be removed eventually pub fn new( amount: u64, currency_code: Identifier, diff --git a/types/src/account_config/mod.rs b/types/src/account_config/mod.rs index a4f78f6aef..815ec8835b 100644 --- a/types/src/account_config/mod.rs +++ b/types/src/account_config/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod constants; diff --git a/types/src/account_config/resources/account.rs b/types/src/account_config/resources/account.rs index b0f02b9aca..f148028ae5 100644 --- a/types/src/account_config/resources/account.rs +++ b/types/src/account_config/resources/account.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/types/src/account_config/resources/balance.rs b/types/src/account_config/resources/balance.rs index f87efb382d..2f469bbccf 100644 --- a/types/src/account_config/resources/balance.rs +++ b/types/src/account_config/resources/balance.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ access_path::AccessPath, - account_config::constants::{coin1_tmp_tag, ACCOUNT_MODULE_NAME, CORE_CODE_ADDRESS}, + account_config::constants::{xus_tag, ACCOUNT_MODULE_NAME, CORE_CODE_ADDRESS}, }; use move_core_types::{ language_storage::{StructTag, TypeTag}, @@ -50,6 +50,6 @@ impl MoveResource for BalanceResource { const STRUCT_NAME: &'static str = "Balance"; fn type_params() -> Vec { - vec![coin1_tmp_tag()] + vec![xus_tag()] } } diff --git a/types/src/account_config/resources/chain_id.rs b/types/src/account_config/resources/chain_id.rs index c83cf7f1ea..1de9fc3247 100644 --- a/types/src/account_config/resources/chain_id.rs +++ b/types/src/account_config/resources/chain_id.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::chain_id::ChainId; diff --git a/types/src/account_config/resources/currency_info.rs b/types/src/account_config/resources/currency_info.rs index e8753d8236..0da924f08f 100644 --- a/types/src/account_config/resources/currency_info.rs +++ b/types/src/account_config/resources/currency_info.rs @@ -1,11 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ access_path::AccessPath, - account_config::constants::{ - libra_root_address, type_tag_for_currency_code, CORE_CODE_ADDRESS, - }, + account_config::constants::{diem_root_address, type_tag_for_currency_code, CORE_CODE_ADDRESS}, event::EventHandle, }; use anyhow::Result; @@ -21,7 +19,7 @@ use serde::{Deserialize, Serialize}; pub struct CurrencyInfoResource { total_value: u128, preburn_value: u64, - to_lbr_exchange_rate: u64, + to_xdx_exchange_rate: u64, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, @@ -35,7 +33,7 @@ pub struct CurrencyInfoResource { } impl MoveResource for CurrencyInfoResource { - const MODULE_NAME: &'static str = "Libra"; + const MODULE_NAME: &'static str = "Diem"; const STRUCT_NAME: &'static str = "CurrencyInfo"; } @@ -43,7 +41,7 @@ impl CurrencyInfoResource { pub fn new( total_value: u128, preburn_value: u64, - to_lbr_exchange_rate: u64, + to_xdx_exchange_rate: u64, is_synthetic: bool, scaling_factor: u64, fractional_part: u64, @@ -58,7 +56,7 @@ impl CurrencyInfoResource { Self { total_value, preburn_value, - to_lbr_exchange_rate, + to_xdx_exchange_rate, is_synthetic, scaling_factor, fractional_part, @@ -95,10 +93,10 @@ impl CurrencyInfoResource { pub fn exchange_rate(&self) -> f32 { // Exchange rates are represented as 32|32 fixed-point numbers on-chain, so we divide by the scaling // factor (2^32) of the number to arrive at the floating point representation of the number. - (self.to_lbr_exchange_rate as f32) / 2f32.powf(32f32) + (self.to_xdx_exchange_rate as f32) / 2f32.powf(32f32) } - pub fn convert_to_lbr(&self, amount: u64) -> u64 { + pub fn convert_to_xdx(&self, amount: u64) -> u64 { (self.exchange_rate() * (amount as f32)) as u64 } @@ -113,7 +111,7 @@ impl CurrencyInfoResource { pub fn resource_path_for(currency_code: Identifier) -> AccessPath { let resource_key = ResourceKey::new( - libra_root_address(), + diem_root_address(), CurrencyInfoResource::struct_tag_for(currency_code), ); AccessPath::resource_access_path(&resource_key) diff --git a/types/src/account_config/resources/designated_dealer.rs b/types/src/account_config/resources/designated_dealer.rs index 290fa4ced6..675e9d502e 100644 --- a/types/src/account_config/resources/designated_dealer.rs +++ b/types/src/account_config/resources/designated_dealer.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::event::EventHandle; diff --git a/types/src/account_config/resources/dual_attestation.rs b/types/src/account_config/resources/dual_attestation.rs index 226e89b863..eba448e930 100644 --- a/types/src/account_config/resources/dual_attestation.rs +++ b/types/src/account_config/resources/dual_attestation.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{event::EventHandle, on_chain_config::OnChainConfig}; @@ -46,10 +46,10 @@ impl MoveResource for Credential { const STRUCT_NAME: &'static str = "Credential"; } -/// Defines the dual attest limit in microLibra LBR +/// Defines the dual attest limit in microDiem XDX #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct Limit { - pub micro_lbr_limit: u64, + pub micro_xdx_limit: u64, } impl OnChainConfig for Limit { diff --git a/types/src/account_config/resources/freezing_bit.rs b/types/src/account_config/resources/freezing_bit.rs index c007712cd6..8be0a577b2 100644 --- a/types/src/account_config/resources/freezing_bit.rs +++ b/types/src/account_config/resources/freezing_bit.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::move_resource::MoveResource; diff --git a/types/src/account_config/resources/key_rotation_capability.rs b/types/src/account_config/resources/key_rotation_capability.rs index ddb8c5f0f8..9c96fe44e4 100644 --- a/types/src/account_config/resources/key_rotation_capability.rs +++ b/types/src/account_config/resources/key_rotation_capability.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{account_address::AccountAddress, account_config::constants::ACCOUNT_MODULE_NAME}; diff --git a/types/src/account_config/resources/mod.rs b/types/src/account_config/resources/mod.rs index 8f38d72207..10a7417221 100644 --- a/types/src/account_config/resources/mod.rs +++ b/types/src/account_config/resources/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod account; diff --git a/types/src/account_config/resources/preburn_balance.rs b/types/src/account_config/resources/preburn_balance.rs index 0c06a5affa..c0796d4f82 100644 --- a/types/src/account_config/resources/preburn_balance.rs +++ b/types/src/account_config/resources/preburn_balance.rs @@ -1,9 +1,9 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ access_path::AccessPath, - account_config::constants::{coin1_tmp_tag, CORE_CODE_ADDRESS, LIBRA_MODULE_NAME}, + account_config::constants::{xus_tag, CORE_CODE_ADDRESS, DIEM_MODULE_NAME}, }; use move_core_types::{ language_storage::{StructTag, TypeTag}, @@ -46,10 +46,10 @@ impl PreburnResource { } impl MoveResource for PreburnResource { - const MODULE_NAME: &'static str = LIBRA_MODULE_NAME; + const MODULE_NAME: &'static str = DIEM_MODULE_NAME; const STRUCT_NAME: &'static str = "Preburn"; fn type_params() -> Vec { - vec![coin1_tmp_tag()] + vec![xus_tag()] } } diff --git a/types/src/account_config/resources/role.rs b/types/src/account_config/resources/role.rs index 26be3ab2e8..481549b89f 100644 --- a/types/src/account_config/resources/role.rs +++ b/types/src/account_config/resources/role.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_config::resources::{ diff --git a/types/src/account_config/resources/role_id.rs b/types/src/account_config/resources/role_id.rs index 0105cda019..2d818f9b2d 100644 --- a/types/src/account_config/resources/role_id.rs +++ b/types/src/account_config/resources/role_id.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::move_resource::MoveResource; diff --git a/types/src/account_config/resources/vasp.rs b/types/src/account_config/resources/vasp.rs index 9e2dde1a20..857de364b1 100644 --- a/types/src/account_config/resources/vasp.rs +++ b/types/src/account_config/resources/vasp.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; diff --git a/types/src/account_config/resources/withdraw_capability.rs b/types/src/account_config/resources/withdraw_capability.rs index 095fff8f3f..6769ccb88b 100644 --- a/types/src/account_config/resources/withdraw_capability.rs +++ b/types/src/account_config/resources/withdraw_capability.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{account_address::AccountAddress, account_config::constants::ACCOUNT_MODULE_NAME}; diff --git a/types/src/account_state.rs b/types/src/account_state.rs index f2b9e6bf10..c29ea83786 100644 --- a/types/src/account_state.rs +++ b/types/src/account_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -8,10 +8,10 @@ use crate::{ ChildVASP, Credential, CurrencyInfoResource, DesignatedDealer, FreezingBit, ParentVASP, PreburnResource, }, - block_metadata::LibraBlockResource, - libra_timestamp::LibraTimestampResource, + block_metadata::DiemBlockResource, + diem_timestamp::DiemTimestampResource, on_chain_config::{ - ConfigurationResource, LibraVersion, OnChainConfig, RegisteredCurrencies, + ConfigurationResource, DiemVersion, OnChainConfig, RegisteredCurrencies, VMPublishingOption, ValidatorSet, }, validator_config::{ValidatorConfigResource, ValidatorOperatorConfigResource}, @@ -77,8 +77,8 @@ impl AccountState { self.get_resource::() } - pub fn get_libra_timestamp_resource(&self) -> Result> { - self.get_resource::() + pub fn get_diem_timestamp_resource(&self) -> Result> { + self.get_resource::() } pub fn get_validator_config_resource(&self) -> Result> { @@ -134,8 +134,8 @@ impl AccountState { self.get_config::() } - pub fn get_libra_version(&self) -> Result> { - self.get_config::() + pub fn get_diem_version(&self) -> Result> { + self.get_config::() } pub fn get_vm_publishing_option(&self) -> Result> { @@ -165,8 +165,8 @@ impl AccountState { } } - pub fn get_libra_block_resource(&self) -> Result> { - self.get_resource::() + pub fn get_diem_block_resource(&self) -> Result> { + self.get_resource::() } pub fn get(&self, key: &[u8]) -> Option<&Vec> { @@ -210,9 +210,9 @@ impl fmt::Debug for AccountState { .map(|account_resource_opt| format!("{:#?}", account_resource_opt)) .unwrap_or_else(|e| format!("parse error: {:#?}", e)); - let libra_timestamp_str = self - .get_libra_timestamp_resource() - .map(|libra_timestamp_opt| format!("{:#?}", libra_timestamp_opt)) + let diem_timestamp_str = self + .get_diem_timestamp_resource() + .map(|diem_timestamp_opt| format!("{:#?}", diem_timestamp_opt)) .unwrap_or_else(|e| format!("parse: {:#?}", e)); let validator_config_str = self @@ -229,11 +229,11 @@ impl fmt::Debug for AccountState { f, "{{ \n \ AccountResource {{ {} }} \n \ - LibraTimestamp {{ {} }} \n \ + DiemTimestamp {{ {} }} \n \ ValidatorConfig {{ {} }} \n \ ValidatorSet {{ {} }} \n \ }}", - account_resource_str, libra_timestamp_str, validator_config_str, validator_set_str, + account_resource_str, diem_timestamp_str, validator_config_str, validator_set_str, ) } } diff --git a/types/src/account_state_blob.rs b/types/src/account_state_blob.rs index 5c5692b8a7..1e4366ea37 100644 --- a/types/src/account_state_blob.rs +++ b/types/src/account_state_blob.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -10,11 +10,11 @@ use crate::{ transaction::Version, }; use anyhow::{anyhow, ensure, Error, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, CryptoHasher}, HashValue, }; -use libra_crypto_derive::CryptoHasher; +use diem_crypto_derive::CryptoHasher; #[cfg(any(test, feature = "fuzzing"))] use proptest::{arbitrary::Arbitrary, prelude::*}; #[cfg(any(test, feature = "fuzzing"))] diff --git a/types/src/block_info.rs b/types/src/block_info.rs index c16c60f7b7..7b7f5698ff 100644 --- a/types/src/block_info.rs +++ b/types/src/block_info.rs @@ -1,10 +1,10 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{epoch_state::EpochState, on_chain_config::ValidatorSet, transaction::Version}; -use libra_crypto::hash::HashValue; +use diem_crypto::hash::HashValue; #[cfg(any(test, feature = "fuzzing"))] -use libra_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; +use diem_crypto::hash::ACCUMULATOR_PLACEHOLDER_HASH; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; use serde::{Deserialize, Serialize}; diff --git a/types/src/block_metadata.rs b/types/src/block_metadata.rs index cfdcb903ef..06295dd976 100644 --- a/types/src/block_metadata.rs +++ b/types/src/block_metadata.rs @@ -1,12 +1,12 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ account_address::AccountAddress, - account_config::libra_root_address, + account_config::diem_root_address, event::{EventHandle, EventKey}, }; -use libra_crypto::HashValue; +use diem_crypto::HashValue; use move_core_types::move_resource::MoveResource; use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; @@ -72,31 +72,31 @@ impl BlockMetadata { } pub fn new_block_event_key() -> EventKey { - EventKey::new_from_address(&libra_root_address(), 17) + EventKey::new_from_address(&diem_root_address(), 17) } -/// The path to the new block event handle under a LibraBlock::BlockMetadata resource. +/// The path to the new block event handle under a DiemBlock::BlockMetadata resource. pub static NEW_BLOCK_EVENT_PATH: Lazy> = Lazy::new(|| { - let mut path = LibraBlockResource::resource_path(); + let mut path = DiemBlockResource::resource_path(); // it can be anything as long as it's referenced in AccountState::get_event_handle_by_query_path path.extend_from_slice(b"/new_block_event/"); path }); #[derive(Deserialize, Serialize)] -pub struct LibraBlockResource { +pub struct DiemBlockResource { height: u64, new_block_events: EventHandle, } -impl LibraBlockResource { +impl DiemBlockResource { pub fn new_block_events(&self) -> &EventHandle { &self.new_block_events } } -impl MoveResource for LibraBlockResource { - const MODULE_NAME: &'static str = "LibraBlock"; +impl MoveResource for DiemBlockResource { + const MODULE_NAME: &'static str = "DiemBlock"; const STRUCT_NAME: &'static str = "BlockMetadata"; } diff --git a/types/src/chain_id.rs b/types/src/chain_id.rs index bc56565102..ad41c2db27 100644 --- a/types/src/chain_id.rs +++ b/types/src/chain_id.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use anyhow::{ensure, format_err, Error, Result}; use serde::{de::Visitor, export::fmt::Debug, Deserialize, Deserializer, Serialize}; @@ -17,7 +17,7 @@ use std::{ pub enum NamedChain { /// Users might accidentally initialize the ChainId field to 0, hence reserving ChainId 0 for accidental /// initialization. - /// MAINNET is the Libra mainnet production chain and is reserved for 1 + /// MAINNET is the Diem mainnet production chain and is reserved for 1 MAINNET = 1, // Even though these CHAIN IDs do not correspond to MAINNET, changing them should be avoided since they // can break test environments for various organisations. @@ -29,7 +29,7 @@ pub enum NamedChain { impl NamedChain { fn str_to_chain_id(s: &str) -> Result { - // TODO implement custom macro that derives FromStr impl for enum (similar to libra/common/num-variants) + // TODO implement custom macro that derives FromStr impl for enum (similar to diem/common/num-variants) let reserved_chain = match s { "MAINNET" => NamedChain::MAINNET, "TESTNET" => NamedChain::TESTNET, diff --git a/types/src/contract_event.rs b/types/src/contract_event.rs index 2b03f40138..734a403350 100644 --- a/types/src/contract_event.rs +++ b/types/src/contract_event.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -6,7 +6,7 @@ use crate::{ AdminTransactionEvent, BaseUrlRotationEvent, BurnEvent, CancelBurnEvent, ComplianceKeyRotationEvent, CreateAccountEvent, MintEvent, NewBlockEvent, NewEpochEvent, PreburnEvent, ReceivedMintEvent, ReceivedPaymentEvent, SentPaymentEvent, - ToLBRExchangeRateUpdateEvent, + ToXDXExchangeRateUpdateEvent, }, event::EventKey, ledger_info::LedgerInfo, @@ -14,8 +14,8 @@ use crate::{ transaction::Version, }; use anyhow::{ensure, Error, Result}; -use libra_crypto::hash::CryptoHash; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto::hash::CryptoHash; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; use move_core_types::{language_storage::TypeTag, move_resource::MoveResource}; #[cfg(any(test, feature = "fuzzing"))] @@ -125,12 +125,12 @@ impl TryFrom<&ContractEvent> for ReceivedPaymentEvent { } } -impl TryFrom<&ContractEvent> for ToLBRExchangeRateUpdateEvent { +impl TryFrom<&ContractEvent> for ToXDXExchangeRateUpdateEvent { type Error = Error; fn try_from(event: &ContractEvent) -> Result { - if event.type_tag != TypeTag::Struct(ToLBRExchangeRateUpdateEvent::struct_tag()) { - anyhow::bail!("Expected ToLBRExchangeRateUpdateEvent") + if event.type_tag != TypeTag::Struct(ToXDXExchangeRateUpdateEvent::struct_tag()) { + anyhow::bail!("Expected ToXDXExchangeRateUpdateEvent") } Self::try_from_bytes(&event.event_data) } diff --git a/types/src/libra_timestamp.rs b/types/src/diem_timestamp.rs similarity index 55% rename from types/src/libra_timestamp.rs rename to types/src/diem_timestamp.rs index ded708357b..8041e40fbf 100644 --- a/types/src/libra_timestamp.rs +++ b/types/src/diem_timestamp.rs @@ -1,20 +1,20 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use move_core_types::move_resource::MoveResource; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize)] -pub struct LibraTimestampResource { - pub libra_timestamp: LibraTimestamp, +pub struct DiemTimestampResource { + pub diem_timestamp: DiemTimestamp, } -impl MoveResource for LibraTimestampResource { - const MODULE_NAME: &'static str = "LibraTimestamp"; +impl MoveResource for DiemTimestampResource { + const MODULE_NAME: &'static str = "DiemTimestamp"; const STRUCT_NAME: &'static str = "CurrentTimeMicroseconds"; } #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct LibraTimestamp { +pub struct DiemTimestamp { pub microseconds: u64, } diff --git a/types/src/epoch_change.rs b/types/src/epoch_change.rs index 76b6e0d8af..7ac24c8273 100644 --- a/types/src/epoch_change.rs +++ b/types/src/epoch_change.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -138,7 +138,7 @@ mod tests { #[test] fn verify_epoch_change_proof() { use crate::{ledger_info::LedgerInfo, validator_verifier::random_validator_verifier}; - use libra_crypto::hash::HashValue; + use diem_crypto::hash::HashValue; use std::collections::BTreeMap; let all_epoch: Vec = (1..=10).collect(); diff --git a/types/src/epoch_state.rs b/types/src/epoch_state.rs index 75e98aaeaf..3598f89172 100644 --- a/types/src/epoch_state.rs +++ b/types/src/epoch_state.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ diff --git a/types/src/event.rs b/types/src/event.rs index 0a5fa3b804..a765236151 100644 --- a/types/src/event.rs +++ b/types/src/event.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::account_address::AccountAddress; diff --git a/types/src/ledger_info.rs b/types/src/ledger_info.rs index b568d70a06..75f5d6bc05 100644 --- a/types/src/ledger_info.rs +++ b/types/src/ledger_info.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -9,8 +9,8 @@ use crate::{ transaction::Version, validator_verifier::{ValidatorVerifier, VerifyError}, }; -use libra_crypto::{ed25519::Ed25519Signature, hash::HashValue}; -use libra_crypto_derive::{CryptoHasher, LCSCryptoHash}; +use diem_crypto::{ed25519::Ed25519Signature, hash::HashValue}; +use diem_crypto_derive::{CryptoHasher, LCSCryptoHash}; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; use serde::{Deserialize, Serialize}; diff --git a/types/src/lib.rs b/types/src/lib.rs index 665cade23f..684bbe6626 100644 --- a/types/src/lib.rs +++ b/types/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![forbid(unsafe_code)] @@ -12,11 +12,11 @@ pub mod block_info; pub mod block_metadata; pub mod chain_id; pub mod contract_event; +pub mod diem_timestamp; pub mod epoch_change; pub mod epoch_state; pub mod event; pub mod ledger_info; -pub mod libra_timestamp; pub mod mempool_status; pub mod move_resource; pub mod on_chain_config; diff --git a/types/src/mempool_status.rs b/types/src/mempool_status.rs index 9f7671354a..e4108e6df4 100644 --- a/types/src/mempool_status.rs +++ b/types/src/mempool_status.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::unit_arg)] diff --git a/types/src/move_resource.rs b/types/src/move_resource.rs index b9b4919f5a..c052fde686 100644 --- a/types/src/move_resource.rs +++ b/types/src/move_resource.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{access_path::AccessPath, transaction::Version}; diff --git a/types/src/on_chain_config/diem_version.rs b/types/src/on_chain_config/diem_version.rs new file mode 100644 index 0000000000..01d2519876 --- /dev/null +++ b/types/src/on_chain_config/diem_version.rs @@ -0,0 +1,15 @@ +// Copyright (c) The Diem Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::on_chain_config::OnChainConfig; +use serde::{Deserialize, Serialize}; + +/// Defines the version of Diem Validator software. +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] +pub struct DiemVersion { + pub major: u64, +} + +impl OnChainConfig for DiemVersion { + const IDENTIFIER: &'static str = "DiemVersion"; +} diff --git a/types/src/on_chain_config/libra_version.rs b/types/src/on_chain_config/libra_version.rs deleted file mode 100644 index eb83205986..0000000000 --- a/types/src/on_chain_config/libra_version.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) The Libra Core Contributors -// SPDX-License-Identifier: Apache-2.0 - -use crate::on_chain_config::OnChainConfig; -use serde::{Deserialize, Serialize}; - -/// Defines the version of Libra Validator software. -#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] -pub struct LibraVersion { - pub major: u64, -} - -impl OnChainConfig for LibraVersion { - const IDENTIFIER: &'static str = "LibraVersion"; -} diff --git a/types/src/on_chain_config/mod.rs b/types/src/on_chain_config/mod.rs index 8dce9b7a92..460670137f 100644 --- a/types/src/on_chain_config/mod.rs +++ b/types/src/on_chain_config/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -16,14 +16,14 @@ use move_core_types::{ use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::{collections::HashMap, fmt, sync::Arc}; -mod libra_version; +mod diem_version; mod registered_currencies; mod validator_set; mod vm_config; mod vm_publishing_option; pub use self::{ - libra_version::LibraVersion, registered_currencies::RegisteredCurrencies, + diem_version::DiemVersion, registered_currencies::RegisteredCurrencies, validator_set::ValidatorSet, vm_config::VMConfig, vm_publishing_option::VMPublishingOption, }; @@ -63,7 +63,7 @@ impl fmt::Display for ConfigID { pub const ON_CHAIN_CONFIG_REGISTRY: &[ConfigID] = &[ VMConfig::CONFIG_ID, VMPublishingOption::CONFIG_ID, - LibraVersion::CONFIG_ID, + DiemVersion::CONFIG_ID, ValidatorSet::CONFIG_ID, RegisteredCurrencies::CONFIG_ID, ]; @@ -118,7 +118,7 @@ pub trait ConfigStorage { /// Trait to be implemented by a Rust struct representation of an on-chain config /// that is stored in storage as a serialized byte array pub trait OnChainConfig: Send + Sync + DeserializeOwned { - // libra_root_address + // diem_root_address const ADDRESS: &'static str = CONFIG_ADDRESS_STR; const IDENTIFIER: &'static str; const CONFIG_ID: ConfigID = ConfigID(Self::ADDRESS, Self::IDENTIFIER); @@ -162,8 +162,8 @@ pub fn access_path_for_config(address: AccountAddress, config_name: Identifier) address, AccessPath::resource_access_vec(&StructTag { address: CORE_CODE_ADDRESS, - module: Identifier::new("LibraConfig").unwrap(), - name: Identifier::new("LibraConfig").unwrap(), + module: Identifier::new("DiemConfig").unwrap(), + name: Identifier::new("DiemConfig").unwrap(), type_params: vec![TypeTag::Struct(StructTag { address: CORE_CODE_ADDRESS, module: config_name.clone(), @@ -215,12 +215,12 @@ impl Default for ConfigurationResource { Self { epoch: 0, last_reconfiguration_time: 0, - events: EventHandle::new_from_address(&crate::account_config::libra_root_address(), 16), + events: EventHandle::new_from_address(&crate::account_config::diem_root_address(), 16), } } } impl MoveResource for ConfigurationResource { - const MODULE_NAME: &'static str = "LibraConfig"; + const MODULE_NAME: &'static str = "DiemConfig"; const STRUCT_NAME: &'static str = "Configuration"; } diff --git a/types/src/on_chain_config/registered_currencies.rs b/types/src/on_chain_config/registered_currencies.rs index 07ec238fe3..f4cb871eab 100644 --- a/types/src/on_chain_config/registered_currencies.rs +++ b/types/src/on_chain_config/registered_currencies.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::on_chain_config::OnChainConfig; diff --git a/types/src/on_chain_config/validator_set.rs b/types/src/on_chain_config/validator_set.rs index 23ea04b014..edb5dbd2e9 100644 --- a/types/src/on_chain_config/validator_set.rs +++ b/types/src/on_chain_config/validator_set.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{on_chain_config::OnChainConfig, validator_info::ValidatorInfo}; @@ -52,7 +52,7 @@ impl ValidatorSet { impl OnChainConfig for ValidatorSet { // validator_set_address - const IDENTIFIER: &'static str = "LibraSystem"; + const IDENTIFIER: &'static str = "DiemSystem"; } impl IntoIterator for ValidatorSet { diff --git a/types/src/on_chain_config/vm_config.rs b/types/src/on_chain_config/vm_config.rs index a770855646..a5cd004e1a 100644 --- a/types/src/on_chain_config/vm_config.rs +++ b/types/src/on_chain_config/vm_config.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::on_chain_config::OnChainConfig; @@ -37,7 +37,7 @@ impl CostTableInner { } impl OnChainConfig for VMConfig { - const IDENTIFIER: &'static str = "LibraVMConfig"; + const IDENTIFIER: &'static str = "DiemVMConfig"; fn deserialize_into_config(bytes: &[u8]) -> Result { let raw_vm_config = lcs::from_bytes::(&bytes).map_err(|e| { diff --git a/types/src/on_chain_config/vm_publishing_option.rs b/types/src/on_chain_config/vm_publishing_option.rs index a9d4f35f32..44c4f8253f 100644 --- a/types/src/on_chain_config/vm_publishing_option.rs +++ b/types/src/on_chain_config/vm_publishing_option.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{on_chain_config::OnChainConfig, transaction::SCRIPT_HASH_LENGTH}; @@ -55,7 +55,7 @@ struct VMPublishingOptionInner { } impl OnChainConfig for VMPublishingOption { - const IDENTIFIER: &'static str = "LibraTransactionPublishingOption"; + const IDENTIFIER: &'static str = "DiemTransactionPublishingOption"; fn deserialize_into_config(bytes: &[u8]) -> Result { let raw_publishing_option = diff --git a/types/src/proof/accumulator/accumulator_test.rs b/types/src/proof/accumulator/accumulator_test.rs index 5b8671592c..5ba326e5d6 100644 --- a/types/src/proof/accumulator/accumulator_test.rs +++ b/types/src/proof/accumulator/accumulator_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use super::InMemoryAccumulator; @@ -7,7 +7,7 @@ use crate::proof::{ position::{FrozenSubtreeSiblingIterator, Position}, TestAccumulatorInternalNode, }; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, TestOnlyHash, TestOnlyHasher, ACCUMULATOR_PLACEHOLDER_HASH}, HashValue, }; diff --git a/types/src/proof/accumulator/mod.rs b/types/src/proof/accumulator/mod.rs index e79f1fd993..8d2b38b472 100644 --- a/types/src/proof/accumulator/mod.rs +++ b/types/src/proof/accumulator/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module implements an in-memory Merkle Accumulator that is similar to what we use in @@ -16,7 +16,7 @@ mod accumulator_test; use super::MerkleTreeInternalNode; use crate::proof::definition::{LeafCount, MAX_ACCUMULATOR_LEAVES}; use anyhow::{ensure, format_err, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHash, CryptoHasher, ACCUMULATOR_PLACEHOLDER_HASH}, HashValue, }; diff --git a/types/src/proof/definition.rs b/types/src/proof/definition.rs index 029bdd12c9..229dc43a12 100644 --- a/types/src/proof/definition.rs +++ b/types/src/proof/definition.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module has definition of various proofs. @@ -14,8 +14,8 @@ use crate::{ }; use anyhow::{bail, ensure, format_err, Result}; #[cfg(any(test, feature = "fuzzing"))] -use libra_crypto::hash::TestOnlyHasher; -use libra_crypto::{ +use diem_crypto::hash::TestOnlyHasher; +use diem_crypto::{ hash::{ CryptoHash, CryptoHasher, EventAccumulatorHasher, TransactionAccumulatorHasher, SPARSE_MERKLE_PLACEHOLDER_HASH, diff --git a/types/src/proof/mod.rs b/types/src/proof/mod.rs index 96df45b5df..546037c2ca 100644 --- a/types/src/proof/mod.rs +++ b/types/src/proof/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod accumulator; @@ -15,14 +15,14 @@ use crate::{ transaction::{TransactionInfo, Version}, }; use anyhow::{ensure, Result}; -use libra_crypto::{ +use diem_crypto::{ hash::{ CryptoHash, CryptoHasher, EventAccumulatorHasher, SparseMerkleInternalHasher, TestOnlyHasher, TransactionAccumulatorHasher, }, HashValue, }; -use libra_crypto_derive::CryptoHasher; +use diem_crypto_derive::CryptoHasher; #[cfg(any(test, feature = "fuzzing"))] use proptest_derive::Arbitrary; use serde::{Deserialize, Serialize}; diff --git a/types/src/proof/position/mod.rs b/types/src/proof/position/mod.rs index 786751c35c..f563ce5d92 100644 --- a/types/src/proof/position/mod.rs +++ b/types/src/proof/position/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! This module provides an abstraction for positioning a node in a binary tree, diff --git a/types/src/proof/position/position_test.rs b/types/src/proof/position/position_test.rs index 4526d09ec6..a8bf16517b 100644 --- a/types/src/proof/position/position_test.rs +++ b/types/src/proof/position/position_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::proof::position::*; diff --git a/types/src/proof/proptest_proof.rs b/types/src/proof/proptest_proof.rs index 102951771e..3e4809c63d 100644 --- a/types/src/proof/proptest_proof.rs +++ b/types/src/proof/proptest_proof.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 //! All proofs generated in this module are not valid proofs. They are only for the purpose of @@ -8,7 +8,7 @@ use crate::proof::{ definition::MAX_ACCUMULATOR_PROOF_DEPTH, AccumulatorConsistencyProof, AccumulatorProof, AccumulatorRangeProof, SparseMerkleLeafNode, SparseMerkleProof, SparseMerkleRangeProof, }; -use libra_crypto::{ +use diem_crypto::{ hash::{CryptoHasher, ACCUMULATOR_PLACEHOLDER_HASH, SPARSE_MERKLE_PLACEHOLDER_HASH}, HashValue, }; diff --git a/types/src/proof/unit_tests/mod.rs b/types/src/proof/unit_tests/mod.rs index 28c8d8fa05..dfd9b00813 100644 --- a/types/src/proof/unit_tests/mod.rs +++ b/types/src/proof/unit_tests/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 mod proof_conversion_test; diff --git a/types/src/proof/unit_tests/proof_conversion_test.rs b/types/src/proof/unit_tests/proof_conversion_test.rs index 4e984f2189..cc0dc2e6ab 100644 --- a/types/src/proof/unit_tests/proof_conversion_test.rs +++ b/types/src/proof/unit_tests/proof_conversion_test.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::proof::{ diff --git a/types/src/proof/unit_tests/proof_test.rs b/types/src/proof/unit_tests/proof_test.rs index 62de526970..8d0cf2f6ba 100644 --- a/types/src/proof/unit_tests/proof_test.rs +++ b/types/src/proof/unit_tests/proof_test.rs @@ -1,8 +1,8 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ - account_config::COIN1_NAME, + account_config::XUS_NAME, account_state_blob::AccountStateBlob, block_info::BlockInfo, chain_id::ChainId, @@ -16,7 +16,7 @@ use crate::{ transaction::{RawTransaction, Script, Transaction, TransactionInfo}, vm_status::KeptVMStatus, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::Ed25519PrivateKey, hash::{ CryptoHash, TestOnlyHash, TestOnlyHasher, ACCUMULATOR_PLACEHOLDER_HASH, GENESIS_BLOCK_ID, @@ -355,7 +355,7 @@ fn test_verify_account_state_and_event() { Script::new(vec![], vec![], vec![]), /* max_gas_amount = */ 0, /* gas_unit_price = */ 0, - /* gas_currency_code = */ COIN1_NAME.to_owned(), + /* gas_currency_code = */ XUS_NAME.to_owned(), /* expiration_timestamp_secs = */ 0, ChainId::test(), ) diff --git a/types/src/proptest_types.rs b/types/src/proptest_types.rs index 6222cab8c5..85e7ed51c8 100644 --- a/types/src/proptest_types.rs +++ b/types/src/proptest_types.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ @@ -27,13 +27,13 @@ use crate::{ vm_status::{KeptVMStatus, VMStatus}, write_set::{WriteOp, WriteSet, WriteSetMut}, }; -use libra_crypto::{ +use diem_crypto::{ ed25519::{self, Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature}, test_utils::KeyPair, traits::*, HashValue, }; -use libra_proptest_helpers::Index; +use diem_proptest_helpers::Index; use move_core_types::language_storage::TypeTag; use proptest::{ collection::{vec, SizeRange}, diff --git a/types/src/test_helpers/mod.rs b/types/src/test_helpers/mod.rs index da06d46ba5..f260d4e0b8 100644 --- a/types/src/test_helpers/mod.rs +++ b/types/src/test_helpers/mod.rs @@ -1,4 +1,4 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 pub mod transaction_test_helpers; diff --git a/types/src/test_helpers/transaction_test_helpers.rs b/types/src/test_helpers/transaction_test_helpers.rs index 52b508f5c9..929e71b5c9 100644 --- a/types/src/test_helpers/transaction_test_helpers.rs +++ b/types/src/test_helpers/transaction_test_helpers.rs @@ -1,14 +1,14 @@ -// Copyright (c) The Libra Core Contributors +// Copyright (c) The Diem Core Contributors // SPDX-License-Identifier: Apache-2.0 use crate::{ account_address::AccountAddress, - account_config::COIN1_NAME, + account_config::XUS_NAME, chain_id::ChainId, transaction::{Module, RawTransaction, Script, SignatureCheckedTransaction, SignedTransaction}, write_set::WriteSet, }; -use libra_crypto::{ed25519::*, traits::*}; +use diem_crypto::{ed25519::*, traits::*}; const MAX_GAS_AMOUNT: u64 = 1_000_000; const TEST_GAS_PRICE: u64 = 0; @@ -23,14 +23,14 @@ pub fn get_test_signed_module_publishing_transaction( public_key: Ed25519PublicKey, module: Module, ) -> SignedTransaction { - let expiration_time = libra_infallible::duration_since_epoch().as_secs() + 10; + let expiration_time = diem_infallible::duration_since_epoch().as_secs() + 10; let raw_txn = RawTransaction::new_module( sender, sequence_number, module, MAX_GAS_AMOUNT, TEST_GAS_PRICE, - COIN1_NAME.to_owned(), + XUS_NAME.to_owned(), expiration_time, ChainId::test(), ); @@ -132,7 +132,7 @@ pub fn get_test_signed_txn( public_key: Ed25519PublicKey, script: Option